Socket
Socket
Sign inDemoInstall

@pelagiccreatures/sargasso

Package Overview
Dependencies
2
Maintainers
1
Versions
88
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.11.0 to 1.0.0

index.html

2

dist/sargasso.iife.js

@@ -1,2 +0,2 @@

this.PelagicCreatures=this.PelagicCreatures||{},this.PelagicCreatures.Sargasso=function(e){"use strict";var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var s="object"==typeof t&&t&&t.Object===Object&&t,i="object"==typeof self&&self&&self.Object===Object&&self,n=s||i||Function("return this")(),r=n.Symbol;var o=function(e,t){for(var s=-1,i=null==e?0:e.length,n=Array(i);++s<i;)n[s]=t(e[s],s,e);return n},a=Array.isArray,l=Object.prototype,c=l.hasOwnProperty,u=l.toString,h=r?r.toStringTag:void 0;var d=function(e){var t=c.call(e,h),s=e[h];try{e[h]=void 0;var i=!0}catch(e){}var n=u.call(e);return i&&(t?e[h]=s:delete e[h]),n},p=Object.prototype.toString;var f=function(e){return p.call(e)},m=r?r.toStringTag:void 0;var g=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":m&&m in Object(e)?d(e):f(e)};var w=function(e){return null!=e&&"object"==typeof e};var v=function(e){return"symbol"==typeof e||w(e)&&"[object Symbol]"==g(e)},b=r?r.prototype:void 0,x=b?b.toString:void 0;var y=function e(t){if("string"==typeof t)return t;if(a(t))return o(t,e)+"";if(v(t))return x?x.call(t):"";var s=t+"";return"0"==s&&1/t==-Infinity?"-0":s};var E=function(e){return null==e?"":y(e)};var C=function(e,t,s){var i=-1,n=e.length;t<0&&(t=-t>n?0:n+t),(s=s>n?n:s)<0&&(s+=n),n=t>s?0:s-t>>>0,t>>>=0;for(var r=Array(n);++i<n;)r[i]=e[i+t];return r};var k=function(e,t,s){var i=e.length;return s=void 0===s?i:s,!t&&s>=i?e:C(e,t,s)},O=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");var S=function(e){return O.test(e)};var A=function(e){return e.split("")},R="[\\ud800-\\udfff]",F="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",L="\\ud83c[\\udffb-\\udfff]",M="[^\\ud800-\\udfff]",j="(?:\\ud83c[\\udde6-\\uddff]){2}",D="[\\ud800-\\udbff][\\udc00-\\udfff]",T="(?:"+F+"|"+L+")"+"?",z="[\\ufe0e\\ufe0f]?",P=z+T+("(?:\\u200d(?:"+[M,j,D].join("|")+")"+z+T+")*"),N="(?:"+[M+F+"?",F,j,D,R].join("|")+")",H=RegExp(L+"(?="+L+")|"+N+P,"g");var V=function(e){return e.match(H)||[]};var I=function(e){return S(e)?V(e):A(e)};var W=function(e){return function(t){t=E(t);var s=S(t)?I(t):void 0,i=s?s[0]:t.charAt(0),n=s?k(s,1).join(""):t.slice(1);return i[e]()+n}}("toUpperCase");var q=function(e){return W(E(e).toLowerCase())};var U=function(e,t,s,i){var n=-1,r=null==e?0:e.length;for(i&&r&&(s=e[++n]);++n<r;)s=t(s,e[n],n,e);return s};var B=function(e){return function(t){return null==e?void 0:e[t]}}({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),Q=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Z=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g");var G=function(e){return(e=E(e))&&e.replace(Q,B).replace(Z,"")},$=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;var J=function(e){return e.match($)||[]},Y=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;var _=function(e){return Y.test(e)},K="\\u2700-\\u27bf",X="a-z\\xdf-\\xf6\\xf8-\\xff",ee="A-Z\\xc0-\\xd6\\xd8-\\xde",te="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",se="["+te+"]",ie="\\d+",ne="[\\u2700-\\u27bf]",re="["+X+"]",oe="[^\\ud800-\\udfff"+te+ie+K+X+ee+"]",ae="(?:\\ud83c[\\udde6-\\uddff]){2}",le="[\\ud800-\\udbff][\\udc00-\\udfff]",ce="["+ee+"]",ue="(?:"+re+"|"+oe+")",he="(?:"+ce+"|"+oe+")",de="(?:['’](?:d|ll|m|re|s|t|ve))?",pe="(?:['’](?:D|LL|M|RE|S|T|VE))?",fe="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",me="[\\ufe0e\\ufe0f]?",ge=me+fe+("(?:\\u200d(?:"+["[^\\ud800-\\udfff]",ae,le].join("|")+")"+me+fe+")*"),we="(?:"+[ne,ae,le].join("|")+")"+ge,ve=RegExp([ce+"?"+re+"+"+de+"(?="+[se,ce,"$"].join("|")+")",he+"+"+pe+"(?="+[se,ce+ue,"$"].join("|")+")",ce+"?"+ue+"+"+de,ce+"+"+pe,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",ie,we].join("|"),"g");var be=function(e){return e.match(ve)||[]};var xe=function(e,t,s){return e=E(e),void 0===(t=s?void 0:t)?_(e)?be(e):J(e):e.match(t)||[]},ye=RegExp("['’]","g");var Ee=function(e){return function(t){return U(xe(G(t).replace(ye,"")),e,"")}},Ce=Ee((function(e,t,s){return t=t.toLowerCase(),e+(s?q(t):t)}));var ke=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)},Oe=function(){return n.Date.now()},Se=/^\s+|\s+$/g,Ae=/^[-+]0x[0-9a-f]+$/i,Re=/^0b[01]+$/i,Fe=/^0o[0-7]+$/i,Le=parseInt;var Me=function(e){if("number"==typeof e)return e;if(v(e))return NaN;if(ke(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=ke(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(Se,"");var s=Re.test(e);return s||Fe.test(e)?Le(e.slice(2),s?2:8):Ae.test(e)?NaN:+e},je=Math.max,De=Math.min;var Te,ze,Pe=function(e,t,s){var i,n,r,o,a,l,c=0,u=!1,h=!1,d=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function p(t){var s=i,r=n;return i=n=void 0,c=t,o=e.apply(r,s)}function f(e){return c=e,a=setTimeout(g,t),u?p(e):o}function m(e){var s=e-l;return void 0===l||s>=t||s<0||h&&e-c>=r}function g(){var e=Oe();if(m(e))return w(e);a=setTimeout(g,function(e){var s=t-(e-l);return h?De(s,r-(e-c)):s}(e))}function w(e){return a=void 0,d&&i?p(e):(i=n=void 0,o)}function v(){var e=Oe(),s=m(e);if(i=arguments,n=this,l=e,s){if(void 0===a)return f(l);if(h)return clearTimeout(a),a=setTimeout(g,t),p(l)}return void 0===a&&(a=setTimeout(g,t)),o}return t=Me(t)||0,ke(s)&&(u=!!s.leading,r=(h="maxWait"in s)?je(Me(s.maxWait)||0,t):r,d="trailing"in s?!!s.trailing:d),v.cancel=function(){void 0!==a&&clearTimeout(a),c=0,i=l=n=a=void 0},v.flush=function(){return void 0===a?o:w(Oe())},v},Ne=Ee((function(e,t,s){return e+(s?"-":"")+t.toLowerCase()})),He=(function(e,t){var s;s=function(){function e(){for(var e=0,t={};e<arguments.length;e++){var s=arguments[e];for(var i in s)t[i]=s[i]}return t}function t(e){return e.replace(/(%[0-9A-Z]{2})+/g,decodeURIComponent)}return function s(i){function n(){}function r(t,s,r){if("undefined"!=typeof document){"number"==typeof(r=e({path:"/"},n.defaults,r)).expires&&(r.expires=new Date(1*new Date+864e5*r.expires)),r.expires=r.expires?r.expires.toUTCString():"";try{var o=JSON.stringify(s);/^[\{\[]/.test(o)&&(s=o)}catch(e){}s=i.write?i.write(s,t):encodeURIComponent(String(s)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent),t=encodeURIComponent(String(t)).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent).replace(/[\(\)]/g,escape);var a="";for(var l in r)r[l]&&(a+="; "+l,!0!==r[l]&&(a+="="+r[l].split(";")[0]));return document.cookie=t+"="+s+a}}function o(e,s){if("undefined"!=typeof document){for(var n={},r=document.cookie?document.cookie.split("; "):[],o=0;o<r.length;o++){var a=r[o].split("="),l=a.slice(1).join("=");s||'"'!==l.charAt(0)||(l=l.slice(1,-1));try{var c=t(a[0]);if(l=(i.read||i)(l,c)||t(l),s)try{l=JSON.parse(l)}catch(e){}if(n[c]=l,e===c)break}catch(e){}}return e?n[e]:n}}return n.set=r,n.get=function(e){return o(e,!1)},n.getJSON=function(e){return o(e,!0)},n.remove=function(t,s){r(t,"",e(s,{expires:-1}))},n.defaults={},n.withConverter=s,n}((function(){}))},e.exports=s()}(ze={path:Te,exports:{},require:function(e,t){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==t&&ze.path)}},ze.exports),ze.exports);const Ve=new WeakMap,Ie=e=>!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length),We=(e,t,s)=>{const i=Ve.get(e)||{};s?i[t]=s:delete i[t],Ve.set(e,i)},qe=(e,t)=>(Ve.get(e)||{})[t],Ue=function(e,t,s,i,n,r,o){const a="on:"+e+"-"+s+"-"+i;"function"==typeof i&&(o=r,r=n,n=i,i=null);const l={fn:r=>{o&&Be(e,t,s,i),i?Array.from(t.querySelectorAll(i)).forEach(e=>{(r.target===e||e.contains(r.target))&&n(r,e)}):n(r)},options:r||!1};We(t,a,l),s.split(/[\s,]+/).forEach(e=>{t.addEventListener(e.trim(),l.fn,l.options)})},Be=function(e,t,s,i){const n="on:"+e+"-"+s+"-"+i,r=qe(t,n);r&&(s.split(/[\s,]+/).forEach(e=>{t.removeEventListener(e.trim(),r.fn,r.options)}),We(t,n))},Qe={hasClass:(e,t)=>-1!==(e.className||"").split(/\s+/).indexOf(t),addClass:(e,t)=>{const s=(e.className||"").split(/\s+/);Array.isArray(t)||(t=t.split(/[\s,]/)),t.forEach(e=>{e=e.trim(),-1===s.indexOf(e)&&s.push(e)}),e.className=s.join(" ")},removeClass:(e,t)=>{const s=(e.className||"").split(/\s+/);Array.isArray(t)||(t=t.split(/[\s,]/)),t.forEach(e=>{e=e.trim(),-1!==s.indexOf(e)&&s.splice(s.indexOf(e),1)}),e.className=s.join(" ")},isVisible:Ie,inViewPort:(e,t=window)=>{const s=e.getBoundingClientRect(),i=Ie(e),n=s.bottom<0;let r;return r=t.self===window?s.top>(window.innerHeight||document.documentElement.clientHeight):s.top>t.clientHeight,i&&!r&&!n},setCSS:(e,t)=>{for(const s in t)if(Object.prototype.hasOwnProperty.call(t,s)){const i=Ce(s);e.style[i]=t[s]}},setMetaData:We,getMetaData:qe,on:Ue,off:Be,once:function(e,t,s,i,n,r){Ue(e,t,s,i,n,r,!0)}};class Ze{constructor(e){this.options=e,this.observers=[],this.pendingAnimationFrame=void 0,this.frameQueue=[]}subscribe(e){this.observers.length||this.wakeup(),this.observers.push(e)}unSubscribe(e){-1!==this.observers.indexOf(e)&&this.observers.splice(this.observers.indexOf(e),1),this.observers.length||this.sleep()}sleep(){}wakeup(){}notifyObservers(e,t){for(let s=0;s<this.observers.length;s++)this.observers[s][e]&&this.observers[s][e].apply(this.observers[s],t||[])}flushQueue(){this.pendingAnimationFrame&&(cancelAnimationFrame(this.pendingAnimationFrame),this.pendingAnimationFrame=void 0),this.frameQueue=[]}queueFrame(e){this.frameQueue.push(e.bind(this)),this.pendingAnimationFrame||(this.pendingAnimationFrame=requestAnimationFrame(()=>{this.processQueue()}))}processQueue(){this.pendingAnimationFrame=void 0;var e=this.frameQueue.slice(0);this.frameQueue=[];for(var t=0;t<e.length;t++)e[t]()}}var Ge,$e,Je,Ye,_e;Ge=new class extends Ze{constructor(e){super(e),this.mutationHandler=Pe((e,t)=>{this.observeDOM(e,t)},100,{maxWait:250}),this.mutationObserver=new MutationObserver(this.mutationHandler,!1)}subscribe(e){super.subscribe(e),e.watchDOM()}wakeup(){super.wakeup(),this.mutationObserver.observe(document.body,{childList:!0,subtree:!0})}sleep(){super.sleep(),this.mutationObserver.disconnect()}observeDOM(){this.notifyObservers("watchDOM")}},$e=new class extends Ze{constructor(e={}){super(e),this.scrollElement=this.options.scrollElement||window,this.lastscroll=this.scrollTop(),this.scrolling=!1,this.trigger=()=>{this.scrolling||this.scrollLoop()},this.scrollLoop=()=>{if(this.lastscroll!==this.scrollTop()){this.scrolling=!0,this.lastscroll=this.scrollTop(),this.watchScroll();const e=()=>{this.scrollLoop()};this.queueFrame(e)}else this.scrolling=!1}}setOptions(e={}){this.sleep(),this.scrollElement=e.scrollElement||window,this.wakeup()}subscribe(e){super.subscribe(e),e.watchScroll()}wakeup(){super.wakeup(),this.scrollElement.addEventListener("scroll",this.trigger,!1)}sleep(){super.sleep(),this.scrollElement.removeEventListener("scroll",this.trigger)}inViewPort(e){return Qe.inViewPort(e,this.scrollElement)}watchScroll(){this.notifyObservers("watchScroll")}scrollTop(e){if(this.scrollElement===window){if(void 0===e)return window.pageYOffset;window.scrollTo(0,e)}else{if(void 0===e)return this.scrollElement.scrollTop;this.scrollElement.scrollTop=e}}},Je=new class extends Ze{constructor(e){super(e),this.debounce=Pe(()=>{this.watchResize()},250)}subscribe(e){super.subscribe(e),e.watchResize()}wakeup(){super.wakeup(),window.addEventListener("resize",this.debounce,!1)}sleep(){super.sleep(),window.removeEventListener("resize",this.debounce)}watchResize(){this.notifyObservers("watchResize")}},Ye=new class extends Ze{constructor(e){super(e),"onorientationchange"in window?Qe.addClass(document.body,"have-orientation"):Qe.addClass(document.body,"no-orientation"),this.debounce=Pe(()=>{this.watchOrientation()},250)}subscribe(e){super.subscribe(e),e.watchOrientation()}wakeup(){super.wakeup(),"onorientationchange"in window&&window.addEventListener("orientationchange",this.debounce,!1)}sleep(){super.sleep(),"onorientationchange"in window&&window.removeEventListener("orientationchange",this.debounce)}watchOrientation(){this.notifyObservers("watchOrientation")}},_e=new class extends Ze{constructor(e){super(e),this.workers={}}registerWorker(e,t){if(!this.workers[e]){let s=t,i=!1;if(!t.match(/^(http|\/)/i)){const e=new Blob([t],{type:"text/javascript"});s=URL.createObjectURL(e),i=!0}this.workers[e]={worker:new Worker(s),observers:[]},i&&URL.revokeObjectURL(s),this.workers[e].worker.onmessage=t=>{this.workerMessage(e,t)}}return this.workers[e].worker}subscribe(e,t){if(!this.workers[t])throw new Error("worker "+t+" does not exist");this.workers[t].observers.push(e),super.subscribe(e)}unSubscribe(e,t){if(!this.workers[t])throw new Error("worker "+t+" does not exist");const s=this.workers[t].observers;-1!==s.indexOf(e)&&s.splice(s.indexOf(e),1),s.length||(this.workers[t].worker.terminate(),delete this.workers[t]),super.unSubscribe(e)}workerMessage(e,t){this.notifyObservers("workerMessage",[e,t])}wakeup(){super.wakeup()}sleep(){super.sleep()}};let Ke=0;const Xe=[],et="customElements"in window,tt={},st=(e,t)=>{if(tt[e]=t,et){const t=`\n\t\t\treturn class ${e}Element extends HTMLElement {\n\t\t\t\tconstructor(element, options = {}) {\n\t\t\t\t\tsuper()\n\t\t\t\t\tthis.helperClass= '${e}'\n\t\t\t\t\tthis.helper = null\n\t\t\t\t}\n\n\t\t\t\tconnectedCallback () {\n\t\t\t\t\tthis.helper = new registeredClasses[this.helperClass](this,{isCustomElement:true})\n\t\t\t\t\tthis.helper.start()\n\t\t\t\t}\n\n\t\t\t\tdisconnectedCallback () {\n\t\t\t\t\tthis.helper.destroy()\n\t\t\t\t\tthis.helper = null // nuke the reference for trash collection\n\t\t\t\t}\n\t\t\t}`;customElements.define("sargasso-"+Ne(e),new Function("registeredClasses",t)(tt))}},it=["DOMChanged","didScroll","didResize","didBreakpoint","enterViewport","exitViewport","enterFullscreen","exitFullscreen","newPage","elementEvent"];class nt{constructor(e,t={}){this.uid=++Ke,this.element=e,this.options=t,this.pendingAnimationFrame=void 0,this.frameQueue=[],this.isInViewport=!1,this.workers={},this.started=!1}start(){const e=this.getMetaData("registeredResponsiveControllers")||[];e.push(this),this.setMetaData("registeredResponsiveControllers",e),this.setMetaData(this.constructor.name,this),Xe.push(this),this.options.watchDOM&&Ge.subscribe(this),(this.options.watchScroll||this.options.watchViewport)&&$e.subscribe(this),(this.options.watchResize||this.options.watchViewport)&&Je.subscribe(this),(this.options.watchOrientation||this.options.watchViewport)&&Ye.subscribe(this),this.elementListener=e=>{e.detail&&e.detail.sargassoEvent&&-1!==it.indexOf(e.detail.sargassoEvent)?this[e.detail.sargassoEvent].apply(this,e.detail.sargassoEventOptions||[]):this.elementEvent(e)},this.element.addEventListener("sargasso",this.elementListener),this.started=!0}sleep(){this.options.watchDOM&&Ge.unSubscribe(this),(this.options.watchScroll||this.options.watchViewport)&&$e.unSubscribe(this),(this.options.watchResize||this.options.watchViewport)&&Je.unSubscribe(this),(this.options.watchOrientation||this.options.watchViewport)&&Ye.unSubscribe(this),this.element.removeEventListener("sargasso",this.elementListener),this.started=!1}DOMChanged(){}didScroll(){}didResize(){}didBreakpoint(){}enterViewport(){}exitViewport(){}enterFullscreen(){}exitFullscreen(){}newPage(e,t){}elementEvent(e){}workerOnMessage(e,t){}setMetaData(e,t){Qe.setMetaData(this.element,e,t)}getMetaData(e){return Qe.getMetaData(this.element,e)}on(e,t,s,i){Qe.on(this.constructor.name+"-"+this.uid,this.element,e,t,s,i)}off(e,t){Qe.off(this.constructor.name+"-"+this.uid,this.element,e,t)}once(e,t,s,i){Qe.once(this.constructor.name+"-"+this.uid,this.element,e,t,s,i)}notifyAll(e,t){if(-1===it.indexOf(e))throw new Error("invalid event name "+e);for(let s=0;s<Xe.length;s++){const i=Xe[s];i!==this&&i[e]&&i[e].apply(i,t)}}notifyElement(e,t,s){if(-1===it.indexOf(t))throw new Error("invalid event name "+t);const i=this.getMetaData("registeredResponsiveControllers");if(i)for(let e=0;e<i.length;e++){const n=i[e];n!==this&&n[t]&&n[t].apply(n,s)}}queueFrame(e){this.frameQueue.push(e.bind(this)),this.pendingAnimationFrame||(this.pendingAnimationFrame=requestAnimationFrame(()=>{this.processQueue()}))}wantFullscreen(e){e?this.enterFullscreen():this.exitFullscreen()}hasClass(e){return Qe.hasClass(this.element,e)}addClass(e){Qe.addClass(this.element,e)}removeClass(e){Qe.removeClass(this.element,e)}setCSS(e){Qe.setCSS(this.element,e)}isVisible(){return Qe.isVisible(this.element)}scrollTop(e){return $e.scrollTop(e)}workerStart(e,t){return this.workers[e]=_e.registerWorker(e,t),_e.subscribe(this,e),this.workers[e]}workerPostMessage(e,t){t.uid||(t.uid=this.uid),this.workers[e]&&this.workers[e].postMessage(t)}flushQueue(){this.pendingAnimationFrame&&(cancelAnimationFrame(this.pendingAnimationFrame),this.pendingAnimationFrame=void 0),this.frameQueue=[]}processQueue(){this.pendingAnimationFrame=void 0;var e=this.frameQueue.slice(0);this.frameQueue=[];for(var t=0;t<e.length;t++)e[t]()}stopWorker(e){this.workers[e]&&(_e.unSubscribe(this,e),delete this.workers[e])}stopAllWorkers(){for(const e in this.workers)this.stopWorker(e)}destroy(){this.stopAllWorkers(),this.flushQueue(),this.started&&this.sleep();const e=this.getMetaData("registeredResponsiveControllers");e&&-1!==e.indexOf(this)&&(e.splice(e.indexOf(this),1),this.setMetaData("registeredResponsiveControllers",e)),this.setMetaData(this.constructor.name,null),this.element=null,-1!==Xe.indexOf(this)&&Xe.splice(Xe.indexOf(this),1)}watchDOM(){this.DOMChanged()}watchScroll(){this.options.watchViewport&&this.inViewport(),this.didScroll()}watchResize(){this.options.watchViewport&&this.inViewport(),this.didResize()}watchOrientation(){!window.orientation||90!==window.orientation&&-90!==window.orientation?this.wantFullscreen(!1):this.wantFullscreen(!0)}inViewport(){$e.inViewPort(this.element)?this.isInViewport||(this.enterViewport(),this.isInViewport=!0):this.isInViewport&&(this.exitViewport(),this.isInViewport=!1)}workerMessage(e,t){t.data.uid===this.uid&&this.workerOnMessage(e,t.data)}nativeRequestFullScreen(){if(document.fullscreenElement){if(document.fullscreenElement===this.element)return;document.exitFullscreen()}this.element.requestFullscreen()}nativeExitFullScreen(){document.fullscreenElement&&document.fullscreenElement===this.element&&document.exitFullscreen()}}st("Sargasso",nt);class rt extends nt{constructor(e,t={}){t.watchScroll=!0,t.watchResize=!0,t.watchDOM=!0,t.immortal=!0,super(e,t)}didResize(){super.didResize(),this.lazyHandler()}didScroll(){super.didScroll(),this.lazyHandler()}DOMChanged(){super.DOMChanged(),this.lazyHandler()}lazyHandler(){const e=document.querySelectorAll("[data-lazy-sargasso-class]");for(let t=0;t<e.length;t++){const s=e[t];if($e.inViewPort(s)){const i=s.getAttribute("data-lazy-sargasso-class").split(/\s*,\s*/);for(let s=0;s<i.length;s++){new tt[i[s]](e[t]).start()}s.removeAttribute("data-lazy-sargasso-class")}}}}st("LazyInstantiate",rt);class ot extends nt{constructor(e,t={}){super(e,{watchDOM:!0,mortal:!1}),this.lazy=new rt(e,t)}start(){this.lazy.start(),super.start()}instantiate(e){const t=e.getAttribute("data-sargasso-class").split(/\s*,\s*/);for(let s=0;s<t.length;s++)try{new tt[t[s]](e).start()}catch(e){console.log("error instantiating "+t[s],e,tt)}e.removeAttribute("data-sargasso-class")}newPage(){this.doIt()}DOMChanged(){this.doIt()}doIt(){const e=document.querySelectorAll("[data-sargasso-class]");for(const t of e)this.instantiate(t);const t=[];for(let e=0;e<Xe.length;e++)Xe[e].options.immortal||Xe[e].options.isCustomElement||document.body.contains(Xe[e].element)||t.push(Xe[e]);for(let e=0;e<t.length;e++)t[e].destroy()}}st("SargassoSupervisor",ot);const at=[{className:"screen-xs",maxWidth:599},{className:"screen-sm",maxWidth:1023},{className:"screen-md",maxWidth:1439},{className:"screen-lg",maxWidth:1999},{className:"screen-xl",maxWidth:void 0}];class lt extends nt{constructor(e,t={}){t.watchResize=!0,super(e,t),t.widths?this.options.widths=t.widths:this.options.widths=at,this.scale=void 0,this.disabled=!1,this.forceScale=void 0,this.orientation=void 0,this.widths=[],this.classes=[]}start(){super.start();let e=".show-hide{display:none;}\n";this.widths.push(0);for(let t=0;t<this.options.widths.length;t++)this.options.widths[t].maxWidth&&this.widths.push(this.options.widths[t].maxWidth),this.classes.push(this.options.widths[t].className),e+="."+this.options.widths[t].className+" .hidden-"+this.options.widths[t].className+"{display:none;}\n",e+=".not-"+this.options.widths[t].className+" .hidden-not-"+this.options.widths[t].className+"{display:none;}\n",e+="."+this.options.widths[t].className+" .shown-"+this.options.widths[t].className+"{display:block;}\n",e+=".not-"+this.options.widths[t].className+" .shown-not-"+this.options.widths[t].className+"{display:block;}\n";const t=document.createElement("style");t.type="text/css",t.innerHTML=e,document.getElementsByTagName("head")[0].appendChild(t),this.detectGeometry()}didResize(){super.didResize(),this.detectGeometry()}disableResponsive(e){Qe.addClass(document.body,"disable-responsive"),this.disabled=!0,this.forceScale=e,this.detectGeometry()}enableResponsive(){Qe.removeClass(document.body,"disable-responsive"),this.disabled=!1,this.forceScale="",this.detectGeometry()}detectGeometry(){let e=this.classes[this.widths.length-1];if(this.disabled)e=this.forceScale;else{const t=window.innerWidth;if(window.innerHeight>t){if("portrait"!==this.orientation){const e=()=>{Qe.removeClass(document.body,"landscape"),Qe.addClass(document.body,"portrait")};this.queueFrame(e),this.orientation="portrait"}}else if("landscape"!==this.orientation){const e=()=>{Qe.removeClass(document.body,"portrait"),Qe.addClass(document.body,"landscape")};this.queueFrame(e),this.orientation="landscape"}for(let s=0;s<this.widths.length-1;s++)if(t>=this.widths[s]&&t<this.widths[s+1]){e=this.classes[s];break}}let t=0;if(e!==this.scale){++t;const s=()=>{for(let t=0;t<this.classes.length;t++)this.classes[t]!==e?(Qe.addClass(document.body,"not-"+this.classes[t]),Qe.removeClass(document.body,this.classes[t]),Qe.removeClass(document.body,"shown-"+this.classes[t]),Qe.removeClass(document.body,"hidden-"+this.classes[t])):Qe.removeClass(document.body,"not-"+this.classes[t]);Qe.addClass(document.body,e),Qe.addClass(document.body,"shown-"+e),Qe.addClass(document.body,"hidden-"+e),this.notifyAll("didBreakpoint",[e])};this.queueFrame(s)}this.scale=e,t&&this.setHints()}setHints(){let e="";this.scale&&(e&&(e+=" "),e+=this.scale),e!==this.getCookie("responsive")&&this.setCookie("responsive",e)}getCookie(e){return He.get(e)}setCookie(e,t,s){const i={path:"/",domain:this.options.cookieDomain||null,expires:s};He.set(e,t,i)}deleteCookie(e){this.setCookie(e,null)}}st("Breakpoints",lt);class ct extends nt{constructor(e,t={}){t.watchDOM=!0,t.immortal=!0,super(e,t),this.excludeRegex=new RegExp("^(//|http|javascript|mailto|#)","i"),this.currentPage=location.pathname+location.search}start(){super.start(),window.addEventListener("popstate",e=>{this.watchPopState(e)},!1)}DOMChanged(){super.DOMChanged(),this.hijaxLinks()}watchPopState(e){location.pathname+location.search!==this.currentPage&&this.preFlight(location.pathname+location.search)}hijaxLinks(e){const t=e?e.getElementsByTagName("a"):this.element.getElementsByTagName("a");for(let e=0;e<t.length;e++){const s=t[e],i=s.getAttribute("href");!i||s.getAttribute("data-hijaxed")||s.getAttribute("target")||s.hasAttribute("data-no-hijax")||this.excludeRegex.exec(i)||(s.setAttribute("data-hijaxed",!0),s.addEventListener("click",e=>{e.preventDefault(),this.setPage(i)},!1))}}setPage(e,t){e===this.currentPage||t?this.preFlight(e):(history.pushState(null,null,e),this.watchPopState())}preFlight(e){if(!this.options.preFlight)return this.loadPage(e);this.options.preFlight(e,(t,s,i)=>{t&&(this.options.onError?this.options.onError("danger",t):alert("Error loading page: "+t)),s?this.currentPage=location.pathname+location.search:this.loadPage(i||e)})}loadPage(e){this.queueFrame(()=>{Qe.addClass(document.body,"hijax-loading")}),this.options.onExitPage&&this.options.onExitPage();const t=new XMLHttpRequest;t.open("GET",e),t.setRequestHeader("Sargasso-Hijax",1),t.setRequestHeader("x-digitopia-hijax",1),this.options.onLoading&&(this.options.onLoading(),t.onreadystatechange=this.options.onLoading),t.onload=()=>{if(301===t.status||302===t.status||t.getResponseHeader("Sargasso-Location")){const e=t.getResponseHeader("Location")?t.getResponseHeader("Location"):t.getResponseHeader("Sargasso-Location");this.setPage(e)}else if(200===t.status){this.scrollTop(0),this.mergePage(t.responseText);const e=this.currentPage,s=()=>{this.notifyAll("newPage",[e,location.pathname+location.search]),Qe.removeClass(document.body,"hijax-loading")};this.queueFrame(s),this.currentPage=location.pathname+location.search}else{const e=t.getResponseHeader("Sargasso-Flash-Level")||"danger";let s=t.getResponseHeader("Sargasso-Flash-Message")||t.statusText;s||(s="Could not connect to server."),this.options.onError?this.options.onError(e,s):alert("Error loading page: "+s)}},t.send()}processScripts(e){Array.from(e).forEach(e=>{e.remove();const t=e.getAttribute("id");document.getElementById(t)||document.getElementsByTagName("head")[0].appendChild(e)})}mergePage(e){const t=document.querySelectorAll("[data-ephemeral]");Array.from(t).forEach(e=>{e.remove()});const s=e.split(/(<body[^>]*>|<\/body>)/gi),i=ut(s[2]),n=document.querySelectorAll("[data-hijax]");for(let e=0;e<n.length;e++){const t=n[e],s=n[e].getAttribute("id"),r=i.getElementById(s);this.processScripts(r.querySelectorAll("script"));const o=()=>{t.parentNode.replaceChild(r,t),this.options.onEnterPage&&this.options.onEnterPage(),this.hijaxLinks(r)};this.queueFrame(o)}}}st("HijaxLoader",ct);const ut=e=>{if(document.createRange&&document.createRange().createContextualFragment)return document.createRange().createContextualFragment(e);const t=document.createDocumentFragment(),s=document.createElement("div");return s.insertAdjacentHTML("afterBegin",e),t.appendChild(s),t},ht={registerSargassoClass:st,bootSargasso:(t={})=>{t.scrollElement&&$e.setOptions(t);if(new ot(document.body,t).start(t),t.breakpoints){new lt(document.body,t.breakpoints).start()}if(t.hijax){const s=new ct(document.body,t.hijax);s.start(),e.loadPageHandler=s.setPage.bind(s)}else e.loadPageHandler=e=>{document.location.href=e}},elementTools:Qe},dt={theDOMWatcher:Ge,theScrollWatcher:$e,theResizeWatcher:Je,theOrientationWatcher:Ye,theWorkerWatcher:_e};return e.Sargasso=nt,e.services=dt,e.utils=ht,e}({});
var PelagicCreatures=function(e){"use strict";var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var s="object"==typeof t&&t&&t.Object===Object&&t,i="object"==typeof self&&self&&self.Object===Object&&self,n=s||i||Function("return this")(),r=n.Symbol;var o=function(e,t){for(var s=-1,i=null==e?0:e.length,n=Array(i);++s<i;)n[s]=t(e[s],s,e);return n},a=Array.isArray,l=Object.prototype,c=l.hasOwnProperty,h=l.toString,u=r?r.toStringTag:void 0;var d=function(e){var t=c.call(e,u),s=e[u];try{e[u]=void 0;var i=!0}catch(e){}var n=h.call(e);return i&&(t?e[u]=s:delete e[u]),n},p=Object.prototype.toString;var f=function(e){return p.call(e)},m=r?r.toStringTag:void 0;var g=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":m&&m in Object(e)?d(e):f(e)};var w=function(e){return null!=e&&"object"==typeof e};var v=function(e){return"symbol"==typeof e||w(e)&&"[object Symbol]"==g(e)},b=r?r.prototype:void 0,x=b?b.toString:void 0;var y=function e(t){if("string"==typeof t)return t;if(a(t))return o(t,e)+"";if(v(t))return x?x.call(t):"";var s=t+"";return"0"==s&&1/t==-Infinity?"-0":s};var E=function(e){return null==e?"":y(e)};var C=function(e,t,s){var i=-1,n=e.length;t<0&&(t=-t>n?0:n+t),(s=s>n?n:s)<0&&(s+=n),n=t>s?0:s-t>>>0,t>>>=0;for(var r=Array(n);++i<n;)r[i]=e[i+t];return r};var O=function(e,t,s){var i=e.length;return s=void 0===s?i:s,!t&&s>=i?e:C(e,t,s)},k=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");var S=function(e){return k.test(e)};var A=function(e){return e.split("")},R="[\\ud800-\\udfff]",F="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",M="\\ud83c[\\udffb-\\udfff]",L="[^\\ud800-\\udfff]",j="(?:\\ud83c[\\udde6-\\uddff]){2}",D="[\\ud800-\\udbff][\\udc00-\\udfff]",T="(?:"+F+"|"+M+")"+"?",z="[\\ufe0e\\ufe0f]?",P=z+T+("(?:\\u200d(?:"+[L,j,D].join("|")+")"+z+T+")*"),N="(?:"+[L+F+"?",F,j,D,R].join("|")+")",H=RegExp(M+"(?="+M+")|"+N+P,"g");var V=function(e){return e.match(H)||[]};var I=function(e){return S(e)?V(e):A(e)};var W=function(e){return function(t){t=E(t);var s=S(t)?I(t):void 0,i=s?s[0]:t.charAt(0),n=s?O(s,1).join(""):t.slice(1);return i[e]()+n}}("toUpperCase");var q=function(e){return W(E(e).toLowerCase())};var U=function(e,t,s,i){var n=-1,r=null==e?0:e.length;for(i&&r&&(s=e[++n]);++n<r;)s=t(s,e[n],n,e);return s};var B=function(e){return function(t){return null==e?void 0:e[t]}}({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),Q=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Z=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g");var G=function(e){return(e=E(e))&&e.replace(Q,B).replace(Z,"")},$=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;var J=function(e){return e.match($)||[]},Y=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;var _=function(e){return Y.test(e)},K="\\u2700-\\u27bf",X="a-z\\xdf-\\xf6\\xf8-\\xff",ee="A-Z\\xc0-\\xd6\\xd8-\\xde",te="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",se="["+te+"]",ie="\\d+",ne="[\\u2700-\\u27bf]",re="["+X+"]",oe="[^\\ud800-\\udfff"+te+ie+K+X+ee+"]",ae="(?:\\ud83c[\\udde6-\\uddff]){2}",le="[\\ud800-\\udbff][\\udc00-\\udfff]",ce="["+ee+"]",he="(?:"+re+"|"+oe+")",ue="(?:"+ce+"|"+oe+")",de="(?:['’](?:d|ll|m|re|s|t|ve))?",pe="(?:['’](?:D|LL|M|RE|S|T|VE))?",fe="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",me="[\\ufe0e\\ufe0f]?",ge=me+fe+("(?:\\u200d(?:"+["[^\\ud800-\\udfff]",ae,le].join("|")+")"+me+fe+")*"),we="(?:"+[ne,ae,le].join("|")+")"+ge,ve=RegExp([ce+"?"+re+"+"+de+"(?="+[se,ce,"$"].join("|")+")",ue+"+"+pe+"(?="+[se,ce+he,"$"].join("|")+")",ce+"?"+he+"+"+de,ce+"+"+pe,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",ie,we].join("|"),"g");var be=function(e){return e.match(ve)||[]};var xe=function(e,t,s){return e=E(e),void 0===(t=s?void 0:t)?_(e)?be(e):J(e):e.match(t)||[]},ye=RegExp("['’]","g");var Ee=function(e){return function(t){return U(xe(G(t).replace(ye,"")),e,"")}},Ce=Ee((function(e,t,s){return t=t.toLowerCase(),e+(s?q(t):t)}));var Oe=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)},ke=function(){return n.Date.now()},Se=/^\s+|\s+$/g,Ae=/^[-+]0x[0-9a-f]+$/i,Re=/^0b[01]+$/i,Fe=/^0o[0-7]+$/i,Me=parseInt;var Le=function(e){if("number"==typeof e)return e;if(v(e))return NaN;if(Oe(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=Oe(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(Se,"");var s=Re.test(e);return s||Fe.test(e)?Me(e.slice(2),s?2:8):Ae.test(e)?NaN:+e},je=Math.max,De=Math.min;var Te,ze=function(e,t,s){var i,n,r,o,a,l,c=0,h=!1,u=!1,d=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function p(t){var s=i,r=n;return i=n=void 0,c=t,o=e.apply(r,s)}function f(e){return c=e,a=setTimeout(g,t),h?p(e):o}function m(e){var s=e-l;return void 0===l||s>=t||s<0||u&&e-c>=r}function g(){var e=ke();if(m(e))return w(e);a=setTimeout(g,function(e){var s=t-(e-l);return u?De(s,r-(e-c)):s}(e))}function w(e){return a=void 0,d&&i?p(e):(i=n=void 0,o)}function v(){var e=ke(),s=m(e);if(i=arguments,n=this,l=e,s){if(void 0===a)return f(l);if(u)return clearTimeout(a),a=setTimeout(g,t),p(l)}return void 0===a&&(a=setTimeout(g,t)),o}return t=Le(t)||0,Oe(s)&&(h=!!s.leading,r=(u="maxWait"in s)?je(Le(s.maxWait)||0,t):r,d="trailing"in s?!!s.trailing:d),v.cancel=function(){void 0!==a&&clearTimeout(a),c=0,i=l=n=a=void 0},v.flush=function(){return void 0===a?o:w(ke())},v},Pe=Ee((function(e,t,s){return e+(s?"-":"")+t.toLowerCase()})),Ne=(function(e,t){var s;s=function(){function e(){for(var e=0,t={};e<arguments.length;e++){var s=arguments[e];for(var i in s)t[i]=s[i]}return t}function t(e){return e.replace(/(%[0-9A-Z]{2})+/g,decodeURIComponent)}return function s(i){function n(){}function r(t,s,r){if("undefined"!=typeof document){"number"==typeof(r=e({path:"/"},n.defaults,r)).expires&&(r.expires=new Date(1*new Date+864e5*r.expires)),r.expires=r.expires?r.expires.toUTCString():"";try{var o=JSON.stringify(s);/^[\{\[]/.test(o)&&(s=o)}catch(e){}s=i.write?i.write(s,t):encodeURIComponent(String(s)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent),t=encodeURIComponent(String(t)).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent).replace(/[\(\)]/g,escape);var a="";for(var l in r)r[l]&&(a+="; "+l,!0!==r[l]&&(a+="="+r[l].split(";")[0]));return document.cookie=t+"="+s+a}}function o(e,s){if("undefined"!=typeof document){for(var n={},r=document.cookie?document.cookie.split("; "):[],o=0;o<r.length;o++){var a=r[o].split("="),l=a.slice(1).join("=");s||'"'!==l.charAt(0)||(l=l.slice(1,-1));try{var c=t(a[0]);if(l=(i.read||i)(l,c)||t(l),s)try{l=JSON.parse(l)}catch(e){}if(n[c]=l,e===c)break}catch(e){}}return e?n[e]:n}}return n.set=r,n.get=function(e){return o(e,!1)},n.getJSON=function(e){return o(e,!0)},n.remove=function(t,s){r(t,"",e(s,{expires:-1}))},n.defaults={},n.withConverter=s,n}((function(){}))},e.exports=s()}(Te={exports:{}},Te.exports),Te.exports);const He=new WeakMap,Ve=e=>!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length),Ie=(e,t,s)=>{const i=He.get(e)||{};s?i[t]=s:delete i[t],He.set(e,i)},We=(e,t)=>(He.get(e)||{})[t],qe=function(e,t,s,i,n,r,o){const a="on:"+e+"-"+s+"-"+i;"function"==typeof i&&(o=r,r=n,n=i,i=null);const l={fn:r=>{o&&Ue(e,t,s,i),i?Array.from(t.querySelectorAll(i)).forEach(e=>{(r.target===e||e.contains(r.target))&&n(r,e)}):n(r)},options:r||!1};Ie(t,a,l),s.split(/[\s,]+/).forEach(e=>{t.addEventListener(e.trim(),l.fn,l.options)})},Ue=function(e,t,s,i){const n="on:"+e+"-"+s+"-"+i,r=We(t,n);r&&(s.split(/[\s,]+/).forEach(e=>{t.removeEventListener(e.trim(),r.fn,r.options)}),Ie(t,n))},Be={hasClass:(e,t)=>-1!==(e.className||"").split(/\s+/).indexOf(t),addClass:(e,t)=>{const s=(e.className||"").split(/\s+/);Array.isArray(t)||(t=t.split(/[\s,]/)),t.forEach(e=>{e=e.trim(),-1===s.indexOf(e)&&s.push(e)}),e.className=s.join(" ")},removeClass:(e,t)=>{const s=(e.className||"").split(/\s+/);Array.isArray(t)||(t=t.split(/[\s,]/)),t.forEach(e=>{e=e.trim(),-1!==s.indexOf(e)&&s.splice(s.indexOf(e),1)}),e.className=s.join(" ")},isVisible:Ve,inViewPort:(e,t=window)=>{const s=e.getBoundingClientRect(),i=Ve(e),n=s.bottom<0;let r;return r=t.self===window?s.top>(window.innerHeight||document.documentElement.clientHeight):s.top>t.clientHeight,i&&!r&&!n},setCSS:(e,t)=>{for(const s in t)if(Object.prototype.hasOwnProperty.call(t,s)){const i=Ce(s);e.style[i]=t[s]}},setMetaData:Ie,getMetaData:We,on:qe,off:Ue,once:function(e,t,s,i,n,r){qe(e,t,s,i,n,r,!0)}};class Qe{constructor(e){this.options=e,this.observers=[],this.pendingAnimationFrame=void 0,this.frameQueue=[]}subscribe(e){this.observers.length||this.wakeup(),this.observers.push(e)}unSubscribe(e){-1!==this.observers.indexOf(e)&&this.observers.splice(this.observers.indexOf(e),1),this.observers.length||this.sleep()}sleep(){}wakeup(){}notifyObservers(e,t){for(let s=0;s<this.observers.length;s++)this.observers[s][e]&&this.observers[s][e].apply(this.observers[s],t||[])}flushQueue(){this.pendingAnimationFrame&&(cancelAnimationFrame(this.pendingAnimationFrame),this.pendingAnimationFrame=void 0),this.frameQueue=[]}queueFrame(e){this.frameQueue.push(e.bind(this)),this.pendingAnimationFrame||(this.pendingAnimationFrame=requestAnimationFrame(()=>{this.processQueue()}))}processQueue(){this.pendingAnimationFrame=void 0;var e=this.frameQueue.slice(0);this.frameQueue=[];for(var t=0;t<e.length;t++)e[t]()}}var Ze,Ge,$e,Je,Ye;Ze=new class extends Qe{constructor(e){super(e),this.mutationHandler=ze((e,t)=>{this.observeDOM(e,t)},100,{maxWait:250}),this.mutationObserver=new MutationObserver(this.mutationHandler,!1)}subscribe(e){super.subscribe(e),e.watchDOM()}wakeup(){super.wakeup(),this.mutationObserver.observe(document.body,{childList:!0,subtree:!0})}sleep(){super.sleep(),this.mutationObserver.disconnect()}observeDOM(){this.notifyObservers("watchDOM")}},Ge=new class extends Qe{constructor(e={}){super(e),this.scrollElement=this.options.scrollElement||window,this.lastscroll=this.scrollTop(),this.scrolling=!1,this.trigger=()=>{this.scrolling||this.scrollLoop()},this.scrollLoop=()=>{if(this.lastscroll!==this.scrollTop()){this.scrolling=!0,this.lastscroll=this.scrollTop(),this.watchScroll();const e=()=>{this.scrollLoop()};this.queueFrame(e)}else this.scrolling=!1}}setOptions(e={}){this.sleep(),this.scrollElement=e.scrollElement||window,this.wakeup()}subscribe(e){super.subscribe(e),e.watchScroll()}wakeup(){super.wakeup(),this.scrollElement.addEventListener("scroll",this.trigger,!1)}sleep(){super.sleep(),this.scrollElement.removeEventListener("scroll",this.trigger)}inViewPort(e){return Be.inViewPort(e,this.scrollElement)}watchScroll(){this.notifyObservers("watchScroll")}scrollTop(e){if(this.scrollElement===window){if(void 0===e)return window.pageYOffset;window.scrollTo(0,e)}else{if(void 0===e)return this.scrollElement.scrollTop;this.scrollElement.scrollTop=e}}},$e=new class extends Qe{constructor(e){super(e),this.debounce=ze(()=>{this.watchResize()},250)}subscribe(e){super.subscribe(e),e.watchResize()}wakeup(){super.wakeup(),window.addEventListener("resize",this.debounce,!1)}sleep(){super.sleep(),window.removeEventListener("resize",this.debounce)}watchResize(){this.notifyObservers("watchResize")}},Je=new class extends Qe{constructor(e){super(e),"onorientationchange"in window?Be.addClass(document.body,"have-orientation"):Be.addClass(document.body,"no-orientation"),this.debounce=ze(()=>{this.watchOrientation()},250)}subscribe(e){super.subscribe(e),e.watchOrientation()}wakeup(){super.wakeup(),"onorientationchange"in window&&window.addEventListener("orientationchange",this.debounce,!1)}sleep(){super.sleep(),"onorientationchange"in window&&window.removeEventListener("orientationchange",this.debounce)}watchOrientation(){this.notifyObservers("watchOrientation")}},Ye=new class extends Qe{constructor(e){super(e),this.workers={}}registerWorker(e,t){if(!this.workers[e]){let s=t,i=!1;if(!t.match(/^(http|\/)/i)){const e=new Blob([t],{type:"text/javascript"});s=URL.createObjectURL(e),i=!0}this.workers[e]={worker:new Worker(s),observers:[]},i&&URL.revokeObjectURL(s),this.workers[e].worker.onmessage=t=>{this.workerMessage(e,t)}}return this.workers[e].worker}subscribe(e,t){if(!this.workers[t])throw new Error("worker "+t+" does not exist");this.workers[t].observers.push(e),super.subscribe(e)}unSubscribe(e,t){if(!this.workers[t])throw new Error("worker "+t+" does not exist");const s=this.workers[t].observers;-1!==s.indexOf(e)&&s.splice(s.indexOf(e),1),s.length||(this.workers[t].worker.terminate(),delete this.workers[t]),super.unSubscribe(e)}workerMessage(e,t){this.notifyObservers("workerMessage",[e,t])}wakeup(){super.wakeup()}sleep(){super.sleep()}};let _e=0;const Ke=[],Xe="customElements"in window,et={},tt=(e,t)=>{if(et[e]=t,Xe){const t=`\n\t\t\treturn class ${e}Element extends HTMLElement {\n\t\t\t\tconstructor(element, options = {}) {\n\t\t\t\t\tsuper()\n\t\t\t\t\tthis.helperClass= '${e}'\n\t\t\t\t\tthis.helper = null\n\t\t\t\t}\n\n\t\t\t\tconnectedCallback () {\n\t\t\t\t\tthis.helper = new registeredClasses[this.helperClass](this,{isCustomElement:true})\n\t\t\t\t\tthis.helper.start()\n\t\t\t\t}\n\n\t\t\t\tdisconnectedCallback () {\n\t\t\t\t\tthis.helper.destroy()\n\t\t\t\t\tthis.helper = null // nuke the reference for trash collection\n\t\t\t\t}\n\t\t\t}`;customElements.define("sargasso-"+Pe(e),new Function("registeredClasses",t)(et))}},st=["DOMChanged","didScroll","didResize","didBreakpoint","enterViewport","exitViewport","enterFullscreen","exitFullscreen","newPage","elementEvent"];class it{constructor(e,t={}){this.uid=++_e,this.element=e,this.options=t,this.pendingAnimationFrame=void 0,this.frameQueue=[],this.isInViewport=!1,this.workers={},this.started=!1}start(){const e=this.getMetaData("registeredResponsiveControllers")||[];e.push(this),this.setMetaData("registeredResponsiveControllers",e),this.setMetaData(this.constructor.name,this),Ke.push(this),this.options.watchDOM&&Ze.subscribe(this),(this.options.watchScroll||this.options.watchViewport)&&Ge.subscribe(this),(this.options.watchResize||this.options.watchViewport)&&$e.subscribe(this),(this.options.watchOrientation||this.options.watchViewport)&&Je.subscribe(this),this.elementListener=e=>{e.detail&&e.detail.sargassoEvent&&-1!==st.indexOf(e.detail.sargassoEvent)?this[e.detail.sargassoEvent].apply(this,e.detail.sargassoEventOptions||[]):this.elementEvent(e)},this.element.addEventListener("sargasso",this.elementListener),this.started=!0}sleep(){this.options.watchDOM&&Ze.unSubscribe(this),(this.options.watchScroll||this.options.watchViewport)&&Ge.unSubscribe(this),(this.options.watchResize||this.options.watchViewport)&&$e.unSubscribe(this),(this.options.watchOrientation||this.options.watchViewport)&&Je.unSubscribe(this),this.element.removeEventListener("sargasso",this.elementListener),this.started=!1}DOMChanged(){}didScroll(){}didResize(){}didBreakpoint(){}enterViewport(){}exitViewport(){}enterFullscreen(){}exitFullscreen(){}newPage(e,t){}elementEvent(e){}workerOnMessage(e,t){}setMetaData(e,t){Be.setMetaData(this.element,e,t)}getMetaData(e){return Be.getMetaData(this.element,e)}on(e,t,s,i){Be.on(this.constructor.name+"-"+this.uid,this.element,e,t,s,i)}off(e,t){Be.off(this.constructor.name+"-"+this.uid,this.element,e,t)}once(e,t,s,i){Be.once(this.constructor.name+"-"+this.uid,this.element,e,t,s,i)}notifyAll(e,t){if(-1===st.indexOf(e))throw new Error("invalid event name "+e);for(let s=0;s<Ke.length;s++){const i=Ke[s];i!==this&&i[e]&&i[e].apply(i,t)}}notifyElement(e,t,s){if(-1===st.indexOf(t))throw new Error("invalid event name "+t);const i=this.getMetaData("registeredResponsiveControllers");if(i)for(let e=0;e<i.length;e++){const n=i[e];n!==this&&n[t]&&n[t].apply(n,s)}}queueFrame(e){this.frameQueue.push(e.bind(this)),this.pendingAnimationFrame||(this.pendingAnimationFrame=requestAnimationFrame(()=>{this.processQueue()}))}wantFullscreen(e){e?this.enterFullscreen():this.exitFullscreen()}hasClass(e){return Be.hasClass(this.element,e)}addClass(e){Be.addClass(this.element,e)}removeClass(e){Be.removeClass(this.element,e)}setCSS(e){Be.setCSS(this.element,e)}isVisible(){return Be.isVisible(this.element)}scrollTop(e){return Ge.scrollTop(e)}workerStart(e,t){return this.workers[e]=Ye.registerWorker(e,t),Ye.subscribe(this,e),this.workers[e]}workerPostMessage(e,t){t.uid||(t.uid=this.uid),this.workers[e]&&this.workers[e].postMessage(t)}flushQueue(){this.pendingAnimationFrame&&(cancelAnimationFrame(this.pendingAnimationFrame),this.pendingAnimationFrame=void 0),this.frameQueue=[]}processQueue(){this.pendingAnimationFrame=void 0;var e=this.frameQueue.slice(0);this.frameQueue=[];for(var t=0;t<e.length;t++)e[t]()}stopWorker(e){this.workers[e]&&(Ye.unSubscribe(this,e),delete this.workers[e])}stopAllWorkers(){for(const e in this.workers)this.stopWorker(e)}destroy(){this.stopAllWorkers(),this.flushQueue(),this.started&&this.sleep();const e=this.getMetaData("registeredResponsiveControllers");e&&-1!==e.indexOf(this)&&(e.splice(e.indexOf(this),1),this.setMetaData("registeredResponsiveControllers",e)),this.setMetaData(this.constructor.name,null),this.element=null,-1!==Ke.indexOf(this)&&Ke.splice(Ke.indexOf(this),1)}watchDOM(){this.DOMChanged()}watchScroll(){this.options.watchViewport&&this.inViewport(),this.didScroll()}watchResize(){this.options.watchViewport&&this.inViewport(),this.didResize()}watchOrientation(){!window.orientation||90!==window.orientation&&-90!==window.orientation?this.wantFullscreen(!1):this.wantFullscreen(!0)}inViewport(){Ge.inViewPort(this.element)?this.isInViewport||(this.enterViewport(),this.isInViewport=!0):this.isInViewport&&(this.exitViewport(),this.isInViewport=!1)}workerMessage(e,t){t.data.uid===this.uid&&this.workerOnMessage(e,t.data)}nativeRequestFullScreen(){if(document.fullscreenElement){if(document.fullscreenElement===this.element)return;document.exitFullscreen()}this.element.requestFullscreen()}nativeExitFullScreen(){document.fullscreenElement&&document.fullscreenElement===this.element&&document.exitFullscreen()}}tt("Sargasso",it);class nt extends it{constructor(e,t={}){t.watchScroll=!0,t.watchResize=!0,t.watchDOM=!0,t.immortal=!0,super(e,t)}didResize(){super.didResize(),this.lazyHandler()}didScroll(){super.didScroll(),this.lazyHandler()}DOMChanged(){super.DOMChanged(),this.lazyHandler()}lazyHandler(){const e=document.querySelectorAll("[data-lazy-sargasso-class]");for(let t=0;t<e.length;t++){const s=e[t];if(Ge.inViewPort(s)){const i=s.getAttribute("data-lazy-sargasso-class").split(/\s*,\s*/);for(let s=0;s<i.length;s++){new et[i[s]](e[t]).start()}s.removeAttribute("data-lazy-sargasso-class")}}}}tt("LazyInstantiate",nt);class rt extends it{constructor(e,t={}){super(e,{watchDOM:!0,mortal:!1}),this.lazy=new nt(e,t)}start(){this.lazy.start(),super.start()}instantiate(e){const t=e.getAttribute("data-sargasso-class").split(/\s*,\s*/);for(let s=0;s<t.length;s++)try{new et[t[s]](e).start()}catch(e){console.log("error instantiating "+t[s],e,et)}e.removeAttribute("data-sargasso-class")}newPage(){this.doIt()}DOMChanged(){this.doIt()}doIt(){const e=document.querySelectorAll("[data-sargasso-class]");for(const t of e)this.instantiate(t);const t=[];for(let e=0;e<Ke.length;e++)Ke[e].options.immortal||Ke[e].options.isCustomElement||document.body.contains(Ke[e].element)||t.push(Ke[e]);for(let e=0;e<t.length;e++)t[e].destroy()}}tt("SargassoSupervisor",rt);const ot=[{className:"screen-xs",maxWidth:599},{className:"screen-sm",maxWidth:1023},{className:"screen-md",maxWidth:1439},{className:"screen-lg",maxWidth:1999},{className:"screen-xl",maxWidth:void 0}];class at extends it{constructor(e,t={}){t.watchResize=!0,super(e,t),t.widths?this.options.widths=t.widths:this.options.widths=ot,this.scale=void 0,this.disabled=!1,this.forceScale=void 0,this.orientation=void 0,this.widths=[],this.classes=[]}start(){super.start();let e=".show-hide{display:none;}\n";this.widths.push(0);for(let t=0;t<this.options.widths.length;t++)this.options.widths[t].maxWidth&&this.widths.push(this.options.widths[t].maxWidth),this.classes.push(this.options.widths[t].className),e+="."+this.options.widths[t].className+" .hidden-"+this.options.widths[t].className+"{display:none;}\n",e+=".not-"+this.options.widths[t].className+" .hidden-not-"+this.options.widths[t].className+"{display:none;}\n",e+="."+this.options.widths[t].className+" .shown-"+this.options.widths[t].className+"{display:block;}\n",e+=".not-"+this.options.widths[t].className+" .shown-not-"+this.options.widths[t].className+"{display:block;}\n";const t=document.createElement("style");t.type="text/css",t.innerHTML=e,document.getElementsByTagName("head")[0].appendChild(t),this.detectGeometry()}didResize(){super.didResize(),this.detectGeometry()}disableResponsive(e){Be.addClass(document.body,"disable-responsive"),this.disabled=!0,this.forceScale=e,this.detectGeometry()}enableResponsive(){Be.removeClass(document.body,"disable-responsive"),this.disabled=!1,this.forceScale="",this.detectGeometry()}detectGeometry(){let e=this.classes[this.widths.length-1];if(this.disabled)e=this.forceScale;else{const t=window.innerWidth;if(window.innerHeight>t){if("portrait"!==this.orientation){const e=()=>{Be.removeClass(document.body,"landscape"),Be.addClass(document.body,"portrait")};this.queueFrame(e),this.orientation="portrait"}}else if("landscape"!==this.orientation){const e=()=>{Be.removeClass(document.body,"portrait"),Be.addClass(document.body,"landscape")};this.queueFrame(e),this.orientation="landscape"}for(let s=0;s<this.widths.length-1;s++)if(t>=this.widths[s]&&t<this.widths[s+1]){e=this.classes[s];break}}let t=0;if(e!==this.scale){++t;const s=()=>{for(let t=0;t<this.classes.length;t++)this.classes[t]!==e?(Be.addClass(document.body,"not-"+this.classes[t]),Be.removeClass(document.body,this.classes[t]),Be.removeClass(document.body,"shown-"+this.classes[t]),Be.removeClass(document.body,"hidden-"+this.classes[t])):Be.removeClass(document.body,"not-"+this.classes[t]);Be.addClass(document.body,e),Be.addClass(document.body,"shown-"+e),Be.addClass(document.body,"hidden-"+e),this.notifyAll("didBreakpoint",[e])};this.queueFrame(s)}this.scale=e,t&&this.setHints()}setHints(){let e="";this.scale&&(e&&(e+=" "),e+=this.scale),e!==this.getCookie("responsive")&&this.setCookie("responsive",e)}getCookie(e){return Ne.get(e)}setCookie(e,t,s){const i={path:"/",domain:this.options.cookieDomain||null,expires:s};Ne.set(e,t,i)}deleteCookie(e){this.setCookie(e,null)}}tt("Breakpoints",at);class lt extends it{constructor(e,t={}){t.watchDOM=!0,t.immortal=!0,super(e,t),this.excludeRegex=new RegExp("^(//|http|javascript|mailto|#)","i"),this.currentPage=location.pathname+location.search}start(){super.start(),window.addEventListener("popstate",e=>{this.watchPopState(e)},!1)}DOMChanged(){super.DOMChanged(),this.hijaxLinks()}watchPopState(e){location.pathname+location.search!==this.currentPage&&this.preFlight(location.pathname+location.search)}hijaxLinks(e){const t=e?e.getElementsByTagName("a"):this.element.getElementsByTagName("a");for(let e=0;e<t.length;e++){const s=t[e],i=s.getAttribute("href");!i||s.getAttribute("data-hijaxed")||s.getAttribute("target")||s.hasAttribute("data-no-hijax")||this.excludeRegex.exec(i)||(s.setAttribute("data-hijaxed",!0),s.addEventListener("click",e=>{e.preventDefault(),this.setPage(i)},!1))}}setPage(e,t){e===this.currentPage||t?this.preFlight(e):(history.pushState(null,null,e),this.watchPopState())}preFlight(e){if(!this.options.preFlight)return this.loadPage(e);this.options.preFlight(e,(t,s,i)=>{t&&(this.options.onError?this.options.onError("danger",t):alert("Error loading page: "+t)),s?this.currentPage=location.pathname+location.search:this.loadPage(i||e)})}loadPage(e){this.queueFrame(()=>{Be.addClass(document.body,"hijax-loading")}),this.options.onExitPage&&this.options.onExitPage();const t=new XMLHttpRequest;t.open("GET",e),t.setRequestHeader("Sargasso-Hijax",1),t.setRequestHeader("x-digitopia-hijax",1),this.options.onLoading&&(this.options.onLoading(),t.onreadystatechange=this.options.onLoading),t.onload=()=>{if(301===t.status||302===t.status||t.getResponseHeader("Sargasso-Location")){const e=t.getResponseHeader("Location")?t.getResponseHeader("Location"):t.getResponseHeader("Sargasso-Location");this.setPage(e)}else if(200===t.status){this.scrollTop(0),this.mergePage(t.responseText);const e=this.currentPage,s=()=>{this.notifyAll("newPage",[e,location.pathname+location.search]),Be.removeClass(document.body,"hijax-loading")};this.queueFrame(s),this.currentPage=location.pathname+location.search}else{const e=t.getResponseHeader("Sargasso-Flash-Level")||"danger";let s=t.getResponseHeader("Sargasso-Flash-Message")||t.statusText;s||(s="Could not connect to server."),this.options.onError?this.options.onError(e,s):alert("Error loading page: "+s)}},t.send()}processScripts(e){Array.from(e).forEach(e=>{e.remove();const t=e.getAttribute("id");document.getElementById(t)||document.getElementsByTagName("head")[0].appendChild(e)})}mergePage(e){const t=document.querySelectorAll("[data-ephemeral]");Array.from(t).forEach(e=>{e.remove()});const s=e.split(/(<body[^>]*>|<\/body>)/gi),i=ct(s[2]),n=document.querySelectorAll("[data-hijax]");for(let e=0;e<n.length;e++){const t=n[e],s=n[e].getAttribute("id"),r=i.getElementById(s);this.processScripts(r.querySelectorAll("script"));const o=()=>{t.parentNode.replaceChild(r,t),this.options.onEnterPage&&this.options.onEnterPage(),this.hijaxLinks(r)};this.queueFrame(o)}}}tt("HijaxLoader",lt);const ct=e=>{if(document.createRange&&document.createRange().createContextualFragment)return document.createRange().createContextualFragment(e);const t=document.createDocumentFragment(),s=document.createElement("div");return s.insertAdjacentHTML("afterBegin",e),t.appendChild(s),t};e.loadPageHandler=void 0;const ht={registerSargassoClass:tt,bootSargasso:(t={})=>{t.scrollElement&&Ge.setOptions(t);if(new rt(document.body,t).start(t),t.breakpoints){new at(document.body,t.breakpoints).start()}if(t.hijax){const s=new lt(document.body,t.hijax);s.start(),e.loadPageHandler=s.setPage.bind(s)}else e.loadPageHandler=e=>{document.location.href=e}},elementTools:Be},ut={theDOMWatcher:Ze,theScrollWatcher:Ge,theResizeWatcher:$e,theOrientationWatcher:Je,theWorkerWatcher:Ye};return e.Sargasso=it,e.services=ut,e.utils=ht,Object.defineProperty(e,"__esModule",{value:!0}),e}({});
//# sourceMappingURL=sargasso.iife.js.map
{
"name": "@pelagiccreatures/sargasso",
"version": "0.11.0",
"version": "1.0.0",
"description": "Simple, Fast, Reactive, Supervised Javascript controllers for custom html elements.",

@@ -22,4 +22,3 @@ "keywords": [

"build": "npx rollup --no-treeshake -c rollup.config.js",
"build-example": "npx rollup --no-treeshake -c rollup.config.app.js",
"build-cjs": "npx webpack"
"build-example": "npx rollup --no-treeshake -c rollup.config.app.js"
},

@@ -29,26 +28,19 @@ "author": "Michael Rhodes",

"devDependencies": {
"@babel/core": "^7.11.6",
"@babel/preset-env": "^7.11.5",
"@rollup/plugin-commonjs": "^15.0.0",
"@rollup/plugin-commonjs": "^17.1.0",
"@rollup/plugin-json": "^4.1.0",
"@rollup/plugin-node-resolve": "^9.0.0",
"babel-loader": "^8.1.0",
"babel-plugin-lodash": "^3.3.4",
"babel-preset-env": "^1.7.0",
"chai": "^4.2.0",
"core-js": "^3.6.5",
"eslint": "^7.9.0",
"eslint-config-standard": "^14.1.1",
"eslint-plugin-import": "^2.22.0",
"@rollup/plugin-node-resolve": "^11.1.1",
"chai": "^4.3.0",
"core-js": "^3.8.3 ",
"eslint": "^7.20.0",
"eslint-config-standard": "^16.0.2",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^4.2.1",
"eslint-plugin-standard": "^4.0.1",
"mocha": "^8.1.3",
"eslint-plugin-promise": "^4.3.1",
"eslint-plugin-standard": "^5.0.0",
"mocha": "^8.3.0",
"mocha-chrome": "^2.2.0",
"rollup": "^2.27.1",
"rollup": "^2.39.0",
"rollup-plugin-terser": "^7.0.2",
"setimmediate": "^1.0.5",
"sinon": "^9.0.3",
"webpack": "^4.44.2",
"webpack-cli": "^3.3.12"
"sinon": "^9.2.4"
},

@@ -55,0 +47,0 @@ "dependencies": {

@@ -1,5 +0,11 @@

# @PelagicCreatures/Sargasso
# @pelagiccreatures/sargasso
### Simple, Fast, Supervised Javascript Controllers for HTML Elements.
### Simple, Fast, Supervised Javascript Controller framework for Web Sites and Progressive Web Apps.
```
@author Michael Rhodes (except where noted)
@license MIT
Made in Barbados 🇧🇧 Copyright © 2020-2021 Michael Rhodes
```
[Demo Page](https://blog.PelagicCreatures.com/demos/sargasso)

@@ -20,14 +26,6 @@

Stable
API Stable
If you are curious, have questions, want to help or have any feedback feel free to contact me by opening an issue.
We are trying to keep this project as forward looking so as to not burden this framework with lots of obsolete junk and polyfills so while it will certainly not work on *every* ancient browser, it should work on any *reasonably* modern one. If you run into any problems, have questions, want to help or have any feedback let me know by opening a github issue.
I am being rather strict about trying to keep this module forward looking so as to not burden this framework with lots of obsolete junk and polyfills so while it will certainly not work on *every* browser, it should work on any *reasonably* modern one. If you run into any problems let me know. I am actively working on this so you are likely to get my attention pretty quickly by opening issues.
```
@author Michael Rhodes (except where noted)
@license MIT
Made in Barbados 🇧🇧
```
### Why?

@@ -37,83 +35,144 @@

```npm install @pelagiccreatures/sargasso --save```
### Usage Overview (Using CDN)
### An example Sargasso app:
```html
<!DOCTYPE html>
<head>
<title>Example Sargasso Element</title>
<body>
The @pelagiccreatures/sargasso package exports:
<h3>First Sargasso Element</h3>
* Sargasso - the sargasso super class
* utils.registerSargassoClass - function to register your sub classes
* utils.bootSargasso - start sargasso services and HIHAX
<div data-sargasso-class="MyClass">Hello World</div>
myApp.js
```javascript
import {Sargasso, utils} from '@pelagiccreatures/sargasso'
let options = {}
utils.bootSargasso(options)
<script src='https://cdn.jsdelivr.net/npm/@pelagiccreatures/sargasso/dist/sargasso.iife.js'></script>
class MyClass extends Sargasso { // This won't do very much...
start() {
this.element.innerHTML += ' <strong>Started!</strong>'
super.start()
}
}
utils.registerSargassoClass('MyClass',MyClass)
```
<script defer>
// define MyClass as a subclass of Sargasso
class MyClass extends PelagicCreatures.Sargasso {
start() {
this.queueFrame(() => {
this.element.innerHTML += ' <strong>Started!</strong>'
})
super.start()
}
}
### Rollup your app and add script tag to HTML
// Register MyClass to the Sargasso framework
PelagicCreatures.utils.registerSargassoClass('MyClass',MyClass)
#### 1. Install rollup
// Start Sargasso
PelagicCreatures.utils.bootSargasso()
</script>
</body>
</html>
```
npm install --global rollup
npm install @rollup/plugin-commonjs --save-dev
npm install @rollup/plugin-json --save-dev
npm install @rollup/plugin-node-resolve --save-dev
```
#### 2. Define your bundle build options.
When you load the page the content of the Element will be "Hello World **Started!**"
rollup.config.js
### Sargasso Object Lifecycle
When the object is instantiated, the framework supervisor will call the `start()` method of the object. When removed from the DOM 'sleep()' will be called allowing you can cleanup any handlers. Beyond responding to scrolling, resize and other responsive events, you will probably want to interact with your element in some way. You should use the start hook to set up any element events you need to respond to such as clicking a button, responding to touch events or key presses, etc.
### Example with event handlers
```javascript
import commonjs from '@rollup/plugin-commonjs'
import nodeResolve from '@rollup/plugin-node-resolve'
import json from '@rollup/plugin-json'
class MyButtonClass extends PelagicCreatures.Sargasso {
constructor (element, options = {}) {
options.watchViewport = true // tell me when I am visible
super(element, options) // important!
}
export default {
input: './myApp.js', // <<< your app
output: [{
format: 'iife',
name: 'App',
file: './app-bundle.iife.js', // <<< script file to include in html
sourcemap: true
}],
// listen for click
start () {
super.start() // important!
plugins: [
json(),
nodeResolve({
preferBuiltins: false
}),
commonjs({
namedExports: {}
this.on('click', (e) => {
this.clicked()
})
]
}
// cleanup listener
sleep () {
this.off('click')
super.sleep() // important!
}
// use an animation frame to mutate the DOM
clicked () {
const frame = () => { // set up a DOM mutation
this.addClass('clicked')
this.element.textContent = 'Clicked!'
}
this.queueFrame(frame) // schedule it
}
enterViewport () {
// do some stuff such as modify element html or classes
const frame = () => {
this.element.textContent = 'Hello! Click me!'
}
this.queueFrame(frame)
}
}
PelagicCreatures.utils.registerSargassoClass('MyButtonClass', MyButtonClass)
```
#### 3. Build it: `Run rollup -c rollup.config.js`
### Sargasso Base Class:
#### 4. Add it to your html
Your Sargasso subclasses can subscribe to event feeds in order to be notified of events
```html
<html>
<head>
<script src="/app-bundle.iife.js" defer></script>
</head>
<body>
<sargasso-my-class>MyClass instance</sargasso-my-class>
</body>
</html>
```
**Methods to override as needed:** *don't forget to call super.xxx() in your subclass*
When you load the page the content of sargasso-my-class will be "MyClass instance **Started!**"
| method | description |
| ------ | ----------- |
| constructor(element, options = {}) | subscribe to services by setting options properties. All default to false so only set the ones you need `watchDOM`, `watchScroll`, `watchResize`, `watchOrientation`, `watchViewport` eg. {watchResize:true} |
| start() | set up any interactions and event handlers |
| sleep() | remove any event handlers defined in start() and cleanup references |
| DOMChanged() | called when DOM changes if options 'watchDOM: true' was set in constructor |
| didScroll() | called when scroll occurs if options 'watchScroll: true' was set in constructor |
| didResize() | called when resize changes if options 'watchResize: true' was set in constructor |
| enterViewport() | called when element is entering viewport if options 'watchViewport: true' was set in constructor |
| exitViewport() | called when element is exiting viewport if options 'watchViewport: true' was set in constructor |
| newPage(old, new) | on a new page |
| didBreakpoint() | new screen width breakpoint |
| elementEvent(e) | this.element received an 'sargasso' event |
| workerOnMessage (id, data = {}) | id is the worker sending the message. Any payload from the worker `postMessage` is in data.xxx as defined by the worker |
| enterFullscreen() | called if options 'watchOrientation: true' when user rotates phone or if setFullscreen is called |
| exitFullscreen() | called on exit fullscreen |
**Properties**
| property | description |
| ------ | ----------- |
| this.element | the element we are controlling |
**Utility Methods:**
| method | description |
| ------ | ----------- |
| getMetaData | return sargasso metadata associated with element (weak map) |
| setMetaData(key,value) | set a sargasso metadata property |
| hasClass('classname') | returns true if this.element has cssclass |
| addClass('classname') | add classname or array of classnames to this.element |
| removeClass('classname') | remove classname or array of classnames to this.element |
| setCSS({}) | set css pairs defined in object on this.element |
| isVisible() | true if element is visible |
| scrollTop(newTop) | get and set the current scroll position |
| queueFrame(function) | queue a function to execute that changes the DOM |
| workerStart(id, codeOrURL) | start a web worker with id. Ignored if worker id already installed (see https://github.com/PelagicCreatures/flyingfish for a shared worker example)|
| workerPostMessage(id, data {}) | send the worker tagged with `id` a message. the message must be an object which can have any structure you want to pass to the worker |
| on(container,fn) | attach undelegated event handler to container scoped to a css selector |
| once(container,fn) | attach undelegated event handler to container scoped to a css selector that executes only once (automatically removes event handler on first call) |
| off(container) | remove undelegated event handler to container scoped to css selector |
| on(container,selector,fn) | attach delegated event handler to container scoped to a css selector |
| once(container,selector,fn) | attach delegated event handler to container scoped to a css selector that executes only once (automatically removes event handler on first call) |
| off(container,selector) | remove delegated event handler to container scoped to css selector |
Don't forget you need to let sargasso know about your class:
```registerSargassoClass('MyClass', MyClass)```
#### Custom Elements

@@ -150,8 +209,8 @@

const preflightHandler = (url, cb) => {
if(url === '/handled-by-pre-flight') {
// special case page, we will handle it here
return cb(null, true)
}
if(url === '/handled-by-pre-flight') {
// special case page, we will handle it here
return cb(null, true)
}
cb(null, false)
cb(null, false)
}

@@ -161,5 +220,5 @@

hijax: {
onError: (level, message) => { alert('Something went wrong. ' + message) }
},
preFlight: preflightHandler
onError: (level, message) => { alert('Something went wrong. ' + message) }
},
preFlight: preflightHandler
}

@@ -206,61 +265,2 @@ utils.bootSargasso(options)

### Sargasso Object Lifecycle
When the object is instantiated, the supervisor will call the `start()` method of the object. Beyond responding to scrolling, resize and other responsive events, you will probably want to interact with your element in some way. You should use this hook to set up any element events you need to respond to such as clicking a button, responding to touch events or key presses, etc.
### Defining SubClasses:
Your Sargasso subclasses subscribe to event feeds to be notified of events.
**Methods to override as needed:** *don't forget to call super.xxx() in your subclass*
| method | description |
| ------ | ----------- |
| constructor(element, options = {}) | subscribe to services by setting options properties. All default to false so only set the ones you need `watchDOM`, `watchScroll`, `watchResize`, `watchOrientation`, `watchViewport` {xxx:true} |
| start() | set up any interactions and event handlers |
| sleep() | remove any event handlers defined in start() and cleanup references |
| DOMChanged() | called if options 'watchDOM: true' when DOM changes |
| didScroll() | called if options 'watchScroll: true' when scroll occurs |
| didResize() | called if options 'watchResize: true' when resize changes |
| enterViewport() | called if options 'watchViewport: true' when element is entering viewport |
| exitViewport() | called if options 'watchViewport: true' when element is exiting viewport |
| enterFullscreen() | called if options 'watchOrientation: true' when user rotates phone or if setFullscreen is called |
| exitFullscreen() | called on exit fullscreen |
| newPage(old, new) | on a new page |
| didBreakpoint() | new screen width breakpoint |
| elementEvent(e) | this.element received an 'sargasso' event |
| workerOnMessage (id, data = {}) | id is the worker sending the message. Any payload from the worker `postMessage` is in data.xxx as defined by the worker |
**Properties**
| property | description |
| ------ | ----------- |
| this.element | the element we are controlling |
**Utility Methods:**
| method | description |
| ------ | ----------- |
| getMetaData | return sargasso metadata associated with element (weak map) |
| setMetaData(key,value) | set a sargasso metadata property |
| hasClass('classname') | returns true if this.element has cssclass |
| addClass('classname') | add classname or array of classnames to this.element |
| removeClass('classname') | remove classname or array of classnames to this.element |
| setCSS({}) | set css pairs defined in object on this.element |
| isVisible() | true if element is visible |
| scrollTop(newTop) | get and set the current scroll position |
| queueFrame(function) | queue a function to execute that changes the DOM |
| workerStart(id, codeOrURL) | start a web worker with id. Ignored if worker id already installed (see https://github.com/PelagicCreatures/flyingfish for a shared worker example)|
| workerPostMessage(id, data {}) | send the worker tagged with `id` a message. the message must be an object which can have any structure you want to pass to the worker |
| on(container,selector,fn) | attach delegated event handler to container scoped to a css selector |
| once(container,selector,fn) | attach delegated event handler to container scoped to a css selector that executes only once (automatically removes event handler on first call) |
| off(container,selector) | remove delegated event handler to container scoped to css selector |
Don't forget you need to let sargasso know about your class:
```registerSargassoClass('MyClass', MyClass)```
### Using Animation Frames

@@ -270,53 +270,2 @@

```
class MyButtonClass extends Sargasso {
constructor (element, options = {}) {
options.watchViewport = true // tell me when I am visible
super(element, options) // important!
}
// listen for click
start () {
super.start() // important!
this.clicker = (e) => {
this.clicked()
}
this.element.addEventListener('click', this.clicker, false)
}
// cleanup listener
sleep () {
this.element.removeEventListener('click', this.clicker)
super.sleep() // important!
}
// use an animation frame to mutate the DOM
clicked () {
const frame = () => { // set up a DOM mutation
this.addClass('clicked')
this.element.textContent = 'Clicked!'
}
this.queueFrame(frame) // schedule it
}
enterViewport () {
// do some stuff such as modify element html or classes
const frame = () => {
this.element.textContent = 'Hello viewport! Click me!'
}
this.queueFrame(frame)
}
}
registerSargassoClass('MyButtonClass', MyButtonClass)
Then in HTML:
<style>
.clicked { background-color:red; }
</style>
<button data-sargasso-class="MyButtonClass">Click me and I'll turn red!</button>
```
### Using managed Web Workers

@@ -377,2 +326,101 @@ You should offload compute heavy tasks to a new thread when possible.

### Serving modules from your project
```
npm install @pelagiccreatures/sargasso --save-dev
```
You can use the .iife.js bundles in the /dist directory of the \@PelagicCreatures modules by copying them to a public directory on your server and referencing them in script tags in your html.
```
node_modules/@PelagicCreatures/Sargasso/dist/sargasso.iife.js
```
-or-
You can also bundle sargasso modules with your own es6 code using rollup.
```
npm install npx -g
npm install rollup --save-dev
npm install @rollup/plugin-json --save-dev
npm install @rollup/plugin-commonjs --save-dev
npm install @rollup/plugin-node-resolve --save-dev
npm install rollup-plugin-terser --save-dev
```
app.js root browser javascript app for bundle
```javascript
import { Sargasso, utils, loadPageHandler } from '@pelagiccreatures/sargasso'
const boot = () => {
utils.bootSargasso({})
}
export {
boot
}
```
html
```html
<!DOCTYPE html>
<body>
<img data-jsclass="FlyingFish" data-src="/some-image.jpg">
<script src="public/dist/js/userapp.iife.js" defer></script>
<script defer>
window.onload= () => {
App.boot()
}
</script>
</body>
</html>
```
#### Create a rollup config file
Set input and output ass needed.
rollup.config.js
```javascript
import commonjs from '@rollup/plugin-commonjs'
import nodeResolve from '@rollup/plugin-node-resolve'
import json from '@rollup/plugin-json'
import {
terser
}
from 'rollup-plugin-terser'
export default {
input: './app.js', // <<< location of your es6 code
output: {
format: 'iife',
file: 'public/dist/js/userapp.iife.js', // <<< where to save the browser bundle
name: 'App', // <<< global variable where app.js exports are exposed
sourcemap: true,
compact: true
},
plugins: [
json(),
commonjs({}),
nodeResolve({
preferBuiltins: false,
dedupe: (dep) => {
return dep.match(/^(@pelagiccreatures|lodash|js-cookie)/)
}
}),
terser({
output: {
comments: false
}
})
]
}
```
Make the bundle
```
npx rollup --no-treeshake --no-freeze -c rollup.config.js
```
### Tests

@@ -379,0 +427,0 @@

@@ -13,3 +13,3 @@ import commonjs from '@rollup/plugin-commonjs'

format: 'iife',
name: 'PelagicCreatures.Sargasso',
name: 'PelagicCreatures',
file: './dist/sargasso.iife.js',

@@ -16,0 +16,0 @@ sourcemap: true

@@ -1,2 +0,2 @@

const elementTools = PelagicCreatures.Sargasso.utils.elementTools
const elementTools = PelagicCreatures.utils.elementTools
const testElement = document.getElementById('test-element')

@@ -112,3 +112,3 @@ const testElement1 = document.getElementById('test-element1')

class InstrumentedSubclass extends PelagicCreatures.Sargasso.Sargasso {
class InstrumentedSubclass extends PelagicCreatures.Sargasso {
constructor (element, options) {

@@ -137,3 +137,3 @@ super(element, {

PelagicCreatures.Sargasso.utils.registerSargassoClass('InstrumentedSubclass', InstrumentedSubclass)
PelagicCreatures.utils.registerSargassoClass('InstrumentedSubclass', InstrumentedSubclass)
testElement.innerHTML = '<sargasso-instrumented-subclass id="my-element"></sargasso-instrumented-subclass>'

@@ -160,3 +160,3 @@ const myElement = document.querySelector('#my-element')

class InstrumentedScrollClass extends PelagicCreatures.Sargasso.Sargasso {
class InstrumentedScrollClass extends PelagicCreatures.Sargasso {
constructor (element, options) {

@@ -182,3 +182,3 @@ super(element, {

testElement.innerHTML = '' // kill it
expect(PelagicCreatures.Sargasso.services.theScrollWatcher.observers.length).to.equal(1)
expect(PelagicCreatures.services.theScrollWatcher.observers.length).to.equal(1)
window.scrollTo(0, 0)

@@ -190,7 +190,7 @@ done()

PelagicCreatures.Sargasso.utils.registerSargassoClass('InstrumentedScrollClass', InstrumentedScrollClass)
PelagicCreatures.utils.registerSargassoClass('InstrumentedScrollClass', InstrumentedScrollClass)
testElement.innerHTML = '<sargasso-instrumented-scroll-class id="my-element"></sargasso-instrumented-scroll-class>'
const myElement = document.querySelector('#my-element')
const myClassInstance = elementTools.getMetaData(myElement, 'InstrumentedScrollClass')
expect(PelagicCreatures.Sargasso.services.theScrollWatcher.observers.length).to.equal(2)
expect(PelagicCreatures.services.theScrollWatcher.observers.length).to.equal(2)
expect(didScroll).to.equal(1)

@@ -205,3 +205,3 @@ window.scrollTo(0, 10)

it('Sargasso HijaxLoader', function (done) {
class InstrumentedHijaxClass extends PelagicCreatures.Sargasso.Sargasso {
class InstrumentedHijaxClass extends PelagicCreatures.Sargasso {
newPage (oldPage, newPage) {

@@ -215,7 +215,7 @@ if (newPage === '/tests/page1.html') {

}
PelagicCreatures.Sargasso.utils.registerSargassoClass('InstrumentedHijaxClass', InstrumentedHijaxClass)
PelagicCreatures.utils.registerSargassoClass('InstrumentedHijaxClass', InstrumentedHijaxClass)
testElement.innerHTML = '<sargasso-instrumented-hijax-class id="my-element"></sargasso-instrumented-hijax-class>'
const myElement = document.querySelector('#my-element')
const myClassInstance = elementTools.getMetaData(myElement, 'InstrumentedHijaxClass')
PelagicCreatures.Sargasso.loadPageHandler('./page1.html')
PelagicCreatures.loadPageHandler('./page1.html')
})

@@ -228,3 +228,3 @@

it('Sargasso Supervisor Instantiate by data-sargasso-class', function (done) {
class InstrumentedSupervisorTest extends PelagicCreatures.Sargasso.Sargasso {
class InstrumentedSupervisorTest extends PelagicCreatures.Sargasso {
start () {

@@ -236,3 +236,3 @@ super.start()

}
PelagicCreatures.Sargasso.utils.registerSargassoClass('InstrumentedSupervisorTest', InstrumentedSupervisorTest)
PelagicCreatures.utils.registerSargassoClass('InstrumentedSupervisorTest', InstrumentedSupervisorTest)
testElement.innerHTML = '<div id="my-element" data-sargasso-class="InstrumentedSupervisorTest"></div>'

@@ -246,3 +246,3 @@ })

it('Sargasso LazyInstantiate by data-lazy-sargasso-class', function (done) {
class InstrumentedLazyTest extends PelagicCreatures.Sargasso.Sargasso {
class InstrumentedLazyTest extends PelagicCreatures.Sargasso {
start () {

@@ -256,3 +256,3 @@ super.start()

elementTools.addClass(document.querySelector('#spacer'), 'below-the-fold')
PelagicCreatures.Sargasso.utils.registerSargassoClass('InstrumentedLazyTest', InstrumentedLazyTest)
PelagicCreatures.utils.registerSargassoClass('InstrumentedLazyTest', InstrumentedLazyTest)
testElement.innerHTML = '<div id="my-element" data-lazy-sargasso-class="InstrumentedLazyTest"></div>'

@@ -267,3 +267,3 @@ window.scrollTo(0, window.innerHeight)

it('Sargasso LazyInstantiate by data-lazy-sargasso-class in hidden container', function (done) {
class InstrumentedLazyRevealTest extends PelagicCreatures.Sargasso.Sargasso {
class InstrumentedLazyRevealTest extends PelagicCreatures.Sargasso {
start () {

@@ -276,3 +276,3 @@ super.start()

}
PelagicCreatures.Sargasso.utils.registerSargassoClass('InstrumentedLazyRevealTest', InstrumentedLazyRevealTest)
PelagicCreatures.utils.registerSargassoClass('InstrumentedLazyRevealTest', InstrumentedLazyRevealTest)
testElement1.innerHTML = '<div id="my-element" data-lazy-sargasso-class="InstrumentedLazyRevealTest"></div>'

@@ -279,0 +279,0 @@ elementTools.removeClass(testElement1, 'hidden-display')

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc