_exports.__aria_grabbed_elements__ = []; _exports.__aria_dropeffect_elements__ = [];

enterPressed = function(keyCode) {

var enter1, enter2;
enter1 = '\n'.charCodeAt(0);
enter2 = '\r'.charCodeAt(0);
return (keyCode === enter1) || (keyCode === enter2);

};

keyboardAccess = function(element) {

var tag;
if (!element.hasAttribute('tabindex')) {
        tag = element.tagName.toUpperCase();
        if ((tag === 'A') && (!element.hasAttribute('href'))) {
                element.setAttribute('tabindex', '0');
        } else if ((tag !== 'INPUT') && (tag !== 'BUTTON') && (tag !== 'SELECT') && (tag !== 'TEXTAREA')) {
                element.setAttribute('tabindex', '0');
        }
}

};

clearDropEffect = function() {

var activeEvents, dragEvents, droppedElement, droppedElements, hoverEvents, _i, _len;
droppedElements = __exports.__aria_dropeffect__elements__;
for (_i = 0, _len = droppedElements.length; _i < _len; _i++) {
        droppedElement = droppedElements[_i];
        dragEvents = (!hasEvent(droppedElement, 'keydown', 'data-keydownadded', 'drag')) && (!hasEvent(droppedElement, 'keyup', 'data-keyupadded', 'drag'));
        activeEvents = (!droppedElement.hasAttribute('data-keypressadded')) && (!hasEvent(droppedElement, 'keydown', 'data-keydownadded', 'active')) && (!hasEvent(droppedElement, 'keyup', 'data-keyupadded', 'active'));
        hoverEvents = (!hasEvent(droppedElement, 'focus', 'data-focusadded', 'hover')) && (!hasEvent(droppedElement, 'blur', 'data-bluradded', 'hover'));
        droppedElement.setAttribute('aria-dropeffect', 'none');
        if (droppedElement.hasAttribute('tabindex') && dragEvents && activeEvents && hoverEvents) {
                droppedElement.removeAttribute('tabindex');
        }
}

};

generateDropEffect = function() {

var ariaDropEffect, dropEffect, droppedElement, droppedElements, effectAllowed, _i, _len;
dropEffect = __exports.__dragEventDataTransfer__.dropEffect;
effectAllowed = __exports.__dragEventDataTransfer__.effectAllowed;
if ((dropEffect === 'none') || ((dropEffect !== 'copy') && (dropEffect !== 'link') && (dropEffect !== 'move'))) {
        if ((effectAllowed === 'copyLink') || (effectAllowed === 'copyMove') || (effectAllowed === 'linkMove') || (effectAllowed === 'all')) {
                ariaDropEffect = 'popup';
        } else if ((effectAllowed === 'copy') || (effectAllowed === 'move') || (effectAllowed === 'link')) {
                ariaDropEffect = effectAllowed;
        } else {
                ariaDropEffect = 'move';
        }
} else {
        ariaDropEffect = dropEffect;
}
droppedElements = __exports.__aria_dropeffect__elements__;
for (_i = 0, _len = droppedElements.length; _i < _len; _i++) {
        droppedElement = droppedElements[_i];
        if (hasEvent(droppedElement, 'drop')) {
                droppedElement.setAttribute('aria-dropeffect', ariaDropEffect);
        }
        keyboardAccess(droppedElement);
}

};

executeMouseEvent = function(type, element, event) {

executeEvent(element, createMouseEvent(type, element, event));

};

executeDragEvent = function(type, element, event) {

if (isEmpty(__exports.__dragEventDataTransfer__)) {
        __exports.__dragEventDataTransfer__ = {
                'files': null,
                'types': null,
                'effectAllowed': 'uninitialized',
                'dropEffect': 'none'
        };
        __exports.__dragEventDataTransfer__.setDragImage = function() {
        };
        __exports.__dragEventDataTransfer__.addElement = function() {
        };
        __exports.__dragEventDataTransfer__._data = {};
        __exports.__dragEventDataTransfer__.setData = function(format, data) {
                __exports.__dragEventDataTransfer__._data[format] = data;
        };
        __exports.__dragEventDataTransfer__.getData = function(format) {
                return __exports.__dragEventDataTransfer__._data[format];
        };
        __exports.__dragEventDataTransfer__.clearData = function(format) {
                if (isEmpty(format)) {
                        __exports.__dragEventDataTransfer__._data = {};
                } else {
                        __exports.__dragEventDataTransfer__._data[format] = void 0;
                }
        };
}
executeEvent(element, createDragEvent(type, element, event));

};

