@appartmint/mint 0.8.13 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/css/mint.css +155 -1
  2. package/dist/css/mint.css.map +1 -1
  3. package/dist/css/mint.min.css +1 -1
  4. package/dist/css/mint.min.css.map +1 -1
  5. package/dist/css/noscript.css +8 -0
  6. package/dist/css/noscript.css.map +1 -0
  7. package/dist/css/noscript.min.css +3 -0
  8. package/dist/css/noscript.min.css.map +1 -0
  9. package/dist/js/imports/components/header.d.ts +110 -0
  10. package/dist/js/imports/components/header.d.ts.map +1 -0
  11. package/dist/js/imports/enum.d.ts +10 -0
  12. package/dist/js/imports/enum.d.ts.map +1 -0
  13. package/dist/js/imports/models/color.d.ts +32 -0
  14. package/dist/js/imports/models/color.d.ts.map +1 -0
  15. package/dist/js/imports/models/item.d.ts +48 -0
  16. package/dist/js/imports/models/item.d.ts.map +1 -0
  17. package/dist/js/imports/util/display.d.ts +7 -0
  18. package/dist/js/imports/util/display.d.ts.map +1 -0
  19. package/dist/js/imports/util/event.d.ts +7 -0
  20. package/dist/js/imports/util/event.d.ts.map +1 -0
  21. package/dist/js/imports/util/icon.d.ts +24 -0
  22. package/dist/js/imports/util/icon.d.ts.map +1 -0
  23. package/dist/js/imports/util/math.d.ts +14 -0
  24. package/dist/js/imports/util/math.d.ts.map +1 -0
  25. package/dist/js/imports/util/object.d.ts +59 -0
  26. package/dist/js/imports/util/object.d.ts.map +1 -0
  27. package/dist/js/imports/util/selectors.d.ts +146 -0
  28. package/dist/js/imports/util/selectors.d.ts.map +1 -0
  29. package/dist/js/imports/util/settings.d.ts +53 -0
  30. package/dist/js/imports/util/settings.d.ts.map +1 -0
  31. package/dist/js/imports/util/text.d.ts +7 -0
  32. package/dist/js/imports/util/text.d.ts.map +1 -0
  33. package/dist/js/imports/util/window.d.ts +7 -0
  34. package/dist/js/imports/util/window.d.ts.map +1 -0
  35. package/dist/js/index.d.ts +19 -2
  36. package/dist/js/index.d.ts.map +1 -1
  37. package/dist/js/index.js +1505 -80
  38. package/dist/js/index.js.map +1 -1
  39. package/dist/js/index.min.js +1 -1
  40. package/dist/js/index.min.js.map +1 -1
  41. package/dist/js/util.d.ts +78 -0
  42. package/dist/js/util.d.ts.map +1 -0
  43. package/dist/js/util.js +638 -0
  44. package/dist/js/util.js.map +1 -0
  45. package/dist/js/util.min.js +2 -0
  46. package/dist/js/util.min.js.map +1 -0
  47. package/package.json +1 -5
  48. package/src/scss/imports/components/_buttons.scss +1 -0
  49. package/src/scss/imports/components/_header.scss +196 -0
  50. package/src/scss/imports/components/_index.scss +2 -1
  51. package/src/scss/imports/global/_global.scss +5 -1
  52. package/src/scss/imports/global/_themes.scss +0 -1
  53. package/src/scss/imports/{_mint.scss → util/_index.scss} +1 -1
  54. package/src/scss/imports/util/_util.scss +713 -0
  55. package/src/scss/noscript.scss +14 -0
  56. package/src/scss/imports/_util.scss +0 -7
  57. /package/src/scss/imports/{_vars.scss → util/_vars.scss} +0 -0
package/dist/js/index.js CHANGED
@@ -9,158 +9,1583 @@
9
9
  root["mint"] = factory();
10
10
  })(self, () => {
11
11
  return /******/ (() => { // webpackBootstrap
12
+ /******/ "use strict";
12
13
  /******/ var __webpack_modules__ = ({
13
14
 
14
- /***/ "./node_modules/@appartmint/n4v/dist/js/index.min.js":
15
- /*!***********************************************************!*\
16
- !*** ./node_modules/@appartmint/n4v/dist/js/index.min.js ***!
17
- \***********************************************************/
18
- /***/ ((module) => {
15
+ /***/ "./src/ts/imports/components/header.ts":
16
+ /*!*********************************************!*\
17
+ !*** ./src/ts/imports/components/header.ts ***!
18
+ \*********************************************/
19
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
19
20
 
20
- !function(e,t){ true?module.exports=t():0}(self,(()=>{return e={498:e=>{var t;self,t=()=>(()=>{"use strict";var e={64:(e,t)=>{var i;Object.defineProperty(t,"__esModule",{value:!0}),t.mintSide=void 0,(i=t.mintSide||(t.mintSide={}))[i.Top=0]="Top",i[i.Right=1]="Right",i[i.Bottom=2]="Bottom",i[i.Left=3]="Left"},54:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.mintColor=void 0;class i{constructor(e){this.r="number"==typeof e.r?Math.max(Math.min(e.r,i.hexBase**2-1),0):0,this.g="number"==typeof e.g?Math.max(Math.min(e.g,i.hexBase**2-1),0):0,this.b="number"==typeof e.b?Math.max(Math.min(e.b,i.hexBase**2-1),0):0,this.a="number"==typeof e.a?Math.max(Math.min(e.a,1),0):1,"string"==typeof e.color&&this.stringConstructor(e.color)}stringConstructor(e){e.startsWith("#")?this.hexConstructor(e):(~e.indexOf("linear-gradient")&&(e=e.substring(e.indexOf("linear-gradient"),e.length)),this.rgbConstructor(e))}hexConstructor(e){switch(e.length){case 1:case 5:case 6:return;case 2:e="#"+e[1]+e[1]+e[1]+e[1]+e[1]+e[1]+i.hexMax;break;case 3:e="#"+e[1]+e[1]+e[1]+e[2]+e[2]+e[2]+i.hexMax;break;case 4:e="#"+e[1]+e[1]+e[2]+e[2]+e[3]+e[3]+i.hexMax;break;case 7:e+=i.hexMax;break;case 8:e+=e[e.length-1];break;default:e=e.substring(0,9)}this.r=parseInt(e.substring(1,3),i.hexBase),this.g=parseInt(e.substring(3,5),i.hexBase),this.b=parseInt(e.substring(5,7),i.hexBase),this.a=parseInt(e.substring(7,9),i.hexBase)/i.hexBase**2}rgbConstructor(e){let t=e.match(/rgba?\((\d{1,3}), ?(\d{1,3}), ?(\d{1,3})\)?(?:, ?(\d(?:\.\d*)?)\))?/);t&&(this.r=parseInt(t[1]),this.g=parseInt(t[2]),this.b=parseInt(t[3]),this.a=parseFloat(t[4]))}getBrightness(){return 0===this.a?262:isNaN(this.r)||isNaN(this.g)||isNaN(this.b)?-1:Math.round((299*this.r+587*this.g+144*this.b)/1e3)}}t.mintColor=i,i.hexBase=16,i.hexMax="FF",t.default=i},708:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.mintItem=void 0;class i{constructor(){this.version=0,this.priority=0,this.centered=!1,this.disabled=!1,this.queryParams={},this.attributes={},this.classes=[],this.buttons=[],this.images=[],this.children=[]}}t.mintItem=i,t.default=i},139:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.mintDisplay=void 0;class i{}t.mintDisplay=i,t.default=i},376:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.mintEvent=void 0;class i{}t.mintEvent=i,t.default=i},683:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.mintMath=void 0;class i{static randomInt(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return t=Math.ceil(t),e=Math.floor(e),Math.floor(Math.random()*(e-t)+t)}}t.mintMath=i,t.default=i},982:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.mintObject=void 0;class i{static isSimilar(e,t){let i=Object.keys(e);return i.length===Object.keys(t).length&&(i.forEach((i=>{if(e[i]!==t[i])return!1})),!0)}static isSuperset(e,t){let l=!0;if(e===t)return l;try{if(0===Object.keys(t).length)return!l}catch(e){return!l}return Object.keys(t).forEach((n=>{l=l&&i.isSuperset(e[n],t[n])})),l}static remove(e,t){return Object.keys(e).reduce(((i,l)=>(t.includes(l)||(i[l]=e[l]),i)),{})}static sort(e){return Object.keys(e).sort().reduce(((t,i)=>(t[i]=e[i],t)),{})}static filter(e,t){return this.filterKeys(e,t)}static filterKeys(e,t){return t.reduce(((t,i)=>(t[i]=e[i],t)),{})}static filterValues(e,t){return Object.keys(e).reduce(((i,l)=>(t.includes(e[l])&&(i[l]=e[l]),i)),{})}}t.mintObject=i,t.default=i},226:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.mintText=void 0;class i{}t.mintText=i,t.default=i},505:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.mintWindow=void 0;class i{}t.mintWindow=i,t.default=i},491:function(e,t,i){var l=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.mintUtil=t.mintSettings=t.mintSelectors=t.mintWindow=t.mintText=t.mintObject=t.mintMath=t.mintEvent=t.mintDisplay=t.mintItem=t.mintColor=t.mintSide=void 0;var n=i(64);Object.defineProperty(t,"mintSide",{enumerable:!0,get:function(){return n.mintSide}});var s=i(54);Object.defineProperty(t,"mintColor",{enumerable:!0,get:function(){return s.mintColor}});var a=i(708);Object.defineProperty(t,"mintItem",{enumerable:!0,get:function(){return a.mintItem}});var r=i(139);Object.defineProperty(t,"mintDisplay",{enumerable:!0,get:function(){return r.mintDisplay}});var o=i(376);Object.defineProperty(t,"mintEvent",{enumerable:!0,get:function(){return o.mintEvent}});var d=i(683);Object.defineProperty(t,"mintMath",{enumerable:!0,get:function(){return d.mintMath}});var u=i(982);Object.defineProperty(t,"mintObject",{enumerable:!0,get:function(){return u.mintObject}});var c=i(226);Object.defineProperty(t,"mintText",{enumerable:!0,get:function(){return c.mintText}});var h=i(505);Object.defineProperty(t,"mintWindow",{enumerable:!0,get:function(){return h.mintWindow}});var f=i(565);Object.defineProperty(t,"mintSelectors",{enumerable:!0,get:function(){return f.mintSelectors}});var b=i(750);Object.defineProperty(t,"mintSettings",{enumerable:!0,get:function(){return b.mintSettings}});var m=i(427);Object.defineProperty(t,"mintUtil",{enumerable:!0,get:function(){return m.mintUtil}}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return l(m).default}})},565:(e,t)=>{var i;Object.defineProperty(t,"__esModule",{value:!0}),t.mintSelectors=void 0;class l{static prefix(e){return(e=e.toLowerCase()).startsWith(this.pre)?e:`${this.pre}${e}`}static cssPrefix(e){return`--${this.prefix(e.replace(/^-+/,""))}`}static cssVar(e){return`var(${this.cssPrefix(e)})`}static neg(e){return`:not(${e})`}static class(e){return`.${this.prefix(e)}`}static id(e){return`#${this.prefix(e)}`}static controls(e){return e?`[aria-controls="${this.prefix(e)}"]`:this.hasControls}static expanded(e){return"boolean"==typeof e?`[aria-expanded="${e}"]`:this.hasExpanded}static getId(e){var t;return null!==(t=this.ids[null!=e?e:-1])&&void 0!==t?t:""}static getClass(e,t){var i,l;return t?null!==(i=this.classes[t][null!=e?e:-1])&&void 0!==i?i:"":null!==(l=this.classes[null!=e?e:-1])&&void 0!==l?l:""}static getFocusables(e){let t;return t=e?[...e.querySelectorAll(this.focusable)]:[...document.querySelectorAll(this.focusable)],t.filter((e=>this.isFocusable(e)))}static isFocusable(e){let t=e;do{if("none"===window.getComputedStyle(t).getPropertyValue("display").toLowerCase())return!1;t=t.parentElement}while(t);return!0}}t.mintSelectors=l,i=l,l.lib="mint",l.pre=`${i.lib}-`,l.disabled="[disabled]",l.hasControls="[aria-controls]",l.hasExpanded="[aria-expanded]",l.hasLink="[href]",l.hasRouterLink="[routerLink]",l.hasId="[id]",l.notTabbable='[tabindex^="-"]',l.tabbable=`[tabindex]${i.neg(i.notTabbable)}`,l.focusable=`input${i.neg(i.disabled)}${i.neg(i.notTabbable)},\n select${i.neg(i.disabled)}${i.neg(i.notTabbable)},\n textarea${i.neg(i.disabled)}${i.neg(i.notTabbable)},\n button${i.neg(i.disabled)}${i.neg(i.notTabbable)},\n object${i.neg(i.disabled)}${i.neg(i.notTabbable)},\n a${i.hasLink}, a${i.hasRouterLink},\n area${i.hasLink},\n ${i.tabbable}`.replace(/\s/g,""),l.classes={sides:{top:i.prefix("top"),right:i.prefix("right"),bottom:i.prefix("bottom"),left:i.prefix("left")}},t.default=l},750:(e,t)=>{var i;Object.defineProperty(t,"__esModule",{value:!0}),t.mintSettings=void 0;class l{static set(e){let t=!1;"number"==typeof e.delayBase&&(this.delayBase=e.delayBase,t=!0),"number"==typeof e.delayStep&&(this.delayStep=e.delayStep,t=!0),t&&this.setDelay(),e.delay&&Object.keys(e.delay).length&&Object.values(e.delay).reduce(((e,t)=>e&&"number"==typeof t),!0)&&(this.delay=Object.assign(Object.assign({},this.delay),e.delay))}static setDelay(){this.delay={instant:this.delayBase+0*this.delayStep,fast:this.delayBase+1*this.delayStep,medFast:this.delayBase+2*this.delayStep,default:this.delayBase+3*this.delayStep,medSlow:this.delayBase+4*this.delayStep,slow:this.delayBase+5*this.delayStep}}}t.mintSettings=l,i=l,l.delayBase=0,l.delayStep=100,l.delay={instant:i.delayBase+0*i.delayStep,fast:i.delayBase+1*i.delayStep,medFast:i.delayBase+2*i.delayStep,default:i.delayBase+3*i.delayStep,medSlow:i.delayBase+4*i.delayStep,slow:i.delayBase+5*i.delayStep},t.default=l},427:function(e,t,i){var l=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.mintUtil=void 0;const n=i(64),s=l(i(750));class a{static windowWidth(){let e=document.getElementsByTagName("body")[0].getBoundingClientRect().width%1;return window.innerWidth+e}static debounce(e){let t,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:s.default.delay.default;return function(l){t&&clearTimeout(t),t=setTimeout(e,i,l)}}static debounceEvent(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:s.default.delay.default;return a.debounce(e,t)}static throttle(e){let t,i,l,n,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:s.default.delay.default,r=arguments.length>2?arguments[2]:void 0,o=0,d=function(){o=!1===(null==r?void 0:r.leading)?0:(new Date).getTime(),n=0,l=e.apply(t,i),n||(t=i=null)};return function(){let s=(new Date).getTime();o||!1!==(null==r?void 0:r.leading)||(o=s);let u=a-s+o;return t=this,i=arguments,u<=0||u>a?(n&&(clearTimeout(n),n=0),o=s,l=e.apply(t,i),n||(t=i=null)):n||!1===(null==r?void 0:r.trailing)||(n=window.setTimeout(d,u)),l}}static throttleEvent(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:s.default.delay.default,i=arguments.length>2?arguments[2]:void 0;return a.throttle(e,t,i)}static show(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:s.default.delay.default,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:n.mintSide.Top;e&&(e.style.display="",requestAnimationFrame((()=>{i===n.mintSide.Top||i===n.mintSide.Bottom?e.style.height=`${e.scrollHeight}px`:e.style.width=`${e.scrollWidth}px`,setTimeout((()=>{i===n.mintSide.Top||i===n.mintSide.Bottom?e.style.height="auto":e.style.width="auto"}),t)})))}static hide(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:s.default.delay.default,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:n.mintSide.Top;if(e){let l=e.scrollHeight,s=e.scrollWidth,a=e.style.transition;e.style.transition="",requestAnimationFrame((()=>{i===n.mintSide.Top||i===n.mintSide.Bottom?e.style.height=`${l}px`:e.style.width=`${s}px`,e.style.transition=a,requestAnimationFrame((()=>{i===n.mintSide.Top||i===n.mintSide.Bottom?e.style.height="0":e.style.width="0"}))})),setTimeout((()=>{e.style.display="none"}),t)}}static copyText(e){let t=document.createElement("textarea");return!(!e||!t||(t.value=e,t.style.cssText="\n position: fixed;\n top: 0;\n left: 0;\n transform: translate(-100%, -100%);\n opacity: 0;\n z-index: -1;\n ",document.body.appendChild(t),t.select(),t.setSelectionRange(0,99999),navigator.clipboard.writeText(t.value),document.body.removeChild(t),0))}static isEmail(e){return null!==e.match(/(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/)}}t.mintUtil=a,t.default=a}},t={};return function i(l){var n=t[l];if(void 0!==n)return n.exports;var s=t[l]={exports:{}};return e[l].call(s.exports,s,s.exports,i),s.exports}(491)})(),e.exports=t()},721:function(e,t,i){"use strict";var l=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const n=i(498),s=l(i(565)),a=l(i(750));t.default=class{constructor(e){this.el={};let t={from:n.mintSide.Top,fixed:!0};a.default.set(Object.assign(Object.assign({},t),e)),this.attachElements(),this.attachEvents(),this.enableJavascript(),this.setMobileMenu()}attachElements(){var e;this.el.body=document.querySelector("body"),this.el.header=document.getElementById(s.default.getId("header")),this.el.mobileButton=(null===(e=this.el.header)||void 0===e?void 0:e.querySelector(s.default.controls(s.default.getId("wrapper"))))||null,this.el.wrapper=document.getElementById(s.default.getId("wrapper"))}attachEvents(){var e,t,i;window.addEventListener("resize",n.mintUtil.throttleEvent(this.eHandleResize.bind(this),a.default.delay.default,{trailing:!1})),window.addEventListener("scroll",n.mintUtil.throttleEvent(this.eHandleScroll.bind(this),a.default.delay.default,{trailing:!1}));let l=null===(e=this.el.header)||void 0===e?void 0:e.querySelectorAll(s.default.focusable),r=null==l?void 0:l[(null==l?void 0:l.length)-1];null==r||r.addEventListener("keydown",n.mintUtil.throttleEvent(this.eWrapTab.bind(this))),null==l||l.forEach((e=>{e.addEventListener("keydown",n.mintUtil.throttleEvent(this.eHandleKeypress.bind(this)))}));let o=null===(t=this.el.header)||void 0===t?void 0:t.querySelectorAll(s.default.controls()+s.default.neg(s.default.controls(s.default.ids.wrapper)));null==o||o.forEach((e=>{e.addEventListener("mousedown",n.mintUtil.throttleEvent(this.eToggleMenu.bind(this),a.default.delay.slow,{trailing:!1}))})),null===(i=this.el.mobileButton)||void 0===i||i.addEventListener("mousedown",n.mintUtil.throttleEvent(this.eToggleMobileMenu.bind(this),a.default.delay.slow,{trailing:!1}))}enableJavascript(){var e;null===(e=this.el.header)||void 0===e||e.classList.add(s.default.getClass("js"))}setMobileMenu(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];var t,i,l;let r=e?"true":"false",o=e?"close menu":"open menu";null===(t=this.el.mobileButton)||void 0===t||t.setAttribute("aria-expanded",r),setTimeout((()=>{var e;null===(e=this.el.mobileButton)||void 0===e||e.setAttribute("aria-label",o)}),a.default.delay.fast),e?(!0!==a.default.fixed&&window.scroll({top:0,left:0,behavior:"smooth"}),setTimeout((()=>{this.el.body&&(this.el.body.style.overflow="hidden")}),a.default.from===n.mintSide.Left?a.default.delay.default:a.default.delay.instant),null===(i=this.el.wrapper)||void 0===i||i.classList.add(s.default.getClass("open"))):(this.el.body&&(this.el.body.style.overflow="auto"),null===(l=this.el.wrapper)||void 0===l||l.classList.remove(s.default.getClass("open")),this.closeAllMenus())}toggleMobileMenu(){var e,t;this.setMobileMenu("false"===(null===(t=null===(e=this.el.mobileButton)||void 0===e?void 0:e.getAttribute("aria-expanded"))||void 0===t?void 0:t.toLowerCase()))}setMenu(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=t?"true":"false",l=null==e?void 0:e.nextElementSibling;e&&l&&(e.setAttribute("aria-expanded",i),t?n.mintUtil.show(l):(n.mintUtil.hide(l),this.closeSubMenus(e)))}toggleMenu(e){var t;this.setMenu(e,"true"!==(null===(t=null==e?void 0:e.getAttribute("aria-expanded"))||void 0===t?void 0:t.toLowerCase()))}closeSubMenus(e){let t=null==e?void 0:e.nextElementSibling;(null==t?void 0:t.querySelectorAll(s.default.subMenuButtons)).forEach((e=>{var i;(null===(i=e.parentElement)||void 0===i?void 0:i.parentElement)===t&&this.setMenu(e)}))}closeAllMenus(){var e;let t=null===(e=this.el.wrapper)||void 0===e?void 0:e.querySelectorAll(s.default.subMenuButtons);null==t||t.forEach((e=>{this.setMenu(e)}))}openClosestMenu(){var e;let t=document.activeElement,i=null==t?void 0:t.nextElementSibling,l="true"===(null===(e=null==t?void 0:t.getAttribute("aria-expanded"))||void 0===e?void 0:e.toLowerCase());if((null==t?void 0:t.getAttribute("aria-controls"))===s.default.ids.wrapper&&(i=this.el.wrapper),(null==t?void 0:t.getAttribute("aria-controls"))&&i&&!l){t.click();let e=i.querySelector(s.default.focusable);null==e||e.focus()}}closeClosestMenu(){var e,t;let i=document.activeElement,l=null==i?void 0:i.closest(s.default.subMenu),n=(null==l?void 0:l.previousElementSibling)?l.previousElementSibling:this.el.mobileButton;(null==i?void 0:i.getAttribute("aria-controls"))&&"true"===(null===(e=null==i?void 0:i.getAttribute("aria-expanded"))||void 0===e?void 0:e.toLowerCase())&&(n=i),"true"===(null===(t=null==n?void 0:n.getAttribute("aria-expanded"))||void 0===t?void 0:t.toLowerCase())&&(null==n||n.click(),null==n||n.focus())}toggleClosestMenu(){var e,t;"true"===(null===(t=null===(e=document.activeElement)||void 0===e?void 0:e.getAttribute("aria-expanded"))||void 0===t?void 0:t.toLowerCase())?this.closeClosestMenu():this.openClosestMenu()}eHandleResize(){this.setMobileMenu()}eHandleScroll(){this.closeAllMenus()}eWrapTab(e){var t;"tab"!==e.key.toLowerCase()||e.shiftKey||(null===(t=this.el.mobileButton)||void 0===t||t.focus(),document.activeElement===this.el.mobileButton&&e.preventDefault())}eHandleButtonKeypress(e){var t;let i=e.target.closest("li");switch(e.key.toLowerCase()){case"escape":(null==i?void 0:i.classList.contains(s.default.classes.open))?this.setMenu(i):(this.setMobileMenu(),null===(t=this.el.menuButton)||void 0===t||t.focus());case"arrowleft":this.closeClosestMenu()}}eHandleLinkKeypress(e){switch(e.key.toLowerCase()){case"escape":case"arrowleft":this.closeClosestMenu();break;case"arrowright":this.openClosestMenu();break;case"enter":case"space":this.toggleClosestMenu()}}eHandleKeypress(e){"tab"!==e.key.toLowerCase()&&e.preventDefault();let t=e.target;switch(null==t?void 0:t.tagName.toLowerCase()){case"a":this.eHandleLinkKeypress(e);break;case"button":this.eHandleButtonKeypress(e)}}eToggleMobileMenu(){this.toggleMobileMenu()}eToggleMenu(e){this.toggleMenu(e.target)}}},491:function(e,t,i){"use strict";var l=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.n4vBar=t.n4vSettings=t.n4vSelectors=void 0;var n=i(565);Object.defineProperty(t,"n4vSelectors",{enumerable:!0,get:function(){return l(n).default}});var s=i(750);Object.defineProperty(t,"n4vSettings",{enumerable:!0,get:function(){return l(s).default}});var a=i(721);Object.defineProperty(t,"n4vBar",{enumerable:!0,get:function(){return l(a).default}});var r=i(721);Object.defineProperty(t,"default",{enumerable:!0,get:function(){return l(r).default}})},565:(e,t,i)=>{"use strict";var l,n;Object.defineProperty(t,"__esModule",{value:!0}),t.n4vSelectors=void 0;const s=i(498);class a extends(n=s.mintSelectors){}t.n4vSelectors=a,l=a,a.lib="n4v",a.pre=`${l.lib}-`,a.subMenuButtons=`button${l.hasControls}`,a.subMenu=`${l.subMenuButtons} + ul${l.hasId}`,a.ids={header:l.prefix("header"),logo:l.prefix("logo"),wrapper:l.prefix("wrapper"),mainContent:l.prefix("main-content")},a.classes=Object.assign(Object.assign({},Reflect.get(n,"classes",l)),{srOnly:l.prefix("sr-only"),js:l.prefix("js"),ready:l.prefix("ready"),fixed:l.prefix("fixed"),open:l.prefix("open")}),t.default=a},750:function(e,t,i){"use strict";var l=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.n4vSettings=void 0;const n=i(498),s=l(i(565));class a extends n.mintSettings{static set(e){super.set(e),(e.from||e.from===n.mintSide.Top)&&this.setFrom(e.from),"boolean"==typeof e.fixed&&this.setFixed(e.fixed)}static setFrom(e){if(this.from!==e){this.from=e;let t=document.getElementById(s.default.getId("header"));null==t||t.classList.remove(...Object.values(s.default.classes.sides)),null==t||t.classList.add(s.default.getClass(n.mintSide[this.from].toLowerCase(),"sides"))}}static setFixed(e){if(this.fixed!==e){this.fixed=e;let t=document.getElementById(s.default.getId("header")),i=s.default.getClass("fixed");this.fixed?null==t||t.classList.add(i):null==t||t.classList.remove(i)}}}t.n4vSettings=a,t.default=a}},t={},function i(l){var n=t[l];if(void 0!==n)return n.exports;var s=t[l]={exports:{}};return e[l].call(s.exports,s,s.exports,i),s.exports}(491);var e,t}));
21
- //# sourceMappingURL=index.min.js.map
21
+
22
+
23
+ var __importDefault = this && this.__importDefault || function (mod) {
24
+ return mod && mod.__esModule ? mod : {
25
+ "default": mod
26
+ };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", ({
29
+ value: true
30
+ }));
31
+ exports.mintHeader = void 0;
32
+ /**
33
+ * Imports
34
+ */
35
+ const enum_1 = __webpack_require__(/*! ../enum */ "./src/ts/imports/enum.ts");
36
+ const util_1 = __importDefault(__webpack_require__(/*! ../../util */ "./src/ts/util.ts"));
37
+ const selectors_1 = __importDefault(__webpack_require__(/*! ../util/selectors */ "./src/ts/imports/util/selectors.ts"));
38
+ const settings_1 = __importDefault(__webpack_require__(/*! ../util/settings */ "./src/ts/imports/util/settings.ts"));
39
+ /**
40
+ * Main header functionality
41
+ * @public
42
+ */
43
+ class mintHeader {
44
+ /**
45
+ * Initializes and closes the menu
46
+ */
47
+ constructor(settings) {
48
+ /**
49
+ * Frequently-referenced elements
50
+ */
51
+ this.el = {};
52
+ let defaultSettings = {
53
+ from: enum_1.mintSide.Top,
54
+ fixed: true
55
+ };
56
+ settings_1.default.set(Object.assign(Object.assign({}, defaultSettings), settings));
57
+ this.attachElements();
58
+ this.attachEvents();
59
+ this.enableJavascript();
60
+ this.setMobileMenu();
61
+ }
62
+ /**
63
+ * Adds elements to {@link el | `this.el`}
64
+ */
65
+ attachElements() {
66
+ var _a;
67
+ this.el.body = document.querySelector('body');
68
+ this.el.header = document.getElementById(selectors_1.default.getId('header'));
69
+ this.el.mobileButton = ((_a = this.el.header) === null || _a === void 0 ? void 0 : _a.querySelector(selectors_1.default.controls(selectors_1.default.getId('wrapper')))) || null;
70
+ this.el.wrapper = document.getElementById(selectors_1.default.getId('wrapper'));
71
+ }
72
+ /**
73
+ * Adds events to the dom
74
+ */
75
+ attachEvents() {
76
+ var _a, _b, _c;
77
+ window.addEventListener('resize', util_1.default.throttleEvent(this.eHandleResize.bind(this), settings_1.default.delay.default, {
78
+ trailing: false
79
+ }));
80
+ window.addEventListener('scroll', util_1.default.throttleEvent(this.eHandleScroll.bind(this), settings_1.default.delay.default, {
81
+ trailing: false
82
+ }));
83
+ let focusables = (_a = this.el.header) === null || _a === void 0 ? void 0 : _a.querySelectorAll(selectors_1.default.focusable),
84
+ lastFocusable = focusables === null || focusables === void 0 ? void 0 : focusables[(focusables === null || focusables === void 0 ? void 0 : focusables.length) - 1];
85
+ lastFocusable === null || lastFocusable === void 0 ? void 0 : lastFocusable.addEventListener('keydown', util_1.default.throttleEvent(this.eWrapTab.bind(this)));
86
+ focusables === null || focusables === void 0 ? void 0 : focusables.forEach(focusable => {
87
+ focusable.addEventListener('keydown', util_1.default.throttleEvent(this.eHandleKeypress.bind(this)));
88
+ });
89
+ let menuButtons = (_b = this.el.header) === null || _b === void 0 ? void 0 : _b.querySelectorAll(selectors_1.default.controls() + selectors_1.default.neg(selectors_1.default.controls(selectors_1.default.ids.wrapper)));
90
+ menuButtons === null || menuButtons === void 0 ? void 0 : menuButtons.forEach(menuButton => {
91
+ menuButton.addEventListener('mousedown', util_1.default.throttleEvent(this.eToggleMenu.bind(this), settings_1.default.delay.slow, {
92
+ trailing: false
93
+ }));
94
+ });
95
+ (_c = this.el.mobileButton) === null || _c === void 0 ? void 0 : _c.addEventListener('mousedown', util_1.default.throttleEvent(this.eToggleMobileMenu.bind(this), settings_1.default.delay.slow, {
96
+ trailing: false
97
+ }));
98
+ }
99
+ /**
100
+ * Adds classes that inform the styles that javascript is enabled
101
+ */
102
+ enableJavascript() {
103
+ var _a;
104
+ (_a = this.el.header) === null || _a === void 0 ? void 0 : _a.classList.add(selectors_1.default.getClass('js'));
105
+ }
106
+ /**
107
+ * Sets the state of the mobile menu
108
+ * @param open - `true` to open the menu or `false` to close it
109
+ */
110
+ setMobileMenu() {
111
+ let open = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
112
+ var _a, _b, _c;
113
+ let ariaExpanded = open ? 'true' : 'false',
114
+ ariaLabel = open ? 'close menu' : 'open menu';
115
+ (_a = this.el.mobileButton) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-expanded', ariaExpanded);
116
+ setTimeout(() => {
117
+ var _a;
118
+ (_a = this.el.mobileButton) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-label', ariaLabel);
119
+ }, settings_1.default.delay.fast);
120
+ if (open) {
121
+ if (settings_1.default.fixed !== true) {
122
+ window.scroll({
123
+ top: 0,
124
+ left: 0,
125
+ behavior: 'smooth'
126
+ });
127
+ }
128
+ setTimeout(() => {
129
+ if (this.el.body) {
130
+ this.el.body.style.overflow = 'hidden';
131
+ }
132
+ }, settings_1.default.from === enum_1.mintSide.Left ? settings_1.default.delay.default : settings_1.default.delay.instant);
133
+ (_b = this.el.wrapper) === null || _b === void 0 ? void 0 : _b.classList.add(selectors_1.default.getClass('open'));
134
+ } else {
135
+ if (this.el.body) {
136
+ this.el.body.style.overflow = 'auto';
137
+ }
138
+ (_c = this.el.wrapper) === null || _c === void 0 ? void 0 : _c.classList.remove(selectors_1.default.getClass('open'));
139
+ this.closeAllMenus();
140
+ }
141
+ }
142
+ /**
143
+ * Toggles the state of the mobile menu
144
+ */
145
+ toggleMobileMenu() {
146
+ var _a, _b;
147
+ this.setMobileMenu(((_b = (_a = this.el.mobileButton) === null || _a === void 0 ? void 0 : _a.getAttribute('aria-expanded')) === null || _b === void 0 ? void 0 : _b.toLowerCase()) === 'false');
148
+ }
149
+ /**
150
+ * Sets the state of the provided button's menu
151
+ * @param button - Button element to set
152
+ * @param open - `true` to open the menu or `false` to close it
153
+ */
154
+ setMenu(button) {
155
+ let open = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
156
+ let ariaExpanded = open ? 'true' : 'false',
157
+ menu = button === null || button === void 0 ? void 0 : button.nextElementSibling;
158
+ if (button && menu) {
159
+ button.setAttribute('aria-expanded', ariaExpanded);
160
+ if (open) {
161
+ util_1.default.show(menu);
162
+ } else {
163
+ util_1.default.hide(menu);
164
+ this.closeSubMenus(button);
165
+ }
166
+ }
167
+ }
168
+ /**
169
+ * Toggles the state of the provided button's menu
170
+ * @param button - Button element to toggle
171
+ */
172
+ toggleMenu(button) {
173
+ var _a;
174
+ this.setMenu(button, ((_a = button === null || button === void 0 ? void 0 : button.getAttribute('aria-expanded')) === null || _a === void 0 ? void 0 : _a.toLowerCase()) !== 'true');
175
+ }
176
+ /**
177
+ * Closes all submenus of the provided button's menu
178
+ * @param button - Button element of the parent menu
179
+ */
180
+ closeSubMenus(button) {
181
+ let menu = button === null || button === void 0 ? void 0 : button.nextElementSibling,
182
+ subMenus = menu === null || menu === void 0 ? void 0 : menu.querySelectorAll(selectors_1.default.subMenuButtons);
183
+ subMenus.forEach(child => {
184
+ var _a;
185
+ // setMenu calls this function, so ignore subsub menus
186
+ if (((_a = child.parentElement) === null || _a === void 0 ? void 0 : _a.parentElement) === menu) {
187
+ this.setMenu(child);
188
+ }
189
+ });
190
+ }
191
+ /**
192
+ * Closes all submenus of the n4vbar
193
+ */
194
+ closeAllMenus() {
195
+ var _a;
196
+ let menuButtons = (_a = this.el.wrapper) === null || _a === void 0 ? void 0 : _a.querySelectorAll(selectors_1.default.subMenuButtons);
197
+ menuButtons === null || menuButtons === void 0 ? void 0 : menuButtons.forEach(menuButton => {
198
+ this.setMenu(menuButton);
199
+ });
200
+ }
201
+ /**
202
+ * Opens the menu closest to the document's focus
203
+ */
204
+ openClosestMenu() {
205
+ var _a;
206
+ let activeButton = document.activeElement,
207
+ activeMenu = activeButton === null || activeButton === void 0 ? void 0 : activeButton.nextElementSibling,
208
+ showing = ((_a = activeButton === null || activeButton === void 0 ? void 0 : activeButton.getAttribute('aria-expanded')) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === 'true';
209
+ if ((activeButton === null || activeButton === void 0 ? void 0 : activeButton.getAttribute('aria-controls')) === selectors_1.default.ids.wrapper) {
210
+ activeMenu = this.el.wrapper;
211
+ }
212
+ if ((activeButton === null || activeButton === void 0 ? void 0 : activeButton.getAttribute('aria-controls')) && activeMenu && !showing) {
213
+ activeButton.click();
214
+ let firstFocusable = activeMenu.querySelector(selectors_1.default.focusable);
215
+ firstFocusable === null || firstFocusable === void 0 ? void 0 : firstFocusable.focus();
216
+ }
217
+ }
218
+ /**
219
+ * Closes the menu closest to the document's focus
220
+ */
221
+ closeClosestMenu() {
222
+ var _a, _b;
223
+ let activeElement = document.activeElement,
224
+ activeMenu = activeElement === null || activeElement === void 0 ? void 0 : activeElement.closest(selectors_1.default.subMenu),
225
+ activeButton = (activeMenu === null || activeMenu === void 0 ? void 0 : activeMenu.previousElementSibling) ? activeMenu.previousElementSibling : this.el.mobileButton;
226
+ if ((activeElement === null || activeElement === void 0 ? void 0 : activeElement.getAttribute('aria-controls')) && ((_a = activeElement === null || activeElement === void 0 ? void 0 : activeElement.getAttribute('aria-expanded')) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === 'true') {
227
+ activeButton = activeElement;
228
+ }
229
+ if (((_b = activeButton === null || activeButton === void 0 ? void 0 : activeButton.getAttribute('aria-expanded')) === null || _b === void 0 ? void 0 : _b.toLowerCase()) === 'true') {
230
+ activeButton === null || activeButton === void 0 ? void 0 : activeButton.click();
231
+ activeButton === null || activeButton === void 0 ? void 0 : activeButton.focus();
232
+ }
233
+ }
234
+ /**
235
+ * Toggles the menu closest to the document's focus
236
+ */
237
+ toggleClosestMenu() {
238
+ var _a, _b;
239
+ if (((_b = (_a = document.activeElement) === null || _a === void 0 ? void 0 : _a.getAttribute('aria-expanded')) === null || _b === void 0 ? void 0 : _b.toLowerCase()) === 'true') {
240
+ this.closeClosestMenu();
241
+ } else {
242
+ this.openClosestMenu();
243
+ }
244
+ }
245
+ /**
246
+ * Closes the mobile menu when the window resizes
247
+ */
248
+ eHandleResize() {
249
+ this.setMobileMenu();
250
+ }
251
+ /**
252
+ * Closes all submenus when the page is scrolled
253
+ */
254
+ eHandleScroll() {
255
+ this.closeAllMenus();
256
+ }
257
+ /**
258
+ * Sends the focus to the menu button after tabbing past the last menu item
259
+ * @param e - Keyboard event
260
+ */
261
+ eWrapTab(e) {
262
+ var _a;
263
+ if (e.key.toLowerCase() === 'tab' && !e.shiftKey) {
264
+ (_a = this.el.mobileButton) === null || _a === void 0 ? void 0 : _a.focus();
265
+ if (document.activeElement === this.el.mobileButton) {
266
+ e.preventDefault();
267
+ }
268
+ }
269
+ }
270
+ /**
271
+ * Handles keypresses on n4vbar buttons
272
+ * @param e - Keyboard event
273
+ */
274
+ eHandleButtonKeypress(e) {
275
+ var _a;
276
+ let target = e.target,
277
+ subMenu = target.closest('li');
278
+ switch (e.key.toLowerCase()) {
279
+ case 'escape':
280
+ if (subMenu === null || subMenu === void 0 ? void 0 : subMenu.classList.contains(selectors_1.default.classes.open)) {
281
+ this.setMenu(subMenu);
282
+ } else {
283
+ this.setMobileMenu();
284
+ (_a = this.el.menuButton) === null || _a === void 0 ? void 0 : _a.focus();
285
+ }
286
+ case 'arrowleft':
287
+ this.closeClosestMenu();
288
+ break;
289
+ case 'arrowright':
290
+ break;
291
+ case 'enter':
292
+ case 'space':
293
+ break;
294
+ }
295
+ }
296
+ /**
297
+ * Handles keypresses on n4vbar links
298
+ * @param e - Keyboard event
299
+ */
300
+ eHandleLinkKeypress(e) {
301
+ switch (e.key.toLowerCase()) {
302
+ case 'escape':
303
+ case 'arrowleft':
304
+ this.closeClosestMenu();
305
+ break;
306
+ case 'arrowright':
307
+ this.openClosestMenu();
308
+ break;
309
+ case 'enter':
310
+ case 'space':
311
+ this.toggleClosestMenu();
312
+ break;
313
+ }
314
+ }
315
+ /**
316
+ * Handles keypresses on the n4vbar
317
+ * @param e - Keyboard event
318
+ */
319
+ eHandleKeypress(e) {
320
+ if (e.key.toLowerCase() !== 'tab') {
321
+ e.preventDefault();
322
+ }
323
+ let target = e.target;
324
+ switch (target === null || target === void 0 ? void 0 : target.tagName.toLowerCase()) {
325
+ case 'a':
326
+ this.eHandleLinkKeypress(e);
327
+ break;
328
+ case 'button':
329
+ this.eHandleButtonKeypress(e);
330
+ break;
331
+ }
332
+ }
333
+ /**
334
+ * Toggles the mobile menu
335
+ */
336
+ eToggleMobileMenu() {
337
+ this.toggleMobileMenu();
338
+ }
339
+ /**
340
+ * Toggles the clicked submenu
341
+ * @param e - Mouse event
342
+ */
343
+ eToggleMenu(e) {
344
+ this.toggleMenu(e.target);
345
+ }
346
+ }
347
+ exports.mintHeader = mintHeader;
348
+ exports["default"] = mintHeader;
22
349
 
23
350
  /***/ }),
