source: trip-planner-front/node_modules/angular-material/modules/js/autocomplete/autocomplete.min.js@ 6a3a178

Last change on this file since 6a3a178 was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago

initial commit

  • Property mode set to 100644
File size: 21.1 KB
Line 
1/*!
2 * AngularJS Material Design
3 * https://github.com/angular/material
4 * @license MIT
5 * v1.2.2-master-0a06f99
6 */
7!function(e,se){"use strict";se.module("material.components.autocomplete",["material.core","material.components.icon","material.components.virtualRepeat"]),t.$inject=["$scope","$element","$mdUtil","$mdConstant","$mdTheming","$window","$animate","$rootElement","$attrs","$q","$log","$mdLiveAnnouncer"],se.module("material.components.autocomplete").controller("MdAutocompleteCtrl",t);var ue=48,me=5,pe=8,he=2,ge="standard",fe="virtual";function t(p,h,g,t,e,n,o,i,f,a,l,r){var c,d,s,u=this,m=p.itemsExpr.split(/ in /i),$=m[1],C=null,x={},b=!1,v=[],A=!1,M=0,w=null,T=null,y=g.debounce(function(){u.hidden||O()}),E=fe;u.documentElement=se.element(document.documentElement),c="hidden",d=function(e,t){var n;C&&(n=se.element(C.scrollContainer));!e&&t?(O(),oe(!0,L.Count|L.Selected),C&&(g.disableScrollAround(C.scrollContainer),w=function(e){var t=se.element(e);return t.on("wheel touchmove",B),function(){t.off("wheel touchmove",B)}}(C.wrap),g.isIos&&(u.documentElement.on("touchend",P),n&&n.on("touchstart touchmove touchend",N)),u.index=W(),g.nextTick(function(){S(),ie()}))):e&&!t&&(g.isIos&&(u.documentElement.off("touchend",P),n&&n.off("touchstart touchmove touchend",N)),g.enableScrolling(),w&&(w(),w=null))},s=!0,Object.defineProperty(u,c,{get:function(){return s},set:function(e){var t=s;d(s=e,t)}}),u.scope=p,u.parent=p.$parent,u.itemName=m[0],u.matches=[],u.loading=!1,u.hidden=!0,u.index=-1,u.activeOption=null,u.id=g.nextUid(),u.isDisabled=null,u.isRequired=null,u.isReadonly=null,u.hasNotFound=!1,u.selectedMessage=p.selectedMessage||"selected",u.noMatchMessage=p.noMatchMessage||"There are no matches available.",u.singleMatchMessage=p.singleMatchMessage||"There is 1 match available.",u.multipleMatchStartMessage=p.multipleMatchStartMessage||"There are ",u.multipleMatchEndMessage=p.multipleMatchEndMessage||" matches available.",u.defaultEscapeOptions="clear",u.keydown=function(e){switch(e.keyCode){case t.KEY_CODE.DOWN_ARROW:if(u.loading||Q())return;e.stopPropagation(),e.preventDefault(),u.index=u.index+1>u.matches.length-1?0:Math.min(u.index+1,u.matches.length-1),g.nextTick(S),ie();break;case t.KEY_CODE.UP_ARROW:if(u.loading||Q())return;e.stopPropagation(),e.preventDefault(),u.index=u.index-1<0?u.matches.length-1:Math.max(0,u.index-1),g.nextTick(S),ie();break;case t.KEY_CODE.TAB:if(F(),u.hidden||u.loading||u.index<0||u.matches.length<1)return;ee(u.index);break;case t.KEY_CODE.ENTER:if(u.hidden||u.loading||u.index<0||u.matches.length<1)return;if(Q())return;e.stopImmediatePropagation(),e.preventDefault(),ee(u.index);break;case t.KEY_CODE.ESCAPE:if(e.preventDefault(),!(G("blur")||!u.hidden||u.loading||G("clear")&&p.searchText))return;e.stopPropagation(),te(),p.searchText&&G("clear")&&ne(),u.hidden=!0,G("blur")&&H(!0)}},u.blur=function(e){A=!1,b?se.isObject(e)&&e.stopImmediatePropagation():(u.hidden=K(),de("ngBlur",{$event:e}))},u.focus=function(e){A=!0,Y()&&Z()&&re();u.hidden=K(),de("ngFocus",{$event:e})},u.clear=function(e){e&&e.stopPropagation();te(),ne()},u.select=ee,u.listEnter=function(){b=!0},u.listLeave=F,u.focusInput=R,u.getCurrentDisplayValue=X,u.registerSelectedItemWatcher=function(e){-1===v.indexOf(e)&&v.push(e)},u.unregisterSelectedItemWatcher=function(e){var t=v.indexOf(e);-1!==t&&v.splice(t,1)},u.notFoundVisible=ae,u.loadingIsVisible=function(){return u.loading&&!Q()},u.positionDropdown=O;var I,L={Count:1,Selected:2};return g.initOptionalProperties(p,f,{searchText:"",selectedItem:null,clearButton:!1,disableVirtualRepeat:!1}),e(h),I=parseInt(p.delay,10)||0,f.$observe("disabled",function(e){u.isDisabled=g.parseAttributeBoolean(e,!1)}),f.$observe("required",function(e){u.isRequired=g.parseAttributeBoolean(e,!1)}),f.$observe("readonly",function(e){u.isReadonly=g.parseAttributeBoolean(e,!1)}),p.$watch("searchText",I?g.debounce(V,I):V),p.$watch("selectedItem",q),se.element(n).on("resize",y),void p.$on("$destroy",k),void g.nextTick(function(){!function(){var e=function(){var e,t;for(e=h;e.length&&(t=e.attr("md-autocomplete-snap"),!se.isDefined(t));e=e.parent());if(e.length)return{snap:e[0],wrap:"width"===t.toLowerCase()?e[0]:h.find("md-autocomplete-wrap")[0]};var n=h.find("md-autocomplete-wrap")[0];return{snap:n,wrap:n}}();(C={main:h[0],scrollContainer:h[0].querySelector(".md-virtual-repeat-container, .md-standard-list-container"),scroller:h[0].querySelector(".md-virtual-repeat-scroller, .md-standard-list-scroller"),ul:h.find("ul")[0],input:h.find("input")[0],wrap:e.wrap,snap:e.snap,root:document.body}).li=C.ul.getElementsByTagName("li"),C.$=function(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[n]=se.element(e[n]));return t}(C),E=C.scrollContainer.classList.contains("md-standard-list-container")?ge:fe,T=C.$.input.controller("ngModel")}(),C.$.root.length&&(e(C.$.scrollContainer),C.$.scrollContainer.detach(),C.$.root.append(C.$.scrollContainer),o.pin&&o.pin(C.$.scrollContainer,i)),h.on("touchstart",R),p.autofocus&&h.on("focus",R),p.inputAriaDescribedBy&&C.input.setAttribute("aria-describedby",p.inputAriaDescribedBy),p.floatingLabel||(p.inputAriaLabel?C.input.setAttribute("aria-label",p.inputAriaLabel):p.inputAriaLabelledBy?C.input.setAttribute("aria-labelledby",p.inputAriaLabelledBy):p.placeholder&&C.input.setAttribute("aria-label",p.placeholder))});function D(){p.requireMatch&&T&&T.$setValidity("md-require-match",!!p.selectedItem||!p.searchText)}function O(){if(!C)return g.nextTick(O,!1,p);var e,t=(p.dropdownItems||me)*ue,n=C.wrap.getBoundingClientRect(),o=C.snap.getBoundingClientRect(),i=C.root.getBoundingClientRect(),l=o.bottom-i.top,a=i.bottom-o.top,r=n.left-i.left,c=n.width,d=function(){var e=0,t=h.find("md-input-container");if(t.length){var n=t.find("input");e=t.prop("offsetHeight"),e-=n.prop("offsetTop"),e-=n.prop("offsetHeight"),e+=t.prop("offsetTop")}return e}(),s=p.dropdownPosition,u=i.bottom-o.bottom-pe+g.getViewportTop(),m=o.top-pe;s=s||(t<u?"bottom":t<m?"top":u<m?"top":"bottom"),f.mdFloatingLabel&&(r+=he,c-=2*he),e={left:r+"px",minWidth:c+"px",maxWidth:Math.max(n.right-i.left,i.right-n.left)-pe+"px"},"top"===s?(e.top="auto",e.bottom=a+"px",e.maxHeight=Math.min(t,m)+"px"):(u=i.bottom-n.bottom-pe+g.getViewportTop(),e.top=l-d+"px",e.bottom="auto",e.maxHeight=Math.min(t,u)+"px"),C.$.scrollContainer.css(e),g.nextTick(function(){var e=C.scrollContainer.getBoundingClientRect(),t={};e.right>i.right&&(t.left=n.right-e.width+"px");C.$.scrollContainer.css(t)},!1,p)}function R(){C.input.focus()}function S(){var e=C.scroller.querySelector(".selected");u.activeOption=e?e.id:null}function k(){if(u.hidden||g.enableScrolling(),se.element(n).off("resize",y),C){se.forEach(["ul","scroller","scrollContainer","input"],function(e){C.$[e].remove()})}}function B(e){e.preventDefault()}function N(e){e.stopPropagation()}function P(e){H(u.hidden=!0)}function F(){A||u.hidden||C.input.focus(),b=!1,u.hidden=K()}function q(t,n){D(),t?z(t).then(function(e){p.searchText=e,function(t,n){v.forEach(function(e){e(t,n)})}(t,n)}):n&&p.searchText&&z(n).then(function(e){se.isString(p.searchText)&&e.toString().toLowerCase()===p.searchText.toLowerCase()&&(p.searchText="")}),t!==n&&se.isFunction(p.itemChange)&&p.itemChange(U(p.selectedItem))}function V(t,n){u.index=W(),t!==n&&(D(),z(p.selectedItem).then(function(e){t!==e&&(p.selectedItem=null,t!==n&&se.isFunction(p.textChange)&&p.textChange(),Z()?re():(_(!(u.matches=[])),oe(!0,L.Count)))}))}function H(e){e&&(A=b=!1),C.input.blur()}function j(){return se.isNumber(p.minLength)?p.minLength:1}function z(e){return a.when(((t=e)&&p.itemText?p.itemText(U(t)):null)||e).then(function(e){return e&&!se.isString(e)&&l.warn("md-autocomplete: Could not resolve display value to a string. Please check the `md-item-text` attribute."),e});var t}function U(e){if(e){var t={};return u.itemName&&(t[u.itemName]=e),t}}function W(){return p.autoselect?0:-1}function _(e){u.loading!==e&&(u.loading=e),u.hidden=K()}function K(){return!function(){{if(u.isReadonly)return!1;if(!Y())return!1}return Z()&&J()||ae()}()}function Y(){return!(u.loading&&!J())&&(!Q()&&!!A)}function G(e){return se.isString(p.escapeOptions)?-1!==p.escapeOptions.toLowerCase().indexOf(e):-1!==u.defaultEscapeOptions.indexOf(e)}function J(){return!!u.matches.length}function Q(){return!!u.scope.selectedItem}function X(){return z(u.matches[u.index])}function Z(){return(p.searchText||"").length>=j()}function ee(e){g.nextTick(function(){z(u.matches[e]).then(function(e){var t=C.$.input.controller("ngModel");r.announce(e+" "+u.selectedMessage,"assertive"),t.$setViewValue(e),t.$render()}).finally(function(){p.selectedItem=u.matches[e],_(!1)})},!1)}function te(){u.index=-1,g.nextTick(S),u.matches=[]}function ne(){_(!0),p.searchText="";var e=document.createEvent("CustomEvent");e.initCustomEvent("change",!0,!0,{value:""}),C.input.dispatchEvent(e),C.input.blur(),p.searchText="",C.input.focus()}function oe(e,t){var n=e?"polite":"assertive",o=[];t&L.Selected&&-1!==u.index&&o.push(X()),t&L.Count&&o.push(a.resolve(function(){switch(u.matches.length){case 0:return u.noMatchMessage;case 1:return u.singleMatchMessage;default:return u.multipleMatchStartMessage+u.matches.length+u.multipleMatchEndMessage}}())),a.all(o).then(function(e){r.announce(e.join(" "),n)})}function ie(){C.li[0]&&(E===ge?function(){var e=C.li[Math.max(0,u.index)],t=C.scrollContainer.offsetHeight,n=e&&e.offsetTop||0,o=n+e.clientHeight,i=C.scrollContainer.scrollTop;n<i?le(n):i+t<o&&le(o-t)}():function(){var e=C.li[0].offsetHeight,t=e*Math.max(0,u.index),n=t+e,o=C.scroller.clientHeight,i=C.scroller.scrollTop;t<i?le(t):i+o<n&&le(n-o)}())}function le(e){E===ge?C.scrollContainer.scrollTop=e:C.$.scrollContainer.controller("mdVirtualRepeatContainer").scrollTo(e)}function ae(){var e=(u.scope.searchText||"").length;return u.hasNotFound&&!J()&&(!u.loading||0!==M)&&e>=j()&&(A||b)&&!Q()}function re(){var e=p.searchText||"",t=e.toLowerCase();!p.noCache&&x[t]?ce(x[t]):function(t){var e=p.$parent.$eval($),n=t.toLowerCase(),o=se.isArray(e),i=!!e.then;function l(e){x[n]=e,(t||"")===(p.searchText||"")&&ce(e)}o?l(e):i&&function(e){if(!e)return;e=a.when(e),M++,_(!0),g.nextTick(function(){e.then(l).finally(function(){0==--M&&_(!1)})},!0,p)}(e)}(e),u.hidden=K()}function ce(e){u.matches=e,u.hidden=K(),u.loading&&_(!1),p.selectOnMatch&&function(){var n=p.searchText,e=u.matches,t=e[0];1===e.length&&z(t).then(function(e){var t=n===e;p.matchInsensitive&&!t&&(t=n.toLowerCase()===e.toLowerCase()),t&&ee(0)})}(),O(),oe(!0,L.Count)}function de(e,t){f[e]&&p.$parent.$eval(f[e],t||{})}}function n(d){var s="virtual",t=["standard",s];function u(e){return e?(e=e.toLowerCase(),-1<t.indexOf(e)?e:s):s}return{controller:"MdAutocompleteCtrl",controllerAs:"$mdAutocompleteCtrl",scope:{inputName:"@mdInputName",inputMinlength:"@mdInputMinlength",inputMaxlength:"@mdInputMaxlength",searchText:"=?mdSearchText",selectedItem:"=?mdSelectedItem",itemsExpr:"@mdItems",itemText:"&mdItemText",placeholder:"@placeholder",inputAriaDescribedBy:"@?inputAriaDescribedby",inputAriaLabelledBy:"@?inputAriaLabelledby",inputAriaLabel:"@?inputAriaLabel",noCache:"=?mdNoCache",requireMatch:"=?mdRequireMatch",selectOnMatch:"=?mdSelectOnMatch",matchInsensitive:"=?mdMatchCaseInsensitive",itemChange:"&?mdSelectedItemChange",textChange:"&?mdSearchTextChange",minLength:"=?mdMinLength",delay:"=?mdDelay",autofocus:"=?mdAutofocus",floatingLabel:"@?mdFloatingLabel",autoselect:"=?mdAutoselect",menuClass:"@?mdMenuClass",menuContainerClass:"@?mdMenuContainerClass",inputClass:"@?mdInputClass",inputId:"@?mdInputId",escapeOptions:"@?mdEscapeOptions",dropdownItems:"=?mdDropdownItems",dropdownPosition:"@?mdDropdownPosition",clearButton:"=?mdClearButton",selectedMessage:"@?mdSelectedMessage",noMatchMessage:"@?mdNoMatchMessage",singleMatchMessage:"@?mdSingleMatchMessage",multipleMatchStartMessage:"@?mdMultipleMatchStartMessage",multipleMatchEndMessage:"@?mdMultipleMatchEndMessage",mdMode:"=?mdMode"},compile:function(e,n){var o=e.find("input");return["md-select-on-focus","md-no-asterisk","ng-trim","ng-pattern"].forEach(function(e){var t=n[n.$normalize(e)];null!==t&&o.attr(e,t)}),function(e,t,n,o){o.hasNotFound=!!t.attr("md-has-not-found"),se.isDefined(n.mdClearButton)||e.floatingLabel||(e.clearButton=!0),e.mdMode=u(n.mdMode),t.on("click touchstart touchend",function(e){e.stopPropagation()})}},template:function(n,e){var t,o,i=(t=n.find("md-not-found").detach(),(o=t.length?t.html():"")?'<li ng-if="$mdAutocompleteCtrl.notFoundVisible()" class="md-autocomplete-suggestion" md-autocomplete-parent-scope>'+o+"</li>":""),l=function(){var e=n.find("md-item-template").detach(),t=e.length?e.html():n.html();e.length||n.empty();return"<md-autocomplete-parent-scope md-autocomplete-replace>"+t+"</md-autocomplete-parent-scope>"}(),a=n.html(),r=e.tabindex;return i&&n.attr("md-has-not-found",!0),n.attr("tabindex","-1")," <md-autocomplete-wrap ng-class=\"{ 'md-whiteframe-z1': !floatingLabel, 'md-menu-showing': !$mdAutocompleteCtrl.hidden, 'md-show-clear-button': !!clearButton }\"> "+(e.mdFloatingLabel?' <md-input-container ng-if="floatingLabel"> <label>{{floatingLabel}}</label> <input type="text" '+(null!=r?'tabindex="'+r+'"':"")+' id="{{inputId || \'fl-input-\' + $mdAutocompleteCtrl.id}}" name="{{inputName || \'fl-input-\' + $mdAutocompleteCtrl.id }}" ng-class="::inputClass" autocomplete="off" ng-required="$mdAutocompleteCtrl.isRequired" ng-readonly="$mdAutocompleteCtrl.isReadonly" ng-minlength="inputMinlength" ng-maxlength="inputMaxlength" ng-disabled="$mdAutocompleteCtrl.isDisabled" ng-model="$mdAutocompleteCtrl.scope.searchText" ng-model-options="{ allowInvalid: true }" ng-mousedown="$mdAutocompleteCtrl.focusInput()" ng-keydown="$mdAutocompleteCtrl.keydown($event)" ng-blur="$mdAutocompleteCtrl.blur($event)" ng-focus="$mdAutocompleteCtrl.focus($event)" aria-label="{{floatingLabel}}" ng-attr-aria-autocomplete="{{$mdAutocompleteCtrl.isDisabled ? undefined : \'list\'}}" ng-attr-role="{{$mdAutocompleteCtrl.isDisabled ? undefined : \'combobox\'}}" aria-haspopup="{{!$mdAutocompleteCtrl.isDisabled}}" aria-expanded="{{!$mdAutocompleteCtrl.hidden}}" ng-attr-aria-owns="{{$mdAutocompleteCtrl.hidden || $mdAutocompleteCtrl.isDisabled ? undefined : \'ul-\' + $mdAutocompleteCtrl.id}}" ng-attr-aria-activedescendant="{{!$mdAutocompleteCtrl.hidden && $mdAutocompleteCtrl.activeOption ? $mdAutocompleteCtrl.activeOption : undefined}}"> <div md-autocomplete-parent-scope md-autocomplete-replace>'+a+"</div> </md-input-container>":' <input type="text" '+(null!=r?'tabindex="'+r+'"':"")+' id="{{inputId || \'input-\' + $mdAutocompleteCtrl.id}}" name="{{inputName || \'input-\' + $mdAutocompleteCtrl.id }}" ng-class="::inputClass" ng-if="!floatingLabel" autocomplete="off" ng-required="$mdAutocompleteCtrl.isRequired" ng-disabled="$mdAutocompleteCtrl.isDisabled" ng-readonly="$mdAutocompleteCtrl.isReadonly" ng-minlength="inputMinlength" ng-maxlength="inputMaxlength" ng-model="$mdAutocompleteCtrl.scope.searchText" ng-mousedown="$mdAutocompleteCtrl.focusInput()" ng-keydown="$mdAutocompleteCtrl.keydown($event)" ng-blur="$mdAutocompleteCtrl.blur($event)" ng-focus="$mdAutocompleteCtrl.focus($event)" placeholder="{{placeholder}}" aria-label="{{placeholder}}" ng-attr-aria-autocomplete="{{$mdAutocompleteCtrl.isDisabled ? undefined : \'list\'}}" ng-attr-role="{{$mdAutocompleteCtrl.isDisabled ? undefined : \'combobox\'}}" aria-haspopup="{{!$mdAutocompleteCtrl.isDisabled}}" aria-expanded="{{!$mdAutocompleteCtrl.hidden}}" ng-attr-aria-owns="{{$mdAutocompleteCtrl.hidden || $mdAutocompleteCtrl.isDisabled ? undefined : \'ul-\' + $mdAutocompleteCtrl.id}}" ng-attr-aria-activedescendant="{{!$mdAutocompleteCtrl.hidden && $mdAutocompleteCtrl.activeOption ? $mdAutocompleteCtrl.activeOption : undefined}}">')+' <button type="button" aria-label="Clear Input" tabindex="0" ng-if="clearButton && $mdAutocompleteCtrl.scope.searchText" ng-click="$mdAutocompleteCtrl.clear($event)"><md-icon md-svg-src="'+d.mdClose+'"></md-icon></button> <md-progress-linear class="'+(e.mdFloatingLabel?"md-inline":"")+'" ng-if="$mdAutocompleteCtrl.loadingIsVisible()" md-mode="indeterminate"></md-progress-linear> '+function(e,t){if(e=e?" "+e:"",c(t))return' <div ng-hide="$mdAutocompleteCtrl.hidden" class="md-standard-list-container md-autocomplete-suggestions-container md-whiteframe-z1'+e+'" ng-class="{ \'md-not-found\': $mdAutocompleteCtrl.notFoundVisible() }" ng-mouseenter="$mdAutocompleteCtrl.listEnter()" ng-mouseleave="$mdAutocompleteCtrl.listLeave()" role="presentation"> <div class="md-standard-list-scroller" role="presentation">';return' <md-virtual-repeat-container md-auto-shrink md-auto-shrink-min="1" ng-hide="$mdAutocompleteCtrl.hidden" class="md-virtual-repeat-container md-autocomplete-suggestions-container md-whiteframe-z1'+e+'" ng-class="{ \'md-not-found\': $mdAutocompleteCtrl.notFoundVisible() }" ng-mouseenter="$mdAutocompleteCtrl.listEnter()" ng-mouseleave="$mdAutocompleteCtrl.listLeave()" role="presentation">'}(e.mdMenuContainerClass,e.mdMode)+' <ul class="md-autocomplete-suggestions" ng-class="::menuClass" id="ul-{{$mdAutocompleteCtrl.id}}" ng-mouseup="$mdAutocompleteCtrl.focusInput()" role="listbox"> <li class="md-autocomplete-suggestion" '+(c(e.mdMode)?"ng-repeat":"md-virtual-repeat")+' ="item in $mdAutocompleteCtrl.matches" ng-class="{ selected: $index === $mdAutocompleteCtrl.index }" ng-attr-id="{{\'md-option-\' + $mdAutocompleteCtrl.id + \'-\' + $index}}" ng-click="$mdAutocompleteCtrl.select($index)" role="option" aria-setsize="{{$mdAutocompleteCtrl.matches.length}}" aria-posinset="{{$index+1}}" aria-selected="{{$index === $mdAutocompleteCtrl.index ? true : false}}" md-extra-name="$mdAutocompleteCtrl.itemName"> '+l+" </li>"+i+" </ul> "+(c(e.mdMode)?" </div> </div> </div>":"</md-virtual-repeat-container>")+" </md-autocomplete-wrap>";function c(e){return u(e)!==s}}}}function o(e,s){return{restrict:"AE",compile:function(e,t,d){return function(n,t,e){var o,i,l=n.$mdAutocompleteCtrl,a=l.parent.$new(),r=l.itemName;function c(e,t){a[t]=n[e],n.$watch(e,function(e){s.nextTick(function(){a[t]=e})})}c("$index","$index"),c("item",r),i=o=!1,n.$watch(function(){i||o||(o=!0,n.$$postDigest(function(){i||a.$digest(),o=i=!1}))}),a.$watch(function(){i=!0}),d(a,function(e){t.after(e)})}},terminal:!0,transclude:"element"}}function i(e,t,n,o){this.$scope=e,this.$element=t,this.$attrs=n,this.$mdUtil=o,this.regex=null}function l(n,o){return{terminal:!0,controller:"MdHighlightCtrl",compile:function(e,t){var i=o(t.mdHighlightText),l=n(e.html());return function(e,t,n,o){o.init(i,l)}}}}n.$inject=["$$mdSvgRegistry"],se.module("material.components.autocomplete").directive("mdAutocomplete",n),o.$inject=["$compile","$mdUtil"],se.module("material.components.autocomplete").directive("mdAutocompleteParentScope",o),i.$inject=["$scope","$element","$attrs","$mdUtil"],se.module("material.components.autocomplete").controller("MdHighlightCtrl",i),i.prototype.init=function(t,n){this.flags=this.$attrs.mdHighlightFlags||"",this.unregisterFn=this.$scope.$watch(function(e){return{term:t(e),contentText:n(e)}}.bind(this),this.onRender.bind(this),!0),this.$element.on("$destroy",this.unregisterFn)},i.prototype.onRender=function(e,t){var n=e.contentText;null!==this.regex&&e.term===t.term||(this.regex=this.createRegex(e.term,this.flags)),e.term?this.applyRegex(n):this.$element.text(n)},i.prototype.applyRegex=function(e){var t=this.resolveTokens(e);this.$element.empty(),t.forEach(function(e){if(e.isMatch){var t=se.element('<span class="highlight">').text(e.text);this.$element.append(t)}else this.$element.append(document.createTextNode(e))}.bind(this))},i.prototype.resolveTokens=function(o){var i=[],n=0;return o.replace(this.regex,function(e,t){l(n,t),i.push({text:e,isMatch:!0}),n=t+e.length}),l(n),i;function l(e,t){var n=o.slice(e,t);n&&i.push(n)}},i.prototype.createRegex=function(e,t){var n="",o="",i=this.$mdUtil.sanitize(e);return 0<=t.indexOf("^")&&(n="^"),0<=t.indexOf("$")&&(o="$"),new RegExp(n+i+o,t.replace(/[$^]/g,""))},l.$inject=["$interpolate","$parse"],se.module("material.components.autocomplete").directive("mdHighlightText",l)}(window,window.angular);
Note: See TracBrowser for help on using the repository browser.