executeEvent = function(element, event) {

var error, handlerEvent, listenerEvent, _i, _len, _ref;
if (hasEvent(element, event.type)) {
        try {
                if (!isEmpty(element.dispatchEvent)) {
                        element.dispatchEvent(event);
                } else {
                        handlerEvent = element['on' + event.type];
                        if (!isEmpty(handlerEvent)) {
                                handlerEvent(event);
                        }
                        if ((!isEmpty(element.eventListenerList)) && (!isEmpty(element.eventListenerList[event.type]))) {
                                _ref = element.eventListenerList[event.type];
                                for (_i = 0, _len = _ref.length; _i < _len; _i++) {
                                        listenerEvent = _ref[_i];
                                        listenerEvent(event);
                                }
                        }
                }
        } catch (_error) {
                error = _error;
        }
}

};

createMouseEvent = function(type, element, event) {

var data, mouseEvent;
data = {
        'view': event.view,
        'bubbles': true,
        'cancelable': true,
        'target': element,
        'altKey': event.altKey,
        'ctrlKey': event.ctrlKey,
        'cancelBubble': false,
        'isTrusted': true,
        'metaKey': false,
        'shiftKey': event.shiftKey,
        'clientX': 0,
        'clientY': 0,
        'pageX': 0,
        'pageY': 0,
        'screenX': 0,
        'screenY': 0
};
if (isEmpty(Event)) {
        mouseEvent = data;
        mouseEvent.type = type;
} else {
        mouseEvent = new Event(type, data);
}
mouseEvent.preventDefault = function() {
        return event.preventDefault();
};
mouseEvent.stopImmediatePropagation = function() {
        return event.stopImmediatePropagation();
};
mouseEvent.stopPropagation = function() {
        return event.stopPropagation();
};
return mouseEvent;

};

createDragEvent = function(type, element, event) {

var dragEvent;
dragEvent = createMouseEvent(type, element, event);
dragEvent.dataTransfer = __exports.__dragEventDataTransfer__;
return dragEvent;

};

fixActiveInElement = function(element) {

if (element.tagName.toUpperCase() !== 'A') {
        addEventHandler(element, 'keypress', 'data-keypressadded', 'active', function(event) {
                if (enterPressed(event.keyCode)) {
                        if (hasEvent(element, 'click')) {
                                executeMouseEvent('click', element, event);
                        } else if (hasEvent(element, 'dblclick')) {
                                executeMouseEvent('dblclick', element, event);
                        }
                }
        });
}
addEventHandler(element, 'keyup', 'data-keyupadded', 'active', function(event) {
        if (enterPressed(event.keyCode)) {
                executeMouseEvent('mouseup', element, event);
        }
});
addEventHandler(element, 'keydown', 'data-keydownadded', 'active', function(event) {
        if (enterPressed(event.keyCode)) {
                executeMouseEvent('mousedown', element, event);
        }
});

};

fixHoverInElement = function(element) {

addEventHandler(element, 'focus', 'data-focusadded', 'hover', function(event) {
        executeMouseEvent('mouseover', element, event);
});
addEventHandler(element, 'blur', 'data-bluradded', 'hover', function(event) {
        executeMouseEvent('mouseout', element, event);
});

};

