{"version":3,"sources":["webpack:////opt/gitlab/embedded/service/gitlab-rails/node_modules/sortablejs/Sortable.js","webpack:///./label_manager.js","webpack:///./group_label_subscription.js","webpack:///./project_label_subscription.js","webpack:///./init_labels.js"],"names":["__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_RESULT__","factory","undefined","call","exports","__webpack_require__","module","window","document","Error","dragEl","parentEl","ghostEl","cloneEl","rootEl","nextEl","lastDownEl","scrollEl","scrollParentEl","scrollCustomFn","lastEl","lastCSS","lastParentCSS","oldIndex","newIndex","activeGroup","putSortable","tapEvt","touchEvt","moved","el","autoScroll","R_SPACE","R_FLOAT","expando","Date","getTime","win","parseInt","setTimeout","$","jQuery","Zepto","Polymer","captureMode","supportDraggable","createElement","supportCssPointerEvents","navigator","userAgent","match","style","cssText","pointerEvents","_silent","abs","Math","min","savedInputChecked","touchDragOverListeners","_autoScroll","_throttle","evt","options","scroll","rect","vx","vy","scrollOffsetX","scrollOffsetY","_this","sens","scrollSensitivity","speed","scrollSpeed","x","clientX","y","clientY","winWidth","innerWidth","winHeight","innerHeight","scrollFn","offsetWidth","scrollWidth","offsetHeight","scrollHeight","parentNode","getBoundingClientRect","right","left","bottom","top","clearInterval","pid","setInterval","scrollTo","pageXOffset","pageYOffset","scrollTop","scrollLeft","_prepareGroup","toFn","value","pull","group","name","to","from","fromGroup","join","indexOf","originalGroup","checkPull","checkPut","put","revertClone","addEventListener","Object","defineProperty","get","capture","passive","err","Sortable","nodeType","toString","this","_extend","defaults","random","sort","disabled","store","handle","draggable","test","nodeName","ghostClass","chosenClass","dragClass","ignore","filter","preventOnFilter","animation","setData","dataTransfer","textContent","dropBubble","dragoverBubble","dataIdAttr","delay","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","fn","charAt","bind","nativeDraggable","_on","_onTapStart","push","_onDragOver","_cloneHide","sortable","state","lastPullMode","_css","insertBefore","_animate","_closest","selector","ctx","_matches","_getParentOrHost","parent","host","event","_off","removeEventListener","_toggleClass","classList","className","replace","prop","val","defaultView","getComputedStyle","currentStyle","_find","tagName","iterator","list","getElementsByTagName","i","n","length","_dispatchEvent","targetEl","toEl","fromEl","startIndex","createEvent","onName","toUpperCase","substr","initEvent","item","clone","dispatchEvent","_onMove","dragRect","targetRect","originalEvt","willInsertAfter","retVal","onMoveFn","onMove","dragged","draggedRect","related","relatedRect","_disableDraggable","_unsilent","_generateId","str","src","href","sum","charCodeAt","_index","index","previousElementSibling","tag","split","shift","re","RegExp","callback","ms","args","arguments","apply","dst","key","hasOwnProperty","_clone","dom","cloneNode","_nextTick","_cancelNextTick","id","clearTimeout","prototype","constructor","type","touch","touches","target","originalTarget","shadowRoot","path","root","inputs","idx","checked","_saveInputCheckedState","button","isContentEditable","preventDefault","some","criteria","trim","_prepareDragStart","dragStartFn","ownerDocument","nextSibling","_lastX","_lastY","_disableDelayedDrag","_triggerDragStart","forEach","_onDrop","_dragStartTimer","pointerType","_onDragStart","selection","empty","getSelection","removeAllRanges","_dragStarted","active","_nulling","_emulateDragOver","elementFromPoint","_onTouchMove","dx","dy","translate3d","_appendGhost","ghostRect","css","marginTop","marginLeft","width","height","body","appendChild","useFallback","_offUpEvents","_cloneId","_loopId","effectAllowed","_dragStartId","revert","activeSortable","isOwner","isMovingBetweenSortable","canSort","stopPropagation","animated","contains","children","lastElementChild","floating","cssFloat","display","isWide","isLong","halfway","nextElementSibling","after","elTop","offsetTop","tgTop","moveVector","prevRect","currentRect","removeChild","save","handleEvent","dropEffect","_globalDragOver","toArray","order","getAttribute","items","set","closest","option","destroy","Array","querySelectorAll","removeAttribute","splice","utils","on","off","find","is","extend","throttle","toggleClass","nextTick","cancelNextTick","create","version","LabelManager","_ref","togglePriorityButton","prioritizedLabels","otherLabels","_classCallCheck","jquery_default","errorMessage","emptyState","querySelector","$badgeItemTemplate","Sortable_default","a","onUpdate","onPrioritySortUpdate","bindEvents","onButtonActionClick","onTogglePriorityClick","e","data","$btn","currentTarget","$label","action","parents","attr","tooltip","toggleLabelPriority","toggleEmptyState","toggle","persistState","url","$target","$from","rollbackLabelPosition","$detachedLabel","detach","toggleLabelPriorityBadge","appendTo","removeClass","addClass","axios_utils","delete","catch","savePrioritySort","remove","append","html","_this2","flash","post","label_ids","getSortedLabelsIds","originalAction","sortedIds","each","tooltipTitles","locale","project","GroupLabelSubscription","container","group_label_subscription_classCallCheck","$container","$dropdown","$subscribeButtons","$unsubscribeButtons","subscribe","unsubscribe","then","toggleSubscriptionButtons","removeAttr","setNewTooltip","$button","hasClass","newTitle","project_label_subscription_tooltipTitles","subscribed","unsubscribed","ProjectLabelSubscription","project_label_subscription_classCallCheck","$buttons","toggleSubscription","oldStatus","newStatus","newAction","text","map","originalTitle","setNewTitle","__webpack_exports__","label_manager","$el","group_label_subscription","project_label_subscription"],"mappings":"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","file":"commons~pages.groups.labels.index~pages.projects.labels.index.002ee308.chunk.js","sourcesContent":["/**!\n * Sortable\n * @author\tRubaXa \n * @license MIT\n */\n\n(function sortableModule(factory) {\n\t\"use strict\";\n\n\tif (typeof define === \"function\" && define.amd) {\n\t\tdefine(factory);\n\t}\n\telse if (typeof module != \"undefined\" && typeof module.exports != \"undefined\") {\n\t\tmodule.exports = factory();\n\t}\n\telse {\n\t\t/* jshint sub:true */\n\t\twindow[\"Sortable\"] = factory();\n\t}\n})(function sortableFactory() {\n\t\"use strict\";\n\n\tif (typeof window === \"undefined\" || !window.document) {\n\t\treturn function sortableError() {\n\t\t\tthrow new Error(\"Sortable.js requires a window with a document\");\n\t\t};\n\t}\n\n\tvar dragEl,\n\t\tparentEl,\n\t\tghostEl,\n\t\tcloneEl,\n\t\trootEl,\n\t\tnextEl,\n\t\tlastDownEl,\n\n\t\tscrollEl,\n\t\tscrollParentEl,\n\t\tscrollCustomFn,\n\n\t\tlastEl,\n\t\tlastCSS,\n\t\tlastParentCSS,\n\n\t\toldIndex,\n\t\tnewIndex,\n\n\t\tactiveGroup,\n\t\tputSortable,\n\n\t\tautoScroll = {},\n\n\t\ttapEvt,\n\t\ttouchEvt,\n\n\t\tmoved,\n\n\t\t/** @const */\n\t\tR_SPACE = /\\s+/g,\n\t\tR_FLOAT = /left|right|inline/,\n\n\t\texpando = 'Sortable' + (new Date).getTime(),\n\n\t\twin = window,\n\t\tdocument = win.document,\n\t\tparseInt = win.parseInt,\n\t\tsetTimeout = win.setTimeout,\n\n\t\t$ = win.jQuery || win.Zepto,\n\t\tPolymer = win.Polymer,\n\n\t\tcaptureMode = false,\n\t\tpassiveMode = false,\n\n\t\tsupportDraggable = ('draggable' in document.createElement('div')),\n\t\tsupportCssPointerEvents = (function (el) {\n\t\t\t// false when IE11\n\t\t\tif (!!navigator.userAgent.match(/(?:Trident.*rv[ :]?11\\.|msie)/i)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tel = document.createElement('x');\n\t\t\tel.style.cssText = 'pointer-events:auto';\n\t\t\treturn el.style.pointerEvents === 'auto';\n\t\t})(),\n\n\t\t_silent = false,\n\n\t\tabs = Math.abs,\n\t\tmin = Math.min,\n\n\t\tsavedInputChecked = [],\n\t\ttouchDragOverListeners = [],\n\n\t\t_autoScroll = _throttle(function (/**Event*/evt, /**Object*/options, /**HTMLElement*/rootEl) {\n\t\t\t// Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n\t\t\tif (rootEl && options.scroll) {\n\t\t\t\tvar _this = rootEl[expando],\n\t\t\t\t\tel,\n\t\t\t\t\trect,\n\t\t\t\t\tsens = options.scrollSensitivity,\n\t\t\t\t\tspeed = options.scrollSpeed,\n\n\t\t\t\t\tx = evt.clientX,\n\t\t\t\t\ty = evt.clientY,\n\n\t\t\t\t\twinWidth = window.innerWidth,\n\t\t\t\t\twinHeight = window.innerHeight,\n\n\t\t\t\t\tvx,\n\t\t\t\t\tvy,\n\n\t\t\t\t\tscrollOffsetX,\n\t\t\t\t\tscrollOffsetY\n\t\t\t\t;\n\n\t\t\t\t// Delect scrollEl\n\t\t\t\tif (scrollParentEl !== rootEl) {\n\t\t\t\t\tscrollEl = options.scroll;\n\t\t\t\t\tscrollParentEl = rootEl;\n\t\t\t\t\tscrollCustomFn = options.scrollFn;\n\n\t\t\t\t\tif (scrollEl === true) {\n\t\t\t\t\t\tscrollEl = rootEl;\n\n\t\t\t\t\t\tdo {\n\t\t\t\t\t\t\tif ((scrollEl.offsetWidth < scrollEl.scrollWidth) ||\n\t\t\t\t\t\t\t\t(scrollEl.offsetHeight < scrollEl.scrollHeight)\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/* jshint boss:true */\n\t\t\t\t\t\t} while (scrollEl = scrollEl.parentNode);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (scrollEl) {\n\t\t\t\t\tel = scrollEl;\n\t\t\t\t\trect = scrollEl.getBoundingClientRect();\n\t\t\t\t\tvx = (abs(rect.right - x) <= sens) - (abs(rect.left - x) <= sens);\n\t\t\t\t\tvy = (abs(rect.bottom - y) <= sens) - (abs(rect.top - y) <= sens);\n\t\t\t\t}\n\n\n\t\t\t\tif (!(vx || vy)) {\n\t\t\t\t\tvx = (winWidth - x <= sens) - (x <= sens);\n\t\t\t\t\tvy = (winHeight - y <= sens) - (y <= sens);\n\n\t\t\t\t\t/* jshint expr:true */\n\t\t\t\t\t(vx || vy) && (el = win);\n\t\t\t\t}\n\n\n\t\t\t\tif (autoScroll.vx !== vx || autoScroll.vy !== vy || autoScroll.el !== el) {\n\t\t\t\t\tautoScroll.el = el;\n\t\t\t\t\tautoScroll.vx = vx;\n\t\t\t\t\tautoScroll.vy = vy;\n\n\t\t\t\t\tclearInterval(autoScroll.pid);\n\n\t\t\t\t\tif (el) {\n\t\t\t\t\t\tautoScroll.pid = setInterval(function () {\n\t\t\t\t\t\t\tscrollOffsetY = vy ? vy * speed : 0;\n\t\t\t\t\t\t\tscrollOffsetX = vx ? vx * speed : 0;\n\n\t\t\t\t\t\t\tif ('function' === typeof(scrollCustomFn)) {\n\t\t\t\t\t\t\t\treturn scrollCustomFn.call(_this, scrollOffsetX, scrollOffsetY, evt);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (el === win) {\n\t\t\t\t\t\t\t\twin.scrollTo(win.pageXOffset + scrollOffsetX, win.pageYOffset + scrollOffsetY);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tel.scrollTop += scrollOffsetY;\n\t\t\t\t\t\t\t\tel.scrollLeft += scrollOffsetX;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, 24);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}, 30),\n\n\t\t_prepareGroup = function (options) {\n\t\t\tfunction toFn(value, pull) {\n\t\t\t\tif (value === void 0 || value === true) {\n\t\t\t\t\tvalue = group.name;\n\t\t\t\t}\n\n\t\t\t\tif (typeof value === 'function') {\n\t\t\t\t\treturn value;\n\t\t\t\t} else {\n\t\t\t\t\treturn function (to, from) {\n\t\t\t\t\t\tvar fromGroup = from.options.group.name;\n\n\t\t\t\t\t\treturn pull\n\t\t\t\t\t\t\t? value\n\t\t\t\t\t\t\t: value && (value.join\n\t\t\t\t\t\t\t\t? value.indexOf(fromGroup) > -1\n\t\t\t\t\t\t\t\t: (fromGroup == value)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar group = {};\n\t\t\tvar originalGroup = options.group;\n\n\t\t\tif (!originalGroup || typeof originalGroup != 'object') {\n\t\t\t\toriginalGroup = {name: originalGroup};\n\t\t\t}\n\n\t\t\tgroup.name = originalGroup.name;\n\t\t\tgroup.checkPull = toFn(originalGroup.pull, true);\n\t\t\tgroup.checkPut = toFn(originalGroup.put);\n\t\t\tgroup.revertClone = originalGroup.revertClone;\n\n\t\t\toptions.group = group;\n\t\t}\n\t;\n\n\t// Detect support a passive mode\n\ttry {\n\t\twindow.addEventListener('test', null, Object.defineProperty({}, 'passive', {\n\t\t\tget: function () {\n\t\t\t\t// `false`, because everything starts to work incorrectly and instead of d'n'd,\n\t\t\t\t// begins the page has scrolled.\n\t\t\t\tpassiveMode = false;\n\t\t\t\tcaptureMode = {\n\t\t\t\t\tcapture: false,\n\t\t\t\t\tpassive: passiveMode\n\t\t\t\t};\n\t\t\t}\n\t\t}));\n\t} catch (err) {}\n\n\t/**\n\t * @class Sortable\n\t * @param {HTMLElement} el\n\t * @param {Object} [options]\n\t */\n\tfunction Sortable(el, options) {\n\t\tif (!(el && el.nodeType && el.nodeType === 1)) {\n\t\t\tthrow 'Sortable: `el` must be HTMLElement, and not ' + {}.toString.call(el);\n\t\t}\n\n\t\tthis.el = el; // root element\n\t\tthis.options = options = _extend({}, options);\n\n\n\t\t// Export instance\n\t\tel[expando] = this;\n\n\t\t// Default options\n\t\tvar defaults = {\n\t\t\tgroup: Math.random(),\n\t\t\tsort: true,\n\t\t\tdisabled: false,\n\t\t\tstore: null,\n\t\t\thandle: null,\n\t\t\tscroll: true,\n\t\t\tscrollSensitivity: 30,\n\t\t\tscrollSpeed: 10,\n\t\t\tdraggable: /[uo]l/i.test(el.nodeName) ? 'li' : '>*',\n\t\t\tghostClass: 'sortable-ghost',\n\t\t\tchosenClass: 'sortable-chosen',\n\t\t\tdragClass: 'sortable-drag',\n\t\t\tignore: 'a, img',\n\t\t\tfilter: null,\n\t\t\tpreventOnFilter: true,\n\t\t\tanimation: 0,\n\t\t\tsetData: function (dataTransfer, dragEl) {\n\t\t\t\tdataTransfer.setData('Text', dragEl.textContent);\n\t\t\t},\n\t\t\tdropBubble: false,\n\t\t\tdragoverBubble: false,\n\t\t\tdataIdAttr: 'data-id',\n\t\t\tdelay: 0,\n\t\t\tforceFallback: false,\n\t\t\tfallbackClass: 'sortable-fallback',\n\t\t\tfallbackOnBody: false,\n\t\t\tfallbackTolerance: 0,\n\t\t\tfallbackOffset: {x: 0, y: 0},\n\t\t\tsupportPointer: Sortable.supportPointer !== false\n\t\t};\n\n\n\t\t// Set default options\n\t\tfor (var name in defaults) {\n\t\t\t!(name in options) && (options[name] = defaults[name]);\n\t\t}\n\n\t\t_prepareGroup(options);\n\n\t\t// Bind all private methods\n\t\tfor (var fn in this) {\n\t\t\tif (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n\t\t\t\tthis[fn] = this[fn].bind(this);\n\t\t\t}\n\t\t}\n\n\t\t// Setup drag mode\n\t\tthis.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n\t\t// Bind events\n\t\t_on(el, 'mousedown', this._onTapStart);\n\t\t_on(el, 'touchstart', this._onTapStart);\n\t\toptions.supportPointer && _on(el, 'pointerdown', this._onTapStart);\n\n\t\tif (this.nativeDraggable) {\n\t\t\t_on(el, 'dragover', this);\n\t\t\t_on(el, 'dragenter', this);\n\t\t}\n\n\t\ttouchDragOverListeners.push(this._onDragOver);\n\n\t\t// Restore sorting\n\t\toptions.store && this.sort(options.store.get(this));\n\t}\n\n\n\tSortable.prototype = /** @lends Sortable.prototype */ {\n\t\tconstructor: Sortable,\n\n\t\t_onTapStart: function (/** Event|TouchEvent */evt) {\n\t\t\tvar _this = this,\n\t\t\t\tel = this.el,\n\t\t\t\toptions = this.options,\n\t\t\t\tpreventOnFilter = options.preventOnFilter,\n\t\t\t\ttype = evt.type,\n\t\t\t\ttouch = evt.touches && evt.touches[0],\n\t\t\t\ttarget = (touch || evt).target,\n\t\t\t\toriginalTarget = evt.target.shadowRoot && (evt.path && evt.path[0]) || target,\n\t\t\t\tfilter = options.filter,\n\t\t\t\tstartIndex;\n\n\t\t\t_saveInputCheckedState(el);\n\n\n\t\t\t// Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\t\t\tif (dragEl) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n\t\t\t\treturn; // only left button or enabled\n\t\t\t}\n\n\t\t\t// cancel dnd if original target is content editable\n\t\t\tif (originalTarget.isContentEditable) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttarget = _closest(target, options.draggable, el);\n\n\t\t\tif (!target) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (lastDownEl === target) {\n\t\t\t\t// Ignoring duplicate `down`\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Get the index of the dragged element within its parent\n\t\t\tstartIndex = _index(target, options.draggable);\n\n\t\t\t// Check filter\n\t\t\tif (typeof filter === 'function') {\n\t\t\t\tif (filter.call(this, evt, target, this)) {\n\t\t\t\t\t_dispatchEvent(_this, originalTarget, 'filter', target, el, el, startIndex);\n\t\t\t\t\tpreventOnFilter && evt.preventDefault();\n\t\t\t\t\treturn; // cancel dnd\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (filter) {\n\t\t\t\tfilter = filter.split(',').some(function (criteria) {\n\t\t\t\t\tcriteria = _closest(originalTarget, criteria.trim(), el);\n\n\t\t\t\t\tif (criteria) {\n\t\t\t\t\t\t_dispatchEvent(_this, criteria, 'filter', target, el, el, startIndex);\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (filter) {\n\t\t\t\t\tpreventOnFilter && evt.preventDefault();\n\t\t\t\t\treturn; // cancel dnd\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (options.handle && !_closest(originalTarget, options.handle, el)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Prepare `dragstart`\n\t\t\tthis._prepareDragStart(evt, touch, target, startIndex);\n\t\t},\n\n\t\t_prepareDragStart: function (/** Event */evt, /** Touch */touch, /** HTMLElement */target, /** Number */startIndex) {\n\t\t\tvar _this = this,\n\t\t\t\tel = _this.el,\n\t\t\t\toptions = _this.options,\n\t\t\t\townerDocument = el.ownerDocument,\n\t\t\t\tdragStartFn;\n\n\t\t\tif (target && !dragEl && (target.parentNode === el)) {\n\t\t\t\ttapEvt = evt;\n\n\t\t\t\trootEl = el;\n\t\t\t\tdragEl = target;\n\t\t\t\tparentEl = dragEl.parentNode;\n\t\t\t\tnextEl = dragEl.nextSibling;\n\t\t\t\tlastDownEl = target;\n\t\t\t\tactiveGroup = options.group;\n\t\t\t\toldIndex = startIndex;\n\n\t\t\t\tthis._lastX = (touch || evt).clientX;\n\t\t\t\tthis._lastY = (touch || evt).clientY;\n\n\t\t\t\tdragEl.style['will-change'] = 'all';\n\n\t\t\t\tdragStartFn = function () {\n\t\t\t\t\t// Delayed drag has been triggered\n\t\t\t\t\t// we can re-enable the events: touchmove/mousemove\n\t\t\t\t\t_this._disableDelayedDrag();\n\n\t\t\t\t\t// Make the element draggable\n\t\t\t\t\tdragEl.draggable = _this.nativeDraggable;\n\n\t\t\t\t\t// Chosen item\n\t\t\t\t\t_toggleClass(dragEl, options.chosenClass, true);\n\n\t\t\t\t\t// Bind the events: dragstart/dragend\n\t\t\t\t\t_this._triggerDragStart(evt, touch);\n\n\t\t\t\t\t// Drag start event\n\t\t\t\t\t_dispatchEvent(_this, rootEl, 'choose', dragEl, rootEl, rootEl, oldIndex);\n\t\t\t\t};\n\n\t\t\t\t// Disable \"draggable\"\n\t\t\t\toptions.ignore.split(',').forEach(function (criteria) {\n\t\t\t\t\t_find(dragEl, criteria.trim(), _disableDraggable);\n\t\t\t\t});\n\n\t\t\t\t_on(ownerDocument, 'mouseup', _this._onDrop);\n\t\t\t\t_on(ownerDocument, 'touchend', _this._onDrop);\n\t\t\t\t_on(ownerDocument, 'touchcancel', _this._onDrop);\n\t\t\t\t_on(ownerDocument, 'selectstart', _this);\n\t\t\t\toptions.supportPointer && _on(ownerDocument, 'pointercancel', _this._onDrop);\n\n\t\t\t\tif (options.delay) {\n\t\t\t\t\t// If the user moves the pointer or let go the click or touch\n\t\t\t\t\t// before the delay has been reached:\n\t\t\t\t\t// disable the delayed drag\n\t\t\t\t\t_on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n\t\t\t\t\t_on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n\t\t\t\t\t_on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n\t\t\t\t\t_on(ownerDocument, 'mousemove', _this._disableDelayedDrag);\n\t\t\t\t\t_on(ownerDocument, 'touchmove', _this._disableDelayedDrag);\n\t\t\t\t\toptions.supportPointer && _on(ownerDocument, 'pointermove', _this._disableDelayedDrag);\n\n\t\t\t\t\t_this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n\t\t\t\t} else {\n\t\t\t\t\tdragStartFn();\n\t\t\t\t}\n\n\n\t\t\t}\n\t\t},\n\n\t\t_disableDelayedDrag: function () {\n\t\t\tvar ownerDocument = this.el.ownerDocument;\n\n\t\t\tclearTimeout(this._dragStartTimer);\n\t\t\t_off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n\t\t\t_off(ownerDocument, 'touchend', this._disableDelayedDrag);\n\t\t\t_off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n\t\t\t_off(ownerDocument, 'mousemove', this._disableDelayedDrag);\n\t\t\t_off(ownerDocument, 'touchmove', this._disableDelayedDrag);\n\t\t\t_off(ownerDocument, 'pointermove', this._disableDelayedDrag);\n\t\t},\n\n\t\t_triggerDragStart: function (/** Event */evt, /** Touch */touch) {\n\t\t\ttouch = touch || (evt.pointerType == 'touch' ? evt : null);\n\n\t\t\tif (touch) {\n\t\t\t\t// Touch device support\n\t\t\t\ttapEvt = {\n\t\t\t\t\ttarget: dragEl,\n\t\t\t\t\tclientX: touch.clientX,\n\t\t\t\t\tclientY: touch.clientY\n\t\t\t\t};\n\n\t\t\t\tthis._onDragStart(tapEvt, 'touch');\n\t\t\t}\n\t\t\telse if (!this.nativeDraggable) {\n\t\t\t\tthis._onDragStart(tapEvt, true);\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_on(dragEl, 'dragend', this);\n\t\t\t\t_on(rootEl, 'dragstart', this._onDragStart);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tif (document.selection) {\n\t\t\t\t\t// Timeout neccessary for IE9\n\t\t\t\t\t_nextTick(function () {\n\t\t\t\t\t\tdocument.selection.empty();\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t}\n\t\t},\n\n\t\t_dragStarted: function () {\n\t\t\tif (rootEl && dragEl) {\n\t\t\t\tvar options = this.options;\n\n\t\t\t\t// Apply effect\n\t\t\t\t_toggleClass(dragEl, options.ghostClass, true);\n\t\t\t\t_toggleClass(dragEl, options.dragClass, false);\n\n\t\t\t\tSortable.active = this;\n\n\t\t\t\t// Drag start event\n\t\t\t\t_dispatchEvent(this, rootEl, 'start', dragEl, rootEl, rootEl, oldIndex);\n\t\t\t} else {\n\t\t\t\tthis._nulling();\n\t\t\t}\n\t\t},\n\n\t\t_emulateDragOver: function () {\n\t\t\tif (touchEvt) {\n\t\t\t\tif (this._lastX === touchEvt.clientX && this._lastY === touchEvt.clientY) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis._lastX = touchEvt.clientX;\n\t\t\t\tthis._lastY = touchEvt.clientY;\n\n\t\t\t\tif (!supportCssPointerEvents) {\n\t\t\t\t\t_css(ghostEl, 'display', 'none');\n\t\t\t\t}\n\n\t\t\t\tvar target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n\t\t\t\tvar parent = target;\n\t\t\t\tvar i = touchDragOverListeners.length;\n\n\t\t\t\tif (target && target.shadowRoot) {\n\t\t\t\t\ttarget = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n\t\t\t\t\tparent = target;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tdo {\n\t\t\t\t\t\tif (parent[expando]) {\n\t\t\t\t\t\t\twhile (i--) {\n\t\t\t\t\t\t\t\ttouchDragOverListeners[i]({\n\t\t\t\t\t\t\t\t\tclientX: touchEvt.clientX,\n\t\t\t\t\t\t\t\t\tclientY: touchEvt.clientY,\n\t\t\t\t\t\t\t\t\ttarget: target,\n\t\t\t\t\t\t\t\t\trootEl: parent\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttarget = parent; // store last element\n\t\t\t\t\t}\n\t\t\t\t\t/* jshint boss:true */\n\t\t\t\t\twhile (parent = parent.parentNode);\n\t\t\t\t}\n\n\t\t\t\tif (!supportCssPointerEvents) {\n\t\t\t\t\t_css(ghostEl, 'display', '');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\n\t\t_onTouchMove: function (/**TouchEvent*/evt) {\n\t\t\tif (tapEvt) {\n\t\t\t\tvar\toptions = this.options,\n\t\t\t\t\tfallbackTolerance = options.fallbackTolerance,\n\t\t\t\t\tfallbackOffset = options.fallbackOffset,\n\t\t\t\t\ttouch = evt.touches ? evt.touches[0] : evt,\n\t\t\t\t\tdx = (touch.clientX - tapEvt.clientX) + fallbackOffset.x,\n\t\t\t\t\tdy = (touch.clientY - tapEvt.clientY) + fallbackOffset.y,\n\t\t\t\t\ttranslate3d = evt.touches ? 'translate3d(' + dx + 'px,' + dy + 'px,0)' : 'translate(' + dx + 'px,' + dy + 'px)';\n\n\t\t\t\t// only set the status to dragging, when we are actually dragging\n\t\t\t\tif (!Sortable.active) {\n\t\t\t\t\tif (fallbackTolerance &&\n\t\t\t\t\t\tmin(abs(touch.clientX - this._lastX), abs(touch.clientY - this._lastY)) < fallbackTolerance\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._dragStarted();\n\t\t\t\t}\n\n\t\t\t\t// as well as creating the ghost element on the document body\n\t\t\t\tthis._appendGhost();\n\n\t\t\t\tmoved = true;\n\t\t\t\ttouchEvt = touch;\n\n\t\t\t\t_css(ghostEl, 'webkitTransform', translate3d);\n\t\t\t\t_css(ghostEl, 'mozTransform', translate3d);\n\t\t\t\t_css(ghostEl, 'msTransform', translate3d);\n\t\t\t\t_css(ghostEl, 'transform', translate3d);\n\n\t\t\t\tevt.preventDefault();\n\t\t\t}\n\t\t},\n\n\t\t_appendGhost: function () {\n\t\t\tif (!ghostEl) {\n\t\t\t\tvar rect = dragEl.getBoundingClientRect(),\n\t\t\t\t\tcss = _css(dragEl),\n\t\t\t\t\toptions = this.options,\n\t\t\t\t\tghostRect;\n\n\t\t\t\tghostEl = dragEl.cloneNode(true);\n\n\t\t\t\t_toggleClass(ghostEl, options.ghostClass, false);\n\t\t\t\t_toggleClass(ghostEl, options.fallbackClass, true);\n\t\t\t\t_toggleClass(ghostEl, options.dragClass, true);\n\n\t\t\t\t_css(ghostEl, 'top', rect.top - parseInt(css.marginTop, 10));\n\t\t\t\t_css(ghostEl, 'left', rect.left - parseInt(css.marginLeft, 10));\n\t\t\t\t_css(ghostEl, 'width', rect.width);\n\t\t\t\t_css(ghostEl, 'height', rect.height);\n\t\t\t\t_css(ghostEl, 'opacity', '0.8');\n\t\t\t\t_css(ghostEl, 'position', 'fixed');\n\t\t\t\t_css(ghostEl, 'zIndex', '100000');\n\t\t\t\t_css(ghostEl, 'pointerEvents', 'none');\n\n\t\t\t\toptions.fallbackOnBody && document.body.appendChild(ghostEl) || rootEl.appendChild(ghostEl);\n\n\t\t\t\t// Fixing dimensions.\n\t\t\t\tghostRect = ghostEl.getBoundingClientRect();\n\t\t\t\t_css(ghostEl, 'width', rect.width * 2 - ghostRect.width);\n\t\t\t\t_css(ghostEl, 'height', rect.height * 2 - ghostRect.height);\n\t\t\t}\n\t\t},\n\n\t\t_onDragStart: function (/**Event*/evt, /**boolean*/useFallback) {\n\t\t\tvar _this = this;\n\t\t\tvar dataTransfer = evt.dataTransfer;\n\t\t\tvar options = _this.options;\n\n\t\t\t_this._offUpEvents();\n\n\t\t\tif (activeGroup.checkPull(_this, _this, dragEl, evt)) {\n\t\t\t\tcloneEl = _clone(dragEl);\n\n\t\t\t\tcloneEl.draggable = false;\n\t\t\t\tcloneEl.style['will-change'] = '';\n\n\t\t\t\t_css(cloneEl, 'display', 'none');\n\t\t\t\t_toggleClass(cloneEl, _this.options.chosenClass, false);\n\n\t\t\t\t// #1143: IFrame support workaround\n\t\t\t\t_this._cloneId = _nextTick(function () {\n\t\t\t\t\trootEl.insertBefore(cloneEl, dragEl);\n\t\t\t\t\t_dispatchEvent(_this, rootEl, 'clone', dragEl);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t_toggleClass(dragEl, options.dragClass, true);\n\n\t\t\tif (useFallback) {\n\t\t\t\tif (useFallback === 'touch') {\n\t\t\t\t\t// Bind touch events\n\t\t\t\t\t_on(document, 'touchmove', _this._onTouchMove);\n\t\t\t\t\t_on(document, 'touchend', _this._onDrop);\n\t\t\t\t\t_on(document, 'touchcancel', _this._onDrop);\n\n\t\t\t\t\tif (options.supportPointer) {\n\t\t\t\t\t\t_on(document, 'pointermove', _this._onTouchMove);\n\t\t\t\t\t\t_on(document, 'pointerup', _this._onDrop);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Old brwoser\n\t\t\t\t\t_on(document, 'mousemove', _this._onTouchMove);\n\t\t\t\t\t_on(document, 'mouseup', _this._onDrop);\n\t\t\t\t}\n\n\t\t\t\t_this._loopId = setInterval(_this._emulateDragOver, 50);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (dataTransfer) {\n\t\t\t\t\tdataTransfer.effectAllowed = 'move';\n\t\t\t\t\toptions.setData && options.setData.call(_this, dataTransfer, dragEl);\n\t\t\t\t}\n\n\t\t\t\t_on(document, 'drop', _this);\n\n\t\t\t\t// #1143: Бывает элемент с IFrame внутри блокирует `drop`,\n\t\t\t\t// поэтому если вызвался `mouseover`, значит надо отменять весь d'n'd.\n\t\t\t\t// Breaking Chrome 62+\n\t\t\t\t// _on(document, 'mouseover', _this);\n\n\t\t\t\t_this._dragStartId = _nextTick(_this._dragStarted);\n\t\t\t}\n\t\t},\n\n\t\t_onDragOver: function (/**Event*/evt) {\n\t\t\tvar el = this.el,\n\t\t\t\ttarget,\n\t\t\t\tdragRect,\n\t\t\t\ttargetRect,\n\t\t\t\trevert,\n\t\t\t\toptions = this.options,\n\t\t\t\tgroup = options.group,\n\t\t\t\tactiveSortable = Sortable.active,\n\t\t\t\tisOwner = (activeGroup === group),\n\t\t\t\tisMovingBetweenSortable = false,\n\t\t\t\tcanSort = options.sort;\n\n\t\t\tif (evt.preventDefault !== void 0) {\n\t\t\t\tevt.preventDefault();\n\t\t\t\t!options.dragoverBubble && evt.stopPropagation();\n\t\t\t}\n\n\t\t\tif (dragEl.animated) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmoved = true;\n\n\t\t\tif (activeSortable && !options.disabled &&\n\t\t\t\t(isOwner\n\t\t\t\t\t? canSort || (revert = !rootEl.contains(dragEl)) // Reverting item into the original list\n\t\t\t\t\t: (\n\t\t\t\t\t\tputSortable === this ||\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t(activeSortable.lastPullMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) &&\n\t\t\t\t\t\t\tgroup.checkPut(this, activeSortable, dragEl, evt)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t) &&\n\t\t\t\t(evt.rootEl === void 0 || evt.rootEl === this.el) // touch fallback\n\t\t\t) {\n\t\t\t\t// Smart auto-scrolling\n\t\t\t\t_autoScroll(evt, options, this.el);\n\n\t\t\t\tif (_silent) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\ttarget = _closest(evt.target, options.draggable, el);\n\t\t\t\tdragRect = dragEl.getBoundingClientRect();\n\n\t\t\t\tif (putSortable !== this) {\n\t\t\t\t\tputSortable = this;\n\t\t\t\t\tisMovingBetweenSortable = true;\n\t\t\t\t}\n\n\t\t\t\tif (revert) {\n\t\t\t\t\t_cloneHide(activeSortable, true);\n\t\t\t\t\tparentEl = rootEl; // actualization\n\n\t\t\t\t\tif (cloneEl || nextEl) {\n\t\t\t\t\t\trootEl.insertBefore(dragEl, cloneEl || nextEl);\n\t\t\t\t\t}\n\t\t\t\t\telse if (!canSort) {\n\t\t\t\t\t\trootEl.appendChild(dragEl);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\n\t\t\t\tif ((el.children.length === 0) || (el.children[0] === ghostEl) ||\n\t\t\t\t\t(el === evt.target) && (_ghostIsLast(el, evt))\n\t\t\t\t) {\n\t\t\t\t\t//assign target only if condition is true\n\t\t\t\t\tif (el.children.length !== 0 && el.children[0] !== ghostEl && el === evt.target) {\n\t\t\t\t\t\ttarget = el.lastElementChild;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (target) {\n\t\t\t\t\t\tif (target.animated) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttargetRect = target.getBoundingClientRect();\n\t\t\t\t\t}\n\n\t\t\t\t\t_cloneHide(activeSortable, isOwner);\n\n\t\t\t\t\tif (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt) !== false) {\n\t\t\t\t\t\tif (!dragEl.contains(el)) {\n\t\t\t\t\t\t\tel.appendChild(dragEl);\n\t\t\t\t\t\t\tparentEl = el; // actualization\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis._animate(dragRect, dragEl);\n\t\t\t\t\t\ttarget && this._animate(targetRect, target);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (target && !target.animated && target !== dragEl && (target.parentNode[expando] !== void 0)) {\n\t\t\t\t\tif (lastEl !== target) {\n\t\t\t\t\t\tlastEl = target;\n\t\t\t\t\t\tlastCSS = _css(target);\n\t\t\t\t\t\tlastParentCSS = _css(target.parentNode);\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetRect = target.getBoundingClientRect();\n\n\t\t\t\t\tvar width = targetRect.right - targetRect.left,\n\t\t\t\t\t\theight = targetRect.bottom - targetRect.top,\n\t\t\t\t\t\tfloating = R_FLOAT.test(lastCSS.cssFloat + lastCSS.display)\n\t\t\t\t\t\t\t|| (lastParentCSS.display == 'flex' && lastParentCSS['flex-direction'].indexOf('row') === 0),\n\t\t\t\t\t\tisWide = (target.offsetWidth > dragEl.offsetWidth),\n\t\t\t\t\t\tisLong = (target.offsetHeight > dragEl.offsetHeight),\n\t\t\t\t\t\thalfway = (floating ? (evt.clientX - targetRect.left) / width : (evt.clientY - targetRect.top) / height) > 0.5,\n\t\t\t\t\t\tnextSibling = target.nextElementSibling,\n\t\t\t\t\t\tafter = false\n\t\t\t\t\t;\n\n\t\t\t\t\tif (floating) {\n\t\t\t\t\t\tvar elTop = dragEl.offsetTop,\n\t\t\t\t\t\t\ttgTop = target.offsetTop;\n\n\t\t\t\t\t\tif (elTop === tgTop) {\n\t\t\t\t\t\t\tafter = (target.previousElementSibling === dragEl) && !isWide || halfway && isWide;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (target.previousElementSibling === dragEl || dragEl.previousElementSibling === target) {\n\t\t\t\t\t\t\tafter = (evt.clientY - targetRect.top) / height > 0.5;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tafter = tgTop > elTop;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (!isMovingBetweenSortable) {\n\t\t\t\t\t\tafter = (nextSibling !== dragEl) && !isLong || halfway && isLong;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n\t\t\t\t\tif (moveVector !== false) {\n\t\t\t\t\t\tif (moveVector === 1 || moveVector === -1) {\n\t\t\t\t\t\t\tafter = (moveVector === 1);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_silent = true;\n\t\t\t\t\t\tsetTimeout(_unsilent, 30);\n\n\t\t\t\t\t\t_cloneHide(activeSortable, isOwner);\n\n\t\t\t\t\t\tif (!dragEl.contains(el)) {\n\t\t\t\t\t\t\tif (after && !nextSibling) {\n\t\t\t\t\t\t\t\tel.appendChild(dragEl);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttarget.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tparentEl = dragEl.parentNode; // actualization\n\n\t\t\t\t\t\tthis._animate(dragRect, dragEl);\n\t\t\t\t\t\tthis._animate(targetRect, target);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t_animate: function (prevRect, target) {\n\t\t\tvar ms = this.options.animation;\n\n\t\t\tif (ms) {\n\t\t\t\tvar currentRect = target.getBoundingClientRect();\n\n\t\t\t\tif (prevRect.nodeType === 1) {\n\t\t\t\t\tprevRect = prevRect.getBoundingClientRect();\n\t\t\t\t}\n\n\t\t\t\t_css(target, 'transition', 'none');\n\t\t\t\t_css(target, 'transform', 'translate3d('\n\t\t\t\t\t+ (prevRect.left - currentRect.left) + 'px,'\n\t\t\t\t\t+ (prevRect.top - currentRect.top) + 'px,0)'\n\t\t\t\t);\n\n\t\t\t\ttarget.offsetWidth; // repaint\n\n\t\t\t\t_css(target, 'transition', 'all ' + ms + 'ms');\n\t\t\t\t_css(target, 'transform', 'translate3d(0,0,0)');\n\n\t\t\t\tclearTimeout(target.animated);\n\t\t\t\ttarget.animated = setTimeout(function () {\n\t\t\t\t\t_css(target, 'transition', '');\n\t\t\t\t\t_css(target, 'transform', '');\n\t\t\t\t\ttarget.animated = false;\n\t\t\t\t}, ms);\n\t\t\t}\n\t\t},\n\n\t\t_offUpEvents: function () {\n\t\t\tvar ownerDocument = this.el.ownerDocument;\n\n\t\t\t_off(document, 'touchmove', this._onTouchMove);\n\t\t\t_off(document, 'pointermove', this._onTouchMove);\n\t\t\t_off(ownerDocument, 'mouseup', this._onDrop);\n\t\t\t_off(ownerDocument, 'touchend', this._onDrop);\n\t\t\t_off(ownerDocument, 'pointerup', this._onDrop);\n\t\t\t_off(ownerDocument, 'touchcancel', this._onDrop);\n\t\t\t_off(ownerDocument, 'pointercancel', this._onDrop);\n\t\t\t_off(ownerDocument, 'selectstart', this);\n\t\t},\n\n\t\t_onDrop: function (/**Event*/evt) {\n\t\t\tvar el = this.el,\n\t\t\t\toptions = this.options;\n\n\t\t\tclearInterval(this._loopId);\n\t\t\tclearInterval(autoScroll.pid);\n\t\t\tclearTimeout(this._dragStartTimer);\n\n\t\t\t_cancelNextTick(this._cloneId);\n\t\t\t_cancelNextTick(this._dragStartId);\n\n\t\t\t// Unbind events\n\t\t\t_off(document, 'mouseover', this);\n\t\t\t_off(document, 'mousemove', this._onTouchMove);\n\n\t\t\tif (this.nativeDraggable) {\n\t\t\t\t_off(document, 'drop', this);\n\t\t\t\t_off(el, 'dragstart', this._onDragStart);\n\t\t\t}\n\n\t\t\tthis._offUpEvents();\n\n\t\t\tif (evt) {\n\t\t\t\tif (moved) {\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\t!options.dropBubble && evt.stopPropagation();\n\t\t\t\t}\n\n\t\t\t\tghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n\t\t\t\tif (rootEl === parentEl || Sortable.active.lastPullMode !== 'clone') {\n\t\t\t\t\t// Remove clone\n\t\t\t\t\tcloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n\t\t\t\t}\n\n\t\t\t\tif (dragEl) {\n\t\t\t\t\tif (this.nativeDraggable) {\n\t\t\t\t\t\t_off(dragEl, 'dragend', this);\n\t\t\t\t\t}\n\n\t\t\t\t\t_disableDraggable(dragEl);\n\t\t\t\t\tdragEl.style['will-change'] = '';\n\n\t\t\t\t\t// Remove class's\n\t\t\t\t\t_toggleClass(dragEl, this.options.ghostClass, false);\n\t\t\t\t\t_toggleClass(dragEl, this.options.chosenClass, false);\n\n\t\t\t\t\t// Drag stop event\n\t\t\t\t\t_dispatchEvent(this, rootEl, 'unchoose', dragEl, parentEl, rootEl, oldIndex);\n\n\t\t\t\t\tif (rootEl !== parentEl) {\n\t\t\t\t\t\tnewIndex = _index(dragEl, options.draggable);\n\n\t\t\t\t\t\tif (newIndex >= 0) {\n\t\t\t\t\t\t\t// Add event\n\t\t\t\t\t\t\t_dispatchEvent(null, parentEl, 'add', dragEl, parentEl, rootEl, oldIndex, newIndex);\n\n\t\t\t\t\t\t\t// Remove event\n\t\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'remove', dragEl, parentEl, rootEl, oldIndex, newIndex);\n\n\t\t\t\t\t\t\t// drag from one list and drop into another\n\t\t\t\t\t\t\t_dispatchEvent(null, parentEl, 'sort', dragEl, parentEl, rootEl, oldIndex, newIndex);\n\t\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'sort', dragEl, parentEl, rootEl, oldIndex, newIndex);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (dragEl.nextSibling !== nextEl) {\n\t\t\t\t\t\t\t// Get the index of the dragged element within its parent\n\t\t\t\t\t\t\tnewIndex = _index(dragEl, options.draggable);\n\n\t\t\t\t\t\t\tif (newIndex >= 0) {\n\t\t\t\t\t\t\t\t// drag & drop within the same list\n\t\t\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'update', dragEl, parentEl, rootEl, oldIndex, newIndex);\n\t\t\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'sort', dragEl, parentEl, rootEl, oldIndex, newIndex);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (Sortable.active) {\n\t\t\t\t\t\t/* jshint eqnull:true */\n\t\t\t\t\t\tif (newIndex == null || newIndex === -1) {\n\t\t\t\t\t\t\tnewIndex = oldIndex;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'end', dragEl, parentEl, rootEl, oldIndex, newIndex);\n\n\t\t\t\t\t\t// Save sorting\n\t\t\t\t\t\tthis.save();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._nulling();\n\t\t},\n\n\t\t_nulling: function() {\n\t\t\trootEl =\n\t\t\tdragEl =\n\t\t\tparentEl =\n\t\t\tghostEl =\n\t\t\tnextEl =\n\t\t\tcloneEl =\n\t\t\tlastDownEl =\n\n\t\t\tscrollEl =\n\t\t\tscrollParentEl =\n\n\t\t\ttapEvt =\n\t\t\ttouchEvt =\n\n\t\t\tmoved =\n\t\t\tnewIndex =\n\n\t\t\tlastEl =\n\t\t\tlastCSS =\n\n\t\t\tputSortable =\n\t\t\tactiveGroup =\n\t\t\tSortable.active = null;\n\n\t\t\tsavedInputChecked.forEach(function (el) {\n\t\t\t\tel.checked = true;\n\t\t\t});\n\t\t\tsavedInputChecked.length = 0;\n\t\t},\n\n\t\thandleEvent: function (/**Event*/evt) {\n\t\t\tswitch (evt.type) {\n\t\t\t\tcase 'drop':\n\t\t\t\tcase 'dragend':\n\t\t\t\t\tthis._onDrop(evt);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'dragover':\n\t\t\t\tcase 'dragenter':\n\t\t\t\t\tif (dragEl) {\n\t\t\t\t\t\tthis._onDragOver(evt);\n\t\t\t\t\t\t_globalDragOver(evt);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'mouseover':\n\t\t\t\t\tthis._onDrop(evt);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'selectstart':\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t * Serializes the item into an array of string.\n\t\t * @returns {String[]}\n\t\t */\n\t\ttoArray: function () {\n\t\t\tvar order = [],\n\t\t\t\tel,\n\t\t\t\tchildren = this.el.children,\n\t\t\t\ti = 0,\n\t\t\t\tn = children.length,\n\t\t\t\toptions = this.options;\n\n\t\t\tfor (; i < n; i++) {\n\t\t\t\tel = children[i];\n\t\t\t\tif (_closest(el, options.draggable, this.el)) {\n\t\t\t\t\torder.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn order;\n\t\t},\n\n\n\t\t/**\n\t\t * Sorts the elements according to the array.\n\t\t * @param {String[]} order order of the items\n\t\t */\n\t\tsort: function (order) {\n\t\t\tvar items = {}, rootEl = this.el;\n\n\t\t\tthis.toArray().forEach(function (id, i) {\n\t\t\t\tvar el = rootEl.children[i];\n\n\t\t\t\tif (_closest(el, this.options.draggable, rootEl)) {\n\t\t\t\t\titems[id] = el;\n\t\t\t\t}\n\t\t\t}, this);\n\n\t\t\torder.forEach(function (id) {\n\t\t\t\tif (items[id]) {\n\t\t\t\t\trootEl.removeChild(items[id]);\n\t\t\t\t\trootEl.appendChild(items[id]);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n\t\t * Save the current sorting\n\t\t */\n\t\tsave: function () {\n\t\t\tvar store = this.options.store;\n\t\t\tstore && store.set(this);\n\t\t},\n\n\n\t\t/**\n\t\t * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n\t\t * @param {HTMLElement} el\n\t\t * @param {String} [selector] default: `options.draggable`\n\t\t * @returns {HTMLElement|null}\n\t\t */\n\t\tclosest: function (el, selector) {\n\t\t\treturn _closest(el, selector || this.options.draggable, this.el);\n\t\t},\n\n\n\t\t/**\n\t\t * Set/get option\n\t\t * @param {string} name\n\t\t * @param {*} [value]\n\t\t * @returns {*}\n\t\t */\n\t\toption: function (name, value) {\n\t\t\tvar options = this.options;\n\n\t\t\tif (value === void 0) {\n\t\t\t\treturn options[name];\n\t\t\t} else {\n\t\t\t\toptions[name] = value;\n\n\t\t\t\tif (name === 'group') {\n\t\t\t\t\t_prepareGroup(options);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\n\t\t/**\n\t\t * Destroy\n\t\t */\n\t\tdestroy: function () {\n\t\t\tvar el = this.el;\n\n\t\t\tel[expando] = null;\n\n\t\t\t_off(el, 'mousedown', this._onTapStart);\n\t\t\t_off(el, 'touchstart', this._onTapStart);\n\t\t\t_off(el, 'pointerdown', this._onTapStart);\n\n\t\t\tif (this.nativeDraggable) {\n\t\t\t\t_off(el, 'dragover', this);\n\t\t\t\t_off(el, 'dragenter', this);\n\t\t\t}\n\n\t\t\t// Remove draggable attributes\n\t\t\tArray.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n\t\t\t\tel.removeAttribute('draggable');\n\t\t\t});\n\n\t\t\ttouchDragOverListeners.splice(touchDragOverListeners.indexOf(this._onDragOver), 1);\n\n\t\t\tthis._onDrop();\n\n\t\t\tthis.el = el = null;\n\t\t}\n\t};\n\n\n\tfunction _cloneHide(sortable, state) {\n\t\tif (sortable.lastPullMode !== 'clone') {\n\t\t\tstate = true;\n\t\t}\n\n\t\tif (cloneEl && (cloneEl.state !== state)) {\n\t\t\t_css(cloneEl, 'display', state ? 'none' : '');\n\n\t\t\tif (!state) {\n\t\t\t\tif (cloneEl.state) {\n\t\t\t\t\tif (sortable.options.group.revertClone) {\n\t\t\t\t\t\trootEl.insertBefore(cloneEl, nextEl);\n\t\t\t\t\t\tsortable._animate(dragEl, cloneEl);\n\t\t\t\t\t} else {\n\t\t\t\t\t\trootEl.insertBefore(cloneEl, dragEl);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcloneEl.state = state;\n\t\t}\n\t}\n\n\n\tfunction _closest(/**HTMLElement*/el, /**String*/selector, /**HTMLElement*/ctx) {\n\t\tif (el) {\n\t\t\tctx = ctx || document;\n\n\t\t\tdo {\n\t\t\t\tif ((selector === '>*' && el.parentNode === ctx) || _matches(el, selector)) {\n\t\t\t\t\treturn el;\n\t\t\t\t}\n\t\t\t\t/* jshint boss:true */\n\t\t\t} while (el = _getParentOrHost(el));\n\t\t}\n\n\t\treturn null;\n\t}\n\n\n\tfunction _getParentOrHost(el) {\n\t\tvar parent = el.host;\n\n\t\treturn (parent && parent.nodeType) ? parent : el.parentNode;\n\t}\n\n\n\tfunction _globalDragOver(/**Event*/evt) {\n\t\tif (evt.dataTransfer) {\n\t\t\tevt.dataTransfer.dropEffect = 'move';\n\t\t}\n\t\tevt.preventDefault();\n\t}\n\n\n\tfunction _on(el, event, fn) {\n\t\tel.addEventListener(event, fn, captureMode);\n\t}\n\n\n\tfunction _off(el, event, fn) {\n\t\tel.removeEventListener(event, fn, captureMode);\n\t}\n\n\n\tfunction _toggleClass(el, name, state) {\n\t\tif (el) {\n\t\t\tif (el.classList) {\n\t\t\t\tel.classList[state ? 'add' : 'remove'](name);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tvar className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n\t\t\t\tel.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n\t\t\t}\n\t\t}\n\t}\n\n\n\tfunction _css(el, prop, val) {\n\t\tvar style = el && el.style;\n\n\t\tif (style) {\n\t\t\tif (val === void 0) {\n\t\t\t\tif (document.defaultView && document.defaultView.getComputedStyle) {\n\t\t\t\t\tval = document.defaultView.getComputedStyle(el, '');\n\t\t\t\t}\n\t\t\t\telse if (el.currentStyle) {\n\t\t\t\t\tval = el.currentStyle;\n\t\t\t\t}\n\n\t\t\t\treturn prop === void 0 ? val : val[prop];\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (!(prop in style)) {\n\t\t\t\t\tprop = '-webkit-' + prop;\n\t\t\t\t}\n\n\t\t\t\tstyle[prop] = val + (typeof val === 'string' ? '' : 'px');\n\t\t\t}\n\t\t}\n\t}\n\n\n\tfunction _find(ctx, tagName, iterator) {\n\t\tif (ctx) {\n\t\t\tvar list = ctx.getElementsByTagName(tagName), i = 0, n = list.length;\n\n\t\t\tif (iterator) {\n\t\t\t\tfor (; i < n; i++) {\n\t\t\t\t\titerator(list[i], i);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn list;\n\t\t}\n\n\t\treturn [];\n\t}\n\n\n\n\tfunction _dispatchEvent(sortable, rootEl, name, targetEl, toEl, fromEl, startIndex, newIndex) {\n\t\tsortable = (sortable || rootEl[expando]);\n\n\t\tvar evt = document.createEvent('Event'),\n\t\t\toptions = sortable.options,\n\t\t\tonName = 'on' + name.charAt(0).toUpperCase() + name.substr(1);\n\n\t\tevt.initEvent(name, true, true);\n\n\t\tevt.to = toEl || rootEl;\n\t\tevt.from = fromEl || rootEl;\n\t\tevt.item = targetEl || rootEl;\n\t\tevt.clone = cloneEl;\n\n\t\tevt.oldIndex = startIndex;\n\t\tevt.newIndex = newIndex;\n\n\t\trootEl.dispatchEvent(evt);\n\n\t\tif (options[onName]) {\n\t\t\toptions[onName].call(sortable, evt);\n\t\t}\n\t}\n\n\n\tfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvt, willInsertAfter) {\n\t\tvar evt,\n\t\t\tsortable = fromEl[expando],\n\t\t\tonMoveFn = sortable.options.onMove,\n\t\t\tretVal;\n\n\t\tevt = document.createEvent('Event');\n\t\tevt.initEvent('move', true, true);\n\n\t\tevt.to = toEl;\n\t\tevt.from = fromEl;\n\t\tevt.dragged = dragEl;\n\t\tevt.draggedRect = dragRect;\n\t\tevt.related = targetEl || toEl;\n\t\tevt.relatedRect = targetRect || toEl.getBoundingClientRect();\n\t\tevt.willInsertAfter = willInsertAfter;\n\n\t\tfromEl.dispatchEvent(evt);\n\n\t\tif (onMoveFn) {\n\t\t\tretVal = onMoveFn.call(sortable, evt, originalEvt);\n\t\t}\n\n\t\treturn retVal;\n\t}\n\n\n\tfunction _disableDraggable(el) {\n\t\tel.draggable = false;\n\t}\n\n\n\tfunction _unsilent() {\n\t\t_silent = false;\n\t}\n\n\n\t/** @returns {HTMLElement|false} */\n\tfunction _ghostIsLast(el, evt) {\n\t\tvar lastEl = el.lastElementChild,\n\t\t\trect = lastEl.getBoundingClientRect();\n\n\t\t// 5 — min delta\n\t\t// abs — нельзя добавлять, а то глюки при наведении сверху\n\t\treturn (evt.clientY - (rect.top + rect.height) > 5) ||\n\t\t\t(evt.clientX - (rect.left + rect.width) > 5);\n\t}\n\n\n\t/**\n\t * Generate id\n\t * @param {HTMLElement} el\n\t * @returns {String}\n\t * @private\n\t */\n\tfunction _generateId(el) {\n\t\tvar str = el.tagName + el.className + el.src + el.href + el.textContent,\n\t\t\ti = str.length,\n\t\t\tsum = 0;\n\n\t\twhile (i--) {\n\t\t\tsum += str.charCodeAt(i);\n\t\t}\n\n\t\treturn sum.toString(36);\n\t}\n\n\t/**\n\t * Returns the index of an element within its parent for a selected set of\n\t * elements\n\t * @param {HTMLElement} el\n\t * @param {selector} selector\n\t * @return {number}\n\t */\n\tfunction _index(el, selector) {\n\t\tvar index = 0;\n\n\t\tif (!el || !el.parentNode) {\n\t\t\treturn -1;\n\t\t}\n\n\t\twhile (el && (el = el.previousElementSibling)) {\n\t\t\tif ((el.nodeName.toUpperCase() !== 'TEMPLATE') && (selector === '>*' || _matches(el, selector))) {\n\t\t\t\tindex++;\n\t\t\t}\n\t\t}\n\n\t\treturn index;\n\t}\n\n\tfunction _matches(/**HTMLElement*/el, /**String*/selector) {\n\t\tif (el) {\n\t\t\tselector = selector.split('.');\n\n\t\t\tvar tag = selector.shift().toUpperCase(),\n\t\t\t\tre = new RegExp('\\\\s(' + selector.join('|') + ')(?=\\\\s)', 'g');\n\n\t\t\treturn (\n\t\t\t\t(tag === '' || el.nodeName.toUpperCase() == tag) &&\n\t\t\t\t(!selector.length || ((' ' + el.className + ' ').match(re) || []).length == selector.length)\n\t\t\t);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tfunction _throttle(callback, ms) {\n\t\tvar args, _this;\n\n\t\treturn function () {\n\t\t\tif (args === void 0) {\n\t\t\t\targs = arguments;\n\t\t\t\t_this = this;\n\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tif (args.length === 1) {\n\t\t\t\t\t\tcallback.call(_this, args[0]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcallback.apply(_this, args);\n\t\t\t\t\t}\n\n\t\t\t\t\targs = void 0;\n\t\t\t\t}, ms);\n\t\t\t}\n\t\t};\n\t}\n\n\tfunction _extend(dst, src) {\n\t\tif (dst && src) {\n\t\t\tfor (var key in src) {\n\t\t\t\tif (src.hasOwnProperty(key)) {\n\t\t\t\t\tdst[key] = src[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn dst;\n\t}\n\n\tfunction _clone(el) {\n\t\tif (Polymer && Polymer.dom) {\n\t\t\treturn Polymer.dom(el).cloneNode(true);\n\t\t}\n\t\telse if ($) {\n\t\t\treturn $(el).clone(true)[0];\n\t\t}\n\t\telse {\n\t\t\treturn el.cloneNode(true);\n\t\t}\n\t}\n\n\tfunction _saveInputCheckedState(root) {\n\t\tvar inputs = root.getElementsByTagName('input');\n\t\tvar idx = inputs.length;\n\n\t\twhile (idx--) {\n\t\t\tvar el = inputs[idx];\n\t\t\tel.checked && savedInputChecked.push(el);\n\t\t}\n\t}\n\n\tfunction _nextTick(fn) {\n\t\treturn setTimeout(fn, 0);\n\t}\n\n\tfunction _cancelNextTick(id) {\n\t\treturn clearTimeout(id);\n\t}\n\n\t// Fixed #973:\n\t_on(document, 'touchmove', function (evt) {\n\t\tif (Sortable.active) {\n\t\t\tevt.preventDefault();\n\t\t}\n\t});\n\n\t// Export utils\n\tSortable.utils = {\n\t\ton: _on,\n\t\toff: _off,\n\t\tcss: _css,\n\t\tfind: _find,\n\t\tis: function (el, selector) {\n\t\t\treturn !!_closest(el, selector, el);\n\t\t},\n\t\textend: _extend,\n\t\tthrottle: _throttle,\n\t\tclosest: _closest,\n\t\ttoggleClass: _toggleClass,\n\t\tclone: _clone,\n\t\tindex: _index,\n\t\tnextTick: _nextTick,\n\t\tcancelNextTick: _cancelNextTick\n\t};\n\n\n\t/**\n\t * Create sortable instance\n\t * @param {HTMLElement} el\n\t * @param {Object} [options]\n\t */\n\tSortable.create = function (el, options) {\n\t\treturn new Sortable(el, options);\n\t};\n\n\n\t// Export\n\tSortable.version = '1.7.0';\n\treturn Sortable;\n});\n","/* eslint-disable class-methods-use-this, no-underscore-dangle, no-param-reassign, no-unused-vars, func-names, max-len */\n\nimport $ from 'jquery';\nimport Sortable from 'sortablejs';\n\nimport flash from './flash';\nimport axios from './lib/utils/axios_utils';\n\nexport default class LabelManager {\n constructor({ togglePriorityButton, prioritizedLabels, otherLabels } = {}) {\n this.togglePriorityButton = togglePriorityButton || $('.js-toggle-priority');\n this.prioritizedLabels = prioritizedLabels || $('.js-prioritized-labels');\n this.otherLabels = otherLabels || $('.js-other-labels');\n this.errorMessage = 'Unable to update label prioritization at this time';\n this.emptyState = document.querySelector('#js-priority-labels-empty-state');\n this.$badgeItemTemplate = $('#js-badge-item-template');\n this.sortable = Sortable.create(this.prioritizedLabels.get(0), {\n filter: '.empty-message',\n forceFallback: true,\n fallbackClass: 'is-dragging',\n dataIdAttr: 'data-id',\n onUpdate: this.onPrioritySortUpdate.bind(this),\n });\n this.bindEvents();\n }\n\n bindEvents() {\n this.prioritizedLabels.find('.btn-action').on('mousedown', this, this.onButtonActionClick);\n return this.togglePriorityButton.on('click', this, this.onTogglePriorityClick);\n }\n\n onTogglePriorityClick(e) {\n e.preventDefault();\n const _this = e.data;\n const $btn = $(e.currentTarget);\n const $label = $(`#${$btn.data('domId')}`);\n const action = $btn.parents('.js-prioritized-labels').length ? 'remove' : 'add';\n const $tooltip = $(`#${$btn.find('.has-tooltip:visible').attr('aria-describedby')}`);\n $tooltip.tooltip('dispose');\n _this.toggleLabelPriority($label, action);\n _this.toggleEmptyState($label, $btn, action);\n }\n\n onButtonActionClick(e) {\n e.stopPropagation();\n $(e.currentTarget).tooltip('hide');\n }\n\n toggleEmptyState($label, $btn, action) {\n this.emptyState.classList.toggle('hidden', !!this.prioritizedLabels[0].querySelector(':scope > li'));\n }\n\n toggleLabelPriority($label, action, persistState) {\n if (persistState == null) {\n persistState = true;\n }\n const _this = this;\n const url = $label.find('.js-toggle-priority').data('url');\n let $target = this.prioritizedLabels;\n let $from = this.otherLabels;\n const rollbackLabelPosition = this.rollbackLabelPosition.bind(this, $label, action);\n\n if (action === 'remove') {\n $target = this.otherLabels;\n $from = this.prioritizedLabels;\n }\n\n const $detachedLabel = $label.detach();\n this.toggleLabelPriorityBadge($detachedLabel, action);\n $detachedLabel.appendTo($target);\n\n if ($from.find('li').length) {\n $from.find('.empty-message').removeClass('hidden');\n }\n if ($target.find('> li:not(.empty-message)').length) {\n $target.find('.empty-message').addClass('hidden');\n }\n // Return if we are not persisting state\n if (!persistState) {\n return;\n }\n if (action === 'remove') {\n axios.delete(url)\n .catch(rollbackLabelPosition);\n\n // Restore empty message\n if (!$from.find('li').length) {\n $from.find('.empty-message').removeClass('hidden');\n }\n } else {\n this.savePrioritySort($label, action)\n .catch(rollbackLabelPosition);\n }\n }\n\n toggleLabelPriorityBadge($label, action) {\n if (action === 'remove') {\n $('.js-priority-badge', $label).remove();\n } else {\n $('.label-links', $label).append(this.$badgeItemTemplate.clone().html());\n }\n }\n\n onPrioritySortUpdate() {\n this.savePrioritySort()\n .catch(() => flash(this.errorMessage));\n }\n\n savePrioritySort() {\n return axios.post(this.prioritizedLabels.data('url'), {\n label_ids: this.getSortedLabelsIds(),\n });\n }\n\n rollbackLabelPosition($label, originalAction) {\n const action = originalAction === 'remove' ? 'add' : 'remove';\n this.toggleLabelPriority($label, action, false);\n flash(this.errorMessage);\n }\n\n getSortedLabelsIds() {\n const sortedIds = [];\n this.prioritizedLabels.find('> li').each(function() {\n const id = $(this).data('id');\n\n if (id) {\n sortedIds.push(id);\n }\n });\n return sortedIds;\n }\n}\n","import $ from 'jquery';\nimport { __ } from '~/locale';\nimport axios from './lib/utils/axios_utils';\nimport flash from './flash';\n\nconst tooltipTitles = {\n group: __('Unsubscribe at group level'),\n project: __('Unsubscribe at project level'),\n};\n\nexport default class GroupLabelSubscription {\n constructor(container) {\n const $container = $(container);\n this.$dropdown = $container.find('.dropdown');\n this.$subscribeButtons = $container.find('.js-subscribe-button');\n this.$unsubscribeButtons = $container.find('.js-unsubscribe-button');\n\n this.$subscribeButtons.on('click', this.subscribe.bind(this));\n this.$unsubscribeButtons.on('click', this.unsubscribe.bind(this));\n }\n\n unsubscribe(event) {\n event.preventDefault();\n\n const url = this.$unsubscribeButtons.attr('data-url');\n axios.post(url)\n .then(() => {\n this.toggleSubscriptionButtons();\n this.$unsubscribeButtons.removeAttr('data-url');\n })\n .catch(() => flash(__('There was an error when unsubscribing from this label.')));\n }\n\n subscribe(event) {\n event.preventDefault();\n\n const $btn = $(event.currentTarget);\n const url = $btn.attr('data-url');\n\n this.$unsubscribeButtons.attr('data-url', url);\n\n axios.post(url)\n .then(() => GroupLabelSubscription.setNewTooltip($btn))\n .then(() => this.toggleSubscriptionButtons())\n .catch(() => flash(__('There was an error when subscribing to this label.')));\n }\n\n toggleSubscriptionButtons() {\n this.$dropdown.toggleClass('hidden');\n this.$subscribeButtons.toggleClass('hidden');\n this.$unsubscribeButtons.toggleClass('hidden');\n }\n\n static setNewTooltip($button) {\n if (!$button.hasClass('js-subscribe-button')) return;\n\n const type = $button.hasClass('js-group-level') ? 'group' : 'project';\n const newTitle = tooltipTitles[type];\n\n $('.js-unsubscribe-button', $button.closest('.label-actions-list'))\n .tooltip('hide').attr('title', newTitle).tooltip('_fixTitle');\n }\n}\n","import $ from 'jquery';\nimport { __ } from './locale';\nimport axios from './lib/utils/axios_utils';\nimport flash from './flash';\n\nconst tooltipTitles = {\n group: {\n subscribed: __('Unsubscribe at group level'),\n unsubscribed: __('Subscribe at group level'),\n },\n project: {\n subscribed: __('Unsubscribe at project level'),\n unsubscribed: __('Subscribe at project level'),\n },\n};\n\nexport default class ProjectLabelSubscription {\n constructor(container) {\n this.$container = $(container);\n this.$buttons = this.$container.find('.js-subscribe-button');\n\n this.$buttons.on('click', this.toggleSubscription.bind(this));\n }\n\n toggleSubscription(event) {\n event.preventDefault();\n\n const $btn = $(event.currentTarget);\n const url = $btn.attr('data-url');\n const oldStatus = $btn.attr('data-status');\n\n $btn.addClass('disabled');\n\n axios.post(url).then(() => {\n let newStatus;\n let newAction;\n\n if (oldStatus === 'unsubscribed') {\n [newStatus, newAction] = ['subscribed', 'Unsubscribe'];\n } else {\n [newStatus, newAction] = ['unsubscribed', 'Subscribe'];\n }\n\n $btn.removeClass('disabled');\n\n this.$buttons.attr('data-status', newStatus);\n this.$buttons.find('> span').text(newAction);\n\n this.$buttons.map((i, button) => {\n const $button = $(button);\n const originalTitle = $button.attr('data-original-title');\n\n if (originalTitle) {\n ProjectLabelSubscription.setNewTitle($button, originalTitle, newStatus, newAction);\n }\n\n return button;\n });\n }).catch(() => flash(__('There was an error subscribing to this label.')));\n }\n\n static setNewTitle($button, originalTitle, newStatus) {\n const type = /group/.test(originalTitle) ? 'group' : 'project';\n const newTitle = tooltipTitles[type][newStatus];\n\n $button.attr('title', newTitle).tooltip('_fixTitle');\n }\n}\n","import $ from 'jquery';\nimport LabelManager from './label_manager';\nimport GroupLabelSubscription from './group_label_subscription';\nimport ProjectLabelSubscription from './project_label_subscription';\n\nexport default () => {\n if ($('.prioritized-labels').length) {\n new LabelManager(); // eslint-disable-line no-new\n }\n $('.label-subscription').each((i, el) => {\n const $el = $(el);\n\n if ($el.find('.dropdown-group-label').length) {\n new GroupLabelSubscription($el); // eslint-disable-line no-new\n } else {\n new ProjectLabelSubscription($el); // eslint-disable-line no-new\n }\n });\n};\n"],"sourceRoot":""}