@appartmint/mint 0.8.13 → 0.9.1

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 (61) hide show
  1. package/dist/css/mint.css +258 -18
  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 +29 -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 +1515 -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 +44 -1
  49. package/src/scss/imports/components/_cards.scss +32 -15
  50. package/src/scss/imports/components/_header.scss +196 -0
  51. package/src/scss/imports/components/_image.scss +33 -0
  52. package/src/scss/imports/components/_index.scss +3 -1
  53. package/src/scss/imports/global/_animations.scss +37 -2
  54. package/src/scss/imports/global/_global.scss +5 -1
  55. package/src/scss/imports/global/_text.scss +5 -0
  56. package/src/scss/imports/global/_themes.scss +0 -1
  57. package/src/scss/imports/{_mint.scss → util/_index.scss} +1 -1
  58. package/src/scss/imports/util/_util.scss +746 -0
  59. package/src/scss/noscript.scss +14 -0
  60. package/src/scss/imports/_util.scss +0 -7
  61. /package/src/scss/imports/{_vars.scss → util/_vars.scss} +0 -0
package/dist/js/index.js CHANGED
@@ -9,158 +9,1593 @@
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 if there is not already an icon appended
595
+ */
596
+ static append(icon, selector) {
597
+ let items = document.querySelectorAll(selector);
598
+ items.forEach(item => {
599
+ let iconElement = document.createElement('i');
600
+ iconElement.classList.add(...icon.split(' '));
601
+ if (!item.querySelector('i')) {
602
+ item.appendChild(iconElement);
603
+ }
604
+ });
605
+ }
606
+ /**
607
+ * Updates the icons
608
+ * @param icons - the icons to update
609
+ */
610
+ static update(icons) {
611
+ let activeIcons = object_1.default.removeValues(Object.assign(Object.assign({}, this.icons), icons), [false]);
612
+ Object.keys(activeIcons).forEach(selector => {
613
+ this.append(activeIcons[selector], selector);
614
+ });
615
+ }
616
+ /**
617
+ * Removes the given icon from the given selector
618
+ * @param icon - the icon to remove
619
+ */
620
+ static remove(icon, selector) {
621
+ let items = document.querySelectorAll(selector);
622
+ items.forEach(item => {
623
+ let iconElement = item.querySelector('i');
624
+ if (iconElement) {
625
+ iconElement.remove();
626
+ }
627
+ });
628
+ }
629
+ }
630
+ exports.mintIcon = mintIcon;
631
+ /**
632
+ * Default icons
633
+ */
634
+ mintIcon.icons = {
635
+ 'a[href^="http"]': 'fas fa-up-right-from-square',
636
+ 'a[href^="mailto:"]': 'far fa-envelope',
637
+ 'a[href^="tel:"]': 'fas fa-phone-flip',
638
+ 'a[href^="sms:"]': 'far fa-message'
639
+ };
640
+ ;
641
+ exports["default"] = mintIcon;
642
+
643
+ /***/ }),
644
+
645
+ /***/ "./src/ts/imports/util/math.ts":
646
+ /*!*************************************!*\
647
+ !*** ./src/ts/imports/util/math.ts ***!
648
+ \*************************************/
649
+ /***/ ((__unused_webpack_module, exports) => {
650
+
651
+
652
+
653
+ Object.defineProperty(exports, "__esModule", ({
654
+ value: true
655
+ }));
656
+ exports.mintMath = void 0;
657
+ /**
658
+ * Math functions for the util library
659
+ */
660
+ class mintMath {
661
+ /**
662
+ * Get a random integer between min and max
663
+ * @param max Maximum value to return
664
+ * @param min Minimum value to return (default is 0)
665
+ * @returns a random integer between min and max
666
+ */
667
+ static randomInt(max) {
668
+ let min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
669
+ min = Math.ceil(min);
670
+ max = Math.floor(max);
671
+ return Math.floor(Math.random() * (max - min) + min);
672
+ }
673
+ }
674
+ exports.mintMath = mintMath;
675
+ ;
676
+ exports["default"] = mintMath;
677
+
678
+ /***/ }),
679
+
680
+ /***/ "./src/ts/imports/util/object.ts":
681
+ /*!***************************************!*\
682
+ !*** ./src/ts/imports/util/object.ts ***!
683
+ \***************************************/
684
+ /***/ ((__unused_webpack_module, exports) => {
685
+
686
+
687
+
688
+ Object.defineProperty(exports, "__esModule", ({
689
+ value: true
690
+ }));
691
+ exports.mintObject = void 0;
692
+ /**
693
+ * Object functions for the util library
694
+ */
695
+ class mintObject {
696
+ /**
697
+ * Returns true if the provided objects have the same entries
698
+ */
699
+ static isSimilar(obj1, obj2) {
700
+ let keys = Object.keys(obj1);
701
+ if (keys.length !== Object.keys(obj2).length) {
702
+ return false;
703
+ }
704
+ keys.forEach(key => {
705
+ if (obj1[key] !== obj2[key]) {
706
+ return false;
707
+ }
708
+ });
709
+ return true;
710
+ }
711
+ /**
712
+ * Returns true if the first object has at least the same
713
+ * entries as the second object
714
+ * @param superset - the object to check
715
+ * @param subset - the object whose entries are required
716
+ * @returns - true if the first object is a superset of the second
717
+ * @recursive
718
+ */
719
+ static isSuperset(superset, subset) {
720
+ let isSuperset = true;
721
+ // Base case - if the objects are equal, it is a superset
722
+ if (superset === subset) {
723
+ return isSuperset;
724
+ }
725
+ // If the subset isn't an object or array, and doesn't
726
+ // satisfy the base case, it isn't a superset
727
+ try {
728
+ if (Object.keys(subset).length === 0) {
729
+ return !isSuperset;
730
+ }
731
+ }
732
+ // If the subset is null or undefined, and doesn't satisfy
733
+ // the base case, it isn't a superset
734
+ // TODO: Check if other exceptions could occur
735
+ catch (e) {
736
+ return !isSuperset;
737
+ }
738
+ // If the children of the subset are subsets of the
739
+ // respective children of the superset, it is a superset
740
+ Object.keys(subset).forEach(key => {
741
+ isSuperset = isSuperset && mintObject.isSuperset(superset[key], subset[key]);
742
+ });
743
+ return isSuperset;
744
+ }
745
+ /**
746
+ * Removes object entries by key
747
+ * @alias mintObject.removeKeys
748
+ * @param object - the object to remove entries from
749
+ * @param keys - the keys to remove
750
+ */
751
+ static remove(object, keys) {
752
+ return this.removeKeys(object, keys);
753
+ }
754
+ /**
755
+ * Removes object entries by key
756
+ * @param object - the object to remove entries from
757
+ * @param keys - the keys to remove
758
+ */
759
+ static removeKeys(object, keys) {
760
+ return Object.keys(object).reduce((obj, key) => {
761
+ if (!keys.includes(key)) {
762
+ obj[key] = object[key];
763
+ }
764
+ return obj;
765
+ }, {});
766
+ }
767
+ /**
768
+ * Removes object entries by value
769
+ */
770
+ static removeValues(object, values) {
771
+ return Object.keys(object).reduce((obj, key) => {
772
+ if (!values.includes(object[key])) {
773
+ obj[key] = object[key];
774
+ }
775
+ return obj;
776
+ }, {});
777
+ }
778
+ /**
779
+ * Sorts an object's entries alphabetically by key
780
+ */
781
+ static sort(object) {
782
+ return Object.keys(object).sort().reduce((obj, key) => {
783
+ obj[key] = object[key];
784
+ return obj;
785
+ }, {});
786
+ }
787
+ /**
788
+ * @alias mintObject.filterKeys
789
+ */
790
+ static filter(object, keys) {
791
+ return this.filterKeys(object, keys);
792
+ }
793
+ /**
794
+ * Filters an object by its keys
795
+ * @param object - the object to filter
796
+ * @param keys - the keys to keep
797
+ * @returns - the filtered object
798
+ */
799
+ static filterKeys(object, keys) {
800
+ return keys.reduce((obj, key) => {
801
+ obj[key] = object[key];
802
+ return obj;
803
+ }, {});
804
+ }
805
+ /**
806
+ * Filters an object by its values
807
+ * @param object - the object to filter
808
+ * @param values - the values to keep
809
+ * @returns - the filtered object
810
+ */
811
+ static filterValues(object, values) {
812
+ return Object.keys(object).reduce((obj, key) => {
813
+ if (values.includes(object[key])) {
814
+ obj[key] = object[key];
815
+ }
816
+ return obj;
817
+ }, {});
818
+ }
819
+ }
820
+ exports.mintObject = mintObject;
821
+ ;
822
+ exports["default"] = mintObject;
823
+
824
+ /***/ }),
825
+
826
+ /***/ "./src/ts/imports/util/selectors.ts":
827
+ /*!******************************************!*\
828
+ !*** ./src/ts/imports/util/selectors.ts ***!
829
+ \******************************************/
830
+ /***/ ((__unused_webpack_module, exports) => {
831
+
832
+
833
+
834
+ var _a;
835
+ Object.defineProperty(exports, "__esModule", ({
836
+ value: true
837
+ }));
838
+ exports.mintSelectors = void 0;
839
+ /**
840
+ * CSS-selector helpers
841
+ * @public
842
+ */
843
+ class mintSelectors {
844
+ /**
845
+ * Adds the library prefix to the beginning of the provided string
846
+ * @param base - the string to be prefixed
847
+ * @returns - the provided string prefixed with the library name
848
+ */
849
+ static prefix(base) {
850
+ base = base.toLowerCase();
851
+ return base.startsWith(this.pre) ? base : `${this.pre}${base}`;
852
+ }
853
+ /**
854
+ * Adds two dashes to the beginning of the provided string
855
+ * @param base - the string to be prefixed
856
+ * @returns - the provided string prefixed with two dashes
857
+ */
858
+ static cssPrefix(base) {
859
+ return `--${this.prefix(base.replace(/^-+/, ''))}`;
860
+ }
861
+ /**
862
+ * Turns the provided string into a CSS variable call
863
+ * @param base - the name of the CSS variable to call
864
+ * @returns - the CSS variable call for the provided string
865
+ */
866
+ static cssVar(base) {
867
+ return `var(${this.cssPrefix(base)})`;
868
+ }
869
+ /**
870
+ * Negates the provided CSS selector
871
+ * @param base - the CSS selector to negate
872
+ * @returns - the negated CSS selector
873
+ */
874
+ static neg(base) {
875
+ return `:not(${base})`;
876
+ }
877
+ /**
878
+ * Generates a class CSS selector
879
+ * @param base - the name of the class to generate
880
+ * @returns - the generated CSS selector
881
+ */
882
+ static class(base) {
883
+ return `.${this.prefix(base)}`;
884
+ }
885
+ /**
886
+ * Generates an id CSS selector
887
+ * @param base - the name of the id to generate
888
+ * @returns - the generated CSS selector
889
+ */
890
+ static id(base) {
891
+ return `#${this.prefix(base)}`;
892
+ }
893
+ /**
894
+ * Generates an aria-controls CSS selector
895
+ * @param id - the id of the controlled element
896
+ * @returns - the generated CSS selector
897
+ */
898
+ static controls(id) {
899
+ return id ? `[aria-controls="${this.prefix(id)}"]` : this.hasControls;
900
+ }
901
+ /**
902
+ * Generates an aria-expanded CSS selector
903
+ * @param bool - whether the element is expanded or not
904
+ * @returns - the generated CSS selector
905
+ */
906
+ static expanded(bool) {
907
+ return typeof bool === 'boolean' ? `[aria-expanded="${bool}"]` : this.hasExpanded;
908
+ }
909
+ /**
910
+ * Returns the id of the requested element
911
+ */
912
+ static getId(id) {
913
+ var _b;
914
+ return (_b = this.ids[id !== null && id !== void 0 ? id : -1]) !== null && _b !== void 0 ? _b : '';
915
+ }
916
+ /**
917
+ * Returns the class of the requested element
918
+ */
919
+ static getClass(className, classGroup) {
920
+ var _b, _c;
921
+ if (classGroup) {
922
+ let group = this.classes[classGroup];
923
+ return (_b = group[className !== null && className !== void 0 ? className : -1]) !== null && _b !== void 0 ? _b : '';
924
+ }
925
+ return (_c = this.classes[className !== null && className !== void 0 ? className : -1]) !== null && _c !== void 0 ? _c : '';
926
+ }
927
+ /**
928
+ * Returns a NodeList of HTMLElements within the given element that are focusable
929
+ * @param el - the element whose focusable children will be returned
930
+ * @returns - the elements within the given element that are focusable
931
+ */
932
+ static getFocusables(el) {
933
+ let focusables;
934
+ if (el) {
935
+ focusables = [...el.querySelectorAll(this.focusable)];
936
+ } else {
937
+ focusables = [...document.querySelectorAll(this.focusable)];
938
+ }
939
+ return focusables.filter(el => this.isFocusable(el));
940
+ }
941
+ /**
942
+ * Returns true if an element is focusable and false if not,
943
+ * based on styles (i.e. a parent has display: none;)
944
+ * NOTE: Still need to determine what other styles may make an element un-focusable
945
+ * @param el - the element
946
+ * @returns - true if the element is focusable; false if not
947
+ */
948
+ static isFocusable(el) {
949
+ let current = el;
950
+ do {
951
+ if (window.getComputedStyle(current).getPropertyValue('display').toLowerCase() === 'none') {
952
+ return false;
953
+ }
954
+ current = current.parentElement;
955
+ } while (current);
956
+ return true;
957
+ }
958
+ }
959
+ exports.mintSelectors = mintSelectors;
960
+ _a = mintSelectors;
961
+ /**
962
+ * The library name that will be added as a prefix
963
+ */
964
+ mintSelectors.lib = 'mint';
965
+ /**
966
+ * The prefix built from the library name
967
+ */
968
+ mintSelectors.pre = `${_a.lib}-`;
969
+ /**
970
+ * CSS-selector for disabled elements
971
+ */
972
+ mintSelectors.disabled = '[disabled]';
973
+ /**
974
+ * CSS-selector for elements with an aria-controls attribute
975
+ */
976
+ mintSelectors.hasControls = '[aria-controls]';
977
+ /**
978
+ * CSS-selector for elements with an aria-expanded attribute
979
+ */
980
+ mintSelectors.hasExpanded = '[aria-expanded]';
981
+ /**
982
+ * CSS-selector for elements with an href attribute
983
+ */
984
+ mintSelectors.hasLink = '[href]';
985
+ /**
986
+ * CSS-selector for elements with a routerLink attribute
987
+ */
988
+ mintSelectors.hasRouterLink = '[routerLink]';
989
+ /**
990
+ * CSS-selector for elements with an id attribute
991
+ */
992
+ mintSelectors.hasId = '[id]';
993
+ /**
994
+ * CSS-selector for elements that aren't tabbable (i.e. tabindex is negative)
995
+ */
996
+ mintSelectors.notTabbable = '[tabindex^="-"]';
997
+ /**
998
+ * CSS-selector for elements that are tabbable (i.e. tabindex isn't negative)
999
+ */
1000
+ mintSelectors.tabbable = `[tabindex]${_a.neg(_a.notTabbable)}`;
1001
+ /**
1002
+ * CSS-selector for elements that can receive focus
1003
+ */
1004
+ mintSelectors.focusable = `input${_a.neg(_a.disabled)}${_a.neg(_a.notTabbable)},
1005
+ select${_a.neg(_a.disabled)}${_a.neg(_a.notTabbable)},
1006
+ textarea${_a.neg(_a.disabled)}${_a.neg(_a.notTabbable)},
1007
+ button${_a.neg(_a.disabled)}${_a.neg(_a.notTabbable)},
1008
+ object${_a.neg(_a.disabled)}${_a.neg(_a.notTabbable)},
1009
+ a${_a.hasLink}, a${_a.hasRouterLink},
1010
+ area${_a.hasLink},
1011
+ ${_a.tabbable}`.replace(/\s/g, '');
1012
+ /**
1013
+ * CSS-selector for submenu buttons
1014
+ */
1015
+ mintSelectors.subMenuButtons = `button${_a.hasControls}`;
1016
+ /**
1017
+ * CSS-selector for submenus
1018
+ */
1019
+ mintSelectors.subMenu = `${_a.subMenuButtons} + ul${_a.hasId}`;
1020
+ /**
1021
+ * Frequently-used ids
1022
+ */
1023
+ mintSelectors.ids = {
1024
+ header: _a.prefix('header'),
1025
+ logo: _a.prefix('logo'),
1026
+ wrapper: _a.prefix('wrapper'),
1027
+ mainContent: _a.prefix('main-content')
1028
+ };
1029
+ /**
1030
+ * Classes
1031
+ */
1032
+ mintSelectors.classes = {
1033
+ sides: {
1034
+ top: _a.prefix('top'),
1035
+ right: _a.prefix('right'),
1036
+ bottom: _a.prefix('bottom'),
1037
+ left: _a.prefix('left')
1038
+ },
1039
+ srOnly: _a.prefix('sr-only'),
1040
+ js: _a.prefix('js'),
1041
+ ready: _a.prefix('ready'),
1042
+ fixed: _a.prefix('fixed'),
1043
+ open: _a.prefix('open')
1044
+ };
1045
+ exports["default"] = mintSelectors;
1046
+
1047
+ /***/ }),
1048
+
1049
+ /***/ "./src/ts/imports/util/settings.ts":
1050
+ /*!*****************************************!*\
1051
+ !*** ./src/ts/imports/util/settings.ts ***!
1052
+ \*****************************************/
1053
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
1054
+
1055
+
1056
+
1057
+ var _a;
1058
+ Object.defineProperty(exports, "__esModule", ({
1059
+ value: true
1060
+ }));
1061
+ exports.mintSettings = void 0;
1062
+ /**
1063
+ * Imports
1064
+ */
1065
+ const enum_1 = __webpack_require__(/*! ../enum */ "./src/ts/imports/enum.ts");
1066
+ const selectors_1 = __webpack_require__(/*! ./selectors */ "./src/ts/imports/util/selectors.ts");
1067
+ /**
1068
+ * Settings management
1069
+ * @public
1070
+ */
1071
+ class mintSettings {
1072
+ /**
1073
+ * Update the provided settings variables
1074
+ * @param settings - Object of settings variables to update
1075
+ */
1076
+ static set(settings) {
1077
+ let newDelay = false;
1078
+ if (typeof settings.delayBase === 'number') {
1079
+ this.delayBase = settings.delayBase;
1080
+ newDelay = true;
1081
+ }
1082
+ if (typeof settings.delayStep === 'number') {
1083
+ this.delayStep = settings.delayStep;
1084
+ newDelay = true;
1085
+ }
1086
+ if (newDelay) {
1087
+ this.setDelay();
1088
+ }
1089
+ if (settings.delay && Object.keys(settings.delay).length) {
1090
+ if (Object.values(settings.delay).reduce((prev, next) => prev && typeof next === 'number', true)) {
1091
+ this.delay = Object.assign(Object.assign({}, this.delay), settings.delay);
1092
+ }
1093
+ }
1094
+ }
1095
+ /**
1096
+ * Updates the delay variables based on `this.delayBase` and `this.delayStep`
1097
+ */
1098
+ static setDelay() {
1099
+ this.delay = {
1100
+ instant: this.delayBase + this.delayStep * 0,
1101
+ fast: this.delayBase + this.delayStep * 1,
1102
+ medFast: this.delayBase + this.delayStep * 2,
1103
+ default: this.delayBase + this.delayStep * 3,
1104
+ medSlow: this.delayBase + this.delayStep * 4,
1105
+ slow: this.delayBase + this.delayStep * 5
1106
+ };
1107
+ }
1108
+ /**
1109
+ * Updates the direction the navbar enters from
1110
+ */
1111
+ static setFrom(from) {
1112
+ if (this.from !== from) {
1113
+ this.from = from;
1114
+ let header = document.getElementById(selectors_1.mintSelectors.getId('header'));
1115
+ header === null || header === void 0 ? void 0 : header.classList.remove(...Object.values(selectors_1.mintSelectors.classes.sides));
1116
+ header === null || header === void 0 ? void 0 : header.classList.add(selectors_1.mintSelectors.getClass(enum_1.mintSide[this.from].toLowerCase(), 'sides'));
1117
+ }
1118
+ }
1119
+ /**
1120
+ * Updates whether or not the navbar is fixed
1121
+ */
1122
+ static setFixed(fixed) {
1123
+ if (this.fixed !== fixed) {
1124
+ this.fixed = fixed;
1125
+ let header = document.getElementById(selectors_1.mintSelectors.getId('header')),
1126
+ fixedClass = selectors_1.mintSelectors.getClass('fixed');
1127
+ if (this.fixed) {
1128
+ header === null || header === void 0 ? void 0 : header.classList.add(fixedClass);
1129
+ } else {
1130
+ header === null || header === void 0 ? void 0 : header.classList.remove(fixedClass);
1131
+ }
1132
+ }
1133
+ }
1134
+ }
1135
+ exports.mintSettings = mintSettings;
1136
+ _a = mintSettings;
1137
+ /**
1138
+ * Value added to all delay variables
1139
+ */
1140
+ mintSettings.delayBase = 0;
1141
+ /**
1142
+ * Value multiplied by delay variable index
1143
+ */
1144
+ mintSettings.delayStep = 100;
1145
+ /**
1146
+ * Delay variables
1147
+ */
1148
+ mintSettings.delay = {
1149
+ instant: _a.delayBase + _a.delayStep * 0,
1150
+ fast: _a.delayBase + _a.delayStep * 1,
1151
+ medFast: _a.delayBase + _a.delayStep * 2,
1152
+ default: _a.delayBase + _a.delayStep * 3,
1153
+ medSlow: _a.delayBase + _a.delayStep * 4,
1154
+ slow: _a.delayBase + _a.delayStep * 5
1155
+ };
1156
+ ;
1157
+ exports["default"] = mintSettings;
1158
+
1159
+ /***/ }),
1160
+
1161
+ /***/ "./src/ts/imports/util/text.ts":
1162
+ /*!*************************************!*\
1163
+ !*** ./src/ts/imports/util/text.ts ***!
1164
+ \*************************************/
1165
+ /***/ ((__unused_webpack_module, exports) => {
1166
+
1167
+
1168
+
1169
+ Object.defineProperty(exports, "__esModule", ({
1170
+ value: true
1171
+ }));
1172
+ exports.mintText = void 0;
1173
+ /**
1174
+ * Functions for analyzing and manipulating text.
1175
+ */
1176
+ class mintText {}
1177
+ exports.mintText = mintText;
1178
+ ;
1179
+ exports["default"] = mintText;
1180
+
1181
+ /***/ }),
1182
+
1183
+ /***/ "./src/ts/imports/util/window.ts":
1184
+ /*!***************************************!*\
1185
+ !*** ./src/ts/imports/util/window.ts ***!
1186
+ \***************************************/
1187
+ /***/ ((__unused_webpack_module, exports) => {
1188
+
1189
+
1190
+
1191
+ Object.defineProperty(exports, "__esModule", ({
1192
+ value: true
1193
+ }));
1194
+ exports.mintWindow = void 0;
1195
+ /**
1196
+ * Functions related to the browser window.
1197
+ */
1198
+ class mintWindow {}
1199
+ exports.mintWindow = mintWindow;
1200
+ ;
1201
+ exports["default"] = mintWindow;
1202
+
1203
+ /***/ }),
1204
+
1205
+ /***/ "./src/ts/index.ts":
68
1206
  /*!*************************!*\
69
1207
  !*** ./src/ts/index.ts ***!
70
1208
  \*************************/
