Comparing version 1.16.8 to 1.16.10
@@ -1,2 +0,2 @@ | ||
!function(){"use strict";angular.module("boomstrap",["ui.bootstrap","ui.select","angularMoment"]).value("AUTO_START_TOUR",{value:!1}).config(["uiSelectConfig",function(uiSelectConfig){uiSelectConfig.theme="bootstrap"}]),angular.module("ui.bootstrap").config(["$provide",function($provide){$provide.decorator("pagerDirective",function($delegate){var defaultUrl=$delegate[0].templateUrl;return $delegate[0].templateUrl=function(tElement,tAttrs){return tAttrs.templateUrl||defaultUrl},$delegate})}])}(),function(Boomstrap){"use strict";Boomstrap.constant("leadCategories",[{value:0,name:"new",abbr:"new",active:!0},{value:3,name:"qualify",abbr:"qual",active:!0},{value:5,name:"hot",abbr:"hot",active:!0},{value:4,name:"nurture",abbr:"nurt",active:!0},{value:2,name:"watch",abbr:"watch",active:!0},{value:11,name:"pending",abbr:"pend",active:!1},{value:10,name:"closed",abbr:"close",active:!1},{value:6,name:"archive",abbr:"arch",active:!1},{value:1,name:"trash",abbr:"trash",active:!1}])}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btAddClassOnLoad",function(){return{link:function(scope,element,attrs){attrs.$observe("btAddClassOnLoad",function(attrClass){element.bind("load",function(){element.addClass(attrClass)})})}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btAffix",function($window){return{template:'<div class="bt-affix" ng-transclude></div>',transclude:!0,restrict:"A",link:function(scope,element,attrs){var windowEl=angular.element($window),$element=angular.element(element),$realElement=angular.element($element.children()[0]),defaults={position:$element.css("position"),top:$element.css("top"),"overflow-y":$element.css("overflow-y")};scope.isAffixed=!1,defaults.width="auto",scope.offset=0;var affixThis=function(){var myWidth=$realElement.css("width"),myHeight=$realElement.height();$realElement.css({position:"fixed",top:""+scope.offset+"px",width:myWidth,"max-height":"100%"}),scope.scroll&&$realElement.css({"overflow-y":"scroll"}),scope.fullHeight&&$realElement.css({height:"100%"}),scope.pinnedHeader&&$realElement.css({top:0,width:"100%",left:0}).addClass("pinned-header"),$element.addClass("is-bt-affixed").css({height:myHeight}),scope.isAffixed=!0},unAffixThis=function(){$realElement.scrollTop(0),$realElement.css(defaults),$realElement.css({height:"auto"}),$element.removeClass("is-bt-affixed").css({height:"auto"}),$realElement.removeClass("pinned-header"),scope.isAffixed=!1},scroller=function(){windowEl.scrollTop()>$element.offset().top-scope.offset?scope.isAffixed||affixThis():scope.isAffixed&&unAffixThis()},resizer=function(){scope.isAffixed&&(unAffixThis(),affixThis())};attrs.$observe("offset",function(val){angular.isDefined(val)&&(scope.offset=parseInt(val,10))}),windowEl.on("scroll.affix",scroller),windowEl.on("resize.affix",resizer),attrs.$observe("scroll",function(val){scope.scroll=!!val}),attrs.$observe("fullHeight",function(val){scope.fullHeight=!!val}),attrs.$observe("pinnedHeader",function(val){scope.pinnedHeader=!!val}),scope.$on("destroy",function(){windowEl.off("scroll.affix",scroller),windowEl.off("resize.affix",resizer)})}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btArrowScroll",function($window){return{restrict:"A",scope:{distance:"@btArrowScroll"},link:function(scope,element){var scrollDistance,$windowEl=angular.element($window),DEFAULT_SCROLL_DISTANCE=50,parseScroll=function(value){var parsed;return angular.isDefined(value)?(parsed=parseInt(value,10),isNaN(parsed)?DEFAULT_SCROLL_DISTANCE:parsed):DEFAULT_SCROLL_DISTANCE};scrollDistance=parseScroll(scope.distance),scope.$watch("distance",function(newVal){angular.isDefined(newVal)&&newVal!==scrollDistance&&(scrollDistance=parseScroll(newVal))}),$windowEl.on("keydown.arrowscroll",function(e){var scroll;40===e.keyCode?(scroll=element.scrollTop(),scroll+scrollDistance<element[0].scrollHeight?(element.scrollTop(scroll+scrollDistance),e.preventDefault()):scroll!==element[0].scrollHeight&&element.scrollTop(element[0].scrollHeight)):38===e.keyCode&&(scroll=element.scrollTop(),scroll-scrollDistance>=0?(element.scrollTop(scroll-scrollDistance),e.preventDefault()):0!==scroll&&element.scrollTop(0))}),element.bind("$destroy",function(){$windowEl.off("keydown.arrowscroll")})}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btAutoSubmit",function($timeout){return{require:"form",restrict:"A",scope:{ngSubmit:"&",shouldAutoSubmit:"=btAutoSubmit",submitTimeout:"@",willLoad:"="},link:function(scope,iElement,iAttrs,iCtrl){var autoSubmit=parseInt(scope.submitTimeout,10),submitTimeout=$timeout(function(){},0),triggerTimeout=function(){iCtrl.$setPristine(),$timeout.cancel(submitTimeout),scope.willLoad.value=!0,submitTimeout=$timeout(function(){scope.willLoad.value=!1,iCtrl.$valid&&(scope.ngSubmit({}),iCtrl.$setPristine())},autoSubmit)};scope.$watch(function(){return iCtrl.$valid&&iCtrl.$dirty},function(val,oldVal){scope.shouldAutoSubmit?val!==oldVal&&val&&triggerTimeout():iCtrl.$setPristine()})}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btBodyLoader",function($parse,$document){return{restrict:"E",replace:!0,scope:{isLoading:"="},link:function(scope){var body=$document.find("body"),loader=$document.find("#bt-body-loader"),template='<div id="bt-body-loader" class="loader body-loader"><span class="loader-pulse"></span><span class="loader-pulse"></span><span class="loader-pulse"></span></div>';return loader.length>0?!0:(body.append(template),void scope.$watch("isLoading",function(newVal){var $loader=angular.element("#bt-body-loader"),display=newVal.value===!1?"none":"block";$loader.css({display:display})},!0))}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btCenterOnPage",function($window,$timeout){return{restrict:"A",link:function(scope,element){var $element=angular.element(element),windowEl=angular.element($window),centerElement=function(){var windowWidth=windowEl.width(),windowHeight=windowEl.height(),elementWidth=$element.width(),elementHeight=$element.height();$element.css({top:Math.floor((windowHeight-elementHeight)/2).toString()+"px",left:Math.floor((windowWidth-elementWidth)/2).toString()+"px"})};$timeout(centerElement,0),windowEl.on("resize.modal",centerElement),scope.$on("$destroy",function(){windowEl.off("resize.modal")})}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btDatePicker",function(){return{restrict:"A",scope:{date:"=btDatePicker"},link:function(scope,element){element.bsDatepicker({dateFormat:"dd-MM-yyyy",todayHighlight:!0,startDate:new Date,language:"en",pickTime:!1,autoclose:!0}).on("changeDate",function(e){scope.$apply(function(){scope.date.value=e.date})}),scope.$on("$destroy",function(){element.bsDatepicker("remove")})}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btDropdown",function($window){return{restrict:"A",require:"ngModel",templateUrl:"template/dropdown/bt-dropdown.tpl.html",replace:!0,scope:{values:"=",keysAreNumbers:"=",onAssign:"&"},link:function(scope,iElement,iAttrs,ngModel){var windowEl=angular.element($window),sortNumberKeys=function(objectValues){var sortedArray=[];return Object.keys(objectValues).forEach(function(key){sortedArray.push({key:key,value:objectValues[key]})}),sortedArray.sort(function(a,b){return parseInt(a.key,10)>parseInt(b.key,10)}),sortedArray};scope.keysAreNumbers&&(scope.arrayValues=sortNumberKeys(scope.values),scope.$watch("values",function(newValues,oldValues){newValues&&oldValues&&newValues.length!==oldValues.length&&(scope.arrayValues=sortNumberKeys(scope.values))})),scope.assignValue=function(value){scope.selectedValue=scope.values[value],ngModel.$setViewValue(value),scope.onAssign&&scope.onAssign({ddValue:value,ddTranslation:scope.selectedValue})},scope.valuesLength=function(){return scope.values&&Object.keys(scope.values).length||0};var setDropdownWidth=function(){scope.dropdownWidth=angular.element(iElement[0].children[0]).outerWidth()};setDropdownWidth(),windowEl.on("resize.dropdown",function(){scope.$apply(setDropdownWidth)}),scope.$watch(function(){return ngModel.$modelValue},function(newVal,oldVal){(newVal!==oldVal||angular.isUndefined(scope.selectedValue))&&(scope.selectedValue=scope.values[newVal]||"")}),scope.$on("$destroy",function(){windowEl.off("resize.dropdown")})}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btErrorImg",function(){return{link:function(scope,element,attrs){element.bind("error",function(){element.attr("src",attrs.btErrorImg)})}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btFocusOn",function($timeout){return{restrict:"A",link:function(scope,element,attrs){var currentValue={value:!1};attrs.$observe("btFocusOn",function(newValue){if(angular.isDefined(newValue)){var newValBool=scope.$eval(newValue);!currentValue.value&&newValBool&&$timeout(function(){element[0].focus()}),currentValue.value=newValBool}})}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btFormatMoney",function($filter){return{restrict:"A",require:"ngModel",link:function(scope,ele,attrs,ctrl){var formatCurrency=function(input){var currency=$filter("currency")(input);return currency.split(".")[0]};ctrl.$parsers.push(function(data){var parsed;data?(parsed=parseInt(data.replace(/[^0-9]+/g,"")),isNaN(parsed)&&(parsed=null)):parsed=null;var newViewValue;return newViewValue=parsed?formatCurrency(parsed):null,newViewValue!==data&&ctrl.$setViewValue(newViewValue),ctrl.$render(),parsed}),ctrl.$formatters.push(function(data){return null===data?null:formatCurrency(data)})}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btIFrame",function($window){return $window.iFrameCloseRegister=function(){},{template:'<iframe ng-src="{{src}}" width="{{width}}" height="{{height}}" seamless onload="window.iFrameCloseRegister()"></iframe>',restrict:"A",scope:{width:"@",height:"@",src:"=",closeFrame:"&"},link:function(scope,element){$window.iFrameCloseRegister=function(){element.children()[0]&&element.children()[0].contentWindow&&element.children()[0].contentWindow.registerClose&&element.children()[0].contentWindow.registerClose(function(){scope.closeFrame()})},scope.$on("$destroy",function(){$window.iFrameCloseRegister=function(){}})}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btInfiniteScrollElement",function($rootScope,$timeout){return{link:function(scope,elem,attrs){var checkWhenEnabled,handler,scrollEnabled,scrollDistance;scrollEnabled=!0,checkWhenEnabled=!1,scrollDistance=30,attrs.$observe("infiniteScrollDistance",function(newVal,oldVal){newVal!==oldVal&&newVal&&(scrollDistance=parseInt(newVal,10),isNaN(scrollDistance)&&(scrollDistance=30))}),handler=function(){var elementTotalHeight,elementScrollPosition,elementVisibleHeight,shouldScroll;return elementTotalHeight=elem[0].scrollHeight,elementScrollPosition=elem.scrollTop(),elementVisibleHeight=elem.height(),shouldScroll=scrollDistance>=elementTotalHeight-(elementVisibleHeight+elementScrollPosition),shouldScroll&&scrollEnabled?$rootScope.$$phase?scope.$eval(attrs.btInfiniteScrollElement):scope.$apply(attrs.btInfiniteScrollElement):shouldScroll?checkWhenEnabled=!0:void 0},elem.on("scroll",handler),scope.$on("$destroy",function(){return elem.off("scroll",handler)}),$timeout(function(){return attrs.infiniteScrollImmediateCheck?scope.$eval(attrs.infiniteScrollImmediateCheck)?handler():void 0:handler()},0)}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btLazyPen",function(){return{restrict:"E",replace:!0,scope:{height:"@",themeId:"@",slug:"@",userId:"@",author:"@"},templateUrl:"template/btLazyPen/btLazyPen.tpl.html",link:function(scope){scope.showingPen={value:!1}}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btLeadCategory",["leadCategories",function(leadCategories){var categories={},abbrs={};return leadCategories.forEach(function(category){categories[category.value.toString()]=category.name,abbrs[category.value.toString()]=category.abbr}),{restrict:"E",replace:!0,scope:{category:"@",width:"@"},template:function(el,attrs){var equal=attrs.hasOwnProperty("equal"),abbr=attrs.hasOwnProperty("abbreviated");return['<span class="leadcat leadcat-{{ cat | lowercase }}',equal?abbr?" leadcat-eq-abbr":" leadcat-eq":"",'">{{ ',abbr?"abbr":"cat","}}</span>"].join("")},link:function(scope){var updateScope=function(){scope.cat=categories[scope.category],scope.abbr=abbrs[scope.category]};updateScope(),scope.$watch("category",function(newVal,oldVal){newVal!==oldVal&&updateScope()})}}}])}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btLoader",function(){return{restrict:"E",replace:!0,templateUrl:"template/loader/bt-loader.tpl.html"}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btLockBody",function($document,$window){return{link:function(scope,element){var scrollTop,$body=angular.element(document.getElementsByTagName("body")[0]),$html=angular.element(document.getElementsByTagName("html")[0]),$windowEl=angular.element($window),htmlDefault={position:$html.css("position"),"overflow-y":$html.css("overflow-y"),width:$html.css("width"),isScrolled:!1};$document.height()>$windowEl.height()&&(scrollTop=$html.scrollTop()||$body.scrollTop(),$html.css("top",-scrollTop),htmlDefault.isScrolled=!0),$html.css("position","fixed"),$html.css("overflow-y","scroll"),$html.css("width","100%"),element.bind("$destroy",function(){$html.css("position",htmlDefault.position),$html.css("overflow-y",htmlDefault["overflow-y"]),$html.css("width",htmlDefault.width),htmlDefault.isScrolled&&($html.scrollTop(scrollTop),$body.scrollTop(scrollTop))})}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btNgModelOnblur",function(){return{restrict:"A",require:"ngModel",priority:1,link:function(scope,element,attrs,ngModel){var update=function(alwaysUpdate){scope.$apply(function(){var elementValue=element.val().trim();if(!alwaysUpdate){var modelEmpty=angular.isUndefined(ngModel.$modelValue)||null===ngModel.$modelValue;if(modelEmpty){if(""===elementValue)return}else{var normalizedValue=elementValue.replace(/[^.0-9]+/g,"");if(""!==normalizedValue&&(normalizedValue=/\./.test(normalizedValue)?parseFloat(normalizedValue,10):parseInt(normalizedValue,10),normalizedValue===ngModel.$modelValue))return}}ngModel.$setViewValue(elementValue),ngModel.$render()})};element.off("input").off("keydown").off("change").on("blur",function(){update(!1)}).on("keydown",function(e){13===e.keyCode&&update(!0)}),scope.$on("$destroy",function(){element.unbind()})}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btNumber",function(){return{require:"ngModel",restrict:"A",link:function(scope,iElement,iAttrs,modelCtrl){modelCtrl.$parsers.push(function(data){if(data){var parsed=data.toString().replace(/[^0-9.]+/g,"");return parsed&&(parsed=/\./.test(data)?parseFloat(data):parseInt(data)),parsed!==data&&(modelCtrl.$setViewValue(parsed),modelCtrl.$render()),parsed}return data})}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btPager",function(){return{restrict:"E",templateUrl:"template/btPager/bt-pager.tpl.html",scope:{currentPage:"=",totalItems:"=",itemsPerPage:"="}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btPropertyCard",function(){return{restrict:"E",replace:!0,scope:{property:"=",size:"@",onClickBestFit:"&",onClickFavs:"&"},templateUrl:function(el,attrs){var template="";return template="sm"===attrs.size?"template/property-card/bt-property-card-sm.tpl.html":"template/property-card/bt-property-card.tpl.html"},link:function(scope){scope.onClickBestFit=scope.onClickBestFit||angular.noop,scope.onClickFavs=scope.onClickFavs||angular.noop,scope.isSmall="sm"===scope.size}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btScore",function(){return{restrict:"E",replace:!0,template:'<span class="score" ng-class="getScoreClasses()">{{ score }}</span>',scope:{score:"=",size:"@"},link:function(scope){var translateScore=function(score){var scoreType,scoreTranslation;scoreTranslation=parseInt(score,10),isNaN(scoreTranslation)||(scoreTranslation>=76?scoreType="score-excellent":scoreTranslation>=56?scoreType="score-good":scoreTranslation>=26&&(scoreType="score-average")),scope.scoreType=scoreType||""};scope.scoreSize=scope.size&&"score-"+scope.size||"",scope.scoreType=translateScore(scope.score),scope.getScoreClasses=function(){return[scope.scoreSize,scope.scoreType]},scope.$watch("score",function(newScore){translateScore(newScore)}),scope.$watch("size",function(newSize){scope.scoreSize=newSize&&"score-"+newSize||""})}}})}(angular.module("boomstrap")),function(Boomstrap,baron){"use strict";Boomstrap.directive("btScrollbar",function($window){return{restrict:"EA",transclude:!0,replace:!0,templateUrl:"template/scrollbar/bt-scrollbar.tpl.html",link:function(scope,element){function checkHeight(){$scroller.scrollHeight<=$scroller.clientHeight?$scrollbar.classList.add("hidden"):$scrollbar.classList.remove("hidden")}var $element=angular.element(element),$scroller=$element.find(".baron-scroller")[0],$scrollbar=$element.find(".baron-scroller-bar")[0],scroll=baron({root:element,scroller:".baron-scroller",track:".baron-scroller-track",bar:".baron-scroller-bar",$:angular.element});$element.on("click",function(){$window.setTimeout(function(){scroll.update(),checkHeight()},400)}),$element.on("mouseover",function(){scroll.update(),checkHeight()}),scope.$on("$destroy",function(){scroll.dispose()})}}})}(angular.module("boomstrap"),window.baron),function(Boomstrap){"use strict";Boomstrap.directive("btSelectRange",function($filter){return{restrict:"E",require:"ngModel",templateUrl:"template/select-range/range.tpl.html",replace:!0,scope:{values:"=",minPlaceholder:"@",maxPlaceholder:"@",btnClass:"@",translateMin:"=",translateMax:"=",onSelectBoundary:"&"},link:function(scope,iElement,iAttrs,ngModel){scope.minimum={value:ngModel.$modelValue.minimum},scope.maximum={value:ngModel.$modelValue.maximum},scope.minPlaceholder=scope.minPlaceholder||"Select a minimum value",scope.maxPlaceholder=scope.maxPlaceholder||"Select a maximum value",scope.btnClass=scope.btnClass||"",scope.boundaryEnum={MINIMUM:"minimum",MAXIMUM:"maximum"};var translateValidValue,validateMinMax=function(flippingFn){-1!==scope.maximum.value&&-1!==scope.minimum.value&&scope.maximum.value<scope.minimum.value&&flippingFn&&flippingFn()},addValueToValues=function(value,collection){if(value&&collection){var parsedValue=value.toString().replace(/[^0-9\.]+/,"");parsedValue&&(parsedValue=parseFloat(parseFloat(parsedValue).toFixed(2)),isNaN(parsedValue)||-1!==collection.indexOf(parsedValue)||collection.unshift(parsedValue))}};translateValidValue="money"===iAttrs.rangeType?function(value){return $filter("currency")(value).split(".")[0]}:angular.identity,scope.translateMinValue=scope.translateMin||function(value,defaultText){return angular.isNumber(value)?-1===value?defaultText:translateValidValue(value):defaultText},scope.translateMaxValue=scope.translateMax||function(value,defaultText){return angular.isNumber(value)?-1===value?defaultText:translateValidValue(value):defaultText},scope.selectRangeBoundary=function(minOrMax,value){"function"==typeof scope.onSelectBoundary&&scope.onSelectBoundary({minOrMax:minOrMax,value:value})},function(){var modifiedValues,previousValue;scope.getValues=function(value){return value!==previousValue&&(previousValue=value,modifiedValues=scope.values.slice(),addValueToValues(value,modifiedValues)),modifiedValues}}(),scope.$watch(function(){return ngModel.$modelValue.minimum},function(){scope.minimum.value!==ngModel.$modelValue.minimum&&(scope.minimum.value=ngModel.$modelValue.minimum)}),scope.$watch(function(){return ngModel.$modelValue.maximum},function(){scope.maximum.value!==ngModel.$modelValue.maximum&&(scope.maximum.value=ngModel.$modelValue.maximum)}),scope.$watch("minimum.value",function(newMin,oldMin){newMin!==oldMin&&(validateMinMax(function(){scope.maximum.value=scope.minimum.value}),addValueToValues(scope.minimum.value,scope.values),ngModel.$modelValue.minimum=scope.minimum.value,ngModel.$setViewValue(ngModel.$viewValue))}),scope.$watch("maximum.value",function(newMax,oldMax){newMax!==oldMax&&(validateMinMax(function(){scope.minimum.value=scope.maximum.value}),addValueToValues(scope.maximum.value,scope.values),ngModel.$modelValue.maximum=scope.maximum.value,ngModel.$setViewValue(ngModel.$viewValue))})}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.controller("templatePopoverPopupCtrl",function($scope){this.close=function($event){$event&&$event.stopPropagation&&$event.stopPropagation(),$scope.$parent.close()}}).directive("templatePopoverPopup",function(){return{restrict:"EA",replace:!0,scope:{title:"@",content:"@",placement:"@",animation:"&",isOpen:"&"},templateUrl:"template/popover/template-popover.html",controller:"templatePopoverPopupCtrl",controllerAs:"$popover"}}).controller("templatePopoverCtrl",function($scope){$scope.close=function(){$scope.tt_isOpen=!1}}).directive("templatePopover",["$tooltip",function($tooltip){var toolTip=$tooltip("templatePopover","templatePopover","click");return toolTip.controller="templatePopoverCtrl",toolTip}])}(angular.module("boomstrap")),function(Boomstrap,Tour){"use strict";Boomstrap.service("bootstrapTourService",function($templateCache,$rootScope,$http,AUTO_START_TOUR){var tourRef,tour={init:function(steps,onStart,onNextStep,onDismiss,onComplete){var tourSteps=[];angular.forEach(steps,function(step){step.template&&(step.template=$templateCache.get(step.template)),step.content||step.title||(step.content="."),tourSteps.push(step)}),tour.steps=tourSteps,tour.onStart=onStart,tour.onNextStep=onNextStep,tour.onDismiss=onDismiss,tour.onComplete=onComplete},steps:[],startTour:function(startingStep){startingStep=startingStep||0;var tourTemplate=$templateCache.get("template/popover/popover-bootstrap-tour.html"),wasHidden=tour.isHidden;tour.isHidden=!1,tourRef&&tourRef.ended&&!tourRef.ended()&&tourRef.end();var ngApply=function(fn){return function(){$rootScope.$$phase?fn():$rootScope.$apply(fn)}};tourRef=new Tour({steps:tour.steps.slice(startingStep),template:tourTemplate,container:"body",storage:!1,onNext:ngApply(function(){tour.currentStep+=1,tour.onNextStep&&tour.onNextStep()}),onPrev:ngApply(function(){tour.currentStep-=1}),onEnd:ngApply(function(){tour.isHidden||(tour.currentStep===tour.steps.length-1?tour.onComplete&&tour.onComplete():tour.onDismiss&&tour.onDismiss()),tour.currentStep=-1})}),tourRef.init(),tourRef.start(!0),tour.currentStep=startingStep,!wasHidden&&tour.onStart&&tour.onStart(),$rootScope.$on("$stateChangeStart",function(){tourRef&&tourRef.ended&&!tourRef.ended()&&(tour.endTour(!0),AUTO_START_TOUR.value=!1)})},currentStep:-1,isHidden:!1,shouldResume:function(val){return angular.isDefined(val)&&(tour.isHidden=val,tour.onNextStep&&tour.onNextStep()),tour.isHidden},goToNextStep:function(){tourRef.next()},endTour:function(){tourRef.end()}};return tour})}(angular.module("boomstrap"),window.Tour),function(Boomstrap){"use strict";Boomstrap.filter("btCurrency",function($filter,$locale){var formats=$locale.NUMBER_FORMATS,currencyFilter=$filter("currency");return function(amount,currencySymbol){amount=amount?(1*amount).toFixed(2):0;var value=currencyFilter(amount,currencySymbol),parts=value.split(formats.DECIMAL_SEP),dollar=parts[0],cents=parts[1]||"00";return cents="00"===cents.substring(0,2)?cents.substring(2):"."+cents,dollar+cents}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.filter("btFormatDateToLocal",function($filter){return function(utcDate,params){var formattedDate,defaultFilter;return utcDate?(utcDate=utcDate.replace(/Z$/,"")+"Z",defaultFilter=params?params:"EEEE, MMMM d, y 'at' h:mma",formattedDate=$filter("date")(utcDate,defaultFilter)):formattedDate="",formattedDate}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.filter("btPhoneNumber",function(){return function(string,params){var formattedNumber,localPrefix,localMain,area,number=string||"";switch(params){case"remove":formattedNumber=number.replace(/\D/g,""),formattedNumber.length>10&&0===formattedNumber.indexOf("1")&&(formattedNumber=formattedNumber.substring(1));break;case"add":number=number.replace(/\D/g,""),area=number.substring(0,3),localPrefix=number.substring(3,6),localMain=number.substring(6),formattedNumber="("+area+") "+localPrefix+"-"+localMain;break;default:formattedNumber=string}return formattedNumber}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.filter("capitalize",function(){return function(str){return str.charAt(0).toUpperCase()+str.slice(1)}})}(angular.module("boomstrap")),angular.module("ui.bootstrap").run(["$templateCache",function($templateCache){$templateCache.put("template/pager/bt-pager.tpl.html",'<div class="btn-group minimal-pager">\n <button\n type="button"\n class="btn btn-default btn-icon"\n ng-class="{ \'disabled\': noPrevious() }"\n ng-click="selectPage(page - 1)"><i class="ficon ficon-chevron-left"></i></button>\n <button\n type="button"\n class="btn btn-default btn-icon"\n ng-class="{ \'disabled\': noNext() }"\n ng-click="selectPage(page + 1)"><i class="ficon ficon-chevron-right"></i></button>\n</div>')}]),angular.module("boomstrap").run(["$templateCache",function($templateCache){$templateCache.put("template/nav.html",'<nav class="navbar navbar-default navbar-fixed-top" role="navigation">\n <div class="container-fluid">\n <div class="navbar-header">\n <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#pl-nav">\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n </button>\n <a class="navbar-brand" href="#">PL</a>\n </div>\n <div class="collapse navbar-collapse" id="pl-nav">\n <ul class="nav navbar-nav">\n <li class="active"><a href="#pl-colors">Colors</a></li>\n <li class="dropdown">\n <a href="#" class="dropdown-toggle" data-toggle="dropdown">Buttons <b class="caret"></b></a>\n <ul class="dropdown-menu">\n <li><a href="#pl-button-options">Options</a></li>\n <li><a href="#pl-button-sizes">Sizes</a></li>\n <li><a href="#pl-button-active">Active State</a></li>\n <li><a href="#pl-button-disabled">Disabled State</a></li>\n <li><a href="#pl-button-tags">Button Tags</a></li>\n </ul>\n </li>\n <li><a href="#pl-labels">Labels</a></li>\n <li><a href="#pl-typography">Typography</a></li>\n </ul>\n </div>\n </div>\n</nav>\n<div class="container">'),$templateCache.put("template/btLazyPen/btLazyPen.tpl.html",'<div class="bt-lazy-pen">\n <span class="btn btn-attention" ng-if="!showingPen.value" ng-click="showingPen.value = !showingPen.value">Load CodePen Example</span>\n <div ng-if="showingPen.value">\n <p data-height="{{ height }}" data-theme-id="{{ themeId }}" data-slug-hash="{{ slug }}" data-default-tab="result" class=\'codepen\'>See the Pen <a href=\'http://codepen.io/{{ user }}/pen/{{ slug }}/\'>{{ title }}</a> by {{ author }} (<a href=\'http://codepen.io/{{ user }}\'>@{{ userId }}</a>) on <a href=\'http://codepen.io\'>CodePen</a>.</p>\n <script async src="//codepen.io/assets/embed/ei.js"></script>\n </div>\n</div>'),$templateCache.put("template/btPager/bt-pager.tpl.html",'<pager\n template-url="template/pager/bt-pager.tpl.html"\n total-items="totalItems"\n items-per-page="itemsPerPage"\n ng-model="currentPage">\n</pager>'),$templateCache.put("template/dropdown/bt-dropdown.tpl.html",'<div class="dropdown">\n <button class="btn btn-default dropdown-toggle" type="button">\n <span class="pull-left" ng-bind="selectedValue"></span>\n <span class="caret"></span>\n </button>\n <ul class="dropdown-menu" role="menu" ng-style="{ \'min-width\': dropdownWidth + \'px\'}">\n <li ng-repeat="value in arrayValues" ng-if="keysAreNumbers">\n <a ng-click="assignValue(value.key)">{{ value.value }}</a>\n </li>\n <li ng-repeat="(choiceValue, choiceName) in values" ng-if="!keysAreNumbers">\n <a ng-click="assignValue(choiceValue)">{{choiceName}}</a>\n </li>\n </ul>\n</div>'),$templateCache.put("template/carousel/carousel.html",'<div ng-mouseenter="pause()" ng-mouseleave="play()" class="carousel">\n <ol class="carousel-indicators" ng-show="slides.length > 1">\n <li ng-repeat="slide in slides" ng-class="{active: isActive(slide)}" ng-click="select(slide)"></li>\n </ol>\n <div class="carousel-inner" ng-transclude></div>\n <a class="left carousel-control" ng-click="prev()" ng-show="slides.length > 1"><i class="ficon ficon-chevron-left"></i></a>\n <a class="right carousel-control" ng-click="next()" ng-show="slides.length > 1"><i class="ficon ficon-chevron-right"></i></a>\n</div>'),$templateCache.put("template/loader/bt-loader.tpl.html",'<div class="loader">\n <span class="loader-pulse"></span>\n <span class="loader-pulse"></span>\n <span class="loader-pulse"></span>\n</div>'),$templateCache.put("template/popover/popover-bootstrap-tour.html",'<div class="popover">\n <div class="arrow"></div>\n <div class="popover-close">\n <i class="ficon ficon-cross property-close" data-role="end"></i>\n </div>\n <h3 class="popover-title">Tour</h3>\n <div class="tour-popover popover-content"></div>\n <div class="popover-navigation">\n <button class="btn btn-sm btn-default" data-role="prev">Prev</button>\n <button class="btn btn-sm btn-primary" data-role="next"><span>Next</span></button>\n </div>\n</div>'),$templateCache.put("template/popover/template-popover.html",'<div class="popover {{placement}}" ng-class="{ in: isOpen(), fade: animation() }">\n <div class="arrow"></div>\n\n <div class="popover-close" ng-click="$popover.close($event)" aria-hidden="true"><i class="ficon ficon-cross"></i></div>\n\n <h3 class="popover-title" ng-bind="title" ng-show="title"></h3>\n\n <div class="popover-content" ng-include="content"></div>\n</div>'),$templateCache.put("template/property-card/bt-property-card-sm.tpl.html",'<div class="card card-sm">\n <!-- ///////////////////////////////////////////////// -->\n <!-- Optional: replace "card-photo" div with carousel -->\n <!-- ///////////////////////////////////////////////// -->\n <div class="card-photo">\n <div class="card-photo-inner">\n <div ng-if="property.newProperty" class="sash sash-new">New <span class="sash-time" am-time-ago="{{ property.newProperty }}"></span></div>\n <div ng-if="property.offMarket" class="sash sash-off">Off Market <span class="sash-time" am-time-ago="{{ property.offMarket }}"></span></div>\n <div ng-if="property.reduced" class="sash sash-reduced"><i class="ficon ficon-arrow-down"></i> {{ property.reduced.change }} ({{ property.reduced.changePercent }}) <span class="sash-time" am-time-ago="{{ property.reduced.when }}"></span></div>\n <div ng-if="property.backOnMarket" class="sash sash-back">Back <span class="sash-time" am-time-ago="{{ property.backOnMarket }}"></span></div>\n <img ng-if="property.imageSrc.length <= 1" bt-error-img="http://boomstatic.com/images/comingsoon-lg.jpg" class="card-img" ng-src="{{ property.imageSrc[0] }}" alt="{{ property.fullAddress }}">\n <carousel ng-if="property.imageSrc.length > 1">\n <slide ng-repeat="slide in property.imageSrc">\n <img ng-src="{{ slide }}" style="margin: auto">\n </slide>\n </carousel>\n </div>\n </div>\n <!-- ///////////////////////////////////////////////// -->\n <div class="card-sm-container">\n <div class="row row-xcondensed">\n <div class="col-xs-8">\n <p class="card-sm-priority card-sm-street">\n <a target="_blank" href="{{ property.listingUrl }}">{{ property.address.street }}</a>\n </p>\n <p class="xsmall">{{ property.address.city }}, {{ property.address.state }}</p>\n <p class="xsmall">{{ property.address.neighborhood }}</p>\n </div>\n <div class="col-xs-4 text-right">\n <p class="card-sm-priority card-sm-price">{{ property.listPrice }}</p>\n <p class="xsmall">{{ property.pricePerSqft }}/SQFT</p>\n </div>\n </div>\n </div>\n <div class="card-sm-stats">\n <span class="card-sm-stat">{{ property.beds }} BEDS</span>\n <span class="card-sm-stat">{{ property.baths }} BATHS</span>\n <span class="card-sm-stat">{{ property.sqft }} SQFT</span>\n <span class="card-sm-stat">{{ property.acres }} ACRES</span>\n </div>\n <div class="card-sm-container">\n <div class="row row-xcondensed">\n <div class="col-sm-6">\n <button type="button" class="btn btn-default btn-block btn-sm" ng-click="onClickBestFit($event)"><i class="ficon ficon-star"></i> {{ property.bestFits }} Best-Fit</button>\n </div>\n <div class="col-sm-6">\n <button type="button" class="btn btn-default btn-block btn-sm" ng-click="onClickFavs($event)"><i class="ficon ficon-heart"></i> {{ property.favs }} Favs</button>\n </div>\n </div>\n </div> <!-- /card-container -->\n</div>'), | ||
!function(){"use strict";angular.module("boomstrap",["ui.bootstrap","ui.select","angularMoment"]).value("AUTO_START_TOUR",{value:!1}).config(["uiSelectConfig",function(uiSelectConfig){uiSelectConfig.theme="bootstrap"}]),angular.module("ui.bootstrap").config(["$provide",function($provide){$provide.decorator("pagerDirective",function($delegate){var defaultUrl=$delegate[0].templateUrl;return $delegate[0].templateUrl=function(tElement,tAttrs){return tAttrs.templateUrl||defaultUrl},$delegate})}])}(),function(Boomstrap){"use strict";Boomstrap.constant("leadCategories",[{value:0,name:"new",abbr:"new",active:!0},{value:3,name:"qualify",abbr:"qual",active:!0},{value:5,name:"hot",abbr:"hot",active:!0},{value:4,name:"nurture",abbr:"nurt",active:!0},{value:2,name:"watch",abbr:"watch",active:!0},{value:11,name:"pending",abbr:"pend",active:!1},{value:10,name:"closed",abbr:"close",active:!1},{value:6,name:"archive",abbr:"arch",active:!1},{value:1,name:"trash",abbr:"trash",active:!1}])}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btAddClassOnLoad",function(){return{link:function(scope,element,attrs){attrs.$observe("btAddClassOnLoad",function(attrClass){element.bind("load",function(){element.addClass(attrClass)})})}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btAffix",function($window){return{template:'<div class="bt-affix" ng-transclude></div>',transclude:!0,restrict:"A",link:function(scope,element,attrs){var windowEl=angular.element($window),$element=angular.element(element),$realElement=angular.element($element.children()[0]),defaults={position:$element.css("position"),top:$element.css("top"),"overflow-y":$element.css("overflow-y")};scope.isAffixed=!1,defaults.width="auto",scope.offset=0;var affixThis=function(){var myWidth=$realElement.css("width"),myHeight=$realElement.height();$realElement.css({position:"fixed",top:""+scope.offset+"px",width:myWidth,"max-height":"100%"}),scope.scroll&&$realElement.css({"overflow-y":"scroll"}),scope.fullHeight&&$realElement.css({height:"100%"}),scope.pinnedHeader&&$realElement.css({top:0,width:"100%",left:0}).addClass("pinned-header"),$element.addClass("is-bt-affixed").css({height:myHeight}),scope.isAffixed=!0},unAffixThis=function(){$realElement.scrollTop(0),$realElement.css(defaults),$realElement.css({height:"auto"}),$element.removeClass("is-bt-affixed").css({height:"auto"}),$realElement.removeClass("pinned-header"),scope.isAffixed=!1},scroller=function(){windowEl.scrollTop()>$element.offset().top-scope.offset?scope.isAffixed||affixThis():scope.isAffixed&&unAffixThis()},resizer=function(){scope.isAffixed&&(unAffixThis(),affixThis())};attrs.$observe("offset",function(val){angular.isDefined(val)&&(scope.offset=parseInt(val,10))}),windowEl.on("scroll.affix",scroller),windowEl.on("resize.affix",resizer),attrs.$observe("scroll",function(val){scope.scroll=!!val}),attrs.$observe("fullHeight",function(val){scope.fullHeight=!!val}),attrs.$observe("pinnedHeader",function(val){scope.pinnedHeader=!!val}),scope.$on("destroy",function(){windowEl.off("scroll.affix",scroller),windowEl.off("resize.affix",resizer)})}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btArrowScroll",function($window){return{restrict:"A",scope:{distance:"@btArrowScroll"},link:function(scope,element){var scrollDistance,$windowEl=angular.element($window),DEFAULT_SCROLL_DISTANCE=50,parseScroll=function(value){var parsed;return angular.isDefined(value)?(parsed=parseInt(value,10),isNaN(parsed)?DEFAULT_SCROLL_DISTANCE:parsed):DEFAULT_SCROLL_DISTANCE};scrollDistance=parseScroll(scope.distance),scope.$watch("distance",function(newVal){angular.isDefined(newVal)&&newVal!==scrollDistance&&(scrollDistance=parseScroll(newVal))}),$windowEl.on("keydown.arrowscroll",function(e){var scroll;40===e.keyCode?(scroll=element.scrollTop(),scroll+scrollDistance<element[0].scrollHeight?(element.scrollTop(scroll+scrollDistance),e.preventDefault()):scroll!==element[0].scrollHeight&&element.scrollTop(element[0].scrollHeight)):38===e.keyCode&&(scroll=element.scrollTop(),scroll-scrollDistance>=0?(element.scrollTop(scroll-scrollDistance),e.preventDefault()):0!==scroll&&element.scrollTop(0))}),element.bind("$destroy",function(){$windowEl.off("keydown.arrowscroll")})}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btAutoSubmit",function($timeout){return{require:"form",restrict:"A",scope:{ngSubmit:"&",shouldAutoSubmit:"=btAutoSubmit",submitTimeout:"@",willLoad:"="},link:function(scope,iElement,iAttrs,iCtrl){var autoSubmit=parseInt(scope.submitTimeout,10),submitTimeout=$timeout(function(){},0),triggerTimeout=function(){iCtrl.$setPristine(),$timeout.cancel(submitTimeout),scope.willLoad.value=!0,submitTimeout=$timeout(function(){scope.willLoad.value=!1,iCtrl.$valid&&(scope.ngSubmit({}),iCtrl.$setPristine())},autoSubmit)};scope.$watch(function(){return iCtrl.$valid&&iCtrl.$dirty},function(val,oldVal){scope.shouldAutoSubmit?val!==oldVal&&val&&triggerTimeout():iCtrl.$setPristine()})}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btBodyLoader",function($parse,$document){return{restrict:"E",replace:!0,scope:{isLoading:"="},link:function(scope){var body=$document.find("body"),loader=$document.find("#bt-body-loader"),template='<div id="bt-body-loader" class="loader body-loader"><span class="loader-pulse"></span><span class="loader-pulse"></span><span class="loader-pulse"></span></div>';return loader.length>0?!0:(body.append(template),void scope.$watch("isLoading",function(newVal){var $loader=angular.element("#bt-body-loader"),display=newVal.value===!1?"none":"block";$loader.css({display:display})},!0))}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btCenterOnPage",function($window,$timeout){return{restrict:"A",link:function(scope,element){var $element=angular.element(element),windowEl=angular.element($window),centerElement=function(){var windowWidth=windowEl.width(),windowHeight=windowEl.height(),elementWidth=$element.width(),elementHeight=$element.height();$element.css({top:Math.floor((windowHeight-elementHeight)/2).toString()+"px",left:Math.floor((windowWidth-elementWidth)/2).toString()+"px"})};$timeout(centerElement,0),windowEl.on("resize.modal",centerElement),scope.$on("$destroy",function(){windowEl.off("resize.modal")})}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btDatePicker",function(){return{restrict:"A",scope:{date:"=btDatePicker"},link:function(scope,element){element.bsDatepicker({dateFormat:"dd-MM-yyyy",todayHighlight:!0,startDate:new Date,language:"en",pickTime:!1,autoclose:!0}).on("changeDate",function(e){scope.$apply(function(){scope.date.value=e.date})}),scope.$on("$destroy",function(){element.bsDatepicker("remove")})}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btDropdown",function($window){return{restrict:"A",require:"ngModel",templateUrl:"template/dropdown/bt-dropdown.tpl.html",replace:!0,scope:{values:"=",keysAreNumbers:"=",onAssign:"&"},link:function(scope,iElement,iAttrs,ngModel){var windowEl=angular.element($window),sortNumberKeys=function(objectValues){var sortedArray=[];return Object.keys(objectValues).forEach(function(key){sortedArray.push({key:key,value:objectValues[key]})}),sortedArray.sort(function(a,b){return parseInt(a.key,10)>parseInt(b.key,10)}),sortedArray};scope.keysAreNumbers&&(scope.arrayValues=sortNumberKeys(scope.values),scope.$watch("values",function(newValues,oldValues){newValues&&oldValues&&newValues.length!==oldValues.length&&(scope.arrayValues=sortNumberKeys(scope.values))})),scope.assignValue=function(value){scope.selectedValue=scope.values[value],ngModel.$setViewValue(value),scope.onAssign&&scope.onAssign({ddValue:value,ddTranslation:scope.selectedValue})},scope.valuesLength=function(){return scope.values&&Object.keys(scope.values).length||0};var setDropdownWidth=function(){scope.dropdownWidth=angular.element(iElement[0].children[0]).outerWidth()};setDropdownWidth(),windowEl.on("resize.dropdown",function(){scope.$apply(setDropdownWidth)}),scope.$watch(function(){return ngModel.$modelValue},function(newVal,oldVal){(newVal!==oldVal||angular.isUndefined(scope.selectedValue))&&(scope.selectedValue=scope.values[newVal]||"")}),scope.$on("$destroy",function(){windowEl.off("resize.dropdown")})}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btErrorImg",function(){return{link:function(scope,element,attrs){element.bind("error",function(){element.attr("src",attrs.btErrorImg)})}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btFocusOn",function($timeout){return{restrict:"A",link:function(scope,element,attrs){var currentValue={value:!1};attrs.$observe("btFocusOn",function(newValue){if(angular.isDefined(newValue)){var newValBool=scope.$eval(newValue);!currentValue.value&&newValBool&&$timeout(function(){element[0].focus()}),currentValue.value=newValBool}})}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btFormatMoney",function($filter){return{restrict:"A",require:"ngModel",link:function(scope,ele,attrs,ctrl){var formatCurrency=function(input){var currency=$filter("currency")(input);return currency.split(".")[0]};ctrl.$parsers.push(function(data){var parsed;data?(parsed=parseInt(data.replace(/[^0-9]+/g,"")),isNaN(parsed)&&(parsed=null)):parsed=null;var newViewValue;return newViewValue=parsed?formatCurrency(parsed):null,newViewValue!==data&&ctrl.$setViewValue(newViewValue),ctrl.$render(),parsed}),ctrl.$formatters.push(function(data){return null===data?null:formatCurrency(data)})}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btIFrame",function($window){return $window.iFrameCloseRegister=function(){},{template:'<iframe ng-src="{{src}}" width="{{width}}" height="{{height}}" seamless onload="window.iFrameCloseRegister()"></iframe>',restrict:"A",scope:{width:"@",height:"@",src:"=",closeFrame:"&"},link:function(scope,element){$window.iFrameCloseRegister=function(){element.children()[0]&&element.children()[0].contentWindow&&element.children()[0].contentWindow.registerClose&&element.children()[0].contentWindow.registerClose(function(){scope.closeFrame()})},scope.$on("$destroy",function(){$window.iFrameCloseRegister=function(){}})}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btInfiniteScrollElement",function($rootScope,$timeout){return{link:function(scope,elem,attrs){var checkWhenEnabled,handler,scrollEnabled,scrollDistance;scrollEnabled=!0,checkWhenEnabled=!1,scrollDistance=30,attrs.$observe("infiniteScrollDistance",function(newVal,oldVal){newVal!==oldVal&&newVal&&(scrollDistance=parseInt(newVal,10),isNaN(scrollDistance)&&(scrollDistance=30))}),handler=function(){var elementTotalHeight,elementScrollPosition,elementVisibleHeight,shouldScroll;return elementTotalHeight=elem[0].scrollHeight,elementScrollPosition=elem.scrollTop(),elementVisibleHeight=elem.height(),shouldScroll=scrollDistance>=elementTotalHeight-(elementVisibleHeight+elementScrollPosition),shouldScroll&&scrollEnabled?$rootScope.$$phase?scope.$eval(attrs.btInfiniteScrollElement):scope.$apply(attrs.btInfiniteScrollElement):shouldScroll?checkWhenEnabled=!0:void 0},elem.on("scroll",handler),scope.$on("$destroy",function(){return elem.off("scroll",handler)}),$timeout(function(){return attrs.infiniteScrollImmediateCheck?scope.$eval(attrs.infiniteScrollImmediateCheck)?handler():void 0:handler()},0)}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btLazyPen",function(){return{restrict:"E",replace:!0,scope:{height:"@",themeId:"@",slug:"@",userId:"@",author:"@"},templateUrl:"template/btLazyPen/btLazyPen.tpl.html",link:function(scope){scope.showingPen={value:!1}}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btLeadCategory",["leadCategories",function(leadCategories){var categories={},abbrs={};return leadCategories.forEach(function(category){categories[category.value.toString()]=category.name,abbrs[category.value.toString()]=category.abbr}),{restrict:"E",replace:!0,scope:{category:"@",width:"@"},template:function(el,attrs){var equal=attrs.hasOwnProperty("equal"),abbr=attrs.hasOwnProperty("abbreviated");return['<span class="leadcat leadcat-{{ cat | lowercase }}',equal?abbr?" leadcat-eq-abbr":" leadcat-eq":"",'">{{ ',abbr?"abbr":"cat","}}</span>"].join("")},link:function(scope){var updateScope=function(){scope.cat=categories[scope.category],scope.abbr=abbrs[scope.category]};updateScope(),scope.$watch("category",function(newVal,oldVal){newVal!==oldVal&&updateScope()})}}}])}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btLoader",function(){return{restrict:"E",replace:!0,templateUrl:"template/loader/bt-loader.tpl.html"}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btLockBody",function($document,$window){return{link:function(scope,element){var scrollTop,$body=angular.element(document.getElementsByTagName("body")[0]),$html=angular.element(document.getElementsByTagName("html")[0]),$windowEl=angular.element($window),htmlDefault={position:$html.css("position"),"overflow-y":$html.css("overflow-y"),width:$html.css("width"),isScrolled:!1};$document.height()>$windowEl.height()&&(scrollTop=$html.scrollTop()||$body.scrollTop(),$html.css("top",-scrollTop),htmlDefault.isScrolled=!0),$html.css("position","fixed"),$html.css("overflow-y","scroll"),$html.css("width","100%"),element.bind("$destroy",function(){$html.css("position",htmlDefault.position),$html.css("overflow-y",htmlDefault["overflow-y"]),$html.css("width",htmlDefault.width),htmlDefault.isScrolled&&($html.scrollTop(scrollTop),$body.scrollTop(scrollTop))})}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btNgModelOnblur",function(){return{restrict:"A",require:"ngModel",priority:1,link:function(scope,element,attrs,ngModel){var update=function(alwaysUpdate){scope.$apply(function(){var elementValue=element.val().trim();if(!alwaysUpdate){var modelEmpty=angular.isUndefined(ngModel.$modelValue)||null===ngModel.$modelValue;if(modelEmpty){if(""===elementValue)return}else{var normalizedValue=elementValue.replace(/[^.0-9]+/g,"");if(""!==normalizedValue&&(normalizedValue=/\./.test(normalizedValue)?parseFloat(normalizedValue,10):parseInt(normalizedValue,10),normalizedValue===ngModel.$modelValue))return}}ngModel.$setViewValue(elementValue),ngModel.$render()})};element.off("input").off("keydown").off("change").on("blur",function(){update(!1)}).on("keydown",function(e){13===e.keyCode&&update(!0)}),scope.$on("$destroy",function(){element.unbind()})}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btNumber",function(){return{require:"ngModel",restrict:"A",link:function(scope,iElement,iAttrs,modelCtrl){modelCtrl.$parsers.push(function(data){if(data){var parsed=data.toString().replace(/[^0-9.]+/g,"");return parsed&&(parsed=/\./.test(data)?parseFloat(data):parseInt(data)),parsed!==data&&(modelCtrl.$setViewValue(parsed),modelCtrl.$render()),parsed}return data})}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btPager",function(){return{restrict:"E",templateUrl:"template/btPager/bt-pager.tpl.html",scope:{currentPage:"=",totalItems:"=",itemsPerPage:"="}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btPropertyCard",function(){return{restrict:"E",replace:!0,scope:{property:"=",size:"@",onClickBestFit:"&",onClickFavs:"&"},templateUrl:function(el,attrs){var template="";return template="sm"===attrs.size?"template/property-card/bt-property-card-sm.tpl.html":"template/property-card/bt-property-card.tpl.html"},link:function(scope){scope.onClickBestFit=scope.onClickBestFit||angular.noop,scope.onClickFavs=scope.onClickFavs||angular.noop,scope.isSmall="sm"===scope.size}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.directive("btScore",function(){return{restrict:"E",replace:!0,template:'<span class="score" ng-class="getScoreClasses()">{{ score }}</span>',scope:{score:"=",size:"@"},link:function(scope){var translateScore=function(score){var scoreType,scoreTranslation;scoreTranslation=parseInt(score,10),isNaN(scoreTranslation)||(scoreTranslation>=76?scoreType="score-excellent":scoreTranslation>=56?scoreType="score-good":scoreTranslation>=26&&(scoreType="score-average")),scope.scoreType=scoreType||""};scope.scoreSize=scope.size&&"score-"+scope.size||"",scope.scoreType=translateScore(scope.score),scope.getScoreClasses=function(){return[scope.scoreSize,scope.scoreType]},scope.$watch("score",function(newScore){translateScore(newScore)}),scope.$watch("size",function(newSize){scope.scoreSize=newSize&&"score-"+newSize||""})}}})}(angular.module("boomstrap")),function(Boomstrap,baron){"use strict";Boomstrap.directive("btScrollbar",function($window){return{restrict:"EA",transclude:!0,replace:!0,templateUrl:"template/scrollbar/bt-scrollbar.tpl.html",link:function(scope,element){function checkHeight(){$scroller.scrollHeight<=$scroller.clientHeight?$scrollbar.classList.add("hidden"):$scrollbar.classList.remove("hidden")}var $element=angular.element(element),$scroller=$element.find(".baron-scroller")[0],$scrollbar=$element.find(".baron-scroller-bar")[0],scroll=baron({root:element,scroller:".baron-scroller",track:".baron-scroller-track",bar:".baron-scroller-bar",$:angular.element});$element.on("click",function(){$window.setTimeout(function(){scroll.update(),checkHeight()},400)}),$element.on("mouseover",function(){scroll.update(),checkHeight()}),scope.$on("$destroy",function(){scroll.dispose()})}}})}(angular.module("boomstrap"),window.baron),function(Boomstrap){"use strict";Boomstrap.directive("btSelectRange",function($filter){return{restrict:"E",require:"ngModel",templateUrl:"template/select-range/range.tpl.html",replace:!0,scope:{values:"=",minPlaceholder:"@",maxPlaceholder:"@",btnClass:"@",translateMin:"=",translateMax:"=",onSelectBoundary:"&"},link:function(scope,iElement,iAttrs,ngModel){scope.minimum={value:ngModel.$modelValue.minimum},scope.maximum={value:ngModel.$modelValue.maximum},scope.minPlaceholder=scope.minPlaceholder||"Select a minimum value",scope.maxPlaceholder=scope.maxPlaceholder||"Select a maximum value",scope.btnClass=scope.btnClass||"",scope.boundaryEnum={MINIMUM:"minimum",MAXIMUM:"maximum"};var translateValidValue,validateMinMax=function(flippingFn){-1!==scope.maximum.value&&-1!==scope.minimum.value&&scope.maximum.value<scope.minimum.value&&flippingFn&&flippingFn()},addValueToValues=function(value,collection){if(value&&collection){var parsedValue=value.toString().replace(/[^0-9\.]+/,"");parsedValue&&(parsedValue=parseFloat(parseFloat(parsedValue).toFixed(2)),isNaN(parsedValue)||-1!==collection.indexOf(parsedValue)||collection.unshift(parsedValue))}};translateValidValue="money"===iAttrs.rangeType?function(value){return $filter("currency")(value).split(".")[0]}:angular.identity,scope.translateMinValue=scope.translateMin||function(value,defaultText){return angular.isNumber(value)?-1===value?defaultText:translateValidValue(value):defaultText},scope.translateMaxValue=scope.translateMax||function(value,defaultText){return angular.isNumber(value)?-1===value?defaultText:translateValidValue(value):defaultText},scope.selectRangeBoundary=function(minOrMax,value){"function"==typeof scope.onSelectBoundary&&scope.onSelectBoundary({minOrMax:minOrMax,value:value})},function(){var modifiedValues,previousValue;scope.getValues=function(value){return value!==previousValue&&(previousValue=value,modifiedValues=scope.values.slice(),addValueToValues(value,modifiedValues)),modifiedValues}}(),scope.$watch(function(){return ngModel.$modelValue.minimum},function(){scope.minimum.value!==ngModel.$modelValue.minimum&&(scope.minimum.value=ngModel.$modelValue.minimum)}),scope.$watch(function(){return ngModel.$modelValue.maximum},function(){scope.maximum.value!==ngModel.$modelValue.maximum&&(scope.maximum.value=ngModel.$modelValue.maximum)}),scope.$watch("minimum.value",function(newMin,oldMin){newMin!==oldMin&&(validateMinMax(function(){scope.maximum.value=scope.minimum.value}),addValueToValues(scope.minimum.value,scope.values),ngModel.$modelValue.minimum=scope.minimum.value,ngModel.$setViewValue(ngModel.$viewValue))}),scope.$watch("maximum.value",function(newMax,oldMax){newMax!==oldMax&&(validateMinMax(function(){scope.minimum.value=scope.maximum.value}),addValueToValues(scope.maximum.value,scope.values),ngModel.$modelValue.maximum=scope.maximum.value,ngModel.$setViewValue(ngModel.$viewValue))})}}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.controller("templatePopoverPopupCtrl",function($scope){this.close=function($event){$event&&$event.stopPropagation&&$event.stopPropagation(),$scope.$parent.close()}}).directive("templatePopoverPopup",function(){return{restrict:"EA",replace:!0,scope:{title:"@",content:"@",placement:"@",animation:"&",isOpen:"&"},templateUrl:"template/popover/template-popover.html",controller:"templatePopoverPopupCtrl",controllerAs:"$popover"}}).controller("templatePopoverCtrl",function($scope){$scope.close=function(){$scope.tt_isOpen=!1}}).directive("templatePopover",["$tooltip",function($tooltip){var toolTip=$tooltip("templatePopover","templatePopover","click");return toolTip.controller="templatePopoverCtrl",toolTip}])}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.filter("btCurrency",function($filter,$locale){var formats=$locale.NUMBER_FORMATS,currencyFilter=$filter("currency");return function(amount,currencySymbol){amount=amount?(1*amount).toFixed(2):0;var value=currencyFilter(amount,currencySymbol),parts=value.split(formats.DECIMAL_SEP),dollar=parts[0],cents=parts[1]||"00";return cents="00"===cents.substring(0,2)?cents.substring(2):"."+cents,dollar+cents}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.filter("btFormatDateToLocal",function($filter){return function(utcDate,params){var formattedDate,defaultFilter;return utcDate?(utcDate=utcDate.replace(/Z$/,"")+"Z",defaultFilter=params?params:"EEEE, MMMM d, y 'at' h:mma",formattedDate=$filter("date")(utcDate,defaultFilter)):formattedDate="",formattedDate}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.filter("btPhoneNumber",function(){return function(string,params){var formattedNumber,localPrefix,localMain,area,number=string||"";switch(params){case"remove":formattedNumber=number.replace(/\D/g,""),formattedNumber.length>10&&0===formattedNumber.indexOf("1")&&(formattedNumber=formattedNumber.substring(1));break;case"add":number=number.replace(/\D/g,""),area=number.substring(0,3),localPrefix=number.substring(3,6),localMain=number.substring(6),formattedNumber="("+area+") "+localPrefix+"-"+localMain;break;default:formattedNumber=string}return formattedNumber}})}(angular.module("boomstrap")),function(Boomstrap){"use strict";Boomstrap.filter("capitalize",function(){return function(str){return str.charAt(0).toUpperCase()+str.slice(1)}})}(angular.module("boomstrap")),function(Boomstrap,Tour){"use strict";Boomstrap.service("bootstrapTourService",function($templateCache,$rootScope,$http,AUTO_START_TOUR){var tourRef,tour={init:function(steps,onStart,onNextStep,onDismiss,onComplete){var tourSteps=[];angular.forEach(steps,function(step){step.template&&(step.template=$templateCache.get(step.template)),step.content||step.title||(step.content="."),tourSteps.push(step)}),tour.steps=tourSteps,tour.onStart=onStart,tour.onNextStep=onNextStep,tour.onDismiss=onDismiss,tour.onComplete=onComplete},steps:[],startTour:function(startingStep){startingStep=startingStep||0;var tourTemplate=$templateCache.get("template/popover/popover-bootstrap-tour.html"),wasHidden=tour.isHidden;tour.isHidden=!1,tourRef&&tourRef.ended&&!tourRef.ended()&&tourRef.end();var ngApply=function(fn){return function(){$rootScope.$$phase?fn():$rootScope.$apply(fn)}};tourRef=new Tour({steps:tour.steps.slice(startingStep),template:tourTemplate,container:"body",storage:!1,onNext:ngApply(function(){tour.currentStep+=1,tour.onNextStep&&tour.onNextStep()}),onPrev:ngApply(function(){tour.currentStep-=1}),onEnd:ngApply(function(){tour.isHidden||(tour.currentStep===tour.steps.length-1?tour.onComplete&&tour.onComplete():tour.onDismiss&&tour.onDismiss()),tour.currentStep=-1})}),tourRef.init(),tourRef.start(!0),tour.currentStep=startingStep,!wasHidden&&tour.onStart&&tour.onStart(),$rootScope.$on("$stateChangeStart",function(){tourRef&&tourRef.ended&&!tourRef.ended()&&(tour.endTour(!0),AUTO_START_TOUR.value=!1)})},currentStep:-1,isHidden:!1,shouldResume:function(val){return angular.isDefined(val)&&(tour.isHidden=val,tour.onNextStep&&tour.onNextStep()),tour.isHidden},goToNextStep:function(){tourRef.next()},endTour:function(){tourRef.end()}};return tour})}(angular.module("boomstrap"),window.Tour),angular.module("ui.bootstrap").run(["$templateCache",function($templateCache){$templateCache.put("template/pager/bt-pager.tpl.html",'<div class="btn-group minimal-pager">\n <button\n type="button"\n class="btn btn-default btn-icon"\n ng-class="{ \'disabled\': noPrevious() }"\n ng-click="selectPage(page - 1)"><i class="ficon ficon-chevron-left"></i></button>\n <button\n type="button"\n class="btn btn-default btn-icon"\n ng-class="{ \'disabled\': noNext() }"\n ng-click="selectPage(page + 1)"><i class="ficon ficon-chevron-right"></i></button>\n</div>')}]),angular.module("boomstrap").run(["$templateCache",function($templateCache){$templateCache.put("template/nav.html",'<nav class="navbar navbar-default navbar-fixed-top" role="navigation">\n <div class="container-fluid">\n <div class="navbar-header">\n <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#pl-nav">\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n <span class="icon-bar"></span>\n </button>\n <a class="navbar-brand" href="#">PL</a>\n </div>\n <div class="collapse navbar-collapse" id="pl-nav">\n <ul class="nav navbar-nav">\n <li class="active"><a href="#pl-colors">Colors</a></li>\n <li class="dropdown">\n <a href="#" class="dropdown-toggle" data-toggle="dropdown">Buttons <b class="caret"></b></a>\n <ul class="dropdown-menu">\n <li><a href="#pl-button-options">Options</a></li>\n <li><a href="#pl-button-sizes">Sizes</a></li>\n <li><a href="#pl-button-active">Active State</a></li>\n <li><a href="#pl-button-disabled">Disabled State</a></li>\n <li><a href="#pl-button-tags">Button Tags</a></li>\n </ul>\n </li>\n <li><a href="#pl-labels">Labels</a></li>\n <li><a href="#pl-typography">Typography</a></li>\n </ul>\n </div>\n </div>\n</nav>\n<div class="container">'),$templateCache.put("template/btLazyPen/btLazyPen.tpl.html",'<div class="bt-lazy-pen">\n <span class="btn btn-attention" ng-if="!showingPen.value" ng-click="showingPen.value = !showingPen.value">Load CodePen Example</span>\n <div ng-if="showingPen.value">\n <p data-height="{{ height }}" data-theme-id="{{ themeId }}" data-slug-hash="{{ slug }}" data-default-tab="result" class=\'codepen\'>See the Pen <a href=\'http://codepen.io/{{ user }}/pen/{{ slug }}/\'>{{ title }}</a> by {{ author }} (<a href=\'http://codepen.io/{{ user }}\'>@{{ userId }}</a>) on <a href=\'http://codepen.io\'>CodePen</a>.</p>\n <script async src="//codepen.io/assets/embed/ei.js"></script>\n </div>\n</div>'),$templateCache.put("template/btPager/bt-pager.tpl.html",'<pager\n template-url="template/pager/bt-pager.tpl.html"\n total-items="totalItems"\n items-per-page="itemsPerPage"\n ng-model="currentPage">\n</pager>'),$templateCache.put("template/carousel/carousel.html",'<div ng-mouseenter="pause()" ng-mouseleave="play()" class="carousel">\n <ol class="carousel-indicators" ng-show="slides.length > 1">\n <li ng-repeat="slide in slides" ng-class="{active: isActive(slide)}" ng-click="select(slide)"></li>\n </ol>\n <div class="carousel-inner" ng-transclude></div>\n <a class="left carousel-control" ng-click="prev()" ng-show="slides.length > 1"><i class="ficon ficon-chevron-left"></i></a>\n <a class="right carousel-control" ng-click="next()" ng-show="slides.length > 1"><i class="ficon ficon-chevron-right"></i></a>\n</div>'),$templateCache.put("template/dropdown/bt-dropdown.tpl.html",'<div class="dropdown">\n <button class="btn btn-default dropdown-toggle" type="button">\n <span class="pull-left" ng-bind="selectedValue"></span>\n <span class="caret"></span>\n </button>\n <ul class="dropdown-menu" role="menu" ng-style="{ \'min-width\': dropdownWidth + \'px\'}">\n <li ng-repeat="value in arrayValues" ng-if="keysAreNumbers">\n <a ng-click="assignValue(value.key)">{{ value.value }}</a>\n </li>\n <li ng-repeat="(choiceValue, choiceName) in values" ng-if="!keysAreNumbers">\n <a ng-click="assignValue(choiceValue)">{{choiceName}}</a>\n </li>\n </ul>\n</div>'),$templateCache.put("template/loader/bt-loader.tpl.html",'<div class="loader">\n <span class="loader-pulse"></span>\n <span class="loader-pulse"></span>\n <span class="loader-pulse"></span>\n</div>'),$templateCache.put("template/popover/popover-bootstrap-tour.html",'<div class="popover">\n <div class="arrow"></div>\n <div class="popover-close">\n <i class="ficon ficon-cross property-close" data-role="end"></i>\n </div>\n <h3 class="popover-title">Tour</h3>\n <div class="tour-popover popover-content"></div>\n <div class="popover-navigation">\n <button class="btn btn-sm btn-default" data-role="prev">Prev</button>\n <button class="btn btn-sm btn-primary" data-role="next"><span>Next</span></button>\n </div>\n</div>'),$templateCache.put("template/popover/template-popover.html",'<div class="popover {{placement}}" ng-class="{ in: isOpen(), fade: animation() }">\n <div class="arrow"></div>\n\n <div class="popover-close" ng-click="$popover.close($event)" aria-hidden="true"><i class="ficon ficon-cross"></i></div>\n\n <h3 class="popover-title" ng-bind="title" ng-show="title"></h3>\n\n <div class="popover-content" ng-include="content"></div>\n</div>'),$templateCache.put("template/property-card/bt-property-card-sm.tpl.html",'<div class="card card-sm">\n <!-- ///////////////////////////////////////////////// -->\n <!-- Optional: replace "card-photo" div with carousel -->\n <!-- ///////////////////////////////////////////////// -->\n <div class="card-photo">\n <div class="card-photo-inner">\n <div ng-if="property.newProperty" class="sash sash-new">New <span class="sash-time" am-time-ago="{{ property.newProperty }}"></span></div>\n <div ng-if="property.offMarket" class="sash sash-off">Off Market <span class="sash-time" am-time-ago="{{ property.offMarket }}"></span></div>\n <div ng-if="property.reduced" class="sash sash-reduced"><i class="ficon ficon-arrow-down"></i> {{ property.reduced.change }} ({{ property.reduced.changePercent }}) <span class="sash-time" am-time-ago="{{ property.reduced.when }}"></span></div>\n <div ng-if="property.backOnMarket" class="sash sash-back">Back <span class="sash-time" am-time-ago="{{ property.backOnMarket }}"></span></div>\n <img ng-if="property.imageSrc.length <= 1" bt-error-img="http://boomstatic.com/images/comingsoon-lg.jpg" class="card-img" ng-src="{{ property.imageSrc[0] }}" alt="{{ property.fullAddress }}">\n <carousel ng-if="property.imageSrc.length > 1">\n <slide ng-repeat="slide in property.imageSrc">\n <img ng-src="{{ slide }}" style="margin: auto">\n </slide>\n </carousel>\n </div>\n </div>\n <!-- ///////////////////////////////////////////////// -->\n <div class="card-sm-container">\n <div class="row row-xcondensed">\n <div class="col-xs-8">\n <p class="card-sm-priority card-sm-street">\n <a target="_blank" href="{{ property.listingUrl }}">{{ property.address.street }}</a>\n </p>\n <p class="xsmall">{{ property.address.city }}, {{ property.address.state }}</p>\n <p class="xsmall">{{ property.address.neighborhood }}</p>\n </div>\n <div class="col-xs-4 text-right">\n <p class="card-sm-priority card-sm-price">{{ property.listPrice }}</p>\n <p class="xsmall">{{ property.pricePerSqft }}/SQFT</p>\n </div>\n </div>\n </div>\n <div class="card-sm-stats">\n <span class="card-sm-stat">{{ property.beds }} BEDS</span>\n <span class="card-sm-stat">{{ property.baths }} BATHS</span>\n <span class="card-sm-stat">{{ property.sqft }} SQFT</span>\n <span class="card-sm-stat">{{ property.acres }} ACRES</span>\n </div>\n <div class="card-sm-container">\n <div class="row row-xcondensed">\n <div class="col-sm-6">\n <button type="button" class="btn btn-default btn-block btn-sm" ng-click="onClickBestFit($event)"><i class="ficon ficon-star"></i> {{ property.bestFits }} Best-Fit</button>\n </div>\n <div class="col-sm-6">\n <button type="button" class="btn btn-default btn-block btn-sm" ng-click="onClickFavs($event)"><i class="ficon ficon-heart"></i> {{ property.favs }} Favs</button>\n </div>\n </div>\n </div> <!-- /card-container -->\n</div>'), | ||
$templateCache.put("template/property-card/bt-property-card.tpl.html",'<div class="card" ng-class="{ \'card-sm\': size === \'sm\' }">\n <div ng-if="property.newProperty" class="sash sash-new">New <span class="sash-time" am-time-ago="{{ property.newProperty }}"></span></div>\n <div ng-if="property.offMarket" class="sash sash-off">Off Market <span class="sash-time" am-time-ago="{{ property.offMarket }}"></span></div>\n <div ng-if="property.reduced" class="sash sash-reduced"><i class="ficon ficon-arrow-down"></i> {{ property.reduced.change }} ({{ property.reduced.changePercent }}) <span class="sash-time" am-time-ago="{{ property.reduced.when }}">{{ property.reduced.when }}</span></div>\n <div ng-if="property.backOnMarket" class="sash sash-back">Back <span class="sash-time" am-time-ago="{{ property.backOnMarket }}">{{ property.backOnMarket }}</span></div>\n <div class="card-photo">\n <div class="card-photo-inner">\n <img ng-if="property.imageSrc.length <= 1" bt-error-img="http://boomstatic.com/images/comingsoon-lg.jpg" class="card-img" ng-src="{{ property.imageSrc[0] }}" alt="{{ property.fullAddress }}">\n <carousel ng-if="property.imageSrc.length > 1">\n <slide ng-repeat="slide in property.imageSrc">\n <img ng-src="{{ slide }}" style="margin: auto">\n </slide>\n </carousel>\n </div>\n </div>\n <div class="card-container">\n <div class="row row-xcondensed">\n <p class="card-priority card-price">{{ property.listPrice }}</p>\n <p class="card-priority card-street">\n <a target="_blank" href="{{ property.listingUrl }}">{{ property.address.street }}</a>\n </p>\n <div class="col-xs-7">\n <p class="small">{{ property.address.city }}, {{ property.address.state }}</p>\n <p class="small">{{ property.address.neighborhood }}</p>\n </div>\n <div class="col-xs-5 text-right">\n <p class="small">{{ property.pricePerSqft }}/SQFT</p>\n </div>\n </div>\n </div>\n <div class="card-stats">\n <span class="card-stat">{{ property.beds }} BEDS</span>\n <span class="card-stat">{{ property.baths }} BATHS</span>\n <span class="card-stat">{{ property.sqft }} SQFT</span>\n <span class="card-stat">{{ property.acres }} ACRES</span>\n </div>\n <div class="card-container">\n <div class="row row-xcondensed">\n <div class="col-sm-6">\n <button type="button" class="btn btn-default btn-block btn-sm" ng-click="onClickBestFit($event)"><i class="ficon ficon-star"></i> {{ property.bestFits }} Best-Fit</button>\n </div>\n <div class="col-sm-6">\n <button type="button" class="btn btn-default btn-block btn-sm" ng-click="onClickFavs($event)"><i class="ficon ficon-heart"></i> {{ property.favs }} Favs</button>\n </div>\n </div>\n </div> <!-- /card-container -->\n <div ng-if="!isSmall">\n <div class="card-toggle">\n <span ng-click="isExpanded = !isExpanded" ng-show="!isExpanded"><i class="ficon ficon-chevron-down"></i> More Detail</span>\n <span ng-click="isExpanded = !isExpanded" ng-show="isExpanded"><i class="ficon ficon-chevron-up"></i> Less Detail</span>\n </div>\n <div collapse="!isExpanded" class="card-detail">\n <div class="card-container">\n <div class="row row-xcondensed">\n <div class="col-xs-6">\n <p class="small"><strong>MLS#:</strong> <a target="_blank" href="">{{ property.mls }}</a></p>\n </div>\n <div class="col-xs-6 text-right">\n <p class="small"><strong>LISTED:</strong> {{ property.listed }}</p>\n </div>\n </div>\n <p class="small"><strong>TYPE:</strong> {{ property.type }}</p>\n </div> <!-- /card-container -->\n <p class="card-title">Price History</p>\n <div class="card-container card-price-history">\n <div ng-repeat="history in property.history" class="row row-xcondensed">\n <div class="col-xs-3">\n <p class="small">{{ history.when }}</p>\n </div>\n <div class="col-xs-5 col-xs-offset-1">\n <p class="small card-price-history-change"><i class="ficon ficon-arrow-down"></i> {{ history.change }} ({{ history.changePercent }})</p>\n </div>\n <div class="col-xs-3 text-right">\n <p class="small">{{ history.price }}</p>\n </div>\n </div>\n </div> <!-- /card-price-history -->\n <div class="card-container">\n <div class="row row-xcondensed">\n <div class="col-sm-6">\n <button class="btn btn-default btn-sm btn-block"><i class="ficon ficon-location"></i> Map View</button>\n </div>\n <div class="col-sm-6">\n <button class="btn btn-default btn-sm btn-block">Full Details <i class="ficon ficon-arrow-bend-right"></i> </button>\n </div>\n </div>\n </div> <!-- /card-container -->\n </div> <!-- /card-detail -->\n </div>\n</div>'),$templateCache.put("template/scrollbar/bt-scrollbar.tpl.html",'<div class="baron">\n <div class="baron-scroller" ng-transclude></div>\n <div class="baron-scroller-track">\n <div class="baron-scroller-bar"></div>\n </div>\n</div>\n'),$templateCache.put("template/select-range/range.tpl.html",'<div class="ui-select-range clearfix">\n <ui-select ng-model="minimum.value" on-select="selectRangeBoundary(boundaryEnum.MINIMUM, $item)">\n <ui-select-match class="{{ btnClass }}" placeholder="{{ minPlaceholder }}">{{ translateMinValue($select.selected, \'No min\') }}</ui-select-match>\n <ui-select-choices repeat="value in getValues($select.search) | filter: $select.search">\n <div>{{ translateMinValue(value, \'No min\') }}</div>\n </ui-select-choices>\n </ui-select>\n <ui-select ng-model="maximum.value" on-select="selectRangeBoundary(boundaryEnum.MAXIMUM, $item)">\n <ui-select-match class="{{ btnClass }}" placeholder="{{ maxPlaceholder }}">{{ translateMaxValue($select.selected, \'No max\') }}</ui-select-match>\n <ui-select-choices repeat="value in getValues($select.search) | filter: $select.search">\n <div>{{ translateMaxValue(value, \'No max\') }}</div>\n </ui-select-choices>\n </ui-select>\n</div>'),$templateCache.put("template/bootstrap/pager/bt-pager.tpl.html",'<div class="btn-group minimal-pager">\n <button\n type="button"\n class="btn btn-default btn-icon"\n ng-class="{ \'disabled\': noPrevious() }"\n ng-click="selectPage(page - 1)"><i class="ficon ficon-chevron-left"></i></button>\n <button\n type="button"\n class="btn btn-default btn-icon"\n ng-class="{ \'disabled\': noNext() }"\n ng-click="selectPage(page + 1)"><i class="ficon ficon-chevron-right"></i></button>\n</div>')}]); |
{ | ||
"name": "boomstrap", | ||
"version": "1.16.8", | ||
"version": "1.16.10", | ||
"devDependencies": { | ||
@@ -5,0 +5,0 @@ "boomsvgloader": "0.0.2", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
2562360
23199