/*! * AngularJS Material Design * https://github.com/angular/material * @license MIT * v1.1.18-master-97a1616 */ !function(n,a){"use strict";function t(t,e,i,n,s){this.$scope=t,this.$element=e,this.$mdConstant=i,this.$timeout=n,this.$mdUtil=s,this.isEditing=!1,this.parentController=void 0,this.enableChipEdit=!1}function e(p,t,e,h){return{restrict:"E",require:["^?mdChips","mdChip"],link:function(t,e,i,n){var s=n.shift(),o=n.shift(),r=a.element(e[0].querySelector(".md-chip-content"));p(e),s&&(o.init(s),r.on("blur",function(){s.resetSelectedChip(),s.$scope.$applyAsync()}));h(function(){s&&s.shouldFocusLastChip&&s.focusLastChipThenInput()})},controller:"MdChipCtrl"}}function i(s){return{restrict:"A",require:"^mdChips",scope:!1,link:function(e,t,i,n){t.on("click",function(t){e.$apply(function(){n.removeChip(e.$$replacedScope.$index)})}),s(function(){t.attr({tabindex:"-1","aria-hidden":"true"}),t.find("button").attr("tabindex","-1")})}}}function s(r){return{restrict:"EA",terminal:!0,link:function(t,e,i){var n=t.$parent.$mdChipsCtrl,s=n.parent.$new(!1,n.parent);s.$$replacedScope=t,s.$chip=t.$chip,s.$index=t.$index;var o=(s.$mdChipsCtrl=n).$scope.$eval(i.mdChipTransclude);e.html(o),r(e.contents())(s)},scope:!1}}a.module("material.components.chips",["material.core","material.components.autocomplete"]),t.$inject=["$scope","$element","$mdConstant","$timeout","$mdUtil"],a.module("material.components.chips").controller("MdChipCtrl",t),t.prototype.init=function(t){this.parentController=t,this.enableChipEdit=this.parentController.enableChipEdit,this.enableChipEdit&&(this.$element.on("keydown",this.chipKeyDown.bind(this)),this.$element.on("dblclick",this.chipMouseDoubleClick.bind(this)),this.getChipContent().addClass("_md-chip-content-edit-is-enabled"))},t.prototype.getChipContent=function(){var t=this.$element[0].getElementsByClassName("md-chip-content");return a.element(t[0])},t.prototype.getContentElement=function(){var t=a.element(this.getChipContent().children()[0]);return t&&0!==t.length||(t=a.element(this.getChipContent().contents()[0])),t},t.prototype.getChipIndex=function(){return parseInt(this.$element.attr("index"))},t.prototype.goOutOfEditMode=function(){if(this.isEditing){this.isEditing=!1,this.$element.removeClass("_md-chip-editing"),this.getChipContent()[0].contentEditable="false";var t=this.getChipIndex(),e=this.getContentElement().text();e?(this.parentController.updateChipContents(t,e),this.$mdUtil.nextTick(function(){this.parentController.selectedChip===t&&this.parentController.focusChip(t)}.bind(this))):this.parentController.removeChipAndFocusInput(t)}},t.prototype.selectNodeContents=function(t){var e,i;document.body.createTextRange?((e=document.body.createTextRange()).moveToElementText(t),e.select()):n.getSelection&&(i=n.getSelection(),(e=document.createRange()).selectNodeContents(t),i.removeAllRanges(),i.addRange(e))},t.prototype.goInEditMode=function(){this.isEditing=!0,this.$element.addClass("_md-chip-editing"),this.getChipContent()[0].contentEditable="true",this.getChipContent().on("blur",function(){this.goOutOfEditMode()}.bind(this)),this.selectNodeContents(this.getChipContent()[0])},t.prototype.chipKeyDown=function(t){this.isEditing||t.keyCode!==this.$mdConstant.KEY_CODE.ENTER&&t.keyCode!==this.$mdConstant.KEY_CODE.SPACE?this.isEditing&&t.keyCode===this.$mdConstant.KEY_CODE.ENTER&&(t.preventDefault(),this.goOutOfEditMode()):(t.preventDefault(),this.goInEditMode())},t.prototype.chipMouseDoubleClick=function(){this.enableChipEdit&&!this.isEditing&&this.goInEditMode()},e.$inject=["$mdTheming","$mdUtil","$compile","$timeout"],a.module("material.components.chips").directive("mdChip",e),i.$inject=["$timeout"],a.module("material.components.chips").directive("mdChipRemove",i),s.$inject=["$compile"],a.module("material.components.chips").directive("mdChipTransclude",s),o.$inject=["$scope","$attrs","$mdConstant","$log","$element","$timeout","$mdUtil","$mdLiveAnnouncer","$exceptionHandler"];var d=300;function o(t,e,i,n,s,o,r,p,h){this.$timeout=o,this.$mdConstant=i,this.$scope=t,this.parent=t.$parent,this.$mdUtil=r,this.$log=n,this.$mdLiveAnnouncer=p,this.$exceptionHandler=h,this.$element=s,this.$attrs=e,this.ngModelCtrl=null,this.userInputNgModelCtrl=null,this.autocompleteCtrl=null,this.userInputElement=null,this.items=[],this.selectedChip=-1,this.enableChipEdit=r.parseAttributeBoolean(e.mdEnableChipEdit),this.addOnBlur=r.parseAttributeBoolean(e.mdAddOnBlur),this.inputAriaLabel="Chips input.",this.containerHint="Chips container. Use arrow keys to select chips.",this.containerEmptyHint="Chips container. Enter the text area, then type text, and press enter to add a chip.",this.deleteHint="Press delete to remove this chip.",this.deleteButtonLabel="Remove",this.chipBuffer="",this.useTransformChip=!1,this.useOnAdd=!1,this.useOnRemove=!1,this.wrapperId="",this.contentIds=[],this.ariaTabIndex=null,this.chipAppendDelay=d,this.deRegister=[],this.addedMessage="added",this.removedMessage="removed",this.init()}a.module("material.components.chips").controller("MdChipsCtrl",o),o.prototype.init=function(){var e=this;this.wrapperId="_md-chips-wrapper-"+this.$mdUtil.nextUid(),this.$element.attr("ng-model")||this.setupStaticChips(),this.deRegister.push(this.$scope.$watchCollection("$mdChipsCtrl.items",function(){e.setupInputAria(),e.setupWrapperAria()})),this.deRegister.push(this.$attrs.$observe("mdChipAppendDelay",function(t){e.chipAppendDelay=parseInt(t)||d}))},o.prototype.$onDestroy=function(){for(var t;t=this.deRegister.pop();)t.call(this)},o.prototype.setupInputAria=function(){var t=this.$element.find("input");t&&(t.attr("role","textbox"),t.attr("aria-multiline",!0),this.inputAriaDescribedBy&&t.attr("aria-describedby",this.inputAriaDescribedBy),this.inputAriaLabelledBy?(t.attr("aria-labelledby",this.inputAriaLabelledBy),t.removeAttr("aria-label")):t.attr("aria-label",this.inputAriaLabel))},o.prototype.setupWrapperAria=function(){var t=this,e=this.$element.find("md-chips-wrap");this.items&&this.items.length?(e.attr("role","listbox"),this.contentIds=this.items.map(function(){return t.wrapperId+"-chip-"+t.$mdUtil.nextUid()}),e.attr("aria-owns",this.contentIds.join(" ")),e.attr("aria-label",this.containerHint)):(e.removeAttr("role"),e.removeAttr("aria-owns"),e.attr("aria-label",this.containerEmptyHint))},o.prototype.setupStaticChips=function(){var t,e,i=this,n=this.$element.find("md-chips-wrap");this.$timeout(function(){for(n.attr("role","list"),e=n[0].children,t=0;t=this.maxChips},o.prototype.validateModel=function(){this.ngModelCtrl.$setValidity("md-max-chips",!this.hasMaxChipsReached()),this.ngModelCtrl.$validate()},o.prototype.updateNgModel=function(t){t||this.validateModel(),a.forEach(this.ngModelCtrl.$viewChangeListeners,function(t){try{t()}catch(t){this.$exceptionHandler(t)}})},o.prototype.removeChip=function(t,e){var i=this.items.splice(t,1);this.updateNgModel(),this.ngModelCtrl.$setDirty();var n=a.isObject(i[0])?"":i[0];this.$mdLiveAnnouncer.announce(n+" "+this.removedMessage,"assertive"),i&&i.length&&this.useOnRemove&&this.onRemove&&this.onRemove({$chip:i[0],$index:t,$event:e})},o.prototype.removeChipAndFocusInput=function(t,e){this.removeChip(t,e),this.autocompleteCtrl?(this.autocompleteCtrl.hidden=!0,this.$mdUtil.nextTick(this.onFocus.bind(this))):this.onFocus()},o.prototype.selectAndFocusChipSafe=function(t){if(!this.items.length||-1===t)return this.focusInput();if(t>=this.items.length){if(!this.readonly)return this.onFocus();t=0}t=Math.max(t,0),t=Math.min(t,this.items.length-1),this.selectChip(t),this.focusChip(t)},o.prototype.focusLastChipThenInput=function(){var t=this;t.shouldFocusLastChip=!1,t.focusChip(this.items.length-1),t.$timeout(function(){t.focusInput()},t.chipAppendDelay)},o.prototype.focusInput=function(){this.selectChip(-1),this.onFocus()},o.prototype.selectChip=function(t){-1<=t&&t<=this.items.length?(this.selectedChip=t,this.useOnSelect&&this.onSelect&&this.onSelect({$chip:this.items[t]})):this.$log.warn("Selected Chip index out of bounds; ignoring.")},o.prototype.selectAndFocusChip=function(t){this.selectChip(t),-1!==t&&this.focusChip(t)},o.prototype.focusChip=function(t){var e=this.$element[0].querySelector('md-chip[index="'+t+'"] .md-chip-content');this.ariaTabIndex=t,e.focus()},o.prototype.configureNgModel=function(t){this.ngModelCtrl=t;var e=this;t.$isEmpty=function(t){return!t||0===t.length},t.$render=function(){e.items=e.ngModelCtrl.$viewValue}},o.prototype.onFocus=function(){var t=this.$element[0].querySelector("input");t&&t.focus(),this.resetSelectedChip()},o.prototype.onInputFocus=function(){this.inputHasFocus=!0,this.setupInputAria(),this.resetSelectedChip()},o.prototype.onInputBlur=function(){this.inputHasFocus=!1,this.shouldAddOnBlur()&&(this.appendChip(this.getChipBuffer().trim()),this.resetChipBuffer())},o.prototype.configureInput=function(t){var e=t.controller("ngModel"),i=this;e&&(this.deRegister.push(this.$scope.$watch(function(){return e.$touched},function(t){t&&i.ngModelCtrl.$setTouched()})),this.deRegister.push(this.$scope.$watch(function(){return e.$dirty},function(t){t&&i.ngModelCtrl.$setDirty()})))},o.prototype.configureUserInput=function(t){var e=(this.userInputElement=t).controller("ngModel");e!==this.ngModelCtrl&&(this.userInputNgModelCtrl=e);function i(t,e){n.$evalAsync(a.bind(s,e,t))}var n=this.$scope,s=this;t.attr({tabindex:0}).on("keydown",function(t){i(t,s.inputKeydown)}).on("focus",function(t){i(t,s.onInputFocus)}).on("blur",function(t){i(t,s.onInputBlur)})},o.prototype.configureAutocomplete=function(t){t&&(this.autocompleteCtrl=t,this.$element.attr("container-empty-hint")||(this.containerEmptyHint="Chips container with autocompletion. Enter the text area, type text to search, and then use the up and down arrow keys to select an option. Press enter to add the selected option as a chip.",this.setupWrapperAria()),t.registerSelectedItemWatcher(a.bind(this,function(t){if(t){if(this.hasMaxChipsReached())return;this.appendChip(t),this.resetChipBuffer()}})),this.$element.find("input").on("focus",a.bind(this,this.onInputFocus)).on("blur",a.bind(this,this.onInputBlur)))},o.prototype.shouldAddOnBlur=function(){this.validateModel();var t=this.getChipBuffer().trim(),e=this.ngModelCtrl.$isEmpty(this.ngModelCtrl.$modelValue)||this.ngModelCtrl.$valid,i=this.autocompleteCtrl&&!this.autocompleteCtrl.hidden;return this.userInputNgModelCtrl&&(e=e&&this.userInputNgModelCtrl.$valid),this.addOnBlur&&!this.requireMatch&&t&&e&&!i},o.prototype.hasFocus=function(){return this.inputHasFocus||0<=this.selectedChip},o.prototype.contentIdFor=function(t){return this.contentIds[t]},c.$inject=["$mdTheming","$mdUtil","$compile","$log","$timeout","$$mdSvgRegistry"],a.module("material.components.chips").directive("mdChips",c);var r='
',p=' ',h=" {{$chip}}",l=' ';function c(c,m,u,n,C,f){var $={chips:m.processTemplate(r),input:m.processTemplate(p),default:m.processTemplate(h),remove:m.processTemplate(l)};return{template:function(t,e){return e.$mdUserTemplate=t.clone(),$.chips},require:["mdChips"],restrict:"E",controller:"MdChipsCtrl",controllerAs:"$mdChipsCtrl",bindToController:!0,compile:function(t,r){var i=r.$mdUserTemplate;r.$mdUserTemplate=null;var p=e("md-chips>md-chip-template"),h=e(m.prefixer().buildList("md-chip-remove").map(function(t){return"md-chips>*["+t+"]"}).join(","))||$.remove,a=p||$.default,d=e("md-chips>md-autocomplete")||e("md-chips>input")||$.input,l=i.find("md-chip");i[0].querySelector("md-chip-template>*[md-chip-remove]")&&n.warn("invalid placement of md-chip-remove within md-chip-template.");function e(t){if(r.ngModel){var e=i[0].querySelector(t);return e&&e.outerHTML}}return function(t,e,i,n){m.initOptionalProperties(t,r),c(e);var s=n[0];if(p&&(s.enableChipEdit=!1),s.chipContentsTemplate=a,s.chipRemoveTemplate=h,s.chipInputTemplate=d,s.mdCloseIcon=f.mdClose,e.attr({tabindex:-1}).on("focus",function(){s.onFocus()}).on("click",function(){s.readonly||-1!==s.selectedChip||s.onFocus()}),r.ngModel&&(s.configureNgModel(e.controller("ngModel")),i.mdTransformChip&&s.useTransformChipExpression(),i.mdOnAppend&&s.useOnAppendExpression(),i.mdOnAdd&&s.useOnAddExpression(),i.mdOnRemove&&s.useOnRemoveExpression(),i.mdOnSelect&&s.useOnSelectExpression(),d!==$.input&&t.$watch("$mdChipsCtrl.readonly",function(t){t||m.nextTick(function(){if(0===d.indexOf("