fixDragInElement = function(element) {

if ((!hasEvent(element, 'keydown', 'data-keydownadded', 'drag')) && (!hasEvent(element, 'keyup', 'data-keyupadded', 'drag'))) {
        addEventHandler(element, 'keydown', 'data-keydownadded', 'drag', function(event) {
                var grabbedElement, grabbedElements, _i, _len;
                if ((event.keyCode === ' '.charCodeAt(0)) && (!element.hasAttribute('data-keypressed'))) {
                        grabbedElements = __exports.__aria_grabbed__elements__;
                        for (_i = 0, _len = grabbedElements.length; _i < _len; _i++) {
                                grabbedElement = grabbedElements[_i];
                                grabbedElement.setAttribute('aria-grabbed', 'false');
                                executeDragEvent('dragend', grabbedElement, event);
                        }
                        element.setAttribute('aria-grabbed', 'true');
                        element.setAttribute('data-keypressed', 'true');
                        __exports.__aria_grabbed__elements__ = [element];
                        executeDragEvent('dragstart', element, event);
                        executeDragEvent('drag', element, event);
                        generateDropEffect();
                }
        });
        addEventHandler(element, 'keyup', 'data-keyupadded', 'drag', function(event) {
                element.removeAttribute('data-keypressed');
        });
}

};

fixDropInElement = function(element) {

__exports.__aria_dropeffect__elements__.push(element);
addEventHandler(element, 'focus', 'data-focusadded', 'drop', function(event) {
        if (!isEmpty(__exports.__aria_grabbed__elements__)) {
                executeDragEvent('dragenter', element, event);
                executeDragEvent('dragover', element, event);
                generateDropEffect();
        }
});
addEventHandler(element, 'blur', 'data-bluradded', 'drop', function(event) {
        if (!isEmpty(__exports.__aria_grabbed__elements__)) {
                executeDragEvent('dragleave', element, event);
                generateDropEffect();
        }
});
if ((!hasEvent(element, 'keydown', 'data-keydownadded', 'drop')) && (!hasEvent(element, 'keyup', 'data-keyupadded', 'drop'))) {
        addEventHandler(element, 'keydown', 'data-keydownadded', 'drop', function(event) {
                var grabbedElement, grabbedElements, _i, _len;
                if ((enterPressed(event.keyCode)) && (!element.hasAttribute('data-keypressed')) && (!isEmpty(__exports.__aria_grabbed__elements__))) {
                        element.setAttribute('data-keypressed', 'true');
                        if (hasEvent(element, 'drop')) {
                                grabbedElements = __exports.__aria_grabbed__elements__;
                                for (_i = 0, _len = grabbedElements.length; _i < _len; _i++) {
                                        grabbedElement = grabbedElements[_i];
                                        grabbedElement.setAttribute('aria-grabbed', 'false');
                                        executeDragEvent('dragend', grabbedElement, event);
                                }
                                __exports.__aria_grabbed__elements__ = [];
                                clearDropEffect();
                        }
                        executeDragEvent('drop', element, event);
                }
        });
        addEventHandler(element, 'keyup', 'data-keyupadded', 'drop', function(event) {
                element.removeAttribute('data-keypressed');
        });
}

};

addEventHandler(document.documentElement, 'keypress', 'data-keypressadded', 'active', function(event) {

var grabbedElement, grabbedElements, _i, _len;
if (event.keyCode === 27) {
        grabbedElements = __exports.__aria_grabbed__elements__;
        for (_i = 0, _len = grabbedElements.length; _i < _len; _i++) {
                grabbedElement = grabbedElements[_i];
                grabbedElement.setAttribute('aria-grabbed', 'false');
                executeDragEvent('dragend', grabbedElement, event);
        }
        __exports.__aria_grabbed__elements__ = [];
        clearDropEffect();
}

});

for (var i = 0, length = activeElements.length; i < length; i++) {

fixActiveInElement(document.getElementById(activeElements[i]));

}

for (var i = 0, length = hoverElements.length; i < length; i++) {

fixHoverInElement(document.getElementById(hoverElements[i]));

}

for (var i = 0, length = dragElements.length; i < length; i++) {

fixDragInElement(document.getElementById(dragElements[i]));

}

for (var i = 0, length = dropElements.length; i < length; i++) {

fixDropInElement(document.getElementById(dropElements[i]));

}