24
351
 
25
- /***/ "./node_modules/@appartmint/util/dist/js/index.min.js":
26
- /*!************************************************************!*\
27
- !*** ./node_modules/@appartmint/util/dist/js/index.min.js ***!
28
- \************************************************************/
29
- /***/ ((module) => {
352
+ /***/ "./src/ts/imports/enum.ts":
353
+ /*!********************************!*\
354
+ !*** ./src/ts/imports/enum.ts ***!
355
+ \********************************/
356
+ /***/ ((__unused_webpack_module, exports) => {
30
357
 
31
- !function(e,t){ true?module.exports=t():0}(self,(()=>(()=>{"use strict";var e={64:(e,t)=>{var i;Object.defineProperty(t,"__esModule",{value:!0}),t.mintSide=void 0,(i=t.mintSide||(t.mintSide={}))[i.Top=0]="Top",i[i.Right=1]="Right",i[i.Bottom=2]="Bottom",i[i.Left=3]="Left"},54:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.mintColor=void 0;class i{constructor(e){this.r="number"==typeof e.r?Math.max(Math.min(e.r,i.hexBase**2-1),0):0,this.g="number"==typeof e.g?Math.max(Math.min(e.g,i.hexBase**2-1),0):0,this.b="number"==typeof e.b?Math.max(Math.min(e.b,i.hexBase**2-1),0):0,this.a="number"==typeof e.a?Math.max(Math.min(e.a,1),0):1,"string"==typeof e.color&&this.stringConstructor(e.color)}stringConstructor(e){e.startsWith("#")?this.hexConstructor(e):(~e.indexOf("linear-gradient")&&(e=e.substring(e.indexOf("linear-gradient"),e.length)),this.rgbConstructor(e))}hexConstructor(e){switch(e.length){case 1:case 5:case 6:return;case 2:e="#"+e[1]+e[1]+e[1]+e[1]+e[1]+e[1]+i.hexMax;break;case 3:e="#"+e[1]+e[1]+e[1]+e[2]+e[2]+e[2]+i.hexMax;break;case 4:e="#"+e[1]+e[1]+e[2]+e[2]+e[3]+e[3]+i.hexMax;break;case 7:e+=i.hexMax;break;case 8:e+=e[e.length-1];break;default:e=e.substring(0,9)}this.r=parseInt(e.substring(1,3),i.hexBase),this.g=parseInt(e.substring(3,5),i.hexBase),this.b=parseInt(e.substring(5,7),i.hexBase),this.a=parseInt(e.substring(7,9),i.hexBase)/i.hexBase**2}rgbConstructor(e){let t=e.match(/rgba?\((\d{1,3}), ?(\d{1,3}), ?(\d{1,3})\)?(?:, ?(\d(?:\.\d*)?)\))?/);t&&(this.r=parseInt(t[1]),this.g=parseInt(t[2]),this.b=parseInt(t[3]),this.a=parseFloat(t[4]))}getBrightness(){return 0===this.a?262:isNaN(this.r)||isNaN(this.g)||isNaN(this.b)?-1:Math.round((299*this.r+587*this.g+144*this.b)/1e3)}}t.mintColor=i,i.hexBase=16,i.hexMax="FF",t.default=i},708:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.mintItem=void 0;class i{constructor(){this.version=0,this.priority=0,this.centered=!1,this.disabled=!1,this.queryParams={},this.attributes={},this.classes=[],this.buttons=[],this.images=[],this.children=[]}}t.mintItem=i,t.default=i},139:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.mintDisplay=void 0;class i{}t.mintDisplay=i,t.default=i},376:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.mintEvent=void 0;class i{}t.mintEvent=i,t.default=i},683:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.mintMath=void 0;class i{static randomInt(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return t=Math.ceil(t),e=Math.floor(e),Math.floor(Math.random()*(e-t)+t)}}t.mintMath=i,t.default=i},982:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.mintObject=void 0;class i{static isSimilar(e,t){let i=Object.keys(e);return i.length===Object.keys(t).length&&(i.forEach((i=>{if(e[i]!==t[i])return!1})),!0)}static isSuperset(e,t){let n=!0;if(e===t)return n;try{if(0===Object.keys(t).length)return!n}catch(e){return!n}return Object.keys(t).forEach((a=>{n=n&&i.isSuperset(e[a],t[a])})),n}static remove(e,t){return Object.keys(e).reduce(((i,n)=>(t.includes(n)||(i[n]=e[n]),i)),{})}static sort(e){return Object.keys(e).sort().reduce(((t,i)=>(t[i]=e[i],t)),{})}static filter(e,t){return this.filterKeys(e,t)}static filterKeys(e,t){return t.reduce(((t,i)=>(t[i]=e[i],t)),{})}static filterValues(e,t){return Object.keys(e).reduce(((i,n)=>(t.includes(e[n])&&(i[n]=e[n]),i)),{})}}t.mintObject=i,t.default=i},226:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.mintText=void 0;class i{}t.mintText=i,t.default=i},505:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.mintWindow=void 0;class i{}t.mintWindow=i,t.default=i},491:function(e,t,i){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.mintUtil=t.mintSettings=t.mintSelectors=t.mintWindow=t.mintText=t.mintObject=t.mintMath=t.mintEvent=t.mintDisplay=t.mintItem=t.mintColor=t.mintSide=void 0;var a=i(64);Object.defineProperty(t,"mintSide",{enumerable:!0,get:function(){return a.mintSide}});var r=i(54);Object.defineProperty(t,"mintColor",{enumerable:!0,get:function(){return r.mintColor}});var s=i(708);Object.defineProperty(t,"mintItem",{enumerable:!0,get:function(){return s.mintItem}});var l=i(139);Object.defineProperty(t,"mintDisplay",{enumerable:!0,get:function(){return l.mintDisplay}});var o=i(376);Object.defineProperty(t,"mintEvent",{enumerable:!0,get:function(){return o.mintEvent}});var d=i(683);Object.defineProperty(t,"mintMath",{enumerable:!0,get:function(){return d.mintMath}});var u=i(982);Object.defineProperty(t,"mintObject",{enumerable:!0,get:function(){return u.mintObject}});var c=i(226);Object.defineProperty(t,"mintText",{enumerable:!0,get:function(){return c.mintText}});var h=i(505);Object.defineProperty(t,"mintWindow",{enumerable:!0,get:function(){return h.mintWindow}});var m=i(565);Object.defineProperty(t,"mintSelectors",{enumerable:!0,get:function(){return m.mintSelectors}});var b=i(750);Object.defineProperty(t,"mintSettings",{enumerable:!0,get:function(){return b.mintSettings}});var f=i(427);Object.defineProperty(t,"mintUtil",{enumerable:!0,get:function(){return f.mintUtil}}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return n(f).default}})},565:(e,t)=>{var i;Object.defineProperty(t,"__esModule",{value:!0}),t.mintSelectors=void 0;class n{static prefix(e){return(e=e.toLowerCase()).startsWith(this.pre)?e:`${this.pre}${e}`}static cssPrefix(e){return`--${this.prefix(e.replace(/^-+/,""))}`}static cssVar(e){return`var(${this.cssPrefix(e)})`}static neg(e){return`:not(${e})`}static class(e){return`.${this.prefix(e)}`}static id(e){return`#${this.prefix(e)}`}static controls(e){return e?`[aria-controls="${this.prefix(e)}"]`:this.hasControls}static expanded(e){return"boolean"==typeof e?`[aria-expanded="${e}"]`:this.hasExpanded}static getId(e){var t;return null!==(t=this.ids[null!=e?e:-1])&&void 0!==t?t:""}static getClass(e,t){var i,n;return t?null!==(i=this.classes[t][null!=e?e:-1])&&void 0!==i?i:"":null!==(n=this.classes[null!=e?e:-1])&&void 0!==n?n:""}static getFocusables(e){let t;return t=e?[...e.querySelectorAll(this.focusable)]:[...document.querySelectorAll(this.focusable)],t.filter((e=>this.isFocusable(e)))}static isFocusable(e){let t=e;do{if("none"===window.getComputedStyle(t).getPropertyValue("display").toLowerCase())return!1;t=t.parentElement}while(t);return!0}}t.mintSelectors=n,i=n,n.lib="mint",n.pre=`${i.lib}-`,n.disabled="[disabled]",n.hasControls="[aria-controls]",n.hasExpanded="[aria-expanded]",n.hasLink="[href]",n.hasRouterLink="[routerLink]",n.hasId="[id]",n.notTabbable='[tabindex^="-"]',n.tabbable=`[tabindex]${i.neg(i.notTabbable)}`,n.focusable=`input${i.neg(i.disabled)}${i.neg(i.notTabbable)},\n select${i.neg(i.disabled)}${i.neg(i.notTabbable)},\n textarea${i.neg(i.disabled)}${i.neg(i.notTabbable)},\n button${i.neg(i.disabled)}${i.neg(i.notTabbable)},\n object${i.neg(i.disabled)}${i.neg(i.notTabbable)},\n a${i.hasLink}, a${i.hasRouterLink},\n area${i.hasLink},\n ${i.tabbable}`.replace(/\s/g,""),n.classes={sides:{top:i.prefix("top"),right:i.prefix("right"),bottom:i.prefix("bottom"),left:i.prefix("left")}},t.default=n},750:(e,t)=>{var i;Object.defineProperty(t,"__esModule",{value:!0}),t.mintSettings=void 0;class n{static set(e){let t=!1;"number"==typeof e.delayBase&&(this.delayBase=e.delayBase,t=!0),"number"==typeof e.delayStep&&(this.delayStep=e.delayStep,t=!0),t&&this.setDelay(),e.delay&&Object.keys(e.delay).length&&Object.values(e.delay).reduce(((e,t)=>e&&"number"==typeof t),!0)&&(this.delay=Object.assign(Object.assign({},this.delay),e.delay))}static setDelay(){this.delay={instant:this.delayBase+0*this.delayStep,fast:this.delayBase+1*this.delayStep,medFast:this.delayBase+2*this.delayStep,default:this.delayBase+3*this.delayStep,medSlow:this.delayBase+4*this.delayStep,slow:this.delayBase+5*this.delayStep}}}t.mintSettings=n,i=n,n.delayBase=0,n.delayStep=100,n.delay={instant:i.delayBase+0*i.delayStep,fast:i.delayBase+1*i.delayStep,medFast:i.delayBase+2*i.delayStep,default:i.delayBase+3*i.delayStep,medSlow:i.delayBase+4*i.delayStep,slow:i.delayBase+5*i.delayStep},t.default=n},427:function(e,t,i){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.mintUtil=void 0;const a=i(64),r=n(i(750));class s{static windowWidth(){let e=document.getElementsByTagName("body")[0].getBoundingClientRect().width%1;return window.innerWidth+e}static debounce(e){let t,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r.default.delay.default;return function(n){t&&clearTimeout(t),t=setTimeout(e,i,n)}}static debounceEvent(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r.default.delay.default;return s.debounce(e,t)}static throttle(e){let t,i,n,a,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r.default.delay.default,l=arguments.length>2?arguments[2]:void 0,o=0,d=function(){o=!1===(null==l?void 0:l.leading)?0:(new Date).getTime(),a=0,n=e.apply(t,i),a||(t=i=null)};return function(){let r=(new Date).getTime();o||!1!==(null==l?void 0:l.leading)||(o=r);let u=s-r+o;return t=this,i=arguments,u<=0||u>s?(a&&(clearTimeout(a),a=0),o=r,n=e.apply(t,i),a||(t=i=null)):a||!1===(null==l?void 0:l.trailing)||(a=window.setTimeout(d,u)),n}}static throttleEvent(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r.default.delay.default,i=arguments.length>2?arguments[2]:void 0;return s.throttle(e,t,i)}static show(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r.default.delay.default,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:a.mintSide.Top;e&&(e.style.display="",requestAnimationFrame((()=>{i===a.mintSide.Top||i===a.mintSide.Bottom?e.style.height=`${e.scrollHeight}px`:e.style.width=`${e.scrollWidth}px`,setTimeout((()=>{i===a.mintSide.Top||i===a.mintSide.Bottom?e.style.height="auto":e.style.width="auto"}),t)})))}static hide(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r.default.delay.default,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:a.mintSide.Top;if(e){let n=e.scrollHeight,r=e.scrollWidth,s=e.style.transition;e.style.transition="",requestAnimationFrame((()=>{i===a.mintSide.Top||i===a.mintSide.Bottom?e.style.height=`${n}px`:e.style.width=`${r}px`,e.style.transition=s,requestAnimationFrame((()=>{i===a.mintSide.Top||i===a.mintSide.Bottom?e.style.height="0":e.style.width="0"}))})),setTimeout((()=>{e.style.display="none"}),t)}}static copyText(e){let t=document.createElement("textarea");return!(!e||!t||(t.value=e,t.style.cssText="\n position: fixed;\n top: 0;\n left: 0;\n transform: translate(-100%, -100%);\n opacity: 0;\n z-index: -1;\n ",document.body.appendChild(t),t.select(),t.setSelectionRange(0,99999),navigator.clipboard.writeText(t.value),document.body.removeChild(t),0))}static isEmail(e){return null!==e.match(/(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/)}}t.mintUtil=s,t.default=s}},t={};return function i(n){var a=t[n];if(void 0!==a)return a.exports;var r=t[n]={exports:{}};return e[n].call(r.exports,r,r.exports,i),r.exports}(491)})()));
32
- //# sourceMappingURL=index.min.js.map
33
358
 
