Commit a640ac95 authored by Wikiki's avatar Wikiki

Merge tag 'ES6Transpilation' into develop

Replace IIFE output by UMD
parents 9e676cf3 f5d2d7a1
var bulmaTagsinput = (function () {
'use strict';
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define('bulmaTagsinput', factory) :
(global.bulmaTagsinput = factory());
}(this, (function () { 'use strict';
if (typeof Object.assign != 'function') {
// Must be writable: true, enumerable: false, configurable: true
......@@ -363,4 +366,4 @@ document.addEventListener( 'DOMContentLoaded', function () {
return Tagify;
}());
})));
var bulmaTagsinput=function(){'use strict';'function'!=typeof Object.assign&&Object.defineProperty(Object,'assign',{value:function(a){if(null==a)throw new TypeError('Cannot convert undefined or null to object');for(var b,c=Object(a),d=1;d<arguments.length;d++)if(b=arguments[d],null!=b)for(var e in b)Object.prototype.hasOwnProperty.call(b,e)&&(c[e]=b[e]);return c},writable:!0,configurable:!0});const a=['click','touchstart'],b=188;class c{constructor(a,b={}){this.element=a,this.options=Object.assign({},{disabled:!1,delimiter:',',allowDelete:!0,lowercase:!1,uppercase:!1,duplicates:!0},b),this.init()}init(){if(!this.options.disabled){this.tags=[],this.container=document.createElement('div'),this.container.className='tagsinput',this.container.classList.add('field'),this.container.classList.add('is-grouped'),this.container.classList.add('is-grouped-multiline'),this.container.classList.add('input');let a=this.element.getAttribute('type');a&&'tags'!==a||(a='text'),this.input=document.createElement('input'),this.input.setAttribute('type',a),this.element.getAttribute('placeholder')?this.input.setAttribute('placeholder',this.element.getAttribute('placeholder')):this.input.setAttribute('placeholder','Add a Tag'),this.container.appendChild(this.input);let b=this.element.nextSibling;this.element.parentNode[b?'insertBefore':'appendChild'](this.container,b),this.element.style.cssText='position:absolute;left:0;top:0;width:1px;height:1px;opacity:0.01;',this.element.tabIndex=-1,this.enable()}}enable(){this.enabled||this.options.disabled||(this.element.addEventListener('focus',()=>{this.container.classList.add('is-focused'),this.select(Array.prototype.slice.call(this.container.querySelectorAll('.tag:not(.is-delete)')).pop())}),this.input.addEventListener('focus',()=>{this.container.classList.add('is-focused'),this.select(Array.prototype.slice.call(this.container.querySelectorAll('.tag:not(.is-delete)')).pop())}),this.input.addEventListener('blur',()=>{this.container.classList.remove('is-focused'),this.select(Array.prototype.slice.call(this.container.querySelectorAll('.tag:not(.is-delete)')).pop()),this.savePartial()}),this.input.addEventListener('keydown',(a)=>{let c,d=a.charCode||a.keyCode||a.which,e=this.container.querySelector('.tag.is-active'),f=Array.prototype.slice.call(this.container.querySelectorAll('.tag:not(.is-delete)')).pop(),g=this.caretAtStart(this.input);if(e&&(c=this.container.querySelector('[data-tag="'+e.innerHTML.trim()+'"]')),this.setInputWidth(),d===13||d===this.options.delimiter.charCodeAt(0)||d===b||d===9){if(!this.input.value&&(d!==this.options.delimiter.charCodeAt(0)||d===b))return;this.savePartial()}else if(d===46&&c)c.nextSibling?this.select(c.nextSibling.querySelector('.tag')):c.previousSibling&&this.select(c.previousSibling.querySelector('.tag')),this.container.removeChild(c),delete this.tags[this.tags.indexOf(c.getAttribute('data-tag'))],this.setInputWidth(),this.save();else if(d===8){if(c)c.previousSibling?this.select(c.previousSibling.querySelector('.tag')):c.nextSibling&&this.select(c.nextSibling.querySelector('.tag')),this.container.removeChild(c),delete this.tags[this.tags.indexOf(c.getAttribute('data-tag'))],this.setInputWidth(),this.save();else if(f&&g)this.select(f);else return;}else if(d===37){if(c)c.previousSibling&&this.select(c.previousSibling.querySelector('.tag'));else{if(!g)return;this.select(f)}}else if(d===39){if(!c)return;this.select(c.nextSibling.querySelector('.tag'))}else return this.select();return a.preventDefault(),!1}),this.input.addEventListener('input',()=>{this.element.value=this.getValue(),this.element.dispatchEvent(new Event('input'))}),this.input.addEventListener('paste',()=>setTimeout(savePartial,0)),this.container.addEventListener('mousedown',(a)=>{this.refocus(a)}),this.container.addEventListener('touchstart',(a)=>{this.refocus(a)}),this.savePartial(this.element.value),this.enabled=!0)}disable(){this.enabled&&!this.options.disabled&&(this.reset(),this.enabled=!1)}select(a){let b=this.container.querySelector('.is-active');b&&b.classList.remove('is-active'),a&&a.classList.add('is-active')}addTag(b){if(~b.indexOf(this.options.delimiter)&&(b=b.split(this.options.delimiter)),Array.isArray(b))return b.forEach((a)=>{this.addTag(a)});let c=b&&b.trim();if(!c)return!1;if((this.element.getAttribute('lowercase')||'true'==this.options.lowercase)&&(c=c.toLowerCase()),(this.element.getAttribute('uppercase')||'true'==this.options.uppercase)&&(c=c.toUpperCase()),'true'==this.element.getAttribute('duplicates')||this.options.duplicates||-1===this.tags.indexOf(c)){this.tags.push(c);let b=document.createElement('div');b.className='control',b.setAttribute('data-tag',c);let d=document.createElement('div');d.className='tags',d.classList.add('has-addons');let e=document.createElement('span');if(e.className='tag',e.classList.add('is-active'),this.select(e),e.innerHTML=c,d.appendChild(e),this.options.allowDelete){let b=document.createElement('a');b.className='tag',b.classList.add('is-delete'),a.forEach((a)=>{b.addEventListener(a,(a)=>{let b,c=a.target.parentNode,d=Array.prototype.slice.call(this.container.querySelectorAll('.tag')).pop(),e=this.caretAtStart(this.input);if(c&&(b=this.container.querySelector('[data-tag="'+c.innerText.trim()+'"]')),b)this.select(b.previousSibling),this.container.removeChild(b),delete this.tags[this.tags.indexOf(b.getAttribute('data-tag'))],this.setInputWidth(),this.save();else if(d&&e)this.select(d);else return})}),d.appendChild(b)}b.appendChild(d),this.container.insertBefore(b,this.input)}}getValue(){return this.tags.join(this.options.delimiter)}setValue(a){Array.prototype.slice.call(this.container.querySelectorAll('.tag')).forEach((a)=>{delete this.tags[this.tags.indexOf(a.innerHTML)],this.container.removeChild(a)}),this.savePartial(a)}setInputWidth(){let a=Array.prototype.slice.call(this.container.querySelectorAll('.control')).pop();this.container.offsetWidth&&(this.input.style.width=Math.max(this.container.offsetWidth-(a?a.offsetLeft+a.offsetWidth:30)-30,this.container.offsetWidth/4)+'px')}savePartial(a){'string'==typeof a||Array.isArray(a)||(a=this.input.value),!1!==this.addTag(a)&&(this.input.value='',this.save(),this.setInputWidth())}save(){this.element.value=this.tags.join(this.options.delimiter),this.element.dispatchEvent(new Event('change'))}caretAtStart(a){try{return 0===a.selectionStart&&0===a.selectionEnd}catch(b){return''===a.value}}refocus(a){return(a.target.classList.contains('tag')&&this.select(a.target),a.target===this.input)?this.select():(this.input.focus(),a.preventDefault(),!1)}reset(){this.tags=[]}destroy(){this.disable(),this.reset(),this.element=null}}return document.addEventListener('DOMContentLoaded',function(){let a=document.querySelectorAll('input[type="tags"]');[].forEach.call(a,function(a){new c(a)})}),c}();
//# sourceMappingURL=data:application/json;charset=utf8;base64,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RUFBQyxBQUFNLFNBQUssQUFBSSxLQUFDLEFBQUssQUFBRSxBQUN6QixPQUFPLEFBQUksS0FBQyxBQUFNLEFBQUUsQUFBQyxBQUN0QixVQUNILEFBQUksS0FBQyxBQUFLLE1BQUMsQUFBSyxBQUFFLEFBQUMsUUFDbkIsQUFBQyxFQUFDLEFBQWMsQUFBRSxBQUFDLEFBQ25CLEFBQU8sQUFBSyxBQUFDLG9CQUNaLENBRUQsQUFBSyxPQUFHLENBQ04sQUFBSSxLQUFDLEFBQUksS0FBRyxBQUFFLEFBQUMsRUFDaEIsQ0FFRCxBQUFPLFNBQUcsQ0FDUixBQUFJLEtBQUMsQUFBTyxBQUFFLEFBQUMsVUFDZixBQUFJLEtBQUMsQUFBSyxBQUFFLEFBQUMsUUFDYixBQUFJLEtBQUMsQUFBTyxRQUFHLEFBQUksQUFBQyxJQUNyQixBQUNGLFFBRUQsQUFBUSxVQUFDLEFBQWdCLGlCQUFFLEFBQWtCLG1CQUFFLFVBQVksQ0FDekQsR0FBSSxBQUFTLEdBQUcsQUFBUSxTQUFDLEFBQWdCLGlCQUFDLEFBQW9CLEFBQUMsQUFBQyxzQkFDaEUsQUFBRSxHQUFDLEFBQU8sUUFBQyxBQUFJLEFBQUMsQUFBUyxPQUFFLEFBQVMsQUFBUSxXQUFFLENBQzFDLEFBQUksQUFBTSxBQUFDLEFBQVEsQUFBQyxBQUFDLFFBQ3hCLEFBQUMsQUFBQyxFQUNKLEFBQUMsQUFBQyIsImZpbGUiOiJidWxtYS10YWdzaW5wdXQubWluLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaWYgKHR5cGVvZiBPYmplY3QuYXNzaWduICE9ICdmdW5jdGlvbicpIHtcbiAgLy8gTXVzdCBiZSB3cml0YWJsZTogdHJ1ZSwgZW51bWVyYWJsZTogZmFsc2UsIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoT2JqZWN0LCBcImFzc2lnblwiLCB7XG4gICAgdmFsdWU6IGZ1bmN0aW9uIGFzc2lnbih0YXJnZXQsIHZhckFyZ3MpIHsgLy8gLmxlbmd0aCBvZiBmdW5jdGlvbiBpcyAyXG4gICAgICAndXNlIHN0cmljdCc7XG4gICAgICBpZiAodGFyZ2V0ID09IG51bGwpIHsgLy8gVHlwZUVycm9yIGlmIHVuZGVmaW5lZCBvciBudWxsXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9iamVjdCcpO1xuICAgICAgfVxuXG4gICAgICB2YXIgdG8gPSBPYmplY3QodGFyZ2V0KTtcblxuICAgICAgZm9yICh2YXIgaW5kZXggPSAxOyBpbmRleCA8IGFyZ3VtZW50cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgdmFyIG5leHRTb3VyY2UgPSBhcmd1bWVudHNbaW5kZXhdO1xuXG4gICAgICAgIGlmIChuZXh0U291cmNlICE9IG51bGwpIHsgLy8gU2tpcCBvdmVyIGlmIHVuZGVmaW5lZCBvciBudWxsXG4gICAgICAgICAgZm9yICh2YXIgbmV4dEtleSBpbiBuZXh0U291cmNlKSB7XG4gICAgICAgICAgICAvLyBBdm9pZCBidWdzIHdoZW4gaGFzT3duUHJvcGVydHkgaXMgc2hhZG93ZWRcbiAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobmV4dFNvdXJjZSwgbmV4dEtleSkpIHtcbiAgICAgICAgICAgICAgdG9bbmV4dEtleV0gPSBuZXh0U291cmNlW25leHRLZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRvO1xuICAgIH0sXG4gICAgd3JpdGFibGU6IHRydWUsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pO1xufVxuXG5jb25zdCBNT1VTRV9FVkVOVFMgPSBbJ2NsaWNrJywgJ3RvdWNoc3RhcnQnXTtcblxuY29uc3QgS0VZX0JBQ0tTUEFDRSA9IDgsXG4gIEtFWV9UQUIgPSA5LFxuICBLRVlfRU5URVIgPSAxMyxcbiAgS0VZX0xFRlQgPSAzNyxcbiAgS0VZX1JJR0hUID0gMzksXG4gIEtFWV9ERUxFVEUgPSA0NixcbiAgS0VZX0NPTU1BID0gMTg4O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUYWdpZnkge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBvcHRpb25zID0ge30pIHtcbiAgICBsZXQgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgICBkZWxpbWl0ZXI6ICcsJyxcbiAgICAgIGFsbG93RGVsZXRlOiB0cnVlLFxuICAgICAgbG93ZXJjYXNlOiBmYWxzZSxcbiAgICAgIHVwcGVyY2FzZTogZmFsc2UsXG4gICAgICBkdXBsaWNhdGVzOiB0cnVlXG4gICAgfVxuICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgdGhpcy5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdE9wdGlvbnMsIG9wdGlvbnMpO1xuXG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBpbml0KCkge1xuICAgIGlmICghdGhpcy5vcHRpb25zLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnRhZ3MgPSBbXTtcbiAgICAgIC8vIFRoZSBjb250YWluZXIgd2lsbCB2aXN1YWxseSBsb29rcyBsaWtlIGFuIGlucHV0XG4gICAgICB0aGlzLmNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgdGhpcy5jb250YWluZXIuY2xhc3NOYW1lID0gJ3RhZ3NpbnB1dCc7XG4gICAgICB0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdmaWVsZCcpO1xuICAgICAgdGhpcy5jb250YWluZXIuY2xhc3NMaXN0LmFkZCgnaXMtZ3JvdXBlZCcpO1xuICAgICAgdGhpcy5jb250YWluZXIuY2xhc3NMaXN0LmFkZCgnaXMtZ3JvdXBlZC1tdWx0aWxpbmUnKTtcbiAgICAgIHRoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ2lucHV0Jyk7XG5cbiAgICAgIGxldCBpbnB1dFR5cGUgPSB0aGlzLmVsZW1lbnQuZ2V0QXR0cmlidXRlKCd0eXBlJyk7XG4gICAgXHRpZiAoIWlucHV0VHlwZSB8fCBpbnB1dFR5cGUgPT09ICd0YWdzJykge1xuICAgIFx0XHRpbnB1dFR5cGUgPSAndGV4dCc7XG4gICAgICB9XG4gICAgICAvLyBDcmVhdGUgYW4gaW52aXNpYmxlIGlucHV0IGVsZW1lbnQgc28gdXNlciB3aWxsIGJlIGFibGUgdG8gZW50ZXIgdmFsdWVcbiAgICAgIHRoaXMuaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgdGhpcy5pbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCBpbnB1dFR5cGUpO1xuICAgICAgaWYgKHRoaXMuZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJykpIHtcbiAgICAgICAgdGhpcy5pbnB1dC5zZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJywgdGhpcy5lbGVtZW50LmdldEF0dHJpYnV0ZSgncGxhY2Vob2xkZXInKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlucHV0LnNldEF0dHJpYnV0ZSgncGxhY2Vob2xkZXInLCAnQWRkIGEgVGFnJyk7XG4gICAgICB9XG4gICAgICB0aGlzLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLmlucHV0KTtcblxuICAgICAgbGV0IHNpYiA9IHRoaXMuZWxlbWVudC5uZXh0U2libGluZztcbiAgICAgIHRoaXMuZWxlbWVudC5wYXJlbnROb2RlW3NpYiA/ICdpbnNlcnRCZWZvcmUnOidhcHBlbmRDaGlsZCddKHRoaXMuY29udGFpbmVyLCBzaWIpO1xuICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmNzc1RleHQgPSAncG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowO3dpZHRoOjFweDtoZWlnaHQ6MXB4O29wYWNpdHk6MC4wMTsnO1xuICAgICAgdGhpcy5lbGVtZW50LnRhYkluZGV4ID0gLTE7XG5cbiAgICAgIHRoaXMuZW5hYmxlKCk7XG4gICAgfVxuICB9XG5cbiAgZW5hYmxlKCkge1xuICAgIGlmICghdGhpcy5lbmFibGVkICYmICF0aGlzLm9wdGlvbnMuZGlzYWJsZWQpIHtcblxuICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgICAgICB0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdpcy1mb2N1c2VkJyk7XG4gICAgICAgIHRoaXMuc2VsZWN0KChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCcudGFnOm5vdCguaXMtZGVsZXRlKScpKSkucG9wKCkpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoKSA9PiB7XG4gICAgXHRcdHRoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ2lzLWZvY3VzZWQnKTtcbiAgICBcdFx0dGhpcy5zZWxlY3QoKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy50YWc6bm90KC5pcy1kZWxldGUpJykpKS5wb3AoKSk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsICgpID0+IHtcbiAgICBcdFx0dGhpcy5jb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgnaXMtZm9jdXNlZCcpO1xuICAgIFx0XHR0aGlzLnNlbGVjdCgoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgnLnRhZzpub3QoLmlzLWRlbGV0ZSknKSkpLnBvcCgpKTtcbiAgICBcdFx0dGhpcy5zYXZlUGFydGlhbCgpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZSkgPT4ge1xuICAgICAgICBsZXQga2V5ID0gZS5jaGFyQ29kZSB8fCBlLmtleUNvZGUgfHwgZS53aGljaCxcbiAgICAgICAgICBzZWxlY3RlZFRhZyxcbiAgICAgICAgICBhY3RpdmVUYWcgPSB0aGlzLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcudGFnLmlzLWFjdGl2ZScpLFxuICAgICAgICAgIGxhc3QgPSAoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgnLnRhZzpub3QoLmlzLWRlbGV0ZSknKSkpLnBvcCgpLFxuICAgICAgICAgIGF0U3RhcnQgPSB0aGlzLmNhcmV0QXRTdGFydCh0aGlzLmlucHV0KTtcblxuICAgICAgICBpZiAoYWN0aXZlVGFnKSB7XG4gICAgICAgICAgc2VsZWN0ZWRUYWcgPSB0aGlzLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdbZGF0YS10YWc9XCInICsgYWN0aXZlVGFnLmlubmVySFRNTC50cmltKCkgKyAnXCJdJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRJbnB1dFdpZHRoKCk7XG5cbiAgICAgICAgaWYgKGtleSA9PT0gS0VZX0VOVEVSIHx8IGtleSA9PT0gdGhpcy5vcHRpb25zLmRlbGltaXRlci5jaGFyQ29kZUF0KDApIHx8IGtleSA9PT0gS0VZX0NPTU1BIHx8IGtleSA9PT0gS0VZX1RBQikge1xuICAgICAgICAgIGlmICghdGhpcy5pbnB1dC52YWx1ZSAmJiAoa2V5ICE9PSB0aGlzLm9wdGlvbnMuZGVsaW1pdGVyLmNoYXJDb2RlQXQoMCkgfHwga2V5ID09PSBLRVlfQ09NTUEpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2F2ZVBhcnRpYWwoKTtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09IEtFWV9ERUxFVEUgJiYgc2VsZWN0ZWRUYWcpIHtcbiAgICBcdFx0XHRpZiAoc2VsZWN0ZWRUYWcubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0KHNlbGVjdGVkVGFnLm5leHRTaWJsaW5nLnF1ZXJ5U2VsZWN0b3IoJy50YWcnKSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RlZFRhZy5wcmV2aW91c1NpYmxpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0KHNlbGVjdGVkVGFnLnByZXZpb3VzU2libGluZy5xdWVyeVNlbGVjdG9yKCcudGFnJykpO1xuICAgICAgICAgIH1cbiAgICBcdFx0XHR0aGlzLmNvbnRhaW5lci5yZW1vdmVDaGlsZChzZWxlY3RlZFRhZyk7XG4gICAgICAgICAgZGVsZXRlIHRoaXMudGFnc1t0aGlzLnRhZ3MuaW5kZXhPZihzZWxlY3RlZFRhZy5nZXRBdHRyaWJ1dGUoJ2RhdGEtdGFnJykpXTtcbiAgICBcdFx0XHR0aGlzLnNldElucHV0V2lkdGgoKTtcbiAgICBcdFx0XHR0aGlzLnNhdmUoKTtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09IEtFWV9CQUNLU1BBQ0UpIHtcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRUYWcpIHtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZFRhZy5wcmV2aW91c1NpYmxpbmcpIHtcbiAgICBcdFx0XHRcdCAgdGhpcy5zZWxlY3Qoc2VsZWN0ZWRUYWcucHJldmlvdXNTaWJsaW5nLnF1ZXJ5U2VsZWN0b3IoJy50YWcnKSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGVkVGFnLm5leHRTaWJsaW5nKSB7XG4gICAgXHRcdFx0XHQgIHRoaXMuc2VsZWN0KHNlbGVjdGVkVGFnLm5leHRTaWJsaW5nLnF1ZXJ5U2VsZWN0b3IoJy50YWcnKSk7XG4gICAgICAgICAgICB9XG4gICAgXHRcdFx0XHR0aGlzLmNvbnRhaW5lci5yZW1vdmVDaGlsZChzZWxlY3RlZFRhZyk7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy50YWdzW3RoaXMudGFncy5pbmRleE9mKHNlbGVjdGVkVGFnLmdldEF0dHJpYnV0ZSgnZGF0YS10YWcnKSldO1xuICAgIFx0XHRcdFx0dGhpcy5zZXRJbnB1dFdpZHRoKCk7XG4gICAgXHRcdFx0XHR0aGlzLnNhdmUoKTtcbiAgICBcdFx0XHR9IGVsc2UgaWYgKGxhc3QgJiYgYXRTdGFydCkge1xuICAgIFx0XHRcdFx0dGhpcy5zZWxlY3QobGFzdCk7XG4gICAgXHRcdFx0fSBlbHNlIHtcbiAgICBcdFx0XHRcdHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSBLRVlfTEVGVCkge1xuICAgIFx0XHRcdGlmIChzZWxlY3RlZFRhZykge1xuICAgIFx0XHRcdFx0aWYgKHNlbGVjdGVkVGFnLnByZXZpb3VzU2libGluZykge1xuICAgIFx0XHRcdFx0XHR0aGlzLnNlbGVjdChzZWxlY3RlZFRhZy5wcmV2aW91c1NpYmxpbmcucXVlcnlTZWxlY3RvcignLnRhZycpKTtcbiAgICBcdFx0XHRcdH1cbiAgICBcdFx0XHR9IGVsc2UgaWYgKCFhdFN0YXJ0KSB7XG4gICAgXHRcdFx0XHRyZXR1cm47XG4gICAgXHRcdFx0fSBlbHNlIHtcbiAgICBcdFx0XHRcdHRoaXMuc2VsZWN0KGxhc3QpO1xuICAgIFx0XHRcdH1cbiAgICBcdFx0fVxuICAgIFx0XHRlbHNlIGlmIChrZXkgPT09IEtFWV9SSUdIVCkge1xuICAgIFx0XHRcdGlmICghc2VsZWN0ZWRUYWcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgXHRcdFx0dGhpcy5zZWxlY3Qoc2VsZWN0ZWRUYWcubmV4dFNpYmxpbmcucXVlcnlTZWxlY3RvcignLnRhZycpKTtcbiAgICBcdFx0fVxuICAgIFx0XHRlbHNlIHtcbiAgICBcdFx0XHRyZXR1cm4gdGhpcy5zZWxlY3QoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xuICAgICAgICB0aGlzLmVsZW1lbnQudmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIHRoaXMuZWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnKSk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigncGFzdGUnLCAoKSA9PiBzZXRUaW1lb3V0KHNhdmVQYXJ0aWFsLCAwKSk7XG5cbiAgICAgIHRoaXMuY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIChlKSA9PiB7IHRoaXMucmVmb2N1cyhlKTsgfSk7XG4gICAgICB0aGlzLmNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgKGUpID0+IHsgdGhpcy5yZWZvY3VzKGUpOyB9KTtcblxuICAgICAgdGhpcy5zYXZlUGFydGlhbCh0aGlzLmVsZW1lbnQudmFsdWUpO1xuXG4gICAgICB0aGlzLmVuYWJsZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGRpc2FibGUoKSB7XG4gICAgaWYgKHRoaXMuZW5hYmxlZCAmJiAhdGhpcy5vcHRpb25zLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnJlc2V0KCk7XG5cbiAgICAgIHRoaXMuZW5hYmxlZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdChlbCkge1xuXHRcdGxldCBzZWwgPSB0aGlzLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcuaXMtYWN0aXZlJyk7XG5cdFx0aWYgKHNlbCkge1xuICAgICAgc2VsLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWFjdGl2ZScpO1xuICAgIH1cblx0XHRpZiAoZWwpIHtcbiAgICAgIGVsLmNsYXNzTGlzdC5hZGQoJ2lzLWFjdGl2ZScpO1xuICAgIH1cbiAgfVxuXG4gIGFkZFRhZyh0ZXh0KSB7XG4gICAgaWYgKH50ZXh0LmluZGV4T2YodGhpcy5vcHRpb25zLmRlbGltaXRlcikpIHtcbiAgICAgIHRleHQgPSB0ZXh0LnNwbGl0KHRoaXMub3B0aW9ucy5kZWxpbWl0ZXIpO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0ZXh0KSkge1xuICAgICAgcmV0dXJuIHRleHQuZm9yRWFjaCgodGV4dCkgPT4ge1xuICAgICAgICB0aGlzLmFkZFRhZyh0ZXh0KVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgbGV0IHRhZyA9IHRleHQgJiYgdGV4dC50cmltKCk7XG4gICAgaWYgKCF0YWcpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5lbGVtZW50LmdldEF0dHJpYnV0ZSgnbG93ZXJjYXNlJykgfHwgdGhpcy5vcHRpb25zWydsb3dlcmNhc2UnXSA9PSAndHJ1ZScpIHtcbiAgICAgIHRhZyA9IHRhZy50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5lbGVtZW50LmdldEF0dHJpYnV0ZSgndXBwZXJjYXNlJykgfHwgdGhpcy5vcHRpb25zWyd1cHBlcmNhc2UnXSA9PSAndHJ1ZScpIHtcbiAgICAgIHRhZyA9IHRhZy50b1VwcGVyQ2FzZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5lbGVtZW50LmdldEF0dHJpYnV0ZSgnZHVwbGljYXRlcycpID09ICd0cnVlJyB8fCB0aGlzLm9wdGlvbnNbJ2R1cGxpY2F0ZXMnXSB8fCB0aGlzLnRhZ3MuaW5kZXhPZih0YWcpID09PSAtMSkge1xuICAgICAgdGhpcy50YWdzLnB1c2godGFnKTtcblxuICAgICAgbGV0IG5ld1RhZ1dyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIG5ld1RhZ1dyYXBwZXIuY2xhc3NOYW1lID0gJ2NvbnRyb2wnO1xuICAgICAgbmV3VGFnV3JhcHBlci5zZXRBdHRyaWJ1dGUoJ2RhdGEtdGFnJywgdGFnKTtcblxuICAgICAgbGV0IG5ld1RhZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgbmV3VGFnLmNsYXNzTmFtZSA9ICd0YWdzJztcbiAgICAgIG5ld1RhZy5jbGFzc0xpc3QuYWRkKCdoYXMtYWRkb25zJyk7XG5cbiAgICAgIGxldCBuZXdUYWdDb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgbmV3VGFnQ29udGVudC5jbGFzc05hbWUgPSAndGFnJztcbiAgICAgIG5ld1RhZ0NvbnRlbnQuY2xhc3NMaXN0LmFkZCgnaXMtYWN0aXZlJyk7XG4gICAgICB0aGlzLnNlbGVjdChuZXdUYWdDb250ZW50KTtcbiAgICAgIG5ld1RhZ0NvbnRlbnQuaW5uZXJIVE1MID0gdGFnO1xuXG4gICAgICBuZXdUYWcuYXBwZW5kQ2hpbGQobmV3VGFnQ29udGVudCk7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmFsbG93RGVsZXRlKSB7XG4gICAgICAgIGxldCBuZXdUYWdEZWxldGVCdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgIG5ld1RhZ0RlbGV0ZUJ1dHRvbi5jbGFzc05hbWUgPSAndGFnJztcbiAgICAgICAgbmV3VGFnRGVsZXRlQnV0dG9uLmNsYXNzTGlzdC5hZGQoJ2lzLWRlbGV0ZScpO1xuICAgICAgICBNT1VTRV9FVkVOVFMuZm9yRWFjaCgoZXZlbnQpID0+IHtcbiAgICAgICAgICBuZXdUYWdEZWxldGVCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgKGUpID0+IHtcbiAgICAgICAgICBsZXQgc2VsZWN0ZWRUYWcsXG4gICAgICAgICAgICBhY3RpdmVUYWcgPSBlLnRhcmdldC5wYXJlbnROb2RlLFxuICAgICAgICAgICAgbGFzdCA9IChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCcudGFnJykpKS5wb3AoKSxcbiAgICAgICAgICAgIGF0U3RhcnQgPSB0aGlzLmNhcmV0QXRTdGFydCh0aGlzLmlucHV0KTtcblxuICAgICAgICAgIGlmIChhY3RpdmVUYWcpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkVGFnID0gdGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvcignW2RhdGEtdGFnPVwiJyArIGFjdGl2ZVRhZy5pbm5lclRleHQudHJpbSgpICsgJ1wiXScpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzZWxlY3RlZFRhZykge1xuICAgIFx0XHRcdFx0dGhpcy5zZWxlY3Qoc2VsZWN0ZWRUYWcucHJldmlvdXNTaWJsaW5nKTtcbiAgICBcdFx0XHRcdHRoaXMuY29udGFpbmVyLnJlbW92ZUNoaWxkKHNlbGVjdGVkVGFnKTtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnRhZ3NbdGhpcy50YWdzLmluZGV4T2Yoc2VsZWN0ZWRUYWcuZ2V0QXR0cmlidXRlKCdkYXRhLXRhZycpKV07XG4gICAgXHRcdFx0XHR0aGlzLnNldElucHV0V2lkdGgoKTtcbiAgICBcdFx0XHRcdHRoaXMuc2F2ZSgpO1xuICAgIFx0XHRcdH1cbiAgICBcdFx0XHRlbHNlIGlmIChsYXN0ICYmIGF0U3RhcnQpIHtcbiAgICBcdFx0XHRcdHRoaXMuc2VsZWN0KGxhc3QpO1xuICAgIFx0XHRcdH1cbiAgICBcdFx0XHRlbHNlIHtcbiAgICBcdFx0XHRcdHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICAgIG5ld1RhZy5hcHBlbmRDaGlsZChuZXdUYWdEZWxldGVCdXR0b24pO1xuICAgICAgfVxuICAgICAgbmV3VGFnV3JhcHBlci5hcHBlbmRDaGlsZChuZXdUYWcpO1xuXG4gICAgICB0aGlzLmNvbnRhaW5lci5pbnNlcnRCZWZvcmUobmV3VGFnV3JhcHBlciwgdGhpcy5pbnB1dCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0VmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMudGFncy5qb2luKHRoaXMub3B0aW9ucy5kZWxpbWl0ZXIpO1xuICB9XG5cbiAgc2V0VmFsdWUodmFsdWUpIHtcbiAgICAoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgnLnRhZycpKSkuZm9yRWFjaCgodGFnKSA9PiB7XG4gICAgICBkZWxldGUgdGhpcy50YWdzW3RoaXMudGFncy5pbmRleE9mKHRhZy5pbm5lckhUTUwpXTtcbiAgICAgIHRoaXMuY29udGFpbmVyLnJlbW92ZUNoaWxkKHRhZyk7XG4gICAgfSk7XG4gICAgdGhpcy5zYXZlUGFydGlhbCh2YWx1ZSk7XG4gIH1cblxuICBzZXRJbnB1dFdpZHRoKCkge1xuICAgIGxldCBsYXN0ID0gKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jb250cm9sJykpKS5wb3AoKTtcblxuICAgIGlmICghdGhpcy5jb250YWluZXIub2Zmc2V0V2lkdGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pbnB1dC5zdHlsZS53aWR0aCA9IE1hdGgubWF4KHRoaXMuY29udGFpbmVyLm9mZnNldFdpZHRoIC0gKGxhc3QgPyAobGFzdC5vZmZzZXRMZWZ0ICsgbGFzdC5vZmZzZXRXaWR0aCkgOiAzMCkgLSAzMCwgdGhpcy5jb250YWluZXIub2Zmc2V0V2lkdGggLyA0KSArICdweCc7XG4gIH1cblxuICBzYXZlUGFydGlhbCh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgdmFsdWUgPSB0aGlzLmlucHV0LnZhbHVlO1xuICAgIH1cbiAgICBpZiAodGhpcy5hZGRUYWcodmFsdWUpICE9PSBmYWxzZSkge1xuXHRcdFx0dGhpcy5pbnB1dC52YWx1ZSA9ICcnO1xuXHRcdFx0dGhpcy5zYXZlKCk7XG5cdFx0XHR0aGlzLnNldElucHV0V2lkdGgoKTtcbiAgICB9XG4gIH1cblxuICBzYXZlKCkge1xuICAgIHRoaXMuZWxlbWVudC52YWx1ZSA9IHRoaXMudGFncy5qb2luKHRoaXMub3B0aW9ucy5kZWxpbWl0ZXIpO1xuICAgIHRoaXMuZWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJykpO1xuICB9XG5cbiAgY2FyZXRBdFN0YXJ0KGVsKSB7XG5cdFx0dHJ5IHtcblx0XHRcdHJldHVybiBlbC5zZWxlY3Rpb25TdGFydCA9PT0gMCAmJiBlbC5zZWxlY3Rpb25FbmQgPT09IDA7XG5cdFx0fVxuXHRcdGNhdGNoKGUpIHtcblx0XHRcdHJldHVybiBlbC52YWx1ZSA9PT0gJyc7XG5cdFx0fVxuICB9XG5cbiAgcmVmb2N1cyhlKSB7XG5cdFx0aWYgKGUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygndGFnJykpIHtcbiAgICAgIHRoaXMuc2VsZWN0KGUudGFyZ2V0KTtcbiAgICB9XG5cdFx0aWYgKGUudGFyZ2V0ID09PSB0aGlzLmlucHV0KSB7XG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3QoKTtcbiAgICB9XG5cdFx0dGhpcy5pbnB1dC5mb2N1cygpO1xuXHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHRyZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLnRhZ3MgPSBbXTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5kaXNhYmxlKCk7XG4gICAgdGhpcy5yZXNldCgpO1xuICAgIHRoaXMuZWxlbWVudCA9IG51bGw7XG4gIH1cbn1cblxuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gIGxldCB0YWdJbnB1dHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFt0eXBlPVwidGFnc1wiXScpO1xuICBbXS5mb3JFYWNoLmNhbGwodGFnSW5wdXRzLCBmdW5jdGlvbih0YWdJbnB1dCkge1xuICAgICAgbmV3IFRhZ2lmeSh0YWdJbnB1dCk7XG4gIH0pO1xufSk7XG4iXX0=
(function(a,b){'object'==typeof exports&&'undefined'!=typeof module?module.exports=b():'function'==typeof define&&define.amd?define('bulmaTagsinput',b):a.bulmaTagsinput=b()})(this,function(){'use strict';'function'!=typeof Object.assign&&Object.defineProperty(Object,'assign',{value:function(a){if(null==a)throw new TypeError('Cannot convert undefined or null to object');for(var b,c=Object(a),d=1;d<arguments.length;d++)if(b=arguments[d],null!=b)for(var e in b)Object.prototype.hasOwnProperty.call(b,e)&&(c[e]=b[e]);return c},writable:!0,configurable:!0});const a=['click','touchstart'],b=188;class c{constructor(a,b={}){this.element=a,this.options=Object.assign({},{disabled:!1,delimiter:',',allowDelete:!0,lowercase:!1,uppercase:!1,duplicates:!0},b),this.init()}init(){if(!this.options.disabled){this.tags=[],this.container=document.createElement('div'),this.container.className='tagsinput',this.container.classList.add('field'),this.container.classList.add('is-grouped'),this.container.classList.add('is-grouped-multiline'),this.container.classList.add('input');let a=this.element.getAttribute('type');a&&'tags'!==a||(a='text'),this.input=document.createElement('input'),this.input.setAttribute('type',a),this.element.getAttribute('placeholder')?this.input.setAttribute('placeholder',this.element.getAttribute('placeholder')):this.input.setAttribute('placeholder','Add a Tag'),this.container.appendChild(this.input);let b=this.element.nextSibling;this.element.parentNode[b?'insertBefore':'appendChild'](this.container,b),this.element.style.cssText='position:absolute;left:0;top:0;width:1px;height:1px;opacity:0.01;',this.element.tabIndex=-1,this.enable()}}enable(){this.enabled||this.options.disabled||(this.element.addEventListener('focus',()=>{this.container.classList.add('is-focused'),this.select(Array.prototype.slice.call(this.container.querySelectorAll('.tag:not(.is-delete)')).pop())}),this.input.addEventListener('focus',()=>{this.container.classList.add('is-focused'),this.select(Array.prototype.slice.call(this.container.querySelectorAll('.tag:not(.is-delete)')).pop())}),this.input.addEventListener('blur',()=>{this.container.classList.remove('is-focused'),this.select(Array.prototype.slice.call(this.container.querySelectorAll('.tag:not(.is-delete)')).pop()),this.savePartial()}),this.input.addEventListener('keydown',(a)=>{let c,d=a.charCode||a.keyCode||a.which,e=this.container.querySelector('.tag.is-active'),f=Array.prototype.slice.call(this.container.querySelectorAll('.tag:not(.is-delete)')).pop(),g=this.caretAtStart(this.input);if(e&&(c=this.container.querySelector('[data-tag="'+e.innerHTML.trim()+'"]')),this.setInputWidth(),d===13||d===this.options.delimiter.charCodeAt(0)||d===b||d===9){if(!this.input.value&&(d!==this.options.delimiter.charCodeAt(0)||d===b))return;this.savePartial()}else if(d===46&&c)c.nextSibling?this.select(c.nextSibling.querySelector('.tag')):c.previousSibling&&this.select(c.previousSibling.querySelector('.tag')),this.container.removeChild(c),delete this.tags[this.tags.indexOf(c.getAttribute('data-tag'))],this.setInputWidth(),this.save();else if(d===8){if(c)c.previousSibling?this.select(c.previousSibling.querySelector('.tag')):c.nextSibling&&this.select(c.nextSibling.querySelector('.tag')),this.container.removeChild(c),delete this.tags[this.tags.indexOf(c.getAttribute('data-tag'))],this.setInputWidth(),this.save();else if(f&&g)this.select(f);else return;}else if(d===37){if(c)c.previousSibling&&this.select(c.previousSibling.querySelector('.tag'));else{if(!g)return;this.select(f)}}else if(d===39){if(!c)return;this.select(c.nextSibling.querySelector('.tag'))}else return this.select();return a.preventDefault(),!1}),this.input.addEventListener('input',()=>{this.element.value=this.getValue(),this.element.dispatchEvent(new Event('input'))}),this.input.addEventListener('paste',()=>setTimeout(savePartial,0)),this.container.addEventListener('mousedown',(a)=>{this.refocus(a)}),this.container.addEventListener('touchstart',(a)=>{this.refocus(a)}),this.savePartial(this.element.value),this.enabled=!0)}disable(){this.enabled&&!this.options.disabled&&(this.reset(),this.enabled=!1)}select(a){let b=this.container.querySelector('.is-active');b&&b.classList.remove('is-active'),a&&a.classList.add('is-active')}addTag(b){if(~b.indexOf(this.options.delimiter)&&(b=b.split(this.options.delimiter)),Array.isArray(b))return b.forEach((a)=>{this.addTag(a)});let c=b&&b.trim();if(!c)return!1;if((this.element.getAttribute('lowercase')||'true'==this.options.lowercase)&&(c=c.toLowerCase()),(this.element.getAttribute('uppercase')||'true'==this.options.uppercase)&&(c=c.toUpperCase()),'true'==this.element.getAttribute('duplicates')||this.options.duplicates||-1===this.tags.indexOf(c)){this.tags.push(c);let b=document.createElement('div');b.className='control',b.setAttribute('data-tag',c);let d=document.createElement('div');d.className='tags',d.classList.add('has-addons');let e=document.createElement('span');if(e.className='tag',e.classList.add('is-active'),this.select(e),e.innerHTML=c,d.appendChild(e),this.options.allowDelete){let b=document.createElement('a');b.className='tag',b.classList.add('is-delete'),a.forEach((a)=>{b.addEventListener(a,(a)=>{let b,c=a.target.parentNode,d=Array.prototype.slice.call(this.container.querySelectorAll('.tag')).pop(),e=this.caretAtStart(this.input);if(c&&(b=this.container.querySelector('[data-tag="'+c.innerText.trim()+'"]')),b)this.select(b.previousSibling),this.container.removeChild(b),delete this.tags[this.tags.indexOf(b.getAttribute('data-tag'))],this.setInputWidth(),this.save();else if(d&&e)this.select(d);else return})}),d.appendChild(b)}b.appendChild(d),this.container.insertBefore(b,this.input)}}getValue(){return this.tags.join(this.options.delimiter)}setValue(a){Array.prototype.slice.call(this.container.querySelectorAll('.tag')).forEach((a)=>{delete this.tags[this.tags.indexOf(a.innerHTML)],this.container.removeChild(a)}),this.savePartial(a)}setInputWidth(){let a=Array.prototype.slice.call(this.container.querySelectorAll('.control')).pop();this.container.offsetWidth&&(this.input.style.width=Math.max(this.container.offsetWidth-(a?a.offsetLeft+a.offsetWidth:30)-30,this.container.offsetWidth/4)+'px')}savePartial(a){'string'==typeof a||Array.isArray(a)||(a=this.input.value),!1!==this.addTag(a)&&(this.input.value='',this.save(),this.setInputWidth())}save(){this.element.value=this.tags.join(this.options.delimiter),this.element.dispatchEvent(new Event('change'))}caretAtStart(a){try{return 0===a.selectionStart&&0===a.selectionEnd}catch(b){return''===a.value}}refocus(a){return(a.target.classList.contains('tag')&&this.select(a.target),a.target===this.input)?this.select():(this.input.focus(),a.preventDefault(),!1)}reset(){this.tags=[]}destroy(){this.disable(),this.reset(),this.element=null}}return document.addEventListener('DOMContentLoaded',function(){let a=document.querySelectorAll('input[type="tags"]');[].forEach.call(a,function(a){new c(a)})}),c});
//# sourceMappingURL=data:application/json;charset=utf8;base64,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RUFBQyxBQUFNLFNBQUssQUFBSSxLQUFDLEFBQUssQUFBRSxBQUN6QixPQUFPLEFBQUksS0FBQyxBQUFNLEFBQUUsQUFBQyxBQUN0QixVQUNILEFBQUksS0FBQyxBQUFLLE1BQUMsQUFBSyxBQUFFLEFBQUMsUUFDbkIsQUFBQyxFQUFDLEFBQWMsQUFBRSxBQUFDLEFBQ25CLEFBQU8sQUFBSyxBQUFDLG9CQUNaLENBRUQsQUFBSyxPQUFHLENBQ04sQUFBSSxLQUFDLEFBQUksS0FBRyxBQUFFLEFBQUMsRUFDaEIsQ0FFRCxBQUFPLFNBQUcsQ0FDUixBQUFJLEtBQUMsQUFBTyxBQUFFLEFBQUMsVUFDZixBQUFJLEtBQUMsQUFBSyxBQUFFLEFBQUMsUUFDYixBQUFJLEtBQUMsQUFBTyxRQUFHLEFBQUksQUFBQyxJQUNyQixBQUNGLFFBRUQsQUFBUSxVQUFDLEFBQWdCLGlCQUFFLEFBQWtCLG1CQUFFLFVBQVksQ0FDekQsR0FBSSxBQUFTLEdBQUcsQUFBUSxTQUFDLEFBQWdCLGlCQUFDLEFBQW9CLEFBQUMsQUFBQyxzQkFDaEUsQUFBRSxHQUFDLEFBQU8sUUFBQyxBQUFJLEFBQUMsQUFBUyxPQUFFLEFBQVMsQUFBUSxXQUFFLENBQzFDLEFBQUksQUFBTSxBQUFDLEFBQVEsQUFBQyxBQUFDLFFBQ3hCLEFBQUMsQUFBQyxFQUNKLEFBQUMsQUFBQyIsImZpbGUiOiJidWxtYS10YWdzaW5wdXQubWluLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaWYgKHR5cGVvZiBPYmplY3QuYXNzaWduICE9ICdmdW5jdGlvbicpIHtcbiAgLy8gTXVzdCBiZSB3cml0YWJsZTogdHJ1ZSwgZW51bWVyYWJsZTogZmFsc2UsIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoT2JqZWN0LCBcImFzc2lnblwiLCB7XG4gICAgdmFsdWU6IGZ1bmN0aW9uIGFzc2lnbih0YXJnZXQsIHZhckFyZ3MpIHsgLy8gLmxlbmd0aCBvZiBmdW5jdGlvbiBpcyAyXG4gICAgICAndXNlIHN0cmljdCc7XG4gICAgICBpZiAodGFyZ2V0ID09IG51bGwpIHsgLy8gVHlwZUVycm9yIGlmIHVuZGVmaW5lZCBvciBudWxsXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9iamVjdCcpO1xuICAgICAgfVxuXG4gICAgICB2YXIgdG8gPSBPYmplY3QodGFyZ2V0KTtcblxuICAgICAgZm9yICh2YXIgaW5kZXggPSAxOyBpbmRleCA8IGFyZ3VtZW50cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgdmFyIG5leHRTb3VyY2UgPSBhcmd1bWVudHNbaW5kZXhdO1xuXG4gICAgICAgIGlmIChuZXh0U291cmNlICE9IG51bGwpIHsgLy8gU2tpcCBvdmVyIGlmIHVuZGVmaW5lZCBvciBudWxsXG4gICAgICAgICAgZm9yICh2YXIgbmV4dEtleSBpbiBuZXh0U291cmNlKSB7XG4gICAgICAgICAgICAvLyBBdm9pZCBidWdzIHdoZW4gaGFzT3duUHJvcGVydHkgaXMgc2hhZG93ZWRcbiAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobmV4dFNvdXJjZSwgbmV4dEtleSkpIHtcbiAgICAgICAgICAgICAgdG9bbmV4dEtleV0gPSBuZXh0U291cmNlW25leHRLZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRvO1xuICAgIH0sXG4gICAgd3JpdGFibGU6IHRydWUsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pO1xufVxuXG5jb25zdCBNT1VTRV9FVkVOVFMgPSBbJ2NsaWNrJywgJ3RvdWNoc3RhcnQnXTtcblxuY29uc3QgS0VZX0JBQ0tTUEFDRSA9IDgsXG4gIEtFWV9UQUIgPSA5LFxuICBLRVlfRU5URVIgPSAxMyxcbiAgS0VZX0xFRlQgPSAzNyxcbiAgS0VZX1JJR0hUID0gMzksXG4gIEtFWV9ERUxFVEUgPSA0NixcbiAgS0VZX0NPTU1BID0gMTg4O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUYWdpZnkge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBvcHRpb25zID0ge30pIHtcbiAgICBsZXQgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgICBkZWxpbWl0ZXI6ICcsJyxcbiAgICAgIGFsbG93RGVsZXRlOiB0cnVlLFxuICAgICAgbG93ZXJjYXNlOiBmYWxzZSxcbiAgICAgIHVwcGVyY2FzZTogZmFsc2UsXG4gICAgICBkdXBsaWNhdGVzOiB0cnVlXG4gICAgfVxuICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgdGhpcy5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdE9wdGlvbnMsIG9wdGlvbnMpO1xuXG4gICAgdGhpcy5pbml0KCk7XG4gIH1cblxuICBpbml0KCkge1xuICAgIGlmICghdGhpcy5vcHRpb25zLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnRhZ3MgPSBbXTtcbiAgICAgIC8vIFRoZSBjb250YWluZXIgd2lsbCB2aXN1YWxseSBsb29rcyBsaWtlIGFuIGlucHV0XG4gICAgICB0aGlzLmNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgdGhpcy5jb250YWluZXIuY2xhc3NOYW1lID0gJ3RhZ3NpbnB1dCc7XG4gICAgICB0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdmaWVsZCcpO1xuICAgICAgdGhpcy5jb250YWluZXIuY2xhc3NMaXN0LmFkZCgnaXMtZ3JvdXBlZCcpO1xuICAgICAgdGhpcy5jb250YWluZXIuY2xhc3NMaXN0LmFkZCgnaXMtZ3JvdXBlZC1tdWx0aWxpbmUnKTtcbiAgICAgIHRoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ2lucHV0Jyk7XG5cbiAgICAgIGxldCBpbnB1dFR5cGUgPSB0aGlzLmVsZW1lbnQuZ2V0QXR0cmlidXRlKCd0eXBlJyk7XG4gICAgXHRpZiAoIWlucHV0VHlwZSB8fCBpbnB1dFR5cGUgPT09ICd0YWdzJykge1xuICAgIFx0XHRpbnB1dFR5cGUgPSAndGV4dCc7XG4gICAgICB9XG4gICAgICAvLyBDcmVhdGUgYW4gaW52aXNpYmxlIGlucHV0IGVsZW1lbnQgc28gdXNlciB3aWxsIGJlIGFibGUgdG8gZW50ZXIgdmFsdWVcbiAgICAgIHRoaXMuaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgdGhpcy5pbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCBpbnB1dFR5cGUpO1xuICAgICAgaWYgKHRoaXMuZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJykpIHtcbiAgICAgICAgdGhpcy5pbnB1dC5zZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJywgdGhpcy5lbGVtZW50LmdldEF0dHJpYnV0ZSgncGxhY2Vob2xkZXInKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlucHV0LnNldEF0dHJpYnV0ZSgncGxhY2Vob2xkZXInLCAnQWRkIGEgVGFnJyk7XG4gICAgICB9XG4gICAgICB0aGlzLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLmlucHV0KTtcblxuICAgICAgbGV0IHNpYiA9IHRoaXMuZWxlbWVudC5uZXh0U2libGluZztcbiAgICAgIHRoaXMuZWxlbWVudC5wYXJlbnROb2RlW3NpYiA/ICdpbnNlcnRCZWZvcmUnOidhcHBlbmRDaGlsZCddKHRoaXMuY29udGFpbmVyLCBzaWIpO1xuICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmNzc1RleHQgPSAncG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowO3dpZHRoOjFweDtoZWlnaHQ6MXB4O29wYWNpdHk6MC4wMTsnO1xuICAgICAgdGhpcy5lbGVtZW50LnRhYkluZGV4ID0gLTE7XG5cbiAgICAgIHRoaXMuZW5hYmxlKCk7XG4gICAgfVxuICB9XG5cbiAgZW5hYmxlKCkge1xuICAgIGlmICghdGhpcy5lbmFibGVkICYmICF0aGlzLm9wdGlvbnMuZGlzYWJsZWQpIHtcblxuICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgKCkgPT4ge1xuICAgICAgICB0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdpcy1mb2N1c2VkJyk7XG4gICAgICAgIHRoaXMuc2VsZWN0KChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCcudGFnOm5vdCguaXMtZGVsZXRlKScpKSkucG9wKCkpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoKSA9PiB7XG4gICAgXHRcdHRoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ2lzLWZvY3VzZWQnKTtcbiAgICBcdFx0dGhpcy5zZWxlY3QoKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy50YWc6bm90KC5pcy1kZWxldGUpJykpKS5wb3AoKSk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsICgpID0+IHtcbiAgICBcdFx0dGhpcy5jb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgnaXMtZm9jdXNlZCcpO1xuICAgIFx0XHR0aGlzLnNlbGVjdCgoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgnLnRhZzpub3QoLmlzLWRlbGV0ZSknKSkpLnBvcCgpKTtcbiAgICBcdFx0dGhpcy5zYXZlUGFydGlhbCgpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZSkgPT4ge1xuICAgICAgICBsZXQga2V5ID0gZS5jaGFyQ29kZSB8fCBlLmtleUNvZGUgfHwgZS53aGljaCxcbiAgICAgICAgICBzZWxlY3RlZFRhZyxcbiAgICAgICAgICBhY3RpdmVUYWcgPSB0aGlzLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcudGFnLmlzLWFjdGl2ZScpLFxuICAgICAgICAgIGxhc3QgPSAoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgnLnRhZzpub3QoLmlzLWRlbGV0ZSknKSkpLnBvcCgpLFxuICAgICAgICAgIGF0U3RhcnQgPSB0aGlzLmNhcmV0QXRTdGFydCh0aGlzLmlucHV0KTtcblxuICAgICAgICBpZiAoYWN0aXZlVGFnKSB7XG4gICAgICAgICAgc2VsZWN0ZWRUYWcgPSB0aGlzLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdbZGF0YS10YWc9XCInICsgYWN0aXZlVGFnLmlubmVySFRNTC50cmltKCkgKyAnXCJdJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRJbnB1dFdpZHRoKCk7XG5cbiAgICAgICAgaWYgKGtleSA9PT0gS0VZX0VOVEVSIHx8IGtleSA9PT0gdGhpcy5vcHRpb25zLmRlbGltaXRlci5jaGFyQ29kZUF0KDApIHx8IGtleSA9PT0gS0VZX0NPTU1BIHx8IGtleSA9PT0gS0VZX1RBQikge1xuICAgICAgICAgIGlmICghdGhpcy5pbnB1dC52YWx1ZSAmJiAoa2V5ICE9PSB0aGlzLm9wdGlvbnMuZGVsaW1pdGVyLmNoYXJDb2RlQXQoMCkgfHwga2V5ID09PSBLRVlfQ09NTUEpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2F2ZVBhcnRpYWwoKTtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09IEtFWV9ERUxFVEUgJiYgc2VsZWN0ZWRUYWcpIHtcbiAgICBcdFx0XHRpZiAoc2VsZWN0ZWRUYWcubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0KHNlbGVjdGVkVGFnLm5leHRTaWJsaW5nLnF1ZXJ5U2VsZWN0b3IoJy50YWcnKSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RlZFRhZy5wcmV2aW91c1NpYmxpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0KHNlbGVjdGVkVGFnLnByZXZpb3VzU2libGluZy5xdWVyeVNlbGVjdG9yKCcudGFnJykpO1xuICAgICAgICAgIH1cbiAgICBcdFx0XHR0aGlzLmNvbnRhaW5lci5yZW1vdmVDaGlsZChzZWxlY3RlZFRhZyk7XG4gICAgICAgICAgZGVsZXRlIHRoaXMudGFnc1t0aGlzLnRhZ3MuaW5kZXhPZihzZWxlY3RlZFRhZy5nZXRBdHRyaWJ1dGUoJ2RhdGEtdGFnJykpXTtcbiAgICBcdFx0XHR0aGlzLnNldElucHV0V2lkdGgoKTtcbiAgICBcdFx0XHR0aGlzLnNhdmUoKTtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09IEtFWV9CQUNLU1BBQ0UpIHtcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRUYWcpIHtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZFRhZy5wcmV2aW91c1NpYmxpbmcpIHtcbiAgICBcdFx0XHRcdCAgdGhpcy5zZWxlY3Qoc2VsZWN0ZWRUYWcucHJldmlvdXNTaWJsaW5nLnF1ZXJ5U2VsZWN0b3IoJy50YWcnKSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGVkVGFnLm5leHRTaWJsaW5nKSB7XG4gICAgXHRcdFx0XHQgIHRoaXMuc2VsZWN0KHNlbGVjdGVkVGFnLm5leHRTaWJsaW5nLnF1ZXJ5U2VsZWN0b3IoJy50YWcnKSk7XG4gICAgICAgICAgICB9XG4gICAgXHRcdFx0XHR0aGlzLmNvbnRhaW5lci5yZW1vdmVDaGlsZChzZWxlY3RlZFRhZyk7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy50YWdzW3RoaXMudGFncy5pbmRleE9mKHNlbGVjdGVkVGFnLmdldEF0dHJpYnV0ZSgnZGF0YS10YWcnKSldO1xuICAgIFx0XHRcdFx0dGhpcy5zZXRJbnB1dFdpZHRoKCk7XG4gICAgXHRcdFx0XHR0aGlzLnNhdmUoKTtcbiAgICBcdFx0XHR9IGVsc2UgaWYgKGxhc3QgJiYgYXRTdGFydCkge1xuICAgIFx0XHRcdFx0dGhpcy5zZWxlY3QobGFzdCk7XG4gICAgXHRcdFx0fSBlbHNlIHtcbiAgICBcdFx0XHRcdHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSBLRVlfTEVGVCkge1xuICAgIFx0XHRcdGlmIChzZWxlY3RlZFRhZykge1xuICAgIFx0XHRcdFx0aWYgKHNlbGVjdGVkVGFnLnByZXZpb3VzU2libGluZykge1xuICAgIFx0XHRcdFx0XHR0aGlzLnNlbGVjdChzZWxlY3RlZFRhZy5wcmV2aW91c1NpYmxpbmcucXVlcnlTZWxlY3RvcignLnRhZycpKTtcbiAgICBcdFx0XHRcdH1cbiAgICBcdFx0XHR9IGVsc2UgaWYgKCFhdFN0YXJ0KSB7XG4gICAgXHRcdFx0XHRyZXR1cm47XG4gICAgXHRcdFx0fSBlbHNlIHtcbiAgICBcdFx0XHRcdHRoaXMuc2VsZWN0KGxhc3QpO1xuICAgIFx0XHRcdH1cbiAgICBcdFx0fVxuICAgIFx0XHRlbHNlIGlmIChrZXkgPT09IEtFWV9SSUdIVCkge1xuICAgIFx0XHRcdGlmICghc2VsZWN0ZWRUYWcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgXHRcdFx0dGhpcy5zZWxlY3Qoc2VsZWN0ZWRUYWcubmV4dFNpYmxpbmcucXVlcnlTZWxlY3RvcignLnRhZycpKTtcbiAgICBcdFx0fVxuICAgIFx0XHRlbHNlIHtcbiAgICBcdFx0XHRyZXR1cm4gdGhpcy5zZWxlY3QoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xuICAgICAgICB0aGlzLmVsZW1lbnQudmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgICAgIHRoaXMuZWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnKSk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigncGFzdGUnLCAoKSA9PiBzZXRUaW1lb3V0KHNhdmVQYXJ0aWFsLCAwKSk7XG5cbiAgICAgIHRoaXMuY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIChlKSA9PiB7IHRoaXMucmVmb2N1cyhlKTsgfSk7XG4gICAgICB0aGlzLmNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgKGUpID0+IHsgdGhpcy5yZWZvY3VzKGUpOyB9KTtcblxuICAgICAgdGhpcy5zYXZlUGFydGlhbCh0aGlzLmVsZW1lbnQudmFsdWUpO1xuXG4gICAgICB0aGlzLmVuYWJsZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGRpc2FibGUoKSB7XG4gICAgaWYgKHRoaXMuZW5hYmxlZCAmJiAhdGhpcy5vcHRpb25zLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnJlc2V0KCk7XG5cbiAgICAgIHRoaXMuZW5hYmxlZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdChlbCkge1xuXHRcdGxldCBzZWwgPSB0aGlzLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcuaXMtYWN0aXZlJyk7XG5cdFx0aWYgKHNlbCkge1xuICAgICAgc2VsLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWFjdGl2ZScpO1xuICAgIH1cblx0XHRpZiAoZWwpIHtcbiAgICAgIGVsLmNsYXNzTGlzdC5hZGQoJ2lzLWFjdGl2ZScpO1xuICAgIH1cbiAgfVxuXG4gIGFkZFRhZyh0ZXh0KSB7XG4gICAgaWYgKH50ZXh0LmluZGV4T2YodGhpcy5vcHRpb25zLmRlbGltaXRlcikpIHtcbiAgICAgIHRleHQgPSB0ZXh0LnNwbGl0KHRoaXMub3B0aW9ucy5kZWxpbWl0ZXIpO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0ZXh0KSkge1xuICAgICAgcmV0dXJuIHRleHQuZm9yRWFjaCgodGV4dCkgPT4ge1xuICAgICAgICB0aGlzLmFkZFRhZyh0ZXh0KVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgbGV0IHRhZyA9IHRleHQgJiYgdGV4dC50cmltKCk7XG4gICAgaWYgKCF0YWcpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5lbGVtZW50LmdldEF0dHJpYnV0ZSgnbG93ZXJjYXNlJykgfHwgdGhpcy5vcHRpb25zWydsb3dlcmNhc2UnXSA9PSAndHJ1ZScpIHtcbiAgICAgIHRhZyA9IHRhZy50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5lbGVtZW50LmdldEF0dHJpYnV0ZSgndXBwZXJjYXNlJykgfHwgdGhpcy5vcHRpb25zWyd1cHBlcmNhc2UnXSA9PSAndHJ1ZScpIHtcbiAgICAgIHRhZyA9IHRhZy50b1VwcGVyQ2FzZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5lbGVtZW50LmdldEF0dHJpYnV0ZSgnZHVwbGljYXRlcycpID09ICd0cnVlJyB8fCB0aGlzLm9wdGlvbnNbJ2R1cGxpY2F0ZXMnXSB8fCB0aGlzLnRhZ3MuaW5kZXhPZih0YWcpID09PSAtMSkge1xuICAgICAgdGhpcy50YWdzLnB1c2godGFnKTtcblxuICAgICAgbGV0IG5ld1RhZ1dyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIG5ld1RhZ1dyYXBwZXIuY2xhc3NOYW1lID0gJ2NvbnRyb2wnO1xuICAgICAgbmV3VGFnV3JhcHBlci5zZXRBdHRyaWJ1dGUoJ2RhdGEtdGFnJywgdGFnKTtcblxuICAgICAgbGV0IG5ld1RhZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgbmV3VGFnLmNsYXNzTmFtZSA9ICd0YWdzJztcbiAgICAgIG5ld1RhZy5jbGFzc0xpc3QuYWRkKCdoYXMtYWRkb25zJyk7XG5cbiAgICAgIGxldCBuZXdUYWdDb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgbmV3VGFnQ29udGVudC5jbGFzc05hbWUgPSAndGFnJztcbiAgICAgIG5ld1RhZ0NvbnRlbnQuY2xhc3NMaXN0LmFkZCgnaXMtYWN0aXZlJyk7XG4gICAgICB0aGlzLnNlbGVjdChuZXdUYWdDb250ZW50KTtcbiAgICAgIG5ld1RhZ0NvbnRlbnQuaW5uZXJIVE1MID0gdGFnO1xuXG4gICAgICBuZXdUYWcuYXBwZW5kQ2hpbGQobmV3VGFnQ29udGVudCk7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmFsbG93RGVsZXRlKSB7XG4gICAgICAgIGxldCBuZXdUYWdEZWxldGVCdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgIG5ld1RhZ0RlbGV0ZUJ1dHRvbi5jbGFzc05hbWUgPSAndGFnJztcbiAgICAgICAgbmV3VGFnRGVsZXRlQnV0dG9uLmNsYXNzTGlzdC5hZGQoJ2lzLWRlbGV0ZScpO1xuICAgICAgICBNT1VTRV9FVkVOVFMuZm9yRWFjaCgoZXZlbnQpID0+IHtcbiAgICAgICAgICBuZXdUYWdEZWxldGVCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgKGUpID0+IHtcbiAgICAgICAgICBsZXQgc2VsZWN0ZWRUYWcsXG4gICAgICAgICAgICBhY3RpdmVUYWcgPSBlLnRhcmdldC5wYXJlbnROb2RlLFxuICAgICAgICAgICAgbGFzdCA9IChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCcudGFnJykpKS5wb3AoKSxcbiAgICAgICAgICAgIGF0U3RhcnQgPSB0aGlzLmNhcmV0QXRTdGFydCh0aGlzLmlucHV0KTtcblxuICAgICAgICAgIGlmIChhY3RpdmVUYWcpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkVGFnID0gdGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvcignW2RhdGEtdGFnPVwiJyArIGFjdGl2ZVRhZy5pbm5lclRleHQudHJpbSgpICsgJ1wiXScpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzZWxlY3RlZFRhZykge1xuICAgIFx0XHRcdFx0dGhpcy5zZWxlY3Qoc2VsZWN0ZWRUYWcucHJldmlvdXNTaWJsaW5nKTtcbiAgICBcdFx0XHRcdHRoaXMuY29udGFpbmVyLnJlbW92ZUNoaWxkKHNlbGVjdGVkVGFnKTtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnRhZ3NbdGhpcy50YWdzLmluZGV4T2Yoc2VsZWN0ZWRUYWcuZ2V0QXR0cmlidXRlKCdkYXRhLXRhZycpKV07XG4gICAgXHRcdFx0XHR0aGlzLnNldElucHV0V2lkdGgoKTtcbiAgICBcdFx0XHRcdHRoaXMuc2F2ZSgpO1xuICAgIFx0XHRcdH1cbiAgICBcdFx0XHRlbHNlIGlmIChsYXN0ICYmIGF0U3RhcnQpIHtcbiAgICBcdFx0XHRcdHRoaXMuc2VsZWN0KGxhc3QpO1xuICAgIFx0XHRcdH1cbiAgICBcdFx0XHRlbHNlIHtcbiAgICBcdFx0XHRcdHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICAgIG5ld1RhZy5hcHBlbmRDaGlsZChuZXdUYWdEZWxldGVCdXR0b24pO1xuICAgICAgfVxuICAgICAgbmV3VGFnV3JhcHBlci5hcHBlbmRDaGlsZChuZXdUYWcpO1xuXG4gICAgICB0aGlzLmNvbnRhaW5lci5pbnNlcnRCZWZvcmUobmV3VGFnV3JhcHBlciwgdGhpcy5pbnB1dCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0VmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMudGFncy5qb2luKHRoaXMub3B0aW9ucy5kZWxpbWl0ZXIpO1xuICB9XG5cbiAgc2V0VmFsdWUodmFsdWUpIHtcbiAgICAoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgnLnRhZycpKSkuZm9yRWFjaCgodGFnKSA9PiB7XG4gICAgICBkZWxldGUgdGhpcy50YWdzW3RoaXMudGFncy5pbmRleE9mKHRhZy5pbm5lckhUTUwpXTtcbiAgICAgIHRoaXMuY29udGFpbmVyLnJlbW92ZUNoaWxkKHRhZyk7XG4gICAgfSk7XG4gICAgdGhpcy5zYXZlUGFydGlhbCh2YWx1ZSk7XG4gIH1cblxuICBzZXRJbnB1dFdpZHRoKCkge1xuICAgIGxldCBsYXN0ID0gKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jb250cm9sJykpKS5wb3AoKTtcblxuICAgIGlmICghdGhpcy5jb250YWluZXIub2Zmc2V0V2lkdGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pbnB1dC5zdHlsZS53aWR0aCA9IE1hdGgubWF4KHRoaXMuY29udGFpbmVyLm9mZnNldFdpZHRoIC0gKGxhc3QgPyAobGFzdC5vZmZzZXRMZWZ0ICsgbGFzdC5vZmZzZXRXaWR0aCkgOiAzMCkgLSAzMCwgdGhpcy5jb250YWluZXIub2Zmc2V0V2lkdGggLyA0KSArICdweCc7XG4gIH1cblxuICBzYXZlUGFydGlhbCh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgdmFsdWUgPSB0aGlzLmlucHV0LnZhbHVlO1xuICAgIH1cbiAgICBpZiAodGhpcy5hZGRUYWcodmFsdWUpICE9PSBmYWxzZSkge1xuXHRcdFx0dGhpcy5pbnB1dC52YWx1ZSA9ICcnO1xuXHRcdFx0dGhpcy5zYXZlKCk7XG5cdFx0XHR0aGlzLnNldElucHV0V2lkdGgoKTtcbiAgICB9XG4gIH1cblxuICBzYXZlKCkge1xuICAgIHRoaXMuZWxlbWVudC52YWx1ZSA9IHRoaXMudGFncy5qb2luKHRoaXMub3B0aW9ucy5kZWxpbWl0ZXIpO1xuICAgIHRoaXMuZWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJykpO1xuICB9XG5cbiAgY2FyZXRBdFN0YXJ0KGVsKSB7XG5cdFx0dHJ5IHtcblx0XHRcdHJldHVybiBlbC5zZWxlY3Rpb25TdGFydCA9PT0gMCAmJiBlbC5zZWxlY3Rpb25FbmQgPT09IDA7XG5cdFx0fVxuXHRcdGNhdGNoKGUpIHtcblx0XHRcdHJldHVybiBlbC52YWx1ZSA9PT0gJyc7XG5cdFx0fVxuICB9XG5cbiAgcmVmb2N1cyhlKSB7XG5cdFx0aWYgKGUudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygndGFnJykpIHtcbiAgICAgIHRoaXMuc2VsZWN0KGUudGFyZ2V0KTtcbiAgICB9XG5cdFx0aWYgKGUudGFyZ2V0ID09PSB0aGlzLmlucHV0KSB7XG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3QoKTtcbiAgICB9XG5cdFx0dGhpcy5pbnB1dC5mb2N1cygpO1xuXHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHRyZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLnRhZ3MgPSBbXTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5kaXNhYmxlKCk7XG4gICAgdGhpcy5yZXNldCgpO1xuICAgIHRoaXMuZWxlbWVudCA9IG51bGw7XG4gIH1cbn1cblxuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gIGxldCB0YWdJbnB1dHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dFt0eXBlPVwidGFnc1wiXScpO1xuICBbXS5mb3JFYWNoLmNhbGwodGFnSW5wdXRzLCBmdW5jdGlvbih0YWdJbnB1dCkge1xuICAgICAgbmV3IFRhZ2lmeSh0YWdJbnB1dCk7XG4gIH0pO1xufSk7XG4iXX0=
......@@ -106,7 +106,7 @@ gulp.task('build:scripts', function() {
]
})]
}, {
format: gutil.env.jsFormat ? gutil.env.jsFormat : 'iife',
format: gutil.env.jsFormat ? gutil.env.jsFormat : 'umd',
name: camelCase(package.name)
}
))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment