ku4web-components 6.4.85 → 6.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. package/dist/cjs/{index-d6fca091.js → index-48c4db4b.js} +1 -1
  2. package/dist/cjs/{index-a80ad36d.js → index-57e2cfa5.js} +1 -1
  3. package/dist/cjs/ku4-carousel.cjs.entry.js +1 -1
  4. package/dist/cjs/ku4-focus-trap.cjs.entry.js +1 -1
  5. package/dist/cjs/ku4-form.cjs.entry.js +10 -4
  6. package/dist/cjs/ku4-mask.cjs.entry.js +1 -1
  7. package/dist/cjs/ku4-modal.cjs.entry.js +7 -2
  8. package/dist/cjs/ku4-preview.cjs.entry.js +1 -1
  9. package/dist/cjs/ku4-tab-list.cjs.entry.js +1 -1
  10. package/dist/cjs/ku4web-components.cjs.js +1 -1
  11. package/dist/cjs/loader.cjs.js +1 -1
  12. package/dist/collection/components/ku4-form/ku4-form.js +43 -5
  13. package/dist/collection/components/ku4-mask/ku4-mask.js +1 -1
  14. package/dist/collection/components/ku4-modal/ku4-modal.js +25 -2
  15. package/dist/{ku4web-components/index-f13d1b41.js → esm/index-4eb619fd.js} +1 -1
  16. package/dist/esm/{index-bbaf160c.js → index-f9890388.js} +1 -1
  17. package/dist/esm/ku4-carousel.entry.js +1 -1
  18. package/dist/esm/ku4-focus-trap.entry.js +1 -1
  19. package/dist/esm/ku4-form.entry.js +11 -5
  20. package/dist/esm/ku4-mask.entry.js +1 -1
  21. package/dist/esm/ku4-modal.entry.js +7 -2
  22. package/dist/esm/ku4-preview.entry.js +1 -1
  23. package/dist/esm/ku4-tab-list.entry.js +1 -1
  24. package/dist/esm/ku4web-components.js +1 -1
  25. package/dist/esm/loader.js +1 -1
  26. package/dist/esm-es5/{index-bbaf160c.js → index-f9890388.js} +1 -1
  27. package/dist/esm-es5/ku4-carousel.entry.js +1 -1
  28. package/dist/esm-es5/ku4-focus-trap.entry.js +1 -1
  29. package/dist/esm-es5/ku4-form.entry.js +1 -1
  30. package/dist/esm-es5/ku4-mask.entry.js +1 -1
  31. package/dist/esm-es5/ku4-modal.entry.js +1 -1
  32. package/dist/esm-es5/ku4-preview.entry.js +1 -1
  33. package/dist/esm-es5/ku4-tab-list.entry.js +1 -1
  34. package/dist/esm-es5/ku4web-components.js +1 -1
  35. package/dist/esm-es5/loader.js +1 -1
  36. package/dist/{esm/index-f13d1b41.js → ku4web-components/index-4eb619fd.js} +1 -1
  37. package/dist/ku4web-components/{index-9bb2580f.system.js → index-80d0f591.system.js} +1 -1
  38. package/dist/ku4web-components/ku4-carousel.entry.js +1 -1
  39. package/dist/ku4web-components/ku4-carousel.system.entry.js +1 -1
  40. package/dist/ku4web-components/ku4-focus-trap.entry.js +1 -1
  41. package/dist/ku4web-components/ku4-focus-trap.system.entry.js +1 -1
  42. package/dist/ku4web-components/ku4-form.entry.js +11 -5
  43. package/dist/ku4web-components/ku4-form.system.entry.js +1 -1
  44. package/dist/ku4web-components/ku4-mask.entry.js +1 -1
  45. package/dist/ku4web-components/ku4-mask.system.entry.js +1 -1
  46. package/dist/ku4web-components/ku4-modal.entry.js +7 -2
  47. package/dist/ku4web-components/ku4-modal.system.entry.js +1 -1
  48. package/dist/ku4web-components/ku4-preview.entry.js +1 -1
  49. package/dist/ku4web-components/ku4-preview.system.entry.js +1 -1
  50. package/dist/ku4web-components/ku4-tab-list.entry.js +1 -1
  51. package/dist/ku4web-components/ku4-tab-list.system.entry.js +1 -1
  52. package/dist/ku4web-components/ku4web-components.esm.js +1 -1
  53. package/dist/ku4web-components/ku4web-components.system.js +1 -1
  54. package/dist/ku4web-components/p-11652204.entry.js +1 -0
  55. package/dist/ku4web-components/{p-6d2e8227.js → p-16f6027a.js} +1 -1
  56. package/dist/ku4web-components/{p-c0a165e0.system.entry.js → p-689b87db.system.entry.js} +1 -1
  57. package/dist/ku4web-components/{p-fdd14ecc.system.entry.js → p-69694c0e.system.entry.js} +1 -1
  58. package/dist/ku4web-components/p-6dad23e0.entry.js +1 -0
  59. package/dist/ku4web-components/{p-f6ba4337.system.entry.js → p-782336cd.system.entry.js} +1 -1
  60. package/dist/ku4web-components/{p-0eae47a2.entry.js → p-8583d382.entry.js} +1 -1
  61. package/dist/ku4web-components/{p-0d156607.system.entry.js → p-895853ef.system.entry.js} +1 -1
  62. package/dist/ku4web-components/{p-509b8f00.entry.js → p-abcf4c43.entry.js} +1 -1
  63. package/dist/ku4web-components/{p-5a60b1d4.system.entry.js → p-b02eb970.system.entry.js} +1 -1
  64. package/dist/ku4web-components/{p-c92e1e4b.entry.js → p-cd788e6c.entry.js} +1 -1
  65. package/dist/ku4web-components/p-d66b1c43.system.js +1 -1
  66. package/dist/ku4web-components/p-dc6538b3.system.entry.js +1 -0
  67. package/dist/ku4web-components/p-eace33d2.system.entry.js +1 -0
  68. package/dist/ku4web-components/p-efb9e9f9.entry.js +1 -0
  69. package/dist/ku4web-components/p-f6b9d36e.entry.js +1 -0
  70. package/dist/ku4web-components/{p-da75dba2.system.js → p-f8a2bf9b.system.js} +1 -1
  71. package/dist/types/components/ku4-form/ku4-form.d.ts +7 -1
  72. package/dist/types/components/ku4-modal/ku4-modal.d.ts +5 -0
  73. package/dist/types/components.d.ts +17 -3
  74. package/package.json +2 -2
  75. package/dist/ku4web-components/p-138904dc.system.entry.js +0 -1
  76. package/dist/ku4web-components/p-38453b51.entry.js +0 -1
  77. package/dist/ku4web-components/p-ac73d0e7.system.entry.js +0 -1
  78. package/dist/ku4web-components/p-ccf5f75c.entry.js +0 -1
  79. package/dist/ku4web-components/p-dd0d306b.entry.js +0 -1
  80. package/dist/ku4web-components/p-ef0b529f.entry.js +0 -1
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- class t{static isNull(e){return null===e}static isEmpty(e){return t.isString(e)&&""===e||t.isArray(e)&&e.length<1||t.isObjectLiteral(e)&&Object.keys(e).length<1}static isUndefined(e){return void 0===e}static isZero(e){return 0===e}static exists(e){return !(t.isUndefined(e)||t.isNull(e))}static isNullOrEmpty(e){return !t.exists(e)||t.isEmpty(e)}static isArray(e){return Array.isArray(e)}static isBool(e){return "boolean"==typeof e}static isTrue(e){return t.isBool(e)&&!0===e}static isFalse(e){return t.isBool(e)&&!1===e}static isDate(e){return e instanceof Date}static isNumber(e){return ("number"==typeof e||e instanceof Number)&&!isNaN(e)}static isEven(e){return this.isNumber(e)&&!this.isZero(e)&&e%2==0}static isOdd(e){return this.isNumber(e)&&!this.isZero(e)&&!this.isEven(e)}static isString(e){return "string"==typeof e||e instanceof String}static isFunction(e){return e instanceof Function}static isAsyncFunction(e){try{return "AsyncFunction"===Object.getPrototypeOf(e).constructor.name||t.isFunction(e)&&/^async/.test(e.toString())||t.isFunction(e().then)}catch(e){return !1}}static isPromise(e){return e instanceof Promise}static isObject(e){return t.exists(e)&&"object"==typeof e&&!(t.isBool(e)||t.isNumber(e)||t.isDate(e)||t.isArray(e)||t.isString(e)||t.isFunction(e))}static isObjectLiteral(e){return t.isObject(e)&&e.constructor==={}.constructor}static isTruthy(e){return !t.isFalsy(e)}static isFalsy(e){return t.isZero(e)||t.isFalse(e)||t.isNullOrEmpty(e)||isNaN(e)}}function e(...e){return "".concat(...e)}function r(e,...t){return t.reduce(((e,t,r)=>e.replace(new RegExp(`\\{${r}\\}`,"g"),t&&t.toString?t.toString():t)),e)}function i(e){return s(n(e))}function s(e){return t.exists(e)&&t.isFunction(e.replace)?e.replace(/^[\s\n]*/,""):e}function n(e){return t.exists(e)&&t.isFunction(e.replace)?e.replace(/[\s\n]*$/,""):e}var a=Object.freeze({__proto__:null,build:e,chunk:function(e,r=0){if(!t.isString(e)||Number.isNaN(r)||r<0)return [];if(r<e.length){let t=0;const n=r||e.length,s=[];for(;t<e.length;)s.push(e.slice(t,t+n)),t+=n;return s}return [e]},format:r,trim:i,trimStart:s,trimEnd:n,capitalize:function(e=""){return (e||"").charAt(0).toUpperCase()+(e||"").slice(1).toLowerCase()},mask:function(e,r,n="_"){return t.isFunction(r)?r(e):t.isString(r)&&e.split("").reduce(((e,t)=>e.replace(new RegExp(n),t)),r)},unmask:function(e,r,n="_"){const s=new RegExp(n);return t.isFunction(r)?r(e):t.isString(r)&&e.split("").reduce(((e,t,n)=>!s.test(t)&&s.test(r.charAt(n))?e+t:e),"")}});function h(e,t){try{return e()}catch{return t}}let l;h.async=async(e,t)=>{try{return await e()}catch{return t}};class d{constructor(e,t,r){if(t<1||t>12)throw new Error("Invalid month at Assert.DayPoint");if(r<1||r>y(t,e))throw new Error("Invalid date at DayPoint");this._value=arguments.length>=3?new Date(e,t-1,r):new Date,this._day=this._value.getDay(),this._date=r,this._month=t,this._year=e;}get value(){return this._value}get day(){return this._day}get date(){return this._date}get month(){return this._month}get year(){return this._year}get shortYear(){const e=this._year.toString();return parseInt(e.substr(e.length-2))}get isWeekday(){const e=this._day;return e>0&&e<6}get isWeekend(){return !this.isWeekday}get isLeapYear(){return f(this._year)}get nextDay(){return p(this,1,0,0)}get prevDay(){return p(this,-1,0,0)}get nextMonth(){return p(this,0,1,0)}get prevMonth(){return p(this,0,-1,0)}get nextYear(){return p(this,0,0,1)}get prevYear(){return p(this,0,0,-1)}get firstDayOfMonth(){return new d(this._year,this._month,1)}get lastDayOfMonth(){return new d(this._year,this._month,y(this._month,this._year))}add(e,t,r){function n(e,t,r){let n=e,s=t;for(;s--;)n=n[r];return n}const{abs:s}=Math,o=s(e),i=s(r),a=s(t),c=r<0?"prevDay":"nextDay",u=t<0?"prevMonth":"nextMonth";return n(n(n(this,o,e<0?"prevYear":"nextYear"),a,u),i,c)}isBefore(e){return !(this.isAfter(e)||this.equals(e))}isAfter(e){const t=this._year,r=e.year,n=this._month,s=e.month;return t>r||t===r&&n>s||t===r&&n===s&&this._date>e.date}equals(e){return this._year===e.year&&this._month===e.month&&this._date===e.date}toString(e="mm/dd/yyyy"){const t=/y{3,}/i.test(e)?this._year:this.shortYear,n=this._month,s=this._date,o=/m{2}/i.test(e)&&n<10?"0{1}":"{1}",i=/d{2}/i.test(e)&&s<10?"0{2}":"{2}";return r(e.replace(/y+/gi,"{0}").replace(/m+/gi,o).replace(/d+/gi,i),t,n,s)}toDate(){return this._value}toJson(){return this._value.toJSON()}static canParse(e){return t.isString(e)||t.isNumber(e)||t.isDate(e)?!isNaN(new Date(e).valueOf()):e instanceof d}static parse(e){if(e instanceof d)return e;let n=t.isString(e)?i(e).replace(/T\d{2}:\d{2}:\d{2}(.\d+)?Z/,""):e;if(/^\d{4}-\d{1,2}-\d{1,2}$/.test(n)){const e=n.split("-"),[t]=e;e.push(t),e.shift(),n=e.join("/");}const s=new Date(n);if(!t.exists(n)||Number.isNaN(s.valueOf()))throw new Error(r("Cannot parse value= {0}",n));return new d(s.getFullYear(),s.getMonth()+1,s.getDate())}static tryParse(e){return h((()=>d.parse(e)),null)}static assumeNow(e){l=d.parse(e);}static get today(){return l||d.parse(new Date)}}function y(e,r){return 2===e?f(r)?29:28:e<8&&t.isEven(e)||e>7&&t.isOdd(e)?30:31}function f(t){const r=t.toString().split(/\B/);return parseFloat(e(r[r.length-2],r[r.length-1]))%4==0}function p(e,t,r,n){const s=e.month,o=e.year,i=e.date,a=r,c=n;let u=i+t,l=s+a,h=o+c;if(i+t>y(s,o)&&(u=1,l=s+a+1),i+t<1){const t=e.prevMonth;u=y(t.month,t.year),l=s+a-1;}return l>12&&(l=1,h=o+c+1),l<1&&(l=12,h=o+c-1),new d(h,l,u)}function g(e,t=0){const r=Math.pow(10,-t);return Math.round(parseFloat((e*r).toFixed(Math.abs(t))))/r}function m(e,t=0){return g(e+5*Math.pow(10,t-1),t)}function _(e,t=0){return 0===e?0:g(e-5*Math.pow(10,t-1),t)}function w(e,t=0){return e<0?m(e,t):_(e,t)}function x(e){const t=(e,r=0,n=1)=>0<e?t(--e,n,r+n):r;return t(e)}function v(e){let t=0,r=1,n=0;for(;e>1;)n=t,t=r,r+=n,e--;return e<1?t:r}function b(e,t=0){const r=parseInt(e);return Number.isNaN(r)?t:r}var N=Object.freeze({__proto__:null,random:function(e=0,t=1){return Math.random()*(t-e)+e},round:g,roundUp:m,roundDown:_,roundTowardZero:w,gcd:function e(t,r){return 0===r?Math.abs(t):e(r,t%r)},fib:x,fib2:v,fibArray:function(e){return Array(e).fill(0).map((()=>x(--e))).reverse()},fib2Array:function(e){return Array(e).fill(0).map((()=>v(--e))).reverse()},tryParseInt:b,tryParseFloat:function(e,t=0){const r=parseFloat(e);return Number.isNaN(r)?t:r}});class ${constructor(e=0,r=0){if(!t.isNumber(e)||!t.isNumber(r))throw new Error("Coord requires numeric x and y values");this._x=e,this._y=r;}get x(){return this._x}get y(){return this._y}get value(){return {x:this.x,y:this.y}}get half(){return this.divide(new $(2,2))}get abs(){return new $(Math.abs(this.x),Math.abs(this.y))}equals(e){return this.x===e.x&&this.y===e.y}add(e){return new $(this.x+e.x,this.y+e.y)}subtract(e){return new $(this.x-e.x,this.y-e.y)}multiply(e){return new $(this.x*e.x,this.y*e.y)}divide(e){return new $(this.x/e.x,this.y/e.y)}round(e=0){return new $(g(this.x,e),g(this.y,e))}toString(){return `(${this.x},${this.y})`}static canParse(e){return t.isArray(e)?!(Number.isNaN(e[0])||Number.isNaN(e[1])):t.isObjectLiteral(e)&&"x"in e&&"y"in e?!(Number.isNaN(e.x)||Number.isNaN(e.y)):e instanceof $}static parse(e){return t.exists(e)?e instanceof $?e:t.isArray(e)?new $(e[0],e[1]):t.isObjectLiteral(e)&&t.exists(e.x)&&t.exists(e.y)?new $(e.x,e.y):null:null}static tryParse(e){return h((()=>$.parse(e)),null)}}class F extends ${constructor(e=0,t=0){super(e,t),this._lengthSquared=Math.pow(e,2)+Math.pow(t,2),this._magnitude=Math.sqrt(this._lengthSquared),this._unitNormalX=0===e&&0===t?0:e/this._magnitude,this._unitNormalY=0===e&&0===t?0:t/this._magnitude;}get magnitude(){return this._magnitude}get isZero(){return 0===this.x&&0===this.y}get normal(){return new F(this._unitNormalX,this._unitNormalY)}get invert(){return new F(-this.x,-this.y)}get norm(){return new F(Math.abs(this.x),Math.abs(this.y))}get perpendicular(){return new F(-this.y,this.x)}equals(e){return e instanceof F&&this.x===e.x&&this.y===e.y}add(e){return e instanceof F?new F(this.x+e.x,this.y+e.y):null}dot(e){return e instanceof F?this.x*e.x+this.y*e.y:null}perpendicularAtTo(e){if(!(e instanceof F))return null;const t=e.add(this.projectionOfOnto(e).invert);return new F(t.x,t.y)}projectionOfOnto(e){if(!(e instanceof F))return null;const t=e.normal.scale(this.dot(e.normal));return new F(t.x,t.y)}scale(e){return new F(this.x*e,this.y*e)}unitNormalDot(e){return e instanceof F?this.normal.x*e.normal.x+this.normal.y*e.normal.y:null}reflect(e){if(!(e instanceof F))return null;if(e.isZero)return this;const t=e.normal;return this.add(t.scale(2*t.dot(this)).invert)}round(e=0){return new F(g(this.x,e),g(this.y,e))}}class O extends ${constructor(e,t){super(e,t);}isAbove(e){return this.y<e.y}isBelow(e){return this.y>e.y}isLeftOf(e){return this.x<e.x}isRightOf(e){return this.x>e.x}distanceFrom(e){return new F(this.x-e.x,this.y-e.y)}distanceTo(e){return this.distanceFrom(e).invert}static canParse(e){return e instanceof O||$.canParse(e)}static parse(e){if(e instanceof O)return e;const t=$.parse(e);return new O(t.x,t.y)}static tryParse(e){return h((()=>O.parse(e)),null)}}function k(e){const t=isNaN(parseInt(e))||e<0||e>24?24:e,r=Math.random().toString().substring(2),n=Math.random().toString().substring(2);return r.concat(n).substring(0,t)}function Z(){return function e(t){return t?(t^16*Math.random()>>t/4).toString(16):([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,e)}()}var R=Object.freeze({__proto__:null,uid:k,uuid:Z,suid:function(){return Symbol(k())},suuid:function(){return Symbol(Z())}});Object.freeze({__proto__:null,pattern:e=>e.toString().replace(/(^\/)|(\/$)/g,"").replace(/\\/g,"\\"),escape:e=>e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),alpha:/^[A-z]+$/,alphaNumeric:/^[A-z0-9]+$/,base64:/^[A-z0-9=]+$/,dataUrl:/^\s*data:([a-z]+\/[a-z0-9+-]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,[a-z0-9!$&',()*+;=._~:@/?%\s-]*\s*$/i,email:/^\w+([.\w-+]+)?@\w+([.\w-]+)?\.[A-Za-z0-9]{2,}$/,empty:/^$/,numeric:/^-?[0-9]+$/,script:/(<script[A-z0-9\n\s\t\r.={([\])}'",;!&|$/#:<>*?+\u0000-\u0037\u00C2\u00A0\u2122-]*?<\/script>)/,uid:/^\d{14,}$/i,url:/^(https?:\/\/)?[^{}\\:]+\.[A-z0-9]{2,12}(\/[^?\s]+)*\/?(\?([^=?#]+=[^=?#]*(&[^=?#]+=[^=?#]*)*(#.*)?)?)?$/,uuid:/^[{(]?[0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12}[)}]?$/i});class Cookie{static serialize(e,r=defaultParams){try{if(t.isUndefined(e))throw new Error;const{name:n,expires:s,path:o,domain:i,secure:a}=Object.assign(defaultParams,r),c=kvPair(n,e),u=d.canParse(s)?kvPair("; expires",d.parse(s).toDate().toGMTString()):"",l=o?kvPair("; path",o.split("/").map((e=>encodeURIComponent(e))).join("/")):"",h=i?kvPair("; domain",encodeURIComponent(i)):"";return c+u+l+h+(a?"; secure":"")}catch(t){throw new Error(a.format("Cannot serialize {0}",e))}}static deserialize(e){try{return read$1(e)[1]}catch(t){throw new Error(a.format("Cannot deserialize {0}",e))}}static read(e){try{const[t,r]=read$1(e);return {name:t,value:r}}catch(t){throw new Error(a.format("Cannot read {0}",e))}}}const defaultParams={name:R.uid(),expires:d.today.nextYear.toDate(),path:"/",domain:null,secure:!1},kvPair=(e,t)=>`${e}=${t}`,read$1=e=>/;/.test(e)?e.substring(0,e.search(";")).split("="):e.split("=");class Device{static get orientation(){const{screen:e}=window,t=(e.orientation||{}).type||e.mozOrientation||e.msOrientation,r=window.orientation;return t===Device.landscapePrimary||90===r?Device.landscapePrimary:t===Device.landscapeSecondary||-90===r?Device.landscapeSecondary:t===Device.portraitPrimary||0===r?Device.portraitPrimary:t===Device.portraitSecondary||180===r?Device.portraitSecondary:void 0}static get landscapePrimary(){return "landscape-primary"}static get landscapeSecondary(){return "landscape-secondary"}static get portraitPrimary(){return "portrait-primary"}static get portraitSecondary(){return "portrait-secondary"}static get isMobile(){return /Android|webOS|iPhone|iPad|iPod|BlackBerry|BB|PlayBook|IEMobile|Windows Phone|Kindle|Silk|Opera Mini/i.test(window.navigator.userAgent)}}const onPreventScroll=new Set,onResumeScroll=new Set;let scroll,lastPageYOffset,lastPageXOffset,scrollIsDown=!1,scrollIsUp=!1,scrollIsLeft=!1,scrollIsRight=!1;class Document{static get scrollbarWidth(){return window.innerWidth-document.documentElement.clientWidth}static get isScrollPrevented(){return t.exists(Document.scrollY)}static preventScroll(){try{onPreventScroll.forEach((e=>e()));}catch(e){}Document.position=document.body.style.position,Document.offsetY=document.body.style.top,Document.offsetX=document.body.style.left,Document.width=document.body.style.width,Document.height=document.body.style.height,Document.documentWidth=document.documentElement.style.width,Document.documentWidth=document.documentElement.style.width,Document.documentHeight=document.documentElement.style.height,Document.overflowY=document.documentElement.style.overflowY,Document.scrollX=window.scrollX||window.pageXOffset,Document.scrollY=window.scrollY||window.pageYOffset;const{scrollbarWidth:e}=Document;document.body.style.position="fixed",document.body.style.left=`-${Document.scrollX}px`,document.body.style.top=`calc(-${Document.scrollY}px - ${window.getComputedStyle(document.body)["padding-top"]} - ${window.getComputedStyle(document.body)["margin-top"]})`,document.body.style.width=`calc(100vw - ${e}px - ${window.getComputedStyle(document.body)["padding-left"]} - ${window.getComputedStyle(document.body)["padding-right"]} - ${window.getComputedStyle(document.body)["margin-left"]} - ${window.getComputedStyle(document.body)["margin-right"]})`,document.documentElement.style.width="100wh",document.documentElement.style.height="100vh",document.documentElement.style.overflowY=e&&"scroll";}static resumeScroll(){try{onResumeScroll.forEach((e=>e()));}catch(e){}document.body.style.position=Document.position,document.body.style.top=Document.offsetY,document.body.style.left=Document.offsetX,document.body.style.width=Document.width,document.body.style.height=Document.height,document.documentElement.style.width=Document.documentWidth,document.documentElement.style.height=Document.documentHeight,document.documentElement.style.overflowY=Document.overflowY,window.scrollTo(Document.scrollX,Document.scrollY),Document.position=null,Document.offsetY=null,Document.offsetX=null,Document.width=null,Document.height=null,Document.documentWidth=null,Document.documentHeight=null,Document.overflowY=null,Document.scrollX=null,Document.scrollY=null;}static onPreventScroll(e){onPreventScroll.add(e);}static onResumeScroll(e){onResumeScroll.add(e);}static get scroll(){return scroll||(scroll=new Scroll,lastPageYOffset=window.pageYOffset,lastPageXOffset=window.pageXOffset,scrollIsDown=!1,scrollIsUp=!1,scrollIsLeft=!1,scrollIsRight=!1,window.addEventListener("unload",(()=>scroll.unload()))),scroll}}const updateScrollValue=()=>{const e=window.pageYOffset,t=window.pageXOffset;scrollIsDown=e>lastPageYOffset,scrollIsUp=e<lastPageYOffset,scrollIsRight=t>lastPageXOffset,scrollIsLeft=t<lastPageXOffset,lastPageYOffset=e||window.pageYOffset,lastPageXOffset=t||window.pageXOffset;};class Scroll{constructor(){document.addEventListener("scroll",updateScrollValue,{passive:!0});}get down(){return scrollIsDown}get up(){return scrollIsUp}get left(){return scrollIsLeft}get right(){return scrollIsRight}unload(){document.removeEventListener("scroll",updateScrollValue),scrollIsDown=!1,scrollIsUp=!1,scrollIsLeft=!1,scrollIsRight=!1,lastPageYOffset=window.pageYOffset,lastPageXOffset=window.pageXOffset,scroll=null;}}function encodeBase64(e,r=!1){if(!t.isString(e))throw new Error("Cannot encode non-string values.");const n=window.btoa(e);return r?n.replace(/=/g,""):n}function decodeBase64(e){if(!t.isString(e))throw new Error("Cannot encode non-string values.");return window.atob(e)}function encodeUtf8(e){if(!t.isString(e))throw new Error("Cannot encode non-string values.");return decodeURIComponent(encodeURIComponent(e))}function decodeUtf8(e){if(!t.isString(e))throw new Error("Cannot decode non-string values.");return decodeURIComponent(encodeURIComponent(e))}class Json{static serialize(e){if(t.isFunction(e))return;if(!t.exists(e))return e;if(!t.isArray(e)&&!t.isObject(e))return e.toString();const r=t.isArray(e)?"[{0}]":"{{0}}",n=[];return Object.keys(e).forEach((r=>{const s=e[r];if(t.isUndefined(s))return;const o=t.isNumber(s)?s:t.isDate(s)?`"${d.parse(s).toJson()}"`:t.isString(s)?`"${serializeString(s)}"`:Json.serialize(s);n[n.length]=(t.isObject(e)&&!t.isArray(e)?`"${r}":`:"")+o;})),a.format(r,n)}static deserialize(e){return /function|(=$)/i.test(e)?e:Json.deserialize_unsafe(e)}static deserialize_unsafe(value){try{const result=t.isString(value)?eval(`(${deserializeString(value)})`):value;return t.exists(result)?t.isNullOrEmpty(result.tagName)&&(t.isObject(result)||t.isArray(result))?(Object.keys(result).forEach((e=>{const r=result[e];(t.isObject(r)||t.isArray(r))&&(result[e]=Json.deserialize(r)),/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/.test(r)&&d.canParse(r)&&(result[e]=d.parse(r).toDate());})),result):/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/.test(result)?d.parse(result).toDate():result:result}catch(e){throw new Error(a.format("Cannot deserialize {0}",value))}}static encode(e,t=!1){try{return encodeBase64(Json.serialize(e),t)}catch(t){throw new Error(a.format("Cannot encode {0}",e))}}static decode(e){try{return Json.deserialize(decodeBase64(e))}catch(t){throw new Error(a.format("Cannot decode {0}",e))}}}function serializeString(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\//g,"/").replace(/\f/g,"\\f").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t")}function deserializeString(e){return e.replace(/\\\//g,"/").replace(/\\\\f/g,"\\f").replace(/\\\\n/g,"\\n").replace(/\\\\r/g,"\\r").replace(/\\\\t/g,"\\t")}class QueryString{static serialize(e){try{let r="";return Object.keys(e).forEach((n=>{const s=e[n],o=t.isDate(s)?d.parse(s).toJson():s;r+=a.format("&{0}={1}",encodeURIComponent(n),encodeURIComponent(Json.serialize(o)));})),r.replace(/^&/,"")}catch(t){throw new Error(a.format("Cannot serialize {0}",e))}}static deserialize(e){if(/\??[^\s"'<>]+=[^\s"'<>]+/.test(e)){const t=e.replace(/.*\?/,"").split("&"),r={};return t.forEach((e=>{const[t,n]=e.split("="),s=/^null$|^true$|^false$|^\d+(\.\d+?)?$|^\[.*]$|^{.*}$/.test(n)?n:`"${n}"`;r[decodeURIComponent(t)]=Json.deserialize(decodeURIComponent(s));})),r}}}var worker=e=>{const t=e.toString(),r=t.indexOf("{")+1,n=t.lastIndexOf("}"),s=/(=>)/.test(t)&&!/{/gm.test(t)?`${t.replace("=>","=> {")}}`:t.substring(r,n),o=new self.Blob([s],{type:"text/javascript"});return new Worker(URL.createObjectURL(o))},connection=()=>{const e=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB;function t(t){if(!/^[A-z][A-z0-9]*$/.test(t))throw new Error("Invalid collection name. Must be alphanumeric and begin with an alpha character");return new Promise(((r,n)=>{try{const s=e.open(t);s.onerror=()=>{n(new Error("Error opening IndexedDB."));},s.onupgradeneeded=e=>{e.target.result.createObjectStore(t,{autoIncrement:!1});},s.onsuccess=()=>{r(s.result);};}catch(e){n(e);}}))}onmessage=function(e){const r=e.data[0],n=e.data[1],s=e.data[2];try{"read"===r&&function(e){return t(e).then((t=>new Promise(((r,n)=>{const s=t.transaction([e],"readonly").objectStore(e).get(1);s.onsuccess=e=>{t.close(),r(e.target.result);},s.onerror=()=>{t.close(),n(s.error);};}))))}(n).then((e=>postMessage([r,n,e]))).catch((e=>postMessage(["error",e.message]))),"write"===r&&function(e,r){return t(e).then((t=>new Promise(((n,s)=>{const o=t.transaction([e],"readwrite").objectStore(e).put(r,1);o.onsuccess=e=>{t.close(),n(e.target.result);},o.onerror=()=>{t.close(),s(o.error);};}))))}(n,s).then((e=>postMessage([r,n,e]))).catch((e=>postMessage(["error",e.message]))),"remove"===r&&function(e){return t(e).then((t=>new Promise(((r,n)=>{const s=t.transaction([e],"readwrite").objectStore(e).delete(1);s.onsuccess=e=>{t.close(),r(e.target.result);},s.onerror=()=>{t.close(),n(s.error);};}))))}(n).then((e=>postMessage([r,n,e]))).catch((e=>postMessage(["error",e.message]))),"drop"===r&&function(e){return t(e).then((t=>(t.onversionchange=()=>t.close(),new Promise(((t,r)=>{const n=indexedDB.deleteDatabase(e);n.onsuccess=()=>{t(!0);},n.onerror=()=>{r(n.error);},n.onblocked=()=>{r(n.error);};})))))}(n).then((e=>postMessage([r,n,e]))).catch((e=>postMessage(["error",e.message])));}catch(e){postMessage(["error",e.message]);}};};const validCollection=/^[A-z]+$/;let connectionThread;class Store{static get connected(){return t.exists(connectionThread)}static connect(){try{return Store.connected||(connectionThread=worker(connection)),Store}catch{throw new Error("Store could not connect.")}}static disconnect(){try{if(Store.connected)return connectionThread.terminate(),connectionThread=null,Store}catch{throw new Error("Store could not be disconnected.")}}static async read(e){return new Promise(((r,n)=>{if(validCollection.test(e))if(t.exists(connectionThread)){const t=s=>{const[o,i,a]=s.data;"error"===o&&i===e&&(n(new Error(a)),connectionThread.removeEventListener("message",t)),"read"===o&&i===e&&(r(a),connectionThread.removeEventListener("message",t));};connectionThread.addEventListener("message",t),connectionThread.postMessage(["read",e]);}else n(new Error("Cannot read disconnected Store."));else n(new Error("Invalid collection name must contain only alpha characters."));}))}static async write(e,r){return new Promise(((n,s)=>{if(validCollection.test(e))if(t.exists(connectionThread)){const t=r=>{const[o,i,a]=r.data;"error"===o&&i===e&&(s(new Error(a)),connectionThread.removeEventListener("message",t)),"write"===o&&i===e&&(n(a),connectionThread.removeEventListener("message",t));};connectionThread.addEventListener("message",t),connectionThread.postMessage(["write",e,r]);}else s(Error("Cannot write disconnected Store."));else s(new Error("Invalid collection name must contain only alpha characters."));}))}static async remove(e){return new Promise(((r,n)=>{if(validCollection.test(e))if(t.exists(connectionThread)){const t=s=>{const[o,i,a]=s.data;"error"===o&&i===e&&(n(new Error(a)),connectionThread.removeEventListener("message",t)),"remove"===o&&i===e&&(r(a),connectionThread.removeEventListener("message",t));};connectionThread.addEventListener("message",t),connectionThread.postMessage(["remove",e]);}else n(Error("Cannot write disconnected Store."));else n(new Error("Invalid collection name must contain only alpha characters."));}))}static async delete(e){return new Promise(((r,n)=>{if(!t.isNullOrEmpty(e)&&validCollection.test(e))if(t.exists(connectionThread)){const t=s=>{const[o,i,a]=s.data;"error"===o&&i===e&&(n(new Error(a)),connectionThread.removeEventListener("message",t)),"drop"===o&&i===e&&(r(a),connectionThread.removeEventListener("message",t));};connectionThread.addEventListener("message",t),connectionThread.postMessage(["drop",e]);}else n(Error("Cannot drop disconnected Store."));else n(new Error("Invalid collection name must contain only alpha characters."));}))}static async save(){try{return await navigator.storage.persist()}catch(e){return !1}}static async estimate(){try{const e=navigator.storage||navigator.webkitPersistentStorage,{quota:t=NaN,usage:r=NaN}=await e.estimate()||{};return {quota:t,usage:r,free:`${N.roundUp((t-r)/t*100,-4)}%`,used:`${N.roundUp(r/t*100,-4)}%`}}catch(e){return {}}}static async saved(){try{return await navigator.storage.persisted()}catch{return !1}}}class Dto{constructor(e={},r){if(!t.isArray(e)&&!t.isObject(e))throw new TypeError("Dto value must be Array or object literal");this._value=e,this._name=r;}get value(){return t.isArray(this._value)?[...this._value]:{...this._value}}get name(){return this._name}set name(e){this._name=e;}read(e){return t.exists(e)?!t.isArray(this._value)||t.isNumber(e)?this._value[e]:void 0:this.value}remove(e){return t.isString(e)&&t.exists(e)&&delete this._value[e],t.isFunction(e)&&this._value.splice(this._value.findIndex(e),1),this}write(e,r){return t.isNullOrEmpty(e)||(t.isArray(this._value)?(t.isUndefined(r)&&this._value.push(e),t.isNumber(e)&&(this._value[e]=r)):this._value[e]=r),this}update(e){const r=Object.assign(this.value,e);return this._value=t.isArray(this._value)?Object.values(r):r,this}clear(){return this._value=t.isArray(this._value)?[]:{},this}async save(){return Store.connect(),await Store.write(this.name,this.encode(!0,!0)),await Store.save()}async saveAs(e){return this.name=e,Store.connect(),await Store.delete(this.name),this.save()}async delete(){return Store.connect(),await Store.delete(this.name),this}encode(e=!1,t=!1){const r=Json.serialize(this._value);return encodeBase64(t?encodeURIComponent(r):r,e)}static decode(e,t){const r=decodeBase64(e),n=decodeURIComponent(r);return new Dto(Json.deserialize(n),t)}toFormData(){const{value:e}=this,t=new window.FormData;return Object.keys(e).forEach((r=>t.append(r,e[r]))),t}toJson(){return Json.serialize(this._value)}toQueryString(){return QueryString.serialize(this._value)}static parseFormData(e){const t={};for(const[r,n]of e.entries())t[r]=n;return new Dto(t)}static parseJson(e){return new Dto(Json.deserialize(e))}static parseJwt(e){try{const[,t]=e.split(".");return new Dto(JSON.parse(window.atob(t)))}catch(t){throw new SyntaxError(`Cannot parseJwt: ${e}`)}}static parseQueryString(e){return new Dto(QueryString.deserialize(e))}static async load(e){return Store.connect(),Store.read(e).then((t=>{try{return Dto.decode(t,e)}catch{return}})).catch((()=>{}))}}class Event{static mute(e){return !!t.exists(e)&&(t.isFunction(e.preventDefault)&&e.preventDefault(),t.isFunction(e.stopPropagation)&&e.stopPropagation(),t.isFunction(e.stopImmediatePropagation)&&e.stopImmediatePropagation(),t.exists(e.cancelBubble)&&(e.cancelBubble=!0),!1)}}const readFieldNames=e=>{const t=e.getAttribute("id"),r=[...e.querySelectorAll("[name]")].map((e=>e.name)),n=t?[...document.querySelectorAll(`[form="${t}"]`)].map((e=>e.name)):[];return [...r,...n]},readData=e=>new window.FormData(e),read=e=>{const r={};try{readData(e).forEach(((e,n)=>{const s=r[n];t.isArray(s)?r[n].push(e):t.exists(s)?r[n]=[r[n],e]:r[n]=e;}));}catch(t){[...e.elements].forEach((e=>{const{name:t,type:n,value:s,files:o}=e;if("file"===n)r[t]=o[0];else if("checkbox"===n||"radio"===n)e.checked&&(r[t]=s);else if(e.multiple){const n=[];e.querySelectorAll("option").forEach((e=>e.selected&&n.push(e.value))),r[t]=n.length<2?n[0]:n;}else r[t]=s;}));}return r},readJson=e=>JSON.stringify(read(e)),write=(e,r)=>{[...e.elements].forEach((e=>{/^select$/i.test(e.nodeName)?t.isArray(r[e.name])?[...e.options].forEach((t=>{t.selected=r[e.name].indexOf(t.value)>=0;})):t.exists(r[e.name])&&(e.value=r[e.name]):t.exists(r[e.name])&&("checkbox"===e.type||"radio"===e.type?e.checked=r[e.name]===e.value:e.value=r[e.name]);}));};var index={readFieldNames:readFieldNames,read:read,readData:readData,readJson:readJson,write:write};class Key{constructor(e,t,r={}){this.key=e,this.msKey=t||e,this.altKey=r.altKey||!1,this.ctrlKey=r.ctrlKey||!1,this.metaKey=r.metaKey||!1,this.shiftKey=r.shiftKey||!1;}get alt(){const{key:e,msKey:t,ctrlKey:r,metaKey:n,shiftKey:s}=this;return new Key(e,t,{altKey:!0,ctrlKey:r,metaKey:n,shiftKey:s})}get ctrl(){const{key:e,msKey:t,altKey:r,metaKey:n,shiftKey:s}=this;return new Key(e,t,{altKey:r,ctrlKey:!0,metaKey:n,shiftKey:s})}get meta(){const{key:e,msKey:t,altKey:r,ctrlKey:n,shiftKey:s}=this;return new Key(e,t,{altKey:r,ctrlKey:n,metaKey:!0,shiftKey:s})}get shift(){const{key:e,msKey:t,altKey:r,ctrlKey:n,metaKey:s}=this;return new Key(e,t,{altKey:r,ctrlKey:n,metaKey:s,shiftKey:!0})}equals(e){return e instanceof Key&&this.altKey===e.altKey&&this.ctrlKey===e.ctrlKey&&this.metaKey===e.metaKey&&this.shiftKey===e.shiftKey&&(this.key===e.key||this.msKey===e.msKey)}didFire(e){const{code:t,key:r,altKey:n,ctrlKey:s,metaKey:o,shiftKey:i}=e,a="Dead"===r?t:r;return e&&("ANY"===this.key||this.equals(new Key(a,a,{altKey:n,ctrlKey:s,metaKey:o,shiftKey:i})))}static get press(){return "keypress"}static get down(){return "keydown"}static get up(){return "keyup"}static get any(){return new Key("ANY")}static get esc(){return new Key("Escape","Esc")}static get enter(){return new Key("Enter")}static get space(){return new Key(" ","Spacebar")}static get tab(){return new Key("Tab")}static get left(){return new Key("ArrowLeft","Left")}static get right(){return new Key("ArrowRight","Right")}}class Keyboard{static on(e,t,r,n){const s=e=>t.didFire(e)?r(e,t):null;return window.addEventListener(e,s,n),{unsubscribe:()=>{window.removeEventListener(e,s);}}}static onKeyPress(e,t,r){return Keyboard.on(Key.press,e,t,r)}static onKeyDown(e,t,r){return Keyboard.on(Key.down,e,t,r)}static onKeyUp(e,t,r){return Keyboard.on(Key.up,e,t,r)}}class Swipe{constructor(e,t=0){this.didTouchStart=this.didTouchStart.bind(this),this.didTouchEnd=this.didTouchEnd.bind(this),this.didTouchMove=this.didTouchMove.bind(this),e.addEventListener("touchstart",this.didTouchStart,{capture:!1,passive:!0}),e.addEventListener("touchend",this.didTouchEnd,{capture:!1,passive:!0}),e.addEventListener("touchmove",this.didTouchMove,{capture:!1,passive:!0}),this.element=e,this.tolerance=t,this.didSwipeLeft=()=>{},this.didSwipeRight=()=>{},this.didMove=()=>{};}onLeft(e){return this.didSwipeLeft=e,this}onRight(e){return this.didSwipeRight=e,this}onMove(e){return this.didMove=e,this}destroy(){const{element:e}=this;return e.removeEventListener("touchstart",this.didTouchStart,!1),e.removeEventListener("touchend",this.didTouchEnd,!1),e.removeEventListener("touchmove",this.didTouchMove,!1),this}didTouchStart({touches:[e]}){this.touchStartPoint=new O(e.pageX,e.pageY);}didTouchEnd(e){const[t]=e.changedTouches,{touchStartPoint:r}=this,n=new O(t.pageX,t.pageY);n.isLeftOf(r)&&Math.abs(n.distanceFrom(r).x)>this.tolerance&&this.didSwipeLeft(e),n.isRightOf(r)&&Math.abs(n.distanceFrom(r).x)>this.tolerance&&this.didSwipeRight(e);}didTouchMove(e){const[t]=e.touches,{touchStartPoint:r}=this,n=new O(t.pageX,t.pageY);this.didMove({distance:n.distanceFrom(r),up:n.isAbove(r),down:n.isBelow(r),left:n.isLeftOf(r),right:n.isRightOf(r)});}}
3
+ class t{static isNull(e){return null===e}static isEmpty(e){return t.isString(e)&&""===e||t.isArray(e)&&e.length<1||t.isObjectLiteral(e)&&Object.keys(e).length<1}static isUndefined(e){return void 0===e}static isZero(e){return 0===e}static exists(e){return !(t.isUndefined(e)||t.isNull(e))}static isNullOrEmpty(e){return !t.exists(e)||t.isEmpty(e)}static isArray(e){return Array.isArray(e)}static isBool(e){return "boolean"==typeof e}static isTrue(e){return t.isBool(e)&&!0===e}static isFalse(e){return t.isBool(e)&&!1===e}static isDate(e){return e instanceof Date}static isNumber(e){return ("number"==typeof e||e instanceof Number)&&!isNaN(e)}static isEven(e){return this.isNumber(e)&&!this.isZero(e)&&e%2==0}static isOdd(e){return this.isNumber(e)&&!this.isZero(e)&&!this.isEven(e)}static isString(e){return "string"==typeof e||e instanceof String}static isFunction(e){return e instanceof Function}static isAsyncFunction(e){try{return "AsyncFunction"===Object.getPrototypeOf(e).constructor.name||t.isFunction(e)&&/^async/.test(e.toString())||t.isFunction(e().then)}catch(e){return !1}}static isPromise(e){return e instanceof Promise}static isObject(e){return t.exists(e)&&"object"==typeof e&&!(t.isBool(e)||t.isNumber(e)||t.isDate(e)||t.isArray(e)||t.isString(e)||t.isFunction(e))}static isObjectLiteral(e){return t.isObject(e)&&e.constructor==={}.constructor}static isTruthy(e){return !t.isFalsy(e)}static isFalsy(e){return t.isZero(e)||t.isFalse(e)||t.isNullOrEmpty(e)||isNaN(e)}}function e(...e){return "".concat(...e)}function r(e,...t){return t.reduce(((e,t,r)=>e.replace(new RegExp(`\\{${r}\\}`,"g"),t&&t.toString?t.toString():t)),e)}function i(e){return s(n(e))}function s(e){return t.exists(e)&&t.isFunction(e.replace)?e.replace(/^[\s\n]*/,""):e}function n(e){return t.exists(e)&&t.isFunction(e.replace)?e.replace(/[\s\n]*$/,""):e}var a=Object.freeze({__proto__:null,build:e,chunk:function(e,r=0){if(!t.isString(e)||Number.isNaN(r)||r<0)return [];if(r<e.length){let t=0;const n=r||e.length,s=[];for(;t<e.length;)s.push(e.slice(t,t+n)),t+=n;return s}return [e]},format:r,trim:i,trimStart:s,trimEnd:n,capitalize:function(e=""){return (e||"").charAt(0).toUpperCase()+(e||"").slice(1).toLowerCase()},mask:function(e,r,n="_"){return t.isFunction(r)?r(e):t.isString(r)&&e.split("").reduce(((e,t)=>e.replace(new RegExp(n),t)),r)},unmask:function(e,r,n="_"){const s=new RegExp(n);return t.isFunction(r)?r(e):t.isString(r)&&e.split("").reduce(((e,t,n)=>!s.test(t)&&s.test(r.charAt(n))?e+t:e),"")}});function h(e,t){try{return e()}catch{return t}}let l;h.async=async(e,t)=>{try{return await e()}catch{return t}};class d{constructor(e,t,r){if(t<1||t>12)throw new Error("Invalid month at Assert.DayPoint");if(r<1||r>y(t,e))throw new Error("Invalid date at DayPoint");this._value=arguments.length>=3?new Date(e,t-1,r):new Date,this._day=this._value.getDay(),this._date=r,this._month=t,this._year=e;}get value(){return this._value}get day(){return this._day}get date(){return this._date}get month(){return this._month}get year(){return this._year}get shortYear(){const e=this._year.toString();return parseInt(e.substr(e.length-2))}get isWeekday(){const e=this._day;return e>0&&e<6}get isWeekend(){return !this.isWeekday}get isLeapYear(){return f(this._year)}get nextDay(){return p(this,1,0,0)}get prevDay(){return p(this,-1,0,0)}get nextMonth(){return p(this,0,1,0)}get prevMonth(){return p(this,0,-1,0)}get nextYear(){return p(this,0,0,1)}get prevYear(){return p(this,0,0,-1)}get firstDayOfMonth(){return new d(this._year,this._month,1)}get lastDayOfMonth(){return new d(this._year,this._month,y(this._month,this._year))}add(e,t,r){function n(e,t,r){let n=e,s=t;for(;s--;)n=n[r];return n}const{abs:s}=Math,o=s(e),i=s(r),a=s(t),c=r<0?"prevDay":"nextDay",u=t<0?"prevMonth":"nextMonth";return n(n(n(this,o,e<0?"prevYear":"nextYear"),a,u),i,c)}isBefore(e){return !(this.isAfter(e)||this.equals(e))}isAfter(e){const t=this._year,r=e.year,n=this._month,s=e.month;return t>r||t===r&&n>s||t===r&&n===s&&this._date>e.date}equals(e){return this._year===e.year&&this._month===e.month&&this._date===e.date}toString(e="mm/dd/yyyy"){const t=/y{3,}/i.test(e)?this._year:this.shortYear,n=this._month,s=this._date,o=/m{2}/i.test(e)&&n<10?"0{1}":"{1}",i=/d{2}/i.test(e)&&s<10?"0{2}":"{2}";return r(e.replace(/y+/gi,"{0}").replace(/m+/gi,o).replace(/d+/gi,i),t,n,s)}toDate(){return this._value}toJson(){return this._value.toJSON()}static canParse(e){return t.isString(e)||t.isNumber(e)||t.isDate(e)?!isNaN(new Date(e).valueOf()):e instanceof d}static parse(e){if(e instanceof d)return e;let n=t.isString(e)?i(e).replace(/T\d{2}:\d{2}:\d{2}(.\d+)?Z/,""):e;if(/^\d{4}-\d{1,2}-\d{1,2}$/.test(n)){const e=n.split("-"),[t]=e;e.push(t),e.shift(),n=e.join("/");}const s=new Date(n);if(!t.exists(n)||Number.isNaN(s.valueOf()))throw new Error(r("Cannot parse value= {0}",n));return new d(s.getFullYear(),s.getMonth()+1,s.getDate())}static tryParse(e){return h((()=>d.parse(e)),null)}static assumeNow(e){l=d.parse(e);}static get today(){return l||d.parse(new Date)}}function y(e,r){return 2===e?f(r)?29:28:e<8&&t.isEven(e)||e>7&&t.isOdd(e)?30:31}function f(t){const r=t.toString().split(/\B/);return parseFloat(e(r[r.length-2],r[r.length-1]))%4==0}function p(e,t,r,n){const s=e.month,o=e.year,i=e.date,a=r,c=n;let u=i+t,l=s+a,h=o+c;if(i+t>y(s,o)&&(u=1,l=s+a+1),i+t<1){const t=e.prevMonth;u=y(t.month,t.year),l=s+a-1;}return l>12&&(l=1,h=o+c+1),l<1&&(l=12,h=o+c-1),new d(h,l,u)}function g(e,t=0){const r=Math.pow(10,-t);return Math.round(parseFloat((e*r).toFixed(Math.abs(t))))/r}function m(e,t=0){return g(e+5*Math.pow(10,t-1),t)}function _(e,t=0){return 0===e?0:g(e-5*Math.pow(10,t-1),t)}function w(e,t=0){return e<0?m(e,t):_(e,t)}function x(e){const t=(e,r=0,n=1)=>0<e?t(--e,n,r+n):r;return t(e)}function v(e){let t=0,r=1,n=0;for(;e>1;)n=t,t=r,r+=n,e--;return e<1?t:r}function b(e,t=0){const r=parseInt(e);return Number.isNaN(r)?t:r}var N=Object.freeze({__proto__:null,random:function(e=0,t=1){return Math.random()*(t-e)+e},round:g,roundUp:m,roundDown:_,roundTowardZero:w,gcd:function e(t,r){return 0===r?Math.abs(t):e(r,t%r)},fib:x,fib2:v,fibArray:function(e){return Array(e).fill(0).map((()=>x(--e))).reverse()},fib2Array:function(e){return Array(e).fill(0).map((()=>v(--e))).reverse()},tryParseInt:b,tryParseFloat:function(e,t=0){const r=parseFloat(e);return Number.isNaN(r)?t:r}});class ${constructor(e=0,r=0){if(!t.isNumber(e)||!t.isNumber(r))throw new Error("Coord requires numeric x and y values");this._x=e,this._y=r;}get x(){return this._x}get y(){return this._y}get value(){return {x:this.x,y:this.y}}get half(){return this.divide(new $(2,2))}get abs(){return new $(Math.abs(this.x),Math.abs(this.y))}equals(e){return this.x===e.x&&this.y===e.y}add(e){return new $(this.x+e.x,this.y+e.y)}subtract(e){return new $(this.x-e.x,this.y-e.y)}multiply(e){return new $(this.x*e.x,this.y*e.y)}divide(e){return new $(this.x/e.x,this.y/e.y)}round(e=0){return new $(g(this.x,e),g(this.y,e))}toString(){return `(${this.x},${this.y})`}static canParse(e){return t.isArray(e)?!(Number.isNaN(e[0])||Number.isNaN(e[1])):t.isObjectLiteral(e)&&"x"in e&&"y"in e?!(Number.isNaN(e.x)||Number.isNaN(e.y)):e instanceof $}static parse(e){return t.exists(e)?e instanceof $?e:t.isArray(e)?new $(e[0],e[1]):t.isObjectLiteral(e)&&t.exists(e.x)&&t.exists(e.y)?new $(e.x,e.y):null:null}static tryParse(e){return h((()=>$.parse(e)),null)}}class F extends ${constructor(e=0,t=0){super(e,t),this._lengthSquared=Math.pow(e,2)+Math.pow(t,2),this._magnitude=Math.sqrt(this._lengthSquared),this._unitNormalX=0===e&&0===t?0:e/this._magnitude,this._unitNormalY=0===e&&0===t?0:t/this._magnitude;}get magnitude(){return this._magnitude}get isZero(){return 0===this.x&&0===this.y}get normal(){return new F(this._unitNormalX,this._unitNormalY)}get invert(){return new F(-this.x,-this.y)}get norm(){return new F(Math.abs(this.x),Math.abs(this.y))}get perpendicular(){return new F(-this.y,this.x)}equals(e){return e instanceof F&&this.x===e.x&&this.y===e.y}add(e){return e instanceof F?new F(this.x+e.x,this.y+e.y):null}dot(e){return e instanceof F?this.x*e.x+this.y*e.y:null}perpendicularAtTo(e){if(!(e instanceof F))return null;const t=e.add(this.projectionOfOnto(e).invert);return new F(t.x,t.y)}projectionOfOnto(e){if(!(e instanceof F))return null;const t=e.normal.scale(this.dot(e.normal));return new F(t.x,t.y)}scale(e){return new F(this.x*e,this.y*e)}unitNormalDot(e){return e instanceof F?this.normal.x*e.normal.x+this.normal.y*e.normal.y:null}reflect(e){if(!(e instanceof F))return null;if(e.isZero)return this;const t=e.normal;return this.add(t.scale(2*t.dot(this)).invert)}round(e=0){return new F(g(this.x,e),g(this.y,e))}}class O extends ${constructor(e,t){super(e,t);}isAbove(e){return this.y<e.y}isBelow(e){return this.y>e.y}isLeftOf(e){return this.x<e.x}isRightOf(e){return this.x>e.x}distanceFrom(e){return new F(this.x-e.x,this.y-e.y)}distanceTo(e){return this.distanceFrom(e).invert}static canParse(e){return e instanceof O||$.canParse(e)}static parse(e){if(e instanceof O)return e;const t=$.parse(e);return new O(t.x,t.y)}static tryParse(e){return h((()=>O.parse(e)),null)}}function k(e){const t=isNaN(parseInt(e))||e<0||e>24?24:e,r=Math.random().toString().substring(2),n=Math.random().toString().substring(2);return r.concat(n).substring(0,t)}function Z(){return function e(t){return t?(t^16*Math.random()>>t/4).toString(16):([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,e)}()}var R=Object.freeze({__proto__:null,uid:k,uuid:Z,suid:function(){return Symbol(k())},suuid:function(){return Symbol(Z())}});Object.freeze({__proto__:null,pattern:e=>e.toString().replace(/(^\/)|(\/$)/g,"").replace(/\\/g,"\\"),escape:e=>e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),alpha:/^[A-z]+$/,alphaNumeric:/^[A-z0-9]+$/,base64:/^[A-z0-9=]+$/,dataUrl:/^\s*data:([a-z]+\/[a-z0-9+-]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,[a-z0-9!$&',()*+;=._~:@/?%\s-]*\s*$/i,email:/^\w+([.\w-+]+)?@\w+([.\w-]+)?\.[A-Za-z0-9]{2,}$/,empty:/^$/,numeric:/^-?[0-9]+$/,script:/(<script[A-z0-9\n\s\t\r.={([\])}'",;!&|$/#:<>*?+\u0000-\u0037\u00C2\u00A0\u2122-]*?<\/script>)/,uid:/^\d{14,}$/i,url:/^(https?:\/\/)?[^{}\\:]+\.[A-z0-9]{2,12}(\/[^?\s]+)*\/?(\?([^=?#]+=[^=?#]*(&[^=?#]+=[^=?#]*)*(#.*)?)?)?$/,uuid:/^[{(]?[0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12}[)}]?$/i});class Cookie{static serialize(e,r=defaultParams){try{if(t.isUndefined(e))throw new Error;const{name:n,expires:s,path:o,domain:i,secure:a}=Object.assign(defaultParams,r),c=kvPair(n,e),u=d.canParse(s)?kvPair("; expires",d.parse(s).toDate().toGMTString()):"",l=o?kvPair("; path",o.split("/").map((e=>encodeURIComponent(e))).join("/")):"",h=i?kvPair("; domain",encodeURIComponent(i)):"";return c+u+l+h+(a?"; secure":"")}catch(t){throw new Error(a.format("Cannot serialize {0}",e))}}static deserialize(e){try{return read$1(e)[1]}catch(t){throw new Error(a.format("Cannot deserialize {0}",e))}}static read(e){try{const[t,r]=read$1(e);return {name:t,value:r}}catch(t){throw new Error(a.format("Cannot read {0}",e))}}}const defaultParams={name:R.uid(),expires:d.today.nextYear.toDate(),path:"/",domain:null,secure:!1},kvPair=(e,t)=>`${e}=${t}`,read$1=e=>/;/.test(e)?e.substring(0,e.search(";")).split("="):e.split("=");class Device{static get orientation(){const{screen:e}=window,t=(e.orientation||{}).type||e.mozOrientation||e.msOrientation,r=window.orientation;return t===Device.landscapePrimary||90===r?Device.landscapePrimary:t===Device.landscapeSecondary||-90===r?Device.landscapeSecondary:t===Device.portraitPrimary||0===r?Device.portraitPrimary:t===Device.portraitSecondary||180===r?Device.portraitSecondary:void 0}static get landscapePrimary(){return "landscape-primary"}static get landscapeSecondary(){return "landscape-secondary"}static get portraitPrimary(){return "portrait-primary"}static get portraitSecondary(){return "portrait-secondary"}static get isMobile(){return /Android|webOS|iPhone|iPad|iPod|BlackBerry|BB|PlayBook|IEMobile|Windows Phone|Kindle|Silk|Opera Mini/i.test(window.navigator.userAgent)}}const onPreventScroll=new Set,onResumeScroll=new Set;let scroll,lastPageYOffset,lastPageXOffset,scrollIsDown=!1,scrollIsUp=!1,scrollIsLeft=!1,scrollIsRight=!1;class Document{static get scrollbarWidth(){return window.innerWidth-document.documentElement.clientWidth}static get isScrollPrevented(){return t.exists(Document.scrollY)}static preventScroll(){try{onPreventScroll.forEach((e=>e()));}catch(e){}Document.position=document.body.style.position,Document.offsetY=document.body.style.top,Document.offsetX=document.body.style.left,Document.width=document.body.style.width,Document.height=document.body.style.height,Document.documentWidth=document.documentElement.style.width,Document.documentWidth=document.documentElement.style.width,Document.documentHeight=document.documentElement.style.height,Document.overflowY=document.documentElement.style.overflowY,Document.scrollX=window.scrollX||window.pageXOffset,Document.scrollY=window.scrollY||window.pageYOffset;const{scrollbarWidth:e}=Document;document.body.style.position="fixed",document.body.style.left=`-${Document.scrollX}px`,document.body.style.top=`calc(-${Document.scrollY}px - ${window.getComputedStyle(document.body)["padding-top"]} - ${window.getComputedStyle(document.body)["margin-top"]})`,document.body.style.width=`calc(100vw - ${e}px - ${window.getComputedStyle(document.body)["padding-left"]} - ${window.getComputedStyle(document.body)["padding-right"]} - ${window.getComputedStyle(document.body)["margin-left"]} - ${window.getComputedStyle(document.body)["margin-right"]})`,document.documentElement.style.width="100wh",document.documentElement.style.height="100vh",document.documentElement.style.overflowY=e&&"scroll";}static resumeScroll(){try{onResumeScroll.forEach((e=>e()));}catch(e){}document.body.style.position=Document.position,document.body.style.top=Document.offsetY,document.body.style.left=Document.offsetX,document.body.style.width=Document.width,document.body.style.height=Document.height,document.documentElement.style.width=Document.documentWidth,document.documentElement.style.height=Document.documentHeight,document.documentElement.style.overflowY=Document.overflowY,window.scrollTo(Document.scrollX,Document.scrollY),Document.position=null,Document.offsetY=null,Document.offsetX=null,Document.width=null,Document.height=null,Document.documentWidth=null,Document.documentHeight=null,Document.overflowY=null,Document.scrollX=null,Document.scrollY=null;}static onPreventScroll(e){onPreventScroll.add(e);}static onResumeScroll(e){onResumeScroll.add(e);}static get scroll(){return scroll||(scroll=new Scroll,lastPageYOffset=window.pageYOffset,lastPageXOffset=window.pageXOffset,scrollIsDown=!1,scrollIsUp=!1,scrollIsLeft=!1,scrollIsRight=!1,window.addEventListener("unload",(()=>scroll.unload()))),scroll}}const updateScrollValue=()=>{const e=window.pageYOffset,t=window.pageXOffset;scrollIsDown=e>lastPageYOffset,scrollIsUp=e<lastPageYOffset,scrollIsRight=t>lastPageXOffset,scrollIsLeft=t<lastPageXOffset,lastPageYOffset=e||window.pageYOffset,lastPageXOffset=t||window.pageXOffset;};class Scroll{constructor(){document.addEventListener("scroll",updateScrollValue,{passive:!0});}get down(){return scrollIsDown}get up(){return scrollIsUp}get left(){return scrollIsLeft}get right(){return scrollIsRight}unload(){document.removeEventListener("scroll",updateScrollValue),scrollIsDown=!1,scrollIsUp=!1,scrollIsLeft=!1,scrollIsRight=!1,lastPageYOffset=window.pageYOffset,lastPageXOffset=window.pageXOffset,scroll=null;}}function encodeBase64(e,r=!1){if(!t.isString(e))throw new Error("Cannot encode non-string values.");const n=window.btoa(e);return r?n.replace(/=/g,""):n}function decodeBase64(e){if(!t.isString(e))throw new Error("Cannot encode non-string values.");return window.atob(e)}function encodeUtf8(e){if(!t.isString(e))throw new Error("Cannot encode non-string values.");return decodeURIComponent(encodeURIComponent(e))}function decodeUtf8(e){if(!t.isString(e))throw new Error("Cannot decode non-string values.");return decodeURIComponent(encodeURIComponent(e))}class Json{static serialize(e){if(t.isFunction(e))return;if(!t.exists(e))return e;if(!t.isArray(e)&&!t.isObject(e))return e.toString();const r=t.isArray(e)?"[{0}]":"{{0}}",n=[];return Object.keys(e).forEach((r=>{const s=e[r];if(t.isUndefined(s))return;const o=t.isNumber(s)?s:t.isDate(s)?`"${d.parse(s).toJson()}"`:t.isString(s)?`"${serializeString(s)}"`:Json.serialize(s);n[n.length]=(t.isObject(e)&&!t.isArray(e)?`"${r}":`:"")+o;})),a.format(r,n)}static deserialize(e){return /function|(=$)/i.test(e)?e:Json.deserialize_unsafe(e)}static deserialize_unsafe(value){try{const result=t.isString(value)?eval(`(${deserializeString(value)})`):value;return t.exists(result)?t.isNullOrEmpty(result.tagName)&&(t.isObject(result)||t.isArray(result))?(Object.keys(result).forEach((e=>{const r=result[e];(t.isObject(r)||t.isArray(r))&&(result[e]=Json.deserialize(r)),/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/.test(r)&&d.canParse(r)&&(result[e]=d.parse(r).toDate());})),result):/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/.test(result)?d.parse(result).toDate():result:result}catch(e){throw new Error(a.format("Cannot deserialize {0}",value))}}static encode(e,t=!1){try{return encodeBase64(Json.serialize(e),t)}catch(t){throw new Error(a.format("Cannot encode {0}",e))}}static decode(e){try{return Json.deserialize(decodeBase64(e))}catch(t){throw new Error(a.format("Cannot decode {0}",e))}}}function serializeString(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\//g,"/").replace(/\f/g,"\\f").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t")}function deserializeString(e){return e.replace(/\\\//g,"/").replace(/\\\\f/g,"\\f").replace(/\\\\n/g,"\\n").replace(/\\\\r/g,"\\r").replace(/\\\\t/g,"\\t")}class QueryString{static serialize(e){try{let r="";return Object.keys(e).forEach((n=>{const s=e[n],o=t.isDate(s)?d.parse(s).toJson():s;r+=a.format("&{0}={1}",encodeURIComponent(n),encodeURIComponent(Json.serialize(o)));})),r.replace(/^&/,"")}catch(t){throw new Error(a.format("Cannot serialize {0}",e))}}static deserialize(e){if(/\??[^\s"'<>]+=[^\s"'<>]+/.test(e)){const t=e.replace(/.*\?/,"").split("&"),r={};return t.forEach((e=>{const[t,n]=e.split("="),s=/^null$|^true$|^false$|^\d+(\.\d+?)?$|^\[.*]$|^{.*}$/.test(n)?n:`"${n}"`;r[decodeURIComponent(t)]=Json.deserialize(decodeURIComponent(s));})),r}}}var worker=e=>{const t=e.toString(),r=t.indexOf("{")+1,n=t.lastIndexOf("}"),s=/(=>)/.test(t)&&!/{/gm.test(t)?`${t.replace("=>","=> {")}}`:t.substring(r,n),o=new self.Blob([s],{type:"text/javascript"});return new Worker(URL.createObjectURL(o))},connection=()=>{const e=self.indexedDB||self.mozIndexedDB||self.webkitIndexedDB||self.msIndexedDB;function t(t){if(!/^[A-z][A-z0-9]*$/.test(t))throw new Error("Invalid collection name. Must be alphanumeric and begin with an alpha character");return new Promise(((r,n)=>{try{const s=e.open(t);s.onerror=()=>{n(new Error("Error opening IndexedDB."));},s.onupgradeneeded=e=>{e.target.result.createObjectStore(t,{autoIncrement:!1});},s.onsuccess=()=>{r(s.result);};}catch(e){n(e);}}))}onmessage=function(e){const r=e.data[0],n=e.data[1],s=e.data[2];try{"read"===r&&function(e){return t(e).then((t=>new Promise(((r,n)=>{const s=t.transaction([e],"readonly").objectStore(e).get(1);s.onsuccess=e=>{t.close(),r(e.target.result);},s.onerror=()=>{t.close(),n(s.error);};}))))}(n).then((e=>postMessage([r,n,e]))).catch((e=>postMessage(["error",e.message]))),"write"===r&&function(e,r){return t(e).then((t=>new Promise(((n,s)=>{const o=t.transaction([e],"readwrite").objectStore(e).put(r,1);o.onsuccess=e=>{t.close(),n(e.target.result);},o.onerror=()=>{t.close(),s(o.error);};}))))}(n,s).then((e=>postMessage([r,n,e]))).catch((e=>postMessage(["error",e.message]))),"remove"===r&&function(e){return t(e).then((t=>new Promise(((r,n)=>{const s=t.transaction([e],"readwrite").objectStore(e).delete(1);s.onsuccess=e=>{t.close(),r(e.target.result);},s.onerror=()=>{t.close(),n(s.error);};}))))}(n).then((e=>postMessage([r,n,e]))).catch((e=>postMessage(["error",e.message]))),"drop"===r&&function(e){return t(e).then((t=>(t.onversionchange=()=>t.close(),new Promise(((t,r)=>{const n=indexedDB.deleteDatabase(e);n.onsuccess=()=>{t(!0);},n.onerror=()=>{r(n.error);},n.onblocked=()=>{r(n.error);};})))))}(n).then((e=>postMessage([r,n,e]))).catch((e=>postMessage(["error",e.message])));}catch(e){postMessage(["error",e.message]);}};};const validCollection=/^[A-z]+$/;let connectionThread;class Store{static get connected(){return t.exists(connectionThread)}static connect(){try{return Store.connected||(connectionThread=worker(connection)),Store}catch{throw new Error("Store could not connect.")}}static disconnect(){try{if(Store.connected)return connectionThread.terminate(),connectionThread=null,Store}catch{throw new Error("Store could not be disconnected.")}}static async read(e){return new Promise(((r,n)=>{if(validCollection.test(e))if(t.exists(connectionThread)){const t=s=>{const[o,i,a]=s.data;"error"===o&&i===e&&(n(new Error(a)),connectionThread.removeEventListener("message",t)),"read"===o&&i===e&&(r(a),connectionThread.removeEventListener("message",t));};connectionThread.addEventListener("message",t),connectionThread.postMessage(["read",e]);}else n(new Error("Cannot read disconnected Store."));else n(new Error("Invalid collection name must contain only alpha characters."));}))}static async write(e,r){return new Promise(((n,s)=>{if(validCollection.test(e))if(t.exists(connectionThread)){const t=r=>{const[o,i,a]=r.data;"error"===o&&i===e&&(s(new Error(a)),connectionThread.removeEventListener("message",t)),"write"===o&&i===e&&(n(a),connectionThread.removeEventListener("message",t));};connectionThread.addEventListener("message",t),connectionThread.postMessage(["write",e,r]);}else s(Error("Cannot write disconnected Store."));else s(new Error("Invalid collection name must contain only alpha characters."));}))}static async remove(e){return new Promise(((r,n)=>{if(validCollection.test(e))if(t.exists(connectionThread)){const t=s=>{const[o,i,a]=s.data;"error"===o&&i===e&&(n(new Error(a)),connectionThread.removeEventListener("message",t)),"remove"===o&&i===e&&(r(a),connectionThread.removeEventListener("message",t));};connectionThread.addEventListener("message",t),connectionThread.postMessage(["remove",e]);}else n(Error("Cannot write disconnected Store."));else n(new Error("Invalid collection name must contain only alpha characters."));}))}static async delete(e){return new Promise(((r,n)=>{if(!t.isNullOrEmpty(e)&&validCollection.test(e))if(t.exists(connectionThread)){const t=s=>{const[o,i,a]=s.data;"error"===o&&i===e&&(n(new Error(a)),connectionThread.removeEventListener("message",t)),"drop"===o&&i===e&&(r(a),connectionThread.removeEventListener("message",t));};connectionThread.addEventListener("message",t),connectionThread.postMessage(["drop",e]);}else n(Error("Cannot drop disconnected Store."));else n(new Error("Invalid collection name must contain only alpha characters."));}))}static async save(){try{return await navigator.storage.persist()}catch(e){return !1}}static async estimate(){try{const e=navigator.storage||navigator.webkitPersistentStorage,{quota:t=NaN,usage:r=NaN}=await e.estimate()||{};return {quota:t,usage:r,free:`${N.roundUp((t-r)/t*100,-4)}%`,used:`${N.roundUp(r/t*100,-4)}%`}}catch(e){return {}}}static async saved(){try{return await navigator.storage.persisted()}catch{return !1}}}class Dto{constructor(e={},r){if(!t.isArray(e)&&!t.isObject(e))throw new TypeError("Dto value must be Array or object literal");this._value=e,this._name=r;}get value(){return t.isArray(this._value)?[...this._value]:{...this._value}}get name(){return this._name}set name(e){this._name=e;}read(e){return t.exists(e)?!t.isArray(this._value)||t.isNumber(e)?this._value[e]:void 0:this.value}remove(e){return t.isString(e)&&t.exists(e)&&delete this._value[e],t.isFunction(e)&&this._value.splice(this._value.findIndex(e),1),this}write(e,r){return t.isNullOrEmpty(e)||(t.isArray(this._value)?(t.isUndefined(r)&&this._value.push(e),t.isNumber(e)&&(this._value[e]=r)):this._value[e]=r),this}update(e){const r=Object.assign(this.value,e);return this._value=t.isArray(this._value)?Object.values(r):r,this}clear(){return this._value=t.isArray(this._value)?[]:{},this}async save(){return Store.connect(),await Store.write(this.name,this.encode(!0,!0)),await Store.save()}async saveAs(e){return this.name=e,Store.connect(),await Store.delete(this.name),this.save()}async delete(){return Store.connect(),await Store.delete(this.name),this}encode(e=!1,t=!1){const r=Json.serialize(this._value);return encodeBase64(t?encodeURIComponent(r):r,e)}static decode(e,t){const r=decodeBase64(e),n=decodeURIComponent(r);return new Dto(Json.deserialize(n),t)}toFormData(){const{value:e}=this,t=new window.FormData;return Object.keys(e).forEach((r=>t.append(r,e[r]))),t}toJson(){return Json.serialize(this._value)}toQueryString(){return QueryString.serialize(this._value)}static parseFormData(e){const t={};for(const[r,n]of e.entries())t[r]=n;return new Dto(t)}static parseJson(e){return new Dto(Json.deserialize(e))}static parseJwt(e){try{const[,t]=e.split(".");return new Dto(JSON.parse(window.atob(t)))}catch(t){throw new SyntaxError(`Cannot parseJwt: ${e}`)}}static parseQueryString(e){return new Dto(QueryString.deserialize(e))}static async load(e){return Store.connect(),Store.read(e).then((t=>{try{return Dto.decode(t,e)}catch{return}})).catch((()=>{}))}}class Event{static mute(e){return !!t.exists(e)&&(t.isFunction(e.preventDefault)&&e.preventDefault(),t.isFunction(e.stopPropagation)&&e.stopPropagation(),t.isFunction(e.stopImmediatePropagation)&&e.stopImmediatePropagation(),t.exists(e.cancelBubble)&&(e.cancelBubble=!0),!1)}}const readFieldNames=e=>{const t=e.getAttribute("id"),r=[...e.querySelectorAll("[name]")].map((e=>e.name)),n=t?[...document.querySelectorAll(`[form="${t}"]`)].map((e=>e.name)):[];return [...r,...n]},readData=e=>new window.FormData(e),read=e=>{const r={};try{readData(e).forEach(((e,n)=>{const s=r[n];t.isArray(s)?r[n].push(e):t.exists(s)?r[n]=[r[n],e]:r[n]=e;}));}catch(t){[...e.elements].forEach((e=>{const{name:t,type:n,value:s,files:o}=e;if("file"===n)r[t]=o[0];else if("checkbox"===n||"radio"===n)e.checked&&(r[t]=s);else if(e.multiple){const n=[];e.querySelectorAll("option").forEach((e=>e.selected&&n.push(e.value))),r[t]=n.length<2?n[0]:n;}else r[t]=s;}));}return r},readJson=e=>JSON.stringify(read(e)),write=(e,r)=>{[...e.elements].forEach((e=>{/^select$/i.test(e.nodeName)?t.isArray(r[e.name])?[...e.options].forEach((t=>{t.selected=r[e.name].indexOf(t.value)>=0;})):t.exists(r[e.name])&&(e.value=r[e.name]):t.exists(r[e.name])&&("checkbox"===e.type||"radio"===e.type?e.checked=r[e.name]===e.value:e.value=r[e.name]);}));};var index={readFieldNames:readFieldNames,read:read,readData:readData,readJson:readJson,write:write};class Key{constructor(e,t,r={}){this.key=e,this.msKey=t||e,this.altKey=r.altKey||!1,this.ctrlKey=r.ctrlKey||!1,this.metaKey=r.metaKey||!1,this.shiftKey=r.shiftKey||!1;}get alt(){const{key:e,msKey:t,ctrlKey:r,metaKey:n,shiftKey:s}=this;return new Key(e,t,{altKey:!0,ctrlKey:r,metaKey:n,shiftKey:s})}get ctrl(){const{key:e,msKey:t,altKey:r,metaKey:n,shiftKey:s}=this;return new Key(e,t,{altKey:r,ctrlKey:!0,metaKey:n,shiftKey:s})}get meta(){const{key:e,msKey:t,altKey:r,ctrlKey:n,shiftKey:s}=this;return new Key(e,t,{altKey:r,ctrlKey:n,metaKey:!0,shiftKey:s})}get shift(){const{key:e,msKey:t,altKey:r,ctrlKey:n,metaKey:s}=this;return new Key(e,t,{altKey:r,ctrlKey:n,metaKey:s,shiftKey:!0})}equals(e){return e instanceof Key&&this.altKey===e.altKey&&this.ctrlKey===e.ctrlKey&&this.metaKey===e.metaKey&&this.shiftKey===e.shiftKey&&(this.key===e.key||this.msKey===e.msKey)}didFire(e){const{code:t,key:r,altKey:n,ctrlKey:s,metaKey:o,shiftKey:i}=e,a="Dead"===r?t:r;return e&&("ANY"===this.key||this.equals(new Key(a,a,{altKey:n,ctrlKey:s,metaKey:o,shiftKey:i})))}static get press(){return "keypress"}static get down(){return "keydown"}static get up(){return "keyup"}static get any(){return new Key("ANY")}static get esc(){return new Key("Escape","Esc")}static get enter(){return new Key("Enter")}static get space(){return new Key(" ","Spacebar")}static get tab(){return new Key("Tab")}static get left(){return new Key("ArrowLeft","Left")}static get right(){return new Key("ArrowRight","Right")}}class Keyboard{static on(e,t,r,n){const s=e=>t.didFire(e)?r(e,t):null;return window.addEventListener(e,s,n),{unsubscribe:()=>{window.removeEventListener(e,s);}}}static onKeyPress(e,t,r){return Keyboard.on(Key.press,e,t,r)}static onKeyDown(e,t,r){return Keyboard.on(Key.down,e,t,r)}static onKeyUp(e,t,r){return Keyboard.on(Key.up,e,t,r)}}class Swipe{constructor(e,t=0){this.didTouchStart=this.didTouchStart.bind(this),this.didTouchEnd=this.didTouchEnd.bind(this),this.didTouchMove=this.didTouchMove.bind(this),e.addEventListener("touchstart",this.didTouchStart,{capture:!1,passive:!0}),e.addEventListener("touchend",this.didTouchEnd,{capture:!1,passive:!0}),e.addEventListener("touchmove",this.didTouchMove,{capture:!1,passive:!0}),this.element=e,this.tolerance=t,this.didSwipeLeft=()=>{},this.didSwipeRight=()=>{},this.didMove=()=>{};}onLeft(e){return this.didSwipeLeft=e,this}onRight(e){return this.didSwipeRight=e,this}onMove(e){return this.didMove=e,this}destroy(){const{element:e}=this;return e.removeEventListener("touchstart",this.didTouchStart,{capture:!1}),e.removeEventListener("touchend",this.didTouchEnd,{capture:!1}),e.removeEventListener("touchmove",this.didTouchMove,{capture:!1}),this}didTouchStart({touches:[e]}){this.touchStartPoint=new O(e.pageX,e.pageY);}didTouchEnd(e){const[t]=e.changedTouches,{touchStartPoint:r}=this,n=new O(t.pageX,t.pageY);n.isLeftOf(r)&&Math.abs(n.distanceFrom(r).x)>this.tolerance&&this.didSwipeLeft(e),n.isRightOf(r)&&Math.abs(n.distanceFrom(r).x)>this.tolerance&&this.didSwipeRight(e);}didTouchMove(e){const[t]=e.touches,{touchStartPoint:r}=this,n=new O(t.pageX,t.pageY);this.didMove({distance:n.distanceFrom(r),up:n.isAbove(r),down:n.isBelow(r),left:n.isLeftOf(r),right:n.isRightOf(r)});}}
4
4
 
5
5
  exports.Device = Device;
6
6
  exports.Document = Document;
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- class t{static isNull(e){return null===e}static isEmpty(e){return t.isString(e)&&""===e||t.isArray(e)&&e.length<1||t.isObjectLiteral(e)&&Object.keys(e).length<1}static isUndefined(e){return void 0===e}static isZero(e){return 0===e}static exists(e){return !(t.isUndefined(e)||t.isNull(e))}static isNullOrEmpty(e){return !t.exists(e)||t.isEmpty(e)}static isArray(e){return Array.isArray(e)}static isBool(e){return "boolean"==typeof e}static isTrue(e){return t.isBool(e)&&!0===e}static isFalse(e){return t.isBool(e)&&!1===e}static isDate(e){return e instanceof Date}static isNumber(e){return ("number"==typeof e||e instanceof Number)&&!isNaN(e)}static isEven(e){return this.isNumber(e)&&!this.isZero(e)&&e%2==0}static isOdd(e){return this.isNumber(e)&&!this.isZero(e)&&!this.isEven(e)}static isString(e){return "string"==typeof e||e instanceof String}static isFunction(e){return e instanceof Function}static isAsyncFunction(e){try{return "AsyncFunction"===Object.getPrototypeOf(e).constructor.name||t.isFunction(e)&&/^async/.test(e.toString())||t.isFunction(e().then)}catch(e){return !1}}static isPromise(e){return e instanceof Promise}static isObject(e){return t.exists(e)&&"object"==typeof e&&!(t.isBool(e)||t.isNumber(e)||t.isDate(e)||t.isArray(e)||t.isString(e)||t.isFunction(e))}static isObjectLiteral(e){return t.isObject(e)&&e.constructor==={}.constructor}static isTruthy(e){return !t.isFalsy(e)}static isFalsy(e){return t.isZero(e)||t.isFalse(e)||t.isNullOrEmpty(e)||isNaN(e)}}function e(...e){return "".concat(...e)}function r(e,...t){return t.reduce(((e,t,r)=>e.replace(new RegExp(`\\{${r}\\}`,"g"),t&&t.toString?t.toString():t)),e)}function i(e){return s(n(e))}function s(e){return t.exists(e)&&t.isFunction(e.replace)?e.replace(/^[\s\n]*/,""):e}function n(e){return t.exists(e)&&t.isFunction(e.replace)?e.replace(/[\s\n]*$/,""):e}Object.freeze({__proto__:null,build:e,chunk:function(e,r=0){if(!t.isString(e)||Number.isNaN(r)||r<0)return [];if(r<e.length){let t=0;const n=r||e.length,s=[];for(;t<e.length;)s.push(e.slice(t,t+n)),t+=n;return s}return [e]},format:r,trim:i,trimStart:s,trimEnd:n,capitalize:function(e=""){return (e||"").charAt(0).toUpperCase()+(e||"").slice(1).toLowerCase()},mask:function(e,r,n="_"){return t.isFunction(r)?r(e):t.isString(r)&&e.split("").reduce(((e,t)=>e.replace(new RegExp(n),t)),r)},unmask:function(e,r,n="_"){const s=new RegExp(n);return t.isFunction(r)?r(e):t.isString(r)&&e.split("").reduce(((e,t,n)=>!s.test(t)&&s.test(r.charAt(n))?e+t:e),"")}});function h(e,t){try{return e()}catch{return t}}let l;h.async=async(e,t)=>{try{return await e()}catch{return t}};class d{constructor(e,t,r){if(t<1||t>12)throw new Error("Invalid month at Assert.DayPoint");if(r<1||r>y(t,e))throw new Error("Invalid date at DayPoint");this._value=arguments.length>=3?new Date(e,t-1,r):new Date,this._day=this._value.getDay(),this._date=r,this._month=t,this._year=e;}get value(){return this._value}get day(){return this._day}get date(){return this._date}get month(){return this._month}get year(){return this._year}get shortYear(){const e=this._year.toString();return parseInt(e.substr(e.length-2))}get isWeekday(){const e=this._day;return e>0&&e<6}get isWeekend(){return !this.isWeekday}get isLeapYear(){return f(this._year)}get nextDay(){return p(this,1,0,0)}get prevDay(){return p(this,-1,0,0)}get nextMonth(){return p(this,0,1,0)}get prevMonth(){return p(this,0,-1,0)}get nextYear(){return p(this,0,0,1)}get prevYear(){return p(this,0,0,-1)}get firstDayOfMonth(){return new d(this._year,this._month,1)}get lastDayOfMonth(){return new d(this._year,this._month,y(this._month,this._year))}add(e,t,r){function n(e,t,r){let n=e,s=t;for(;s--;)n=n[r];return n}const{abs:s}=Math,o=s(e),i=s(r),a=s(t),c=r<0?"prevDay":"nextDay",u=t<0?"prevMonth":"nextMonth";return n(n(n(this,o,e<0?"prevYear":"nextYear"),a,u),i,c)}isBefore(e){return !(this.isAfter(e)||this.equals(e))}isAfter(e){const t=this._year,r=e.year,n=this._month,s=e.month;return t>r||t===r&&n>s||t===r&&n===s&&this._date>e.date}equals(e){return this._year===e.year&&this._month===e.month&&this._date===e.date}toString(e="mm/dd/yyyy"){const t=/y{3,}/i.test(e)?this._year:this.shortYear,n=this._month,s=this._date,o=/m{2}/i.test(e)&&n<10?"0{1}":"{1}",i=/d{2}/i.test(e)&&s<10?"0{2}":"{2}";return r(e.replace(/y+/gi,"{0}").replace(/m+/gi,o).replace(/d+/gi,i),t,n,s)}toDate(){return this._value}toJson(){return this._value.toJSON()}static canParse(e){return t.isString(e)||t.isNumber(e)||t.isDate(e)?!isNaN(new Date(e).valueOf()):e instanceof d}static parse(e){if(e instanceof d)return e;let n=t.isString(e)?i(e).replace(/T\d{2}:\d{2}:\d{2}(.\d+)?Z/,""):e;if(/^\d{4}-\d{1,2}-\d{1,2}$/.test(n)){const e=n.split("-"),[t]=e;e.push(t),e.shift(),n=e.join("/");}const s=new Date(n);if(!t.exists(n)||Number.isNaN(s.valueOf()))throw new Error(r("Cannot parse value= {0}",n));return new d(s.getFullYear(),s.getMonth()+1,s.getDate())}static tryParse(e){return h((()=>d.parse(e)),null)}static assumeNow(e){l=d.parse(e);}static get today(){return l||d.parse(new Date)}}function y(e,r){return 2===e?f(r)?29:28:e<8&&t.isEven(e)||e>7&&t.isOdd(e)?30:31}function f(t){const r=t.toString().split(/\B/);return parseFloat(e(r[r.length-2],r[r.length-1]))%4==0}function p(e,t,r,n){const s=e.month,o=e.year,i=e.date,a=r,c=n;let u=i+t,l=s+a,h=o+c;if(i+t>y(s,o)&&(u=1,l=s+a+1),i+t<1){const t=e.prevMonth;u=y(t.month,t.year),l=s+a-1;}return l>12&&(l=1,h=o+c+1),l<1&&(l=12,h=o+c-1),new d(h,l,u)}function g(e,t=0){const r=Math.pow(10,-t);return Math.round(parseFloat((e*r).toFixed(Math.abs(t))))/r}function m(e,t=0){return g(e+5*Math.pow(10,t-1),t)}function _(e,t=0){return 0===e?0:g(e-5*Math.pow(10,t-1),t)}function w(e,t=0){return e<0?m(e,t):_(e,t)}function x(e){const t=(e,r=0,n=1)=>0<e?t(--e,n,r+n):r;return t(e)}function v(e){let t=0,r=1,n=0;for(;e>1;)n=t,t=r,r+=n,e--;return e<1?t:r}function b(e,t=0){const r=parseInt(e);return Number.isNaN(r)?t:r}Object.freeze({__proto__:null,random:function(e=0,t=1){return Math.random()*(t-e)+e},round:g,roundUp:m,roundDown:_,roundTowardZero:w,gcd:function e(t,r){return 0===r?Math.abs(t):e(r,t%r)},fib:x,fib2:v,fibArray:function(e){return Array(e).fill(0).map((()=>x(--e))).reverse()},fib2Array:function(e){return Array(e).fill(0).map((()=>v(--e))).reverse()},tryParseInt:b,tryParseFloat:function(e,t=0){const r=parseFloat(e);return Number.isNaN(r)?t:r}});class ${constructor(e=0,r=0){if(!t.isNumber(e)||!t.isNumber(r))throw new Error("Coord requires numeric x and y values");this._x=e,this._y=r;}get x(){return this._x}get y(){return this._y}get value(){return {x:this.x,y:this.y}}get half(){return this.divide(new $(2,2))}get abs(){return new $(Math.abs(this.x),Math.abs(this.y))}equals(e){return this.x===e.x&&this.y===e.y}add(e){return new $(this.x+e.x,this.y+e.y)}subtract(e){return new $(this.x-e.x,this.y-e.y)}multiply(e){return new $(this.x*e.x,this.y*e.y)}divide(e){return new $(this.x/e.x,this.y/e.y)}round(e=0){return new $(g(this.x,e),g(this.y,e))}toString(){return `(${this.x},${this.y})`}static canParse(e){return t.isArray(e)?!(Number.isNaN(e[0])||Number.isNaN(e[1])):t.isObjectLiteral(e)&&"x"in e&&"y"in e?!(Number.isNaN(e.x)||Number.isNaN(e.y)):e instanceof $}static parse(e){return t.exists(e)?e instanceof $?e:t.isArray(e)?new $(e[0],e[1]):t.isObjectLiteral(e)&&t.exists(e.x)&&t.exists(e.y)?new $(e.x,e.y):null:null}static tryParse(e){return h((()=>$.parse(e)),null)}}class F extends ${constructor(e=0,t=0){super(e,t),this._lengthSquared=Math.pow(e,2)+Math.pow(t,2),this._magnitude=Math.sqrt(this._lengthSquared),this._unitNormalX=0===e&&0===t?0:e/this._magnitude,this._unitNormalY=0===e&&0===t?0:t/this._magnitude;}get magnitude(){return this._magnitude}get isZero(){return 0===this.x&&0===this.y}get normal(){return new F(this._unitNormalX,this._unitNormalY)}get invert(){return new F(-this.x,-this.y)}get norm(){return new F(Math.abs(this.x),Math.abs(this.y))}get perpendicular(){return new F(-this.y,this.x)}equals(e){return e instanceof F&&this.x===e.x&&this.y===e.y}add(e){return e instanceof F?new F(this.x+e.x,this.y+e.y):null}dot(e){return e instanceof F?this.x*e.x+this.y*e.y:null}perpendicularAtTo(e){if(!(e instanceof F))return null;const t=e.add(this.projectionOfOnto(e).invert);return new F(t.x,t.y)}projectionOfOnto(e){if(!(e instanceof F))return null;const t=e.normal.scale(this.dot(e.normal));return new F(t.x,t.y)}scale(e){return new F(this.x*e,this.y*e)}unitNormalDot(e){return e instanceof F?this.normal.x*e.normal.x+this.normal.y*e.normal.y:null}reflect(e){if(!(e instanceof F))return null;if(e.isZero)return this;const t=e.normal;return this.add(t.scale(2*t.dot(this)).invert)}round(e=0){return new F(g(this.x,e),g(this.y,e))}}class O extends ${constructor(e,t){super(e,t);}isAbove(e){return this.y<e.y}isBelow(e){return this.y>e.y}isLeftOf(e){return this.x<e.x}isRightOf(e){return this.x>e.x}distanceFrom(e){return new F(this.x-e.x,this.y-e.y)}distanceTo(e){return this.distanceFrom(e).invert}static canParse(e){return e instanceof O||$.canParse(e)}static parse(e){if(e instanceof O)return e;const t=$.parse(e);return new O(t.x,t.y)}static tryParse(e){return h((()=>O.parse(e)),null)}}function k(e){const t=isNaN(parseInt(e))||e<0||e>24?24:e,r=Math.random().toString().substring(2),n=Math.random().toString().substring(2);return r.concat(n).substring(0,t)}function Z(){return function e(t){return t?(t^16*Math.random()>>t/4).toString(16):([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,e)}()}var R=Object.freeze({__proto__:null,uid:k,uuid:Z,suid:function(){return Symbol(k())},suuid:function(){return Symbol(Z())}});Object.freeze({__proto__:null,pattern:e=>e.toString().replace(/(^\/)|(\/$)/g,"").replace(/\\/g,"\\"),escape:e=>e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),alpha:/^[A-z]+$/,alphaNumeric:/^[A-z0-9]+$/,base64:/^[A-z0-9=]+$/,dataUrl:/^\s*data:([a-z]+\/[a-z0-9+-]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,[a-z0-9!$&',()*+;=._~:@/?%\s-]*\s*$/i,email:/^\w+([.\w-+]+)?@\w+([.\w-]+)?\.[A-Za-z0-9]{2,}$/,empty:/^$/,numeric:/^-?[0-9]+$/,script:/(<script[A-z0-9\n\s\t\r.={([\])}'",;!&|$/#:<>*?+\u0000-\u0037\u00C2\u00A0\u2122-]*?<\/script>)/,uid:/^\d{14,}$/i,url:/^(https?:\/\/)?[^{}\\:]+\.[A-z0-9]{2,12}(\/[^?\s]+)*\/?(\?([^=?#]+=[^=?#]*(&[^=?#]+=[^=?#]*)*(#.*)?)?)?$/,uuid:/^[{(]?[0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12}[)}]?$/i});({name:R.uid(),expires:d.today.nextYear.toDate(),path:"/",domain:null,secure:!1});class Device{static get orientation(){const{screen:e}=window,t=(e.orientation||{}).type||e.mozOrientation||e.msOrientation,r=window.orientation;return t===Device.landscapePrimary||90===r?Device.landscapePrimary:t===Device.landscapeSecondary||-90===r?Device.landscapeSecondary:t===Device.portraitPrimary||0===r?Device.portraitPrimary:t===Device.portraitSecondary||180===r?Device.portraitSecondary:void 0}static get landscapePrimary(){return "landscape-primary"}static get landscapeSecondary(){return "landscape-secondary"}static get portraitPrimary(){return "portrait-primary"}static get portraitSecondary(){return "portrait-secondary"}static get isMobile(){return /Android|webOS|iPhone|iPad|iPod|BlackBerry|BB|PlayBook|IEMobile|Windows Phone|Kindle|Silk|Opera Mini/i.test(window.navigator.userAgent)}}const onPreventScroll=new Set,onResumeScroll=new Set;let scroll,lastPageYOffset,lastPageXOffset,scrollIsDown=!1,scrollIsUp=!1,scrollIsLeft=!1,scrollIsRight=!1;class Document{static get scrollbarWidth(){return window.innerWidth-document.documentElement.clientWidth}static get isScrollPrevented(){return t.exists(Document.scrollY)}static preventScroll(){try{onPreventScroll.forEach((e=>e()));}catch(e){}Document.position=document.body.style.position,Document.offsetY=document.body.style.top,Document.offsetX=document.body.style.left,Document.width=document.body.style.width,Document.height=document.body.style.height,Document.documentWidth=document.documentElement.style.width,Document.documentWidth=document.documentElement.style.width,Document.documentHeight=document.documentElement.style.height,Document.overflowY=document.documentElement.style.overflowY,Document.scrollX=window.scrollX||window.pageXOffset,Document.scrollY=window.scrollY||window.pageYOffset;const{scrollbarWidth:e}=Document;document.body.style.position="fixed",document.body.style.left=`-${Document.scrollX}px`,document.body.style.top=`calc(-${Document.scrollY}px - ${window.getComputedStyle(document.body)["padding-top"]} - ${window.getComputedStyle(document.body)["margin-top"]})`,document.body.style.width=`calc(100vw - ${e}px - ${window.getComputedStyle(document.body)["padding-left"]} - ${window.getComputedStyle(document.body)["padding-right"]} - ${window.getComputedStyle(document.body)["margin-left"]} - ${window.getComputedStyle(document.body)["margin-right"]})`,document.documentElement.style.width="100wh",document.documentElement.style.height="100vh",document.documentElement.style.overflowY=e&&"scroll";}static resumeScroll(){try{onResumeScroll.forEach((e=>e()));}catch(e){}document.body.style.position=Document.position,document.body.style.top=Document.offsetY,document.body.style.left=Document.offsetX,document.body.style.width=Document.width,document.body.style.height=Document.height,document.documentElement.style.width=Document.documentWidth,document.documentElement.style.height=Document.documentHeight,document.documentElement.style.overflowY=Document.overflowY,window.scrollTo(Document.scrollX,Document.scrollY),Document.position=null,Document.offsetY=null,Document.offsetX=null,Document.width=null,Document.height=null,Document.documentWidth=null,Document.documentHeight=null,Document.overflowY=null,Document.scrollX=null,Document.scrollY=null;}static onPreventScroll(e){onPreventScroll.add(e);}static onResumeScroll(e){onResumeScroll.add(e);}static get scroll(){return scroll||(scroll=new Scroll,lastPageYOffset=window.pageYOffset,lastPageXOffset=window.pageXOffset,scrollIsDown=!1,scrollIsUp=!1,scrollIsLeft=!1,scrollIsRight=!1,window.addEventListener("unload",(()=>scroll.unload()))),scroll}}const updateScrollValue=()=>{const e=window.pageYOffset,t=window.pageXOffset;scrollIsDown=e>lastPageYOffset,scrollIsUp=e<lastPageYOffset,scrollIsRight=t>lastPageXOffset,scrollIsLeft=t<lastPageXOffset,lastPageYOffset=e||window.pageYOffset,lastPageXOffset=t||window.pageXOffset;};class Scroll{constructor(){document.addEventListener("scroll",updateScrollValue,{passive:!0});}get down(){return scrollIsDown}get up(){return scrollIsUp}get left(){return scrollIsLeft}get right(){return scrollIsRight}unload(){document.removeEventListener("scroll",updateScrollValue),scrollIsDown=!1,scrollIsUp=!1,scrollIsLeft=!1,scrollIsRight=!1,lastPageYOffset=window.pageYOffset,lastPageXOffset=window.pageXOffset,scroll=null;}}class Event{static mute(e){return !!t.exists(e)&&(t.isFunction(e.preventDefault)&&e.preventDefault(),t.isFunction(e.stopPropagation)&&e.stopPropagation(),t.isFunction(e.stopImmediatePropagation)&&e.stopImmediatePropagation(),t.exists(e.cancelBubble)&&(e.cancelBubble=!0),!1)}}const readFieldNames=e=>{const t=e.getAttribute("id"),r=[...e.querySelectorAll("[name]")].map((e=>e.name)),n=t?[...document.querySelectorAll(`[form="${t}"]`)].map((e=>e.name)):[];return [...r,...n]},readData=e=>new window.FormData(e),read=e=>{const r={};try{readData(e).forEach(((e,n)=>{const s=r[n];t.isArray(s)?r[n].push(e):t.exists(s)?r[n]=[r[n],e]:r[n]=e;}));}catch(t){[...e.elements].forEach((e=>{const{name:t,type:n,value:s,files:o}=e;if("file"===n)r[t]=o[0];else if("checkbox"===n||"radio"===n)e.checked&&(r[t]=s);else if(e.multiple){const n=[];e.querySelectorAll("option").forEach((e=>e.selected&&n.push(e.value))),r[t]=n.length<2?n[0]:n;}else r[t]=s;}));}return r},readJson=e=>JSON.stringify(read(e)),write=(e,r)=>{[...e.elements].forEach((e=>{/^select$/i.test(e.nodeName)?t.isArray(r[e.name])?[...e.options].forEach((t=>{t.selected=r[e.name].indexOf(t.value)>=0;})):t.exists(r[e.name])&&(e.value=r[e.name]):t.exists(r[e.name])&&("checkbox"===e.type||"radio"===e.type?e.checked=r[e.name]===e.value:e.value=r[e.name]);}));};var index={readFieldNames:readFieldNames,read:read,readData:readData,readJson:readJson,write:write};class Key{constructor(e,t,r={}){this.key=e,this.msKey=t||e,this.altKey=r.altKey||!1,this.ctrlKey=r.ctrlKey||!1,this.metaKey=r.metaKey||!1,this.shiftKey=r.shiftKey||!1;}get alt(){const{key:e,msKey:t,ctrlKey:r,metaKey:n,shiftKey:s}=this;return new Key(e,t,{altKey:!0,ctrlKey:r,metaKey:n,shiftKey:s})}get ctrl(){const{key:e,msKey:t,altKey:r,metaKey:n,shiftKey:s}=this;return new Key(e,t,{altKey:r,ctrlKey:!0,metaKey:n,shiftKey:s})}get meta(){const{key:e,msKey:t,altKey:r,ctrlKey:n,shiftKey:s}=this;return new Key(e,t,{altKey:r,ctrlKey:n,metaKey:!0,shiftKey:s})}get shift(){const{key:e,msKey:t,altKey:r,ctrlKey:n,metaKey:s}=this;return new Key(e,t,{altKey:r,ctrlKey:n,metaKey:s,shiftKey:!0})}equals(e){return e instanceof Key&&this.altKey===e.altKey&&this.ctrlKey===e.ctrlKey&&this.metaKey===e.metaKey&&this.shiftKey===e.shiftKey&&(this.key===e.key||this.msKey===e.msKey)}didFire(e){const{code:t,key:r,altKey:n,ctrlKey:s,metaKey:o,shiftKey:i}=e,a="Dead"===r?t:r;return e&&("ANY"===this.key||this.equals(new Key(a,a,{altKey:n,ctrlKey:s,metaKey:o,shiftKey:i})))}static get press(){return "keypress"}static get down(){return "keydown"}static get up(){return "keyup"}static get any(){return new Key("ANY")}static get esc(){return new Key("Escape","Esc")}static get enter(){return new Key("Enter")}static get space(){return new Key(" ","Spacebar")}static get tab(){return new Key("Tab")}static get left(){return new Key("ArrowLeft","Left")}static get right(){return new Key("ArrowRight","Right")}}class Swipe{constructor(e,t=0){this.didTouchStart=this.didTouchStart.bind(this),this.didTouchEnd=this.didTouchEnd.bind(this),this.didTouchMove=this.didTouchMove.bind(this),e.addEventListener("touchstart",this.didTouchStart,{capture:!1,passive:!0}),e.addEventListener("touchend",this.didTouchEnd,{capture:!1,passive:!0}),e.addEventListener("touchmove",this.didTouchMove,{capture:!1,passive:!0}),this.element=e,this.tolerance=t,this.didSwipeLeft=()=>{},this.didSwipeRight=()=>{},this.didMove=()=>{};}onLeft(e){return this.didSwipeLeft=e,this}onRight(e){return this.didSwipeRight=e,this}onMove(e){return this.didMove=e,this}destroy(){const{element:e}=this;return e.removeEventListener("touchstart",this.didTouchStart,!1),e.removeEventListener("touchend",this.didTouchEnd,!1),e.removeEventListener("touchmove",this.didTouchMove,!1),this}didTouchStart({touches:[e]}){this.touchStartPoint=new O(e.pageX,e.pageY);}didTouchEnd(e){const[t]=e.changedTouches,{touchStartPoint:r}=this,n=new O(t.pageX,t.pageY);n.isLeftOf(r)&&Math.abs(n.distanceFrom(r).x)>this.tolerance&&this.didSwipeLeft(e),n.isRightOf(r)&&Math.abs(n.distanceFrom(r).x)>this.tolerance&&this.didSwipeRight(e);}didTouchMove(e){const[t]=e.touches,{touchStartPoint:r}=this,n=new O(t.pageX,t.pageY);this.didMove({distance:n.distanceFrom(r),up:n.isAbove(r),down:n.isBelow(r),left:n.isLeftOf(r),right:n.isRightOf(r)});}}
3
+ class t{static isNull(e){return null===e}static isEmpty(e){return t.isString(e)&&""===e||t.isArray(e)&&e.length<1||t.isObjectLiteral(e)&&Object.keys(e).length<1}static isUndefined(e){return void 0===e}static isZero(e){return 0===e}static exists(e){return !(t.isUndefined(e)||t.isNull(e))}static isNullOrEmpty(e){return !t.exists(e)||t.isEmpty(e)}static isArray(e){return Array.isArray(e)}static isBool(e){return "boolean"==typeof e}static isTrue(e){return t.isBool(e)&&!0===e}static isFalse(e){return t.isBool(e)&&!1===e}static isDate(e){return e instanceof Date}static isNumber(e){return ("number"==typeof e||e instanceof Number)&&!isNaN(e)}static isEven(e){return this.isNumber(e)&&!this.isZero(e)&&e%2==0}static isOdd(e){return this.isNumber(e)&&!this.isZero(e)&&!this.isEven(e)}static isString(e){return "string"==typeof e||e instanceof String}static isFunction(e){return e instanceof Function}static isAsyncFunction(e){try{return "AsyncFunction"===Object.getPrototypeOf(e).constructor.name||t.isFunction(e)&&/^async/.test(e.toString())||t.isFunction(e().then)}catch(e){return !1}}static isPromise(e){return e instanceof Promise}static isObject(e){return t.exists(e)&&"object"==typeof e&&!(t.isBool(e)||t.isNumber(e)||t.isDate(e)||t.isArray(e)||t.isString(e)||t.isFunction(e))}static isObjectLiteral(e){return t.isObject(e)&&e.constructor==={}.constructor}static isTruthy(e){return !t.isFalsy(e)}static isFalsy(e){return t.isZero(e)||t.isFalse(e)||t.isNullOrEmpty(e)||isNaN(e)}}function e(...e){return "".concat(...e)}function r(e,...t){return t.reduce(((e,t,r)=>e.replace(new RegExp(`\\{${r}\\}`,"g"),t&&t.toString?t.toString():t)),e)}function i(e){return s(n(e))}function s(e){return t.exists(e)&&t.isFunction(e.replace)?e.replace(/^[\s\n]*/,""):e}function n(e){return t.exists(e)&&t.isFunction(e.replace)?e.replace(/[\s\n]*$/,""):e}Object.freeze({__proto__:null,build:e,chunk:function(e,r=0){if(!t.isString(e)||Number.isNaN(r)||r<0)return [];if(r<e.length){let t=0;const n=r||e.length,s=[];for(;t<e.length;)s.push(e.slice(t,t+n)),t+=n;return s}return [e]},format:r,trim:i,trimStart:s,trimEnd:n,capitalize:function(e=""){return (e||"").charAt(0).toUpperCase()+(e||"").slice(1).toLowerCase()},mask:function(e,r,n="_"){return t.isFunction(r)?r(e):t.isString(r)&&e.split("").reduce(((e,t)=>e.replace(new RegExp(n),t)),r)},unmask:function(e,r,n="_"){const s=new RegExp(n);return t.isFunction(r)?r(e):t.isString(r)&&e.split("").reduce(((e,t,n)=>!s.test(t)&&s.test(r.charAt(n))?e+t:e),"")}});function h(e,t){try{return e()}catch{return t}}let l;h.async=async(e,t)=>{try{return await e()}catch{return t}};class d{constructor(e,t,r){if(t<1||t>12)throw new Error("Invalid month at Assert.DayPoint");if(r<1||r>y(t,e))throw new Error("Invalid date at DayPoint");this._value=arguments.length>=3?new Date(e,t-1,r):new Date,this._day=this._value.getDay(),this._date=r,this._month=t,this._year=e;}get value(){return this._value}get day(){return this._day}get date(){return this._date}get month(){return this._month}get year(){return this._year}get shortYear(){const e=this._year.toString();return parseInt(e.substr(e.length-2))}get isWeekday(){const e=this._day;return e>0&&e<6}get isWeekend(){return !this.isWeekday}get isLeapYear(){return f(this._year)}get nextDay(){return p(this,1,0,0)}get prevDay(){return p(this,-1,0,0)}get nextMonth(){return p(this,0,1,0)}get prevMonth(){return p(this,0,-1,0)}get nextYear(){return p(this,0,0,1)}get prevYear(){return p(this,0,0,-1)}get firstDayOfMonth(){return new d(this._year,this._month,1)}get lastDayOfMonth(){return new d(this._year,this._month,y(this._month,this._year))}add(e,t,r){function n(e,t,r){let n=e,s=t;for(;s--;)n=n[r];return n}const{abs:s}=Math,o=s(e),i=s(r),a=s(t),c=r<0?"prevDay":"nextDay",u=t<0?"prevMonth":"nextMonth";return n(n(n(this,o,e<0?"prevYear":"nextYear"),a,u),i,c)}isBefore(e){return !(this.isAfter(e)||this.equals(e))}isAfter(e){const t=this._year,r=e.year,n=this._month,s=e.month;return t>r||t===r&&n>s||t===r&&n===s&&this._date>e.date}equals(e){return this._year===e.year&&this._month===e.month&&this._date===e.date}toString(e="mm/dd/yyyy"){const t=/y{3,}/i.test(e)?this._year:this.shortYear,n=this._month,s=this._date,o=/m{2}/i.test(e)&&n<10?"0{1}":"{1}",i=/d{2}/i.test(e)&&s<10?"0{2}":"{2}";return r(e.replace(/y+/gi,"{0}").replace(/m+/gi,o).replace(/d+/gi,i),t,n,s)}toDate(){return this._value}toJson(){return this._value.toJSON()}static canParse(e){return t.isString(e)||t.isNumber(e)||t.isDate(e)?!isNaN(new Date(e).valueOf()):e instanceof d}static parse(e){if(e instanceof d)return e;let n=t.isString(e)?i(e).replace(/T\d{2}:\d{2}:\d{2}(.\d+)?Z/,""):e;if(/^\d{4}-\d{1,2}-\d{1,2}$/.test(n)){const e=n.split("-"),[t]=e;e.push(t),e.shift(),n=e.join("/");}const s=new Date(n);if(!t.exists(n)||Number.isNaN(s.valueOf()))throw new Error(r("Cannot parse value= {0}",n));return new d(s.getFullYear(),s.getMonth()+1,s.getDate())}static tryParse(e){return h((()=>d.parse(e)),null)}static assumeNow(e){l=d.parse(e);}static get today(){return l||d.parse(new Date)}}function y(e,r){return 2===e?f(r)?29:28:e<8&&t.isEven(e)||e>7&&t.isOdd(e)?30:31}function f(t){const r=t.toString().split(/\B/);return parseFloat(e(r[r.length-2],r[r.length-1]))%4==0}function p(e,t,r,n){const s=e.month,o=e.year,i=e.date,a=r,c=n;let u=i+t,l=s+a,h=o+c;if(i+t>y(s,o)&&(u=1,l=s+a+1),i+t<1){const t=e.prevMonth;u=y(t.month,t.year),l=s+a-1;}return l>12&&(l=1,h=o+c+1),l<1&&(l=12,h=o+c-1),new d(h,l,u)}function g(e,t=0){const r=Math.pow(10,-t);return Math.round(parseFloat((e*r).toFixed(Math.abs(t))))/r}function m(e,t=0){return g(e+5*Math.pow(10,t-1),t)}function _(e,t=0){return 0===e?0:g(e-5*Math.pow(10,t-1),t)}function w(e,t=0){return e<0?m(e,t):_(e,t)}function x(e){const t=(e,r=0,n=1)=>0<e?t(--e,n,r+n):r;return t(e)}function v(e){let t=0,r=1,n=0;for(;e>1;)n=t,t=r,r+=n,e--;return e<1?t:r}function b(e,t=0){const r=parseInt(e);return Number.isNaN(r)?t:r}Object.freeze({__proto__:null,random:function(e=0,t=1){return Math.random()*(t-e)+e},round:g,roundUp:m,roundDown:_,roundTowardZero:w,gcd:function e(t,r){return 0===r?Math.abs(t):e(r,t%r)},fib:x,fib2:v,fibArray:function(e){return Array(e).fill(0).map((()=>x(--e))).reverse()},fib2Array:function(e){return Array(e).fill(0).map((()=>v(--e))).reverse()},tryParseInt:b,tryParseFloat:function(e,t=0){const r=parseFloat(e);return Number.isNaN(r)?t:r}});class ${constructor(e=0,r=0){if(!t.isNumber(e)||!t.isNumber(r))throw new Error("Coord requires numeric x and y values");this._x=e,this._y=r;}get x(){return this._x}get y(){return this._y}get value(){return {x:this.x,y:this.y}}get half(){return this.divide(new $(2,2))}get abs(){return new $(Math.abs(this.x),Math.abs(this.y))}equals(e){return this.x===e.x&&this.y===e.y}add(e){return new $(this.x+e.x,this.y+e.y)}subtract(e){return new $(this.x-e.x,this.y-e.y)}multiply(e){return new $(this.x*e.x,this.y*e.y)}divide(e){return new $(this.x/e.x,this.y/e.y)}round(e=0){return new $(g(this.x,e),g(this.y,e))}toString(){return `(${this.x},${this.y})`}static canParse(e){return t.isArray(e)?!(Number.isNaN(e[0])||Number.isNaN(e[1])):t.isObjectLiteral(e)&&"x"in e&&"y"in e?!(Number.isNaN(e.x)||Number.isNaN(e.y)):e instanceof $}static parse(e){return t.exists(e)?e instanceof $?e:t.isArray(e)?new $(e[0],e[1]):t.isObjectLiteral(e)&&t.exists(e.x)&&t.exists(e.y)?new $(e.x,e.y):null:null}static tryParse(e){return h((()=>$.parse(e)),null)}}class F extends ${constructor(e=0,t=0){super(e,t),this._lengthSquared=Math.pow(e,2)+Math.pow(t,2),this._magnitude=Math.sqrt(this._lengthSquared),this._unitNormalX=0===e&&0===t?0:e/this._magnitude,this._unitNormalY=0===e&&0===t?0:t/this._magnitude;}get magnitude(){return this._magnitude}get isZero(){return 0===this.x&&0===this.y}get normal(){return new F(this._unitNormalX,this._unitNormalY)}get invert(){return new F(-this.x,-this.y)}get norm(){return new F(Math.abs(this.x),Math.abs(this.y))}get perpendicular(){return new F(-this.y,this.x)}equals(e){return e instanceof F&&this.x===e.x&&this.y===e.y}add(e){return e instanceof F?new F(this.x+e.x,this.y+e.y):null}dot(e){return e instanceof F?this.x*e.x+this.y*e.y:null}perpendicularAtTo(e){if(!(e instanceof F))return null;const t=e.add(this.projectionOfOnto(e).invert);return new F(t.x,t.y)}projectionOfOnto(e){if(!(e instanceof F))return null;const t=e.normal.scale(this.dot(e.normal));return new F(t.x,t.y)}scale(e){return new F(this.x*e,this.y*e)}unitNormalDot(e){return e instanceof F?this.normal.x*e.normal.x+this.normal.y*e.normal.y:null}reflect(e){if(!(e instanceof F))return null;if(e.isZero)return this;const t=e.normal;return this.add(t.scale(2*t.dot(this)).invert)}round(e=0){return new F(g(this.x,e),g(this.y,e))}}class O extends ${constructor(e,t){super(e,t);}isAbove(e){return this.y<e.y}isBelow(e){return this.y>e.y}isLeftOf(e){return this.x<e.x}isRightOf(e){return this.x>e.x}distanceFrom(e){return new F(this.x-e.x,this.y-e.y)}distanceTo(e){return this.distanceFrom(e).invert}static canParse(e){return e instanceof O||$.canParse(e)}static parse(e){if(e instanceof O)return e;const t=$.parse(e);return new O(t.x,t.y)}static tryParse(e){return h((()=>O.parse(e)),null)}}function k(e){const t=isNaN(parseInt(e))||e<0||e>24?24:e,r=Math.random().toString().substring(2),n=Math.random().toString().substring(2);return r.concat(n).substring(0,t)}function Z(){return function e(t){return t?(t^16*Math.random()>>t/4).toString(16):([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,e)}()}var R=Object.freeze({__proto__:null,uid:k,uuid:Z,suid:function(){return Symbol(k())},suuid:function(){return Symbol(Z())}});Object.freeze({__proto__:null,pattern:e=>e.toString().replace(/(^\/)|(\/$)/g,"").replace(/\\/g,"\\"),escape:e=>e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),alpha:/^[A-z]+$/,alphaNumeric:/^[A-z0-9]+$/,base64:/^[A-z0-9=]+$/,dataUrl:/^\s*data:([a-z]+\/[a-z0-9+-]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,[a-z0-9!$&',()*+;=._~:@/?%\s-]*\s*$/i,email:/^\w+([.\w-+]+)?@\w+([.\w-]+)?\.[A-Za-z0-9]{2,}$/,empty:/^$/,numeric:/^-?[0-9]+$/,script:/(<script[A-z0-9\n\s\t\r.={([\])}'",;!&|$/#:<>*?+\u0000-\u0037\u00C2\u00A0\u2122-]*?<\/script>)/,uid:/^\d{14,}$/i,url:/^(https?:\/\/)?[^{}\\:]+\.[A-z0-9]{2,12}(\/[^?\s]+)*\/?(\?([^=?#]+=[^=?#]*(&[^=?#]+=[^=?#]*)*(#.*)?)?)?$/,uuid:/^[{(]?[0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12}[)}]?$/i});({name:R.uid(),expires:d.today.nextYear.toDate(),path:"/",domain:null,secure:!1});class Device{static get orientation(){const{screen:e}=window,t=(e.orientation||{}).type||e.mozOrientation||e.msOrientation,r=window.orientation;return t===Device.landscapePrimary||90===r?Device.landscapePrimary:t===Device.landscapeSecondary||-90===r?Device.landscapeSecondary:t===Device.portraitPrimary||0===r?Device.portraitPrimary:t===Device.portraitSecondary||180===r?Device.portraitSecondary:void 0}static get landscapePrimary(){return "landscape-primary"}static get landscapeSecondary(){return "landscape-secondary"}static get portraitPrimary(){return "portrait-primary"}static get portraitSecondary(){return "portrait-secondary"}static get isMobile(){return /Android|webOS|iPhone|iPad|iPod|BlackBerry|BB|PlayBook|IEMobile|Windows Phone|Kindle|Silk|Opera Mini/i.test(window.navigator.userAgent)}}const onPreventScroll=new Set,onResumeScroll=new Set;let scroll,lastPageYOffset,lastPageXOffset,scrollIsDown=!1,scrollIsUp=!1,scrollIsLeft=!1,scrollIsRight=!1;class Document{static get scrollbarWidth(){return window.innerWidth-document.documentElement.clientWidth}static get isScrollPrevented(){return t.exists(Document.scrollY)}static preventScroll(){try{onPreventScroll.forEach((e=>e()));}catch(e){}Document.position=document.body.style.position,Document.offsetY=document.body.style.top,Document.offsetX=document.body.style.left,Document.width=document.body.style.width,Document.height=document.body.style.height,Document.documentWidth=document.documentElement.style.width,Document.documentWidth=document.documentElement.style.width,Document.documentHeight=document.documentElement.style.height,Document.overflowY=document.documentElement.style.overflowY,Document.scrollX=window.scrollX||window.pageXOffset,Document.scrollY=window.scrollY||window.pageYOffset;const{scrollbarWidth:e}=Document;document.body.style.position="fixed",document.body.style.left=`-${Document.scrollX}px`,document.body.style.top=`calc(-${Document.scrollY}px - ${window.getComputedStyle(document.body)["padding-top"]} - ${window.getComputedStyle(document.body)["margin-top"]})`,document.body.style.width=`calc(100vw - ${e}px - ${window.getComputedStyle(document.body)["padding-left"]} - ${window.getComputedStyle(document.body)["padding-right"]} - ${window.getComputedStyle(document.body)["margin-left"]} - ${window.getComputedStyle(document.body)["margin-right"]})`,document.documentElement.style.width="100wh",document.documentElement.style.height="100vh",document.documentElement.style.overflowY=e&&"scroll";}static resumeScroll(){try{onResumeScroll.forEach((e=>e()));}catch(e){}document.body.style.position=Document.position,document.body.style.top=Document.offsetY,document.body.style.left=Document.offsetX,document.body.style.width=Document.width,document.body.style.height=Document.height,document.documentElement.style.width=Document.documentWidth,document.documentElement.style.height=Document.documentHeight,document.documentElement.style.overflowY=Document.overflowY,window.scrollTo(Document.scrollX,Document.scrollY),Document.position=null,Document.offsetY=null,Document.offsetX=null,Document.width=null,Document.height=null,Document.documentWidth=null,Document.documentHeight=null,Document.overflowY=null,Document.scrollX=null,Document.scrollY=null;}static onPreventScroll(e){onPreventScroll.add(e);}static onResumeScroll(e){onResumeScroll.add(e);}static get scroll(){return scroll||(scroll=new Scroll,lastPageYOffset=window.pageYOffset,lastPageXOffset=window.pageXOffset,scrollIsDown=!1,scrollIsUp=!1,scrollIsLeft=!1,scrollIsRight=!1,window.addEventListener("unload",(()=>scroll.unload()))),scroll}}const updateScrollValue=()=>{const e=window.pageYOffset,t=window.pageXOffset;scrollIsDown=e>lastPageYOffset,scrollIsUp=e<lastPageYOffset,scrollIsRight=t>lastPageXOffset,scrollIsLeft=t<lastPageXOffset,lastPageYOffset=e||window.pageYOffset,lastPageXOffset=t||window.pageXOffset;};class Scroll{constructor(){document.addEventListener("scroll",updateScrollValue,{passive:!0});}get down(){return scrollIsDown}get up(){return scrollIsUp}get left(){return scrollIsLeft}get right(){return scrollIsRight}unload(){document.removeEventListener("scroll",updateScrollValue),scrollIsDown=!1,scrollIsUp=!1,scrollIsLeft=!1,scrollIsRight=!1,lastPageYOffset=window.pageYOffset,lastPageXOffset=window.pageXOffset,scroll=null;}}class Event{static mute(e){return !!t.exists(e)&&(t.isFunction(e.preventDefault)&&e.preventDefault(),t.isFunction(e.stopPropagation)&&e.stopPropagation(),t.isFunction(e.stopImmediatePropagation)&&e.stopImmediatePropagation(),t.exists(e.cancelBubble)&&(e.cancelBubble=!0),!1)}}const readFieldNames=e=>{const t=e.getAttribute("id"),r=[...e.querySelectorAll("[name]")].map((e=>e.name)),n=t?[...document.querySelectorAll(`[form="${t}"]`)].map((e=>e.name)):[];return [...r,...n]},readData=e=>new window.FormData(e),read=e=>{const r={};try{readData(e).forEach(((e,n)=>{const s=r[n];t.isArray(s)?r[n].push(e):t.exists(s)?r[n]=[r[n],e]:r[n]=e;}));}catch(t){[...e.elements].forEach((e=>{const{name:t,type:n,value:s,files:o}=e;if("file"===n)r[t]=o[0];else if("checkbox"===n||"radio"===n)e.checked&&(r[t]=s);else if(e.multiple){const n=[];e.querySelectorAll("option").forEach((e=>e.selected&&n.push(e.value))),r[t]=n.length<2?n[0]:n;}else r[t]=s;}));}return r},readJson=e=>JSON.stringify(read(e)),write=(e,r)=>{[...e.elements].forEach((e=>{/^select$/i.test(e.nodeName)?t.isArray(r[e.name])?[...e.options].forEach((t=>{t.selected=r[e.name].indexOf(t.value)>=0;})):t.exists(r[e.name])&&(e.value=r[e.name]):t.exists(r[e.name])&&("checkbox"===e.type||"radio"===e.type?e.checked=r[e.name]===e.value:e.value=r[e.name]);}));};var index={readFieldNames:readFieldNames,read:read,readData:readData,readJson:readJson,write:write};class Key{constructor(e,t,r={}){this.key=e,this.msKey=t||e,this.altKey=r.altKey||!1,this.ctrlKey=r.ctrlKey||!1,this.metaKey=r.metaKey||!1,this.shiftKey=r.shiftKey||!1;}get alt(){const{key:e,msKey:t,ctrlKey:r,metaKey:n,shiftKey:s}=this;return new Key(e,t,{altKey:!0,ctrlKey:r,metaKey:n,shiftKey:s})}get ctrl(){const{key:e,msKey:t,altKey:r,metaKey:n,shiftKey:s}=this;return new Key(e,t,{altKey:r,ctrlKey:!0,metaKey:n,shiftKey:s})}get meta(){const{key:e,msKey:t,altKey:r,ctrlKey:n,shiftKey:s}=this;return new Key(e,t,{altKey:r,ctrlKey:n,metaKey:!0,shiftKey:s})}get shift(){const{key:e,msKey:t,altKey:r,ctrlKey:n,metaKey:s}=this;return new Key(e,t,{altKey:r,ctrlKey:n,metaKey:s,shiftKey:!0})}equals(e){return e instanceof Key&&this.altKey===e.altKey&&this.ctrlKey===e.ctrlKey&&this.metaKey===e.metaKey&&this.shiftKey===e.shiftKey&&(this.key===e.key||this.msKey===e.msKey)}didFire(e){const{code:t,key:r,altKey:n,ctrlKey:s,metaKey:o,shiftKey:i}=e,a="Dead"===r?t:r;return e&&("ANY"===this.key||this.equals(new Key(a,a,{altKey:n,ctrlKey:s,metaKey:o,shiftKey:i})))}static get press(){return "keypress"}static get down(){return "keydown"}static get up(){return "keyup"}static get any(){return new Key("ANY")}static get esc(){return new Key("Escape","Esc")}static get enter(){return new Key("Enter")}static get space(){return new Key(" ","Spacebar")}static get tab(){return new Key("Tab")}static get left(){return new Key("ArrowLeft","Left")}static get right(){return new Key("ArrowRight","Right")}}class Swipe{constructor(e,t=0){this.didTouchStart=this.didTouchStart.bind(this),this.didTouchEnd=this.didTouchEnd.bind(this),this.didTouchMove=this.didTouchMove.bind(this),e.addEventListener("touchstart",this.didTouchStart,{capture:!1,passive:!0}),e.addEventListener("touchend",this.didTouchEnd,{capture:!1,passive:!0}),e.addEventListener("touchmove",this.didTouchMove,{capture:!1,passive:!0}),this.element=e,this.tolerance=t,this.didSwipeLeft=()=>{},this.didSwipeRight=()=>{},this.didMove=()=>{};}onLeft(e){return this.didSwipeLeft=e,this}onRight(e){return this.didSwipeRight=e,this}onMove(e){return this.didMove=e,this}destroy(){const{element:e}=this;return e.removeEventListener("touchstart",this.didTouchStart,{capture:!1}),e.removeEventListener("touchend",this.didTouchEnd,{capture:!1}),e.removeEventListener("touchmove",this.didTouchMove,{capture:!1}),this}didTouchStart({touches:[e]}){this.touchStartPoint=new O(e.pageX,e.pageY);}didTouchEnd(e){const[t]=e.changedTouches,{touchStartPoint:r}=this,n=new O(t.pageX,t.pageY);n.isLeftOf(r)&&Math.abs(n.distanceFrom(r).x)>this.tolerance&&this.didSwipeLeft(e),n.isRightOf(r)&&Math.abs(n.distanceFrom(r).x)>this.tolerance&&this.didSwipeRight(e);}didTouchMove(e){const[t]=e.touches,{touchStartPoint:r}=this,n=new O(t.pageX,t.pageY);this.didMove({distance:n.distanceFrom(r),up:n.isAbove(r),down:n.isBelow(r),left:n.isLeftOf(r),right:n.isRightOf(r)});}}
4
4
 
5
5
  exports.Device = Device;
6
6
  exports.Document = Document;
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-31267995.js');
6
6
  const index$1 = require('./index-517c4086.js');
7
- const index$2 = require('./index-d6fca091.js');
7
+ const index$2 = require('./index-48c4db4b.js');
8
8
 
9
9
  const ku4CarouselCss = "@-webkit-keyframes ku4-carousel-enter-left{0%{top:0;-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);opacity:0}100%{top:0;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);opacity:1}}@keyframes ku4-carousel-enter-left{0%{top:0;-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);opacity:0}100%{top:0;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);opacity:1}}@-webkit-keyframes ku4-carousel-enter-right{0%{top:0;-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);opacity:0}100%{top:0;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);opacity:1}}@keyframes ku4-carousel-enter-right{0%{top:0;-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);opacity:0}100%{top:0;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);opacity:1}}@-webkit-keyframes ku4-carousel-exit-left{0%{top:0;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);opacity:1}100%{top:0;-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);opacity:0}}@keyframes ku4-carousel-exit-left{0%{top:0;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);opacity:1}100%{top:0;-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);opacity:0}}@-webkit-keyframes ku4-carousel-exit-right{0%{top:0;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);opacity:1}100%{top:0;-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);opacity:0}}@keyframes ku4-carousel-exit-right{0%{top:0;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);opacity:1}100%{top:0;-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);opacity:0}}:host{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;overflow:hidden;background-color:var(--ku4-carousel-background-color, #fff)}.slide-container{position:relative;width:100%;height:100%;overflow:hidden}.controls .next,.controls .prev{position:absolute;display:var(--ku4-carousel-controls-display, block);top:var(--ku4-carousel-controls-top, 0);border:var(--ku4-carousel-controls-border, none);background-color:var(--ku4-carousel-controls-background-color, #fff);font-family:var(--ku4-carousel-controls-font-family, Helvetica, Arial, sans-serif);font-weight:var(--ku4-carousel-controls-font-weight, 400);font-size:var(--ku4-carousel-controls-font-size, 8px);line-height:var(--ku4-carousel-controls-line-height, 12px);opacity:var(--ku4-carousel-controls-opacity, 0.2);z-index:var(--ku4-carousel-controls-z-index, 2)}.controls .next:focus,.controls .prev:focus{background-color:var(--ku4-carousel-controls-focus-background-color, transparent);outline:var(--ku4-carousel-controls-focus-outline, none);opacity:var(--ku4-carousel-controls-focus-opacity, 0.2)}.controls .next:hover,.controls .prev:hover{background-color:var(--ku4-carousel-controls-hover-background-color, transparent);opacity:var(--ku4-carousel-controls-hover-opacity, 1)}.controls .next{right:0;width:var(--ku4-carousel-controls-next-width, 40px);height:var(--ku4-carousel-controls-next-height, 100%);background-image:var(--ku4-carousel-controls-next-background-image);background-repeat:var(--ku4-carousel-controls-next-background-repeat, no-repeat);background-position-x:var(--ku4-carousel-controls-next-background-position-x, 0);background-position-y:var(--ku4-carousel-controls-next-background-position-y, 50%);background-size:var(--ku4-carousel-controls-next-background-size, 100% 100%)}.controls .next:focus{background-image:var(--ku4-carousel-controls-next-focus-background-image);background-repeat:var(--ku4-carousel-controls-next-focus-background-repeat, no-repeat);background-position-x:var(--ku4-carousel-controls-next-focus-background-position-x, 0);background-position-y:var(--ku4-carousel-controls-next-focus-background-position-y, 50%);background-size:var(--ku4-carousel-controls-next-focus-background-size, 100% 100%)}.controls .next:hover{background-image:var(--ku4-carousel-controls-next-hover-background-image);background-repeat:var(--ku4-carousel-controls-next-hover-background-repeat, no-repeat);background-position-x:var(--ku4-carousel-controls-next-hover-background-position-x, 0);background-position-y:var(--ku4-carousel-controls-next-hover-background-position-y, 50%);background-size:var(--ku4-carousel-controls-next-hover-background-size, 100% 100%)}.controls .prev{left:0;width:var(--ku4-carousel-controls-next-width, 40px);height:var(--ku4-carousel-controls-next-height, 100%);background-image:var(--ku4-carousel-controls-previous-background-image);background-repeat:var(--ku4-carousel-controls-previous-background-repeat, no-repeat);background-position-x:var(--ku4-carousel-controls-previous-background-position-x, 0);background-position-y:var(--ku4-carousel-controls-previous-background-position-y, 50%);background-size:var(--ku4-carousel-controls-previous-background-size, 100% 100%)}.controls .prev:focus{background-image:var(--ku4-carousel-controls-previous-focus-background-image);background-repeat:var(--ku4-carousel-controls-previous-focus-background-repeat, no-repeat);background-position-x:var(--ku4-carousel-controls-previous-focus-background-position-x, 0);background-position-y:var(--ku4-carousel-controls-previous-focus-background-position-y, 50%);background-size:var(--ku4-carousel-controls-previous-focus-background-size, 100% 100%)}.controls .prev:hover{background-image:var(--ku4-carousel-controls-previous-hover-background-image);background-repeat:var(--ku4-carousel-controls-previous-hover-background-repeat, no-repeat);background-position-x:var(--ku4-carousel-controls-previous-hover-background-position-x, 0);background-position-y:var(--ku4-carousel-controls-previous-hover-background-position-y, 50%);background-size:var(--ku4-carousel-controls-previous-hover-background-size, 100% 100%)}.pages{position:absolute;display:var(--ku4-carousel-pages-display, block);top:var(--ku4-carousel-pages-top, auto);bottom:var(--ku4-carousel-pages-bottom, 4px);width:var(--ku4-carousel-pages-width, auto);height:var(--ku4-carousel-pages-height, 20px);background-color:var(--ku4-carousel-pages-background-color, transparent);opacity:var(--ku4-carousel-pages-opacity, 0.5);text-align:center;z-index:3}.pages-text{display:inline-block;padding:var(--ku4-carousel-pages-text-padding, 4px);font-family:var(--ku4-carousel-pages-text-font-family, Helvetica, Arial, sans-serif);font-weight:var(--ku4-carousel-pages-text-font-weight, 600);font-size:var(--ku4-carousel-pages-text-font-size, 14px);line-height:var(--ku4-carousel-pages-text-line-height, 16px);color:var(--ku4-carousel-pages-text-color, #aaa)}::slotted(*){position:absolute;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;top:0;left:-100%;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}::slotted(.inactive){position:absolute;height:100%;left:0}::slotted(.inactive.prev){-webkit-animation-name:var(--ku4-carousel-animation-inactive-previous-name, ku4-carousel-exit-right);animation-name:var(--ku4-carousel-animation-inactive-previous-name, ku4-carousel-exit-right);-webkit-animation-duration:var(--ku4-carousel-animation-duration, 0.4s);animation-duration:var(--ku4-carousel-animation-duration, 0.4s);-webkit-animation-timing-function:var(--ku4-carousel-animation-timing-function);animation-timing-function:var(--ku4-carousel-animation-timing-function);-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}::slotted(.inactive.next){-webkit-animation-name:var(--ku4-carousel-animation-inactive-next-name, ku4-carousel-exit-left);animation-name:var(--ku4-carousel-animation-inactive-next-name, ku4-carousel-exit-left);-webkit-animation-duration:var(--ku4-carousel-animation-duration, 0.4s);animation-duration:var(--ku4-carousel-animation-duration, 0.4s);-webkit-animation-timing-function:var(--ku4-carousel-animation-timing-function);animation-timing-function:var(--ku4-carousel-animation-timing-function);-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}::slotted(.active){position:relative;top:0;left:0;width:auto;height:100%;z-index:1}::slotted(.active.prev){-webkit-animation-name:var(--ku4-carousel-animation-active-previous-name, ku4-carousel-enter-left);animation-name:var(--ku4-carousel-animation-active-previous-name, ku4-carousel-enter-left);-webkit-animation-duration:var(--ku4-carousel-animation-duration, 0.4s);animation-duration:var(--ku4-carousel-animation-duration, 0.4s);-webkit-animation-timing-function:var(--ku4-carousel-animation-timing-function, ease);animation-timing-function:var(--ku4-carousel-animation-timing-function, ease);-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}::slotted(.active.next){-webkit-animation-name:var(--ku4-carousel-animation-active-next-name, ku4-carousel-enter-right);animation-name:var(--ku4-carousel-animation-active-next-name, ku4-carousel-enter-right);-webkit-animation-duration:var(--ku4-carousel-animation-duration, 0.4s);animation-duration:var(--ku4-carousel-animation-duration, 0.4s);-webkit-animation-timing-function:var(--ku4-carousel-animation-timing-function, ease);animation-timing-function:var(--ku4-carousel-animation-timing-function, ease);-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards}@media (hover: hover){.controls:hover{background-color:var(--ku4-carousel-controls-focus-background-color, #fff)}}";
10
10
 
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index$1 = require('./index-31267995.js');
6
6
  const index$2 = require('./index-517c4086.js');
7
- const index = require('./index-d6fca091.js');
7
+ const index = require('./index-48c4db4b.js');
8
8
 
9
9
  /**
10
10
  * Sets aria-hidden attribute for passed elements
@@ -4,11 +4,12 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-31267995.js');
6
6
  const index$2 = require('./index-517c4086.js');
7
- const index$1 = require('./index-d6fca091.js');
7
+ const index$1 = require('./index-48c4db4b.js');
8
8
 
9
9
  const Ku4Form = class {
10
10
  constructor(hostRef) {
11
11
  index.registerInstance(this, hostRef);
12
+ this.didValidate = index.createEvent(this, "validate", 7);
12
13
  this.validate = this.validate.bind(this);
13
14
  this.handleReset = this.handleReset.bind(this);
14
15
  }
@@ -22,13 +23,15 @@ const Ku4Form = class {
22
23
  /**
23
24
  * Validates this form. This method is automatically called
24
25
  * internally on submit of the form only allowing a successful
25
- * submit if the form is valid.
26
+ * submit if the form is valid.
26
27
  */
27
28
  async validate() {
28
29
  const { fields } = this;
29
30
  const methods = fields.map(field => field.validate());
30
31
  this.isValid = await Promise.all(methods).then(values => !values.some(v => v === false));
32
+ this.valid = this.isValid;
31
33
  this.invalid = !this.isValid;
34
+ this.didValidate.emit(this.isValid);
32
35
  return this.isValid;
33
36
  }
34
37
  /**
@@ -50,7 +53,9 @@ const Ku4Form = class {
50
53
  field.invalid = true;
51
54
  }
52
55
  }
53
- this.invalid = true;
56
+ this.isValid = false;
57
+ this.valid = this.isValid;
58
+ this.invalid = !this.isValid;
54
59
  return this;
55
60
  }
56
61
  /**
@@ -67,7 +72,7 @@ const Ku4Form = class {
67
72
  Object.keys(data).forEach((name) => {
68
73
  try {
69
74
  this.form.querySelector(`[name="${name}"]`)
70
- .dispatchEvent(new Event('change'));
75
+ .dispatchEvent(new window.Event('change'));
71
76
  }
72
77
  catch (e) {
73
78
  /* Fail silently */
@@ -83,6 +88,7 @@ const Ku4Form = class {
83
88
  }
84
89
  handleReset() {
85
90
  this.isValid = true;
91
+ this.valid = this.isValid;
86
92
  this.invalid = !this.isValid;
87
93
  }
88
94
  componentWillLoad() {
@@ -121,7 +121,7 @@ const Ku4Mask = class {
121
121
  const inputUnmasked = index$1.a.unmask(input.value, template, char);
122
122
  const valueUnmasked = index$1.a.unmask(this.value, template, char);
123
123
  this.value = inputUnmasked !== valueUnmasked
124
- ? index$1.a.mask(input.value, template, char)
124
+ ? index$1.a.mask(inputUnmasked, template, char)
125
125
  : index$1.a.mask(valueUnmasked, template, char);
126
126
  index$1.Y(0).then(() => {
127
127
  const index = input.value.search(chars);
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-31267995.js');
6
6
  const index$2 = require('./index-517c4086.js');
7
- const index$1 = require('./index-d6fca091.js');
7
+ const index$1 = require('./index-48c4db4b.js');
8
8
 
9
9
  const ku4ModalCss = "@-webkit-keyframes ku4-modal-content-enter{0%{-webkit-transform:var(--ku4-modal-content-animation-start-transform, scale(0.5));transform:var(--ku4-modal-content-animation-start-transform, scale(0.5));opacity:var(--ku4-modal-content-animation-start-opacity, 0)}50%{-webkit-transform:var(--ku4-modal-content-animation-mid-transform, scale(1.2));transform:var(--ku4-modal-content-animation-mid-transform, scale(1.2));opacity:var(--ku4-modal-content-animation-mid-opacity, 0.8)}100%{-webkit-transform:var(--ku4-modal-content-animation-end-transform, scale(1));transform:var(--ku4-modal-content-animation-end-transform, scale(1));opacity:var(--ku4-modal-content-animation-end-opacity, 1)}}@keyframes ku4-modal-content-enter{0%{-webkit-transform:var(--ku4-modal-content-animation-start-transform, scale(0.5));transform:var(--ku4-modal-content-animation-start-transform, scale(0.5));opacity:var(--ku4-modal-content-animation-start-opacity, 0)}50%{-webkit-transform:var(--ku4-modal-content-animation-mid-transform, scale(1.2));transform:var(--ku4-modal-content-animation-mid-transform, scale(1.2));opacity:var(--ku4-modal-content-animation-mid-opacity, 0.8)}100%{-webkit-transform:var(--ku4-modal-content-animation-end-transform, scale(1));transform:var(--ku4-modal-content-animation-end-transform, scale(1));opacity:var(--ku4-modal-content-animation-end-opacity, 1)}}@-webkit-keyframes ku4-modal-overlay-enter{0%{-webkit-transform:var(--ku4-modal-overlay-animation-start-transform, none);transform:var(--ku4-modal-overlay-animation-start-transform, none);opacity:var(--ku4-modal-overlay-animation-start-opacity, 0)}50%{-webkit-transform:var(--ku4-modal-overlay-animation-mid-transform, none);transform:var(--ku4-modal-overlay-animation-mid-transform, none);opacity:var(--ku4-modal-overlay-animation-mid-opacity, 0.35)}100%{-webkit-transform:var(--ku4-modal-overlay-animation-end-transform, none);transform:var(--ku4-modal-overlay-animation-end-transform, none);opacity:var(--ku4-modal-overlay-animation-end-opacity, 0.4)}}@keyframes ku4-modal-overlay-enter{0%{-webkit-transform:var(--ku4-modal-overlay-animation-start-transform, none);transform:var(--ku4-modal-overlay-animation-start-transform, none);opacity:var(--ku4-modal-overlay-animation-start-opacity, 0)}50%{-webkit-transform:var(--ku4-modal-overlay-animation-mid-transform, none);transform:var(--ku4-modal-overlay-animation-mid-transform, none);opacity:var(--ku4-modal-overlay-animation-mid-opacity, 0.35)}100%{-webkit-transform:var(--ku4-modal-overlay-animation-end-transform, none);transform:var(--ku4-modal-overlay-animation-end-transform, none);opacity:var(--ku4-modal-overlay-animation-end-opacity, 0.4)}}:host{position:fixed;display:none;top:0;left:0;width:100vw;height:100vh;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;background:transparent;overflow:auto;-webkit-transform-style:var(--ku4-modal-transform-style, initial);transform-style:var(--ku4-modal-transform-style, initial)}.ku4-modal-content{position:relative;top:0;left:0}.ku4-modal-overlay{position:fixed;display:-ms-flexbox;display:flex;top:0;left:0;width:100%;height:100%;opacity:0;background:var(--ku4-modal-overlay-background, #000)}:host([visible]){display:-ms-flexbox;display:flex;z-index:var(--ku4-modal-z-index, 5)}:host([visible]) .ku4-modal-content{-webkit-animation-name:ku4-modal-content-enter;animation-name:ku4-modal-content-enter;-webkit-animation-duration:var(--ku4-modal-content-animation-duration, 0.4s);animation-duration:var(--ku4-modal-content-animation-duration, 0.4s);-webkit-animation-timing-function:var(--ku4-modal-content-animation-timing-function, ease);animation-timing-function:var(--ku4-modal-content-animation-timing-function, ease);-webkit-transform:var(--ku4-modal-content-transform, none);transform:var(--ku4-modal-content-transform, none);opacity:var(--ku4-modal-content-opacity, 1);z-index:calc(var(--ku4-modal-z-index, 5) + 1)}:host([visible]) .ku4-modal-overlay{-webkit-animation-name:ku4-modal-overlay-enter;animation-name:ku4-modal-overlay-enter;-webkit-animation-duration:var(--ku4-modal-overlay-animation-duration, 0.4s);animation-duration:var(--ku4-modal-overlay-animation-duration, 0.4s);-webkit-animation-timing-function:var(--ku4-modal-overlay-animation-timing-function, ease);animation-timing-function:var(--ku4-modal-overlay-animation-timing-function, ease);-webkit-transform:var(--ku4-modal-overlay-transform, none);transform:var(--ku4-modal-overlay-transform, none);opacity:var(--ku4-modal-overlay-opacity, 0.4);z-index:calc(var(--ku4-modal-z-index, 5))}:host([visible=false]){display:none}";
10
10
 
@@ -19,9 +19,14 @@ const Ku4Modal = class {
19
19
  // eslint-disable-next-line @stencil/strict-mutable
20
20
  this.visible = false;
21
21
  /**
22
+ * DEPRECATED - Misspelled use `dismissible`
22
23
  * Will not dismiss by clicking and touching outside when false;
23
24
  */
24
25
  this.dismissable = true;
26
+ /**
27
+ * Will not dismiss by clicking and touching outside when false;
28
+ */
29
+ this.dismissible = this.dismissable;
25
30
  }
26
31
  handleVisibility(value) {
27
32
  if (value) {
@@ -67,7 +72,7 @@ const Ku4Modal = class {
67
72
  }
68
73
  }
69
74
  render() {
70
- return (index.h(index.Host, { role: "dialog", "aria-modal": "true" }, index.h("section", { class: "ku4-modal-content" }, index.h("slot", null)), index.h("section", { class: "ku4-modal-overlay", onClick: () => this.dismissable && this.dismiss(), "aria-hidden": "true" })));
75
+ return (index.h(index.Host, { role: "dialog", "aria-modal": "true" }, index.h("section", { class: "ku4-modal-content" }, index.h("slot", null)), index.h("section", { class: "ku4-modal-overlay", onClick: () => this.dismissible && this.dismiss(), "aria-hidden": "true" })));
71
76
  }
72
77
  get host() { return index.getElement(this); }
73
78
  static get watchers() { return {
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index$2 = require('./index-31267995.js');
6
6
  const index$3 = require('./index-517c4086.js');
7
- const index$1 = require('./index-d6fca091.js');
7
+ const index$1 = require('./index-48c4db4b.js');
8
8
 
9
9
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
10
10
 
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-31267995.js');
6
- const index$1 = require('./index-d6fca091.js');
6
+ const index$1 = require('./index-48c4db4b.js');
7
7
  const uid = require('./uid-8ec2f63e.js');
8
8
  require('./index-517c4086.js');
9
9
 
@@ -127,5 +127,5 @@ const patchCloneNodeFix = (HTMLElementPrototype) => {
127
127
 
128
128
  patchBrowser().then(options => {
129
129
  appGlobals.globalScripts();
130
- return index.bootstrapLazy([["ku4-carousel.cjs",[[1,"ku4-carousel",{"swipeTolerance":[2,"swipe-tolerance"],"auto":[4],"noSwipe":[4,"no-swipe"],"delay":[2],"slideState":[32],"next":[64],"previous":[64],"slideTo":[64],"pause":[64],"play":[64]}]]],["ku4-carousel-controls.cjs",[[1,"ku4-carousel-controls",{"for":[1]}]]],["ku4-carousel-slide.cjs",[[1,"ku4-carousel-slide",{"name":[1544],"active":[32],"classList":[32],"slideIn":[64],"slideOut":[64],"activate":[64],"deactivate":[64]}]]],["ku4-col.cjs",[[1,"ku4-col",{"startXs":[2,"start-xs"],"startSm":[2,"start-sm"],"startMd":[2,"start-md"],"startLg":[2,"start-lg"],"spanXs":[2,"span-xs"],"spanSm":[2,"span-sm"],"spanMd":[2,"span-md"],"spanLg":[2,"span-lg"],"orderXs":[2,"order-xs"],"orderSm":[2,"order-sm"],"orderMd":[2,"order-md"],"orderLg":[2,"order-lg"]}]]],["ku4-drawer.cjs",[[1,"ku4-drawer",{"bottom":[516],"left":[516],"right":[516],"top":[516],"size":[1],"open":[1540],"toggle":[64]}]]],["ku4-feature.cjs",[[1,"ku4-feature",{"on":[4],"policy":[1],"enabled":[32]}]]],["ku4-focus-trap.cjs",[[1,"ku4-focus-trap",{"active":[1540],"include":[1],"exclude":[1],"excludeShadow":[1,"exclude-shadow"],"initial":[1],"return":[1],"activate":[64],"deactivate":[64]}]]],["ku4-form.cjs",[[4,"ku4-form",{"invalid":[1540],"listFieldNames":[64],"validate":[64],"invalidate":[64],"read":[64],"write":[64]}]]],["ku4-grid.cjs",[[1,"ku4-grid",{"columnsXs":[2,"columns-xs"],"columnsSm":[2,"columns-sm"],"columnsMd":[2,"columns-md"],"columnsLg":[2,"columns-lg"],"offsetLeftXs":[2,"offset-left-xs"],"offsetLeftSm":[2,"offset-left-sm"],"offsetLeftMd":[2,"offset-left-md"],"offsetLeftLg":[2,"offset-left-lg"],"offsetRight":[2,"offset-right"],"offsetRightXs":[2,"offset-right-xs"],"offsetRightSm":[2,"offset-right-sm"],"offsetRightMd":[2,"offset-right-md"],"offsetRightLg":[2,"offset-right-lg"],"offsetXs":[2,"offset-xs"],"offsetSm":[2,"offset-sm"],"offsetMd":[2,"offset-md"],"offsetLg":[2,"offset-lg"]}]]],["ku4-label.cjs",[[1,"ku4-label",{"for":[1],"value":[1],"empty":[32]}]]],["ku4-mask.cjs",[[1,"ku4-mask",{"for":[1],"template":[1],"ban":[1],"pattern":[1],"char":[1],"hidden":[4]}]]],["ku4-modal.cjs",[[1,"ku4-modal",{"visible":[1540],"dismissable":[4],"focusTrap":[1,"focus-trap"],"display":[64],"dismiss":[64]},[[8,"keyup","handleKeyUp"]]]]],["ku4-panel.cjs",[[1,"ku4-panel",{"open":[1540],"maxHeight":[32],"toggle":[64],"close":[64]},[[0,"transitionend","handleTransitionEnd"]]]]],["ku4-preview.cjs",[[1,"ku4-preview",{"for":[1],"src":[1],"altsrc":[1],"orientation":[2],"resolutionX":[2,"resolution-x"],"resolutionY":[2,"resolution-y"],"capture":[1],"status":[1537],"alt":[1],"currentSrc":[32],"read":[64]}]]],["ku4-tab.cjs",[[1,"ku4-tab",{"selected":[1540],"panel":[32],"select":[64],"deselect":[64],"connect":[64]},[[0,"click","handleClick"],[0,"keyup","handleKeyUp"]]]]],["ku4-tab-list.cjs",[[1,"ku4-tab-list",{"open":[64]},[[0,"ku4TabClick","handleTabClick"],[0,"ku4TabKeyup","handleTabKeyUp"]]]]],["ku4-tab-panel.cjs",[[1,"ku4-tab-panel",{"selected":[1540],"maxHeight":[32],"tab":[32],"select":[64],"deselect":[64],"connect":[64]},[[0,"transitionend","handleTransitionEnd"]]]]],["ku4-table.cjs",[[4,"ku4-table",{"stackXs":[1537,"stack-xs"],"stackSm":[1537,"stack-sm"]}]]],["ku4-tooltip.cjs",[[1,"ku4-tooltip",{"element":[1],"top":[4],"left":[4],"bottom":[4],"right":[4],"debug":[4],"show":[64],"hide":[64]}]]],["ku4-validation.cjs",[[1,"ku4-validation",{"for":[513],"element":[513],"pattern":[1],"flags":[1],"values":[1],"checked":[4],"method":[1],"invalid":[1540],"disabled":[1540],"hidden":[1540],"isValid":[32],"validate":[64]}]]]], options);
130
+ return index.bootstrapLazy([["ku4-carousel.cjs",[[1,"ku4-carousel",{"swipeTolerance":[2,"swipe-tolerance"],"auto":[4],"noSwipe":[4,"no-swipe"],"delay":[2],"slideState":[32],"next":[64],"previous":[64],"slideTo":[64],"pause":[64],"play":[64]}]]],["ku4-carousel-controls.cjs",[[1,"ku4-carousel-controls",{"for":[1]}]]],["ku4-carousel-slide.cjs",[[1,"ku4-carousel-slide",{"name":[1544],"active":[32],"classList":[32],"slideIn":[64],"slideOut":[64],"activate":[64],"deactivate":[64]}]]],["ku4-col.cjs",[[1,"ku4-col",{"startXs":[2,"start-xs"],"startSm":[2,"start-sm"],"startMd":[2,"start-md"],"startLg":[2,"start-lg"],"spanXs":[2,"span-xs"],"spanSm":[2,"span-sm"],"spanMd":[2,"span-md"],"spanLg":[2,"span-lg"],"orderXs":[2,"order-xs"],"orderSm":[2,"order-sm"],"orderMd":[2,"order-md"],"orderLg":[2,"order-lg"]}]]],["ku4-drawer.cjs",[[1,"ku4-drawer",{"bottom":[516],"left":[516],"right":[516],"top":[516],"size":[1],"open":[1540],"toggle":[64]}]]],["ku4-feature.cjs",[[1,"ku4-feature",{"on":[4],"policy":[1],"enabled":[32]}]]],["ku4-focus-trap.cjs",[[1,"ku4-focus-trap",{"active":[1540],"include":[1],"exclude":[1],"excludeShadow":[1,"exclude-shadow"],"initial":[1],"return":[1],"activate":[64],"deactivate":[64]}]]],["ku4-form.cjs",[[4,"ku4-form",{"valid":[1028],"invalid":[1540],"listFieldNames":[64],"validate":[64],"invalidate":[64],"read":[64],"write":[64]}]]],["ku4-grid.cjs",[[1,"ku4-grid",{"columnsXs":[2,"columns-xs"],"columnsSm":[2,"columns-sm"],"columnsMd":[2,"columns-md"],"columnsLg":[2,"columns-lg"],"offsetLeftXs":[2,"offset-left-xs"],"offsetLeftSm":[2,"offset-left-sm"],"offsetLeftMd":[2,"offset-left-md"],"offsetLeftLg":[2,"offset-left-lg"],"offsetRight":[2,"offset-right"],"offsetRightXs":[2,"offset-right-xs"],"offsetRightSm":[2,"offset-right-sm"],"offsetRightMd":[2,"offset-right-md"],"offsetRightLg":[2,"offset-right-lg"],"offsetXs":[2,"offset-xs"],"offsetSm":[2,"offset-sm"],"offsetMd":[2,"offset-md"],"offsetLg":[2,"offset-lg"]}]]],["ku4-label.cjs",[[1,"ku4-label",{"for":[1],"value":[1],"empty":[32]}]]],["ku4-mask.cjs",[[1,"ku4-mask",{"for":[1],"template":[1],"ban":[1],"pattern":[1],"char":[1],"hidden":[4]}]]],["ku4-modal.cjs",[[1,"ku4-modal",{"visible":[1540],"dismissable":[4],"dismissible":[4],"focusTrap":[1,"focus-trap"],"display":[64],"dismiss":[64]},[[8,"keyup","handleKeyUp"]]]]],["ku4-panel.cjs",[[1,"ku4-panel",{"open":[1540],"maxHeight":[32],"toggle":[64],"close":[64]},[[0,"transitionend","handleTransitionEnd"]]]]],["ku4-preview.cjs",[[1,"ku4-preview",{"for":[1],"src":[1],"altsrc":[1],"orientation":[2],"resolutionX":[2,"resolution-x"],"resolutionY":[2,"resolution-y"],"capture":[1],"status":[1537],"alt":[1],"currentSrc":[32],"read":[64]}]]],["ku4-tab.cjs",[[1,"ku4-tab",{"selected":[1540],"panel":[32],"select":[64],"deselect":[64],"connect":[64]},[[0,"click","handleClick"],[0,"keyup","handleKeyUp"]]]]],["ku4-tab-list.cjs",[[1,"ku4-tab-list",{"open":[64]},[[0,"ku4TabClick","handleTabClick"],[0,"ku4TabKeyup","handleTabKeyUp"]]]]],["ku4-tab-panel.cjs",[[1,"ku4-tab-panel",{"selected":[1540],"maxHeight":[32],"tab":[32],"select":[64],"deselect":[64],"connect":[64]},[[0,"transitionend","handleTransitionEnd"]]]]],["ku4-table.cjs",[[4,"ku4-table",{"stackXs":[1537,"stack-xs"],"stackSm":[1537,"stack-sm"]}]]],["ku4-tooltip.cjs",[[1,"ku4-tooltip",{"element":[1],"top":[4],"left":[4],"bottom":[4],"right":[4],"debug":[4],"show":[64],"hide":[64]}]]],["ku4-validation.cjs",[[1,"ku4-validation",{"for":[513],"element":[513],"pattern":[1],"flags":[1],"values":[1],"checked":[4],"method":[1],"invalid":[1540],"disabled":[1540],"hidden":[1540],"isValid":[32],"validate":[64]}]]]], options);
131
131
  });
@@ -30,7 +30,7 @@ const defineCustomElements = (win, options) => {
30
30
  if (typeof window === 'undefined') return Promise.resolve();
31
31
  return patchEsm().then(() => {
32
32
  appGlobals.globalScripts();
33
- return index.bootstrapLazy([["ku4-carousel.cjs",[[1,"ku4-carousel",{"swipeTolerance":[2,"swipe-tolerance"],"auto":[4],"noSwipe":[4,"no-swipe"],"delay":[2],"slideState":[32],"next":[64],"previous":[64],"slideTo":[64],"pause":[64],"play":[64]}]]],["ku4-carousel-controls.cjs",[[1,"ku4-carousel-controls",{"for":[1]}]]],["ku4-carousel-slide.cjs",[[1,"ku4-carousel-slide",{"name":[1544],"active":[32],"classList":[32],"slideIn":[64],"slideOut":[64],"activate":[64],"deactivate":[64]}]]],["ku4-col.cjs",[[1,"ku4-col",{"startXs":[2,"start-xs"],"startSm":[2,"start-sm"],"startMd":[2,"start-md"],"startLg":[2,"start-lg"],"spanXs":[2,"span-xs"],"spanSm":[2,"span-sm"],"spanMd":[2,"span-md"],"spanLg":[2,"span-lg"],"orderXs":[2,"order-xs"],"orderSm":[2,"order-sm"],"orderMd":[2,"order-md"],"orderLg":[2,"order-lg"]}]]],["ku4-drawer.cjs",[[1,"ku4-drawer",{"bottom":[516],"left":[516],"right":[516],"top":[516],"size":[1],"open":[1540],"toggle":[64]}]]],["ku4-feature.cjs",[[1,"ku4-feature",{"on":[4],"policy":[1],"enabled":[32]}]]],["ku4-focus-trap.cjs",[[1,"ku4-focus-trap",{"active":[1540],"include":[1],"exclude":[1],"excludeShadow":[1,"exclude-shadow"],"initial":[1],"return":[1],"activate":[64],"deactivate":[64]}]]],["ku4-form.cjs",[[4,"ku4-form",{"invalid":[1540],"listFieldNames":[64],"validate":[64],"invalidate":[64],"read":[64],"write":[64]}]]],["ku4-grid.cjs",[[1,"ku4-grid",{"columnsXs":[2,"columns-xs"],"columnsSm":[2,"columns-sm"],"columnsMd":[2,"columns-md"],"columnsLg":[2,"columns-lg"],"offsetLeftXs":[2,"offset-left-xs"],"offsetLeftSm":[2,"offset-left-sm"],"offsetLeftMd":[2,"offset-left-md"],"offsetLeftLg":[2,"offset-left-lg"],"offsetRight":[2,"offset-right"],"offsetRightXs":[2,"offset-right-xs"],"offsetRightSm":[2,"offset-right-sm"],"offsetRightMd":[2,"offset-right-md"],"offsetRightLg":[2,"offset-right-lg"],"offsetXs":[2,"offset-xs"],"offsetSm":[2,"offset-sm"],"offsetMd":[2,"offset-md"],"offsetLg":[2,"offset-lg"]}]]],["ku4-label.cjs",[[1,"ku4-label",{"for":[1],"value":[1],"empty":[32]}]]],["ku4-mask.cjs",[[1,"ku4-mask",{"for":[1],"template":[1],"ban":[1],"pattern":[1],"char":[1],"hidden":[4]}]]],["ku4-modal.cjs",[[1,"ku4-modal",{"visible":[1540],"dismissable":[4],"focusTrap":[1,"focus-trap"],"display":[64],"dismiss":[64]},[[8,"keyup","handleKeyUp"]]]]],["ku4-panel.cjs",[[1,"ku4-panel",{"open":[1540],"maxHeight":[32],"toggle":[64],"close":[64]},[[0,"transitionend","handleTransitionEnd"]]]]],["ku4-preview.cjs",[[1,"ku4-preview",{"for":[1],"src":[1],"altsrc":[1],"orientation":[2],"resolutionX":[2,"resolution-x"],"resolutionY":[2,"resolution-y"],"capture":[1],"status":[1537],"alt":[1],"currentSrc":[32],"read":[64]}]]],["ku4-tab.cjs",[[1,"ku4-tab",{"selected":[1540],"panel":[32],"select":[64],"deselect":[64],"connect":[64]},[[0,"click","handleClick"],[0,"keyup","handleKeyUp"]]]]],["ku4-tab-list.cjs",[[1,"ku4-tab-list",{"open":[64]},[[0,"ku4TabClick","handleTabClick"],[0,"ku4TabKeyup","handleTabKeyUp"]]]]],["ku4-tab-panel.cjs",[[1,"ku4-tab-panel",{"selected":[1540],"maxHeight":[32],"tab":[32],"select":[64],"deselect":[64],"connect":[64]},[[0,"transitionend","handleTransitionEnd"]]]]],["ku4-table.cjs",[[4,"ku4-table",{"stackXs":[1537,"stack-xs"],"stackSm":[1537,"stack-sm"]}]]],["ku4-tooltip.cjs",[[1,"ku4-tooltip",{"element":[1],"top":[4],"left":[4],"bottom":[4],"right":[4],"debug":[4],"show":[64],"hide":[64]}]]],["ku4-validation.cjs",[[1,"ku4-validation",{"for":[513],"element":[513],"pattern":[1],"flags":[1],"values":[1],"checked":[4],"method":[1],"invalid":[1540],"disabled":[1540],"hidden":[1540],"isValid":[32],"validate":[64]}]]]], options);
33
+ return index.bootstrapLazy([["ku4-carousel.cjs",[[1,"ku4-carousel",{"swipeTolerance":[2,"swipe-tolerance"],"auto":[4],"noSwipe":[4,"no-swipe"],"delay":[2],"slideState":[32],"next":[64],"previous":[64],"slideTo":[64],"pause":[64],"play":[64]}]]],["ku4-carousel-controls.cjs",[[1,"ku4-carousel-controls",{"for":[1]}]]],["ku4-carousel-slide.cjs",[[1,"ku4-carousel-slide",{"name":[1544],"active":[32],"classList":[32],"slideIn":[64],"slideOut":[64],"activate":[64],"deactivate":[64]}]]],["ku4-col.cjs",[[1,"ku4-col",{"startXs":[2,"start-xs"],"startSm":[2,"start-sm"],"startMd":[2,"start-md"],"startLg":[2,"start-lg"],"spanXs":[2,"span-xs"],"spanSm":[2,"span-sm"],"spanMd":[2,"span-md"],"spanLg":[2,"span-lg"],"orderXs":[2,"order-xs"],"orderSm":[2,"order-sm"],"orderMd":[2,"order-md"],"orderLg":[2,"order-lg"]}]]],["ku4-drawer.cjs",[[1,"ku4-drawer",{"bottom":[516],"left":[516],"right":[516],"top":[516],"size":[1],"open":[1540],"toggle":[64]}]]],["ku4-feature.cjs",[[1,"ku4-feature",{"on":[4],"policy":[1],"enabled":[32]}]]],["ku4-focus-trap.cjs",[[1,"ku4-focus-trap",{"active":[1540],"include":[1],"exclude":[1],"excludeShadow":[1,"exclude-shadow"],"initial":[1],"return":[1],"activate":[64],"deactivate":[64]}]]],["ku4-form.cjs",[[4,"ku4-form",{"valid":[1028],"invalid":[1540],"listFieldNames":[64],"validate":[64],"invalidate":[64],"read":[64],"write":[64]}]]],["ku4-grid.cjs",[[1,"ku4-grid",{"columnsXs":[2,"columns-xs"],"columnsSm":[2,"columns-sm"],"columnsMd":[2,"columns-md"],"columnsLg":[2,"columns-lg"],"offsetLeftXs":[2,"offset-left-xs"],"offsetLeftSm":[2,"offset-left-sm"],"offsetLeftMd":[2,"offset-left-md"],"offsetLeftLg":[2,"offset-left-lg"],"offsetRight":[2,"offset-right"],"offsetRightXs":[2,"offset-right-xs"],"offsetRightSm":[2,"offset-right-sm"],"offsetRightMd":[2,"offset-right-md"],"offsetRightLg":[2,"offset-right-lg"],"offsetXs":[2,"offset-xs"],"offsetSm":[2,"offset-sm"],"offsetMd":[2,"offset-md"],"offsetLg":[2,"offset-lg"]}]]],["ku4-label.cjs",[[1,"ku4-label",{"for":[1],"value":[1],"empty":[32]}]]],["ku4-mask.cjs",[[1,"ku4-mask",{"for":[1],"template":[1],"ban":[1],"pattern":[1],"char":[1],"hidden":[4]}]]],["ku4-modal.cjs",[[1,"ku4-modal",{"visible":[1540],"dismissable":[4],"dismissible":[4],"focusTrap":[1,"focus-trap"],"display":[64],"dismiss":[64]},[[8,"keyup","handleKeyUp"]]]]],["ku4-panel.cjs",[[1,"ku4-panel",{"open":[1540],"maxHeight":[32],"toggle":[64],"close":[64]},[[0,"transitionend","handleTransitionEnd"]]]]],["ku4-preview.cjs",[[1,"ku4-preview",{"for":[1],"src":[1],"altsrc":[1],"orientation":[2],"resolutionX":[2,"resolution-x"],"resolutionY":[2,"resolution-y"],"capture":[1],"status":[1537],"alt":[1],"currentSrc":[32],"read":[64]}]]],["ku4-tab.cjs",[[1,"ku4-tab",{"selected":[1540],"panel":[32],"select":[64],"deselect":[64],"connect":[64]},[[0,"click","handleClick"],[0,"keyup","handleKeyUp"]]]]],["ku4-tab-list.cjs",[[1,"ku4-tab-list",{"open":[64]},[[0,"ku4TabClick","handleTabClick"],[0,"ku4TabKeyup","handleTabKeyUp"]]]]],["ku4-tab-panel.cjs",[[1,"ku4-tab-panel",{"selected":[1540],"maxHeight":[32],"tab":[32],"select":[64],"deselect":[64],"connect":[64]},[[0,"transitionend","handleTransitionEnd"]]]]],["ku4-table.cjs",[[4,"ku4-table",{"stackXs":[1537,"stack-xs"],"stackSm":[1537,"stack-sm"]}]]],["ku4-tooltip.cjs",[[1,"ku4-tooltip",{"element":[1],"top":[4],"left":[4],"bottom":[4],"right":[4],"debug":[4],"show":[64],"hide":[64]}]]],["ku4-validation.cjs",[[1,"ku4-validation",{"for":[513],"element":[513],"pattern":[1],"flags":[1],"values":[1],"checked":[4],"method":[1],"invalid":[1540],"disabled":[1540],"hidden":[1540],"isValid":[32],"validate":[64]}]]]], options);
34
34
  });
35
35
  };
36
36
 
@@ -1,4 +1,4 @@
1
- import { Component, Method, Element, h, Prop } from '@stencil/core';
1
+ import { Component, Method, Element, h, Prop, Event } from '@stencil/core';
2
2
  import { Assert } from 'ku4es-kernel';
3
3
  import { form } from 'ku4es-ui-kernel';
4
4
  /**
@@ -19,13 +19,15 @@ export class Ku4Form {
19
19
  /**
20
20
  * Validates this form. This method is automatically called
21
21
  * internally on submit of the form only allowing a successful
22
- * submit if the form is valid.
22
+ * submit if the form is valid.
23
23
  */
24
24
  async validate() {
25
25
  const { fields } = this;
26
26
  const methods = fields.map(field => field.validate());
27
27
  this.isValid = await Promise.all(methods).then(values => !values.some(v => v === false));
28
+ this.valid = this.isValid;
28
29
  this.invalid = !this.isValid;
30
+ this.didValidate.emit(this.isValid);
29
31
  return this.isValid;
30
32
  }
31
33
  /**
@@ -47,7 +49,9 @@ export class Ku4Form {
47
49
  field.invalid = true;
48
50
  }
49
51
  }
50
- this.invalid = true;
52
+ this.isValid = false;
53
+ this.valid = this.isValid;
54
+ this.invalid = !this.isValid;
51
55
  return this;
52
56
  }
53
57
  /**
@@ -64,7 +68,7 @@ export class Ku4Form {
64
68
  Object.keys(data).forEach((name) => {
65
69
  try {
66
70
  this.form.querySelector(`[name="${name}"]`)
67
- .dispatchEvent(new Event('change'));
71
+ .dispatchEvent(new window.Event('change'));
68
72
  }
69
73
  catch (e) {
70
74
  /* Fail silently */
@@ -80,6 +84,7 @@ export class Ku4Form {
80
84
  }
81
85
  handleReset() {
82
86
  this.isValid = true;
87
+ this.valid = this.isValid;
83
88
  this.invalid = !this.isValid;
84
89
  }
85
90
  componentWillLoad() {
@@ -109,6 +114,23 @@ export class Ku4Form {
109
114
  }
110
115
  static get is() { return "ku4-form"; }
111
116
  static get properties() { return {
117
+ "valid": {
118
+ "type": "boolean",
119
+ "mutable": true,
120
+ "complexType": {
121
+ "original": "boolean",
122
+ "resolved": "boolean",
123
+ "references": {}
124
+ },
125
+ "required": false,
126
+ "optional": false,
127
+ "docs": {
128
+ "tags": [],
129
+ "text": ""
130
+ },
131
+ "attribute": "valid",
132
+ "reflect": false
133
+ },
112
134
  "invalid": {
113
135
  "type": "boolean",
114
136
  "mutable": true,
@@ -127,6 +149,22 @@ export class Ku4Form {
127
149
  "reflect": true
128
150
  }
129
151
  }; }
152
+ static get events() { return [{
153
+ "method": "didValidate",
154
+ "name": "validate",
155
+ "bubbles": true,
156
+ "cancelable": true,
157
+ "composed": true,
158
+ "docs": {
159
+ "tags": [],
160
+ "text": "Event fired when this form validates."
161
+ },
162
+ "complexType": {
163
+ "original": "any",
164
+ "resolved": "any",
165
+ "references": {}
166
+ }
167
+ }]; }
130
168
  static get methods() { return {
131
169
  "listFieldNames": {
132
170
  "complexType": {
@@ -156,7 +194,7 @@ export class Ku4Form {
156
194
  "return": "Promise<any>"
157
195
  },
158
196
  "docs": {
159
- "text": "Validates this form. This method is automatically called\ninternally on submit of the form only allowing a successful\nsubmit if the form is valid.",
197
+ "text": "Validates this form. This method is automatically called\ninternally on submit of the form only allowing a successful\nsubmit if the form is valid.",
160
198
  "tags": []
161
199
  }
162
200
  },