/** * Copyright (c) 2013 The Chromium Authors. All rights reserved. */ !function(){var e=window.CustomEvent;function t(e){for(;e;){if("dialog"===e.localName)return e;e=e.parentElement}return null}function o(e){e&&e.blur&&e!==document.body&&e.blur()}function i(e,t){for(var o=0;o=0&&(e=this.dialog_),!e){var t=["button","input","keygen","select","textarea"].map(function(e){return e+":not([disabled])"});t.push('[tabindex]:not([disabled]):not([tabindex=""])'),e=this.dialog_.querySelector(t.join(", "))}o(document.activeElement),e&&e.focus()},updateZIndex:function(e,t){if(e, the polyfill may not work correctly",e),"dialog"!==e.localName)throw new Error("Failed to register dialog: The element is not a dialog.");new a(e)},r.registerDialog=function(e){e.showModal||r.forceRegisterDialog(e)},r.DialogManager=function(){this.pendingDialogStack=[];var e=this.checkDOM_.bind(this);this.overlay=document.createElement("div"),this.overlay.className="_dialog_overlay",this.overlay.addEventListener("click",function(t){this.forwardTab_=void 0,t.stopPropagation(),e([])}.bind(this)),this.handleKey_=this.handleKey_.bind(this),this.handleFocus_=this.handleFocus_.bind(this),this.zIndexLow_=1e5,this.zIndexHigh_=100150,this.forwardTab_=void 0,"MutationObserver"in window&&(this.mo_=new MutationObserver(function(t){var o=[];t.forEach(function(e){for(var t,i=0;t=e.removedNodes[i];++i)t instanceof Element&&("dialog"===t.localName&&o.push(t),o=o.concat(t.querySelectorAll("dialog")))}),o.length&&e(o)}))},r.DialogManager.prototype.blockDocument=function(){document.documentElement.addEventListener("focus",this.handleFocus_,!0),document.addEventListener("keydown",this.handleKey_),this.mo_&&this.mo_.observe(document,{childList:!0,subtree:!0})},r.DialogManager.prototype.unblockDocument=function(){document.documentElement.removeEventListener("focus",this.handleFocus_,!0),document.removeEventListener("keydown",this.handleKey_),this.mo_&&this.mo_.disconnect()},r.DialogManager.prototype.updateStacking=function(){for(var e,t=this.zIndexHigh_,o=0;e=this.pendingDialogStack[o];++o)e.updateZIndex(--t,--t),0===o&&(this.overlay.style.zIndex=--t);var i=this.pendingDialogStack[0];i?(i.dialog.parentNode||document.body).appendChild(this.overlay):this.overlay.parentNode&&this.overlay.parentNode.removeChild(this.overlay)},r.DialogManager.prototype.containedByTopDialog_=function(e){for(;e=t(e);){for(var o,i=0;o=this.pendingDialogStack[i];++i)if(o.dialog===e)return 0===i;e=e.parentElement}return!1},r.DialogManager.prototype.handleFocus_=function(e){if(!this.containedByTopDialog_(e.target)&&document.activeElement!==document.documentElement&&(e.preventDefault(),e.stopPropagation(),o(e.target),void 0!==this.forwardTab_)){var t=this.pendingDialogStack[0];return t.dialog.compareDocumentPosition(e.target)&Node.DOCUMENT_POSITION_PRECEDING&&(this.forwardTab_?t.focus_():e.target!==document.documentElement&&document.documentElement.focus()),!1}},r.DialogManager.prototype.handleKey_=function(t){if(this.forwardTab_=void 0,27===t.keyCode){t.preventDefault(),t.stopPropagation();var o=new e("cancel",{bubbles:!1,cancelable:!0}),i=this.pendingDialogStack[0];i&&i.dialog.dispatchEvent(o)&&i.dialog.close()}else 9===t.keyCode&&(this.forwardTab_=!t.shiftKey)},r.DialogManager.prototype.checkDOM_=function(e){this.pendingDialogStack.slice().forEach(function(t){-1!==e.indexOf(t.dialog)?t.downgradeModal():t.maybeHideModal()})},r.DialogManager.prototype.pushDialog=function(e){var t=(this.zIndexHigh_-this.zIndexLow_)/2-1;return!(this.pendingDialogStack.length>=t)&&(1===this.pendingDialogStack.unshift(e)&&this.blockDocument(),this.updateStacking(),!0)},r.DialogManager.prototype.removeDialog=function(e){var t=this.pendingDialogStack.indexOf(e);-1!==t&&(this.pendingDialogStack.splice(t,1),0===this.pendingDialogStack.length&&this.unblockDocument(),this.updateStacking())},r.dm=new r.DialogManager,r.formSubmitter=null,r.useValue=null,void 0===window.HTMLDialogElement){var l=document.createElement("form");if(l.setAttribute("method","dialog"),"dialog"!==l.method){var s=Object.getOwnPropertyDescriptor(HTMLFormElement.prototype,"method");if(s){var d=s.get;s.get=function(){return n(this)?"dialog":d.call(this)};var c=s.set;s.set=function(e){return"string"==typeof e&&"dialog"===e.toLowerCase()?this.setAttribute("method",e):c.call(this,e)},Object.defineProperty(HTMLFormElement.prototype,"method",s)}}document.addEventListener("click",function(e){if(r.formSubmitter=null,r.useValue=null,!e.defaultPrevented){var o=e.target;if(o&&n(o.form)){if(!("submit"===o.type&&["button","input"].indexOf(o.localName)>-1)){if("input"!==o.localName||"image"!==o.type)return;r.useValue=e.offsetX+","+e.offsetY}t(o)&&(r.formSubmitter=o)}}},!1);var u=HTMLFormElement.prototype.submit;HTMLFormElement.prototype.submit=function(){if(!n(this))return u.call(this);var e=t(this);e&&e.close()},document.addEventListener("submit",function(e){var o=e.target;if(n(o)){e.preventDefault();var i=t(o);if(i){var a=r.formSubmitter;a&&a.form===o?i.close(r.useValue||a.value):i.close(),r.formSubmitter=null}}},!0)}r.forceRegisterDialog=r.forceRegisterDialog,r.registerDialog=r.registerDialog,"function"==typeof define&&"amd"in define?define(function(){return r}):"object"==typeof module&&"object"==typeof module.exports?module.exports=r:window.dialogPolyfill=r}();