/* !Don't remove this!
 * duDialog v1.0 plugin
 * https://github.com/dmuy/duDialog
 *
 * Author: Dionlee Uy
 * Email: dionleeuy@gmail.com
 */
!function(e,t){"function"==typeof define&&define.amd?define("duDialog",[],t(e)):"object"==typeof exports?module.exports=t(e):e.duDialog=t(e)}("undefined"!=typeof global?global:this.window||this.global,function(e){"use strict";var t=!!document.querySelector&&!!e.addEventListener,i={init:!1,okText:"Ok",cancelText:"Cancel",selection:!1,multiple:!1,selectedValue:null,valueField:"value",textField:"item",callbacks:null},l=function(){if(!(this instanceof l))return l.apply(Object.create(l.prototype),arguments);var e=this,t=arguments,n=typeof t[0],o=typeof t[1],a=typeof t[2];e.config=function(){var e={},t=!1,i=0,l=arguments.length;"[object Boolean]"===Object.prototype.toString.call(arguments[0])&&(t=arguments[0],i++);for(var n=function(i){for(var l in i)Object.prototype.hasOwnProperty.call(i,l)&&(t&&"[object Object]"===Object.prototype.toString.call(i[l])?e[l]=extend(!0,e[l],i[l]):e[l]=i[l])};i<l;i++){var o=arguments[i];n(o)}return e}(i,"object"===a?t[2]:t[3]);var d=e.config.selection?e.config.multiple?l.OK_CANCEL:l.NO_ACTION:l.DEFAULT;if(e.type="object"===a?d:t[2]||d,"undefined"===n||"string"!==n&&null!==t[0])throw new Error("Dialog title is missing or incorrect format.");if(("undefined"===o||"string"!==o)&&!e.config.selection||!Array.isArray(t[1])&&e.config.selection)throw new Error("Dialog message is missing or incorrect format.");return e.title=t[0],e.message=t[1],e.config.init||c.apply(e),e},n=function(e,t){var i=function(e,t){for(var l in e){var n=e[l];"object"==typeof n&&null!==n&&void 0===n.dataset&&void 0===n[0]?i(n,t[l]):t[l]=n}};i(t,e)},o=function(e,t){return!!e&&(void 0!==e[0]&&e.filter(function(e){return e===t}).length>0)},c=function(){if(t){var e,i,c,a,d=this,r=d.config.callbacks,g=function(e,t,i,l){var n=document.createElement(e);return n.className=t,void 0!==i&&(n[l?"innerHTML":"innerText"]=i),n},s=function(e){if("click"===e.type&&(e.target.matches(".du-dialog")&&d.type===l.NO_ACTION&&d.hide(),e.target.matches(".dlg-select-item")&&e.target.querySelector(".dlg-select-lbl").click(),e.target.matches(".dlg-action"))){if(e.target.matches(".ok-action"))if(d.config.selection&&d.config.multiple){for(var t=c.querySelectorAll(":scope .dlg-select-checkbox:checked"),i=[],n=[],o=0;o<t.length;o++){var a=t[o].item;n.push(a),i.push("string"==typeof a?t[o].value:a[d.config.valueField])}d.config.selectedValue=i,r.itemSelect.apply({value:i},[e,n]),d.hide()}else r&&r.okClick?r.okClick.apply(d,e):d.hide();e.target.matches(".cancel-action")&&(r&&r.cancelClick?r.cancelClick.apply(d,e):d.hide())}if("change"===e.type&&e.target.matches(".dlg-select-radio")){var g=e.target;g.checked&&r&&r.itemSelect&&(d.config.selectedValue="string"==typeof g.item?g.value:g.item[d.config.valueField],r.itemSelect.apply(g,[e,g.item]),d.hide())}"scroll"===e.type&&e.target.matches(".dlg-content")&&e.target.classList[e.target.scrollTop>5?"add":"remove"]("content--scrolled")};if(d.docFrag=document.createDocumentFragment(),d.dialog=g("div","du-dialog"),d.docFrag.appendChild(d.dialog),(e=g("div","dlg-wrapper")).tabIndex=0,d.dialog.appendChild(e),d.title?(i=g("div","dlg-header",d.title),e.appendChild(i)):d.dialog.classList.add("dlg--no-title"),c=g("div","dlg-content"),d.config.selection)for(var p in d.message){var f=d.message[p],u=typeof f,h="string"===u?f:f[d.config.valueField],m="string"===u?f:f[d.config.textField],v=g("div","dlg-select-item"),y=g("input",d.config.multiple?"dlg-select-checkbox":"dlg-select-radio"),b=g("label","dlg-select-lbl",m),C=(d.config.multiple?"dlg-cb":"dlg-radio")+h.toString().replace(/\s+/g,"");n(y,{id:C,name:"dlg-selection",type:d.config.multiple?"checkbox":"radio",value:h,checked:d.config.multiple?d.config.selectedValue&&o(d.config.selectedValue,h):d.config.selectedValue===h}),y.item=f,b.htmlFor=C,v.appendChild(y),v.appendChild(b),c.appendChild(v)}else c.innerHTML=d.message;switch(e.appendChild(c),d.type!==l.NO_ACTION&&(a=g("div","dlg-actions"),e.appendChild(a)),d.type){case l.OK_CANCEL:var k=g("button","dlg-action cancel-action",d.config.cancelText),O=g("button","dlg-action ok-action",d.config.okText);k.tabIndex=2,O.tabIndex=1,a.appendChild(k),a.appendChild(O);break;case l.DEFAULT:(O=g("button","dlg-action ok-action",d.config.okText)).tabIndex=1,a.appendChild(O)}c.addEventListener("scroll",s,!1),d.dialog.addEventListener("click",s,!1),d.dialog.addEventListener("change",s,!1),d.config.init||d.show()}};return Object.defineProperties(l,{DEFAULT:{value:1},OK_CANCEL:{value:2},NO_ACTION:{value:3}}),l.prototype.show=function(){var e=this;e.config.init&&c.apply(this),document.body.appendChild(e.docFrag),setTimeout(function(){e.dialog.classList.add("dlg--open");var t=document.getElementsByClassName("dlg-action");t&&t.length?t[t.length-1].focus():e.dialog.getElementsByClassName("dlg-wrapper")[0].focus()},15)},l.prototype.hide=function(){var e=this;e.dialog.classList.add("dlg--closing"),setTimeout(function(){document.body.removeChild(e.dialog)},200)},l});