34
- /***/ })
35
359
 
36
- /******/ });
37
- /************************************************************************/
38
- /******/ // The module cache
39
- /******/ var __webpack_module_cache__ = {};
40
- /******/
41
- /******/ // The require function
42
- /******/ function __webpack_require__(moduleId) {
43
- /******/ // Check if module is in cache
44
- /******/ var cachedModule = __webpack_module_cache__[moduleId];
45
- /******/ if (cachedModule !== undefined) {
46
- /******/ return cachedModule.exports;
47
- /******/ }
48
- /******/ // Create a new module (and put it into the cache)
49
- /******/ var module = __webpack_module_cache__[moduleId] = {
50
- /******/ // no module.id needed
51
- /******/ // no module.loaded needed
52
- /******/ exports: {}
53
- /******/ };
54
- /******/
55
- /******/ // Execute the module function
56
- /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
57
- /******/
58
- /******/ // Return the exports of the module
59
- /******/ return module.exports;
60
- /******/ }
61
- /******/
62
- /************************************************************************/
63
- var __webpack_exports__ = {};
64
- // This entry need to be wrapped in an IIFE because it need to be in strict mode.
65
- (() => {
66
- "use strict";
67
- var exports = __webpack_exports__;
360
+ Object.defineProperty(exports, "__esModule", ({
361
+ value: true
362
+ }));
363
+ exports.mintSide = void 0;
364
+ /**
365
+ * Side Enum
366
+ */
367
+ var mintSide;
368
+ (function (mintSide) {
369
+ mintSide[mintSide["Top"] = 0] = "Top";
370
+ mintSide[mintSide["Right"] = 1] = "Right";
371
+ mintSide[mintSide["Bottom"] = 2] = "Bottom";
372
+ mintSide[mintSide["Left"] = 3] = "Left";
373
+ })(mintSide = exports.mintSide || (exports.mintSide = {}));
374
+ ;
375
+
376
+ /***/ }),
377
+
378
+ /***/ "./src/ts/imports/models/color.ts":
379
+ /*!****************************************!*\
380
+ !*** ./src/ts/imports/models/color.ts ***!
381
+ \****************************************/
382
+ /***/ ((__unused_webpack_module, exports) => {
383
+
384
+
385
+
386
+ Object.defineProperty(exports, "__esModule", ({
387
+ value: true
388
+ }));
389
+ exports.mintColor = void 0;
390
+ /**
391
+ * Color
392
+ */
393
+ class mintColor {
394
+ constructor(args) {
395
+ this.r = typeof args.r === 'number' ? Math.max(Math.min(args.r, mintColor.hexBase ** 2 - 1), 0) : 0;
396
+ this.g = typeof args.g === 'number' ? Math.max(Math.min(args.g, mintColor.hexBase ** 2 - 1), 0) : 0;
397
+ this.b = typeof args.b === 'number' ? Math.max(Math.min(args.b, mintColor.hexBase ** 2 - 1), 0) : 0;
398
+ this.a = typeof args.a === 'number' ? Math.max(Math.min(args.a, 1), 0) : 1;
399
+ if (typeof args.color === 'string') {
400
+ this.stringConstructor(args.color);
401
+ }
402
+ }
403
+ /**
404
+ * Constructor from a string argument
405
+ */
406
+ stringConstructor(str) {
407
+ if (str.startsWith('#')) {
408
+ this.hexConstructor(str);
409
+ } else {
410
+ if (~str.indexOf('linear-gradient')) {
411
+ str = str.substring(str.indexOf('linear-gradient'), str.length);
412
+ }
413
+ this.rgbConstructor(str);
414
+ }
415
+ }
416
+ /**
417
+ * Constructor from a hex argument
418
+ */
419
+ hexConstructor(hex) {
420
+ switch (hex.length) {
421
+ case 1:
422
+ case 5:
423
+ case 6:
424
+ return;
425
+ case 2:
426
+ hex = '#' + hex[1] + hex[1] + hex[1] + hex[1] + hex[1] + hex[1] + mintColor.hexMax;
427
+ break;
428
+ case 3:
429
+ hex = '#' + hex[1] + hex[1] + hex[1] + hex[2] + hex[2] + hex[2] + mintColor.hexMax;
430
+ break;
431
+ case 4:
432
+ hex = '#' + hex[1] + hex[1] + hex[2] + hex[2] + hex[3] + hex[3] + mintColor.hexMax;
433
+ break;
434
+ case 7:
435
+ hex += mintColor.hexMax;
436
+ break;
437
+ case 8:
438
+ hex += hex[hex.length - 1];
439
+ break;
440
+ default:
441
+ hex = hex.substring(0, 9);
442
+ }
443
+ this.r = parseInt(hex.substring(1, 3), mintColor.hexBase);
444
+ this.g = parseInt(hex.substring(3, 5), mintColor.hexBase);
445
+ this.b = parseInt(hex.substring(5, 7), mintColor.hexBase);
446
+ this.a = parseInt(hex.substring(7, 9), mintColor.hexBase) / mintColor.hexBase ** 2;
447
+ }
448
+ /**
449
+ * Constructor from an rgba argument
450
+ */
451
+ rgbConstructor(rgb) {
452
+ let match = rgb.match(/rgba?\((\d{1,3}), ?(\d{1,3}), ?(\d{1,3})\)?(?:, ?(\d(?:\.\d*)?)\))?/);
453
+ if (match) {
454
+ this.r = parseInt(match[1]);
455
+ this.g = parseInt(match[2]);
456
+ this.b = parseInt(match[3]);
457
+ this.a = parseFloat(match[4]);
458
+ }
459
+ }
460
+ /**
461
+ * Returns the perceived brightness of the color
462
+ */
463
+ getBrightness() {
464
+ if (this.a === 0) {
465
+ return 262;
466
+ }
467
+ if (!isNaN(this.r) && !isNaN(this.g) && !isNaN(this.b)) {
468
+ return Math.round((this.r * 299 + this.g * 587 + this.b * 144) / 1000);
469
+ }
470
+ return -1;
471
+ }
472
+ }
473
+ exports.mintColor = mintColor;
474
+ mintColor.hexBase = 16;
475
+ mintColor.hexMax = 'FF';
476
+ exports["default"] = mintColor;
477
+
478
+ /***/ }),
479
+
480
+ /***/ "./src/ts/imports/models/item.ts":
481
+ /*!***************************************!*\
482
+ !*** ./src/ts/imports/models/item.ts ***!
483
+ \***************************************/
484
+ /***/ ((__unused_webpack_module, exports) => {
485
+
486
+
487
+
488
+ Object.defineProperty(exports, "__esModule", ({
489
+ value: true
490
+ }));
491
+ exports.mintItem = void 0;
492
+ /**
493
+ * A generic item
494
+ */
495
+ class mintItem {
496
+ constructor() {
497
+ /**
498
+ * Item settings
499
+ */
500
+ this.version = 0;
501
+ this.priority = 0;
502
+ this.centered = false;
503
+ this.disabled = false;
504
+ /**
505
+ * Item data
506
+ */
507
+ this.queryParams = {};
508
+ this.attributes = {};
509
+ /**
510
+ * Item lists
511
+ */
512
+ this.classes = [];
513
+ this.buttons = [];
514
+ this.images = [];
515
+ this.children = [];
516
+ }
517
+ }
518
+ exports.mintItem = mintItem;
519
+ ;
520
+ exports["default"] = mintItem;
521
+
522
+ /***/ }),
523
+
524
+ /***/ "./src/ts/imports/util/display.ts":
525
+ /*!****************************************!*\
526
+ !*** ./src/ts/imports/util/display.ts ***!
527
+ \****************************************/
528
+ /***/ ((__unused_webpack_module, exports) => {
529
+
530
+
531
+
532
+ Object.defineProperty(exports, "__esModule", ({
533
+ value: true
534
+ }));
535
+ exports.mintDisplay = void 0;
536
+ /**
537
+ * Handles the display of elements
538
+ */
539
+ class mintDisplay {}
540
+ exports.mintDisplay = mintDisplay;
541
+ ;
542
+ exports["default"] = mintDisplay;
543
+
544
+ /***/ }),
545
+
546
+ /***/ "./src/ts/imports/util/event.ts":
547
+ /*!**************************************!*\
548
+ !*** ./src/ts/imports/util/event.ts ***!
549
+ \**************************************/
550
+ /***/ ((__unused_webpack_module, exports) => {
551
+
552
+
553
+
554
+ Object.defineProperty(exports, "__esModule", ({
555
+ value: true
556
+ }));
557
+ exports.mintEvent = void 0;
558
+ /**
559
+ * Event helper functions
560
+ */
561
+ class mintEvent {}
562
+ exports.mintEvent = mintEvent;
563
+ ;
564
+ exports["default"] = mintEvent;
565
+
566
+ /***/ }),
567
+
568
+ /***/ "./src/ts/imports/util/icon.ts":
569
+ /*!*************************************!*\
570
+ !*** ./src/ts/imports/util/icon.ts ***!
571
+ \*************************************/
572
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
573
+
574
+
575
+
576
+ var __importDefault = this && this.__importDefault || function (mod) {
577
+ return mod && mod.__esModule ? mod : {
578
+ "default": mod
579
+ };
580
+ };
581
+ Object.defineProperty(exports, "__esModule", ({
582
+ value: true
583
+ }));
584
+ exports.mintIcon = void 0;
585
+ /**
586
+ * Imports
587
+ */
588
+ const object_1 = __importDefault(__webpack_require__(/*! ./object */ "./src/ts/imports/util/object.ts"));
589
+ /**
590
+ * Icon helper functions
591
+ */
592
+ class mintIcon {
593
+ /**
594
+ * Appends the given icon to the given selector
595
+ */
596
+ static append(icon, selector) {
597
+ let items = document.querySelectorAll(selector);
598
+ items.forEach(item => {
599
+ let currentIcon = item.querySelector('i'),
600
+ iconElement = document.createElement('i');
601
+ iconElement.classList.add(...icon.split(' '));
602
+ if (currentIcon) {
603
+ item.replaceChild(iconElement, currentIcon);
604
+ } else {
605
+ item.appendChild(iconElement);
606
+ }
607
+ });
608
+ }
609
+ /**
610
+ * Updates the icons
611
+ * @param icons - the icons to update
612
+ */
613
+ static update(icons) {
614
+ let activeIcons = object_1.default.removeValues(Object.assign(Object.assign({}, this.icons), icons), [false]);
615
+ Object.keys(activeIcons).forEach(selector => {
616
+ this.append(activeIcons[selector], selector);
617
+ });
618
+ }
619
+ }
620
+ exports.mintIcon = mintIcon;
621
+ /**
622
+ * Default icons
623
+ */
624
+ mintIcon.icons = {
625
+ 'a[href^="http"]': 'fas fa-up-right-from-square',
626
+ 'a[href^="mailto:"]': 'far fa-envelope',
627
+ 'a[href^="tel:"]': 'fas fa-phone-flip',
628
+ 'a[href^="sms:"]': 'far fa-message'
629
+ };
630
+ ;
631
+ exports["default"] = mintIcon;
632
+
633
+ /***/ }),
634
+
635
+ /***/ "./src/ts/imports/util/math.ts":
636
+ /*!*************************************!*\
637
+ !*** ./src/ts/imports/util/math.ts ***!
638
+ \*************************************/
639
+ /***/ ((__unused_webpack_module, exports) => {
640
+
641
+
642
+
643
+ Object.defineProperty(exports, "__esModule", ({
644
+ value: true
645
+ }));
646
+ exports.mintMath = void 0;
647
+ /**
648
+ * Math functions for the util library
649
+ */
650
+ class mintMath {
651
+ /**
652
+ * Get a random integer between min and max
653
+ * @param max Maximum value to return
654
+ * @param min Minimum value to return (default is 0)
655
+ * @returns a random integer between min and max
656
+ */
657
+ static randomInt(max) {
658
+ let min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
659
+ min = Math.ceil(min);
660
+ max = Math.floor(max);
661
+ return Math.floor(Math.random() * (max - min) + min);
662
+ }
663
+ }
664
+ exports.mintMath = mintMath;
665
+ ;
666
+ exports["default"] = mintMath;
667
+
668
+ /***/ }),
669
+
670
+ /***/ "./src/ts/imports/util/object.ts":
671
+ /*!***************************************!*\
672
+ !*** ./src/ts/imports/util/object.ts ***!
673
+ \***************************************/
674
+ /***/ ((__unused_webpack_module, exports) => {
675
+
676
+
677
+
678
+ Object.defineProperty(exports, "__esModule", ({
679
+ value: true
680
+ }));
681
+ exports.mintObject = void 0;
682
+ /**
683
+ * Object functions for the util library
684
+ */
685
+ class mintObject {
686
+ /**
687
+ * Returns true if the provided objects have the same entries
688
+ */
689
+ static isSimilar(obj1, obj2) {
690
+ let keys = Object.keys(obj1);
691
+ if (keys.length !== Object.keys(obj2).length) {
692
+ return false;
693
+ }
694
+ keys.forEach(key => {
695
+ if (obj1[key] !== obj2[key]) {
696
+ return false;
697
+ }
698
+ });
699
+ return true;
700
+ }
701
+ /**
702
+ * Returns true if the first object has at least the same
703
+ * entries as the second object
704
+ * @param superset - the object to check
705
+ * @param subset - the object whose entries are required
706
+ * @returns - true if the first object is a superset of the second
707
+ * @recursive
708
+ */
709
+ static isSuperset(superset, subset) {
710
+ let isSuperset = true;
711
+ // Base case - if the objects are equal, it is a superset
712
+ if (superset === subset) {
713
+ return isSuperset;
714
+ }
715
+ // If the subset isn't an object or array, and doesn't
716
+ // satisfy the base case, it isn't a superset
717
+ try {
718
+ if (Object.keys(subset).length === 0) {
719
+ return !isSuperset;
720
+ }
721
+ }
722
+ // If the subset is null or undefined, and doesn't satisfy
723
+ // the base case, it isn't a superset
724
+ // TODO: Check if other exceptions could occur
725
+ catch (e) {
726
+ return !isSuperset;
727
+ }
728
+ // If the children of the subset are subsets of the
729
+ // respective children of the superset, it is a superset
730
+ Object.keys(subset).forEach(key => {
731
+ isSuperset = isSuperset && mintObject.isSuperset(superset[key], subset[key]);
732
+ });
733
+ return isSuperset;
734
+ }
735
+ /**
736
+ * Removes object entries by key
737
+ * @alias mintObject.removeKeys
738
+ * @param object - the object to remove entries from
739
+ * @param keys - the keys to remove
740
+ */
741
+ static remove(object, keys) {
742
+ return this.removeKeys(object, keys);
743
+ }
744
+ /**
745
+ * Removes object entries by key
746
+ * @param object - the object to remove entries from
747
+ * @param keys - the keys to remove
748
+ */
749
+ static removeKeys(object, keys) {
750
+ return Object.keys(object).reduce((obj, key) => {
751
+ if (!keys.includes(key)) {
752
+ obj[key] = object[key];
753
+ }
754
+ return obj;
755
+ }, {});
756
+ }
757
+ /**
758
+ * Removes object entries by value
759
+ */
760
+ static removeValues(object, values) {
761
+ return Object.keys(object).reduce((obj, key) => {
762
+ if (!values.includes(object[key])) {
763
+ obj[key] = object[key];
764
+ }
765
+ return obj;
766
+ }, {});
767
+ }
768
+ /**
769
+ * Sorts an object's entries alphabetically by key
770
+ */
771
+ static sort(object) {
772
+ return Object.keys(object).sort().reduce((obj, key) => {
773
+ obj[key] = object[key];
774
+ return obj;
775
+ }, {});
776
+ }
777
+ /**
778
+ * @alias mintObject.filterKeys
779
+ */
780
+ static filter(object, keys) {
781
+ return this.filterKeys(object, keys);
782
+ }
783
+ /**
784
+ * Filters an object by its keys
785
+ * @param object - the object to filter
786
+ * @param keys - the keys to keep
787
+ * @returns - the filtered object
788
+ */
789
+ static filterKeys(object, keys) {
790
+ return keys.reduce((obj, key) => {
791
+ obj[key] = object[key];
792
+ return obj;
793
+ }, {});
794
+ }
795
+ /**
796
+ * Filters an object by its values
797
+ * @param object - the object to filter
798
+ * @param values - the values to keep
799
+ * @returns - the filtered object
800
+ */
801
+ static filterValues(object, values) {
802
+ return Object.keys(object).reduce((obj, key) => {
803
+ if (values.includes(object[key])) {
804
+ obj[key] = object[key];
805
+ }
806
+ return obj;
807
+ }, {});
808
+ }
809
+ }
810
+ exports.mintObject = mintObject;
811
+ ;
812
+ exports["default"] = mintObject;
813
+
814
+ /***/ }),
815
+
816
+ /***/ "./src/ts/imports/util/selectors.ts":
817
+ /*!******************************************!*\
818
+ !*** ./src/ts/imports/util/selectors.ts ***!
819
+ \******************************************/
820
+ /***/ ((__unused_webpack_module, exports) => {
821
+
822
+
823
+
824
+ var _a;
825
+ Object.defineProperty(exports, "__esModule", ({
826
+ value: true
827
+ }));
828
+ exports.mintSelectors = void 0;
829
+ /**
830
+ * CSS-selector helpers
831
+ * @public
832
+ */
833
+ class mintSelectors {
834
+ /**
835
+ * Adds the library prefix to the beginning of the provided string
836
+ * @param base - the string to be prefixed
837
+ * @returns - the provided string prefixed with the library name
838
+ */
839
+ static prefix(base) {
840
+ base = base.toLowerCase();
841
+ return base.startsWith(this.pre) ? base : `${this.pre}${base}`;
842
+ }
843
+ /**
844
+ * Adds two dashes to the beginning of the provided string
845
+ * @param base - the string to be prefixed
846
+ * @returns - the provided string prefixed with two dashes
847
+ */
848
+ static cssPrefix(base) {
849
+ return `--${this.prefix(base.replace(/^-+/, ''))}`;
850
+ }
851
+ /**
852
+ * Turns the provided string into a CSS variable call
853
+ * @param base - the name of the CSS variable to call
854
+ * @returns - the CSS variable call for the provided string
855
+ */
856
+ static cssVar(base) {
857
+ return `var(${this.cssPrefix(base)})`;
858
+ }
859
+ /**
860
+ * Negates the provided CSS selector
861
+ * @param base - the CSS selector to negate
862
+ * @returns - the negated CSS selector
863
+ */
864
+ static neg(base) {
865
+ return `:not(${base})`;
866
+ }
867
+ /**
868
+ * Generates a class CSS selector
869
+ * @param base - the name of the class to generate
870
+ * @returns - the generated CSS selector
871
+ */
872
+ static class(base) {
873
+ return `.${this.prefix(base)}`;
874
+ }
875
+ /**
876
+ * Generates an id CSS selector
877
+ * @param base - the name of the id to generate
878
+ * @returns - the generated CSS selector
879
+ */
880
+ static id(base) {
881
+ return `#${this.prefix(base)}`;
882
+ }
883
+ /**
884
+ * Generates an aria-controls CSS selector
885
+ * @param id - the id of the controlled element
886
+ * @returns - the generated CSS selector
887
+ */
888
+ static controls(id) {
889
+ return id ? `[aria-controls="${this.prefix(id)}"]` : this.hasControls;
890
+ }
891
+ /**
892
+ * Generates an aria-expanded CSS selector
893
+ * @param bool - whether the element is expanded or not
894
+ * @returns - the generated CSS selector
895
+ */
896
+ static expanded(bool) {
897
+ return typeof bool === 'boolean' ? `[aria-expanded="${bool}"]` : this.hasExpanded;
898
+ }
899
+ /**
900
+ * Returns the id of the requested element
901
+ */
902
+ static getId(id) {
903
+ var _b;
904
+ return (_b = this.ids[id !== null && id !== void 0 ? id : -1]) !== null && _b !== void 0 ? _b : '';
905
+ }
906
+ /**
907
+ * Returns the class of the requested element
908
+ */
909
+ static getClass(className, classGroup) {
910
+ var _b, _c;
911
+ if (classGroup) {
912
+ let group = this.classes[classGroup];
913
+ return (_b = group[className !== null && className !== void 0 ? className : -1]) !== null && _b !== void 0 ? _b : '';
914
+ }
915
+ return (_c = this.classes[className !== null && className !== void 0 ? className : -1]) !== null && _c !== void 0 ? _c : '';
916
+ }
917
+ /**
918
+ * Returns a NodeList of HTMLElements within the given element that are focusable
919
+ * @param el - the element whose focusable children will be returned
920
+ * @returns - the elements within the given element that are focusable
921
+ */
922
+ static getFocusables(el) {
923
+ let focusables;
924
+ if (el) {
925
+ focusables = [...el.querySelectorAll(this.focusable)];
926
+ } else {
927
+ focusables = [...document.querySelectorAll(this.focusable)];
928
+ }
929
+ return focusables.filter(el => this.isFocusable(el));
930
+ }
931
+ /**
932
+ * Returns true if an element is focusable and false if not,
933
+ * based on styles (i.e. a parent has display: none;)
934
+ * NOTE: Still need to determine what other styles may make an element un-focusable
935
+ * @param el - the element
936
+ * @returns - true if the element is focusable; false if not
937
+ */
938
+ static isFocusable(el) {
939
+ let current = el;
940
+ do {
941
+ if (window.getComputedStyle(current).getPropertyValue('display').toLowerCase() === 'none') {
942
+ return false;
943
+ }
944
+ current = current.parentElement;
945
+ } while (current);
946
+ return true;
947
+ }
948
+ }
949
+ exports.mintSelectors = mintSelectors;
950
+ _a = mintSelectors;
951
+ /**
952
+ * The library name that will be added as a prefix
953
+ */
954
+ mintSelectors.lib = 'mint';
955
+ /**
956
+ * The prefix built from the library name
957
+ */
958
+ mintSelectors.pre = `${_a.lib}-`;
959
+ /**
960
+ * CSS-selector for disabled elements
961
+ */
962
+ mintSelectors.disabled = '[disabled]';
963
+ /**
964
+ * CSS-selector for elements with an aria-controls attribute
965
+ */
966
+ mintSelectors.hasControls = '[aria-controls]';
967
+ /**
968
+ * CSS-selector for elements with an aria-expanded attribute
969
+ */
970
+ mintSelectors.hasExpanded = '[aria-expanded]';
971
+ /**
972
+ * CSS-selector for elements with an href attribute
973
+ */
974
+ mintSelectors.hasLink = '[href]';
975
+ /**
976
+ * CSS-selector for elements with a routerLink attribute
977
+ */
978
+ mintSelectors.hasRouterLink = '[routerLink]';
979
+ /**
980
+ * CSS-selector for elements with an id attribute
981
+ */
982
+ mintSelectors.hasId = '[id]';
983
+ /**
984
+ * CSS-selector for elements that aren't tabbable (i.e. tabindex is negative)
985
+ */
986
+ mintSelectors.notTabbable = '[tabindex^="-"]';
987
+ /**
988
+ * CSS-selector for elements that are tabbable (i.e. tabindex isn't negative)
989
+ */
990
+ mintSelectors.tabbable = `[tabindex]${_a.neg(_a.notTabbable)}`;
991
+ /**
992
+ * CSS-selector for elements that can receive focus
993
+ */
994
+ mintSelectors.focusable = `input${_a.neg(_a.disabled)}${_a.neg(_a.notTabbable)},
995
+ select${_a.neg(_a.disabled)}${_a.neg(_a.notTabbable)},
996
+ textarea${_a.neg(_a.disabled)}${_a.neg(_a.notTabbable)},
997
+ button${_a.neg(_a.disabled)}${_a.neg(_a.notTabbable)},
998
+ object${_a.neg(_a.disabled)}${_a.neg(_a.notTabbable)},
999
+ a${_a.hasLink}, a${_a.hasRouterLink},
1000
+ area${_a.hasLink},
1001
+ ${_a.tabbable}`.replace(/\s/g, '');
1002
+ /**
1003
+ * CSS-selector for submenu buttons
1004
+ */
1005
+ mintSelectors.subMenuButtons = `button${_a.hasControls}`;
1006
+ /**
1007
+ * CSS-selector for submenus
1008
+ */
1009
+ mintSelectors.subMenu = `${_a.subMenuButtons} + ul${_a.hasId}`;
1010
+ /**
1011
+ * Frequently-used ids
1012
+ */
1013
+ mintSelectors.ids = {
1014
+ header: _a.prefix('header'),
1015
+ logo: _a.prefix('logo'),
1016
+ wrapper: _a.prefix('wrapper'),
1017
+ mainContent: _a.prefix('main-content')
1018
+ };
1019
+ /**
1020
+ * Classes
1021
+ */
1022
+ mintSelectors.classes = {
1023
+ sides: {
1024
+ top: _a.prefix('top'),
1025
+ right: _a.prefix('right'),
1026
+ bottom: _a.prefix('bottom'),
1027
+ left: _a.prefix('left')
1028
+ },
1029
+ srOnly: _a.prefix('sr-only'),
1030
+ js: _a.prefix('js'),
1031
+ ready: _a.prefix('ready'),
1032
+ fixed: _a.prefix('fixed'),
1033
+ open: _a.prefix('open')
1034
+ };
1035
+ exports["default"] = mintSelectors;
1036
+
1037
+ /***/ }),
1038
+
1039
+ /***/ "./src/ts/imports/util/settings.ts":
1040
+ /*!*****************************************!*\
1041
+ !*** ./src/ts/imports/util/settings.ts ***!
1042
+ \*****************************************/
1043
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1044
+
1045
+
1046
+
1047
+ var _a;
1048
+ Object.defineProperty(exports, "__esModule", ({
1049
+ value: true
1050
+ }));
1051
+ exports.mintSettings = void 0;
1052
+ /**
1053
+ * Imports
1054
+ */
1055
+ const enum_1 = __webpack_require__(/*! ../enum */ "./src/ts/imports/enum.ts");
1056
+ const selectors_1 = __webpack_require__(/*! ./selectors */ "./src/ts/imports/util/selectors.ts");
1057
+ /**
1058
+ * Settings management
1059
+ * @public
1060
+ */
1061
+ class mintSettings {
1062
+ /**
1063
+ * Update the provided settings variables
1064
+ * @param settings - Object of settings variables to update
1065
+ */
1066
+ static set(settings) {
1067
+ let newDelay = false;
1068
+ if (typeof settings.delayBase === 'number') {
1069
+ this.delayBase = settings.delayBase;
1070
+ newDelay = true;
1071
+ }
1072
+ if (typeof settings.delayStep === 'number') {
1073
+ this.delayStep = settings.delayStep;
1074
+ newDelay = true;
1075
+ }
1076
+ if (newDelay) {
1077
+ this.setDelay();
1078
+ }
1079
+ if (settings.delay && Object.keys(settings.delay).length) {
1080
+ if (Object.values(settings.delay).reduce((prev, next) => prev && typeof next === 'number', true)) {
1081
+ this.delay = Object.assign(Object.assign({}, this.delay), settings.delay);
1082
+ }
1083
+ }
1084
+ }
1085
+ /**
1086
+ * Updates the delay variables based on `this.delayBase` and `this.delayStep`
1087
+ */
1088
+ static setDelay() {
1089
+ this.delay = {
1090
+ instant: this.delayBase + this.delayStep * 0,
1091
+ fast: this.delayBase + this.delayStep * 1,
1092
+ medFast: this.delayBase + this.delayStep * 2,
1093
+ default: this.delayBase + this.delayStep * 3,
1094
+ medSlow: this.delayBase + this.delayStep * 4,
1095
+ slow: this.delayBase + this.delayStep * 5
1096
+ };
1097
+ }
1098
+ /**
1099
+ * Updates the direction the navbar enters from
1100
+ */
1101
+ static setFrom(from) {
1102
+ if (this.from !== from) {
1103
+ this.from = from;
1104
+ let header = document.getElementById(selectors_1.mintSelectors.getId('header'));
1105
+ header === null || header === void 0 ? void 0 : header.classList.remove(...Object.values(selectors_1.mintSelectors.classes.sides));
1106
+ header === null || header === void 0 ? void 0 : header.classList.add(selectors_1.mintSelectors.getClass(enum_1.mintSide[this.from].toLowerCase(), 'sides'));
1107
+ }
1108
+ }
1109
+ /**
1110
+ * Updates whether or not the navbar is fixed
1111
+ */
1112
+ static setFixed(fixed) {
1113
+ if (this.fixed !== fixed) {
1114
+ this.fixed = fixed;
1115
+ let header = document.getElementById(selectors_1.mintSelectors.getId('header')),
1116
+ fixedClass = selectors_1.mintSelectors.getClass('fixed');
1117
+ if (this.fixed) {
1118
+ header === null || header === void 0 ? void 0 : header.classList.add(fixedClass);
1119
+ } else {
1120
+ header === null || header === void 0 ? void 0 : header.classList.remove(fixedClass);
1121
+ }
1122
+ }
1123
+ }
1124
+ }
1125
+ exports.mintSettings = mintSettings;
1126
+ _a = mintSettings;
1127
+ /**
1128
+ * Value added to all delay variables
1129
+ */
1130
+ mintSettings.delayBase = 0;
1131
+ /**
1132
+ * Value multiplied by delay variable index
1133
+ */
1134
+ mintSettings.delayStep = 100;
1135
+ /**
1136
+ * Delay variables
1137
+ */
1138
+ mintSettings.delay = {
1139
+ instant: _a.delayBase + _a.delayStep * 0,
1140
+ fast: _a.delayBase + _a.delayStep * 1,
1141
+ medFast: _a.delayBase + _a.delayStep * 2,
1142
+ default: _a.delayBase + _a.delayStep * 3,
1143
+ medSlow: _a.delayBase + _a.delayStep * 4,
1144
+ slow: _a.delayBase + _a.delayStep * 5
1145
+ };
1146
+ ;
1147
+ exports["default"] = mintSettings;
1148
+
1149
+ /***/ }),
1150
+
1151
+ /***/ "./src/ts/imports/util/text.ts":
1152
+ /*!*************************************!*\
1153
+ !*** ./src/ts/imports/util/text.ts ***!
1154
+ \*************************************/
1155
+ /***/ ((__unused_webpack_module, exports) => {
1156
+
1157
+
1158
+
1159
+ Object.defineProperty(exports, "__esModule", ({
1160
+ value: true
1161
+ }));
1162
+ exports.mintText = void 0;
1163
+ /**
1164
+ * Functions for analyzing and manipulating text.
1165
+ */
1166
+ class mintText {}
1167
+ exports.mintText = mintText;
1168
+ ;
1169
+ exports["default"] = mintText;
1170
+
1171
+ /***/ }),
1172
+
1173
+ /***/ "./src/ts/imports/util/window.ts":
1174
+ /*!***************************************!*\
1175
+ !*** ./src/ts/imports/util/window.ts ***!
1176
+ \***************************************/
1177
+ /***/ ((__unused_webpack_module, exports) => {
1178
+
1179
+
1180
+
1181
+ Object.defineProperty(exports, "__esModule", ({
1182
+ value: true
1183
+ }));
1184
+ exports.mintWindow = void 0;
1185
+ /**
1186
+ * Functions related to the browser window.
1187
+ */
1188
+ class mintWindow {}
1189
+ exports.mintWindow = mintWindow;
1190
+ ;
1191
+ exports["default"] = mintWindow;
1192
+
1193
+ /***/ }),
1194
+
1195
+ /***/ "./src/ts/index.ts":
68
1196
  /*!*************************!*\
69
1197
  !*** ./src/ts/index.ts ***!
70
1198
  \*************************/