1209
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
1210
+
71
1211
 
72
1212
 
73
1213
  /**
74
- * Exports
1214
+ * A library for building responsive web applications.
1215
+ *
1216
+ * @packageDocumentation
75
1217
  */
1218
+ var __importDefault = this && this.__importDefault || function (mod) {
1219
+ return mod && mod.__esModule ? mod : {
1220
+ "default": mod
1221
+ };
1222
+ };
76
1223
  Object.defineProperty(exports, "__esModule", ({
77
1224
  value: true
78
1225
  }));
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", ({
1226
+ 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;
1227
+ /**
1228
+ * Exports
1229
+ */
1230
+ // Enums
1231
+ var enum_1 = __webpack_require__(/*! ./imports/enum */ "./src/ts/imports/enum.ts");
1232
+ Object.defineProperty(exports, "mintSide", ({
83
1233
  enumerable: true,
84
1234
  get: function () {
85
- return n4v_1.n4vBar;
1235
+ return enum_1.mintSide;
86
1236
  }
87
1237
  }));
88
- Object.defineProperty(exports, "n4vSelectors", ({
1238
+ // Components
1239
+ var header_1 = __webpack_require__(/*! ./imports/components/header */ "./src/ts/imports/components/header.ts");
1240
+ Object.defineProperty(exports, "mintHeader", ({
89
1241
  enumerable: true,
90
1242
  get: function () {
91
- return n4v_1.n4vSelectors;
1243
+ return header_1.mintHeader;
92
1244
  }
93
1245
  }));
94
- Object.defineProperty(exports, "n4vSettings", ({
1246
+ // Models
1247
+ var color_1 = __webpack_require__(/*! ./imports/models/color */ "./src/ts/imports/models/color.ts");
1248
+ Object.defineProperty(exports, "mintColor", ({
95
1249
  enumerable: true,
96
1250
  get: function () {
97
- return n4v_1.n4vSettings;
1251
+ return color_1.mintColor;
98
1252
  }
99
1253
  }));
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", ({
1254
+ var item_1 = __webpack_require__(/*! ./imports/models/item */ "./src/ts/imports/models/item.ts");
1255
+ Object.defineProperty(exports, "mintItem", ({
103
1256
  enumerable: true,
104
1257
  get: function () {
105
- return util_1.mintUtil;
1258
+ return item_1.mintItem;
106
1259
  }
107
1260
  }));
108
- Object.defineProperty(exports, "mintSelectors", ({
1261
+ // Utilities
1262
+ var display_1 = __webpack_require__(/*! ./imports/util/display */ "./src/ts/imports/util/display.ts");
1263
+ Object.defineProperty(exports, "mintDisplay", ({
109
1264
  enumerable: true,
110
1265
  get: function () {
111
- return util_1.mintSelectors;
1266
+ return display_1.mintDisplay;
112
1267
  }
113
1268
  }));
114
- Object.defineProperty(exports, "mintSettings", ({
1269
+ var event_1 = __webpack_require__(/*! ./imports/util/event */ "./src/ts/imports/util/event.ts");
1270
+ Object.defineProperty(exports, "mintEvent", ({
115
1271
  enumerable: true,
116
1272
  get: function () {
117
- return util_1.mintSettings;
1273
+ return event_1.mintEvent;
118
1274
  }
119
1275
  }));
120
- Object.defineProperty(exports, "mintColor", ({
1276
+ var icon_1 = __webpack_require__(/*! ./imports/util/icon */ "./src/ts/imports/util/icon.ts");
1277
+ Object.defineProperty(exports, "mintIcon", ({
121
1278
  enumerable: true,
122
1279
  get: function () {
123
- return util_1.mintColor;
1280
+ return icon_1.mintIcon;
124
1281
  }
125
1282
  }));
126
- Object.defineProperty(exports, "mintDisplay", ({
1283
+ var math_1 = __webpack_require__(/*! ./imports/util/math */ "./src/ts/imports/util/math.ts");
1284
+ Object.defineProperty(exports, "mintMath", ({
127
1285
  enumerable: true,
128
1286
  get: function () {
129
- return util_1.mintDisplay;
1287
+ return math_1.mintMath;
130
1288
  }
131
1289
  }));
132
- Object.defineProperty(exports, "mintEvent", ({
1290
+ var object_1 = __webpack_require__(/*! ./imports/util/object */ "./src/ts/imports/util/object.ts");
1291
+ Object.defineProperty(exports, "mintObject", ({
133
1292
  enumerable: true,
134
1293
  get: function () {
135
- return util_1.mintEvent;
1294
+ return object_1.mintObject;
136
1295
  }
137
1296
  }));
138
- Object.defineProperty(exports, "mintObject", ({
1297
+ var text_1 = __webpack_require__(/*! ./imports/util/text */ "./src/ts/imports/util/text.ts");
1298
+ Object.defineProperty(exports, "mintText", ({
139
1299
  enumerable: true,
140
1300
  get: function () {
141
- return util_1.mintObject;
1301
+ return text_1.mintText;
142
1302
  }
143
1303
  }));
144
- Object.defineProperty(exports, "mintText", ({
1304
+ var window_1 = __webpack_require__(/*! ./imports/util/window */ "./src/ts/imports/util/window.ts");
1305
+ Object.defineProperty(exports, "mintWindow", ({
145
1306
  enumerable: true,
146
1307
  get: function () {
147
- return util_1.mintText;
1308
+ return window_1.mintWindow;
148
1309
  }
149
1310
  }));
150
- Object.defineProperty(exports, "mintWindow", ({
1311
+ // Objects
1312
+ var selectors_1 = __webpack_require__(/*! ./imports/util/selectors */ "./src/ts/imports/util/selectors.ts");
1313
+ Object.defineProperty(exports, "mintSelectors", ({
151
1314
  enumerable: true,
152
1315
  get: function () {
153
- return util_1.mintWindow;
1316
+ return selectors_1.mintSelectors;
154
1317
  }
155
1318
  }));
156
- Object.defineProperty(exports, "mintSide", ({
1319
+ var settings_1 = __webpack_require__(/*! ./imports/util/settings */ "./src/ts/imports/util/settings.ts");
1320
+ Object.defineProperty(exports, "mintSettings", ({
1321
+ enumerable: true,
1322
+ get: function () {
1323
+ return settings_1.mintSettings;
1324
+ }
1325
+ }));
1326
+ var util_1 = __webpack_require__(/*! ./util */ "./src/ts/util.ts");
1327
+ Object.defineProperty(exports, "mintUtil", ({
1328
+ enumerable: true,
1329
+ get: function () {
1330
+ return util_1.mintUtil;
1331
+ }
1332
+ }));
1333
+ Object.defineProperty(exports, "default", ({
157
1334
  enumerable: true,
158
1335
  get: function () {
159
- return util_1.mintSide;
1336
+ return __importDefault(util_1).default;
160
1337
  }
161
1338
  }));
162
- })();
163
1339
 
1340
+ /***/ }),
1341
+
1342
+ /***/ "./src/ts/util.ts":
1343
+ /*!************************!*\
1344
+ !*** ./src/ts/util.ts ***!
1345
+ \************************/
1346
+ /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
1347
+
1348
+
1349
+
1350
+ var __importDefault = this && this.__importDefault || function (mod) {
1351
+ return mod && mod.__esModule ? mod : {
1352
+ "default": mod
1353
+ };
1354
+ };
1355
+ Object.defineProperty(exports, "__esModule", ({
1356
+ value: true
1357
+ }));
1358
+ exports.mintUtil = void 0;
1359
+ /**
1360
+ * Imports
1361
+ */
1362
+ const enum_1 = __webpack_require__(/*! ./imports/enum */ "./src/ts/imports/enum.ts");
1363
+ const settings_1 = __importDefault(__webpack_require__(/*! ./imports/util/settings */ "./src/ts/imports/util/settings.ts"));
1364
+ /**
1365
+ * Utility functions
1366
+ * @public
1367
+ */
1368
+ class mintUtil {
1369
+ /**
1370
+ * Returns the width of the window, including fractional pixels
1371
+ * @returns the width of the window
1372
+ */
1373
+ static windowWidth() {
1374
+ let body = document.getElementsByTagName('body')[0],
1375
+ decimal = body.getBoundingClientRect().width % 1;
1376
+ return window.innerWidth + decimal;
1377
+ }
1378
+ /**
1379
+ * Ensures that a function `func` is run only after not being called for `wait` milliseconds
1380
+ * @param func - the function to debounce
1381
+ * @param wait - the amount of time to wait before running the function
1382
+ * @returns - the debounced function
1383
+ */
1384
+ static debounce(func) {
1385
+ let wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : settings_1.default.delay.default;
1386
+ let timer;
1387
+ return function (e) {
1388
+ if (timer) {
1389
+ clearTimeout(timer);
1390
+ }
1391
+ timer = setTimeout(func, wait, e);
1392
+ };
1393
+ }
1394
+ /**
1395
+ * Ensures that a function `func` is run only after not being called for `wait` milliseconds
1396
+ * @param func - the function to debounce
1397
+ * @param wait - the amount of time to wait before running the function
1398
+ * @returns - the debounced function as an EventListener
1399
+ */
1400
+ static debounceEvent(func) {
1401
+ let wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : settings_1.default.delay.default;
1402
+ return mintUtil.debounce(func, wait);
1403
+ }
1404
+ /**
1405
+ * Ensures that a function `func` is called at most every `wait` milliseconds with optional leading and trailing calls
1406
+ * @param func - the function to throttle
1407
+ * @param wait - the amount of time between function calls
1408
+ * @param options - leading and trailing options: default = \{ leading: true, trailing, true \}
1409
+ * @returns - the throttled function
1410
+ */
1411
+ static throttle(func) {
1412
+ let wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : settings_1.default.delay.default;
1413
+ let options = arguments.length > 2 ? arguments[2] : undefined;
1414
+ let context,
1415
+ args,
1416
+ result,
1417
+ timeout,
1418
+ previous = 0,
1419
+ later = function () {
1420
+ previous = (options === null || options === void 0 ? void 0 : options.leading) === false ? 0 : new Date().getTime();
1421
+ timeout = 0;
1422
+ result = func.apply(context, args);
1423
+ if (!timeout) {
1424
+ context = args = null;
1425
+ }
1426
+ },
1427
+ throttled = function () {
1428
+ let now = new Date().getTime();
1429
+ if (!previous && (options === null || options === void 0 ? void 0 : options.leading) === false) {
1430
+ previous = now;
1431
+ }
1432
+ let remaining = wait - now + previous;
1433
+ context = this;
1434
+ args = arguments;
1435
+ if (remaining <= 0 || remaining > wait) {
1436
+ if (timeout) {
1437
+ clearTimeout(timeout);
1438
+ timeout = 0;
1439
+ }
1440
+ previous = now;
1441
+ result = func.apply(context, args);
1442
+ if (!timeout) {
1443
+ context = args = null;
1444
+ }
1445
+ } else if (!timeout && (options === null || options === void 0 ? void 0 : options.trailing) !== false) {
1446
+ timeout = window.setTimeout(later, remaining);
1447
+ }
1448
+ return result;
1449
+ };
1450
+ return throttled;
1451
+ }
1452
+ /**
1453
+ * Ensures that a function `func` is called at most every `wait` milliseconds with optional leading and trailing calls
1454
+ * @param func - the function to throttle
1455
+ * @param wait - the amount of time between function calls
1456
+ * @param options - leading and trailing options: default = \{ leading: true, trailing, true \}
1457
+ * @returns - the throttled function as an EventListener
1458
+ */
1459
+ static throttleEvent(func) {
1460
+ let wait = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : settings_1.default.delay.default;
1461
+ let options = arguments.length > 2 ? arguments[2] : undefined;
1462
+ return mintUtil.throttle(func, wait, options);
1463
+ }
1464
+ /**
1465
+ * Sets the element's height to its `innerHeight`, then to `auto` after a delay
1466
+ * @param el - the element whose height will be set
1467
+ * @param delay - the amount of time in milliseconds that the show animation will be active
1468
+ * @param from - the side that the element is animating from
1469
+ */
1470
+ static show(el) {
1471
+ let delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : settings_1.default.delay.default;
1472
+ let from = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : enum_1.mintSide.Top;
1473
+ if (el) {
1474
+ el.style.display = '';
1475
+ requestAnimationFrame(() => {
1476
+ if (from === enum_1.mintSide.Top || from === enum_1.mintSide.Bottom) {
1477
+ el.style.height = `${el.scrollHeight}px`;
1478
+ } else {
1479
+ el.style.width = `${el.scrollWidth}px`;
1480
+ }
1481
+ setTimeout(() => {
1482
+ if (from === enum_1.mintSide.Top || from === enum_1.mintSide.Bottom) {
1483
+ el.style.height = 'auto';
1484
+ } else {
1485
+ el.style.width = 'auto';
1486
+ }
1487
+ }, delay);
1488
+ });
1489
+ }
1490
+ }
1491
+ /**
1492
+ * Sets the element's height to 0
1493
+ * @param el - the element whose height will be set
1494
+ * @param delay - the amount of time in milliseconds that the show animation will be active
1495
+ * @param from - the side that the element is animating from
1496
+ */
1497
+ static hide(el) {
1498
+ let delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : settings_1.default.delay.default;
1499
+ let from = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : enum_1.mintSide.Top;
1500
+ if (el) {
1501
+ let height = el.scrollHeight,
1502
+ width = el.scrollWidth,
1503
+ transition = el.style.transition;
1504
+ el.style.transition = '';
1505
+ requestAnimationFrame(() => {
1506
+ if (from === enum_1.mintSide.Top || from === enum_1.mintSide.Bottom) {
1507
+ el.style.height = `${height}px`;
1508
+ } else {
1509
+ el.style.width = `${width}px`;
1510
+ }
1511
+ el.style.transition = transition;
1512
+ requestAnimationFrame(() => {
1513
+ if (from === enum_1.mintSide.Top || from === enum_1.mintSide.Bottom) {
1514
+ el.style.height = '0';
1515
+ } else {
1516
+ el.style.width = '0';
1517
+ }
1518
+ });
1519
+ });
1520
+ setTimeout(() => {
1521
+ el.style.display = 'none';
1522
+ }, delay);
1523
+ }
1524
+ }
1525
+ /**
1526
+ * Copies the provided text to the clipboard
1527
+ * @param text - the text to copy
1528
+ * @returns - true if the text was successfully copied to the clipboard; else false
1529
+ */
1530
+ static copyText(text) {
1531
+ let textArea = document.createElement('textarea');
1532
+ if (!text || !textArea) {
1533
+ return false;
1534
+ }
1535
+ textArea.value = text;
1536
+ textArea.style.cssText = `
1537
+ position: fixed;
1538
+ top: 0;
1539
+ left: 0;
1540
+ transform: translate(-100%, -100%);
1541
+ opacity: 0;
1542
+ z-index: -1;
1543
+ `;
1544
+ document.body.appendChild(textArea);
1545
+ textArea.select();
1546
+ textArea.setSelectionRange(0, 99999);
1547
+ navigator.clipboard.writeText(textArea.value);
1548
+ document.body.removeChild(textArea);
1549
+ return true;
1550
+ }
1551
+ /**
1552
+ * Tests the validity of an email address
1553
+ * @see {@link https://stackoverflow.com/questions/201323/how-can-i-validate-an-email-address-using-a-regular-expression}
1554
+ * @param text - the string to test
1555
+ * @returns - true if the given string is an email address; false if not
1556
+ */
1557
+ static isEmail(text) {
1558
+ 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])+)\])/);
1559
+ }
1560
+ }
1561
+ exports.mintUtil = mintUtil;
1562
+ exports["default"] = mintUtil;
1563
+
1564
+ /***/ })
1565
+
1566
+ /******/ });
1567
+ /************************************************************************/
1568
+ /******/ // The module cache
1569
+ /******/ var __webpack_module_cache__ = {};
1570
+ /******/
1571
+ /******/ // The require function
1572
+ /******/ function __webpack_require__(moduleId) {
1573
+ /******/ // Check if module is in cache
1574
+ /******/ var cachedModule = __webpack_module_cache__[moduleId];
1575
+ /******/ if (cachedModule !== undefined) {
1576
+ /******/ return cachedModule.exports;
1577
+ /******/ }
1578
+ /******/ // Create a new module (and put it into the cache)
1579
+ /******/ var module = __webpack_module_cache__[moduleId] = {
1580
+ /******/ // no module.id needed
1581
+ /******/ // no module.loaded needed
1582
+ /******/ exports: {}
1583
+ /******/ };
1584
+ /******/
1585
+ /******/ // Execute the module function
1586
+ /******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
1587
+ /******/
1588
+ /******/ // Return the exports of the module
1589
+ /******/ return module.exports;
1590
+ /******/ }
1591
+ /******/
1592
+ /************************************************************************/
1593
+ /******/
1594
+ /******/ // startup
1595
+ /******/ // Load entry module and return exports
1596
+ /******/ // This entry module is referenced by other modules so it can't be inlined
1597
+ /******/ var __webpack_exports__ = __webpack_require__("./src/ts/index.ts");
1598
+ /******/
164
1599
  /******/ return __webpack_exports__;
165
1600
  /******/ })()
166
1601
  ;