/
jquery.notific8.min.js
7 lines (7 loc) · 8.65 KB
/
jquery.notific8.min.js
1
2
3
4
5
6
7
/**
* @author Will Steinmetz
* Notification plug-in inspired by the notification style of Windows 8
* Copyright (c)2013-2016, Will Steinmetz
* Licensed under the BSD license.
* http://opensource.org/licenses/BSD-3-Clause
*/"use strict";var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},notific8;notific8=function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r;return window.notific8Defaults={life:1e4,theme:"ocho",color:"teal",sticky:!1,verticalEdge:"right",horizontalEdge:"top",zindex:1100,closeText:"close",onInit:[],onCreate:[],onClose:[],namespace:"notific8",queue:!1,height:{atomic:70,chicchat:120,ocho:90,materialish:48}},window.notific8RegisteredModules={beforeContent:[],afterContent:[],beforeContainer:[],afterContainer:[],insideContainer:[]},window.notific8Queue=[],window.notific8DataStore={},window.notific8ContainerHandlers={onContainerCreate:[]},h=function(a){var b,c,d;for(c=a.namespace+"-container",d=document.getElementsByClassName(c),b=document.getElementsByTagName("body")[0];d.length>0;)b.removeChild(d[0])},k=function(a){var b,c,d,e,f;return e=a.settings,f=e.verticalEdge,c=e.horizontalEdge,d=e.namespace,b="."+d+"-container."+f+"."+c,document.querySelector(b)},d=function(d){var e,g,h,i,j,l,m,o,p,q,r,s,t,u,v,w,x,y,z;for(e=document.getElementsByTagName("body")[0],v=Number(e.dataset.notific8s),s=d.settings.namespace,g=k(d),v+=1,e.dataset.notific8s=v,u=s+"-notification-"+v,h=n(d),t='<div\n class="$notificationClasses"\n id="'+u+'"\n data-name="'+d.settings.notificationName+'">',x=notific8RegisteredModules.beforeContent,i=0,m=x.length;m>i;i++)q=x[i],r=q.callbackMethod(d),h=h.concat(r.classes),t+=r.html;for(t+='<div class="'+d.settings.namespace+'-message-content">\n '+b(d)+"\n "+c(d)+"\n</div>",y=notific8RegisteredModules.afterContent,j=0,o=y.length;o>j;j++)q=y[j],r=q.callbackMethod(d),h=h.concat(r.classes),t+=r.html;if(t+=a(d)+"\n</div>",t=t.replace("$notificationClasses",h.join(" ")),g.innerHTML+=t,setTimeout(function(){return(t=document.getElementById(u))?t.style.height=d.settings.height+"px":void 0},1),d.settings.onCreate.length)for(z=d.settings.onCreate,l=0,p=z.length;p>l;l++)(w=z[l])(t,d);setTimeout(function(){t=document.getElementById(u),t&&(t.className+=" open",notific8DataStore[u]=d,d.settings.sticky||!function(a,b){setTimeout(function(){f(u,d)},b)}(t,Number(d.settings.life)+200))},5)},a=function(a){var b;return b='<div class="'+a.settings.namespace+"-close",a.settings.sticky?(b+=' sticky">',b+=""+a.settings.closeText):b+='">×',b+="</div>"},b=function(a){return null!=a.settings.heading&&"string"==typeof a.settings.heading?'<div class="'+a.settings.namespace+'-heading">\n'+a.settings.heading+"\n</div>":""},c=function(a){return'<div class="'+a.settings.namespace+'-message">\n'+a.message+"\n</div>"},n=function(a){var b;return"legacy"===a.settings.theme.toLowerCase()&&(a.settings.theme="ocho"),b=[a.settings.namespace+"-notification","family-"+a.settings.theme,a.settings.theme,a.settings.color],a.settings.sticky&&b.push("sticky"),null!=a.settings.heading&&b.push("has-heading"),b},f=function(a,b){var c;c=document.getElementById(a),null!=c&&(c.className=c.className.replace("open",""),c.style.height=0,function(a,c){var d,e,f,g,h,i;if(d=k(b),d.removeChild(a),delete notific8DataStore[c],b.settings.onClose.length)for(i=b.settings.onClose,e=0,f=i.length;f>e;e++)(h=i[e])(a,b);notific8Defaults.queue&¬ific8Queue.length&&(g=notific8Queue.shift(),notific8(g.message,g.options))}(c,a))},g=function(a){var b,c;for(b in a)c=a[b],["onInit","onCreate","onClose"].indexOf(b)>-1?"function"==typeof c?notific8Defaults[b].push(c):notific8Defaults[b]=notific8Defaults[b].concat(c):"onContainerCreate"===b?"function"==typeof c?notific8ContainerHandlers.onContainerCreate.push(c):notific8ContainerHandlers.onContainerCreate=notific8ContainerHandlers.onContainerCreate.concat(c):notific8Defaults[b]=c},p=function(a){var b,c;for(b=a.namespace+"-notification",c=document.getElementsByClassName(b);c.length>0;)c[0].parentNode.removeChild(c[0])},q=function(a){var b,c,d,e,f,g;for("object"!==("undefined"==typeof a?"undefined":_typeof(a))&&(a=[a]),g=[],b=0,e=a.length;e>b;b++)f=a[b],g.push(function(){var a;a=[];for(d in notific8Queue){if(c=notific8Queue[d],notific8Queue[d].options.notificationName===f){delete notific8Queue[d];break}a.push(void 0)}return a}());return g},r=function(a){notific8Defaults.zindex=a},l=function(a,b){var c,e,f,g,h,i,j,k,l,m,n,o,p,q,r;e={settings:{},message:a},c=["onInit","onCreate","onClose"];for(j in notific8Defaults)o=notific8Defaults[j],"height"!==j&&(e.settings[j]=o);for(j in b)if(o=b[j],c.indexOf(j)>-1)for("function"==typeof o&&(o=[o]),g=0,k=o.length;k>g;g++)f=o[g],e.settings[j].push(f);else e.settings[j]=o;for(q=["onContainerCreate","queue"],h=0,l=q.length;l>h;h++)p=q[h],delete e.settings[p];if(null==e.settings.height&&(e.settings.height=notific8Defaults.height[e.settings.theme]),e.settings.height=Number(e.settings.height),e.settings.height<notific8Defaults.height[e.settings.theme]&&(e.settings.height=notific8Defaults.height[e.settings.theme]),d(e),e.settings.onInit.length)for(r=e.settings.onInit,i=0,m=r.length;m>i;i++)(n=r[i])(e)},m=function(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D;for(b=document.getElementsByTagName("body")[0],b.dataset.notific8s=0,d=[a.namespace+"-container"],e="",x=notific8RegisteredModules.beforeContainer,h=0,k=x.length;k>h;h++)s=x[h],t=s.callbackMethod(notific8Defaults),d=d.concat(t.classes),e+=t.html;for(e+='<div class="$classes $pos">',y=notific8RegisteredModules.insideContainer,i=0,l=y.length;l>i;i++)s=y[i],t=s.callbackMethod(notific8Defaults),d=d.concat(t.classes),e+=t.html;for(e+="</div>",z=notific8RegisteredModules.afterContainer,j=0,m=z.length;m>j;j++)s=z[j],t=s.callbackMethod(notific8Defaults),d=d.concat(t.classes),e+=t.html;for(A=["top right","top left","bottom right","bottom left"],q=0,n=A.length;n>q;q++)w=A[q],r=e.replace("$pos",w).replace("$classes",d.join(" ")),D=document.implementation.createHTMLDocument("tempDoc"),D.body.innerHTML=r,document.body.appendChild(D.body.firstChild);for(B=document.getElementsByClassName(d[0]),u=0,o=B.length;o>u;u++){for(c=B[u],c.style.zIndex=notific8Defaults.zindex,C=notific8ContainerHandlers.onContainerCreate,v=0,p=C.length;p>v;v++)(g=C[v])(c,a);c.addEventListener("click",function(b){var c,d,e,g;g=b.target,d=g.parentElement,e=a.namespace+"-notification",-1!==d.className.split(" ").indexOf(e)&&(c=notific8DataStore[d.id],f(d.id,c))})}},e=function(a){a.verticalEdge=(a.verticalEdge||notific8Defaults.verticalEdge).toLowerCase(),a.horizontalEdge=(a.horizontalEdge||notific8Defaults.horizontalEdge).toLowerCase(),"right"!==a.verticalEdge&&"left"!==a.verticalEdge&&(a.verticalEdge=notific8Defaults.verticalEdge),"top"!==a.horizontalEdge&&"bottom"!==a.horizontalEdge&&(a.horizontalEdge=notific8Defaults.horizontalEdge)},o=function(a,b,c,d){var e,f,g,h,j,k,l;for("string"==typeof a&&""!==a.trim()||i("moduleName should be a string"),l=["beforeContent","afterContent","beforeContainer","afterContainer","insideContainer"],"string"==typeof b&&l.indexOf(b)>-1||i("position should be a string"),"object"!==("undefined"==typeof c?"undefined":_typeof(c))&&i("defaultOptions should be an object"),"function"!=typeof d&&i("callbackMethod should be an function"),k=notific8RegisteredModules[b],f=0,g=k.length;g>f;f++)h=k[f],h.moduleName===a&&i("Module '"+a+"' has already been registered");for(j in c)e=c[j],notific8Defaults[j]=e;return notific8RegisteredModules[b].push({moduleName:a,callbackMethod:d})},i=function(a){throw console.error(a),new Error(a)},j=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){var b,c;return b=16*Math.random()|0,c="x"===a?b:3&b|8,c.toString(16)})},function(a,b){var c,d,f,k,n,s,t;switch("string"!=typeof a&&i("notific8 takes a string message as the first parameter"),null==b&&(b={}),b.hasOwnProperty("namespace")||"zindex"===a||(b.namespace="notific8"),a){case"configure":case"config":return g(b);case"zindex":return r(b);case"destroy":return h(b);case"remove":return p(b);case"removeFromQueue":return q(b);case"registerModule":return 5!==arguments.length&&i("Registering a module requires the parameters moduleName, position, defaultOptions, and callbackMethod."),a=arguments[0],k=arguments[1],t=arguments[2],f=arguments[3],c=arguments[4],o(k,t,f,c);default:return d=b.namespace+"-container",0===document.getElementsByClassName(d).length&&m(b),e(b),n=b.namespace+"-notification",s=document.getElementsByClassName(n).length,b.notificationName||(b.notificationName=j()),notific8Defaults.queue&&0!==s?notific8Queue.push({message:a,options:b}):l(a,b),b.notificationName}}}(),function(a){a.notific8=function(a,b){notific8(a,b)}}(jQuery);