1199
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
1200
+
71
1201
 
72
1202
 
73
1203
  /**
74
- * Exports
1204
+ * A library for building responsive web applications.
1205
+ *
1206
+ * @packageDocumentation
75
1207
  */
1208
+ var __importDefault = this && this.__importDefault || function (mod) {
1209
+ return mod && mod.__esModule ? mod : {
1210
+ "default": mod
1211
+ };
1212
+ };
76
1213
  Object.defineProperty(exports, "__esModule", ({
77
1214
  value: true
78
1215
  }));
79
- exports.mintSide = exports.mintWindow = exports.mintText = exports.mintObject = exports.mintEvent = exports.mintDisplay = exports.mintColor = exports.mintSettings = exports.mintSelectors = exports.mintUtil = exports.n4vSettings = exports.n4vSelectors = exports.n4vBar = void 0;
80
- // Forward n4v
81
- var n4v_1 = __webpack_require__(/*! @appartmint/n4v */ "./node_modules/@appartmint/n4v/dist/js/index.min.js");
82
- Object.defineProperty(exports, "n4vBar", ({
1216
+ exports["default"] = exports.mintUtil = exports.mintSettings = exports.mintSelectors = exports.mintWindow = exports.mintText = exports.mintObject = exports.mintMath = exports.mintIcon = exports.mintEvent = exports.mintDisplay = exports.mintItem = exports.mintColor = exports.mintHeader = exports.mintSide = void 0;
1217
+ /**
1218
+ * Exports
1219
+ */
1220
+ // Enums
1221
+ var enum_1 = __webpack_require__(/*! ./imports/enum */ "./src/ts/imports/enum.ts");
1222
+ Object.defineProperty(exports, "mintSide", ({
83
1223
  enumerable: true,
84
1224
  get: function () {
85
- return n4v_1.n4vBar;
1225
+ return enum_1.mintSide;
86
1226
  }
87
1227
  }));
88
- Object.defineProperty(exports, "n4vSelectors", ({
1228
+ // Components
1229
+ var header_1 = __webpack_require__(/*! ./imports/components/header */ "./src/ts/imports/components/header.ts");
1230
+ Object.defineProperty(exports, "mintHeader", ({
89
1231
  enumerable: true,
90
1232
  get: function () {
91
- return n4v_1.n4vSelectors;
1233
+ return header_1.mintHeader;
92
1234
  }
93
1235
  }));
94
- Object.defineProperty(exports, "n4vSettings", ({
1236
+ // Models
1237
+ var color_1 = __webpack_require__(/*! ./imports/models/color */ "./src/ts/imports/models/color.ts");
1238
+ Object.defineProperty(exports, "mintColor", ({
95
1239
  enumerable: true,
96
1240
  get: function () {
97
- return n4v_1.n4vSettings;
1241
+ return color_1.mintColor;
98
1242
  }
99
1243
  }));
100
- // Forward util
101
- var util_1 = __webpack_require__(/*! @appartmint/util */ "./node_modules/@appartmint/util/dist/js/index.min.js");
102
- Object.defineProperty(exports, "mintUtil", ({
1244
+ var item_1 = __webpack_require__(/*! ./imports/models/item */ "./src/ts/imports/models/item.ts");
1245
+ Object.defineProperty(exports, "mintItem", ({
103
1246
  enumerable: true,
104
1247
  get: function () {
105
- return util_1.mintUtil;
1248
+ return item_1.mintItem;
106
1249
  }
107
1250
  }));
108
- Object.defineProperty(exports, "mintSelectors", ({
1251
+ // Utilities
1252
+ var display_1 = __webpack_require__(/*! ./imports/util/display */ "./src/ts/imports/util/display.ts");
1253
+ Object.defineProperty(exports, "mintDisplay", ({
109
1254
  enumerable: true,
110
1255
  get: function () {
111
- return util_1.mintSelectors;
1256
+ return display_1.mintDisplay;
112
1257
  }
113
1258
  }));
114
- Object.defineProperty(exports, "mintSettings", ({
1259
+ var event_1 = __webpack_require__(/*! ./imports/util/event */ "./src/ts/imports/util/event.ts");
1260
+ Object.defineProperty(exports, "mintEvent", ({
115
1261
  enumerable: true,
116
1262
  get: function () {
117
- return util_1.mintSettings;
1263
+ return event_1.mintEvent;
118
1264
  }
119
1265
  }));
120
- Object.defineProperty(exports, "mintColor", ({
1266
+ var icon_1 = __webpack_require__(/*! ./imports/util/icon */ "./src/ts/imports/util/icon.ts");
1267
+ Object.defineProperty(exports, "mintIcon", ({
121
1268
  enumerable: true,
122
1269
  get: function () {
123
- return util_1.mintColor;
1270
+ return icon_1.mintIcon;
124
1271
  }
125
1272
  }));
126
- Object.defineProperty(exports, "mintDisplay", ({
1273
+ var math_1 = __webpack_require__(/*! ./imports/util/math */ "./src/ts/imports/util/math.ts");
1274
+ Object.defineProperty(exports, "mintMath", ({
127
1275
  enumerable: true,
128
1276
  get: function () {
129
- return util_1.mintDisplay;
1277
+ return math_1.mintMath;
130
1278
  }
131
1279
  }));
132
- Object.defineProperty(exports, "mintEvent", ({
1280
+ var object_1 = __webpack_require__(/*! ./imports/util/object */ "./src/ts/imports/util/object.ts");
1281
+ Object.defineProperty(exports, "mintObject", ({
133
1282
  enumerable: true,
134
1283
  get: function () {
135
- return util_1.mintEvent;
1284
+ return object_1.mintObject;
136
1285
  }
137
1286
  }));
138
- Object.defineProperty(exports, "mintObject", ({
1287
+ var text_1 = __webpack_require__(/*! ./imports/util/text */ "./src/ts/imports/util/text.ts");
1288
+ Object.defineProperty(exports, "mintText", ({
139
1289
  enumerable: true,
140
1290
  get: function () {
141
- return util_1.mintObject;
1291
+ return text_1.mintText;
142
1292
  }
143
1293
  }));
144
- Object.defineProperty(exports, "mintText", ({
1294
+ var window_1 = __webpack_require__(/*! ./imports/util/window */ "./src/ts/imports/util/window.ts");
1295
+ Object.defineProperty(exports, "mintWindow", ({
145
1296
  enumerable: true,
146
1297
  get: function () {
147
- return util_1.mintText;
1298
+ return window_1.mintWindow;
148
1299
  }
149
1300
  }));
150
- Object.defineProperty(exports, "mintWindow", ({
1301
+ // Objects
1302
+ var selectors_1 = __webpack_require__(/*! ./imports/util/selectors */ "./src/ts/imports/util/selectors.ts");
1303
+ Object.defineProperty(exports, "mintSelectors", ({
151
1304
  enumerable: true,
152
1305
  get: function () {
153
- return util_1.mintWindow;
1306
+ return selectors_1.mintSelectors;
154
1307
  }
155
1308
  }));
156
- Object.defineProperty(exports, "mintSide", ({
1309
+ var settings_1 = __webpack_require__(/*! ./imports/util/settings */ "./src/ts/imports/util/settings.ts");
1310
+ Object.defineProperty(exports, "mintSettings", ({
1311
+ enumerable: true,
1312
+ get: function () {
1313
+ return settings_1.mintSettings;
1314
+ }
1315
+ }));
1316
+ var util_1 = __webpack_require__(/*! ./util */ "./src/ts/util.ts");
1317
+ Object.defineProperty(exports, "mintUtil", ({
1318
+ enumerable: true,
1319
+ get: function () {
1320
+ return util_1.mintUtil;
1321
+ }
1322
+ }));
1323
+ Object.defineProperty(exports, "default", ({
157
1324
  enumerable: true,
158
1325
  get: function () {
159
- return util_1.mintSide;
1326
+ return __importDefault(util_1).default;
160
1327
  }
161
1328
  }));
162
- })();
163
1329
 
1330
+ /***/ }),
1331
+
1332
+ /***/ "./src/ts/util.ts":
1333
+ /*!************************!*\
1334
+ !*** ./src/ts/util.ts ***!
1335
+ \************************/
1336
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
1337
+
1338
+
1339
+
1340
+ var __importDefault = this && this.__importDefault || function (mod) {
1341
+ return mod && mod.__esModule ? mod : {
1342
+ "default": mod
1343
+ };
1344
+ };
1345
+ Object.defineProperty(exports, "__esModule", ({
1346
+ value: true
1347
+ }));
1348
+ exports.mintUtil = void 0;
1349
+ /**
1350
+ * Imports
1351
+ */
1352
+ const enum_1 = __webpack_require__(/*! ./imports/enum */ "./src/ts/imports/enum.ts");
1353
+ const settings_1 = __importDefault(__webpack_require__(/*! ./imports/util/settings */ "./src/ts/imports/util/settings.ts"));
1354
+ /**
1355
+ * Utility functions
1356
+ * @public
1357
+ */
1358
+ class mintUtil {
1359
+ /**
1360
+ * Returns the width of the window, including fractional pixels
1361
+ * @returns the width of the window
1362
+ */
1363
+ static windowWidth() {
1364
+ let body = document.getElementsByTagName('body')[0],
1365
+ decimal = body.getBoundingClientRect().width % 1;
1366
+ return window.innerWidth + decimal;
1367
+ }
1368
+ /**
1369
+ * Ensures that a function `func` is run only after not being called for `wait` milliseconds
1370
+ * @param func - the function to debounce
1371
+ * @param wait - the amount of time to wait before running the function
1372
+ * @returns - the debounced function
1373
+ */
1374
+ static debounce(func) {
1375
+ let wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : settings_1.default.delay.default;
1376
+ let timer;
1377
+ return function (e) {
1378
+ if (timer) {
1379
+ clearTimeout(timer);
1380
+ }
1381
+ timer = setTimeout(func, wait, e);
1382
+ };
1383
+ }
1384
+ /**
1385
+ * Ensures that a function `func` is run only after not being called for `wait` milliseconds
1386
+ * @param func - the function to debounce
1387
+ * @param wait - the amount of time to wait before running the function
1388
+ * @returns - the debounced function as an EventListener
1389
+ */
1390
+ static debounceEvent(func) {
1391
+ let wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : settings_1.default.delay.default;
1392
+ return mintUtil.debounce(func, wait);
1393
+ }
1394
+ /**
1395
+ * Ensures that a function `func` is called at most every `wait` milliseconds with optional leading and trailing calls
1396
+ * @param func - the function to throttle
1397
+ * @param wait - the amount of time between function calls
1398
+ * @param options - leading and trailing options: default = \{ leading: true, trailing, true \}
1399
+ * @returns - the throttled function
1400
+ */
1401
+ static throttle(func) {
1402
+ let wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : settings_1.default.delay.default;
1403
+ let options = arguments.length > 2 ? arguments[2] : undefined;
1404
+ let context,
1405
+ args,
1406
+ result,
1407
+ timeout,
1408
+ previous = 0,
1409
+ later = function () {
1410
+ previous = (options === null || options === void 0 ? void 0 : options.leading) === false ? 0 : new Date().getTime();
1411
+ timeout = 0;
1412
+ result = func.apply(context, args);
1413
+ if (!timeout) {
1414
+ context = args = null;
1415
+ }
1416
+ },
1417
+ throttled = function () {
1418
+ let now = new Date().getTime();
1419
+ if (!previous && (options === null || options === void 0 ? void 0 : options.leading) === false) {
1420
+ previous = now;
1421
+ }
1422
+ let remaining = wait - now + previous;
1423
+ context = this;
1424
+ args = arguments;
1425
+ if (remaining <= 0 || remaining > wait) {
1426
+ if (timeout) {
1427
+ clearTimeout(timeout);
1428
+ timeout = 0;
1429
+ }
1430
+ previous = now;
1431
+ result = func.apply(context, args);
1432
+ if (!timeout) {
1433
+ context = args = null;
1434
+ }
1435
+ } else if (!timeout && (options === null || options === void 0 ? void 0 : options.trailing) !== false) {
1436
+ timeout = window.setTimeout(later, remaining);
1437
+ }
1438
+ return result;
1439
+ };
1440
+ return throttled;
1441
+ }
1442
+ /**
1443
+ * Ensures that a function `func` is called at most every `wait` milliseconds with optional leading and trailing calls
1444
+ * @param func - the function to throttle
1445
+ * @param wait - the amount of time between function calls
1446
+ * @param options - leading and trailing options: default = \{ leading: true, trailing, true \}
1447
+ * @returns - the throttled function as an EventListener
1448
+ */
1449
+ static throttleEvent(func) {
1450
+ let wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : settings_1.default.delay.default;
1451
+ let options = arguments.length > 2 ? arguments[2] : undefined;
1452
+ return mintUtil.throttle(func, wait, options);
1453
+ }
1454
+ /**
1455
+ * Sets the element's height to its `innerHeight`, then to `auto` after a delay
1456
+ * @param el - the element whose height will be set
1457
+ * @param delay - the amount of time in milliseconds that the show animation will be active
1458
+ * @param from - the side that the element is animating from
1459
+ */
1460
+ static show(el) {
1461
+ let delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : settings_1.default.delay.default;
1462
+ let from = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : enum_1.mintSide.Top;
1463
+ if (el) {
1464
+ el.style.display = '';
1465
+ requestAnimationFrame(() => {
1466
+ if (from === enum_1.mintSide.Top || from === enum_1.mintSide.Bottom) {
1467
+ el.style.height = `${el.scrollHeight}px`;
1468
+ } else {
1469
+ el.style.width = `${el.scrollWidth}px`;
1470
+ }
1471
+ setTimeout(() => {
1472
+ if (from === enum_1.mintSide.Top || from === enum_1.mintSide.Bottom) {
1473
+ el.style.height = 'auto';
1474
+ } else {
1475
+ el.style.width = 'auto';
1476
+ }
1477
+ }, delay);
1478
+ });
1479
+ }
1480
+ }
1481
+ /**
1482
+ * Sets the element's height to 0
1483
+ * @param el - the element whose height will be set
1484
+ * @param delay - the amount of time in milliseconds that the show animation will be active
1485
+ * @param from - the side that the element is animating from
1486
+ */
1487
+ static hide(el) {
1488
+ let delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : settings_1.default.delay.default;
1489
+ let from = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : enum_1.mintSide.Top;
1490
+ if (el) {
1491
+ let height = el.scrollHeight,
1492
+ width = el.scrollWidth,
1493
+ transition = el.style.transition;
1494
+ el.style.transition = '';
1495
+ requestAnimationFrame(() => {
1496
+ if (from === enum_1.mintSide.Top || from === enum_1.mintSide.Bottom) {
1497
+ el.style.height = `${height}px`;
1498
+ } else {
1499
+ el.style.width = `${width}px`;
1500
+ }
1501
+ el.style.transition = transition;
1502
+ requestAnimationFrame(() => {
1503
+ if (from === enum_1.mintSide.Top || from === enum_1.mintSide.Bottom) {
1504
+ el.style.height = '0';
1505
+ } else {
1506
+ el.style.width = '0';
1507
+ }
1508
+ });
1509
+ });
1510
+ setTimeout(() => {
1511
+ el.style.display = 'none';
1512
+ }, delay);
1513
+ }
1514
+ }
1515
+ /**
1516
+ * Copies the provided text to the clipboard
1517
+ * @param text - the text to copy
1518
+ * @returns - true if the text was successfully copied to the clipboard; else false
1519
+ */
1520
+ static copyText(text) {
1521
+ let textArea = document.createElement('textarea');
1522
+ if (!text || !textArea) {
1523
+ return false;
1524
+ }
1525
+ textArea.value = text;
1526
+ textArea.style.cssText = `
1527
+ position: fixed;
1528
+ top: 0;
1529
+ left: 0;
1530
+ transform: translate(-100%, -100%);
1531
+ opacity: 0;
1532
+ z-index: -1;
1533
+ `;
1534
+ document.body.appendChild(textArea);
1535
+ textArea.select();
1536
+ textArea.setSelectionRange(0, 99999);
1537
+ navigator.clipboard.writeText(textArea.value);
1538
+ document.body.removeChild(textArea);
1539
+ return true;
1540
+ }
1541
+ /**
1542
+ * Tests the validity of an email address
1543
+ * @see {@link https://stackoverflow.com/questions/201323/how-can-i-validate-an-email-address-using-a-regular-expression}
1544
+ * @param text - the string to test
1545
+ * @returns - true if the given string is an email address; false if not
1546
+ */
1547
+ static isEmail(text) {
1548
+ return null !== text.match(/(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/);
1549
+ }
1550
+ }
1551
+ exports.mintUtil = mintUtil;
1552
+ exports["default"] = mintUtil;
1553
+
1554
+ /***/ })
1555
+
1556
+ /******/ });
1557
+ /************************************************************************/
1558
+ /******/ // The module cache
1559
+ /******/ var __webpack_module_cache__ = {};
1560
+ /******/
1561
+ /******/ // The require function
1562
+ /******/ function __webpack_require__(moduleId) {
1563
+ /******/ // Check if module is in cache
1564
+ /******/ var cachedModule = __webpack_module_cache__[moduleId];
1565
+ /******/ if (cachedModule !== undefined) {
1566
+ /******/ return cachedModule.exports;
1567
+ /******/ }
1568
+ /******/ // Create a new module (and put it into the cache)
1569
+ /******/ var module = __webpack_module_cache__[moduleId] = {
1570
+ /******/ // no module.id needed
1571
+ /******/ // no module.loaded needed
1572
+ /******/ exports: {}
1573
+ /******/ };
1574
+ /******/
1575
+ /******/ // Execute the module function
1576
+ /******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
1577
+ /******/
1578
+ /******/ // Return the exports of the module
1579
+ /******/ return module.exports;
1580
+ /******/ }
1581
+ /******/
1582
+ /************************************************************************/
1583
+ /******/
1584
+ /******/ // startup
1585
+ /******/ // Load entry module and return exports
1586
+ /******/ // This entry module is referenced by other modules so it can't be inlined
1587
+ /******/ var __webpack_exports__ = __webpack_require__("./src/ts/index.ts");
1588
+ /******/
164
1589
  /******/ return __webpack_exports__;
165
1590
  /******/ })()
166
1591
  ;