@materializecss/materialize 1.2.2 → 2.0.1-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Gruntfile.js +68 -313
- package/README.md +26 -14
- package/dist/css/materialize.css +1009 -1822
- package/dist/css/materialize.min.css +2 -8
- package/dist/js/materialize.js +8414 -12299
- package/dist/js/materialize.min.js +8968 -2
- package/dist/js/materialize.min.js.map +1 -0
- package/package.json +13 -9
- package/sass/components/_badges.scss +12 -2
- package/sass/components/_buttons.scss +16 -11
- package/sass/components/_cards.scss +14 -9
- package/sass/components/_carousel.scss +5 -2
- package/sass/components/_chips.scss +3 -3
- package/sass/components/_collapsible.scss +22 -8
- package/sass/components/_collection.scss +14 -6
- package/sass/components/_datepicker.scss +30 -11
- package/sass/components/_dropdown.scss +6 -4
- package/sass/components/_global.scss +132 -111
- package/sass/components/_grid.scss +119 -98
- package/sass/components/_modal.scss +3 -3
- package/sass/components/_navbar.scss +31 -17
- package/sass/components/_normalize.scss +26 -124
- package/sass/components/_sidenav.scss +21 -20
- package/sass/components/_slider.scss +27 -7
- package/sass/components/_table_of_contents.scss +12 -12
- package/sass/components/_tabs.scss +47 -16
- package/sass/components/_tapTarget.scss +6 -6
- package/sass/components/_theme_variables.scss +98 -0
- package/sass/components/_timepicker.scss +54 -46
- package/sass/components/_toast.scss +3 -3
- package/sass/components/_tooltip.scss +4 -5
- package/sass/components/_typography.scss +1 -1
- package/sass/components/_variables.scss +185 -120
- package/sass/components/forms/_checkboxes.scss +9 -9
- package/sass/components/forms/_file-input.scss +9 -7
- package/sass/components/forms/_input-fields.scss +173 -234
- package/sass/components/forms/_radio-buttons.scss +1 -1
- package/sass/components/forms/_range.scss +11 -11
- package/sass/components/forms/_select.scss +29 -19
- package/sass/components/forms/_switches.scss +22 -18
- package/sass/materialize.scss +1 -1
- package/src/autocomplete.ts +459 -0
- package/src/bounding.ts +6 -0
- package/{js/buttons.js → src/buttons.ts} +103 -162
- package/src/cards.ts +54 -0
- package/{js/carousel.js → src/carousel.ts} +137 -262
- package/src/characterCounter.ts +88 -0
- package/src/chips.ts +350 -0
- package/src/collapsible.ts +184 -0
- package/{js/component.js → src/component.ts} +6 -19
- package/{js/datepicker.js → src/datepicker.ts} +213 -299
- package/{js/dropdown.js → src/dropdown.ts} +140 -254
- package/src/edges.ts +6 -0
- package/src/forms.ts +120 -0
- package/src/global.ts +385 -0
- package/src/materialbox.ts +348 -0
- package/src/modal.ts +256 -0
- package/{js/parallax.js → src/parallax.ts} +47 -60
- package/{js/pushpin.js → src/pushpin.ts} +19 -47
- package/{js/range.js → src/range.ts} +58 -139
- package/{js/scrollspy.js → src/scrollspy.ts} +81 -153
- package/src/select.ts +448 -0
- package/{js/sidenav.js → src/sidenav.ts} +96 -202
- package/src/slider.ts +415 -0
- package/src/tabs.ts +293 -0
- package/src/tapTarget.ts +240 -0
- package/{js/timepicker.js → src/timepicker.ts} +268 -272
- package/{js/toasts.js → src/toasts.ts} +75 -134
- package/{js/tooltip.js → src/tooltip.ts} +59 -96
- package/src/waves.ts +70 -0
- package/extras/noUiSlider/nouislider.css +0 -404
- package/extras/noUiSlider/nouislider.js +0 -2147
- package/extras/noUiSlider/nouislider.min.js +0 -1
- package/js/anime.min.js +0 -34
- package/js/autocomplete.js +0 -479
- package/js/cards.js +0 -40
- package/js/cash.js +0 -960
- package/js/characterCounter.js +0 -136
- package/js/chips.js +0 -486
- package/js/collapsible.js +0 -275
- package/js/forms.js +0 -285
- package/js/global.js +0 -428
- package/js/materialbox.js +0 -453
- package/js/modal.js +0 -382
- package/js/select.js +0 -391
- package/js/slider.js +0 -497
- package/js/tabs.js +0 -402
- package/js/tapTarget.js +0 -315
- package/js/waves.js +0 -615
- package/sass/components/_waves.scss +0 -187
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"materialize.min.js","mappings":"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AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,iBAAiB;AACjB,mBAAmB;AACnB,mBAAmB;AACnB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB,qBAAqB;AACrB,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA,eAAe;AACf;;AAEA;AACA,6EAA6E;AAC7E,gFAAgF;AAChF;;AAEA;;AAEA;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gEAAgE;AAChE;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oGAAoG;AACpG,4DAA4D;AAC5D,uEAAuE;AACvE,0BAA0B;AAC1B;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,SAAS,4BAA4B;AACrC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB,yBAAyB;AACzB;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK,qDAAqD;AAC1D,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,0BAA0B;AAC7C;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,iCAAiC;AACjC,yDAAyD;AACzD,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,gEAAgE,oCAAoC;AACpG;;AAEA;AACA;AACA;AACA,YAAY,sDAAsD;AAClE,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C,MAAM;AACN;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA,6BAA6B;AAC7B;AACA,gCAAgC;AAChC;AACA,GAAG,qBAAqB,mCAAmC;AAC3D;;;AAGA;AACA,8EAA8E,0BAA0B,mBAAmB,mBAAmB;AAC9I,2BAA2B,wBAAwB,aAAa,WAAW;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,UAAU;AACV;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,kBAAkB,0BAA0B;AAC5C;AACA;;AAEA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,uCAAuC,yCAAyC;AAChF,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA,4BAA4B,wBAAwB;AACpD,kCAAkC,8BAA8B;AAChE,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA,uDAAuD,mCAAmC;AAC1F;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG,mBAAmB,oBAAoB;AAC1C;;AAEA;;AAEA;AACA;AACA,sCAAsC;AACtC;AACA,wFAAwF,2CAA2C;AACnI,qFAAqF,wCAAwC;AAC7H,2GAA2G,2DAA2D;AACtK;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4CAA4C;;AAE5C;AACA;AACA;AACA,MAAM,OAAO;AACb;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA,sEAAsE,4BAA4B;AAClG;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,4CAA4C;AACpF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA,sBAAsB,oBAAoB,OAAO;AACjD,MAAM;AACN,qCAAqC,MAAM,IAAI;AAC/C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,2CAA2C,2BAA2B;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qBAAqB;AAC3C;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iDAAiD;AACjD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,IAAI,IAAI;AACzC,6GAA6G;AAC7G;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B;AAC5B,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,2BAA2B;;AAE3B;;AAEA;;AAEA;;AAEA;AACA,kCAAkC,IAAI;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gCAAgC,IAAI;AACpC;AACA;AACA;AACA,6DAA6D;AAC7D;AACA,gDAAgD;AAChD;;AAEA;AACA;AACA,uCAAuC,IAAI;AAC3C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","sources":["webpack://@materializecss/materialize/webpack/universalModuleDefinition","webpack://@materializecss/materialize/./node_modules/animejs/lib/anime.es.js","webpack://@materializecss/materialize/./src/autocomplete.ts","webpack://@materializecss/materialize/./src/buttons.ts","webpack://@materializecss/materialize/./src/cards.ts","webpack://@materializecss/materialize/./src/carousel.ts","webpack://@materializecss/materialize/./src/characterCounter.ts","webpack://@materializecss/materialize/./src/chips.ts","webpack://@materializecss/materialize/./src/collapsible.ts","webpack://@materializecss/materialize/./src/component.ts","webpack://@materializecss/materialize/./src/datepicker.ts","webpack://@materializecss/materialize/./src/dropdown.ts","webpack://@materializecss/materialize/./src/forms.ts","webpack://@materializecss/materialize/./src/global.ts","webpack://@materializecss/materialize/./src/materialbox.ts","webpack://@materializecss/materialize/./src/modal.ts","webpack://@materializecss/materialize/./src/parallax.ts","webpack://@materializecss/materialize/./src/pushpin.ts","webpack://@materializecss/materialize/./src/range.ts","webpack://@materializecss/materialize/./src/scrollspy.ts","webpack://@materializecss/materialize/./src/select.ts","webpack://@materializecss/materialize/./src/sidenav.ts","webpack://@materializecss/materialize/./src/slider.ts","webpack://@materializecss/materialize/./src/tabs.ts","webpack://@materializecss/materialize/./src/tapTarget.ts","webpack://@materializecss/materialize/./src/timepicker.ts","webpack://@materializecss/materialize/./src/toasts.ts","webpack://@materializecss/materialize/./src/tooltip.ts","webpack://@materializecss/materialize/./src/waves.ts","webpack://@materializecss/materialize/webpack/bootstrap","webpack://@materializecss/materialize/webpack/runtime/define property getters","webpack://@materializecss/materialize/webpack/runtime/hasOwnProperty shorthand","webpack://@materializecss/materialize/webpack/runtime/make namespace object","webpack://@materializecss/materialize/webpack/before-startup","webpack://@materializecss/materialize/webpack/startup","webpack://@materializecss/materialize/webpack/after-startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, () => {\nreturn ","/*\n * anime.js v3.2.1\n * (c) 2020 Julian Garnier\n * Released under the MIT license\n * animejs.com\n */\n\n// Defaults\n\nvar defaultInstanceSettings = {\n update: null,\n begin: null,\n loopBegin: null,\n changeBegin: null,\n change: null,\n changeComplete: null,\n loopComplete: null,\n complete: null,\n loop: 1,\n direction: 'normal',\n autoplay: true,\n timelineOffset: 0\n};\n\nvar defaultTweenSettings = {\n duration: 1000,\n delay: 0,\n endDelay: 0,\n easing: 'easeOutElastic(1, .5)',\n round: 0\n};\n\nvar validTransforms = ['translateX', 'translateY', 'translateZ', 'rotate', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'perspective', 'matrix', 'matrix3d'];\n\n// Caching\n\nvar cache = {\n CSS: {},\n springs: {}\n};\n\n// Utils\n\nfunction minMax(val, min, max) {\n return Math.min(Math.max(val, min), max);\n}\n\nfunction stringContains(str, text) {\n return str.indexOf(text) > -1;\n}\n\nfunction applyArguments(func, args) {\n return func.apply(null, args);\n}\n\nvar is = {\n arr: function (a) { return Array.isArray(a); },\n obj: function (a) { return stringContains(Object.prototype.toString.call(a), 'Object'); },\n pth: function (a) { return is.obj(a) && a.hasOwnProperty('totalLength'); },\n svg: function (a) { return a instanceof SVGElement; },\n inp: function (a) { return a instanceof HTMLInputElement; },\n dom: function (a) { return a.nodeType || is.svg(a); },\n str: function (a) { return typeof a === 'string'; },\n fnc: function (a) { return typeof a === 'function'; },\n und: function (a) { return typeof a === 'undefined'; },\n nil: function (a) { return is.und(a) || a === null; },\n hex: function (a) { return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a); },\n rgb: function (a) { return /^rgb/.test(a); },\n hsl: function (a) { return /^hsl/.test(a); },\n col: function (a) { return (is.hex(a) || is.rgb(a) || is.hsl(a)); },\n key: function (a) { return !defaultInstanceSettings.hasOwnProperty(a) && !defaultTweenSettings.hasOwnProperty(a) && a !== 'targets' && a !== 'keyframes'; },\n};\n\n// Easings\n\nfunction parseEasingParameters(string) {\n var match = /\\(([^)]+)\\)/.exec(string);\n return match ? match[1].split(',').map(function (p) { return parseFloat(p); }) : [];\n}\n\n// Spring solver inspired by Webkit Copyright © 2016 Apple Inc. All rights reserved. https://webkit.org/demos/spring/spring.js\n\nfunction spring(string, duration) {\n\n var params = parseEasingParameters(string);\n var mass = minMax(is.und(params[0]) ? 1 : params[0], .1, 100);\n var stiffness = minMax(is.und(params[1]) ? 100 : params[1], .1, 100);\n var damping = minMax(is.und(params[2]) ? 10 : params[2], .1, 100);\n var velocity = minMax(is.und(params[3]) ? 0 : params[3], .1, 100);\n var w0 = Math.sqrt(stiffness / mass);\n var zeta = damping / (2 * Math.sqrt(stiffness * mass));\n var wd = zeta < 1 ? w0 * Math.sqrt(1 - zeta * zeta) : 0;\n var a = 1;\n var b = zeta < 1 ? (zeta * w0 + -velocity) / wd : -velocity + w0;\n\n function solver(t) {\n var progress = duration ? (duration * t) / 1000 : t;\n if (zeta < 1) {\n progress = Math.exp(-progress * zeta * w0) * (a * Math.cos(wd * progress) + b * Math.sin(wd * progress));\n } else {\n progress = (a + b * progress) * Math.exp(-progress * w0);\n }\n if (t === 0 || t === 1) { return t; }\n return 1 - progress;\n }\n\n function getDuration() {\n var cached = cache.springs[string];\n if (cached) { return cached; }\n var frame = 1/6;\n var elapsed = 0;\n var rest = 0;\n while(true) {\n elapsed += frame;\n if (solver(elapsed) === 1) {\n rest++;\n if (rest >= 16) { break; }\n } else {\n rest = 0;\n }\n }\n var duration = elapsed * frame * 1000;\n cache.springs[string] = duration;\n return duration;\n }\n\n return duration ? solver : getDuration;\n\n}\n\n// Basic steps easing implementation https://developer.mozilla.org/fr/docs/Web/CSS/transition-timing-function\n\nfunction steps(steps) {\n if ( steps === void 0 ) steps = 10;\n\n return function (t) { return Math.ceil((minMax(t, 0.000001, 1)) * steps) * (1 / steps); };\n}\n\n// BezierEasing https://github.com/gre/bezier-easing\n\nvar bezier = (function () {\n\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\n function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1 }\n function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1 }\n function C(aA1) { return 3.0 * aA1 }\n\n function calcBezier(aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT }\n function getSlope(aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1) }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) { aB = currentT; } else { aA = currentT; }\n } while (Math.abs(currentX) > 0.0000001 && ++i < 10);\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < 4; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) { return aGuessT; }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n }\n\n function bezier(mX1, mY1, mX2, mY2) {\n\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { return; }\n var sampleValues = new Float32Array(kSplineTableSize);\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n }\n\n function getTForX(aX) {\n\n var intervalStart = 0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample;\n\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= 0.001) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n\n }\n\n return function (x) {\n if (mX1 === mY1 && mX2 === mY2) { return x; }\n if (x === 0 || x === 1) { return x; }\n return calcBezier(getTForX(x), mY1, mY2);\n }\n\n }\n\n return bezier;\n\n})();\n\nvar penner = (function () {\n\n // Based on jQuery UI's implemenation of easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\n var eases = { linear: function () { return function (t) { return t; }; } };\n\n var functionEasings = {\n Sine: function () { return function (t) { return 1 - Math.cos(t * Math.PI / 2); }; },\n Circ: function () { return function (t) { return 1 - Math.sqrt(1 - t * t); }; },\n Back: function () { return function (t) { return t * t * (3 * t - 2); }; },\n Bounce: function () { return function (t) {\n var pow2, b = 4;\n while (t < (( pow2 = Math.pow(2, --b)) - 1) / 11) {}\n return 1 / Math.pow(4, 3 - b) - 7.5625 * Math.pow(( pow2 * 3 - 2 ) / 22 - t, 2)\n }; },\n Elastic: function (amplitude, period) {\n if ( amplitude === void 0 ) amplitude = 1;\n if ( period === void 0 ) period = .5;\n\n var a = minMax(amplitude, 1, 10);\n var p = minMax(period, .1, 2);\n return function (t) {\n return (t === 0 || t === 1) ? t : \n -a * Math.pow(2, 10 * (t - 1)) * Math.sin((((t - 1) - (p / (Math.PI * 2) * Math.asin(1 / a))) * (Math.PI * 2)) / p);\n }\n }\n };\n\n var baseEasings = ['Quad', 'Cubic', 'Quart', 'Quint', 'Expo'];\n\n baseEasings.forEach(function (name, i) {\n functionEasings[name] = function () { return function (t) { return Math.pow(t, i + 2); }; };\n });\n\n Object.keys(functionEasings).forEach(function (name) {\n var easeIn = functionEasings[name];\n eases['easeIn' + name] = easeIn;\n eases['easeOut' + name] = function (a, b) { return function (t) { return 1 - easeIn(a, b)(1 - t); }; };\n eases['easeInOut' + name] = function (a, b) { return function (t) { return t < 0.5 ? easeIn(a, b)(t * 2) / 2 : \n 1 - easeIn(a, b)(t * -2 + 2) / 2; }; };\n eases['easeOutIn' + name] = function (a, b) { return function (t) { return t < 0.5 ? (1 - easeIn(a, b)(1 - t * 2)) / 2 : \n (easeIn(a, b)(t * 2 - 1) + 1) / 2; }; };\n });\n\n return eases;\n\n})();\n\nfunction parseEasings(easing, duration) {\n if (is.fnc(easing)) { return easing; }\n var name = easing.split('(')[0];\n var ease = penner[name];\n var args = parseEasingParameters(easing);\n switch (name) {\n case 'spring' : return spring(easing, duration);\n case 'cubicBezier' : return applyArguments(bezier, args);\n case 'steps' : return applyArguments(steps, args);\n default : return applyArguments(ease, args);\n }\n}\n\n// Strings\n\nfunction selectString(str) {\n try {\n var nodes = document.querySelectorAll(str);\n return nodes;\n } catch(e) {\n return;\n }\n}\n\n// Arrays\n\nfunction filterArray(arr, callback) {\n var len = arr.length;\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n var result = [];\n for (var i = 0; i < len; i++) {\n if (i in arr) {\n var val = arr[i];\n if (callback.call(thisArg, val, i, arr)) {\n result.push(val);\n }\n }\n }\n return result;\n}\n\nfunction flattenArray(arr) {\n return arr.reduce(function (a, b) { return a.concat(is.arr(b) ? flattenArray(b) : b); }, []);\n}\n\nfunction toArray(o) {\n if (is.arr(o)) { return o; }\n if (is.str(o)) { o = selectString(o) || o; }\n if (o instanceof NodeList || o instanceof HTMLCollection) { return [].slice.call(o); }\n return [o];\n}\n\nfunction arrayContains(arr, val) {\n return arr.some(function (a) { return a === val; });\n}\n\n// Objects\n\nfunction cloneObject(o) {\n var clone = {};\n for (var p in o) { clone[p] = o[p]; }\n return clone;\n}\n\nfunction replaceObjectProps(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o1) { o[p] = o2.hasOwnProperty(p) ? o2[p] : o1[p]; }\n return o;\n}\n\nfunction mergeObjects(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o2) { o[p] = is.und(o1[p]) ? o2[p] : o1[p]; }\n return o;\n}\n\n// Colors\n\nfunction rgbToRgba(rgbValue) {\n var rgb = /rgb\\((\\d+,\\s*[\\d]+,\\s*[\\d]+)\\)/g.exec(rgbValue);\n return rgb ? (\"rgba(\" + (rgb[1]) + \",1)\") : rgbValue;\n}\n\nfunction hexToRgba(hexValue) {\n var rgx = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n var hex = hexValue.replace(rgx, function (m, r, g, b) { return r + r + g + g + b + b; } );\n var rgb = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n var r = parseInt(rgb[1], 16);\n var g = parseInt(rgb[2], 16);\n var b = parseInt(rgb[3], 16);\n return (\"rgba(\" + r + \",\" + g + \",\" + b + \",1)\");\n}\n\nfunction hslToRgba(hslValue) {\n var hsl = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(hslValue) || /hsla\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%,\\s*([\\d.]+)\\)/g.exec(hslValue);\n var h = parseInt(hsl[1], 10) / 360;\n var s = parseInt(hsl[2], 10) / 100;\n var l = parseInt(hsl[3], 10) / 100;\n var a = hsl[4] || 1;\n function hue2rgb(p, q, t) {\n if (t < 0) { t += 1; }\n if (t > 1) { t -= 1; }\n if (t < 1/6) { return p + (q - p) * 6 * t; }\n if (t < 1/2) { return q; }\n if (t < 2/3) { return p + (q - p) * (2/3 - t) * 6; }\n return p;\n }\n var r, g, b;\n if (s == 0) {\n r = g = b = l;\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n return (\"rgba(\" + (r * 255) + \",\" + (g * 255) + \",\" + (b * 255) + \",\" + a + \")\");\n}\n\nfunction colorToRgb(val) {\n if (is.rgb(val)) { return rgbToRgba(val); }\n if (is.hex(val)) { return hexToRgba(val); }\n if (is.hsl(val)) { return hslToRgba(val); }\n}\n\n// Units\n\nfunction getUnit(val) {\n var split = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(val);\n if (split) { return split[1]; }\n}\n\nfunction getTransformUnit(propName) {\n if (stringContains(propName, 'translate') || propName === 'perspective') { return 'px'; }\n if (stringContains(propName, 'rotate') || stringContains(propName, 'skew')) { return 'deg'; }\n}\n\n// Values\n\nfunction getFunctionValue(val, animatable) {\n if (!is.fnc(val)) { return val; }\n return val(animatable.target, animatable.id, animatable.total);\n}\n\nfunction getAttribute(el, prop) {\n return el.getAttribute(prop);\n}\n\nfunction convertPxToUnit(el, value, unit) {\n var valueUnit = getUnit(value);\n if (arrayContains([unit, 'deg', 'rad', 'turn'], valueUnit)) { return value; }\n var cached = cache.CSS[value + unit];\n if (!is.und(cached)) { return cached; }\n var baseline = 100;\n var tempEl = document.createElement(el.tagName);\n var parentEl = (el.parentNode && (el.parentNode !== document)) ? el.parentNode : document.body;\n parentEl.appendChild(tempEl);\n tempEl.style.position = 'absolute';\n tempEl.style.width = baseline + unit;\n var factor = baseline / tempEl.offsetWidth;\n parentEl.removeChild(tempEl);\n var convertedUnit = factor * parseFloat(value);\n cache.CSS[value + unit] = convertedUnit;\n return convertedUnit;\n}\n\nfunction getCSSValue(el, prop, unit) {\n if (prop in el.style) {\n var uppercasePropName = prop.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n var value = el.style[prop] || getComputedStyle(el).getPropertyValue(uppercasePropName) || '0';\n return unit ? convertPxToUnit(el, value, unit) : value;\n }\n}\n\nfunction getAnimationType(el, prop) {\n if (is.dom(el) && !is.inp(el) && (!is.nil(getAttribute(el, prop)) || (is.svg(el) && el[prop]))) { return 'attribute'; }\n if (is.dom(el) && arrayContains(validTransforms, prop)) { return 'transform'; }\n if (is.dom(el) && (prop !== 'transform' && getCSSValue(el, prop))) { return 'css'; }\n if (el[prop] != null) { return 'object'; }\n}\n\nfunction getElementTransforms(el) {\n if (!is.dom(el)) { return; }\n var str = el.style.transform || '';\n var reg = /(\\w+)\\(([^)]*)\\)/g;\n var transforms = new Map();\n var m; while (m = reg.exec(str)) { transforms.set(m[1], m[2]); }\n return transforms;\n}\n\nfunction getTransformValue(el, propName, animatable, unit) {\n var defaultVal = stringContains(propName, 'scale') ? 1 : 0 + getTransformUnit(propName);\n var value = getElementTransforms(el).get(propName) || defaultVal;\n if (animatable) {\n animatable.transforms.list.set(propName, value);\n animatable.transforms['last'] = propName;\n }\n return unit ? convertPxToUnit(el, value, unit) : value;\n}\n\nfunction getOriginalTargetValue(target, propName, unit, animatable) {\n switch (getAnimationType(target, propName)) {\n case 'transform': return getTransformValue(target, propName, animatable, unit);\n case 'css': return getCSSValue(target, propName, unit);\n case 'attribute': return getAttribute(target, propName);\n default: return target[propName] || 0;\n }\n}\n\nfunction getRelativeValue(to, from) {\n var operator = /^(\\*=|\\+=|-=)/.exec(to);\n if (!operator) { return to; }\n var u = getUnit(to) || 0;\n var x = parseFloat(from);\n var y = parseFloat(to.replace(operator[0], ''));\n switch (operator[0][0]) {\n case '+': return x + y + u;\n case '-': return x - y + u;\n case '*': return x * y + u;\n }\n}\n\nfunction validateValue(val, unit) {\n if (is.col(val)) { return colorToRgb(val); }\n if (/\\s/g.test(val)) { return val; }\n var originalUnit = getUnit(val);\n var unitLess = originalUnit ? val.substr(0, val.length - originalUnit.length) : val;\n if (unit) { return unitLess + unit; }\n return unitLess;\n}\n\n// getTotalLength() equivalent for circle, rect, polyline, polygon and line shapes\n// adapted from https://gist.github.com/SebLambla/3e0550c496c236709744\n\nfunction getDistance(p1, p2) {\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\n\nfunction getCircleLength(el) {\n return Math.PI * 2 * getAttribute(el, 'r');\n}\n\nfunction getRectLength(el) {\n return (getAttribute(el, 'width') * 2) + (getAttribute(el, 'height') * 2);\n}\n\nfunction getLineLength(el) {\n return getDistance(\n {x: getAttribute(el, 'x1'), y: getAttribute(el, 'y1')}, \n {x: getAttribute(el, 'x2'), y: getAttribute(el, 'y2')}\n );\n}\n\nfunction getPolylineLength(el) {\n var points = el.points;\n var totalLength = 0;\n var previousPos;\n for (var i = 0 ; i < points.numberOfItems; i++) {\n var currentPos = points.getItem(i);\n if (i > 0) { totalLength += getDistance(previousPos, currentPos); }\n previousPos = currentPos;\n }\n return totalLength;\n}\n\nfunction getPolygonLength(el) {\n var points = el.points;\n return getPolylineLength(el) + getDistance(points.getItem(points.numberOfItems - 1), points.getItem(0));\n}\n\n// Path animation\n\nfunction getTotalLength(el) {\n if (el.getTotalLength) { return el.getTotalLength(); }\n switch(el.tagName.toLowerCase()) {\n case 'circle': return getCircleLength(el);\n case 'rect': return getRectLength(el);\n case 'line': return getLineLength(el);\n case 'polyline': return getPolylineLength(el);\n case 'polygon': return getPolygonLength(el);\n }\n}\n\nfunction setDashoffset(el) {\n var pathLength = getTotalLength(el);\n el.setAttribute('stroke-dasharray', pathLength);\n return pathLength;\n}\n\n// Motion path\n\nfunction getParentSvgEl(el) {\n var parentEl = el.parentNode;\n while (is.svg(parentEl)) {\n if (!is.svg(parentEl.parentNode)) { break; }\n parentEl = parentEl.parentNode;\n }\n return parentEl;\n}\n\nfunction getParentSvg(pathEl, svgData) {\n var svg = svgData || {};\n var parentSvgEl = svg.el || getParentSvgEl(pathEl);\n var rect = parentSvgEl.getBoundingClientRect();\n var viewBoxAttr = getAttribute(parentSvgEl, 'viewBox');\n var width = rect.width;\n var height = rect.height;\n var viewBox = svg.viewBox || (viewBoxAttr ? viewBoxAttr.split(' ') : [0, 0, width, height]);\n return {\n el: parentSvgEl,\n viewBox: viewBox,\n x: viewBox[0] / 1,\n y: viewBox[1] / 1,\n w: width,\n h: height,\n vW: viewBox[2],\n vH: viewBox[3]\n }\n}\n\nfunction getPath(path, percent) {\n var pathEl = is.str(path) ? selectString(path)[0] : path;\n var p = percent || 100;\n return function(property) {\n return {\n property: property,\n el: pathEl,\n svg: getParentSvg(pathEl),\n totalLength: getTotalLength(pathEl) * (p / 100)\n }\n }\n}\n\nfunction getPathProgress(path, progress, isPathTargetInsideSVG) {\n function point(offset) {\n if ( offset === void 0 ) offset = 0;\n\n var l = progress + offset >= 1 ? progress + offset : 0;\n return path.el.getPointAtLength(l);\n }\n var svg = getParentSvg(path.el, path.svg);\n var p = point();\n var p0 = point(-1);\n var p1 = point(+1);\n var scaleX = isPathTargetInsideSVG ? 1 : svg.w / svg.vW;\n var scaleY = isPathTargetInsideSVG ? 1 : svg.h / svg.vH;\n switch (path.property) {\n case 'x': return (p.x - svg.x) * scaleX;\n case 'y': return (p.y - svg.y) * scaleY;\n case 'angle': return Math.atan2(p1.y - p0.y, p1.x - p0.x) * 180 / Math.PI;\n }\n}\n\n// Decompose value\n\nfunction decomposeValue(val, unit) {\n // const rgx = /-?\\d*\\.?\\d+/g; // handles basic numbers\n // const rgx = /[+-]?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var rgx = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var value = validateValue((is.pth(val) ? val.totalLength : val), unit) + '';\n return {\n original: value,\n numbers: value.match(rgx) ? value.match(rgx).map(Number) : [0],\n strings: (is.str(val) || unit) ? value.split(rgx) : []\n }\n}\n\n// Animatables\n\nfunction parseTargets(targets) {\n var targetsArray = targets ? (flattenArray(is.arr(targets) ? targets.map(toArray) : toArray(targets))) : [];\n return filterArray(targetsArray, function (item, pos, self) { return self.indexOf(item) === pos; });\n}\n\nfunction getAnimatables(targets) {\n var parsed = parseTargets(targets);\n return parsed.map(function (t, i) {\n return {target: t, id: i, total: parsed.length, transforms: { list: getElementTransforms(t) } };\n });\n}\n\n// Properties\n\nfunction normalizePropertyTweens(prop, tweenSettings) {\n var settings = cloneObject(tweenSettings);\n // Override duration if easing is a spring\n if (/^spring/.test(settings.easing)) { settings.duration = spring(settings.easing); }\n if (is.arr(prop)) {\n var l = prop.length;\n var isFromTo = (l === 2 && !is.obj(prop[0]));\n if (!isFromTo) {\n // Duration divided by the number of tweens\n if (!is.fnc(tweenSettings.duration)) { settings.duration = tweenSettings.duration / l; }\n } else {\n // Transform [from, to] values shorthand to a valid tween value\n prop = {value: prop};\n }\n }\n var propArray = is.arr(prop) ? prop : [prop];\n return propArray.map(function (v, i) {\n var obj = (is.obj(v) && !is.pth(v)) ? v : {value: v};\n // Default delay value should only be applied to the first tween\n if (is.und(obj.delay)) { obj.delay = !i ? tweenSettings.delay : 0; }\n // Default endDelay value should only be applied to the last tween\n if (is.und(obj.endDelay)) { obj.endDelay = i === propArray.length - 1 ? tweenSettings.endDelay : 0; }\n return obj;\n }).map(function (k) { return mergeObjects(k, settings); });\n}\n\n\nfunction flattenKeyframes(keyframes) {\n var propertyNames = filterArray(flattenArray(keyframes.map(function (key) { return Object.keys(key); })), function (p) { return is.key(p); })\n .reduce(function (a,b) { if (a.indexOf(b) < 0) { a.push(b); } return a; }, []);\n var properties = {};\n var loop = function ( i ) {\n var propName = propertyNames[i];\n properties[propName] = keyframes.map(function (key) {\n var newKey = {};\n for (var p in key) {\n if (is.key(p)) {\n if (p == propName) { newKey.value = key[p]; }\n } else {\n newKey[p] = key[p];\n }\n }\n return newKey;\n });\n };\n\n for (var i = 0; i < propertyNames.length; i++) loop( i );\n return properties;\n}\n\nfunction getProperties(tweenSettings, params) {\n var properties = [];\n var keyframes = params.keyframes;\n if (keyframes) { params = mergeObjects(flattenKeyframes(keyframes), params); }\n for (var p in params) {\n if (is.key(p)) {\n properties.push({\n name: p,\n tweens: normalizePropertyTweens(params[p], tweenSettings)\n });\n }\n }\n return properties;\n}\n\n// Tweens\n\nfunction normalizeTweenValues(tween, animatable) {\n var t = {};\n for (var p in tween) {\n var value = getFunctionValue(tween[p], animatable);\n if (is.arr(value)) {\n value = value.map(function (v) { return getFunctionValue(v, animatable); });\n if (value.length === 1) { value = value[0]; }\n }\n t[p] = value;\n }\n t.duration = parseFloat(t.duration);\n t.delay = parseFloat(t.delay);\n return t;\n}\n\nfunction normalizeTweens(prop, animatable) {\n var previousTween;\n return prop.tweens.map(function (t) {\n var tween = normalizeTweenValues(t, animatable);\n var tweenValue = tween.value;\n var to = is.arr(tweenValue) ? tweenValue[1] : tweenValue;\n var toUnit = getUnit(to);\n var originalValue = getOriginalTargetValue(animatable.target, prop.name, toUnit, animatable);\n var previousValue = previousTween ? previousTween.to.original : originalValue;\n var from = is.arr(tweenValue) ? tweenValue[0] : previousValue;\n var fromUnit = getUnit(from) || getUnit(originalValue);\n var unit = toUnit || fromUnit;\n if (is.und(to)) { to = previousValue; }\n tween.from = decomposeValue(from, unit);\n tween.to = decomposeValue(getRelativeValue(to, from), unit);\n tween.start = previousTween ? previousTween.end : 0;\n tween.end = tween.start + tween.delay + tween.duration + tween.endDelay;\n tween.easing = parseEasings(tween.easing, tween.duration);\n tween.isPath = is.pth(tweenValue);\n tween.isPathTargetInsideSVG = tween.isPath && is.svg(animatable.target);\n tween.isColor = is.col(tween.from.original);\n if (tween.isColor) { tween.round = 1; }\n previousTween = tween;\n return tween;\n });\n}\n\n// Tween progress\n\nvar setProgressValue = {\n css: function (t, p, v) { return t.style[p] = v; },\n attribute: function (t, p, v) { return t.setAttribute(p, v); },\n object: function (t, p, v) { return t[p] = v; },\n transform: function (t, p, v, transforms, manual) {\n transforms.list.set(p, v);\n if (p === transforms.last || manual) {\n var str = '';\n transforms.list.forEach(function (value, prop) { str += prop + \"(\" + value + \") \"; });\n t.style.transform = str;\n }\n }\n};\n\n// Set Value helper\n\nfunction setTargetsValue(targets, properties) {\n var animatables = getAnimatables(targets);\n animatables.forEach(function (animatable) {\n for (var property in properties) {\n var value = getFunctionValue(properties[property], animatable);\n var target = animatable.target;\n var valueUnit = getUnit(value);\n var originalValue = getOriginalTargetValue(target, property, valueUnit, animatable);\n var unit = valueUnit || getUnit(originalValue);\n var to = getRelativeValue(validateValue(value, unit), originalValue);\n var animType = getAnimationType(target, property);\n setProgressValue[animType](target, property, to, animatable.transforms, true);\n }\n });\n}\n\n// Animations\n\nfunction createAnimation(animatable, prop) {\n var animType = getAnimationType(animatable.target, prop.name);\n if (animType) {\n var tweens = normalizeTweens(prop, animatable);\n var lastTween = tweens[tweens.length - 1];\n return {\n type: animType,\n property: prop.name,\n animatable: animatable,\n tweens: tweens,\n duration: lastTween.end,\n delay: tweens[0].delay,\n endDelay: lastTween.endDelay\n }\n }\n}\n\nfunction getAnimations(animatables, properties) {\n return filterArray(flattenArray(animatables.map(function (animatable) {\n return properties.map(function (prop) {\n return createAnimation(animatable, prop);\n });\n })), function (a) { return !is.und(a); });\n}\n\n// Create Instance\n\nfunction getInstanceTimings(animations, tweenSettings) {\n var animLength = animations.length;\n var getTlOffset = function (anim) { return anim.timelineOffset ? anim.timelineOffset : 0; };\n var timings = {};\n timings.duration = animLength ? Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration; })) : tweenSettings.duration;\n timings.delay = animLength ? Math.min.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.delay; })) : tweenSettings.delay;\n timings.endDelay = animLength ? timings.duration - Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration - anim.endDelay; })) : tweenSettings.endDelay;\n return timings;\n}\n\nvar instanceID = 0;\n\nfunction createNewInstance(params) {\n var instanceSettings = replaceObjectProps(defaultInstanceSettings, params);\n var tweenSettings = replaceObjectProps(defaultTweenSettings, params);\n var properties = getProperties(tweenSettings, params);\n var animatables = getAnimatables(params.targets);\n var animations = getAnimations(animatables, properties);\n var timings = getInstanceTimings(animations, tweenSettings);\n var id = instanceID;\n instanceID++;\n return mergeObjects(instanceSettings, {\n id: id,\n children: [],\n animatables: animatables,\n animations: animations,\n duration: timings.duration,\n delay: timings.delay,\n endDelay: timings.endDelay\n });\n}\n\n// Core\n\nvar activeInstances = [];\n\nvar engine = (function () {\n var raf;\n\n function play() {\n if (!raf && (!isDocumentHidden() || !anime.suspendWhenDocumentHidden) && activeInstances.length > 0) {\n raf = requestAnimationFrame(step);\n }\n }\n function step(t) {\n // memo on algorithm issue:\n // dangerous iteration over mutable `activeInstances`\n // (that collection may be updated from within callbacks of `tick`-ed animation instances)\n var activeInstancesLength = activeInstances.length;\n var i = 0;\n while (i < activeInstancesLength) {\n var activeInstance = activeInstances[i];\n if (!activeInstance.paused) {\n activeInstance.tick(t);\n i++;\n } else {\n activeInstances.splice(i, 1);\n activeInstancesLength--;\n }\n }\n raf = i > 0 ? requestAnimationFrame(step) : undefined;\n }\n\n function handleVisibilityChange() {\n if (!anime.suspendWhenDocumentHidden) { return; }\n\n if (isDocumentHidden()) {\n // suspend ticks\n raf = cancelAnimationFrame(raf);\n } else { // is back to active tab\n // first adjust animations to consider the time that ticks were suspended\n activeInstances.forEach(\n function (instance) { return instance ._onDocumentVisibility(); }\n );\n engine();\n }\n }\n if (typeof document !== 'undefined') {\n document.addEventListener('visibilitychange', handleVisibilityChange);\n }\n\n return play;\n})();\n\nfunction isDocumentHidden() {\n return !!document && document.hidden;\n}\n\n// Public Instance\n\nfunction anime(params) {\n if ( params === void 0 ) params = {};\n\n\n var startTime = 0, lastTime = 0, now = 0;\n var children, childrenLength = 0;\n var resolve = null;\n\n function makePromise(instance) {\n var promise = window.Promise && new Promise(function (_resolve) { return resolve = _resolve; });\n instance.finished = promise;\n return promise;\n }\n\n var instance = createNewInstance(params);\n var promise = makePromise(instance);\n\n function toggleInstanceDirection() {\n var direction = instance.direction;\n if (direction !== 'alternate') {\n instance.direction = direction !== 'normal' ? 'normal' : 'reverse';\n }\n instance.reversed = !instance.reversed;\n children.forEach(function (child) { return child.reversed = instance.reversed; });\n }\n\n function adjustTime(time) {\n return instance.reversed ? instance.duration - time : time;\n }\n\n function resetTime() {\n startTime = 0;\n lastTime = adjustTime(instance.currentTime) * (1 / anime.speed);\n }\n\n function seekChild(time, child) {\n if (child) { child.seek(time - child.timelineOffset); }\n }\n\n function syncInstanceChildren(time) {\n if (!instance.reversePlayback) {\n for (var i = 0; i < childrenLength; i++) { seekChild(time, children[i]); }\n } else {\n for (var i$1 = childrenLength; i$1--;) { seekChild(time, children[i$1]); }\n }\n }\n\n function setAnimationsProgress(insTime) {\n var i = 0;\n var animations = instance.animations;\n var animationsLength = animations.length;\n while (i < animationsLength) {\n var anim = animations[i];\n var animatable = anim.animatable;\n var tweens = anim.tweens;\n var tweenLength = tweens.length - 1;\n var tween = tweens[tweenLength];\n // Only check for keyframes if there is more than one tween\n if (tweenLength) { tween = filterArray(tweens, function (t) { return (insTime < t.end); })[0] || tween; }\n var elapsed = minMax(insTime - tween.start - tween.delay, 0, tween.duration) / tween.duration;\n var eased = isNaN(elapsed) ? 1 : tween.easing(elapsed);\n var strings = tween.to.strings;\n var round = tween.round;\n var numbers = [];\n var toNumbersLength = tween.to.numbers.length;\n var progress = (void 0);\n for (var n = 0; n < toNumbersLength; n++) {\n var value = (void 0);\n var toNumber = tween.to.numbers[n];\n var fromNumber = tween.from.numbers[n] || 0;\n if (!tween.isPath) {\n value = fromNumber + (eased * (toNumber - fromNumber));\n } else {\n value = getPathProgress(tween.value, eased * toNumber, tween.isPathTargetInsideSVG);\n }\n if (round) {\n if (!(tween.isColor && n > 2)) {\n value = Math.round(value * round) / round;\n }\n }\n numbers.push(value);\n }\n // Manual Array.reduce for better performances\n var stringsLength = strings.length;\n if (!stringsLength) {\n progress = numbers[0];\n } else {\n progress = strings[0];\n for (var s = 0; s < stringsLength; s++) {\n var a = strings[s];\n var b = strings[s + 1];\n var n$1 = numbers[s];\n if (!isNaN(n$1)) {\n if (!b) {\n progress += n$1 + ' ';\n } else {\n progress += n$1 + b;\n }\n }\n }\n }\n setProgressValue[anim.type](animatable.target, anim.property, progress, animatable.transforms);\n anim.currentValue = progress;\n i++;\n }\n }\n\n function setCallback(cb) {\n if (instance[cb] && !instance.passThrough) { instance[cb](instance); }\n }\n\n function countIteration() {\n if (instance.remaining && instance.remaining !== true) {\n instance.remaining--;\n }\n }\n\n function setInstanceProgress(engineTime) {\n var insDuration = instance.duration;\n var insDelay = instance.delay;\n var insEndDelay = insDuration - instance.endDelay;\n var insTime = adjustTime(engineTime);\n instance.progress = minMax((insTime / insDuration) * 100, 0, 100);\n instance.reversePlayback = insTime < instance.currentTime;\n if (children) { syncInstanceChildren(insTime); }\n if (!instance.began && instance.currentTime > 0) {\n instance.began = true;\n setCallback('begin');\n }\n if (!instance.loopBegan && instance.currentTime > 0) {\n instance.loopBegan = true;\n setCallback('loopBegin');\n }\n if (insTime <= insDelay && instance.currentTime !== 0) {\n setAnimationsProgress(0);\n }\n if ((insTime >= insEndDelay && instance.currentTime !== insDuration) || !insDuration) {\n setAnimationsProgress(insDuration);\n }\n if (insTime > insDelay && insTime < insEndDelay) {\n if (!instance.changeBegan) {\n instance.changeBegan = true;\n instance.changeCompleted = false;\n setCallback('changeBegin');\n }\n setCallback('change');\n setAnimationsProgress(insTime);\n } else {\n if (instance.changeBegan) {\n instance.changeCompleted = true;\n instance.changeBegan = false;\n setCallback('changeComplete');\n }\n }\n instance.currentTime = minMax(insTime, 0, insDuration);\n if (instance.began) { setCallback('update'); }\n if (engineTime >= insDuration) {\n lastTime = 0;\n countIteration();\n if (!instance.remaining) {\n instance.paused = true;\n if (!instance.completed) {\n instance.completed = true;\n setCallback('loopComplete');\n setCallback('complete');\n if (!instance.passThrough && 'Promise' in window) {\n resolve();\n promise = makePromise(instance);\n }\n }\n } else {\n startTime = now;\n setCallback('loopComplete');\n instance.loopBegan = false;\n if (instance.direction === 'alternate') {\n toggleInstanceDirection();\n }\n }\n }\n }\n\n instance.reset = function() {\n var direction = instance.direction;\n instance.passThrough = false;\n instance.currentTime = 0;\n instance.progress = 0;\n instance.paused = true;\n instance.began = false;\n instance.loopBegan = false;\n instance.changeBegan = false;\n instance.completed = false;\n instance.changeCompleted = false;\n instance.reversePlayback = false;\n instance.reversed = direction === 'reverse';\n instance.remaining = instance.loop;\n children = instance.children;\n childrenLength = children.length;\n for (var i = childrenLength; i--;) { instance.children[i].reset(); }\n if (instance.reversed && instance.loop !== true || (direction === 'alternate' && instance.loop === 1)) { instance.remaining++; }\n setAnimationsProgress(instance.reversed ? instance.duration : 0);\n };\n\n // internal method (for engine) to adjust animation timings before restoring engine ticks (rAF)\n instance._onDocumentVisibility = resetTime;\n\n // Set Value helper\n\n instance.set = function(targets, properties) {\n setTargetsValue(targets, properties);\n return instance;\n };\n\n instance.tick = function(t) {\n now = t;\n if (!startTime) { startTime = now; }\n setInstanceProgress((now + (lastTime - startTime)) * anime.speed);\n };\n\n instance.seek = function(time) {\n setInstanceProgress(adjustTime(time));\n };\n\n instance.pause = function() {\n instance.paused = true;\n resetTime();\n };\n\n instance.play = function() {\n if (!instance.paused) { return; }\n if (instance.completed) { instance.reset(); }\n instance.paused = false;\n activeInstances.push(instance);\n resetTime();\n engine();\n };\n\n instance.reverse = function() {\n toggleInstanceDirection();\n instance.completed = instance.reversed ? false : true;\n resetTime();\n };\n\n instance.restart = function() {\n instance.reset();\n instance.play();\n };\n\n instance.remove = function(targets) {\n var targetsArray = parseTargets(targets);\n removeTargetsFromInstance(targetsArray, instance);\n };\n\n instance.reset();\n\n if (instance.autoplay) { instance.play(); }\n\n return instance;\n\n}\n\n// Remove targets from animation\n\nfunction removeTargetsFromAnimations(targetsArray, animations) {\n for (var a = animations.length; a--;) {\n if (arrayContains(targetsArray, animations[a].animatable.target)) {\n animations.splice(a, 1);\n }\n }\n}\n\nfunction removeTargetsFromInstance(targetsArray, instance) {\n var animations = instance.animations;\n var children = instance.children;\n removeTargetsFromAnimations(targetsArray, animations);\n for (var c = children.length; c--;) {\n var child = children[c];\n var childAnimations = child.animations;\n removeTargetsFromAnimations(targetsArray, childAnimations);\n if (!childAnimations.length && !child.children.length) { children.splice(c, 1); }\n }\n if (!animations.length && !children.length) { instance.pause(); }\n}\n\nfunction removeTargetsFromActiveInstances(targets) {\n var targetsArray = parseTargets(targets);\n for (var i = activeInstances.length; i--;) {\n var instance = activeInstances[i];\n removeTargetsFromInstance(targetsArray, instance);\n }\n}\n\n// Stagger helpers\n\nfunction stagger(val, params) {\n if ( params === void 0 ) params = {};\n\n var direction = params.direction || 'normal';\n var easing = params.easing ? parseEasings(params.easing) : null;\n var grid = params.grid;\n var axis = params.axis;\n var fromIndex = params.from || 0;\n var fromFirst = fromIndex === 'first';\n var fromCenter = fromIndex === 'center';\n var fromLast = fromIndex === 'last';\n var isRange = is.arr(val);\n var val1 = isRange ? parseFloat(val[0]) : parseFloat(val);\n var val2 = isRange ? parseFloat(val[1]) : 0;\n var unit = getUnit(isRange ? val[1] : val) || 0;\n var start = params.start || 0 + (isRange ? val1 : 0);\n var values = [];\n var maxValue = 0;\n return function (el, i, t) {\n if (fromFirst) { fromIndex = 0; }\n if (fromCenter) { fromIndex = (t - 1) / 2; }\n if (fromLast) { fromIndex = t - 1; }\n if (!values.length) {\n for (var index = 0; index < t; index++) {\n if (!grid) {\n values.push(Math.abs(fromIndex - index));\n } else {\n var fromX = !fromCenter ? fromIndex%grid[0] : (grid[0]-1)/2;\n var fromY = !fromCenter ? Math.floor(fromIndex/grid[0]) : (grid[1]-1)/2;\n var toX = index%grid[0];\n var toY = Math.floor(index/grid[0]);\n var distanceX = fromX - toX;\n var distanceY = fromY - toY;\n var value = Math.sqrt(distanceX * distanceX + distanceY * distanceY);\n if (axis === 'x') { value = -distanceX; }\n if (axis === 'y') { value = -distanceY; }\n values.push(value);\n }\n maxValue = Math.max.apply(Math, values);\n }\n if (easing) { values = values.map(function (val) { return easing(val / maxValue) * maxValue; }); }\n if (direction === 'reverse') { values = values.map(function (val) { return axis ? (val < 0) ? val * -1 : -val : Math.abs(maxValue - val); }); }\n }\n var spacing = isRange ? (val2 - val1) / maxValue : val1;\n return start + (spacing * (Math.round(values[i] * 100) / 100)) + unit;\n }\n}\n\n// Timeline\n\nfunction timeline(params) {\n if ( params === void 0 ) params = {};\n\n var tl = anime(params);\n tl.duration = 0;\n tl.add = function(instanceParams, timelineOffset) {\n var tlIndex = activeInstances.indexOf(tl);\n var children = tl.children;\n if (tlIndex > -1) { activeInstances.splice(tlIndex, 1); }\n function passThrough(ins) { ins.passThrough = true; }\n for (var i = 0; i < children.length; i++) { passThrough(children[i]); }\n var insParams = mergeObjects(instanceParams, replaceObjectProps(defaultTweenSettings, params));\n insParams.targets = insParams.targets || params.targets;\n var tlDuration = tl.duration;\n insParams.autoplay = false;\n insParams.direction = tl.direction;\n insParams.timelineOffset = is.und(timelineOffset) ? tlDuration : getRelativeValue(timelineOffset, tlDuration);\n passThrough(tl);\n tl.seek(insParams.timelineOffset);\n var ins = anime(insParams);\n passThrough(ins);\n children.push(ins);\n var timings = getInstanceTimings(children, params);\n tl.delay = timings.delay;\n tl.endDelay = timings.endDelay;\n tl.duration = timings.duration;\n tl.seek(0);\n tl.reset();\n if (tl.autoplay) { tl.play(); }\n return tl;\n };\n return tl;\n}\n\nanime.version = '3.2.1';\nanime.speed = 1;\n// TODO:#review: naming, documentation\nanime.suspendWhenDocumentHidden = true;\nanime.running = activeInstances;\nanime.remove = removeTargetsFromActiveInstances;\nanime.get = getOriginalTargetValue;\nanime.set = setTargetsValue;\nanime.convertPx = convertPxToUnit;\nanime.path = getPath;\nanime.setDashoffset = setDashoffset;\nanime.stagger = stagger;\nanime.timeline = timeline;\nanime.easing = parseEasings;\nanime.penner = penner;\nanime.random = function (min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; };\n\nexport default anime;\n","import { Component } from \"./component\";\nimport { M } from \"./global\";\nimport { Dropdown } from \"./dropdown\";\n\nlet _defaults = {\n data: [], // Autocomplete data set\n onAutocomplete: null, // Callback for when autocompleted\n dropdownOptions: {\n // Default dropdown options\n autoFocus: false,\n closeOnClick: false,\n coverTrigger: false\n },\n minLength: 1, // Min characters before autocomplete starts\n isMultiSelect: false,\n onSearch: function(text, autocomplete) {\n const filteredData = autocomplete.options.data.filter(item => {\n return Object.keys(item)\n .map(key => item[key].toString().toLowerCase().indexOf(text.toLowerCase()) >= 0)\n .some(isMatch => isMatch);\n });\n autocomplete.setMenuItems(filteredData);\n },\n maxDropDownHeight: '300px',\n allowUnsafeHTML: false\n};\n\n\nexport class Autocomplete extends Component {\n el: HTMLInputElement;\n isOpen: boolean;\n count: number;\n activeIndex: number;\n private oldVal: any;\n private $inputField: any;\n private $active: HTMLElement|null;\n private _mousedown: boolean;\n private _handleInputBlurBound: any;\n private _handleInputKeyupAndFocusBound: any;\n private _handleInputKeydownBound: any;\n private _handleInputClickBound: any;\n private _handleContainerMousedownAndTouchstartBound: any;\n private _handleContainerMouseupAndTouchendBound: any;\n container: HTMLElement;\n dropdown: Dropdown;\n static _keydown: boolean;\n selectedValues: any[];\n menuItems: any[];\n\n\n constructor(el, options) {\n super(Autocomplete, el, options);\n (this.el as any).M_Autocomplete = this;\n this.options = {...Autocomplete.defaults, ...options};\n this.isOpen = false;\n this.count = 0;\n this.activeIndex = -1;\n this.oldVal;\n this.selectedValues = [];\n this.menuItems = [];\n this.$active = null;\n this._mousedown = false;\n this._setupDropdown();\n this._setupEventHandlers();\n }\n static get defaults() {\n return _defaults;\n }\n static init(els, options) {\n return super.init(this, els, options);\n }\n static getInstance(el) {\n let domElem = el.jquery ? el[0] : el;\n return domElem.M_Autocomplete;\n }\n\n destroy() {\n this._removeEventHandlers();\n this._removeDropdown();\n (this.el as any).M_Autocomplete = undefined;\n }\n\n _setupEventHandlers() {\n this._handleInputBlurBound = this._handleInputBlur.bind(this);\n this._handleInputKeyupAndFocusBound = this._handleInputKeyupAndFocus.bind(this);\n this._handleInputKeydownBound = this._handleInputKeydown.bind(this);\n this._handleInputClickBound = this._handleInputClick.bind(this);\n this._handleContainerMousedownAndTouchstartBound = this._handleContainerMousedownAndTouchstart.bind(\n this\n );\n this._handleContainerMouseupAndTouchendBound = this._handleContainerMouseupAndTouchend.bind(\n this\n );\n this.el.addEventListener('blur', this._handleInputBlurBound);\n this.el.addEventListener('keyup', this._handleInputKeyupAndFocusBound);\n this.el.addEventListener('focus', this._handleInputKeyupAndFocusBound);\n this.el.addEventListener('keydown', this._handleInputKeydownBound);\n this.el.addEventListener('click', this._handleInputClickBound);\n this.container.addEventListener(\n 'mousedown',\n this._handleContainerMousedownAndTouchstartBound\n );\n this.container.addEventListener('mouseup', this._handleContainerMouseupAndTouchendBound);\n if (typeof window.ontouchstart !== 'undefined') {\n this.container.addEventListener(\n 'touchstart',\n this._handleContainerMousedownAndTouchstartBound\n );\n this.container.addEventListener('touchend', this._handleContainerMouseupAndTouchendBound);\n }\n }\n\n _removeEventHandlers() {\n this.el.removeEventListener('blur', this._handleInputBlurBound);\n this.el.removeEventListener('keyup', this._handleInputKeyupAndFocusBound);\n this.el.removeEventListener('focus', this._handleInputKeyupAndFocusBound);\n this.el.removeEventListener('keydown', this._handleInputKeydownBound);\n this.el.removeEventListener('click', this._handleInputClickBound);\n this.container.removeEventListener(\n 'mousedown',\n this._handleContainerMousedownAndTouchstartBound\n );\n this.container.removeEventListener('mouseup', this._handleContainerMouseupAndTouchendBound);\n\n if (typeof window.ontouchstart !== 'undefined') {\n this.container.removeEventListener(\n 'touchstart',\n this._handleContainerMousedownAndTouchstartBound\n );\n this.container.removeEventListener(\n 'touchend',\n this._handleContainerMouseupAndTouchendBound\n );\n }\n }\n\n _setupDropdown() { \n this.container = document.createElement('ul');\n this.container.style.maxHeight = this.options.maxDropDownHeight;\n this.container.id = `autocomplete-options-${M.guid()}`;\n this.container.classList.add('autocomplete-content', 'dropdown-content');\n this.el.setAttribute('data-target', this.container.id);\n\n // ! Issue in Component Dropdown: _placeDropdown moves dom-position\n this.el.parentElement.appendChild(this.container); \n\n // Initialize dropdown\n let dropdownOptions = {\n ...Autocomplete.defaults.dropdownOptions,\n ...this.options.dropdownOptions\n };\n let userOnItemClick = dropdownOptions.onItemClick;\n // Ensuring the select Option call when user passes custom onItemClick function to dropdown\n dropdownOptions.onItemClick = (li) => {\n if (!li) return;\n const entryID = li.getAttribute('data-id');\n this.selectOption(entryID);\n // Handle user declared onItemClick if needed\n if (userOnItemClick && typeof userOnItemClick === 'function')\n userOnItemClick.call(this.dropdown, this.el);\n };\n this.dropdown = M.Dropdown.init(this.el, dropdownOptions);\n\n // ! Workaround for Label: move label up again\n // TODO: Just use PopperJS in future!\n const label = this.el.parentElement.querySelector('label');\n if (label) this.el.after(label);\n\n // Sketchy removal of dropdown click handler\n this.el.removeEventListener('click', this.dropdown._handleClickBound);\n // Set Value if already set in HTML\n if (this.el.value) this.selectOption(this.el.value);\n // Add StatusInfo\n const div = document.createElement('div');\n div.classList.add('status-info');\n div.setAttribute('style', 'position: absolute;right:0;top:0;');\n this.el.parentElement.appendChild(div); \n this._updateSelectedInfo();\n }\n\n _removeDropdown() {\n this.container.parentNode.removeChild(this.container);\n }\n\n _handleInputBlur() {\n if (!this._mousedown) {\n this.close();\n this._resetAutocomplete();\n }\n }\n\n _handleInputKeyupAndFocus(e) {\n if (e.type === 'keyup') Autocomplete._keydown = false;\n this.count = 0;\n const actualValue = this.el.value.toLowerCase();\n // Don't capture enter or arrow key usage.\n if (e.keyCode === 13 || e.keyCode === 38 || e.keyCode === 40) return;\n // Check if the input isn't empty\n // Check if focus triggered by tab\n if (this.oldVal !== actualValue && (M.tabPressed || e.type !== 'focus')) {\n this.open();\n }\n // Value has changed!\n if (this.oldVal !== actualValue) {\n this._setStatusLoading();\n this.options.onSearch(this.el.value, this);\n }\n // Reset Single-Select when Input cleared\n if (!this.options.isMultiSelect && this.el.value.length === 0) {\n this.selectedValues = [];\n this._triggerChanged();\n }\n this.oldVal = actualValue;\n }\n\n _handleInputKeydown(e) {\n Autocomplete._keydown = true;\n // Arrow keys and enter key usage\n const keyCode = e.keyCode;\n const numItems = this.container.querySelectorAll('li').length;\n // select element on Enter\n if (keyCode === M.keys.ENTER && this.activeIndex >= 0) {\n const liElement = this.container.querySelectorAll('li')[this.activeIndex];\n if (liElement) {\n this.selectOption(liElement.getAttribute('data-id'));\n e.preventDefault();\n }\n return;\n }\n // Capture up and down key\n if (keyCode === M.keys.ARROW_UP || keyCode === M.keys.ARROW_DOWN) {\n e.preventDefault();\n if (keyCode === M.keys.ARROW_UP && this.activeIndex > 0) this.activeIndex--;\n if (keyCode === M.keys.ARROW_DOWN && this.activeIndex < numItems - 1) this.activeIndex++;\n this.$active?.classList.remove('active');\n if (this.activeIndex >= 0) {\n this.$active = this.container.querySelectorAll('li')[this.activeIndex];\n this.$active?.classList.add('active');\n // Focus selected\n this.container.children[this.activeIndex].scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest'\n });\n }\n }\n }\n\n _handleInputClick(e) {\n this.open();\n }\n\n _handleContainerMousedownAndTouchstart(e) {\n this._mousedown = true;\n }\n\n _handleContainerMouseupAndTouchend(e) {\n this._mousedown = false;\n }\n\n _resetCurrentElementPosition() {\n this.activeIndex = -1;\n this.$active?.classList.remove('active');\n }\n\n _resetAutocomplete() {\n this.container.replaceChildren();\n this._resetCurrentElementPosition();\n this.oldVal = null;\n this.isOpen = false;\n this._mousedown = false;\n }\n\n _highlightPartialText(input, label) {\n const start = label.toLowerCase().indexOf('' + input.toLowerCase() + '');\n const end = start + input.length - 1;\n //custom filters may return results where the string does not match any part\n if (start == -1 || end == -1) {\n return [label, '', ''];\n }\n return [label.slice(0, start), label.slice(start, end + 1), label.slice(end + 1)];\n }\n\n _createDropdownItem(entry) {\n const item = document.createElement('li');\n item.setAttribute('data-id', entry.id);\n item.setAttribute(\n 'style',\n 'display:grid; grid-auto-flow: column; user-select: none; align-items: center;'\n );\n // Checkbox\n if (this.options.isMultiSelect) {\n item.innerHTML = `\n <div class=\"item-selection\" style=\"text-align:center;\">\n <input type=\"checkbox\"${\n this.selectedValues.some((sel) => sel.id === entry.id) ? ' checked=\"checked\"' : ''\n }><span style=\"padding-left:21px;\"></span>\n </div>`;\n }\n // Image\n if (entry.image) {\n const img = document.createElement('img');\n img.classList.add('circle');\n img.src = entry.image;\n item.appendChild(img);\n }\n\n // Text\n const inputText = this.el.value.toLowerCase();\n const parts = this._highlightPartialText(inputText, (entry.text || entry.id).toString());\n const div = document.createElement('div');\n div.setAttribute('style', 'line-height:1.2;font-weight:500;');\n if (this.options.allowUnsafeHTML) {\n div.innerHTML = parts[0] + '<span class=\"highlight\">' + parts[1] + '</span>' + parts[2];\n } else {\n div.appendChild(document.createTextNode(parts[0]));\n if (parts[1]) {\n const highlight = document.createElement('span');\n highlight.textContent = parts[1];\n highlight.classList.add('highlight');\n div.appendChild(highlight);\n div.appendChild(document.createTextNode(parts[2]));\n }\n }\n\n const itemText = document.createElement('div');\n itemText.classList.add('item-text');\n itemText.setAttribute('style', 'padding:5px;overflow:hidden;');\n item.appendChild(itemText);\n item.querySelector('.item-text').appendChild(div);\n // Description\n if (typeof entry.description === 'string' || (typeof entry.description === 'number' && !isNaN(entry.description))) {\n const description = document.createElement('small');\n description.setAttribute(\n 'style',\n 'line-height:1.3;color:grey;white-space:nowrap;text-overflow:ellipsis;display:block;width:90%;overflow:hidden;'\n );\n description.innerText = entry.description;\n item.querySelector('.item-text').appendChild(description);\n }\n // Set Grid\n const getGridConfig = () => {\n if (this.options.isMultiSelect) {\n if (entry.image) return '40px min-content auto'; // cb-img-txt\n return '40px auto'; // cb-txt\n }\n if (entry.image) return 'min-content auto'; // img-txt\n return 'auto'; // txt\n };\n item.style.gridTemplateColumns = getGridConfig();\n return item;\n }\n\n _renderDropdown() {\n this._resetAutocomplete();\n // Check if Data is empty\n if (this.menuItems.length === 0) {\n this.menuItems = this.selectedValues; // Show selected Items\n }\n for (let i = 0; i < this.menuItems.length; i++) {\n const item = this._createDropdownItem(this.menuItems[i]);\n this.container.append(item);\n }\n }\n\n _setStatusLoading() {\n this.el.parentElement.querySelector(\n '.status-info'\n ).innerHTML = `<div style=\"height:100%;width:50px;\"><svg version=\"1.1\" id=\"L4\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" viewBox=\"0 0 100 100\" enable-background=\"new 0 0 0 0\" xml:space=\"preserve\">\n <circle fill=\"#888c\" stroke=\"none\" cx=\"6\" cy=\"50\" r=\"6\"><animate attributeName=\"opacity\" dur=\"1s\" values=\"0;1;0\" repeatCount=\"indefinite\" begin=\"0.1\"/></circle>\n <circle fill=\"#888c\" stroke=\"none\" cx=\"26\" cy=\"50\" r=\"6\"><animate attributeName=\"opacity\" dur=\"1s\" values=\"0;1;0\" repeatCount=\"indefinite\" begin=\"0.2\"/></circle>\n <circle fill=\"#888c\" stroke=\"none\" cx=\"46\" cy=\"50\" r=\"6\"><animate attributeName=\"opacity\" dur=\"1s\" values=\"0;1;0\" repeatCount=\"indefinite\" begin=\"0.3\"/></circle>\n </svg></div>`;\n }\n\n _updateSelectedInfo() {\n const statusElement = this.el.parentElement.querySelector('.status-info');\n if (statusElement) {\n if (this.options.isMultiSelect) statusElement.innerHTML = this.selectedValues.length.toString();\n else statusElement.innerHTML = '';\n }\n }\n\n _refreshInputText() {\n if (this.selectedValues.length === 1) {\n const entry = this.selectedValues[0];\n this.el.value = entry.text || entry.id; // Write Text to Input\n }\n }\n\n _triggerChanged() {\n this.el.dispatchEvent(new Event('change'));\n // Trigger Autocomplete Event\n if (typeof this.options.onAutocomplete === 'function')\n this.options.onAutocomplete.call(this, this.selectedValues);\n }\n\n open() {\n const inputText = this.el.value.toLowerCase();\n this._resetAutocomplete();\n if (inputText.length >= this.options.minLength) {\n this.isOpen = true;\n this._renderDropdown();\n }\n // Open dropdown\n if (!this.dropdown.isOpen) {\n setTimeout(() => {\n this.dropdown.open();\n }, 100);\n }\n else this.dropdown.recalculateDimensions(); // Recalculate dropdown when its already open\n }\n\n close() {\n this.dropdown.close();\n }\n\n setMenuItems(menuItems) {\n this.menuItems = menuItems;\n this.open();\n this._updateSelectedInfo();\n }\n\n setValues(entries) {\n this.selectedValues = entries;\n this._updateSelectedInfo();\n if (!this.options.isMultiSelect) {\n this._refreshInputText();\n }\n this._triggerChanged();\n }\n\n selectOption(id) {\n const entry = this.menuItems.find((item) => item.id == id);\n if (!entry) return;\n // Toggle Checkbox\n const li = this.container.querySelector('li[data-id=\"'+id+'\"]');\n if (!li) return;\n if (this.options.isMultiSelect) {\n const checkbox = <HTMLInputElement|null>li.querySelector('input[type=\"checkbox\"]');\n checkbox.checked = !checkbox.checked;\n if (checkbox.checked) this.selectedValues.push(entry);\n else\n this.selectedValues = this.selectedValues.filter(\n (selectedEntry) => selectedEntry.id !== entry.id\n );\n this.el.focus();\n } else {\n // Single-Select\n this.selectedValues = [entry];\n this._refreshInputText();\n this._resetAutocomplete();\n this.close();\n }\n this._updateSelectedInfo();\n this._triggerChanged();\n }\n}\n \n","import { Component } from \"./component\";\nimport anim from \"animejs\";\n\n let _defaults = {\n direction: 'top',\n hoverEnabled: true,\n toolbarEnabled: false\n };\n \n export class FloatingActionButton extends Component {\n el: HTMLElement;\n isOpen: boolean;\n private _anchor: HTMLAnchorElement;\n private _menu: HTMLElement|null;\n private _floatingBtns: HTMLElement[];\n private _floatingBtnsReverse: HTMLElement[];\n offsetY: number;\n offsetX: number;\n private _handleFABClickBound: any;\n private _handleOpenBound: any;\n private _handleCloseBound: any;\n private _handleDocumentClickBound: (this: HTMLElement, ev: MouseEvent) => any;\n btnBottom: number;\n btnLeft: number;\n btnWidth: number;\n\n constructor(el, options) {\n super(FloatingActionButton, el, options);\n\n (this.el as any).M_FloatingActionButton = this;\n\n this.options = {...FloatingActionButton.defaults, ...options};\n this.isOpen = false;\n this._anchor = this.el.querySelector('a');\n this._menu = this.el.querySelector('ul');\n this._floatingBtns = Array.from(this.el.querySelectorAll('ul .btn-floating'));\n this._floatingBtnsReverse = this._floatingBtns.reverse();\n this.offsetY = 0;\n this.offsetX = 0;\n\n this.el.classList.add(`direction-${this.options.direction}`);\n if (this.options.direction === 'top')\n this.offsetY = 40;\n else if (this.options.direction === 'right')\n this.offsetX = -40;\n else if (this.options.direction === 'bottom')\n this.offsetY = -40;\n else\n this.offsetX = 40;\n this._setupEventHandlers();\n }\n\n static get defaults() {\n return _defaults;\n }\n\n static init(els, options) {\n return super.init(this, els, options);\n }\n\n static getInstance(el) {\n let domElem = !!el.jquery ? el[0] : el;\n return domElem.M_FloatingActionButton;\n }\n\n destroy() {\n this._removeEventHandlers();\n (this.el as any).M_FloatingActionButton = undefined;\n }\n\n _setupEventHandlers() {\n this._handleFABClickBound = this._handleFABClick.bind(this);\n this._handleOpenBound = this.open.bind(this);\n this._handleCloseBound = this.close.bind(this);\n\n if (this.options.hoverEnabled && !this.options.toolbarEnabled) {\n this.el.addEventListener('mouseenter', this._handleOpenBound);\n this.el.addEventListener('mouseleave', this._handleCloseBound);\n } else {\n this.el.addEventListener('click', this._handleFABClickBound);\n }\n }\n\n _removeEventHandlers() {\n if (this.options.hoverEnabled && !this.options.toolbarEnabled) {\n this.el.removeEventListener('mouseenter', this._handleOpenBound);\n this.el.removeEventListener('mouseleave', this._handleCloseBound);\n } else {\n this.el.removeEventListener('click', this._handleFABClickBound);\n }\n }\n\n _handleFABClick() {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n _handleDocumentClick(e) {\n const elem = <HTMLElement>e.target;\n if (elem !== this._menu) this.close;\n /*\n if (!elem.closest(this.$menu)) {\n this.close();\n }*/\n }\n\n open() {\n if (this.isOpen) return;\n if (this.options.toolbarEnabled)\n this._animateInToolbar();\n else\n this._animateInFAB();\n this.isOpen = true;\n }\n\n close() {\n if (!this.isOpen) return;\n if (this.options.toolbarEnabled) {\n window.removeEventListener('scroll', this._handleCloseBound, true);\n document.body.removeEventListener('click', this._handleDocumentClickBound, true);\n this._animateOutToolbar();\n }\n else {\n this._animateOutFAB();\n }\n this.isOpen = false;\n }\n\n _animateInFAB() {\n this.el.classList.add('active');\n let time = 0;\n this._floatingBtnsReverse.forEach((el) => {\n anim({\n targets: el,\n opacity: 1,\n scale: [0.4, 1],\n translateY: [this.offsetY, 0],\n translateX: [this.offsetX, 0],\n duration: 275,\n delay: time,\n easing: 'easeInOutQuad'\n });\n time += 40;\n });\n }\n\n _animateOutFAB() {\n this._floatingBtnsReverse.forEach((el) => {\n anim.remove(el);\n anim({\n targets: el,\n opacity: 0,\n scale: 0.4,\n translateY: this.offsetY,\n translateX: this.offsetX,\n duration: 175,\n easing: 'easeOutQuad',\n complete: () => {\n this.el.classList.remove('active');\n }\n });\n });\n }\n\n _animateInToolbar() {\n let scaleFactor;\n let windowWidth = window.innerWidth;\n let windowHeight = window.innerHeight;\n let btnRect = this.el.getBoundingClientRect();\n\n const backdrop = document.createElement('div');\n backdrop.classList.add('fab-backdrop'); // $('<div class=\"fab-backdrop\"></div>');\n\n const fabColor = getComputedStyle(this._anchor).backgroundColor; // css('background-color');\n\n this._anchor.append(backdrop);\n\n this.offsetX = btnRect.left - windowWidth / 2 + btnRect.width / 2;\n this.offsetY = windowHeight - btnRect.bottom;\n scaleFactor = windowWidth / backdrop[0].clientWidth;\n this.btnBottom = btnRect.bottom;\n this.btnLeft = btnRect.left;\n this.btnWidth = btnRect.width;\n\n // Set initial state\n this.el.classList.add('active');\n this.el.style.textAlign = 'center';\n this.el.style.width = '100%';\n this.el.style.bottom = '0';\n this.el.style.left = '0';\n this.el.style.transform = 'translateX(' + this.offsetX + 'px)';\n this.el.style.transition = 'none';\n\n this._anchor.style.transform = `translateY(${this.offsetY}px`;\n this._anchor.style.transition = 'none';\n\n (<HTMLElement>backdrop).style.backgroundColor = fabColor;\n\n setTimeout(() => {\n this.el.style.transform = '';\n this.el.style.transition = 'transform .2s cubic-bezier(0.550, 0.085, 0.680, 0.530), background-color 0s linear .2s';\n\n this._anchor.style.overflow = 'visible';\n this._anchor.style.transform = '';\n this._anchor.style.transition = 'transform .2s';\n\n setTimeout(() => {\n this.el.style.overflow = 'hidden';\n this.el.style.backgroundColor = fabColor;\n\n backdrop.style.transform = 'scale(' + scaleFactor + ')';\n backdrop.style.transition = 'transform .2s cubic-bezier(0.550, 0.055, 0.675, 0.190)';\n\n this._menu.querySelectorAll('li > a').forEach((a: HTMLAnchorElement) => a.style.opacity = '1');\n\n // Scroll to close.\n this._handleDocumentClickBound = this._handleDocumentClick.bind(this);\n window.addEventListener('scroll', this._handleCloseBound, true);\n document.body.addEventListener('click', this._handleDocumentClickBound, true);\n }, 100);\n }, 0);\n }\n\n\n\n\n _animateOutToolbar() {\n return;\n /*\n let windowWidth = window.innerWidth;\n let windowHeight = window.innerHeight;\n let backdrop = this.$el.find('.fab-backdrop');\n let fabColor = this.$anchor.css('background-color');\n\n this.offsetX = this.btnLeft - windowWidth / 2 + this.btnWidth / 2;\n this.offsetY = windowHeight - this.btnBottom;\n\n // Hide backdrop\n this.$el.removeClass('active');\n this.$el.css({\n 'background-color': 'transparent',\n transition: 'none'\n });\n // this.$anchor.css({\n // transition: 'none'\n // });\n backdrop.css({\n transform: 'scale(0)',\n 'background-color': fabColor\n });\n\n // this.$menu\n // .children('li')\n // .children('a')\n // .css({\n // opacity: ''\n // });\n\n setTimeout(() => {\n backdrop.remove();\n\n // Set initial state.\n this.$el.css({\n 'text-align': '',\n width: '',\n bottom: '',\n left: '',\n overflow: '',\n 'background-color': '',\n transform: 'translate3d(' + -this.offsetX + 'px,0,0)'\n });\n // this.$anchor.css({\n // overflow: '',\n // transform: 'translate3d(0,' + this.offsetY + 'px,0)'\n // });\n\n setTimeout(() => {\n this.$el.css({\n transform: 'translate3d(0,0,0)',\n transition: 'transform .2s'\n });\n // this.$anchor.css({\n // transform: 'translate3d(0,0,0)',\n // transition: 'transform .2s cubic-bezier(0.550, 0.055, 0.675, 0.190)'\n // });\n }, 20);\n }, 200);\n */\n }\n }\n\n ","import anim from \"animejs\";\n\nexport class Cards {\n\n static Init() {\n\n document.addEventListener(\"DOMContentLoaded\", () => {\n document.body.addEventListener('click', e => {\n const trigger = <HTMLElement>e.target;\n\n const card: HTMLElement = trigger.closest('.card');\n if (!card) return;\n\n const cardReveal = <HTMLElement|null>Array.from(card.children).find(elem => elem.classList.contains('card-reveal'));\n if (!cardReveal) return;\n const initialOverflow = getComputedStyle(card).overflow;\n\n // Close Card \n const closeArea = cardReveal.querySelector('.card-reveal .card-title');\n if (trigger === closeArea || closeArea.contains(trigger)) {\n anim({\n targets: cardReveal,\n translateY: 0,\n duration: 225,\n easing: 'easeInOutQuad',\n complete: (anim) => {\n cardReveal.style.display = 'none';\n card.style.overflow = initialOverflow;\n }\n });\n };\n \n // Reveal Card\n const activators = card.querySelectorAll('.activator');\n activators.forEach(activator => {\n if (trigger === activator || activator.contains(trigger)) {\n card.style.overflow = 'hidden';\n cardReveal.style.display = 'block';\n anim({\n targets: cardReveal,\n translateY: '-100%',\n duration: 300,\n easing: 'easeInOutQuad'\n });\n }\n });\n \n\n }); \n });\n\n } \n}\n ","import { Component } from \"./component\";\nimport { M } from \"./global\";\n\n let _defaults = {\n duration: 200, // ms\n dist: -100, // zoom scale TODO: make this more intuitive as an option\n shift: 0, // spacing for center image\n padding: 0, // Padding between non center items\n numVisible: 5, // Number of visible items in carousel\n fullWidth: false, // Change to full width styles\n indicators: false, // Toggle indicators\n noWrap: false, // Don't wrap around and cycle through items.\n onCycleTo: null // Callback for when a new slide is cycled to.\n };\n\n export class Carousel extends Component {\n el: HTMLElement;\n hasMultipleSlides: boolean;\n showIndicators: boolean;\n noWrap: any;\n pressed: boolean;\n dragged: boolean;\n offset: number;\n target: number;\n images: HTMLElement[];\n itemWidth: any;\n itemHeight: any;\n dim: number;\n _autoScrollBound: any;\n _trackBound: any;\n _indicators: any;\n count: number;\n xform: string;\n private _handleCarouselTapBound: any;\n private _handleCarouselDragBound: any;\n private _handleCarouselReleaseBound: any;\n private _handleCarouselClickBound: any;\n _handleIndicatorClickBound: any;\n _handleThrottledResizeBound: any;\n verticalDragged: boolean;\n reference: any;\n referenceY: any;\n velocity: number;\n frame: number;\n timestamp: number;\n ticker: NodeJS.Timer;\n amplitude: number;\n center: number = 0;\n imageHeight: any;\n scrollingTimeout: any;\n oneTimeCallback: any;\n\n constructor(el: Element, options: Object) {\n super(Carousel, el, options);\n (this.el as any).M_Carousel = this;\n this.options = {...Carousel.defaults, ...options};\n\n // Setup\n this.hasMultipleSlides = this.el.querySelectorAll('.carousel-item').length > 1;\n this.showIndicators = this.options.indicators && this.hasMultipleSlides;\n this.noWrap = this.options.noWrap || !this.hasMultipleSlides;\n this.pressed = false;\n this.dragged = false;\n this.offset = this.target = 0;\n this.images = [];\n this.itemWidth = this.el.querySelector('.carousel-item').clientWidth;\n this.itemHeight = this.el.querySelector('.carousel-item').clientHeight;\n this.dim = this.itemWidth * 2 + this.options.padding || 1; // Make sure dim is non zero for divisions.\n this._autoScrollBound = this._autoScroll.bind(this);\n this._trackBound = this._track.bind(this);\n\n // Full Width carousel setup\n if (this.options.fullWidth) {\n this.options.dist = 0;\n this._setCarouselHeight();\n\n // Offset fixed items when indicators.\n if (this.showIndicators) {\n this.el.querySelector('.carousel-fixed-item')?.classList.add('with-indicators');\n }\n }\n\n // Iterate through slides\n this._indicators = document.createElement('ul');\n this._indicators.classList.add('indicators');\n\n this.el.querySelectorAll('.carousel-item').forEach((item: HTMLElement, i) => {\n this.images.push(item);\n if (this.showIndicators) {\n const indicator = document.createElement('li');\n indicator.classList.add('indicator-item');\n if (i === 0) {\n indicator.classList.add('active');\n }\n this._indicators.appendChild(indicator);\n }\n });\n\n if (this.showIndicators)\n this.el.appendChild(this._indicators);\n\n this.count = this.images.length;\n\n // Cap numVisible at count\n this.options.numVisible = Math.min(this.count, this.options.numVisible);\n\n // Setup cross browser string\n this.xform = 'transform';\n ['webkit', 'Moz', 'O', 'ms'].every((prefix) => {\n var e = prefix + 'Transform';\n if (typeof document.body.style[e] !== 'undefined') {\n this.xform = e;\n return false;\n }\n return true;\n });\n\n this._setupEventHandlers();\n this._scroll(this.offset);\n }\n\n static get defaults() {\n return _defaults;\n }\n\n static init(els, options) {\n return super.init(this, els, options);\n }\n\n static getInstance(el) {\n let domElem = !!el.jquery ? el[0] : el;\n return domElem.M_Carousel;\n }\n\n destroy() {\n this._removeEventHandlers();\n (this.el as any).M_Carousel = undefined;\n }\n\n _setupEventHandlers() {\n this._handleCarouselTapBound = this._handleCarouselTap.bind(this);\n this._handleCarouselDragBound = this._handleCarouselDrag.bind(this);\n this._handleCarouselReleaseBound = this._handleCarouselRelease.bind(this);\n this._handleCarouselClickBound = this._handleCarouselClick.bind(this);\n if (typeof window.ontouchstart !== 'undefined') {\n this.el.addEventListener('touchstart', this._handleCarouselTapBound);\n this.el.addEventListener('touchmove', this._handleCarouselDragBound);\n this.el.addEventListener('touchend', this._handleCarouselReleaseBound);\n }\n this.el.addEventListener('mousedown', this._handleCarouselTapBound);\n this.el.addEventListener('mousemove', this._handleCarouselDragBound);\n this.el.addEventListener('mouseup', this._handleCarouselReleaseBound);\n this.el.addEventListener('mouseleave', this._handleCarouselReleaseBound);\n this.el.addEventListener('click', this._handleCarouselClickBound);\n if (this.showIndicators && this._indicators) {\n this._handleIndicatorClickBound = this._handleIndicatorClick.bind(this);\n this._indicators.querySelectorAll('.indicator-item').forEach((el) => {\n el.addEventListener('click', this._handleIndicatorClickBound);\n });\n }\n // Resize\n let throttledResize = M.throttle(this._handleResize, 200, null);\n this._handleThrottledResizeBound = throttledResize.bind(this);\n window.addEventListener('resize', this._handleThrottledResizeBound);\n }\n\n _removeEventHandlers() {\n if (typeof window.ontouchstart !== 'undefined') {\n this.el.removeEventListener('touchstart', this._handleCarouselTapBound);\n this.el.removeEventListener('touchmove', this._handleCarouselDragBound);\n this.el.removeEventListener('touchend', this._handleCarouselReleaseBound);\n }\n this.el.removeEventListener('mousedown', this._handleCarouselTapBound);\n this.el.removeEventListener('mousemove', this._handleCarouselDragBound);\n this.el.removeEventListener('mouseup', this._handleCarouselReleaseBound);\n this.el.removeEventListener('mouseleave', this._handleCarouselReleaseBound);\n this.el.removeEventListener('click', this._handleCarouselClickBound);\n if (this.showIndicators && this._indicators) {\n this._indicators.querySelectorAll('.indicator-item').forEach((el) => {\n el.removeEventListener('click', this._handleIndicatorClickBound);\n });\n }\n window.removeEventListener('resize', this._handleThrottledResizeBound);\n }\n\n _handleCarouselTap(e) {\n // Fixes firefox draggable image bug\n if (e.type === 'mousedown' && (<HTMLElement>e.target).tagName === 'IMG') {\n e.preventDefault();\n }\n this.pressed = true;\n this.dragged = false;\n this.verticalDragged = false;\n this.reference = this._xpos(e);\n this.referenceY = this._ypos(e);\n\n this.velocity = this.amplitude = 0;\n this.frame = this.offset;\n this.timestamp = Date.now();\n clearInterval(this.ticker);\n this.ticker = setInterval(this._trackBound, 100);\n }\n\n _handleCarouselDrag(e) {\n let x, y, delta, deltaY;\n if (this.pressed) {\n x = this._xpos(e);\n y = this._ypos(e);\n delta = this.reference - x;\n deltaY = Math.abs(this.referenceY - y);\n if (deltaY < 30 && !this.verticalDragged) {\n // If vertical scrolling don't allow dragging.\n if (delta > 2 || delta < -2) {\n this.dragged = true;\n this.reference = x;\n this._scroll(this.offset + delta);\n }\n } else if (this.dragged) {\n // If dragging don't allow vertical scroll.\n e.preventDefault();\n e.stopPropagation();\n return false;\n } else {\n // Vertical scrolling.\n this.verticalDragged = true;\n }\n }\n if (this.dragged) {\n // If dragging don't allow vertical scroll.\n e.preventDefault();\n e.stopPropagation();\n return false;\n }\n }\n\n _handleCarouselRelease(e) {\n if (this.pressed) {\n this.pressed = false;\n } else {\n return;\n }\n clearInterval(this.ticker);\n this.target = this.offset;\n if (this.velocity > 10 || this.velocity < -10) {\n this.amplitude = 0.9 * this.velocity;\n this.target = this.offset + this.amplitude;\n }\n this.target = Math.round(this.target / this.dim) * this.dim;\n // No wrap of items.\n if (this.noWrap) {\n if (this.target >= this.dim * (this.count - 1)) {\n this.target = this.dim * (this.count - 1);\n } else if (this.target < 0) {\n this.target = 0;\n }\n }\n this.amplitude = this.target - this.offset;\n this.timestamp = Date.now();\n requestAnimationFrame(this._autoScrollBound);\n if (this.dragged) {\n e.preventDefault();\n e.stopPropagation();\n }\n return false;\n }\n\n _handleCarouselClick(e) {\n // Disable clicks if carousel was dragged.\n if (this.dragged) {\n e.preventDefault();\n e.stopPropagation();\n return false;\n }\n else if (!this.options.fullWidth) {\n const clickedElem = (<HTMLElement>e.target).closest('.carousel-item');\n const clickedIndex = [...clickedElem.parentNode.children].indexOf(clickedElem);\n const diff = this._wrap(this.center) - clickedIndex;\n // Disable clicks if carousel was shifted by click\n if (diff !== 0) {\n e.preventDefault();\n e.stopPropagation();\n }\n // fixes https://github.com/materializecss/materialize/issues/180\n if (clickedIndex < 0) {\n // relative X position > center of carousel = clicked at the right part of the carousel\n if (e.clientX - e.target.getBoundingClientRect().left > this.el.clientWidth / 2) {\n this.next();\n } else {\n this.prev();\n }\n } else {\n this._cycleTo(clickedIndex);\n }\n }\n }\n\n _handleIndicatorClick(e: Event) {\n e.stopPropagation();\n const indicator = (<HTMLElement>e.target).closest('.indicator-item');\n if (indicator) {\n const index = [...indicator.parentNode.children].indexOf(indicator);\n this._cycleTo(index);\n }\n }\n\n _handleResize(e) {\n if (this.options.fullWidth) {\n this.itemWidth = this.el.querySelector('.carousel-item').clientWidth;\n this.imageHeight = this.el.querySelector('.carousel-item.active').clientHeight;\n this.dim = this.itemWidth * 2 + this.options.padding;\n this.offset = this.center * 2 * this.itemWidth;\n this.target = this.offset;\n this._setCarouselHeight(true);\n }\n else {\n this._scroll();\n }\n }\n\n _setCarouselHeight(imageOnly: boolean = false) {\n const firstSlide = this.el.querySelector('.carousel-item.active')\n ? this.el.querySelector('.carousel-item.active')\n : this.el.querySelector('.carousel-item');\n\n const firstImage = firstSlide.querySelector('img');\n if (firstImage) {\n if (firstImage.complete) {\n // If image won't trigger the load event\n const imageHeight = firstImage.clientHeight;\n if (imageHeight > 0) {\n this.el.style.height = imageHeight+'px';\n }\n else {\n // If image still has no height, use the natural dimensions to calculate\n const naturalWidth = firstImage.naturalWidth;\n const naturalHeight = firstImage.naturalHeight;\n const adjustedHeight = (this.el.clientWidth / naturalWidth) * naturalHeight;\n this.el.style.height = adjustedHeight+'px';\n }\n } else {\n // Get height when image is loaded normally\n firstImage.addEventListener('load', () => {\n this.el.style.height = firstImage.offsetHeight+'px';\n });\n }\n }\n else if (!imageOnly) {\n const slideHeight = firstSlide.clientHeight;\n this.el.style.height = slideHeight+'px';\n }\n }\n\n _xpos(e) {\n // touch event\n if (e.targetTouches && e.targetTouches.length >= 1) {\n return e.targetTouches[0].clientX;\n }\n // mouse event\n return e.clientX;\n }\n\n _ypos(e) {\n // touch event\n if (e.targetTouches && e.targetTouches.length >= 1) {\n return e.targetTouches[0].clientY;\n }\n // mouse event\n return e.clientY;\n }\n\n _wrap(x: number) {\n return x >= this.count\n ? x % this.count\n : x < 0\n ? this._wrap(this.count + (x % this.count))\n : x;\n }\n\n _track() {\n let now, elapsed, delta, v;\n now = Date.now();\n elapsed = now - this.timestamp;\n this.timestamp = now;\n delta = this.offset - this.frame;\n this.frame = this.offset;\n v = (1000 * delta) / (1 + elapsed);\n this.velocity = 0.8 * v + 0.2 * this.velocity;\n }\n\n _autoScroll() {\n let elapsed, delta;\n if (this.amplitude) {\n elapsed = Date.now() - this.timestamp;\n delta = this.amplitude * Math.exp(-elapsed / this.options.duration);\n if (delta > 2 || delta < -2) {\n this._scroll(this.target - delta);\n requestAnimationFrame(this._autoScrollBound);\n } else {\n this._scroll(this.target);\n }\n }\n }\n\n _scroll(x: number = 0) {\n // Track scrolling state\n if (!this.el.classList.contains('scrolling')) {\n this.el.classList.add('scrolling');\n }\n if (this.scrollingTimeout != null) {\n window.clearTimeout(this.scrollingTimeout);\n }\n this.scrollingTimeout = window.setTimeout(() => {\n this.el.classList.remove('scrolling');\n }, this.options.duration);\n\n // Start actual scroll\n let i,\n half,\n delta,\n dir,\n tween,\n el,\n alignment,\n zTranslation,\n tweenedOpacity,\n centerTweenedOpacity;\n let lastCenter = this.center;\n let numVisibleOffset = 1 / this.options.numVisible;\n\n this.offset = typeof x === 'number' ? x : this.offset;\n this.center = Math.floor((this.offset + this.dim / 2) / this.dim);\n\n delta = this.offset - this.center * this.dim;\n dir = delta < 0 ? 1 : -1;\n tween = (-dir * delta * 2) / this.dim;\n half = this.count >> 1;\n\n if (this.options.fullWidth) {\n alignment = 'translateX(0)';\n centerTweenedOpacity = 1;\n }\n else {\n alignment = 'translateX(' + (this.el.clientWidth - this.itemWidth) / 2 + 'px) ';\n alignment += 'translateY(' + (this.el.clientHeight - this.itemHeight) / 2 + 'px)';\n centerTweenedOpacity = 1 - numVisibleOffset * tween;\n }\n\n // Set indicator active\n if (this.showIndicators) {\n const diff = this.center % this.count;\n const activeIndicator = this._indicators.querySelector('.indicator-item.active');\n const activeIndicatorIndex = [...activeIndicator.parentNode.children].indexOf(activeIndicator);\n if (activeIndicatorIndex !== diff) {\n activeIndicator.classList.remove('active');\n const pos = diff < 0 ? this.count + diff : diff;\n this._indicators.querySelectorAll('.indicator-item')[pos].classList.add('active');\n }\n }\n\n // center\n // Don't show wrapped items.\n if (!this.noWrap || (this.center >= 0 && this.center < this.count)) {\n el = this.images[this._wrap(this.center)];\n\n // Add active class to center item.\n if (!el.classList.contains('active')) {\n this.el.querySelector('.carousel-item').classList.remove('active');\n el.classList.add('active');\n }\n\n let transformString = `${alignment} translateX(${-delta / 2}px) translateX(${dir *\n this.options.shift *\n tween *\n i}px) translateZ(${this.options.dist * tween}px)`;\n this._updateItemStyle(el, centerTweenedOpacity, 0, transformString);\n }\n\n for (i = 1; i <= half; ++i) {\n // right side\n if (this.options.fullWidth) {\n zTranslation = this.options.dist;\n tweenedOpacity = i === half && delta < 0 ? 1 - tween : 1;\n } else {\n zTranslation = this.options.dist * (i * 2 + tween * dir);\n tweenedOpacity = 1 - numVisibleOffset * (i * 2 + tween * dir);\n }\n // Don't show wrapped items.\n if (!this.noWrap || this.center + i < this.count) {\n el = this.images[this._wrap(this.center + i)];\n let transformString = `${alignment} translateX(${this.options.shift +\n (this.dim * i - delta) / 2}px) translateZ(${zTranslation}px)`;\n this._updateItemStyle(el, tweenedOpacity, -i, transformString);\n }\n // left side\n if (this.options.fullWidth) {\n zTranslation = this.options.dist;\n tweenedOpacity = i === half && delta > 0 ? 1 - tween : 1;\n } else {\n zTranslation = this.options.dist * (i * 2 - tween * dir);\n tweenedOpacity = 1 - numVisibleOffset * (i * 2 - tween * dir);\n }\n // Don't show wrapped items.\n if (!this.noWrap || this.center - i >= 0) {\n el = this.images[this._wrap(this.center - i)];\n let transformString = `${alignment} translateX(${-this.options.shift +\n (-this.dim * i - delta) / 2}px) translateZ(${zTranslation}px)`;\n this._updateItemStyle(el, tweenedOpacity, -i, transformString);\n }\n }\n // center\n // Don't show wrapped items.\n if (!this.noWrap || (this.center >= 0 && this.center < this.count)) {\n el = this.images[this._wrap(this.center)];\n let transformString = `${alignment} translateX(${-delta / 2}px) translateX(${dir *\n this.options.shift *\n tween}px) translateZ(${this.options.dist * tween}px)`;\n this._updateItemStyle(el, centerTweenedOpacity, 0, transformString);\n }\n // onCycleTo callback\n const _currItem = this.el.querySelectorAll('.carousel-item')[this._wrap(this.center)];\n\n if (lastCenter !== this.center && typeof this.options.onCycleTo === 'function') {\n this.options.onCycleTo.call(this, _currItem, this.dragged);\n }\n // One time callback\n if (typeof this.oneTimeCallback === 'function') {\n this.oneTimeCallback.call(this, _currItem, this.dragged);\n this.oneTimeCallback = null;\n }\n }\n\n _updateItemStyle(el: HTMLElement, opacity: number, zIndex: number, transform: string) {\n el.style[this.xform] = transform;\n el.style.zIndex = zIndex.toString();\n el.style.opacity = opacity.toString();\n el.style.visibility = 'visible';\n }\n\n _cycleTo(n: number, callback: Function = null) {\n let diff = (this.center % this.count) - n;\n // Account for wraparound.\n if (!this.noWrap) {\n if (diff < 0) {\n if (Math.abs(diff + this.count) < Math.abs(diff)) {\n diff += this.count;\n }\n } else if (diff > 0) {\n if (Math.abs(diff - this.count) < diff) {\n diff -= this.count;\n }\n }\n }\n this.target = this.dim * Math.round(this.offset / this.dim);\n // Next\n if (diff < 0) {\n this.target += this.dim * Math.abs(diff); \n } // Prev\n else if (diff > 0) {\n this.target -= this.dim * diff;\n }\n // Set one time callback\n if (typeof callback === 'function') {\n this.oneTimeCallback = callback;\n }\n // Scroll\n if (this.offset !== this.target) {\n this.amplitude = this.target - this.offset;\n this.timestamp = Date.now();\n requestAnimationFrame(this._autoScrollBound);\n }\n }\n\n next(n: number = 1) {\n if (n === undefined || isNaN(n)) {\n n = 1;\n }\n let index = this.center + n;\n if (index >= this.count || index < 0) {\n if (this.noWrap) return;\n index = this._wrap(index);\n }\n this._cycleTo(index);\n }\n\n prev(n: number = 1) {\n if (n === undefined || isNaN(n)) {\n n = 1;\n }\n let index = this.center - n;\n if (index >= this.count || index < 0) {\n if (this.noWrap) return;\n index = this._wrap(index);\n }\n this._cycleTo(index);\n }\n\n set(n: number, callback: Function) {\n if (n === undefined || isNaN(n)) {\n n = 0;\n }\n if (n > this.count || n < 0) {\n if (this.noWrap) return;\n n = this._wrap(n);\n }\n this._cycleTo(n, callback);\n }\n }","import { Component } from \"./component\";\n\nlet _defaults = {};\n\nexport class CharacterCounter extends Component {\n isInvalid: boolean;\n isValidLength: boolean;\n private _handleUpdateCounterBound: any;\n counterEl: HTMLSpanElement;\n\n constructor(el: Element, options: Object) {\n super(CharacterCounter, el, options);\n (this.el as any).M_CharacterCounter = this;\n this.options = {...CharacterCounter.defaults, ...options};\n this.isInvalid = false;\n this.isValidLength = false;\n this._setupCounter();\n this._setupEventHandlers();\n }\n\n static get defaults() {\n return _defaults;\n }\n\n static init(els, options) {\n return super.init(this, els, options);\n }\n\n static getInstance(el) {\n let domElem = !!el.jquery ? el[0] : el;\n return domElem.M_CharacterCounter;\n }\n\n destroy() {\n this._removeEventHandlers();\n (this.el as any).CharacterCounter = undefined;\n this._removeCounter();\n }\n\n _setupEventHandlers() {\n this._handleUpdateCounterBound = this.updateCounter.bind(this);\n this.el.addEventListener('focus', this._handleUpdateCounterBound, true);\n this.el.addEventListener('input', this._handleUpdateCounterBound, true);\n }\n\n _removeEventHandlers() {\n this.el.removeEventListener('focus', this._handleUpdateCounterBound, true);\n this.el.removeEventListener('input', this._handleUpdateCounterBound, true);\n }\n\n _setupCounter() {\n this.counterEl = document.createElement('span');\n this.counterEl.classList.add('character-counter');\n this.counterEl.style.float = 'right';\n this.counterEl.style.fontSize = '12px';\n this.counterEl.style.height = '1';\n this.el.parentElement.appendChild(this.counterEl);\n }\n\n _removeCounter() {\n this.counterEl.remove();\n }\n\n updateCounter() {\n let maxLength = parseInt(this.el.getAttribute('data-length')),\n actualLength = (this.el as HTMLInputElement).value.length;\n\n this.isValidLength = actualLength <= maxLength;\n let counterString = actualLength.toString();\n if (maxLength) {\n counterString += '/' + maxLength;\n this._validateInput();\n }\n this.counterEl.innerHTML = counterString;\n }\n\n _validateInput() {\n if (this.isValidLength && this.isInvalid) {\n this.isInvalid = false;\n this.el.classList.remove('invalid');\n }\n else if (!this.isValidLength && !this.isInvalid) {\n this.isInvalid = true;\n this.el.classList.remove('valid');\n this.el.classList.add('invalid');\n }\n }\n}\n","import { Component } from \"./component\";\nimport { M } from \"./global\";\nimport { Autocomplete } from \"./autocomplete\";\n\nlet _defaults = {\n data: [],\n placeholder: '',\n secondaryPlaceholder: '',\n autocompleteOptions: {},\n autocompleteOnly: false,\n limit: Infinity,\n onChipAdd: null,\n onChipSelect: null,\n onChipDelete: null\n};\n\ninterface DataBit {\n id: string, // required\n text?: string,\n image?: string,\n description?: string,\n}\n\nfunction gGetIndex(el: HTMLElement): number {\n return [...el.parentNode.children].indexOf(el);\n}\n\nexport class Chips extends Component {\n chipsData: DataBit[];\n hasAutocomplete: boolean;\n autocomplete: Autocomplete;\n _input: HTMLInputElement;\n _label: any;\n _chips: HTMLElement[];\n private _handleChipClickBound: any;\n private _handleInputKeydownBound: any;\n private _handleInputFocusBound: any;\n private _handleInputBlurBound: any;\n static _keydown: boolean;\n private _selectedChip: any;\n\n constructor(el, options) {\n super(Chips, el, options);\n (this.el as any).M_Chips = this;\n this.options = {...Chips.defaults, ...options};\n\n this.el.classList.add('chips', 'input-field');\n this.chipsData = [];\n this._chips = [];\n this._setupInput();\n this.hasAutocomplete = Object.keys(this.options.autocompleteOptions).length > 0;\n\n // Set input id\n if (!this._input.getAttribute('id'))\n this._input.setAttribute('id', M.guid());\n\n // Render initial chips\n if (this.options.data.length) {\n this.chipsData = this.options.data;\n this._renderChips();\n }\n // Setup autocomplete if needed\n if (this.hasAutocomplete) this._setupAutocomplete();\n this._setPlaceholder();\n this._setupLabel();\n this._setupEventHandlers();\n }\n\n static get defaults() {\n return _defaults;\n }\n\n static init(els, options) {\n return super.init(this, els, options);\n }\n\n static getInstance(el) {\n const domElem = !!el.jquery ? el[0] : el;\n return domElem.M_Chips;\n }\n\n getData() {\n return this.chipsData;\n }\n\n destroy() {\n this._removeEventHandlers();\n this._chips.forEach(c => c.remove());\n this._chips = [];\n (this.el as any).M_Chips = undefined;\n }\n\n _setupEventHandlers() {\n this._handleChipClickBound = this._handleChipClick.bind(this);\n this._handleInputKeydownBound = this._handleInputKeydown.bind(this);\n this._handleInputFocusBound = this._handleInputFocus.bind(this);\n this._handleInputBlurBound = this._handleInputBlur.bind(this);\n this.el.addEventListener('click', this._handleChipClickBound);\n document.addEventListener('keydown', Chips._handleChipsKeydown);\n document.addEventListener('keyup', Chips._handleChipsKeyup);\n this.el.addEventListener('blur', Chips._handleChipsBlur, true);\n this._input.addEventListener('focus', this._handleInputFocusBound);\n this._input.addEventListener('blur', this._handleInputBlurBound);\n this._input.addEventListener('keydown', this._handleInputKeydownBound);\n }\n\n _removeEventHandlers() {\n this.el.removeEventListener('click', this._handleChipClickBound);\n document.removeEventListener('keydown', Chips._handleChipsKeydown);\n document.removeEventListener('keyup', Chips._handleChipsKeyup);\n this.el.removeEventListener('blur', Chips._handleChipsBlur, true);\n this._input.removeEventListener('focus', this._handleInputFocusBound);\n this._input.removeEventListener('blur', this._handleInputBlurBound);\n this._input.removeEventListener('keydown', this._handleInputKeydownBound);\n }\n\n _handleChipClick(e) {\n const _chip = (<HTMLElement>e.target).closest('.chip');\n const clickedClose = (<HTMLElement>e.target).classList.contains('close');\n if (_chip) {\n const index = [..._chip.parentNode.children].indexOf(_chip);\n if (clickedClose) {\n this.deleteChip(index);\n this._input.focus();\n }\n else {\n this.selectChip(index);\n }\n // Default handle click to focus on input\n }\n else {\n this._input.focus();\n }\n }\n\n static _handleChipsKeydown(e) {\n Chips._keydown = true;\n const chips = (<HTMLElement>e.target).closest('.chips');\n const chipsKeydown = e.target && chips;\n\n // Don't handle keydown inputs on input and textarea\n const tag = (<HTMLElement>e.target).tagName;\n if (tag === 'INPUT' || tag === 'TEXTAREA' || !chipsKeydown) return;\n \n const currChips: Chips = (chips as any).M_Chips;\n // backspace and delete\n if (e.keyCode === 8 || e.keyCode === 46) {\n e.preventDefault();\n let selectIndex = currChips.chipsData.length;\n if (currChips._selectedChip) {\n const index = gGetIndex(currChips._selectedChip);\n currChips.deleteChip(index);\n currChips._selectedChip = null;\n // Make sure selectIndex doesn't go negative\n selectIndex = Math.max(index - 1, 0);\n }\n if (currChips.chipsData.length)\n currChips.selectChip(selectIndex);\n else\n currChips._input.focus();\n }\n // left arrow key\n else if (e.keyCode === 37) {\n if (currChips._selectedChip) {\n const selectIndex = gGetIndex(currChips._selectedChip) - 1;\n if (selectIndex < 0) return;\n currChips.selectChip(selectIndex);\n }\n }\n // right arrow key\n else if (e.keyCode === 39) {\n if (currChips._selectedChip) {\n const selectIndex = gGetIndex(currChips._selectedChip) + 1;\n if (selectIndex >= currChips.chipsData.length)\n currChips._input.focus();\n else\n currChips.selectChip(selectIndex);\n }\n }\n }\n\n static _handleChipsKeyup(e) {\n Chips._keydown = false;\n }\n\n static _handleChipsBlur(e) {\n if (!Chips._keydown && document.hidden) {\n const chips = (<HTMLElement>e.target).closest('.chips');\n const currChips: Chips = (chips as any).M_Chips;\n currChips._selectedChip = null;\n }\n }\n\n _handleInputFocus() {\n this.el.classList.add('focus');\n }\n\n _handleInputBlur() {\n this.el.classList.remove('focus');\n }\n\n _handleInputKeydown(e) {\n Chips._keydown = true;\n // enter\n if (e.keyCode === 13) {\n // Override enter if autocompleting.\n if (this.hasAutocomplete && this.autocomplete && this.autocomplete.isOpen) {\n return;\n }\n e.preventDefault();\n if (!this.hasAutocomplete || (this.hasAutocomplete && !this.options.autocompleteOnly)) {\n this.addChip({id: this._input.value});\n }\n this._input.value = '';\n // delete or left\n }\n else if (\n (e.keyCode === 8 || e.keyCode === 37) &&\n this._input.value === '' &&\n this.chipsData.length\n ) {\n e.preventDefault();\n this.selectChip(this.chipsData.length - 1);\n }\n }\n\n _renderChip(chip: DataBit): HTMLDivElement {\n if (!chip.id) return;\n const renderedChip = document.createElement('div');\n renderedChip.classList.add('chip');\n renderedChip.innerText = chip.text || chip.id;\n renderedChip.setAttribute('tabindex', \"0\");\n const closeIcon = document.createElement('i');\n closeIcon.classList.add('material-icons', 'close');\n closeIcon.innerText = 'close';\n // attach image if needed\n if (chip.image) {\n const img = document.createElement('img');\n img.setAttribute('src', chip.image);\n renderedChip.insertBefore(img, renderedChip.firstChild);\n }\n renderedChip.appendChild(closeIcon);\n return renderedChip;\n }\n\n _renderChips() {\n this._chips = []; //.remove();\n for (let i = 0; i < this.chipsData.length; i++) {\n const chipElem = this._renderChip(this.chipsData[i]);\n this.el.appendChild(chipElem);\n this._chips.push(chipElem);\n }\n // move input to end\n this.el.append(this._input);\n }\n\n _setupAutocomplete() {\n this.options.autocompleteOptions.onAutocomplete = (items) => {\n if (items.length > 0) this.addChip(items[0]);\n this._input.value = '';\n this._input.focus();\n };\n this.autocomplete = Autocomplete.init(this._input, this.options.autocompleteOptions);\n }\n\n _setupInput() {\n this._input = this.el.querySelector('input');\n if (!this._input) {\n this._input = document.createElement('input');\n this.el.append(this._input);\n }\n this._input.classList.add('input');\n }\n\n _setupLabel() {\n this._label = this.el.querySelector('label');\n if (this._label) this._label.setAttribute('for', this._input.getAttribute('id'));\n }\n\n _setPlaceholder() {\n if (this.chipsData !== undefined && !this.chipsData.length && this.options.placeholder) {\n this._input.placeholder = this.options.placeholder;\n }\n else if (\n (this.chipsData === undefined || !!this.chipsData.length) &&\n this.options.secondaryPlaceholder\n ) {\n this._input.placeholder = this.options.secondaryPlaceholder;\n }\n }\n\n _isValidAndNotExist(chip: DataBit) {\n const isValid = !!chip.id;\n const doesNotExist = !this.chipsData.some(item => item.id == chip.id);\n return isValid && doesNotExist;\n }\n\n addChip(chip: DataBit) {\n if (!this._isValidAndNotExist(chip) || this.chipsData.length >= this.options.limit) return;\n const renderedChip = this._renderChip(chip);\n this._chips.push(renderedChip);\n this.chipsData.push(chip);\n //$(this._input).before(renderedChip);\n this._input.before(renderedChip);\n this._setPlaceholder();\n // fire chipAdd callback\n if (typeof this.options.onChipAdd === 'function') {\n this.options.onChipAdd(this.el, renderedChip);\n }\n }\n\n deleteChip(chipIndex: number) {\n const chip = this._chips[chipIndex];\n this._chips[chipIndex].remove();\n this._chips.splice(chipIndex, 1);\n this.chipsData.splice(chipIndex, 1);\n this._setPlaceholder();\n // fire chipDelete callback\n if (typeof this.options.onChipDelete === 'function') {\n this.options.onChipDelete(this.el, chip);\n }\n }\n\n selectChip(chipIndex: number) {\n const chip = this._chips[chipIndex];\n this._selectedChip = chip;\n chip.focus();\n // fire chipSelect callback\n if (typeof this.options.onChipSelect === 'function') {\n this.options.onChipSelect(this.el, chip);\n }\n }\n\n static Init(){\n document.addEventListener(\"DOMContentLoaded\", () => {\n // Handle removal of static chips.\n document.body.addEventListener('click', e => {\n if ((<HTMLElement>e.target).closest('.chip .close')) {\n const chips = (<HTMLElement>e.target).closest('.chips');\n if (chips && (chips as any).M_Chips == undefined) return;\n (<HTMLElement>e.target).closest('.chip').remove();\n }\n });\n });\n }\n\n static {\n Chips._keydown = false;\n }\n}\n","import { Component } from \"./component\";\nimport anim from \"animejs\";\n\nconst _defaults = {\n accordion: true,\n onOpenStart: undefined,\n onOpenEnd: undefined,\n onCloseStart: undefined,\n onCloseEnd: undefined,\n inDuration: 300,\n outDuration: 300\n};\n\nexport class Collapsible extends Component {\n private _headers: HTMLElement[];\n private _handleCollapsibleClickBound: any;\n private _handleCollapsibleKeydownBound: any;\n\n constructor(el, options) {\n super(Collapsible, el, options);\n (this.el as any).M_Collapsible = this;\n this.options = {...Collapsible.defaults, ...options};\n // Setup tab indices\n this._headers = Array.from(this.el.querySelectorAll('li > .collapsible-header'));\n this._headers.forEach(el => el.tabIndex = 0);\n this._setupEventHandlers();\n // Open first active\n const activeBodies: HTMLElement[] = Array.from(this.el.querySelectorAll('li.active > .collapsible-body'));\n if (this.options.accordion)\n if (activeBodies.length > 0)\n activeBodies[0].style.display = 'block'; // Accordion\n else \n activeBodies.forEach(el => el.style.display = 'block'); // Expandables\n }\n\n static get defaults() {\n return _defaults;\n }\n\n static init(els, options) {\n return super.init(this, els, options);\n }\n\n static getInstance(el) {\n const domElem = !!el.jquery ? el[0] : el;\n return domElem.M_Collapsible;\n }\n\n destroy() {\n this._removeEventHandlers();\n (this.el as any).M_Collapsible = undefined;\n }\n\n _setupEventHandlers() {\n this._handleCollapsibleClickBound = this._handleCollapsibleClick.bind(this);\n this._handleCollapsibleKeydownBound = this._handleCollapsibleKeydown.bind(this);\n this.el.addEventListener('click', this._handleCollapsibleClickBound);\n this._headers.forEach(header => header.addEventListener('keydown', this._handleCollapsibleKeydownBound));\n }\n\n _removeEventHandlers() {\n this.el.removeEventListener('click', this._handleCollapsibleClickBound);\n this._headers.forEach(header => header.removeEventListener('keydown', this._handleCollapsibleKeydownBound));\n }\n\n _handleCollapsibleClick(e) {\n const header = e.target.closest('.collapsible-header');\n if (e.target && header) {\n const collapsible = header.closest('.collapsible');\n if (collapsible !== this.el) return;\n\n const li = header.closest('li');\n const isActive = li.classList.contains('active');\n const index = [...li.parentNode.children].indexOf(li);\n\n if (isActive)\n this.close(index);\n else\n this.open(index);\n }\n }\n\n _handleCollapsibleKeydown(e) {\n if (e.keyCode === 13) {\n this._handleCollapsibleClickBound(e);\n }\n }\n\n _animateIn(index: number) {\n const li = this.el.children[index];\n if (!li) return;\n const body: HTMLElement = li.querySelector('.collapsible-body');\n anim.remove(body);\n body.style.display = 'block';\n body.style.overflow = 'hidden';\n body.style.height = '0';\n body.style.paddingTop = '';\n body.style.paddingBottom = '';\n const pTop = getComputedStyle(body).paddingTop; // . css('padding-top');\n const pBottom = getComputedStyle(body).paddingBottom; //body.css('padding-bottom');\n const finalHeight = body.scrollHeight;\n body.style.paddingTop = '0';\n body.style.paddingBottom = '0';\n anim({\n targets: body,\n height: finalHeight,\n paddingTop: pTop,\n paddingBottom: pBottom,\n duration: this.options.inDuration,\n easing: 'easeInOutCubic',\n complete: (anim) => {\n body.style.overflow = '';\n body.style.height = '';\n body.style.paddingTop = '';\n body.style.paddingBottom = '';\n // onOpenEnd callback\n if (typeof this.options.onOpenEnd === 'function') {\n this.options.onOpenEnd.call(this, li);\n }\n }\n });\n }\n\n _animateOut(index: number) {\n const li = this.el.children[index];\n if (!li) return;\n const body: HTMLElement = li.querySelector('.collapsible-body');\n anim.remove(body);\n body.style.overflow = 'hidden';\n anim({\n targets: body,\n height: 0,\n paddingTop: 0,\n paddingBottom: 0,\n duration: this.options.outDuration,\n easing: 'easeInOutCubic',\n complete: () => {\n body.style.overflow = '';\n body.style.height = '';\n body.style.padding = '';\n body.style.display = '';\n // onCloseEnd callback\n if (typeof this.options.onCloseEnd === 'function') {\n this.options.onCloseEnd.call(this, li);\n }\n }\n });\n }\n\n open(index: number) {\n const listItems = Array.from(this.el.children).filter(c => c.tagName === 'LI');\n const li = listItems[index];\n if (li && !li.classList.contains('active')) {\n // onOpenStart callback\n if (typeof this.options.onOpenStart === 'function') {\n this.options.onOpenStart.call(this, li);\n }\n // Handle accordion behavior\n if (this.options.accordion) {\n const activeLis = listItems.filter(li => li.classList.contains('active'));\n activeLis.forEach(activeLi => {\n const index = listItems.indexOf(activeLi);\n this.close(index);\n });\n }\n // Animate in\n li.classList.add('active');\n this._animateIn(index);\n }\n }\n\n close(index: number) {\n const li = Array.from(this.el.children).filter(c => c.tagName === 'LI')[index];\n if (li && li.classList.contains('active')) {\n // onCloseStart callback\n if (typeof this.options.onCloseStart === 'function') {\n this.options.onCloseStart.call(this, li);\n }\n // Animate out\n li.classList.remove('active');\n this._animateOut(index);\n }\n }\n}\n","\nexport class Component {\n\n constructor(classDef, protected el: Element, protected options) {\n // Display error if el is valid HTML Element\n if (!(el instanceof Element)) {\n console.error(Error(el + ' is not an HTML Element'));\n }\n // If exists, destroy and reinitialize in child\n let ins = classDef.getInstance(el);\n if (!!ins) {\n ins.destroy();\n }\n this.el = el;\n }\n\n static init(classDef, els, options) {\n let instances = null;\n if (els instanceof Element) {\n instances = new classDef(els, options);\n }\n else if (!!els && (els.jquery || els.cash || els instanceof NodeList || els instanceof HTMLCollection)) {\n let instancesArr = [];\n for (let i = 0; i < els.length; i++) {\n instancesArr.push(new classDef(els[i], options));\n }\n instances = instancesArr;\n }\n return instances;\n }\n}\n","import { Component } from \"./component\";\nimport { M } from \"./global\";\nimport { Modal } from \"./modal\";\nimport { FormSelect } from \"./select\";\n\nlet _defaults = {\n // Close when date is selected\n autoClose: false,\n // the default output format for the input field value\n format: 'mmm dd, yyyy',\n // Used to create date object from current input string\n parse: null,\n // The initial date to view when first opened\n defaultDate: null,\n // Make the `defaultDate` the initial selected value\n setDefaultDate: false,\n disableWeekends: false,\n disableDayFn: null,\n // First day of week (0: Sunday, 1: Monday etc)\n firstDay: 0,\n // The earliest date that can be selected\n minDate: null,\n // Thelatest date that can be selected\n maxDate: null,\n // Number of years either side, or array of upper/lower range\n yearRange: 10,\n // used internally (don't config outside)\n minYear: 0,\n maxYear: 9999,\n minMonth: undefined,\n maxMonth: undefined,\n startRange: null,\n endRange: null,\n isRTL: false,\n // Render the month after year in the calendar title\n showMonthAfterYear: false,\n // Render days of the calendar grid that fall in the next or previous month\n showDaysInNextAndPreviousMonths: false,\n // Specify a DOM element to render the calendar in\n container: null,\n // Show clear button\n showClearBtn: false,\n // internationalization\n i18n: {\n cancel: 'Cancel',\n clear: 'Clear',\n done: 'Ok',\n previousMonth: '‹',\n nextMonth: '›',\n months: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December'\n ],\n monthsShort: [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec'\n ],\n weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n weekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n weekdaysAbbrev: ['S', 'M', 'T', 'W', 'T', 'F', 'S']\n },\n // events array\n events: [],\n // callback function\n onSelect: null,\n onOpen: null,\n onClose: null,\n onDraw: null\n};\n\n export class Datepicker extends Component {\n el: HTMLInputElement\n id: string;\n isOpen: boolean;\n modal: Modal;\n calendarEl: HTMLElement;\n clearBtn: HTMLElement;\n doneBtn: HTMLElement;\n cancelBtn: HTMLElement;\n modalEl: HTMLElement;\n yearTextEl: HTMLElement;\n dateTextEl: HTMLElement;\n date: any;\n formats: any;\n calendars: any;\n private _y: any;\n private _m: any;\n private _handleInputKeydownBound: any;\n private _handleInputClickBound: any;\n private _handleInputChangeBound: any;\n private _handleCalendarClickBound: any;\n private _finishSelectionBound: any;\n private _closeBound: any;\n private _handleClearClickBound: any;\n static _template: string;\n\n constructor(el, options) {\n super(Datepicker, el, options);\n (this.el as any).M_Datepicker = this;\n this.options = {...Datepicker.defaults, ...options};\n\n // make sure i18n defaults are not lost when only few i18n option properties are passed\n if (!!options && options.hasOwnProperty('i18n') && typeof options.i18n === 'object') {\n this.options.i18n = {...Datepicker.defaults.i18n, ...options.i18n};\n }\n\n // Remove time component from minDate and maxDate options\n if (this.options.minDate) this.options.minDate.setHours(0, 0, 0, 0);\n if (this.options.maxDate) this.options.maxDate.setHours(0, 0, 0, 0);\n\n this.id = M.guid();\n\n this._setupVariables();\n this._insertHTMLIntoDOM();\n this._setupModal();\n this._setupEventHandlers();\n\n if (!this.options.defaultDate) {\n this.options.defaultDate = new Date(Date.parse(this.el.value));\n }\n\n let defDate = this.options.defaultDate;\n if (Datepicker._isDate(defDate)) {\n if (this.options.setDefaultDate) {\n this.setDate(defDate, true);\n this.setInputValue();\n }\n else {\n this.gotoDate(defDate);\n }\n }\n else {\n this.gotoDate(new Date());\n }\n this.isOpen = false;\n }\n\n static get defaults() {\n return _defaults;\n }\n\n static init(els, options) {\n return super.init(this, els, options);\n }\n\n static _isDate(obj) {\n return /Date/.test(Object.prototype.toString.call(obj)) && !isNaN(obj.getTime());\n }\n\n static _isWeekend(date) {\n let day = date.getDay();\n return day === 0 || day === 6;\n }\n\n static _setToStartOfDay(date) {\n if (Datepicker._isDate(date)) date.setHours(0, 0, 0, 0);\n }\n\n static _getDaysInMonth(year, month) {\n return [31, Datepicker._isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][\n month\n ];\n }\n\n static _isLeapYear(year) {\n // solution by Matti Virkkunen: http://stackoverflow.com/a/4881951\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n static _compareDates(a, b) {\n // weak date comparison (use setToStartOfDay(date) to ensure correct result)\n return a.getTime() === b.getTime();\n } \n\n static getInstance(el) {\n let domElem = !!el.jquery ? el[0] : el;\n return domElem.M_Datepicker;\n }\n\n destroy() {\n this._removeEventHandlers();\n this.modal.destroy();\n this.modalEl.remove();\n this.destroySelects();\n (this.el as any).M_Datepicker = undefined;\n }\n\n destroySelects() {\n let oldYearSelect = this.calendarEl.querySelector('.orig-select-year');\n if (oldYearSelect) {\n FormSelect.getInstance(oldYearSelect).destroy();\n }\n let oldMonthSelect = this.calendarEl.querySelector('.orig-select-month');\n if (oldMonthSelect) {\n FormSelect.getInstance(oldMonthSelect).destroy();\n }\n }\n\n _insertHTMLIntoDOM() {\n if (this.options.showClearBtn) {\n this.clearBtn.style.visibility = '';\n this.clearBtn.innerText = this.options.i18n.clear;\n }\n this.doneBtn.innerText = this.options.i18n.done;\n this.cancelBtn.innerText = this.options.i18n.cancel;\n\n if (this.options.container) {\n const optEl = this.options.container;\n this.options.container =\n optEl instanceof HTMLElement ? optEl : document.querySelector(optEl);\n this.options.container.append(this.modalEl);\n }\n else {\n //this.modalEl.before(this.el);\n this.el.parentElement.appendChild(this.modalEl);\n }\n }\n\n _setupModal() {\n this.modalEl.id = 'modal-' + this.id;\n this.modal = Modal.init(this.modalEl, {\n onCloseEnd: () => {\n this.isOpen = false;\n }\n });\n }\n\n toString(format: string | ((d: Date) => string) = null): string {\n format = format || this.options.format;\n if (typeof format === 'function') return format(this.date);\n if (!Datepicker._isDate(this.date)) return '';\n // String Format\n const formatArray = format.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g);\n const formattedDate = formatArray\n .map(label => this.formats[label] ? this.formats[label]() : label)\n .join('');\n return formattedDate;\n }\n\n setDate(date, preventOnSelect: boolean = false) {\n if (!date) {\n this.date = null;\n this._renderDateDisplay();\n return this.draw();\n }\n if (typeof date === 'string') {\n date = new Date(Date.parse(date));\n }\n if (!Datepicker._isDate(date)) {\n return;\n }\n let min = this.options.minDate,\n max = this.options.maxDate;\n if (Datepicker._isDate(min) && date < min) {\n date = min;\n }\n else if (Datepicker._isDate(max) && date > max) {\n date = max;\n }\n this.date = new Date(date.getTime());\n this._renderDateDisplay();\n Datepicker._setToStartOfDay(this.date);\n this.gotoDate(this.date);\n if (!preventOnSelect && typeof this.options.onSelect === 'function') {\n this.options.onSelect.call(this, this.date);\n }\n }\n\n setInputValue() {\n this.el.value = this.toString();\n this.el.dispatchEvent(new CustomEvent('change', {detail: {firedBy: this}}));\n }\n\n _renderDateDisplay() {\n let displayDate = Datepicker._isDate(this.date) ? this.date : new Date();\n let i18n = this.options.i18n;\n let day = i18n.weekdaysShort[displayDate.getDay()];\n let month = i18n.monthsShort[displayDate.getMonth()];\n let date = displayDate.getDate();\n this.yearTextEl.innerHTML = displayDate.getFullYear();\n this.dateTextEl.innerHTML = `${day}, ${month} ${date}`;\n }\n\n gotoDate(date) {\n let newCalendar = true;\n if (!Datepicker._isDate(date)) {\n return;\n }\n if (this.calendars) {\n let firstVisibleDate = new Date(this.calendars[0].year, this.calendars[0].month, 1),\n lastVisibleDate = new Date(\n this.calendars[this.calendars.length - 1].year,\n this.calendars[this.calendars.length - 1].month,\n 1\n ),\n visibleDate = date.getTime();\n // get the end of the month\n lastVisibleDate.setMonth(lastVisibleDate.getMonth() + 1);\n lastVisibleDate.setDate(lastVisibleDate.getDate() - 1);\n newCalendar =\n visibleDate < firstVisibleDate.getTime() || lastVisibleDate.getTime() < visibleDate;\n }\n if (newCalendar) {\n this.calendars = [\n {\n month: date.getMonth(),\n year: date.getFullYear()\n }\n ];\n }\n this.adjustCalendars();\n }\n\n adjustCalendars() {\n this.calendars[0] = this.adjustCalendar(this.calendars[0]);\n this.draw();\n }\n\n adjustCalendar(calendar) {\n if (calendar.month < 0) {\n calendar.year -= Math.ceil(Math.abs(calendar.month) / 12);\n calendar.month += 12;\n }\n if (calendar.month > 11) {\n calendar.year += Math.floor(Math.abs(calendar.month) / 12);\n calendar.month -= 12;\n }\n return calendar;\n }\n\n nextMonth() {\n this.calendars[0].month++;\n this.adjustCalendars();\n }\n\n prevMonth() {\n this.calendars[0].month--;\n this.adjustCalendars();\n }\n\n render(year, month, randId) {\n let opts = this.options,\n now = new Date(),\n days = Datepicker._getDaysInMonth(year, month),\n before = new Date(year, month, 1).getDay(),\n data = [],\n row = [];\n Datepicker._setToStartOfDay(now);\n if (opts.firstDay > 0) {\n before -= opts.firstDay;\n if (before < 0) {\n before += 7;\n }\n }\n let previousMonth = month === 0 ? 11 : month - 1,\n nextMonth = month === 11 ? 0 : month + 1,\n yearOfPreviousMonth = month === 0 ? year - 1 : year,\n yearOfNextMonth = month === 11 ? year + 1 : year,\n daysInPreviousMonth = Datepicker._getDaysInMonth(yearOfPreviousMonth, previousMonth);\n let cells = days + before,\n after = cells;\n while (after > 7) {\n after -= 7;\n }\n cells += 7 - after;\n let isWeekSelected = false;\n for (let i = 0, r = 0; i < cells; i++) {\n let day = new Date(year, month, 1 + (i - before)),\n isSelected = Datepicker._isDate(this.date)\n ? Datepicker._compareDates(day, this.date)\n : false,\n isToday = Datepicker._compareDates(day, now),\n hasEvent = opts.events.indexOf(day.toDateString()) !== -1 ? true : false,\n isEmpty = i < before || i >= days + before,\n dayNumber = 1 + (i - before),\n monthNumber = month,\n yearNumber = year,\n isStartRange = opts.startRange && Datepicker._compareDates(opts.startRange, day),\n isEndRange = opts.endRange && Datepicker._compareDates(opts.endRange, day),\n isInRange =\n opts.startRange && opts.endRange && opts.startRange < day && day < opts.endRange,\n isDisabled =\n (opts.minDate && day < opts.minDate) ||\n (opts.maxDate && day > opts.maxDate) ||\n (opts.disableWeekends && Datepicker._isWeekend(day)) ||\n (opts.disableDayFn && opts.disableDayFn(day));\n\n if (isEmpty) {\n if (i < before) {\n dayNumber = daysInPreviousMonth + dayNumber;\n monthNumber = previousMonth;\n yearNumber = yearOfPreviousMonth;\n } else {\n dayNumber = dayNumber - days;\n monthNumber = nextMonth;\n yearNumber = yearOfNextMonth;\n }\n }\n\n let dayConfig = {\n day: dayNumber,\n month: monthNumber,\n year: yearNumber,\n hasEvent: hasEvent,\n isSelected: isSelected,\n isToday: isToday,\n isDisabled: isDisabled,\n isEmpty: isEmpty,\n isStartRange: isStartRange,\n isEndRange: isEndRange,\n isInRange: isInRange,\n showDaysInNextAndPreviousMonths: opts.showDaysInNextAndPreviousMonths\n };\n\n row.push(this.renderDay(dayConfig));\n\n if (++r === 7) {\n data.push(this.renderRow(row, opts.isRTL, isWeekSelected));\n row = [];\n r = 0;\n isWeekSelected = false;\n }\n }\n return this.renderTable(opts, data, randId);\n }\n\n renderDay(opts) {\n let arr = [];\n let ariaSelected = 'false';\n if (opts.isEmpty) {\n if (opts.showDaysInNextAndPreviousMonths) {\n arr.push('is-outside-current-month');\n arr.push('is-selection-disabled');\n } else {\n return '<td class=\"is-empty\"></td>';\n }\n }\n if (opts.isDisabled) {\n arr.push('is-disabled');\n }\n\n if (opts.isToday) {\n arr.push('is-today');\n }\n if (opts.isSelected) {\n arr.push('is-selected');\n ariaSelected = 'true';\n }\n if (opts.hasEvent) {\n arr.push('has-event');\n }\n if (opts.isInRange) {\n arr.push('is-inrange');\n }\n if (opts.isStartRange) {\n arr.push('is-startrange');\n }\n if (opts.isEndRange) {\n arr.push('is-endrange');\n }\n return (\n `<td data-day=\"${opts.day}\" class=\"${arr.join(' ')}\" aria-selected=\"${ariaSelected}\">` +\n `<button class=\"datepicker-day-button\" type=\"button\" data-year=\"${opts.year}\" data-month=\"${opts.month}\" data-day=\"${opts.day}\">${opts.day}</button>` +\n '</td>'\n );\n }\n\n renderRow(days, isRTL, isRowSelected) {\n return (\n '<tr class=\"datepicker-row' +\n (isRowSelected ? ' is-selected' : '') +\n '\">' +\n (isRTL ? days.reverse() : days).join('') +\n '</tr>'\n );\n }\n\n renderTable(opts, data, randId) {\n return (\n '<div class=\"datepicker-table-wrapper\"><table cellpadding=\"0\" cellspacing=\"0\" class=\"datepicker-table\" role=\"grid\" aria-labelledby=\"' +\n randId +\n '\">' +\n this.renderHead(opts) +\n this.renderBody(data) +\n '</table></div>'\n );\n }\n\n renderHead(opts) {\n let i,\n arr = [];\n for (i = 0; i < 7; i++) {\n arr.push(\n `<th scope=\"col\"><abbr title=\"${this.renderDayName(opts, i)}\">${this.renderDayName(\n opts,\n i,\n true\n )}</abbr></th>`\n );\n }\n return '<thead><tr>' + (opts.isRTL ? arr.reverse() : arr).join('') + '</tr></thead>';\n }\n\n renderBody(rows) {\n return '<tbody>' + rows.join('') + '</tbody>';\n }\n\n renderTitle(instance, c, year, month, refYear, randId) {\n let i,\n j,\n arr,\n opts = this.options,\n isMinYear = year === opts.minYear,\n isMaxYear = year === opts.maxYear,\n html =\n '<div id=\"' +\n randId +\n '\" class=\"datepicker-controls\" role=\"heading\" aria-live=\"assertive\">',\n monthHtml,\n yearHtml,\n prev = true,\n next = true;\n\n for (arr = [], i = 0; i < 12; i++) {\n arr.push(\n '<option value=\"' +\n (year === refYear ? i - c : 12 + i - c) +\n '\"' +\n (i === month ? ' selected=\"selected\"' : '') +\n ((isMinYear && i < opts.minMonth) || (isMaxYear && i > opts.maxMonth)\n ? 'disabled=\"disabled\"'\n : '') +\n '>' +\n opts.i18n.months[i] +\n '</option>'\n );\n }\n\n monthHtml = '<select class=\"datepicker-select orig-select-month\" tabindex=\"-1\">'+arr.join('')+'</select>';\n\n if (Array.isArray(opts.yearRange)) {\n i = opts.yearRange[0];\n j = opts.yearRange[1] + 1;\n }\n else {\n i = year - opts.yearRange;\n j = 1 + year + opts.yearRange;\n }\n\n for (arr = []; i < j && i <= opts.maxYear; i++) {\n if (i >= opts.minYear) {\n arr.push(`<option value=\"${i}\" ${i === year ? 'selected=\"selected\"' : ''}>${i}</option>`);\n }\n }\n if (opts.yearRangeReverse) arr.reverse();\n\n yearHtml = `<select class=\"datepicker-select orig-select-year\" tabindex=\"-1\">${arr.join('')}</select>`;\n\n let leftArrow =\n '<svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z\"/><path d=\"M0-.5h24v24H0z\" fill=\"none\"/></svg>';\n html += `<button class=\"month-prev${\n prev ? '' : ' is-disabled'\n } btn-flat\" type=\"button\">${leftArrow}</button>`;\n\n html += '<div class=\"selects-container\">';\n if (opts.showMonthAfterYear) {\n html += yearHtml + monthHtml;\n } else {\n html += monthHtml + yearHtml;\n }\n html += '</div>';\n\n if (isMinYear && (month === 0 || opts.minMonth >= month)) {\n prev = false;\n }\n\n if (isMaxYear && (month === 11 || opts.maxMonth <= month)) {\n next = false;\n }\n\n let rightArrow =\n '<svg height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z\"/><path d=\"M0-.25h24v24H0z\" fill=\"none\"/></svg>';\n html += `<button class=\"month-next${\n next ? '' : ' is-disabled'\n } btn-flat\" type=\"button\">${rightArrow}</button>`;\n\n return (html += '</div>');\n }\n\n // refresh HTML\n draw(force: boolean = false) {\n if (!this.isOpen && !force) return;\n let opts = this.options,\n minYear = opts.minYear,\n maxYear = opts.maxYear,\n minMonth = opts.minMonth,\n maxMonth = opts.maxMonth,\n html = '',\n randId;\n\n if (this._y <= minYear) {\n this._y = minYear;\n if (!isNaN(minMonth) && this._m < minMonth) {\n this._m = minMonth;\n }\n }\n if (this._y >= maxYear) {\n this._y = maxYear;\n if (!isNaN(maxMonth) && this._m > maxMonth) {\n this._m = maxMonth;\n }\n }\n\n randId =\n 'datepicker-title-' +\n Math.random()\n .toString(36)\n .replace(/[^a-z]+/g, '')\n .substr(0, 2);\n\n for (let c = 0; c < 1; c++) {\n this._renderDateDisplay();\n html +=\n this.renderTitle(\n this,\n c,\n this.calendars[c].year,\n this.calendars[c].month,\n this.calendars[0].year,\n randId\n ) + this.render(this.calendars[c].year, this.calendars[c].month, randId);\n }\n\n this.destroySelects();\n\n this.calendarEl.innerHTML = html;\n\n // Init Materialize Select\n let yearSelect = this.calendarEl.querySelector('.orig-select-year');\n let monthSelect = this.calendarEl.querySelector('.orig-select-month');\n FormSelect.init(yearSelect, {\n classes: 'select-year',\n dropdownOptions: { container: document.body, constrainWidth: false }\n });\n FormSelect.init(monthSelect, {\n classes: 'select-month',\n dropdownOptions: { container: document.body, constrainWidth: false }\n });\n\n // Add change handlers for select\n yearSelect.addEventListener('change', this._handleYearChange.bind(this));\n monthSelect.addEventListener('change', this._handleMonthChange.bind(this));\n\n if (typeof this.options.onDraw === 'function') {\n this.options.onDraw(this);\n }\n }\n\n _setupEventHandlers() {\n this._handleInputKeydownBound = this._handleInputKeydown.bind(this);\n this._handleInputClickBound = this._handleInputClick.bind(this);\n this._handleInputChangeBound = this._handleInputChange.bind(this);\n this._handleCalendarClickBound = this._handleCalendarClick.bind(this);\n this._finishSelectionBound = this._finishSelection.bind(this);\n this._handleMonthChange = this._handleMonthChange.bind(this);\n this._closeBound = this.close.bind(this);\n\n this.el.addEventListener('click', this._handleInputClickBound);\n this.el.addEventListener('keydown', this._handleInputKeydownBound);\n this.el.addEventListener('change', this._handleInputChangeBound);\n this.calendarEl.addEventListener('click', this._handleCalendarClickBound);\n this.doneBtn.addEventListener('click', this._finishSelectionBound);\n this.cancelBtn.addEventListener('click', this._closeBound);\n\n if (this.options.showClearBtn) {\n this._handleClearClickBound = this._handleClearClick.bind(this);\n this.clearBtn.addEventListener('click', this._handleClearClickBound);\n }\n }\n\n _setupVariables() {\n const template = document.createElement('template');\n template.innerHTML = Datepicker._template.trim();\n this.modalEl = <HTMLElement>template.content.firstChild;\n\n this.calendarEl = this.modalEl.querySelector('.datepicker-calendar');\n this.yearTextEl = this.modalEl.querySelector('.year-text');\n this.dateTextEl = this.modalEl.querySelector('.date-text');\n if (this.options.showClearBtn) {\n this.clearBtn = this.modalEl.querySelector('.datepicker-clear');\n }\n this.doneBtn = this.modalEl.querySelector('.datepicker-done');\n this.cancelBtn = this.modalEl.querySelector('.datepicker-cancel');\n\n this.formats = {\n d: () => {\n return this.date.getDate();\n },\n dd: () => {\n let d = this.date.getDate();\n return (d < 10 ? '0' : '') + d;\n },\n ddd: () => {\n return this.options.i18n.weekdaysShort[this.date.getDay()];\n },\n dddd: () => {\n return this.options.i18n.weekdays[this.date.getDay()];\n },\n m: () => {\n return this.date.getMonth() + 1;\n },\n mm: () => {\n let m = this.date.getMonth() + 1;\n return (m < 10 ? '0' : '') + m;\n },\n mmm: () => {\n return this.options.i18n.monthsShort[this.date.getMonth()];\n },\n mmmm: () => {\n return this.options.i18n.months[this.date.getMonth()];\n },\n yy: () => {\n return ('' + this.date.getFullYear()).slice(2);\n },\n yyyy: () => {\n return this.date.getFullYear();\n }\n };\n }\n\n _removeEventHandlers() {\n this.el.removeEventListener('click', this._handleInputClickBound);\n this.el.removeEventListener('keydown', this._handleInputKeydownBound);\n this.el.removeEventListener('change', this._handleInputChangeBound);\n this.calendarEl.removeEventListener('click', this._handleCalendarClickBound);\n }\n\n _handleInputClick() {\n this.open();\n }\n\n _handleInputKeydown(e) {\n if (e.which === M.keys.ENTER) {\n e.preventDefault();\n this.open();\n }\n }\n\n _handleCalendarClick(e) {\n if (!this.isOpen) return;\n const target = <HTMLElement>(e.target);\n if (!target.classList.contains('is-disabled')) {\n if (\n target.classList.contains('datepicker-day-button') &&\n !target.classList.contains('is-empty') &&\n !target.parentElement.classList.contains('is-disabled')\n ) { \n this.setDate(\n new Date(\n e.target.getAttribute('data-year'),\n e.target.getAttribute('data-month'),\n e.target.getAttribute('data-day')\n )\n );\n if (this.options.autoClose) {\n this._finishSelection();\n }\n }\n else if (target.closest('.month-prev')) {\n this.prevMonth();\n }\n else if (target.closest('.month-next')) {\n this.nextMonth();\n }\n }\n }\n\n _handleClearClick() {\n this.date = null;\n this.setInputValue();\n this.close();\n }\n\n _handleMonthChange(e) {\n this.gotoMonth(e.target.value);\n }\n\n _handleYearChange(e) {\n this.gotoYear(e.target.value);\n }\n\n // change view to a specific month (zero-index, e.g. 0: January)\n gotoMonth(month) {\n if (!isNaN(month)) {\n this.calendars[0].month = parseInt(month, 10);\n this.adjustCalendars();\n }\n }\n\n // change view to a specific full year (e.g. \"2012\")\n gotoYear(year) {\n if (!isNaN(year)) {\n this.calendars[0].year = parseInt(year, 10);\n this.adjustCalendars();\n }\n }\n\n _handleInputChange(e: Event) {\n let date;\n // Prevent change event from being fired when triggered by the plugin\n if (e['detail']?.firedBy === this) return;\n if (this.options.parse) {\n date = this.options.parse(this.el.value, this.options.format);\n }\n else {\n date = new Date(Date.parse(this.el.value));\n }\n if (Datepicker._isDate(date)) this.setDate(date);\n }\n\n renderDayName(opts, day, abbr: boolean = false) {\n day += opts.firstDay;\n while (day >= 7) {\n day -= 7;\n }\n return abbr ? opts.i18n.weekdaysAbbrev[day] : opts.i18n.weekdays[day];\n }\n\n // Set input value to the selected date and close Datepicker\n _finishSelection() {\n this.setInputValue();\n this.close();\n }\n\n open() {\n if (this.isOpen) return;\n this.isOpen = true;\n if (typeof this.options.onOpen === 'function') {\n this.options.onOpen.call(this);\n }\n this.draw();\n this.modal.open(undefined);\n return this;\n }\n\n close() {\n if (!this.isOpen) return;\n this.isOpen = false;\n if (typeof this.options.onClose === 'function') {\n this.options.onClose.call(this);\n }\n this.modal.close();\n return this;\n }\n\n static {\n Datepicker._template = `\n <div class=\"modal datepicker-modal\">\n <div class=\"modal-content datepicker-container\">\n <div class=\"datepicker-date-display\">\n <span class=\"year-text\"></span>\n <span class=\"date-text\"></span>\n </div>\n <div class=\"datepicker-calendar-container\">\n <div class=\"datepicker-calendar\"></div>\n <div class=\"datepicker-footer\">\n <button class=\"btn-flat datepicker-clear waves-effect\" style=\"visibility: hidden;\" type=\"button\"></button>\n <div class=\"confirmation-btns\">\n <button class=\"btn-flat datepicker-cancel waves-effect\" type=\"button\"></button>\n <button class=\"btn-flat datepicker-done waves-effect\" type=\"button\"></button>\n </div>\n </div>\n </div>\n </div>\n </div>`;\n }\n } \n","import { Component } from \"./component\";\nimport { M } from \"./global\";\nimport anim from \"animejs\";\n\n const _defaults = {\n alignment: 'left',\n autoFocus: true,\n constrainWidth: true,\n container: null,\n coverTrigger: true,\n closeOnClick: true,\n hover: false,\n inDuration: 150,\n outDuration: 250,\n onOpenStart: null,\n onOpenEnd: null,\n onCloseStart: null,\n onCloseEnd: null,\n onItemClick: null\n };\n\n export class Dropdown extends Component {\n el: HTMLElement;\n static _dropdowns: Dropdown[] = [];\n id: string;\n dropdownEl: HTMLElement;\n isOpen: boolean;\n isScrollable: boolean;\n isTouchMoving: boolean;\n focusedIndex: number;\n filterQuery: any[];\n private _resetFilterQueryBound: any;\n private _handleDocumentClickBound: any;\n private _handleDocumentTouchmoveBound: any;\n private _handleDropdownClickBound: any;\n private _handleDropdownKeydownBound: any;\n private _handleTriggerKeydownBound: any;\n private _handleMouseEnterBound: any;\n private _handleMouseLeaveBound: any;\n _handleClickBound: any;\n filterTimeout: NodeJS.Timeout;\n\n constructor(el, options) {\n super(Dropdown, el, options);\n (this.el as any).M_Dropdown = this;\n Dropdown._dropdowns.push(this);\n this.id = M.getIdFromTrigger(el);\n this.dropdownEl = document.getElementById(this.id);\n //this.$dropdownEl = $(this.dropdownEl);\n this.options = {...Dropdown.defaults, ...options};\n\n this.isOpen = false;\n this.isScrollable = false;\n this.isTouchMoving = false;\n this.focusedIndex = -1;\n this.filterQuery = [];\n\n // Move dropdown-content after dropdown-trigger\n this._moveDropdown();\n this._makeDropdownFocusable();\n this._resetFilterQueryBound = this._resetFilterQuery.bind(this);\n this._handleDocumentClickBound = this._handleDocumentClick.bind(this);\n this._handleDocumentTouchmoveBound = this._handleDocumentTouchmove.bind(this);\n this._handleDropdownClickBound = this._handleDropdownClick.bind(this);\n this._handleDropdownKeydownBound = this._handleDropdownKeydown.bind(this);\n this._handleTriggerKeydownBound = this._handleTriggerKeydown.bind(this);\n this._setupEventHandlers();\n }\n\n static get defaults() {\n return _defaults;\n }\n\n static init(els, options) {\n return super.init(this, els, options);\n }\n\n static getInstance(el) {\n const domElem = !!el.jquery ? el[0] : el;\n return domElem.M_Dropdown;\n }\n\n destroy() {\n this._resetDropdownStyles();\n this._removeEventHandlers();\n Dropdown._dropdowns.splice(Dropdown._dropdowns.indexOf(this), 1);\n (this.el as any).M_Dropdown = undefined;\n }\n\n _setupEventHandlers() {\n // Trigger keydown handler\n this.el.addEventListener('keydown', this._handleTriggerKeydownBound);\n // Item click handler\n this.dropdownEl?.addEventListener('click', this._handleDropdownClickBound);\n // Hover event handlers\n if (this.options.hover) {\n this._handleMouseEnterBound = this._handleMouseEnter.bind(this);\n this.el.addEventListener('mouseenter', this._handleMouseEnterBound);\n this._handleMouseLeaveBound = this._handleMouseLeave.bind(this);\n this.el.addEventListener('mouseleave', this._handleMouseLeaveBound);\n this.dropdownEl.addEventListener('mouseleave', this._handleMouseLeaveBound);\n // Click event handlers\n } else {\n this._handleClickBound = this._handleClick.bind(this);\n this.el.addEventListener('click', this._handleClickBound);\n }\n }\n\n _removeEventHandlers() {\n this.el.removeEventListener('keydown', this._handleTriggerKeydownBound);\n this.dropdownEl.removeEventListener('click', this._handleDropdownClickBound);\n if (this.options.hover) {\n this.el.removeEventListener('mouseenter', this._handleMouseEnterBound);\n this.el.removeEventListener('mouseleave', this._handleMouseLeaveBound);\n this.dropdownEl.removeEventListener('mouseleave', this._handleMouseLeaveBound);\n } else {\n this.el.removeEventListener('click', this._handleClickBound);\n }\n }\n\n _setupTemporaryEventHandlers() {\n // Use capture phase event handler to prevent click\n document.body.addEventListener('click', this._handleDocumentClickBound, true);\n document.body.addEventListener('touchmove', this._handleDocumentTouchmoveBound);\n this.dropdownEl.addEventListener('keydown', this._handleDropdownKeydownBound);\n }\n\n _removeTemporaryEventHandlers() {\n // Use capture phase event handler to prevent click\n document.body.removeEventListener('click', this._handleDocumentClickBound, true);\n document.body.removeEventListener('touchmove', this._handleDocumentTouchmoveBound);\n this.dropdownEl.removeEventListener('keydown', this._handleDropdownKeydownBound);\n }\n\n _handleClick(e) {\n e.preventDefault();\n this.open();\n }\n\n _handleMouseEnter() {\n this.open();\n }\n\n _handleMouseLeave(e) {\n const toEl = e.toElement || e.relatedTarget;\n const leaveToDropdownContent = !!toEl.closest('.dropdown-content');\n let leaveToActiveDropdownTrigger = false;\n const closestTrigger = toEl.closest('.dropdown-trigger');\n if (\n closestTrigger &&\n !!(<any>closestTrigger).M_Dropdown &&\n (<any>closestTrigger).M_Dropdown.isOpen\n ) {\n leaveToActiveDropdownTrigger = true;\n }\n // Close hover dropdown if mouse did not leave to either active dropdown-trigger or dropdown-content\n if (!leaveToActiveDropdownTrigger && !leaveToDropdownContent) {\n this.close();\n }\n }\n\n _handleDocumentClick(e) {\n const target = <HTMLElement>e.target;\n if (\n this.options.closeOnClick &&\n target.closest('.dropdown-content') &&\n !this.isTouchMoving\n ) {\n // isTouchMoving to check if scrolling on mobile.\n //setTimeout(() => {\n this.close();\n //}, 0);\n }\n else if (\n target.closest('.dropdown-trigger') ||\n !target.closest('.dropdown-content')\n ) {\n //setTimeout(() => {\n this.close();\n //}, 0);\n }\n this.isTouchMoving = false;\n }\n\n _handleTriggerKeydown(e) {\n // ARROW DOWN OR ENTER WHEN SELECT IS CLOSED - open Dropdown\n if ((e.which === M.keys.ARROW_DOWN || e.which === M.keys.ENTER) && !this.isOpen) {\n e.preventDefault();\n this.open();\n }\n }\n\n _handleDocumentTouchmove(e) {\n const target = <HTMLElement>e.target;\n if (target.closest('.dropdown-content')) {\n this.isTouchMoving = true;\n }\n }\n\n _handleDropdownClick(e) {\n // onItemClick callback\n if (typeof this.options.onItemClick === 'function') {\n const itemEl = <HTMLElement>e.target.closest('li');\n this.options.onItemClick.call(this, itemEl);\n }\n }\n\n _handleDropdownKeydown(e) {\n if (e.which === M.keys.TAB) {\n e.preventDefault();\n this.close();\n }\n // Navigate down dropdown list\n else if ((e.which === M.keys.ARROW_DOWN || e.which === M.keys.ARROW_UP) && this.isOpen) {\n e.preventDefault();\n const direction = e.which === M.keys.ARROW_DOWN ? 1 : -1;\n let newFocusedIndex = this.focusedIndex;\n let hasFoundNewIndex = false;\n do {\n newFocusedIndex = newFocusedIndex + direction;\n if (\n !!this.dropdownEl.children[newFocusedIndex] &&\n (<any>this.dropdownEl.children[newFocusedIndex]).tabIndex !== -1\n ) {\n hasFoundNewIndex = true;\n break;\n }\n } while (newFocusedIndex < this.dropdownEl.children.length && newFocusedIndex >= 0);\n\n if (hasFoundNewIndex) {\n // Remove active class from old element\n if (this.focusedIndex >= 0)\n this.dropdownEl.children[this.focusedIndex].classList.remove('active');\n this.focusedIndex = newFocusedIndex;\n this._focusFocusedItem();\n }\n }\n // ENTER selects choice on focused item\n else if (e.which === M.keys.ENTER && this.isOpen) {\n // Search for <a> and <button>\n const focusedElement = this.dropdownEl.children[this.focusedIndex];\n const activatableElement = <HTMLElement>focusedElement.querySelector('a, button');\n // Click a or button tag if exists, otherwise click li tag\n if (!!activatableElement) {\n activatableElement.click();\n }\n else if (!!focusedElement) {\n if (focusedElement instanceof HTMLElement) {\n focusedElement.click();\n } \n }\n }\n // Close dropdown on ESC\n else if (e.which === M.keys.ESC && this.isOpen) {\n e.preventDefault();\n this.close();\n }\n\n // CASE WHEN USER TYPE LETTERS\n const letter = String.fromCharCode(e.which).toLowerCase();\n const nonLetters = [9, 13, 27, 38, 40];\n if (letter && nonLetters.indexOf(e.which) === -1) {\n this.filterQuery.push(letter);\n const string = this.filterQuery.join('');\n const newOptionEl = Array.from(this.dropdownEl.querySelectorAll('li'))\n .find((el) => el.innerText.toLowerCase().indexOf(string) === 0);\n if (newOptionEl) {\n this.focusedIndex = [...newOptionEl.parentNode.children].indexOf(newOptionEl);\n this._focusFocusedItem();\n }\n }\n this.filterTimeout = setTimeout(this._resetFilterQueryBound, 1000);\n }\n\n _resetFilterQuery() {\n this.filterQuery = [];\n }\n\n _resetDropdownStyles() {\n this.dropdownEl.style.display = '';\n this.dropdownEl.style.width = '';\n this.dropdownEl.style.height = '';\n this.dropdownEl.style.left = '';\n this.dropdownEl.style.top = '';\n this.dropdownEl.style.transformOrigin = '';\n this.dropdownEl.style.transform = '';\n this.dropdownEl.style.opacity = '';\n }\n\n // Move dropdown after container or trigger\n _moveDropdown(containerEl = null) {\n if (!!this.options.container) {\n this.options.container.append(this.dropdownEl);\n }\n else if (containerEl) {\n if (!containerEl.contains(this.dropdownEl)) {\n containerEl.append(this.dropdownEl);\n }\n }\n else {\n this.el.after(this.dropdownEl);\n }\n }\n\n _makeDropdownFocusable() {\n if (!this.dropdownEl) return;\n // Needed for arrow key navigation\n this.dropdownEl.tabIndex = 0;\n // Only set tabindex if it hasn't been set by user\n Array.from(this.dropdownEl.children).forEach((el)=> {\n if (!el.getAttribute('tabindex')) \n el.setAttribute('tabindex', '0');\n });\n }\n\n _focusFocusedItem() {\n if (\n this.focusedIndex >= 0 &&\n this.focusedIndex < this.dropdownEl.children.length &&\n this.options.autoFocus\n ) {\n (this.dropdownEl.children[this.focusedIndex] as HTMLElement).focus({\n preventScroll: true\n });\n this.dropdownEl.children[this.focusedIndex].scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'nearest'\n });\n }\n }\n\n _getDropdownPosition(closestOverflowParent) {\n const offsetParentBRect = this.el.offsetParent.getBoundingClientRect();\n const triggerBRect = this.el.getBoundingClientRect();\n const dropdownBRect = this.dropdownEl.getBoundingClientRect();\n\n let idealHeight = dropdownBRect.height;\n let idealWidth = dropdownBRect.width;\n let idealXPos = triggerBRect.left - dropdownBRect.left;\n let idealYPos = triggerBRect.top - dropdownBRect.top;\n\n const dropdownBounds = {\n left: idealXPos,\n top: idealYPos,\n height: idealHeight,\n width: idealWidth\n };\n\n const alignments = M.checkPossibleAlignments(\n this.el,\n closestOverflowParent,\n dropdownBounds,\n this.options.coverTrigger ? 0 : triggerBRect.height\n );\n\n let verticalAlignment = 'top';\n let horizontalAlignment = this.options.alignment;\n idealYPos += this.options.coverTrigger ? 0 : triggerBRect.height;\n\n // Reset isScrollable\n this.isScrollable = false;\n\n if (!alignments.top) {\n if (alignments.bottom) {\n verticalAlignment = 'bottom';\n\n if (!this.options.coverTrigger) {\n idealYPos -= triggerBRect.height;\n }\n } else {\n this.isScrollable = true;\n\n // Determine which side has most space and cutoff at correct height\n idealHeight -= 20; // Add padding when cutoff\n if (alignments.spaceOnTop > alignments.spaceOnBottom) {\n verticalAlignment = 'bottom';\n idealHeight += alignments.spaceOnTop;\n idealYPos -= this.options.coverTrigger\n ? alignments.spaceOnTop - 20\n : alignments.spaceOnTop - 20 + triggerBRect.height;\n } else {\n idealHeight += alignments.spaceOnBottom;\n }\n }\n }\n\n // If preferred horizontal alignment is possible\n if (!alignments[horizontalAlignment]) {\n const oppositeAlignment = horizontalAlignment === 'left' ? 'right' : 'left';\n if (alignments[oppositeAlignment]) {\n horizontalAlignment = oppositeAlignment;\n } else {\n // Determine which side has most space and cutoff at correct height\n if (alignments.spaceOnLeft > alignments.spaceOnRight) {\n horizontalAlignment = 'right';\n idealWidth += alignments.spaceOnLeft;\n idealXPos -= alignments.spaceOnLeft;\n } else {\n horizontalAlignment = 'left';\n idealWidth += alignments.spaceOnRight;\n }\n }\n }\n\n if (verticalAlignment === 'bottom') {\n idealYPos =\n idealYPos - dropdownBRect.height + (this.options.coverTrigger ? triggerBRect.height : 0);\n }\n if (horizontalAlignment === 'right') {\n idealXPos = idealXPos - dropdownBRect.width + triggerBRect.width;\n }\n return {\n x: idealXPos,\n y: idealYPos,\n verticalAlignment: verticalAlignment,\n horizontalAlignment: horizontalAlignment,\n height: idealHeight,\n width: idealWidth\n };\n }\n\n _animateIn() {\n anim.remove(this.dropdownEl);\n anim({\n targets: this.dropdownEl,\n opacity: {\n value: [0, 1],\n easing: 'easeOutQuad'\n },\n scaleX: [0.3, 1],\n scaleY: [0.3, 1],\n duration: this.options.inDuration,\n easing: 'easeOutQuint',\n complete: (anim) => {\n if (this.options.autoFocus) this.dropdownEl.focus();\n // onOpenEnd callback\n if (typeof this.options.onOpenEnd === 'function') {\n this.options.onOpenEnd.call(this, this.el);\n }\n }\n });\n }\n\n _animateOut() {\n anim.remove(this.dropdownEl);\n anim({\n targets: this.dropdownEl,\n opacity: {\n value: 0,\n easing: 'easeOutQuint'\n },\n scaleX: 0.3,\n scaleY: 0.3,\n duration: this.options.outDuration,\n easing: 'easeOutQuint',\n complete: (anim) => {\n this._resetDropdownStyles();\n // onCloseEnd callback\n if (typeof this.options.onCloseEnd === 'function') {\n this.options.onCloseEnd.call(this, this.el);\n }\n }\n });\n }\n\n private _getClosestAncestor(el: Element, condition: Function): Element {\n let ancestor = el.parentNode;\n while (ancestor !== null && ancestor !== document) {\n if (condition(ancestor)) {\n return <Element>ancestor;\n }\n ancestor = ancestor.parentNode;\n }\n return null;\n };\n\n _placeDropdown() {\n // Container here will be closest ancestor with overflow: hidden\n let closestOverflowParent: HTMLElement = <HTMLElement>this._getClosestAncestor(this.dropdownEl, (ancestor: HTMLElement) => {\n return !['HTML','BODY'].includes(ancestor.tagName) && getComputedStyle(ancestor).overflow !== 'visible';\n });\n // Fallback\n if (!closestOverflowParent) {\n closestOverflowParent = <HTMLElement>(!!this.dropdownEl.offsetParent\n ? this.dropdownEl.offsetParent\n : this.dropdownEl.parentNode);\n }\n\n if (getComputedStyle(closestOverflowParent).position === 'static')\n closestOverflowParent.style.position = 'relative';\n\n this._moveDropdown(closestOverflowParent);\n\n // Set width before calculating positionInfo\n const idealWidth = this.options.constrainWidth\n ? this.el.getBoundingClientRect().width\n : this.dropdownEl.getBoundingClientRect().width;\n this.dropdownEl.style.width = idealWidth + 'px';\n\n const positionInfo = this._getDropdownPosition(closestOverflowParent);\n this.dropdownEl.style.left = positionInfo.x + 'px';\n this.dropdownEl.style.top = positionInfo.y + 'px';\n this.dropdownEl.style.height = positionInfo.height + 'px';\n this.dropdownEl.style.width = positionInfo.width + 'px';\n this.dropdownEl.style.transformOrigin = `${\n positionInfo.horizontalAlignment === 'left' ? '0' : '100%'\n } ${positionInfo.verticalAlignment === 'top' ? '0' : '100%'}`;\n }\n\n open() {\n if (this.isOpen) return;\n this.isOpen = true;\n // onOpenStart callback\n if (typeof this.options.onOpenStart === 'function') {\n this.options.onOpenStart.call(this, this.el);\n }\n // Reset styles\n this._resetDropdownStyles();\n this.dropdownEl.style.display = 'block';\n this._placeDropdown();\n this._animateIn();\n this._setupTemporaryEventHandlers();\n }\n\n close() {\n if (!this.isOpen) return;\n this.isOpen = false;\n this.focusedIndex = -1;\n // onCloseStart callback\n if (typeof this.options.onCloseStart === 'function') {\n this.options.onCloseStart.call(this, this.el);\n }\n this._animateOut();\n this._removeTemporaryEventHandlers();\n if (this.options.autoFocus) {\n this.el.focus();\n }\n }\n\n recalculateDimensions() {\n if (this.isOpen) {\n this.dropdownEl.style.width = '';\n this.dropdownEl.style.height = '';\n this.dropdownEl.style.left = '';\n this.dropdownEl.style.top = '';\n this.dropdownEl.style.transformOrigin = '';\n this._placeDropdown();\n }\n }\n\n static {\n Dropdown._dropdowns = []; \n }\n }\n","import { M } from \"./global\";\n\nexport class Forms {\n\n static textareaAutoResize(textarea: HTMLTextAreaElement) {\n if (!textarea) {\n console.error('No textarea element found');\n return;\n }\n // Textarea Auto Resize\n let hiddenDiv: HTMLDivElement = document.querySelector('.hiddendiv');\n if (!hiddenDiv) {\n hiddenDiv = document.createElement('div');\n hiddenDiv.classList.add('hiddendiv', 'common');\n document.body.append(hiddenDiv);\n }\n const style = getComputedStyle(textarea);\n // Set font properties of hiddenDiv\n const fontFamily = style.fontFamily; //textarea.css('font-family');\n const fontSize = style.fontSize; //textarea.css('font-size');\n const lineHeight = style.lineHeight; //textarea.css('line-height');\n // Firefox can't handle padding shorthand.\n const paddingTop = style.paddingTop; //getComputedStyle(textarea).css('padding-top');\n const paddingRight = style.paddingRight; //textarea.css('padding-right');\n const paddingBottom = style.paddingBottom; //textarea.css('padding-bottom');\n const paddingLeft = style.paddingLeft; //textarea.css('padding-left');\n\n if (fontSize) hiddenDiv.style.fontSize = fontSize; //('font-size', fontSize);\n if (fontFamily) hiddenDiv.style.fontFamily = fontFamily; //css('font-family', fontFamily);\n if (lineHeight) hiddenDiv.style.lineHeight = lineHeight; //css('line-height', lineHeight); \n if (paddingTop) hiddenDiv.style.paddingTop = paddingTop; //ss('padding-top', paddingTop); \n if (paddingRight) hiddenDiv.style.paddingRight = paddingRight; //css('padding-right', paddingRight); \n if (paddingBottom) hiddenDiv.style.paddingBottom = paddingBottom; //css('padding-bottom', paddingBottom); \n if (paddingLeft) hiddenDiv.style.paddingLeft = paddingLeft; //css('padding-left', paddingLeft); \n\n // Set original-height, if none \n if (!textarea.hasAttribute('original-height'))\n textarea.setAttribute('original-height', textarea.getBoundingClientRect().height.toString());\n\n if (textarea.getAttribute('wrap') === 'off') {\n hiddenDiv.style.overflowWrap = 'normal'; // ('overflow-wrap', 'normal')\n hiddenDiv.style.whiteSpace = 'pre'; //.css('white-space', 'pre');\n }\n\n hiddenDiv.innerText = textarea.value + '\\n';\n\n const content = hiddenDiv.innerHTML.replace(/\\n/g, '<br>');\n hiddenDiv.innerHTML = content;\n\n // When textarea is hidden, width goes crazy.\n // Approximate with half of window size\n if (textarea.offsetWidth > 0 && textarea.offsetHeight > 0) {\n hiddenDiv.style.width = textarea.getBoundingClientRect().width +'px'; // ('width', textarea.width() + 'px');\n }\n else {\n hiddenDiv.style.width = (window.innerWidth / 2)+'px' //css('width', window.innerWidth / 2 + 'px');\n }\n\n // Resize if the new height is greater than the\n // original height of the textarea\n const originalHeight = parseInt(textarea.getAttribute('original-height'));\n const prevLength = parseInt(textarea.getAttribute('previous-length'));\n if (isNaN(originalHeight)) return;\n if (originalHeight <= hiddenDiv.clientHeight) {\n textarea.style.height = hiddenDiv.clientHeight+'px'; //css('height', hiddenDiv.innerHeight() + 'px');\n }\n else if (textarea.value.length < prevLength) {\n // In case the new height is less than original height, it\n // means the textarea has less text than before\n // So we set the height to the original one\n textarea.style.height = originalHeight+'px';\n }\n textarea.setAttribute('previous-length', textarea.value.length.toString());\n };\n\n static Init(){\n document.addEventListener(\"DOMContentLoaded\", () => {\n\n document.addEventListener('keyup', e => {\n const target = <HTMLInputElement>e.target;\n // Radio and Checkbox focus class\n if (target instanceof HTMLInputElement && ['radio','checkbox'].includes(target.type)) {\n // TAB, check if tabbing to radio or checkbox.\n if (e.which === M.keys.TAB) {\n target.classList.add('tabbed');\n target.addEventListener('blur', e => target.classList.remove('tabbed'), {once: true});\n }\n }\n });\n\n document.querySelectorAll('.materialize-textarea').forEach((textArea: HTMLTextAreaElement) => {\n // Save Data in Element\n textArea.setAttribute('original-height', textArea.getBoundingClientRect().height.toString());\n textArea.setAttribute('previous-length', textArea.value.length.toString());\n Forms.textareaAutoResize(textArea);\n\n textArea.addEventListener('keyup', e => Forms.textareaAutoResize(textArea));\n textArea.addEventListener('keydown', e => Forms.textareaAutoResize(textArea));\n });\n \n // File Input Path\n document.querySelectorAll('.file-field input[type=\"file\"]').forEach((fileInput: HTMLInputElement) => {\n fileInput.addEventListener('change', e => {\n const fileField = fileInput.closest('.file-field');\n const pathInput = <HTMLInputElement>fileField.querySelector('input.file-path');\n const files = fileInput.files;\n const filenames = [];\n for (let i = 0; i < files.length; i++) {\n filenames.push(files[i].name);\n }\n pathInput.value = filenames.join(', ');\n pathInput.dispatchEvent(new Event('change'));\n });\n });\n \n });\n }\n}\n\n ","import { Autocomplete } from './autocomplete';\nimport { Bounding } from './bounding';\nimport { FloatingActionButton } from './buttons';\nimport { Cards } from './cards';\nimport { Carousel } from './carousel';\nimport { CharacterCounter } from './characterCounter';\nimport { Chips } from './chips';\nimport { Collapsible } from './collapsible';\nimport { Datepicker } from './datepicker';\nimport { Dropdown } from './dropdown';\nimport { Edges } from './edges';\nimport { Forms } from './forms';\nimport { Materialbox } from './materialbox';\nimport { Modal } from './modal';\nimport { Parallax } from './parallax';\nimport { Pushpin } from './pushpin';\nimport { ScrollSpy } from './scrollspy';\nimport { FormSelect } from './select';\nimport { Sidenav } from './sidenav';\nimport { Slider } from './slider';\nimport { Tabs } from './tabs';\nimport { TapTarget } from './tapTarget';\nimport { Timepicker } from './timepicker';\nimport { Toast } from './toasts';\nimport { Tooltip } from './tooltip';\nimport { Waves } from './waves';\nimport { Range } from './range';\n\nexport class M {\n static version = '2.0.1-alpha';\n\n static keys = {\n TAB: 9,\n ENTER: 13,\n ESC: 27,\n ARROW_UP: 38,\n ARROW_DOWN: 40\n };\n\n static Autocomplete: typeof Autocomplete = Autocomplete; \n static Tabs: typeof Tabs = Tabs; \n static Carousel: typeof Carousel = Carousel; \n static Dropdown: typeof Dropdown = Dropdown;\n static FloatingActionButton: typeof FloatingActionButton = FloatingActionButton;\n static Chips: typeof Chips = Chips;\n static Collapsible: typeof Collapsible = Collapsible;\n static Datepicker: typeof Datepicker = Datepicker;\n static CharacterCounter: typeof CharacterCounter = CharacterCounter;\n static FormSelect: typeof FormSelect = FormSelect;\n static Modal: typeof Modal = Modal;\n static Pushpin: typeof Pushpin = Pushpin;\n static Materialbox: typeof Materialbox = Materialbox;\n static Parallax: typeof Parallax = Parallax;\n static Slider: typeof Slider = Slider;\n static Timepicker: typeof Timepicker = Timepicker;\n static toast: (opt: any) => Toast = (opt) => new Toast(opt) ;\n static Tooltip: typeof Tooltip = Tooltip;\n static Sidenav: typeof Sidenav = Sidenav;\n static TapTarget: typeof TapTarget = TapTarget;\n static ScrollSpy: typeof ScrollSpy = ScrollSpy;\n static Range: typeof Range = Range;\n static Waves: typeof Waves = Waves;\n\n static tabPressed:boolean = false;\n static keyDown:boolean = false;\n\n static docHandleKeydown(e) {\n M.keyDown = true;\n if (e.which === M.keys.TAB || e.which === M.keys.ARROW_DOWN || e.which === M.keys.ARROW_UP) {\n M.tabPressed = true;\n }\n }\n\n static docHandleKeyup(e) {\n M.keyDown = false;\n if (e.which === M.keys.TAB || e.which === M.keys.ARROW_DOWN || e.which === M.keys.ARROW_UP) {\n M.tabPressed = false;\n }\n }\n\n static docHandleFocus(e) {\n if (M.keyDown) {\n document.body.classList.add('keyboard-focused');\n }\n }\n\n static docHandleBlur(e) {\n document.body.classList.remove('keyboard-focused');\n }\n\n static {\n document.addEventListener('keydown', this.docHandleKeydown, true);\n document.addEventListener('keyup', this.docHandleKeyup, true);\n document.addEventListener('focus', this.docHandleFocus, true);\n document.addEventListener('blur', this.docHandleBlur, true); \n this.initializeJqueryWrapper(Tabs, 'tabs', 'M_Tabs'); \n this.initializeJqueryWrapper(Carousel, 'carousel', 'M_Carousel');\n this.initializeJqueryWrapper(Autocomplete, 'autocomplete', 'M_Autocomplete');\n this.initializeJqueryWrapper(Dropdown, 'dropdown', 'M_Dropdown');\n this.initializeJqueryWrapper(FloatingActionButton, 'floatingActionButton', 'M_FloatingActionButton');\n M.initializeJqueryWrapper(Collapsible, 'collapsible', 'M_Collapsible');\n M.initializeJqueryWrapper(CharacterCounter, 'characterCounter', 'M_CharacterCounter');\n M.initializeJqueryWrapper(Datepicker, 'datepicker', 'M_Datepicker'); \n M.initializeJqueryWrapper(FormSelect, 'formSelect', 'M_FormSelect'); \n M.initializeJqueryWrapper(Modal, 'modal', 'M_Modal');\n M.initializeJqueryWrapper(Pushpin, 'pushpin', 'M_Pushpin');\n M.initializeJqueryWrapper(Materialbox, 'materialbox', 'M_Materialbox'); \n M.initializeJqueryWrapper(Parallax, 'parallax', 'M_Parallax');\n M.initializeJqueryWrapper(Slider, 'slider', 'M_Slider');\n M.initializeJqueryWrapper(Timepicker, 'timepicker', 'M_Timepicker');\n M.initializeJqueryWrapper(Tooltip, 'tooltip', 'M_Tooltip');\n M.initializeJqueryWrapper(TapTarget, 'tapTarget', 'M_TapTarget');\n M.initializeJqueryWrapper(Sidenav, 'sidenav', 'M_Sidenav');\n M.initializeJqueryWrapper(ScrollSpy, 'scrollSpy', 'M_ScrollSpy');\n M.initializeJqueryWrapper(Range, 'range', 'M_Range');\n M.initializeJqueryWrapper(Chips, 'chips', 'M_Chips');\n Cards.Init();\n Forms.Init();\n Chips.Init();\n Waves.Init();\n Range.Init();\n }\n\n //--- TODO: Remove!\n static jQueryLoaded(): boolean {\n return !!(<any>window).jQuery; \n }\n static initializeJqueryWrapper(plugin: any, pluginName: string, classRef: string) {\n if (!this.jQueryLoaded())\n return;\n var jq = (<any>window).jQuery;\n \n jq.fn[pluginName] = function(methodOrOptions) {\n // Call plugin method if valid method name is passed in\n if (plugin.prototype[methodOrOptions]) {\n let params = Array.prototype.slice.call(arguments, 1);\n // Getter methods\n if (methodOrOptions.slice(0, 3) === 'get') {\n let instance = this.first()[0][classRef];\n return instance[methodOrOptions].apply(instance, params);\n }\n // Void methods\n return this.each(function() {\n let instance = this[classRef];\n instance[methodOrOptions].apply(instance, params);\n });\n // Initialize plugin if options or no argument is passed in\n } else if (typeof methodOrOptions === 'object' || !methodOrOptions) {\n plugin.init(this, arguments[0]);\n return this;\n }\n // Return error if an unrecognized method name is passed in\n jq.error(`Method ${methodOrOptions} does not exist on jQuery.${pluginName}`);\n };\n }\n //---\n\n static AutoInit(context:Element = null) {\n let root = !!context ? context : document.body;\n let registry = {\n Autocomplete: root.querySelectorAll('.autocomplete:not(.no-autoinit)'),\n Carousel: root.querySelectorAll('.carousel:not(.no-autoinit)'),\n Chips: root.querySelectorAll('.chips:not(.no-autoinit)'),\n Collapsible: root.querySelectorAll('.collapsible:not(.no-autoinit)'),\n Datepicker: root.querySelectorAll('.datepicker:not(.no-autoinit)'),\n Dropdown: root.querySelectorAll('.dropdown-trigger:not(.no-autoinit)'),\n Materialbox: root.querySelectorAll('.materialboxed:not(.no-autoinit)'),\n Modal: root.querySelectorAll('.modal:not(.no-autoinit)'),\n Parallax: root.querySelectorAll('.parallax:not(.no-autoinit)'),\n Pushpin: root.querySelectorAll('.pushpin:not(.no-autoinit)'),\n ScrollSpy: root.querySelectorAll('.scrollspy:not(.no-autoinit)'),\n FormSelect: root.querySelectorAll('select:not(.no-autoinit)'),\n Sidenav: root.querySelectorAll('.sidenav:not(.no-autoinit)'),\n Tabs: root.querySelectorAll('.tabs:not(.no-autoinit)'),\n TapTarget: root.querySelectorAll('.tap-target:not(.no-autoinit)'),\n Timepicker: root.querySelectorAll('.timepicker:not(.no-autoinit)'),\n Tooltip: root.querySelectorAll('.tooltipped:not(.no-autoinit)'),\n FloatingActionButton: root.querySelectorAll('.fixed-action-btn:not(.no-autoinit)'),\n };\n M.Autocomplete.init(registry.Autocomplete, null);\n M.Carousel.init(registry.Carousel, null); \n M.Chips.init(registry.Chips, null); \n M.Collapsible.init(registry.Collapsible, null);\n M.Datepicker.init(registry.Datepicker, null);\n M.Dropdown.init(registry.Dropdown, null); \n M.Materialbox.init(registry.Materialbox, null);\n M.Modal.init(registry.Modal, null);\n M.Parallax.init(registry.Parallax, null);\n M.Pushpin.init(registry.Pushpin, null);\n M.ScrollSpy.init(registry.ScrollSpy, null);\n M.FormSelect.init(registry.FormSelect, null);\n M.Sidenav.init(registry.Sidenav, null);\n M.Tabs.init(registry.Tabs, null);\n M.TapTarget.init(registry.TapTarget, null);\n M.Timepicker.init(registry.Timepicker, null);\n M.Tooltip.init(registry.Tooltip, null);\n M.FloatingActionButton.init(registry.FloatingActionButton, null);\n }\n\n static objectSelectorString(obj: any): string {\n let tagStr = obj.prop('tagName') || '';\n let idStr = obj.attr('id') || '';\n let classStr = obj.attr('class') || '';\n return (tagStr + idStr + classStr).replace(/\\s/g, '');\n }\n\n static guid(): string {\n function s4():string {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n } \n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4(); \n }\n\n static checkWithinContainer(container: Element, bounding: Bounding, offset: number): Edges {\n let edges = {\n top: false,\n right: false,\n bottom: false,\n left: false\n };\n\n let containerRect = container.getBoundingClientRect();\n // If body element is smaller than viewport, use viewport height instead.\n let containerBottom =\n container === document.body\n ? Math.max(containerRect.bottom, window.innerHeight)\n : containerRect.bottom;\n\n let scrollLeft = container.scrollLeft;\n let scrollTop = container.scrollTop;\n\n let scrolledX = bounding.left - scrollLeft;\n let scrolledY = bounding.top - scrollTop;\n\n // Check for container and viewport for each edge\n if (scrolledX < containerRect.left + offset || scrolledX < offset) {\n edges.left = true;\n }\n\n if (\n scrolledX + bounding.width > containerRect.right - offset ||\n scrolledX + bounding.width > window.innerWidth - offset\n ) {\n edges.right = true;\n }\n\n if (scrolledY < containerRect.top + offset || scrolledY < offset) {\n edges.top = true;\n }\n\n if (\n scrolledY + bounding.height > containerBottom - offset ||\n scrolledY + bounding.height > window.innerHeight - offset\n ) {\n edges.bottom = true;\n }\n\n return edges;\n }\n\n static checkPossibleAlignments(el, container, bounding, offset) {\n let canAlign = {\n top: true,\n right: true,\n bottom: true,\n left: true,\n spaceOnTop: null,\n spaceOnRight: null,\n spaceOnBottom: null,\n spaceOnLeft: null\n };\n\n let containerAllowsOverflow = getComputedStyle(container).overflow === 'visible';\n let containerRect = container.getBoundingClientRect();\n let containerHeight = Math.min(containerRect.height, window.innerHeight);\n let containerWidth = Math.min(containerRect.width, window.innerWidth);\n let elOffsetRect = el.getBoundingClientRect();\n\n let scrollLeft = container.scrollLeft;\n let scrollTop = container.scrollTop;\n\n let scrolledX = bounding.left - scrollLeft;\n let scrolledYTopEdge = bounding.top - scrollTop;\n let scrolledYBottomEdge = bounding.top + elOffsetRect.height - scrollTop;\n\n // Check for container and viewport for left\n canAlign.spaceOnRight = !containerAllowsOverflow\n ? containerWidth - (scrolledX + bounding.width)\n : window.innerWidth - (elOffsetRect.left + bounding.width);\n if (canAlign.spaceOnRight < 0) {\n canAlign.left = false;\n }\n\n // Check for container and viewport for Right\n canAlign.spaceOnLeft = !containerAllowsOverflow\n ? scrolledX - bounding.width + elOffsetRect.width\n : elOffsetRect.right - bounding.width;\n if (canAlign.spaceOnLeft < 0) {\n canAlign.right = false;\n }\n\n // Check for container and viewport for Top\n canAlign.spaceOnBottom = !containerAllowsOverflow\n ? containerHeight - (scrolledYTopEdge + bounding.height + offset)\n : window.innerHeight - (elOffsetRect.top + bounding.height + offset);\n if (canAlign.spaceOnBottom < 0) {\n canAlign.top = false;\n }\n\n // Check for container and viewport for Bottom\n canAlign.spaceOnTop = !containerAllowsOverflow\n ? scrolledYBottomEdge - (bounding.height - offset)\n : elOffsetRect.bottom - (bounding.height + offset);\n if (canAlign.spaceOnTop < 0) {\n canAlign.bottom = false;\n }\n\n return canAlign;\n }\n\n static getOverflowParent(element) {\n if (element == null) {\n return null;\n }\n if (element === document.body || getComputedStyle(element).overflow !== 'visible') {\n return element;\n }\n return this.getOverflowParent(element.parentElement);\n }\n\n static getIdFromTrigger(trigger: Element): string {\n let id = trigger.getAttribute('data-target');\n if (!id) {\n id = trigger.getAttribute('href');\n if (id) {\n id = id.slice(1);\n } else {\n id = '';\n }\n }\n return id;\n }\n\n static getDocumentScrollTop(): number {\n return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n };\n\n static getDocumentScrollLeft(): number {\n return window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0;\n }\n\n public static throttle(func, wait, options = null) {\n let context, args, result;\n let timeout = null;\n let previous = 0;\n options || (options = {});\n let later = function() {\n previous = options.leading === false ? 0 : new Date().getTime();\n timeout = null;\n result = func.apply(context, args);\n context = args = null;\n };\n return function() {\n let now = new Date().getTime();\n if (!previous && options.leading === false) previous = now;\n let remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0) {\n clearTimeout(timeout);\n timeout = null;\n previous = now;\n result = func.apply(context, args);\n context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n }\n}\n\nexport default M;","import { Component } from \"./component\";\nimport anim from \"animejs\";\nimport { M } from \"./global\";\n\nconst _defaults = {\n inDuration: 275,\n outDuration: 200,\n onOpenStart: null,\n onOpenEnd: null,\n onCloseStart: null,\n onCloseEnd: null\n};\n\n export class Materialbox extends Component {\n el: HTMLElement;\n overlayActive: boolean;\n doneAnimating: boolean;\n caption: string;\n originalWidth: number;\n originalHeight: number;\n private originInlineStyles: string;\n private placeholder: HTMLElement;\n private _changedAncestorList: HTMLElement[];\n private newHeight: number;\n private newWidth: number;\n private windowWidth: number;\n private windowHeight: number;\n private attrWidth: string;\n private attrHeight: string;\n private _overlay: HTMLElement;\n private _photoCaption: HTMLElement;\n private _handleMaterialboxClickBound: any;\n private _handleWindowScrollBound: any;\n private _handleWindowResizeBound: any;\n private _handleWindowEscapeBound: any;\n\n constructor(el, options) {\n super(Materialbox, el, options);\n (this.el as any).M_Materialbox = this;\n this.options = {...Materialbox.defaults, ...options};\n this.overlayActive = false;\n this.doneAnimating = true;\n this.placeholder = document.createElement('div');\n this.placeholder.classList.add('material-placeholder');\n this.originalWidth = 0;\n this.originalHeight = 0;\n this.originInlineStyles = this.el.getAttribute('style');\n this.caption = this.el.getAttribute('data-caption') || '';\n // Wrap\n this.el.before(this.placeholder);\n this.placeholder.append(this.el);\n this._setupEventHandlers();\n }\n\n static get defaults() {\n return _defaults;\n }\n\n static init(els, options) {\n return super.init(this, els, options);\n }\n\n static getInstance(el) {\n const domElem = !!el.jquery ? el[0] : el;\n return domElem.M_Materialbox;\n }\n\n destroy() {\n this._removeEventHandlers();\n (this.el as any).M_Materialbox = undefined;\n // Unwrap image\n //this.placeholder.after(this.el).remove();\n this.placeholder.remove();\n this.el.removeAttribute('style');\n }\n\n _setupEventHandlers() {\n this._handleMaterialboxClickBound = this._handleMaterialboxClick.bind(this);\n this.el.addEventListener('click', this._handleMaterialboxClickBound);\n }\n\n _removeEventHandlers() {\n this.el.removeEventListener('click', this._handleMaterialboxClickBound);\n }\n\n _handleMaterialboxClick(e) {\n // If already modal, return to original\n if (this.doneAnimating === false || (this.overlayActive && this.doneAnimating))\n this.close();\n else\n this.open();\n }\n\n _handleWindowScroll() {\n if (this.overlayActive) this.close();\n }\n\n _handleWindowResize() {\n if (this.overlayActive) this.close();\n }\n\n _handleWindowEscape(e) {\n // ESC key\n if (e.keyCode === 27 && this.doneAnimating && this.overlayActive) this.close();\n }\n\n _makeAncestorsOverflowVisible() {\n this._changedAncestorList = [];\n let ancestor = this.placeholder.parentNode;\n while (ancestor !== null && ancestor !== document) {\n const curr = <HTMLElement>ancestor;\n if (curr.style.overflow !== 'visible') {\n curr.style.overflow = 'visible';\n this._changedAncestorList.push(curr);\n }\n ancestor = ancestor.parentNode;\n }\n }\n\n private _offset(el) {\n const box = el.getBoundingClientRect();\n const docElem = document.documentElement;\n return {\n top: box.top + window.pageYOffset - docElem.clientTop,\n left: box.left + window.pageXOffset - docElem.clientLeft\n };\n }\n\n _animateImageIn() { \n this.el.style.maxHeight = this.newHeight.toString()+'px';\n this.el.style.maxWidth = this.newWidth.toString()+'px';\n\n const animOptions = {\n targets: this.el, // image\n height: [this.originalHeight, this.newHeight],\n width: [this.originalWidth, this.newWidth],\n left:\n M.getDocumentScrollLeft() +\n this.windowWidth / 2 -\n this._offset(this.placeholder).left -\n this.newWidth / 2,\n top:\n M.getDocumentScrollTop() +\n this.windowHeight / 2 -\n this._offset(this.placeholder).top -\n this.newHeight / 2,\n duration: this.options.inDuration,\n easing: 'easeOutQuad',\n complete: () => {\n this.doneAnimating = true;\n // onOpenEnd callback\n if (typeof this.options.onOpenEnd === 'function') {\n this.options.onOpenEnd.call(this, this.el);\n }\n }\n };\n // Override max-width or max-height if needed\n //const elStyle = this.el.style;\n //console.log('mh', elStyle.maxHeight, '->', this.newHeight);\n //console.log('mw', elStyle.maxWidth, '->', this.newWidth);\n //if (elStyle.maxWidth !== 'none') animOptions.maxWidth = this.newWidth;\n //if (elStyle.maxHeight !== 'none') animOptions.maxHeight = this.newHeight;\n //console.log('>>> animate');\n //console.log(JSON.stringify(animOptions));\n anim(animOptions);\n }\n\n _animateImageOut() {\n const animOptions = {\n targets: this.el,\n width: this.originalWidth,\n height: this.originalHeight,\n left: 0,\n top: 0,\n duration: this.options.outDuration,\n easing: 'easeOutQuad',\n complete: () => {\n this.placeholder.style.height = '';\n this.placeholder.style.width = '';\n this.placeholder.style.position = '';\n this.placeholder.style.top = '';\n this.placeholder.style.left = '';\n // Revert to width or height attribute\n if (this.attrWidth) this.el.setAttribute('width', this.attrWidth.toString());\n if (this.attrHeight) this.el.setAttribute('height', this.attrHeight.toString());\n this.el.removeAttribute('style');\n this.originInlineStyles && this.el.setAttribute('style', this.originInlineStyles);\n // Remove class\n this.el.classList.remove('active');\n this.doneAnimating = true;\n // Remove overflow overrides on ancestors\n this._changedAncestorList.forEach(anchestor => anchestor.style.overflow = '');\n // onCloseEnd callback\n if (typeof this.options.onCloseEnd === 'function') {\n this.options.onCloseEnd.call(this, this.el);\n }\n }\n };\n anim(animOptions);\n }\n\n _updateVars() {\n this.windowWidth = window.innerWidth;\n this.windowHeight = window.innerHeight;\n this.caption = this.el.getAttribute('data-caption') || '';\n }\n\n open() {\n this._updateVars();\n this.originalWidth = this.el.getBoundingClientRect().width;\n this.originalHeight = this.el.getBoundingClientRect().height;\n // Set states\n this.doneAnimating = false;\n this.el.classList.add('active');\n this.overlayActive = true;\n // onOpenStart callback\n if (typeof this.options.onOpenStart === 'function') {\n this.options.onOpenStart.call(this, this.el);\n }\n // Set positioning for placeholder\n this.placeholder.style.width = this.placeholder.getBoundingClientRect().width+'px';\n this.placeholder.style.height = this.placeholder.getBoundingClientRect().height+'px';\n this.placeholder.style.position = 'relative';\n this.placeholder.style.top = '0';\n this.placeholder.style.left = '0';\n this._makeAncestorsOverflowVisible();\n // Set css on origin\n this.el.style.position = 'absolute';\n this.el.style.zIndex = '1000';\n this.el.style.willChange = 'left, top, width, height';\n // Change from width or height attribute to css\n this.attrWidth = this.el.getAttribute('width');\n this.attrHeight = this.el.getAttribute('height');\n if (this.attrWidth) {\n this.el.style.width = this.attrWidth+'px';\n this.el.removeAttribute('width');\n }\n if (this.attrHeight) {\n this.el.style.width = this.attrHeight+'px';\n this.el.removeAttribute('height');\n }\n // Add overlay\n this._overlay = document.createElement('div');\n this._overlay.id = 'materialbox-overlay';\n this._overlay.style.opacity = '0';\n this._overlay.addEventListener('click', e => {\n if (this.doneAnimating) this.close();\n }, {once: true});\n // Put before in origin image to preserve z-index layering.\n this.el.before(this._overlay);\n // Set dimensions if needed\n const overlayOffset = this._overlay.getBoundingClientRect();\n this._overlay.style.width = this.windowWidth+'px';\n this._overlay.style.height = this.windowHeight+'px';\n this._overlay.style.left = -1 * overlayOffset.left+'px';\n this._overlay.style.top = -1 * overlayOffset.top+'px';\n anim.remove(this.el);\n anim.remove(this._overlay);\n // Animate Overlay\n anim({\n targets: this._overlay,\n opacity: 1,\n duration: this.options.inDuration,\n easing: 'easeOutQuad'\n });\n // Add and animate caption if it exists\n if (this.caption !== '') { \n if (this._photoCaption) anim.remove(this._photoCaption);\n this._photoCaption = document.createElement('div');\n this._photoCaption.classList.add('materialbox-caption');\n this._photoCaption.innerText = this.caption;\n document.body.append(this._photoCaption);\n this._photoCaption.style.display = 'inline';\n anim({\n targets: this._photoCaption,\n opacity: 1,\n duration: this.options.inDuration,\n easing: 'easeOutQuad'\n });\n }\n\n // Resize Image\n const widthPercent = this.originalWidth / this.windowWidth;\n const heightPercent = this.originalHeight / this.windowHeight;\n this.newWidth = 0;\n this.newHeight = 0; \n if (widthPercent > heightPercent) {\n // Width first\n const ratio = this.originalHeight / this.originalWidth;\n this.newWidth = this.windowWidth * 0.9;\n this.newHeight = this.windowWidth * 0.9 * ratio;\n }\n else {\n // Height first\n const ratio = this.originalWidth / this.originalHeight;\n this.newWidth = this.windowHeight * 0.9 * ratio;\n this.newHeight = this.windowHeight * 0.9;\n }\n this._animateImageIn();\n\n // Handle Exit triggers\n this._handleWindowScrollBound = this._handleWindowScroll.bind(this);\n this._handleWindowResizeBound = this._handleWindowResize.bind(this);\n this._handleWindowEscapeBound = this._handleWindowEscape.bind(this);\n window.addEventListener('scroll', this._handleWindowScrollBound);\n window.addEventListener('resize', this._handleWindowResizeBound);\n window.addEventListener('keyup', this._handleWindowEscapeBound);\n }\n\n close() {\n this._updateVars();\n this.doneAnimating = false;\n // onCloseStart callback\n if (typeof this.options.onCloseStart === 'function') {\n this.options.onCloseStart.call(this, this.el);\n }\n anim.remove(this.el);\n anim.remove(this._overlay);\n if (this.caption !== '') anim.remove(this._photoCaption); \n // disable exit handlers\n window.removeEventListener('scroll', this._handleWindowScrollBound);\n window.removeEventListener('resize', this._handleWindowResizeBound);\n window.removeEventListener('keyup', this._handleWindowEscapeBound);\n anim({\n targets: this._overlay,\n opacity: 0,\n duration: this.options.outDuration,\n easing: 'easeOutQuad',\n complete: () => {\n this.overlayActive = false;\n this._overlay.remove();\n }\n });\n this._animateImageOut();\n // Remove Caption + reset css settings on image\n if (this.caption !== '') {\n anim({\n targets: this._photoCaption,\n opacity: 0,\n duration: this.options.outDuration,\n easing: 'easeOutQuad',\n complete: () => {\n this._photoCaption.remove();\n }\n });\n }\n }\n }\n","import { Component } from \"./component\";\nimport anim from \"animejs\";\nimport { M } from \"./global\";\n\nconst _defaults = {\n opacity: 0.5,\n inDuration: 250,\n outDuration: 250,\n onOpenStart: null,\n onOpenEnd: null,\n onCloseStart: null,\n onCloseEnd: null,\n preventScrolling: true,\n dismissible: true,\n startingTop: '4%',\n endingTop: '10%'\n};\n\n export class Modal extends Component {\n el: HTMLElement;\n static _modalsOpen: number;\n static _count: number;\n isOpen: boolean;\n id: string;\n private _openingTrigger: any;\n private _overlay: HTMLElement;\n private _nthModalOpened: number;\n private _handleOverlayClickBound: any;\n private _handleModalCloseClickBound: any;\n private _handleKeydownBound: any;\n private _handleFocusBound: any;\n\n constructor(el, options) {\n super(Modal, el, options);\n (this.el as any).M_Modal = this;\n this.options = {...Modal.defaults, ...options};\n this.isOpen = false;\n this.id = this.el.id;\n this._openingTrigger = undefined;\n this._overlay = document.createElement('div');\n this._overlay.classList.add('modal-overlay');\n this.el.tabIndex = 0;\n this._nthModalOpened = 0;\n Modal._count++;\n this._setupEventHandlers();\n }\n\n static get defaults() {\n return _defaults;\n }\n\n static init(els, options) {\n return super.init(this, els, options);\n }\n\n static getInstance(el) {\n const domElem = !!el.jquery ? el[0] : el;\n return domElem.M_Modal;\n }\n\n destroy() {\n Modal._count--;\n this._removeEventHandlers();\n this.el.removeAttribute('style');\n this._overlay.remove();\n (this.el as any).M_Modal = undefined;\n }\n\n _setupEventHandlers() {\n this._handleOverlayClickBound = this._handleOverlayClick.bind(this);\n this._handleModalCloseClickBound = this._handleModalCloseClick.bind(this);\n if (Modal._count === 1) {\n document.body.addEventListener('click', this._handleTriggerClick);\n }\n this._overlay.addEventListener('click', this._handleOverlayClickBound);\n this.el.addEventListener('click', this._handleModalCloseClickBound);\n }\n\n _removeEventHandlers() {\n if (Modal._count === 0) {\n document.body.removeEventListener('click', this._handleTriggerClick);\n }\n this._overlay.removeEventListener('click', this._handleOverlayClickBound);\n this.el.removeEventListener('click', this._handleModalCloseClickBound);\n }\n\n _handleTriggerClick(e) {\n const trigger = e.target.closest('.modal-trigger');\n if (!trigger) return;\n const modalId = M.getIdFromTrigger(trigger);\n const modalInstance = (document.getElementById(modalId) as any).M_Modal;\n if (modalInstance) modalInstance.open(trigger);\n e.preventDefault();\n }\n\n _handleOverlayClick() {\n if (this.options.dismissible) this.close();\n }\n\n _handleModalCloseClick(e) {\n const closeTrigger = e.target.closest('.modal-close');\n if (closeTrigger) this.close();\n }\n\n _handleKeydown(e) {\n // ESC key\n if (e.keyCode === 27 && this.options.dismissible) this.close();\n }\n\n _handleFocus(e) {\n // Only trap focus if this modal is the last model opened (prevents loops in nested modals).\n if (!this.el.contains(e.target) && this._nthModalOpened === Modal._modalsOpen) {\n this.el.focus();\n }\n }\n\n _animateIn() {\n // Set initial styles \n this.el.style.display = 'block';\n this.el.style.opacity = '0';\n this._overlay.style.display = 'block';\n this._overlay.style.opacity = '0';\n // Animate overlay\n anim({\n targets: this._overlay,\n opacity: this.options.opacity,\n duration: this.options.inDuration,\n easing: 'easeOutQuad'\n });\n // Define modal animation options\n const enterAnimOptions = {\n targets: this.el,\n duration: this.options.inDuration,\n easing: 'easeOutCubic',\n // Handle modal onOpenEnd callback\n complete: () => {\n if (typeof this.options.onOpenEnd === 'function') {\n this.options.onOpenEnd.call(this, this.el, this._openingTrigger);\n }\n }\n };\n // Bottom sheet animation\n if (this.el.classList.contains('bottom-sheet')) {\n enterAnimOptions['bottom'] = 0;\n enterAnimOptions['opacity'] = 1;\n }\n // Normal modal animation\n else {\n enterAnimOptions['top'] = [this.options.startingTop, this.options.endingTop];\n enterAnimOptions['opacity'] = 1;\n enterAnimOptions['scaleX'] = [0.8, 1];\n enterAnimOptions['scaleY'] = [0.8, 1];\n }\n anim(enterAnimOptions);\n }\n\n _animateOut() {\n // Animate overlay\n anim({\n targets: this._overlay,\n opacity: 0,\n duration: this.options.outDuration,\n easing: 'easeOutQuart'\n });\n // Define modal animation options\n const exitAnimOptions = {\n targets: this.el,\n duration: this.options.outDuration,\n easing: 'easeOutCubic',\n // Handle modal ready callback\n complete: () => {\n this.el.style.display = 'none';\n this._overlay.remove();\n // Call onCloseEnd callback\n if (typeof this.options.onCloseEnd === 'function') {\n this.options.onCloseEnd.call(this, this.el);\n }\n }\n };\n // Bottom sheet animation\n if (this.el.classList.contains('bottom-sheet')) {\n exitAnimOptions['bottom'] = '-100%';\n exitAnimOptions['opacity'] = 0;\n }\n // Normal modal animation\n else {\n exitAnimOptions['top'] = [this.options.endingTop, this.options.startingTop];\n exitAnimOptions['opacity'] = 0;\n exitAnimOptions['scaleX'] = 0.8;\n exitAnimOptions['scaleY'] = 0.8;\n }\n anim(exitAnimOptions);\n }\n\n open(trigger: HTMLElement|undefined): Modal {\n if (this.isOpen) return;\n this.isOpen = true;\n Modal._modalsOpen++;\n this._nthModalOpened = Modal._modalsOpen;\n // Set Z-Index based on number of currently open modals\n this._overlay.style.zIndex = (1000 + Modal._modalsOpen * 2).toString();\n this.el.style.zIndex = (1000 + Modal._modalsOpen * 2 + 1).toString();\n // Set opening trigger, undefined indicates modal was opened by javascript\n this._openingTrigger = !!trigger ? trigger : undefined;\n // onOpenStart callback\n if (typeof this.options.onOpenStart === 'function') {\n this.options.onOpenStart.call(this, this.el, this._openingTrigger);\n }\n if (this.options.preventScrolling) {\n document.body.style.overflow = 'hidden';\n }\n this.el.classList.add('open');\n this.el.insertAdjacentElement('afterend', this._overlay);\n if (this.options.dismissible) {\n this._handleKeydownBound = this._handleKeydown.bind(this);\n this._handleFocusBound = this._handleFocus.bind(this);\n document.addEventListener('keydown', this._handleKeydownBound);\n document.addEventListener('focus', this._handleFocusBound, true);\n }\n anim.remove(this.el);\n anim.remove(this._overlay);\n this._animateIn();\n // Focus modal\n this.el.focus();\n return this;\n }\n\n close() {\n if (!this.isOpen) return;\n this.isOpen = false;\n Modal._modalsOpen--;\n this._nthModalOpened = 0;\n // Call onCloseStart callback\n if (typeof this.options.onCloseStart === 'function') {\n this.options.onCloseStart.call(this, this.el);\n }\n this.el.classList.remove('open');\n // Enable body scrolling only if there are no more modals open.\n if (Modal._modalsOpen === 0) {\n document.body.style.overflow = '';\n }\n if (this.options.dismissible) {\n document.removeEventListener('keydown', this._handleKeydownBound);\n document.removeEventListener('focus', this._handleFocusBound, true);\n }\n anim.remove(this.el);\n anim.remove(this._overlay);\n this._animateOut();\n return this;\n }\n\n static{\n Modal._modalsOpen = 0;\n Modal._count = 0;\n }\n }\n","import { Component } from \"./component\";\nimport { M } from \"./global\";\n\n let _defaults = {\n responsiveThreshold: 0 // breakpoint for swipeable\n };\n\n export class Parallax extends Component {\n private _enabled: boolean;\n private _img: HTMLImageElement;\n private _handleImageLoadBound: any;\n static _parallaxes: any;\n static _handleScrollThrottled: any;\n static _handleWindowResizeThrottled: () => any;\n\n constructor(el, options) {\n super(Parallax, el, options);\n (this.el as any).M_Parallax = this;\n this.options = {...Parallax.defaults, ...options};\n this._enabled = window.innerWidth > this.options.responsiveThreshold;\n this._img = this.el.querySelector('img'); \n this._updateParallax();\n this._setupEventHandlers();\n this._setupStyles();\n Parallax._parallaxes.push(this);\n }\n\n static get defaults() {\n return _defaults;\n }\n\n static init(els, options) {\n return super.init(this, els, options);\n }\n\n static getInstance(el) {\n let domElem = !!el.jquery ? el[0] : el;\n return domElem.M_Parallax;\n }\n\n destroy() {\n Parallax._parallaxes.splice(Parallax._parallaxes.indexOf(this), 1);\n this._img.style.transform = '';\n this._removeEventHandlers();\n (this.el as any).M_Parallax = undefined;\n }\n\n static _handleScroll() {\n for (let i = 0; i < Parallax._parallaxes.length; i++) {\n let parallaxInstance = Parallax._parallaxes[i];\n parallaxInstance._updateParallax.call(parallaxInstance);\n }\n }\n\n static _handleWindowResize() {\n for (let i = 0; i < Parallax._parallaxes.length; i++) {\n let parallaxInstance = Parallax._parallaxes[i];\n parallaxInstance._enabled =\n window.innerWidth > parallaxInstance.options.responsiveThreshold;\n }\n }\n\n _setupEventHandlers() {\n this._handleImageLoadBound = this._handleImageLoad.bind(this);\n this._img.addEventListener('load', this._handleImageLoadBound);\n if (Parallax._parallaxes.length === 0) {\n Parallax._handleScrollThrottled = M.throttle(Parallax._handleScroll, 5);\n window.addEventListener('scroll', Parallax._handleScrollThrottled);\n Parallax._handleWindowResizeThrottled = M.throttle(Parallax._handleWindowResize, 5);\n window.addEventListener('resize', Parallax._handleWindowResizeThrottled);\n }\n }\n\n _removeEventHandlers() {\n this._img.removeEventListener('load', this._handleImageLoadBound);\n if (Parallax._parallaxes.length === 0) {\n window.removeEventListener('scroll', Parallax._handleScrollThrottled);\n window.removeEventListener('resize', Parallax._handleWindowResizeThrottled);\n }\n }\n\n _setupStyles() {\n this._img.style.opacity = '1';\n }\n\n _handleImageLoad() {\n this._updateParallax();\n }\n\n private _offset(el: Element) {\n const box = el.getBoundingClientRect();\n const docElem = document.documentElement;\n return {\n top: box.top + window.pageYOffset - docElem.clientTop,\n left: box.left + window.pageXOffset - docElem.clientLeft\n };\n }\n\n _updateParallax() {\n const containerHeight = this.el.getBoundingClientRect().height > 0 ? (this.el.parentNode as any).offsetHeight : 500;\n const imgHeight = this._img.offsetHeight;\n const parallaxDist = imgHeight - containerHeight;\n const bottom = this._offset(this.el).top + containerHeight;\n const top = this._offset(this.el).top;\n const scrollTop = M.getDocumentScrollTop();\n const windowHeight = window.innerHeight;\n const windowBottom = scrollTop + windowHeight;\n const percentScrolled = (windowBottom - top) / (containerHeight + windowHeight);\n const parallax = parallaxDist * percentScrolled;\n \n if (!this._enabled) {\n this._img.style.transform = '';\n }\n else if (bottom > scrollTop && top < scrollTop + windowHeight) {\n this._img.style.transform = `translate3D(-50%, ${parallax}px, 0)`;\n }\n }\n\n static {\n Parallax._parallaxes = [];\n }\n }\n\n \n\n","import { Component } from \"./component\";\nimport { M } from \"./global\";\n\n let _defaults = {\n top: 0,\n bottom: Infinity,\n offset: 0,\n onPositionChange: null\n };\n\n export class Pushpin extends Component {\n static _pushpins: any[];\n originalOffset: any;\n\n constructor(el, options) {\n super(Pushpin, el, options);\n (this.el as any).M_Pushpin = this;\n this.options = {...Pushpin.defaults, ...options};\n this.originalOffset = (this.el as HTMLElement).offsetTop;\n Pushpin._pushpins.push(this);\n this._setupEventHandlers();\n this._updatePosition();\n }\n\n static get defaults() {\n return _defaults;\n }\n\n static init(els, options) {\n return super.init(this, els, options);\n }\n\n static getInstance(el) {\n let domElem = !!el.jquery ? el[0] : el;\n return domElem.M_Pushpin;\n }\n\n destroy() {\n (this.el as HTMLElement).style.top = null;\n this._removePinClasses();\n // Remove pushpin Inst\n let index = Pushpin._pushpins.indexOf(this);\n Pushpin._pushpins.splice(index, 1);\n if (Pushpin._pushpins.length === 0) {\n this._removeEventHandlers();\n }\n (this.el as any).M_Pushpin = undefined;\n }\n\n static _updateElements() {\n for (let elIndex in Pushpin._pushpins) {\n let pInstance = Pushpin._pushpins[elIndex];\n pInstance._updatePosition();\n }\n }\n\n _setupEventHandlers() {\n document.addEventListener('scroll', Pushpin._updateElements);\n }\n\n _removeEventHandlers() {\n document.removeEventListener('scroll', Pushpin._updateElements);\n }\n\n _updatePosition() {\n let scrolled = M.getDocumentScrollTop() + this.options.offset;\n\n if (\n this.options.top <= scrolled &&\n this.options.bottom >= scrolled &&\n !this.el.classList.contains('pinned')\n ) {\n this._removePinClasses();\n (this.el as HTMLElement).style.top = `${this.options.offset}px`;\n this.el.classList.add('pinned');\n\n // onPositionChange callback\n if (typeof this.options.onPositionChange === 'function') {\n this.options.onPositionChange.call(this, 'pinned');\n }\n }\n\n // Add pin-top (when scrolled position is above top)\n if (scrolled < this.options.top && !this.el.classList.contains('pin-top')) {\n this._removePinClasses();\n (this.el as HTMLElement).style.top = '0';\n this.el.classList.add('pin-top');\n\n // onPositionChange callback\n if (typeof this.options.onPositionChange === 'function') {\n this.options.onPositionChange.call(this, 'pin-top');\n }\n }\n\n // Add pin-bottom (when scrolled position is below bottom)\n if (scrolled > this.options.bottom && !this.el.classList.contains('pin-bottom')) {\n this._removePinClasses();\n this.el.classList.add('pin-bottom');\n (this.el as HTMLElement).style.top = `${this.options.bottom - this.originalOffset}px`;\n\n // onPositionChange callback\n if (typeof this.options.onPositionChange === 'function') {\n this.options.onPositionChange.call(this, 'pin-bottom');\n }\n }\n }\n\n _removePinClasses() {\n // IE 11 bug (can't remove multiple classes in one line)\n this.el.classList.remove('pin-top');\n this.el.classList.remove('pinned');\n this.el.classList.remove('pin-bottom');\n }\n\n static {\n Pushpin._pushpins = [];\n }\n } \n\n ","import { Component } from \"./component\";\nimport anim from \"animejs\";\n\nconst _defaults = {};\n\n// TODO: !!!!!\n\n export class Range extends Component {\n el: HTMLInputElement;\n private _mousedown: boolean;\n private _handleRangeChangeBound: any;\n private _handleRangeMousedownTouchstartBound: any;\n private _handleRangeInputMousemoveTouchmoveBound: any;\n private _handleRangeMouseupTouchendBound: any;\n private _handleRangeBlurMouseoutTouchleaveBound: any;\n value: HTMLElement;\n thumb: HTMLElement;\n\n constructor(el, options) {\n super(Range, el, options);\n (this.el as any).M_Range = this;\n this.options = {...Range.defaults, ...options};\n this._mousedown = false;\n this._setupThumb();\n this._setupEventHandlers();\n }\n\n static get defaults() {\n return _defaults;\n }\n\n static init(els, options) {\n return super.init(this, els, options);\n }\n\n static getInstance(el) {\n const domElem = !!el.jquery ? el[0] : el;\n return domElem.M_Range;\n }\n\n destroy() {\n this._removeEventHandlers();\n this._removeThumb();\n (this.el as any).M_Range = undefined;\n }\n\n _setupEventHandlers() {\n this._handleRangeChangeBound = this._handleRangeChange.bind(this);\n this._handleRangeMousedownTouchstartBound = this._handleRangeMousedownTouchstart.bind(this);\n this._handleRangeInputMousemoveTouchmoveBound = this._handleRangeInputMousemoveTouchmove.bind(this);\n this._handleRangeMouseupTouchendBound = this._handleRangeMouseupTouchend.bind(this);\n this._handleRangeBlurMouseoutTouchleaveBound = this._handleRangeBlurMouseoutTouchleave.bind(this);\n this.el.addEventListener('change', this._handleRangeChangeBound);\n this.el.addEventListener('mousedown', this._handleRangeMousedownTouchstartBound);\n this.el.addEventListener('touchstart', this._handleRangeMousedownTouchstartBound);\n this.el.addEventListener('input', this._handleRangeInputMousemoveTouchmoveBound);\n this.el.addEventListener('mousemove', this._handleRangeInputMousemoveTouchmoveBound);\n this.el.addEventListener('touchmove', this._handleRangeInputMousemoveTouchmoveBound);\n this.el.addEventListener('mouseup', this._handleRangeMouseupTouchendBound);\n this.el.addEventListener('touchend', this._handleRangeMouseupTouchendBound);\n this.el.addEventListener('blur', this._handleRangeBlurMouseoutTouchleaveBound);\n this.el.addEventListener('mouseout', this._handleRangeBlurMouseoutTouchleaveBound);\n this.el.addEventListener('touchleave', this._handleRangeBlurMouseoutTouchleaveBound);\n }\n\n _removeEventHandlers() {\n this.el.removeEventListener('change', this._handleRangeChangeBound);\n this.el.removeEventListener('mousedown', this._handleRangeMousedownTouchstartBound);\n this.el.removeEventListener('touchstart', this._handleRangeMousedownTouchstartBound);\n this.el.removeEventListener('input', this._handleRangeInputMousemoveTouchmoveBound);\n this.el.removeEventListener('mousemove', this._handleRangeInputMousemoveTouchmoveBound);\n this.el.removeEventListener('touchmove', this._handleRangeInputMousemoveTouchmoveBound);\n this.el.removeEventListener('mouseup', this._handleRangeMouseupTouchendBound);\n this.el.removeEventListener('touchend', this._handleRangeMouseupTouchendBound);\n this.el.removeEventListener('blur', this._handleRangeBlurMouseoutTouchleaveBound);\n this.el.removeEventListener('mouseout', this._handleRangeBlurMouseoutTouchleaveBound);\n this.el.removeEventListener('touchleave', this._handleRangeBlurMouseoutTouchleaveBound);\n }\n\n _handleRangeChange() {\n this.value.innerHTML = this.el.value;\n if (!this.thumb.classList.contains('active')) {\n this._showRangeBubble();\n }\n const offsetLeft = this._calcRangeOffset();\n this.thumb.classList.add('active');\n this.thumb.style.left = offsetLeft+'px';\n }\n\n _handleRangeMousedownTouchstart(e) {\n // Set indicator value\n this.value.innerHTML = this.el.value;\n this._mousedown = true;\n this.el.classList.add('active');\n if (!this.thumb.classList.contains('active')) {\n this._showRangeBubble();\n }\n if (e.type !== 'input') {\n const offsetLeft = this._calcRangeOffset();\n this.thumb.classList.add('active');\n this.thumb.style.left = offsetLeft+'px';\n }\n }\n\n _handleRangeInputMousemoveTouchmove() {\n if (this._mousedown) {\n if (!this.thumb.classList.contains('active')) {\n this._showRangeBubble();\n }\n const offsetLeft = this._calcRangeOffset();\n this.thumb.classList.add('active');\n this.thumb.style.left = offsetLeft+'px';\n this.value.innerHTML = this.el.value;\n }\n }\n\n _handleRangeMouseupTouchend() {\n this._mousedown = false;\n this.el.classList.remove('active');\n }\n\n _handleRangeBlurMouseoutTouchleave() {\n if (!this._mousedown) {\n const paddingLeft = parseInt(getComputedStyle(this.el).paddingLeft);\n const marginLeft = 7 + paddingLeft + 'px';\n if (this.thumb.classList.contains('active')) {\n anim.remove(this.thumb);\n anim({\n targets: this.thumb,\n height: 0,\n width: 0,\n top: 10,\n easing: 'easeOutQuad',\n marginLeft: marginLeft,\n duration: 100\n });\n }\n this.thumb.classList.remove('active');\n }\n }\n\n _setupThumb() {\n this.thumb = document.createElement('span');\n this.value = document.createElement('span');\n this.thumb.classList.add('thumb');\n this.value.classList.add('value');\n this.thumb.append(this.value);\n this.el.after(this.thumb);\n }\n\n _removeThumb() {\n this.thumb.remove();\n }\n\n _showRangeBubble() {\n const paddingLeft = parseInt(getComputedStyle(this.thumb.parentElement).paddingLeft);\n const marginLeft = -7 + paddingLeft + 'px'; // TODO: fix magic number?\n anim.remove(this.thumb);\n anim({\n targets: this.thumb,\n height: 30,\n width: 30,\n top: -30,\n marginLeft: marginLeft,\n duration: 300,\n easing: 'easeOutQuint'\n });\n }\n\n _calcRangeOffset(): number {\n const width = this.el.getBoundingClientRect().width - 15;\n const max = parseFloat(this.el.getAttribute('max')) || 100; // Range default max\n const min = parseFloat(this.el.getAttribute('min')) || 0; // Range default min \n const percent = (parseFloat(this.el.value) - min) / (max - min);\n return percent * width;\n }\n\n static Init(){\n Range.init(document.querySelectorAll('input[type=range]'), {});\n }\n }\n\n","import { Component } from \"./component\";\nimport { M } from \"./global\";\nimport anim from \"animejs\";\n\nlet _defaults = {\n throttle: 100,\n scrollOffset: 200, // offset - 200 allows elements near bottom of page to scroll\n activeClass: 'active',\n getActiveElement: (id: string): string => { return 'a[href=\"#'+id+'\"]'; }\n};\n\n export class ScrollSpy extends Component {\n el: HTMLElement;\n static _elements: ScrollSpy[];\n static _count: number;\n static _increment: number;\n tickId: number;\n id: any;\n static _elementsInView: ScrollSpy[];\n static _visibleElements: any[];\n private _handleThrottledResizeBound: any;\n private _handleWindowScrollBound: any;\n static _ticks: number;\n\n constructor(el, options) {\n super(ScrollSpy, el, options);\n (this.el as any).M_ScrollSpy = this;\n this.options = {...ScrollSpy.defaults, ...options};\n ScrollSpy._elements.push(this);\n ScrollSpy._count++;\n ScrollSpy._increment++;\n this.tickId = -1;\n this.id = ScrollSpy._increment;\n this._setupEventHandlers();\n this._handleWindowScroll();\n }\n\n static get defaults() {\n return _defaults;\n }\n\n static init(els, options) {\n return super.init(this, els, options);\n }\n\n static getInstance(el) {\n let domElem = !!el.jquery ? el[0] : el;\n return domElem.M_ScrollSpy;\n }\n\n destroy() {\n ScrollSpy._elements.splice(ScrollSpy._elements.indexOf(this), 1);\n ScrollSpy._elementsInView.splice(ScrollSpy._elementsInView.indexOf(this), 1);\n ScrollSpy._visibleElements.splice(ScrollSpy._visibleElements.indexOf(this.el), 1);\n ScrollSpy._count--;\n this._removeEventHandlers();\n const actElem = document.querySelector(this.options.getActiveElement(this.el.id));\n actElem.classList.remove(this.options.activeClass);\n (this.el as any).M_ScrollSpy = undefined;\n }\n\n _setupEventHandlers() {\n let throttledResize = M.throttle(this._handleWindowScroll, 200);\n this._handleThrottledResizeBound = throttledResize.bind(this);\n this._handleWindowScrollBound = this._handleWindowScroll.bind(this);\n if (ScrollSpy._count === 1) {\n window.addEventListener('scroll', this._handleWindowScrollBound);\n window.addEventListener('resize', this._handleThrottledResizeBound);\n document.body.addEventListener('click', this._handleTriggerClick);\n }\n }\n\n _removeEventHandlers() {\n if (ScrollSpy._count === 0) {\n window.removeEventListener('scroll', this._handleWindowScrollBound);\n window.removeEventListener('resize', this._handleThrottledResizeBound);\n document.body.removeEventListener('click', this._handleTriggerClick);\n }\n }\n\n _handleTriggerClick(e) {\n const trigger = e.target;\n for (let i = ScrollSpy._elements.length - 1; i >= 0; i--) {\n const scrollspy = ScrollSpy._elements[i];\n\n const x = document.querySelector('a[href=\"#'+scrollspy.el.id+'\"]');\n if (trigger === x) {\n e.preventDefault();\n const offset = ScrollSpy._offset(scrollspy.el).top + 1;\n\n anim({\n targets: [document.documentElement, document.body],\n scrollTop: offset - scrollspy.options.scrollOffset,\n duration: 400,\n easing: 'easeOutCubic'\n });\n\n break;\n }\n }\n }\n\n _handleWindowScroll() {\n // unique tick id\n ScrollSpy._ticks++;\n\n // viewport rectangle\n let top = M.getDocumentScrollTop(),\n left = M.getDocumentScrollLeft(),\n right = left + window.innerWidth,\n bottom = top + window.innerHeight;\n\n // determine which elements are in view\n let intersections = ScrollSpy._findElements(top, right, bottom, left);\n for (let i = 0; i < intersections.length; i++) {\n let scrollspy = intersections[i];\n let lastTick = scrollspy.tickId;\n if (lastTick < 0) {\n // entered into view\n scrollspy._enter();\n }\n\n // update tick id\n scrollspy.tickId = ScrollSpy._ticks;\n }\n\n for (let i = 0; i < ScrollSpy._elementsInView.length; i++) {\n let scrollspy = ScrollSpy._elementsInView[i];\n let lastTick = scrollspy.tickId;\n if (lastTick >= 0 && lastTick !== ScrollSpy._ticks) {\n // exited from view\n scrollspy._exit();\n scrollspy.tickId = -1;\n }\n }\n // remember elements in view for next tick\n ScrollSpy._elementsInView = intersections;\n }\n\n static _offset(el) {\n const box = el.getBoundingClientRect();\n const docElem = document.documentElement;\n return {\n top: box.top + window.pageYOffset - docElem.clientTop,\n left: box.left + window.pageXOffset - docElem.clientLeft\n };\n }\n\n static _findElements(top: number, right: number, bottom: number, left: number): ScrollSpy[] {\n let hits = [];\n for (let i = 0; i < ScrollSpy._elements.length; i++) {\n let scrollspy = ScrollSpy._elements[i];\n let currTop = top + scrollspy.options.scrollOffset || 200;\n\n if (scrollspy.el.getBoundingClientRect().height > 0) {\n let elTop = ScrollSpy._offset(scrollspy.el).top,\n elLeft = ScrollSpy._offset(scrollspy.el).left,\n elRight = elLeft + scrollspy.el.getBoundingClientRect().width,\n elBottom = elTop + scrollspy.el.getBoundingClientRect().height;\n\n let isIntersect = !(\n elLeft > right ||\n elRight < left ||\n elTop > bottom ||\n elBottom < currTop\n );\n\n if (isIntersect) {\n hits.push(scrollspy);\n }\n }\n }\n return hits;\n }\n\n _enter() {\n ScrollSpy._visibleElements = ScrollSpy._visibleElements.filter(value => value.getBoundingClientRect().height !== 0);\n\n if (ScrollSpy._visibleElements[0]) {\n const actElem = document.querySelector(this.options.getActiveElement(ScrollSpy._visibleElements[0].id));\n actElem?.classList.remove(this.options.activeClass);\n\n if (ScrollSpy._visibleElements[0].M_ScrollSpy && this.id < ScrollSpy._visibleElements[0].M_ScrollSpy.id) {\n ScrollSpy._visibleElements.unshift(this.el);\n }\n else {\n ScrollSpy._visibleElements.push(this.el);\n }\n }\n else {\n ScrollSpy._visibleElements.push(this.el);\n }\n const selector = this.options.getActiveElement(ScrollSpy._visibleElements[0].id);\n document.querySelector(selector)?.classList.add(this.options.activeClass);\n }\n\n _exit() {\n ScrollSpy._visibleElements = ScrollSpy._visibleElements.filter(value => value.getBoundingClientRect().height !== 0);\n\n if (ScrollSpy._visibleElements[0]) {\n const actElem = document.querySelector(this.options.getActiveElement(ScrollSpy._visibleElements[0].id));\n actElem?.classList.remove(this.options.activeClass);\n\n ScrollSpy._visibleElements = ScrollSpy._visibleElements.filter((x) => x.id != this.el.id);\n\n if (ScrollSpy._visibleElements[0]) {\n // Check if empty\n const selector = this.options.getActiveElement(ScrollSpy._visibleElements[0].id); \n document.querySelector(selector)?.classList.add(this.options.activeClass);\n }\n }\n }\n\n static {\n ScrollSpy._elements = [];\n ScrollSpy._elementsInView = [];\n ScrollSpy._visibleElements = []; // Array.<cash>\n ScrollSpy._count = 0;\n ScrollSpy._increment = 0;\n ScrollSpy._ticks = 0;\n }\n }\n ","import { Component } from \"./component\";\nimport { Dropdown } from \"./dropdown\";\nimport { M } from \"./global\";\n\nlet _defaults = {\n classes: '',\n dropdownOptions: {}\n};\n\ntype ValueStruct = {\n el: any,\n optionEl: HTMLOptionElement,\n}\n\n export class FormSelect extends Component {\n el: HTMLSelectElement;\n isMultiple: boolean;\n private _values: ValueStruct[];\n labelEl: HTMLLabelElement;\n //private _labelFor: boolean;\n dropdownOptions: HTMLUListElement;\n input: HTMLInputElement;\n dropdown: Dropdown;\n wrapper: HTMLDivElement;\n selectOptions: HTMLElement[];\n private _handleSelectChangeBound: any;\n private _handleOptionClickBound: any;\n private _handleInputClickBound: any;\n\n constructor(el, options) {\n super(FormSelect, el, options);\n if (this.el.classList.contains('browser-default')) return;\n (this.el as any).M_FormSelect = this;\n this.options = {...FormSelect.defaults, ...options};\n this.isMultiple = this.el.multiple;\n this.el.tabIndex = -1;\n this._values = [];\n //this.labelEl = null;\n //this._labelFor = false;\n this._setupDropdown();\n this._setupEventHandlers();\n }\n\n static get defaults() {\n return _defaults;\n }\n\n static init(els, options) {\n return super.init(this, els, options);\n }\n\n static getInstance(el) {\n let domElem = !!el.jquery ? el[0] : el;\n return domElem.M_FormSelect;\n }\n\n destroy() {\n // Returns label to its original owner\n //if (this._labelFor) this.labelEl.setAttribute(\"for\", this.el.id);\n this._removeEventHandlers();\n this._removeDropdown();\n (this.el as any).M_FormSelect = undefined;\n }\n\n _setupEventHandlers() {\n this._handleSelectChangeBound = this._handleSelectChange.bind(this);\n this._handleOptionClickBound = this._handleOptionClick.bind(this);\n this._handleInputClickBound = this._handleInputClick.bind(this);\n this.dropdownOptions.querySelectorAll('li:not(.optgroup)').forEach((el) => {\n el.addEventListener('click', this._handleOptionClickBound);\n el.addEventListener('keydown', (e: KeyboardEvent) => {\n if (e.key === \" \" || e.key === \"Enter\") this._handleOptionClickBound(e);\n });\n });\n this.el.addEventListener('change', this._handleSelectChangeBound);\n this.input.addEventListener('click', this._handleInputClickBound);\n }\n\n _removeEventHandlers() {\n this.dropdownOptions.querySelectorAll('li:not(.optgroup)').forEach((el) => {\n el.removeEventListener('click', this._handleOptionClickBound);\n });\n this.el.removeEventListener('change', this._handleSelectChangeBound);\n this.input.removeEventListener('click', this._handleInputClickBound);\n }\n\n _handleSelectChange(e) {\n this._setValueToInput();\n }\n\n _handleOptionClick(e) {\n e.preventDefault();\n const virtualOption = e.target.closest('li');\n this._selectOptionElement(virtualOption);\n e.stopPropagation();\n }\n\n _arraysEqual(a, b) {\n if (a === b) return true;\n if (a == null || b == null) return false;\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; ++i) if (a[i] !== b[i]) return false;\n return true;\n }\n\n _selectOptionElement(virtualOption: HTMLElement) {\n if (!virtualOption.classList.contains('disabled') && !virtualOption.classList.contains('optgroup')) {\n const value = this._values.find((value) => value.optionEl === virtualOption);\n const previousSelectedValues = this.getSelectedValues();\n if (this.isMultiple) {\n // Multi-Select\n this._toggleEntryFromArray(value);\n }\n else {\n // Single-Select\n this._deselectAll();\n this._selectValue(value);\n }\n // Refresh Input-Text\n this._setValueToInput();\n // Trigger Change-Event only when data is different\n const actualSelectedValues = this.getSelectedValues();\n const selectionHasChanged = !this._arraysEqual(\n previousSelectedValues,\n actualSelectedValues\n );\n if (selectionHasChanged) this.el.dispatchEvent(new Event('change')); // trigger('change');\n }\n if (!this.isMultiple) this.dropdown.close();\n }\n\n _handleInputClick() {\n if (this.dropdown && this.dropdown.isOpen) { \n this._setValueToInput();\n this._setSelectedStates();\n }\n }\n\n _setupDropdown() {\n // Get Label\n this.labelEl = this.el.parentElement.querySelector('label');\n\n // Create Wrapper\n this.wrapper = document.createElement('div');\n this.wrapper.classList.add('select-wrapper', 'input-field');\n if (this.options.classes.length > 0) {\n this.wrapper.classList.add(this.options.classes.split(' '));\n }\n this.el.before(this.wrapper);\n\n // Move actual select element into overflow hidden wrapper\n const hideSelect = document.createElement('div');\n hideSelect.classList.add('hide-select');\n this.wrapper.append(hideSelect);\n hideSelect.appendChild(this.el);\n\n if (this.el.disabled) this.wrapper.classList.add('disabled');\n\n this.selectOptions = <HTMLElement[]>Array.from(this.el.children).filter(el => ['OPTION','OPTGROUP'].includes(el.tagName));\n \n // Create dropdown\n this.dropdownOptions = document.createElement('ul');\n this.dropdownOptions.id = `select-options-${M.guid()}`;\n this.dropdownOptions.classList.add('dropdown-content', 'select-dropdown');\n this.dropdownOptions.setAttribute('role', 'listbox');\n this.dropdownOptions.ariaMultiSelectable = this.isMultiple.toString();\n if (this.isMultiple) this.dropdownOptions.classList.add('multiple-select-dropdown');\n\n // Create dropdown structure\n if (this.selectOptions.length > 0) {\n this.selectOptions.forEach((realOption) => {\n if (realOption.tagName === 'OPTION') {\n // Option\n const virtualOption = this._createAndAppendOptionWithIcon(realOption, this.isMultiple ? 'multiple' : undefined);\n this._addOptionToValues(realOption, virtualOption);\n }\n else if (realOption.tagName === 'OPTGROUP') {\n // Optgroup \n const groupId = \"opt-group-\"+M.guid(); \n const groupParent = document.createElement('li');\n groupParent.classList.add('optgroup');\n groupParent.tabIndex = -1;\n groupParent.setAttribute('role', 'group');\n groupParent.setAttribute('aria-labelledby', groupId);\n groupParent.innerHTML = `<span id=\"${groupId}\" role=\"presentation\">${realOption.getAttribute('label')}</span>`;\n this.dropdownOptions.append(groupParent);\n \n const groupChildren = [];\n const selectOptions = <HTMLOptionElement[]>Array.from(realOption.children).filter(el => el.tagName === 'OPTION');\n selectOptions.forEach(realOption => {\n const virtualOption = this._createAndAppendOptionWithIcon(realOption, 'optgroup-option');\n const childId = \"opt-child-\"+M.guid();\n virtualOption.id = childId;\n groupChildren.push(childId);\n this._addOptionToValues(realOption, virtualOption);\n });\n groupParent.setAttribute(\"aria-owns\", groupChildren.join(\" \"));\n }\n });\n }\n this.wrapper.append(this.dropdownOptions);\n\n // Add input dropdown\n this.input = document.createElement('input');\n this.input.id = \"m_select-input-\" + M.guid();\n this.input.classList.add('select-dropdown', 'dropdown-trigger');\n this.input.type = 'text';\n this.input.readOnly = true;\n this.input.setAttribute('data-target', this.dropdownOptions.id);\n this.input.ariaReadOnly = 'true';\n this.input.ariaRequired = this.el.hasAttribute(\"required\").toString(); //setAttribute(\"aria-required\", this.el.hasAttribute(\"required\"));\n if (this.el.disabled) this.input.disabled = true; // 'true');\n\n // Place Label after input\n if (this.labelEl) {\n this.input.after(this.labelEl); \n this.labelEl.setAttribute('for', this.input.id);\n this.labelEl.id = \"m_select-label-\" + M.guid(); \n this.dropdownOptions.setAttribute(\"aria-labelledby\", this.labelEl.id);\n }\n\n // Makes new element to assume HTML's select label and aria-attributes, if exists\n /*\n if (this.el.hasAttribute(\"aria-labelledby\")){\n console.log(1);\n this.labelEl = <HTMLLabelElement>document.getElementById(this.el.getAttribute(\"aria-labelledby\"));\n }\n else if (this.el.id != \"\"){\n console.log(2);\n const label = document.createElement('label');\n label.setAttribute('for', this.el.id);\n if (label){\n this.labelEl = label;\n this.labelEl.removeAttribute(\"for\");\n this._labelFor = true;\n }\n }\n */\n // Tries to find a valid label in parent element\n // if (!this.labelEl) {\n // this.labelEl = this.el.parentElement.querySelector('label');\n // }\n // if (this.labelEl && this.labelEl.id == \"\") {\n // this.labelEl.id = \"m_select-label-\" + M.guid();\n // }\n // if (this.labelEl) {\n // this.labelEl.setAttribute(\"for\", this.input.id);\n // this.dropdownOptions.setAttribute(\"aria-labelledby\", this.labelEl.id);\n // }\n // else\n // this.dropdownOptions.ariaLabel = '';\n\n const attrs = this.el.attributes;\n for (let i = 0; i < attrs.length; ++i){\n const attr = attrs[i];\n if (attr.name.startsWith(\"aria-\"))\n this.input.setAttribute(attr.name, attr.value);\n }\n\n // Adds aria-attributes to input element\n this.input.setAttribute('role', 'combobox');\n this.input.ariaExpanded = 'false';\n this.input.setAttribute(\"aria-owns\", this.dropdownOptions.id);\n this.input.setAttribute(\"aria-controls\", this.dropdownOptions.id);\n this.input.placeholder = \" \";\n\n this.wrapper.prepend(this.input);\n this._setValueToInput();\n\n // Add caret\n const dropdownIcon = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); //document.createElement('svg')\n dropdownIcon.classList.add('caret');\n dropdownIcon.setAttribute('height', '24');\n dropdownIcon.setAttribute('width', '24');\n dropdownIcon.setAttribute('viewBox', '0 0 24 24');\n dropdownIcon.ariaHidden = 'true';\n dropdownIcon.innerHTML = `<path d=\"M7 10l5 5 5-5z\"/><path d=\"M0 0h24v24H0z\" fill=\"none\"/>`;\n this.wrapper.prepend(dropdownIcon);\n\n // Initialize dropdown\n if (!this.el.disabled) {\n const dropdownOptions = {...this.options.dropdownOptions}; // TODO:\n dropdownOptions.coverTrigger = false;\n const userOnOpenEnd = dropdownOptions.onOpenEnd;\n const userOnCloseEnd = dropdownOptions.onCloseEnd;\n // Add callback for centering selected option when dropdown content is scrollable\n dropdownOptions.onOpenEnd = (el) => {\n const selectedOption = this.dropdownOptions.querySelector('.selected');\n if (selectedOption) {\n // Focus selected option in dropdown\n M.keyDown = true;\n this.dropdown.focusedIndex = [...selectedOption.parentNode.children].indexOf(selectedOption);\n this.dropdown._focusFocusedItem();\n M.keyDown = false;\n // Handle scrolling to selected option\n if (this.dropdown.isScrollable) {\n let scrollOffset =\n selectedOption.getBoundingClientRect().top -\n (this.dropdownOptions as HTMLElement).getBoundingClientRect().top; // scroll to selected option\n scrollOffset -= this.dropdownOptions.clientHeight / 2; // center in dropdown\n this.dropdownOptions.scrollTop = scrollOffset;\n }\n }\n this.input.ariaExpanded = 'true';\n // Handle user declared onOpenEnd if needed\n if (userOnOpenEnd && typeof userOnOpenEnd === 'function')\n userOnOpenEnd.call(this.dropdown, this.el);\n };\n // Add callback for reseting \"expanded\" state\n dropdownOptions.onCloseEnd = (el) => {\n this.input.ariaExpanded = 'false';\n // Handle user declared onOpenEnd if needed\n if (userOnCloseEnd && typeof userOnCloseEnd === 'function')\n userOnCloseEnd.call(this.dropdown, this.el);\n };\n // Prevent dropdown from closing too early\n dropdownOptions.closeOnClick = false;\n this.dropdown = M.Dropdown.init(this.input, dropdownOptions);\n }\n // Add initial selections\n this._setSelectedStates();\n\n // ! Workaround for Label: move label up again\n if (this.labelEl) this.input.after(this.labelEl);\n }\n\n _addOptionToValues(realOption, virtualOption) {\n this._values.push({ el: realOption, optionEl: virtualOption });\n }\n\n _removeDropdown() {\n this.wrapper.querySelector('.caret').remove();\n this.input.remove();\n this.dropdownOptions.remove();\n this.wrapper.before(this.el);\n this.wrapper.remove();\n }\n\n _createAndAppendOptionWithIcon(realOption, type: string) {\n const li = document.createElement('li');\n li.setAttribute('role', 'option');\n if (realOption.disabled){\n li.classList.add('disabled');\n li.ariaDisabled = 'true';\n }\n if (type === 'optgroup-option') li.classList.add(type);\n // Text / Checkbox\n const span = document.createElement('span');\n if (this.isMultiple)\n span.innerHTML = `<label><input type=\"checkbox\"${\n realOption.disabled ? ' disabled=\"disabled\"' : ''\n }><span>${realOption.innerHTML}</span></label>`;\n else\n span.innerHTML = realOption.innerHTML;\n li.appendChild(span);\n // add Icon\n const iconUrl = realOption.getAttribute('data-icon');\n const classes = realOption.getAttribute('class')?.split();\n if (iconUrl) {\n const img = document.createElement('img');\n if (classes) img.classList.add(classes);\n img.src = iconUrl;\n img.ariaHidden = 'true';\n li.prepend(img);\n }\n // Check for multiple type\n this.dropdownOptions.append(li);\n return li;\n }\n\n _selectValue(value) {\n value.el.selected = true;\n value.optionEl.classList.add('selected');\n value.optionEl.ariaSelected = 'true'; // setAttribute(\"aria-selected\", true);\n const checkbox = value.optionEl.querySelector('input[type=\"checkbox\"]');\n if (checkbox) checkbox.checked = true;\n }\n\n _deselectValue(value) {\n value.el.selected = false;\n value.optionEl.classList.remove('selected');\n value.optionEl.ariaSelected = 'false'; //setAttribute(\"aria-selected\", false);\n const checkbox = value.optionEl.querySelector('input[type=\"checkbox\"]');\n if (checkbox) checkbox.checked = false;\n }\n\n _deselectAll() {\n this._values.forEach(value => this._deselectValue(value));\n }\n\n _isValueSelected(value) {\n const realValues = this.getSelectedValues();\n return realValues.some((realValue) => realValue === value.el.value);\n }\n\n _toggleEntryFromArray(value) {\n if (this._isValueSelected(value))\n this._deselectValue(value);\n else\n this._selectValue(value);\n }\n\n _getSelectedOptions() {\n // remove null, false, ... values\n return Array.prototype.filter.call(this.el.selectedOptions, (realOption) => realOption);\n }\n\n _setValueToInput() {\n const realOptions = this._getSelectedOptions();\n const values = this._values.filter((value) => realOptions.indexOf(value.el) >= 0);\n const texts = values.map((value) => value.optionEl.querySelector('span').innerText.trim());\n // Set input-text to first Option with empty value which indicates a description like \"choose your option\"\n if (texts.length === 0) {\n const firstDisabledOption = <HTMLOptionElement>this.el.querySelector('option:disabled');\n if (firstDisabledOption && firstDisabledOption.value === '') {\n this.input.value = firstDisabledOption.innerText;\n return;\n }\n }\n this.input.value = texts.join(', ');\n }\n\n _setSelectedStates() {\n this._values.forEach((value) => {\n const optionIsSelected = value.el.selected;\n const cb = <HTMLInputElement>value.optionEl.querySelector('input[type=\"checkbox\"]');\n if (cb) cb.checked = optionIsSelected;\n if (optionIsSelected) {\n this._activateOption(this.dropdownOptions, value.optionEl);\n }\n else {\n value.optionEl.classList.remove('selected');\n value.optionEl.ariaSelected = 'false'; // attr(\"aria-selected\", 'false');\n }\n });\n }\n\n _activateOption(ul: HTMLElement, li: HTMLElement) {\n if (!li) return;\n if (!this.isMultiple) ul.querySelectorAll('li.selected').forEach(li => li.classList.remove('selected'));\n li.classList.add('selected');\n li.ariaSelected = 'true';\n }\n\n getSelectedValues() {\n return this._getSelectedOptions().map((realOption) => realOption.value);\n }\n }\n","import { Component } from \"./component\";\nimport { M } from \"./global\";\nimport anim from \"animejs\";\n\nconst _defaults = {\n edge: 'left',\n draggable: true,\n dragTargetWidth: '10px',\n inDuration: 250,\n outDuration: 200,\n onOpenStart: null,\n onOpenEnd: null,\n onCloseStart: null,\n onCloseEnd: null,\n preventScrolling: true\n};\n\n export class Sidenav extends Component {\n id: any;\n isOpen: boolean;\n isFixed: boolean;\n isDragged: boolean;\n lastWindowWidth: number;\n lastWindowHeight: number;\n static _sidenavs: any;\n private _overlay: HTMLElement;\n dragTarget: Element;\n private _closeBound: any;\n private _handleDragTargetDragBound: any;\n private _handleDragTargetReleaseBound: any;\n private _handleCloseDragBound: any;\n private _handleCloseReleaseBound: any;\n private _handleCloseTriggerClickBound: any;\n private _handleWindowResizeBound: any;\n private _startingXpos: number;\n private _xPos: number;\n private _time: number;\n private _width: number;\n private _initialScrollTop: number;\n private _verticallyScrolling: boolean;\n private deltaX: number; \n private velocityX: number;\n private percentOpen: number;\n\n constructor(el, options) {\n super(Sidenav, el, options);\n (this.el as any).M_Sidenav = this;\n this.id = this.el.id;\n this.options = {...Sidenav.defaults, ...options};\n this.isOpen = false;\n this.isFixed = this.el.classList.contains('sidenav-fixed');\n this.isDragged = false;\n // Window size variables for window resize checks\n this.lastWindowWidth = window.innerWidth;\n this.lastWindowHeight = window.innerHeight;\n this._createOverlay();\n this._createDragTarget();\n this._setupEventHandlers();\n this._setupClasses();\n this._setupFixed();\n Sidenav._sidenavs.push(this);\n }\n\n static get defaults() {\n return _defaults;\n }\n\n static init(els, options) {\n return super.init(this, els, options);\n }\n\n static getInstance(el) {\n const domElem = !!el.jquery ? el[0] : el;\n return domElem.M_Sidenav;\n }\n\n destroy() {\n this._removeEventHandlers();\n this._enableBodyScrolling();\n this._overlay.parentNode.removeChild(this._overlay);\n this.dragTarget.parentNode.removeChild(this.dragTarget);\n (this.el as any).M_Sidenav = undefined;\n (this.el as HTMLElement).style.transform = '';\n const index = Sidenav._sidenavs.indexOf(this);\n if (index >= 0) {\n Sidenav._sidenavs.splice(index, 1);\n }\n }\n\n _createOverlay() {\n this._overlay = document.createElement('div');\n this._closeBound = this.close.bind(this);\n this._overlay.classList.add('sidenav-overlay');\n this._overlay.addEventListener('click', this._closeBound);\n document.body.appendChild(this._overlay);\n }\n\n _setupEventHandlers() {\n if (Sidenav._sidenavs.length === 0) {\n document.body.addEventListener('click', this._handleTriggerClick);\n }\n this._handleDragTargetDragBound = this._handleDragTargetDrag.bind(this);\n this._handleDragTargetReleaseBound = this._handleDragTargetRelease.bind(this);\n this._handleCloseDragBound = this._handleCloseDrag.bind(this);\n this._handleCloseReleaseBound = this._handleCloseRelease.bind(this);\n this._handleCloseTriggerClickBound = this._handleCloseTriggerClick.bind(this);\n var passiveIfSupported: boolean = null;\n this.dragTarget.addEventListener('touchmove', this._handleDragTargetDragBound, passiveIfSupported);\n this.dragTarget.addEventListener('touchend', this._handleDragTargetReleaseBound);\n this._overlay.addEventListener('touchmove', this._handleCloseDragBound, passiveIfSupported);\n this._overlay.addEventListener('touchend', this._handleCloseReleaseBound);\n this.el.addEventListener('touchmove', this._handleCloseDragBound, passiveIfSupported);\n this.el.addEventListener('touchend', this._handleCloseReleaseBound);\n this.el.addEventListener('click', this._handleCloseTriggerClickBound);\n // Add resize for side nav fixed\n if (this.isFixed) {\n this._handleWindowResizeBound = this._handleWindowResize.bind(this);\n window.addEventListener('resize', this._handleWindowResizeBound);\n }\n }\n\n _removeEventHandlers() {\n if (Sidenav._sidenavs.length === 1) {\n document.body.removeEventListener('click', this._handleTriggerClick);\n }\n this.dragTarget.removeEventListener('touchmove', this._handleDragTargetDragBound);\n this.dragTarget.removeEventListener('touchend', this._handleDragTargetReleaseBound);\n this._overlay.removeEventListener('touchmove', this._handleCloseDragBound);\n this._overlay.removeEventListener('touchend', this._handleCloseReleaseBound);\n this.el.removeEventListener('touchmove', this._handleCloseDragBound);\n this.el.removeEventListener('touchend', this._handleCloseReleaseBound);\n this.el.removeEventListener('click', this._handleCloseTriggerClickBound);\n\n // Remove resize for side nav fixed\n if (this.isFixed) {\n window.removeEventListener('resize', this._handleWindowResizeBound);\n }\n }\n\n _handleTriggerClick(e) {\n const trigger = e.target.closest('.sidenav-trigger');\n if (e.target && trigger) {\n const sidenavId = M.getIdFromTrigger(trigger);\n const sidenavInstance = (document.getElementById(sidenavId) as any).M_Sidenav;\n if (sidenavInstance) {\n sidenavInstance.open(trigger);\n }\n e.preventDefault();\n }\n }\n\n // Set variables needed at the beginning of drag and stop any current transition.\n _startDrag(e) {\n const clientX = e.targetTouches[0].clientX;\n this.isDragged = true;\n this._startingXpos = clientX;\n this._xPos = this._startingXpos;\n this._time = Date.now();\n this._width = this.el.getBoundingClientRect().width;\n this._overlay.style.display = 'block';\n this._initialScrollTop = this.isOpen ? this.el.scrollTop : M.getDocumentScrollTop();\n this._verticallyScrolling = false;\n anim.remove(this.el);\n anim.remove(this._overlay);\n }\n\n //Set variables needed at each drag move update tick\n _dragMoveUpdate(e) {\n const clientX = e.targetTouches[0].clientX;\n const currentScrollTop = this.isOpen ? this.el.scrollTop : M.getDocumentScrollTop();\n this.deltaX = Math.abs(this._xPos - clientX);\n this._xPos = clientX;\n this.velocityX = this.deltaX / (Date.now() - this._time);\n this._time = Date.now();\n if (this._initialScrollTop !== currentScrollTop) {\n this._verticallyScrolling = true;\n }\n }\n\n _handleDragTargetDrag(e) {\n // Check if draggable\n if (!this.options.draggable || this._isCurrentlyFixed() || this._verticallyScrolling) {\n return;\n }\n // If not being dragged, set initial drag start variables\n if (!this.isDragged) {\n this._startDrag(e);\n }\n // Run touchmove updates\n this._dragMoveUpdate(e);\n // Calculate raw deltaX\n let totalDeltaX = this._xPos - this._startingXpos;\n // dragDirection is the attempted user drag direction\n const dragDirection = totalDeltaX > 0 ? 'right' : 'left';\n // Don't allow totalDeltaX to exceed Sidenav width or be dragged in the opposite direction\n totalDeltaX = Math.min(this._width, Math.abs(totalDeltaX));\n if (this.options.edge === dragDirection) {\n totalDeltaX = 0;\n }\n /**\n * transformX is the drag displacement\n * transformPrefix is the initial transform placement\n * Invert values if Sidenav is right edge\n */\n let transformX = totalDeltaX;\n let transformPrefix = 'translateX(-100%)';\n if (this.options.edge === 'right') {\n transformPrefix = 'translateX(100%)';\n transformX = -transformX;\n }\n // Calculate open/close percentage of sidenav, with open = 1 and close = 0\n this.percentOpen = Math.min(1, totalDeltaX / this._width);\n // Set transform and opacity styles\n (this.el as HTMLElement).style.transform = `${transformPrefix} translateX(${transformX}px)`;\n this._overlay.style.opacity = this.percentOpen.toString();\n }\n\n _handleDragTargetRelease() {\n if (this.isDragged) {\n if (this.percentOpen > 0.2) {\n this.open();\n } else {\n this._animateOut();\n }\n this.isDragged = false;\n this._verticallyScrolling = false;\n }\n }\n\n _handleCloseDrag(e) {\n if (this.isOpen) {\n // Check if draggable\n if (!this.options.draggable || this._isCurrentlyFixed() || this._verticallyScrolling) {\n return;\n }\n // If not being dragged, set initial drag start variables\n if (!this.isDragged) {\n this._startDrag(e);\n }\n // Run touchmove updates\n this._dragMoveUpdate(e);\n // Calculate raw deltaX\n let totalDeltaX = this._xPos - this._startingXpos;\n // dragDirection is the attempted user drag direction\n let dragDirection = totalDeltaX > 0 ? 'right' : 'left';\n // Don't allow totalDeltaX to exceed Sidenav width or be dragged in the opposite direction\n totalDeltaX = Math.min(this._width, Math.abs(totalDeltaX));\n if (this.options.edge !== dragDirection) {\n totalDeltaX = 0;\n }\n let transformX = -totalDeltaX;\n if (this.options.edge === 'right') {\n transformX = -transformX;\n }\n // Calculate open/close percentage of sidenav, with open = 1 and close = 0\n this.percentOpen = Math.min(1, 1 - totalDeltaX / this._width);\n // Set transform and opacity styles\n (this.el as HTMLElement).style.transform = `translateX(${transformX}px)`;\n this._overlay.style.opacity = this.percentOpen.toString();\n }\n }\n\n _handleCloseRelease() {\n if (this.isOpen && this.isDragged) {\n if (this.percentOpen > 0.8) {\n this._animateIn();\n } else {\n this.close();\n }\n this.isDragged = false;\n this._verticallyScrolling = false;\n }\n }\n\n // Handles closing of Sidenav when element with class .sidenav-close\n _handleCloseTriggerClick(e) {\n const closeTrigger = e.target.closest('.sidenav-close');\n if (closeTrigger && !this._isCurrentlyFixed()) {\n this.close();\n }\n }\n\n _handleWindowResize() {\n // Only handle horizontal resizes\n if (this.lastWindowWidth !== window.innerWidth) {\n if (window.innerWidth > 992) {\n this.open();\n } else {\n this.close();\n }\n }\n this.lastWindowWidth = window.innerWidth;\n this.lastWindowHeight = window.innerHeight;\n }\n\n _setupClasses() {\n if (this.options.edge === 'right') {\n this.el.classList.add('right-aligned');\n this.dragTarget.classList.add('right-aligned');\n }\n }\n\n _removeClasses() {\n this.el.classList.remove('right-aligned');\n this.dragTarget.classList.remove('right-aligned');\n }\n\n _setupFixed() {\n if (this._isCurrentlyFixed()) this.open();\n }\n\n _isCurrentlyFixed() {\n return this.isFixed && window.innerWidth > 992;\n }\n\n _createDragTarget() {\n const dragTarget = document.createElement('div');\n dragTarget.classList.add('drag-target');\n dragTarget.style.width = this.options.dragTargetWidth;\n document.body.appendChild(dragTarget);\n this.dragTarget = dragTarget;\n }\n\n _preventBodyScrolling() {\n document.body.style.overflow = 'hidden';\n }\n\n _enableBodyScrolling() {\n document.body.style.overflow = '';\n }\n\n open() {\n if (this.isOpen === true) return;\n this.isOpen = true;\n // Run onOpenStart callback\n if (typeof this.options.onOpenStart === 'function') {\n this.options.onOpenStart.call(this, this.el);\n }\n // Handle fixed Sidenav\n if (this._isCurrentlyFixed()) {\n anim.remove(this.el);\n anim({\n targets: this.el,\n translateX: 0,\n duration: 0,\n easing: 'easeOutQuad'\n });\n this._enableBodyScrolling();\n this._overlay.style.display = 'none';\n }\n // Handle non-fixed Sidenav\n else {\n if (this.options.preventScrolling) {\n this._preventBodyScrolling();\n }\n\n if (!this.isDragged || this.percentOpen != 1) {\n this._animateIn();\n }\n }\n }\n\n close() {\n if (this.isOpen === false) return;\n this.isOpen = false;\n // Run onCloseStart callback\n if (typeof this.options.onCloseStart === 'function') {\n this.options.onCloseStart.call(this, this.el);\n }\n // Handle fixed Sidenav\n if (this._isCurrentlyFixed()) {\n const transformX = this.options.edge === 'left' ? '-105%' : '105%';\n (this.el as HTMLElement).style.transform = `translateX(${transformX})`;\n }\n // Handle non-fixed Sidenav\n else {\n this._enableBodyScrolling();\n if (!this.isDragged || this.percentOpen != 0) {\n this._animateOut();\n } else {\n this._overlay.style.display = 'none';\n }\n }\n }\n\n _animateIn() {\n this._animateSidenavIn();\n this._animateOverlayIn();\n }\n\n _animateSidenavIn() {\n let slideOutPercent = this.options.edge === 'left' ? -1 : 1;\n if (this.isDragged) {\n slideOutPercent =\n this.options.edge === 'left'\n ? slideOutPercent + this.percentOpen\n : slideOutPercent - this.percentOpen;\n }\n anim.remove(this.el);\n anim({\n targets: this.el,\n translateX: [`${slideOutPercent * 100}%`, 0],\n duration: this.options.inDuration,\n easing: 'easeOutQuad',\n complete: () => {\n // Run onOpenEnd callback\n if (typeof this.options.onOpenEnd === 'function') {\n this.options.onOpenEnd.call(this, this.el);\n }\n }\n });\n }\n\n _animateOverlayIn() {\n let start = 0;\n if (this.isDragged) {\n start = this.percentOpen;\n }\n else {\n this._overlay.style.display = 'block';\n }\n anim.remove(this._overlay);\n anim({\n targets: this._overlay,\n opacity: [start, 1],\n duration: this.options.inDuration,\n easing: 'easeOutQuad'\n });\n }\n\n _animateOut() {\n this._animateSidenavOut();\n this._animateOverlayOut();\n }\n\n _animateSidenavOut() {\n const endPercent = this.options.edge === 'left' ? -1 : 1;\n let slideOutPercent = 0;\n if (this.isDragged) {\n slideOutPercent =\n this.options.edge === 'left'\n ? endPercent + this.percentOpen\n : endPercent - this.percentOpen;\n }\n\n anim.remove(this.el);\n anim({\n targets: this.el,\n translateX: [`${slideOutPercent * 100}%`, `${endPercent * 105}%`],\n duration: this.options.outDuration,\n easing: 'easeOutQuad',\n complete: () => {\n // Run onOpenEnd callback\n if (typeof this.options.onCloseEnd === 'function') {\n this.options.onCloseEnd.call(this, this.el);\n }\n }\n });\n }\n\n _animateOverlayOut() {\n anim.remove(this._overlay);\n anim({\n targets: this._overlay,\n opacity: 0,\n duration: this.options.outDuration,\n easing: 'easeOutQuad',\n complete: () => {\n this._overlay.style.display = 'none';\n }\n });\n }\n\n static {\n Sidenav._sidenavs = [];\n }\n }\n","import { Component } from \"./component\";\nimport { M } from \"./global\";\nimport anim from \"animejs\";\n\n let _defaults = {\n indicators: true,\n height: 400,\n duration: 500,\n interval: 6000,\n pauseOnFocus: true,\n pauseOnHover: true,\n indicatorLabelFunc: null // Function which will generate a label for the indicators (ARIA)\n };\n\n export class Slider extends Component {\n el: HTMLElement;\n _slider: HTMLUListElement;\n _slides: HTMLLIElement[];\n activeIndex: number;\n _activeSlide: HTMLLIElement;\n _indicators: HTMLLIElement[];\n private _handleIntervalBound: any;\n private _handleIndicatorClickBound: any;\n interval: string | number | NodeJS.Timeout;\n eventPause: any;\n _hovered: boolean;\n _focused: boolean;\n _focusCurrent: boolean;\n _sliderId: string;\n private _handleAutoPauseFocusBound: any;\n private _handleAutoStartFocusBound: any;\n private _handleAutoPauseHoverBound: any;\n private _handleAutoStartHoverBound: any;\n\n constructor(el, options) {\n super(Slider, el, options);\n (this.el as any).M_Slider = this;\n this.options = {...Slider.defaults, ...options};\n\n // init props\n this.interval = null;\n this.eventPause = false;\n this._hovered = false;\n this._focused = false;\n this._focusCurrent = false;\n\n // setup\n this._slider = this.el.querySelector('.slides');\n this._slides = Array.from(this._slider.querySelectorAll('li'));\n this.activeIndex = this._slides.findIndex(li => li.classList.contains('active'));\n\n if (this.activeIndex !== -1) {\n this._activeSlide = this._slides[this.activeIndex];\n }\n\n this._setSliderHeight();\n\n // Sets element id if it does not have one\n if (this._slider.hasAttribute('id'))\n this._sliderId = this._slider.getAttribute('id');\n else {\n this._sliderId = 'slider-' + M.guid();\n this._slider.setAttribute('id', this._sliderId);\n }\n\n const placeholderBase64 = 'data:image/gif;base64,R0lGODlhAQABAIABAP///wAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';\n // Set initial positions of captions\n this._slides.forEach(slide => {\n // Caption\n //const caption = <HTMLElement|null>slide.querySelector('.caption');\n //if (caption) this._animateCaptionIn(caption, 0);\n // Set Images as Background Images\n const img = slide.querySelector('img');\n if (img) {\n if (img.src !== placeholderBase64) {\n img.style.backgroundImage = 'url('+ img.src +')';\n img.src = placeholderBase64;\n }\n }\n // Sets slide as focusable by code\n if (!slide.hasAttribute('tabindex'))\n slide.setAttribute('tabindex', '-1');\n // Removes initial visibility from \"inactive\" slides\n slide.style.visibility = 'hidden';\n });\n\n this._setupIndicators();\n\n // Show active slide\n if (this._activeSlide) {\n this._activeSlide.style.display = 'block';\n this._activeSlide.style.visibility = 'visible';\n }\n else {\n this.activeIndex = 0;\n this._slides[0].classList.add('active');\n this._slides[0].style.visibility = 'visible';\n this._activeSlide = this._slides[0];\n this._animateSlide(this._slides[0], true);\n /*anim({\n targets: this._slides[0],\n opacity: 1,\n duration: this.options.duration,\n easing: 'easeOutQuad'\n });\n */\n // Update indicators\n if (this.options.indicators) {\n this._indicators[this.activeIndex].children[0].classList.add('active');\n }\n }\n\n // Adjust height to current slide\n // TODO: ??? Code does not do what it says in comment\n /*\n this._activeSlide.querySelectorAll('img').forEach(el => {\n anim({\n targets: this._activeSlide.querySelector('.caption'),\n opacity: 1,\n translateX: 0,\n translateY: 0,\n duration: this.options.duration,\n easing: 'easeOutQuad'\n });\n });\n */\n \n this._setupEventHandlers();\n // auto scroll\n this.start();\n }\n\n static get defaults() {\n return _defaults;\n }\n\n static init(els, options) {\n return super.init(this, els, options);\n }\n\n static getInstance(el) {\n let domElem = !!el.jquery ? el[0] : el;\n return domElem.M_Slider;\n }\n\n destroy() {\n this.pause();\n this._removeIndicators();\n this._removeEventHandlers();\n (this.el as any).M_Slider = undefined;\n }\n\n _setupEventHandlers() {\n this._handleIntervalBound = this._handleInterval.bind(this);\n this._handleIndicatorClickBound = this._handleIndicatorClick.bind(this);\n this._handleAutoPauseFocusBound = this._handleAutoPauseFocus.bind(this);\n this._handleAutoStartFocusBound = this._handleAutoStartFocus.bind(this);\n this._handleAutoPauseHoverBound = this._handleAutoPauseHover.bind(this);\n this._handleAutoStartHoverBound = this._handleAutoStartHover.bind(this);\n if (this.options.pauseOnFocus) {\n this.el.addEventListener('focusin', this._handleAutoPauseFocusBound);\n this.el.addEventListener('focusout', this._handleAutoStartFocusBound);\n }\n if (this.options.pauseOnHover) {\n this.el.addEventListener('mouseenter', this._handleAutoPauseHoverBound);\n this.el.addEventListener('mouseleave', this._handleAutoStartHoverBound);\n }\n if (this.options.indicators) {\n this._indicators.forEach((el) => {\n el.addEventListener('click', this._handleIndicatorClickBound);\n });\n }\n }\n\n _removeEventHandlers() {\n if (this.options.pauseOnFocus) {\n this.el.removeEventListener('focusin', this._handleAutoPauseFocusBound);\n this.el.removeEventListener('focusout', this._handleAutoStartFocusBound);\n }\n if (this.options.pauseOnHover) {\n this.el.removeEventListener('mouseenter', this._handleAutoPauseHoverBound);\n this.el.removeEventListener('mouseleave', this._handleAutoStartHoverBound);\n }\n if (this.options.indicators) {\n this._indicators.forEach((el) => {\n el.removeEventListener('click', this._handleIndicatorClickBound);\n });\n }\n }\n\n _handleIndicatorClick(e) {\n const el = (<HTMLElement>e.target).parentElement;\n const currIndex = [...el.parentNode.children].indexOf(el);\n this._focusCurrent = true;\n this.set(currIndex);\n }\n\n _handleAutoPauseHover() {\n this._hovered = true;\n if (this.interval != null) {\n this._pause(true);\n }\n }\n\n _handleAutoPauseFocus() {\n this._focused = true;\n if (this.interval != null) {\n this._pause(true);\n }\n }\n\n _handleAutoStartHover() {\n this._hovered = false;\n if (!(this.options.pauseOnFocus && this._focused) && this.eventPause) {\n this.start();\n }\n }\n\n _handleAutoStartFocus() {\n this._focused = false;\n if (!(this.options.pauseOnHover && this._hovered) && this.eventPause) {\n this.start();\n }\n }\n\n _handleInterval() {\n const activeElem = this._slider.querySelector('.active');\n let newActiveIndex = [...activeElem.parentNode.children].indexOf(activeElem);\n if (this._slides.length === newActiveIndex + 1)\n newActiveIndex = 0; // loop to start\n else\n newActiveIndex += 1;\n this.set(newActiveIndex);\n }\n\n _animateSlide(slide: HTMLElement, isDirectionIn: boolean): void {\n let dx = 0, dy = 0;\n anim({\n targets: slide,\n opacity: isDirectionIn ? [0, 1] : [1, 0],\n duration: this.options.duration,\n easing: 'easeOutQuad'\n });\n\n const caption = slide.querySelector('.caption');\n if (!caption) return;\n if (caption.classList.contains('center-align')) dy = -100;\n else if (caption.classList.contains('right-align')) dx = 100;\n else if (caption.classList.contains('left-align')) dx = -100;\n anim({\n targets: caption,\n opacity: isDirectionIn ? [0, 1] : [1, 0],\n translateX: isDirectionIn ? [dx, 0] : [0, dx],\n translateY: isDirectionIn ? [dy, 0] : [0, dy],\n duration: this.options.duration,\n delay: this.options.duration,\n easing: 'easeOutQuad'\n });\n }\n\n _setSliderHeight() {\n // If fullscreen, do nothing\n if (!this.el.classList.contains('fullscreen')) {\n if (this.options.indicators) {\n // Add height if indicators are present\n this.el.style.height = (this.options.height + 40)+'px'; //.css('height', this.options.height + 40 + 'px');\n }\n else {\n this.el.style.height = this.options.height+'px';\n }\n this._slider.style.height = this.options.height+'px';\n }\n }\n\n _setupIndicators() {\n if (this.options.indicators) {\n const ul = document.createElement('ul');\n ul.classList.add('indicators');\n\n const arrLi = [];\n this._slides.forEach((el, i) => {\n const label = this.options.indicatorLabelFunc\n ? this.options.indicatorLabelFunc.call(this, i + 1, i === 0)\n : `${i + 1}`;\n const li = document.createElement('li');\n li.classList.add('indicator-item');\n li.innerHTML = `<button type=\"button\" class=\"indicator-item-btn\" aria-label=\"${label}\" aria-controls=\"${this._sliderId}\"></button>`;\n arrLi.push(li);\n ul.append(li);\n }); \n\n this.el.append(ul);\n this._indicators = arrLi;\n }\n }\n\n _removeIndicators() {\n this.el.querySelector('ul.indicators').remove(); //find('ul.indicators').remove();\n }\n\n set(index: number) {\n // Wrap around indices.\n if (index >= this._slides.length) index = 0;\n else if (index < 0) index = this._slides.length - 1;\n\n // Only do if index changes\n if (this.activeIndex === index) return;\n\n this._activeSlide = this._slides[this.activeIndex];\n const _caption = <HTMLElement|null>this._activeSlide.querySelector('.caption');\n\n this._activeSlide.classList.remove('active');\n // Enables every slide\n this._slides.forEach(slide => slide.style.visibility = 'visible');\n\n //--- Hide active Slide + Caption\n // TODO: What does this do?\n anim({\n targets: this._activeSlide,\n opacity: 0,\n duration: this.options.duration,\n easing: 'easeOutQuad',\n complete: () => {\n this._slides.forEach(el => {\n if (el.classList.contains('active')) return; \n anim({\n targets: el,\n opacity: 0,\n translateX: 0,\n translateY: 0,\n duration: 0, // Animation with duration 0... why use anim at all then?\n easing: 'easeOutQuad'\n });\n // Disables invisible slides (for assistive technologies)\n el.style.visibility = 'hidden';\n });\n }\n });\n\n // Hide active Caption\n //this._animateCaptionIn(_caption, this.options.duration);\n _caption.style.opacity = '0';\n\n // Update indicators\n if (this.options.indicators) {\n const activeIndicator = this._indicators[this.activeIndex].children[0];\n const nextIndicator = this._indicators[index].children[0];\n activeIndicator.classList.remove('active');\n nextIndicator.classList.add('active');\n if (typeof this.options.indicatorLabelFunc === \"function\"){\n activeIndicator.ariaLabel = this.options.indicatorLabelFunc.call(this, this.activeIndex, false);\n nextIndicator.ariaLabel = this.options.indicatorLabelFunc.call(this, index, true);\n }\n }\n \n //--- Show new Slide + Caption\n this._animateSlide(this._slides[index], true);\n\n this._slides[index].classList.add('active');\n\n // TODO: Why focus? => causes uncontrollable page scroll\n /*\n if (this._focusCurrent) {\n this._slides[index].focus();\n this._focusCurrent = false;\n }\n */\n\n this.activeIndex = index;\n\n // Reset interval, if allowed. This check prevents autostart\n // when slider is paused, since it can be changed though indicators.\n if (this.interval != null) {\n this.start();\n }\n }\n\n _pause(fromEvent: boolean) {\n clearInterval(this.interval);\n this.eventPause = fromEvent;\n this.interval = null;\n }\n\n pause() {\n this._pause(false);\n }\n\n start() {\n clearInterval(this.interval);\n this.interval = setInterval(\n this._handleIntervalBound,\n this.options.duration + this.options.interval\n );\n this.eventPause = false;\n }\n\n next() {\n let newIndex = this.activeIndex + 1;\n // Wrap around indices.\n if (newIndex >= this._slides.length) newIndex = 0;\n else if (newIndex < 0) newIndex = this._slides.length - 1;\n this.set(newIndex);\n }\n\n prev() {\n let newIndex = this.activeIndex - 1;\n // Wrap around indices.\n if (newIndex >= this._slides.length) newIndex = 0;\n else if (newIndex < 0) newIndex = this._slides.length - 1;\n this.set(newIndex);\n }\n }\n \n\n \n","import { Component } from \"./component\";\nimport { Carousel } from \"./carousel\";\nimport anim from \"animejs\";\n\nlet _defaults = {\n duration: 300,\n onShow: null,\n swipeable: false,\n responsiveThreshold: Infinity, // breakpoint for swipeable\n};\n\nexport class Tabs extends Component {\n el: HTMLElement;\n _tabLinks: any;\n _index: number;\n _indicator: any;\n _handleWindowResizeBound: (this: Window, ev: UIEvent) => any;\n _handleTabClickBound: (this: Window, ev: UIEvent) => any;\n _tabWidth: number;\n _tabsWidth: number;\n _tabsCarousel: any;\n _activeTabLink: any;\n _content: any;\n\n constructor(el, options: any) {\n super(Tabs, el, options);\n (this.el as any).M_Tabs = this;\n\n this.options = {...Tabs.defaults, ...options};\n this._tabLinks = this.el.querySelectorAll('li.tab > a');\n this._index = 0;\n this._setupActiveTabLink();\n if (this.options.swipeable) {\n this._setupSwipeableTabs();\n } else {\n this._setupNormalTabs();\n }\n // Setup tabs indicator after content to ensure accurate widths\n this._setTabsAndTabWidth();\n this._createIndicator();\n this._setupEventHandlers();\n }\n\n static get defaults() {\n return _defaults;\n }\n\n static init(els, options) {\n return super.init(this, els, options);\n }\n\n static getInstance(el) {\n const domElem = !!el.jquery ? el[0] : el;\n return domElem.M_Tabs;\n }\n\n destroy() {\n this._removeEventHandlers();\n this._indicator.parentNode.removeChild(this._indicator);\n if (this.options.swipeable) {\n this._teardownSwipeableTabs();\n }\n else {\n this._teardownNormalTabs();\n }\n (this.el as any).M_Tabs = undefined;\n }\n\n _setupEventHandlers() {\n this._handleWindowResizeBound = this._handleWindowResize.bind(this);\n window.addEventListener('resize', this._handleWindowResizeBound);\n this._handleTabClickBound = this._handleTabClick.bind(this);\n this.el.addEventListener('click', this._handleTabClickBound);\n }\n\n _removeEventHandlers() {\n window.removeEventListener('resize', this._handleWindowResizeBound);\n this.el.removeEventListener('click', this._handleTabClickBound);\n }\n\n _handleWindowResize() {\n this._setTabsAndTabWidth();\n if (this._tabWidth !== 0 && this._tabsWidth !== 0) {\n this._indicator.style.left = this._calcLeftPos(this._activeTabLink)+'px';\n this._indicator.style.right = this._calcRightPos(this._activeTabLink)+'px';\n }\n }\n\n _handleTabClick(e) {\n const tabLink = e.target;\n const tab = tabLink.parentElement; \n // Handle click on tab link only\n if (!tabLink || !tab.classList.contains('tab')) return;\n // is disabled?\n if (tab.classList.contains('disabled')) {\n e.preventDefault();\n return;\n }\n // Act as regular link if target attribute is specified.\n if (tabLink.hasAttribute('target')) return;\n // Make the old tab inactive.\n this._activeTabLink.classList.remove('active');\n const _oldContent = this._content; \n // Update the variables with the new link and content\n\n this._activeTabLink = tabLink;\n if (tabLink.hash)\n this._content = document.querySelector(tabLink.hash);\n this._tabLinks = this.el.querySelectorAll('li.tab > a');\n // Make the tab active\n this._activeTabLink.classList.add('active');\n const prevIndex = this._index;\n this._index = Math.max(Array.from(this._tabLinks).indexOf(tabLink), 0);\n\n // Swap content\n if (this.options.swipeable) {\n if (this._tabsCarousel) {\n this._tabsCarousel.set(this._index, () => {\n if (typeof this.options.onShow === 'function')\n this.options.onShow.call(this, this._content);\n });\n }\n } else {\n if (this._content) {\n this._content.style.display = 'block';\n this._content.classList.add('active');\n if (typeof this.options.onShow === 'function')\n this.options.onShow.call(this, this._content);\n if (_oldContent && _oldContent !== this._content) {\n _oldContent.style.display = 'none';\n _oldContent.classList.remove('active');\n }\n }\n }\n // Update widths after content is swapped (scrollbar bugfix)\n this._setTabsAndTabWidth();\n this._animateIndicator(prevIndex);\n e.preventDefault();\n }\n\n _createIndicator() {\n const indicator = document.createElement('li');\n indicator.classList.add('indicator');\n this.el.appendChild(indicator);\n this._indicator = indicator;\n this._indicator.style.left = this._calcLeftPos(this._activeTabLink)+'px';\n this._indicator.style.right = this._calcRightPos(this._activeTabLink)+'px';\n }\n\n _setupActiveTabLink() {\n // If the location.hash matches one of the links, use that as the active tab.\n this._activeTabLink = Array.from(this._tabLinks).find((a: HTMLAnchorElement) => a.getAttribute('href') === location.hash);\n // If no match is found, use the first link or any with class 'active' as the initial active tab.\n if (!this._activeTabLink) {\n this._activeTabLink = this.el.querySelector('li.tab a.active');\n }\n if (this._activeTabLink.length === 0) {\n this._activeTabLink = this.el.querySelector('li.tab a');\n }\n Array.from(this._tabLinks).forEach((a: HTMLAnchorElement) => a.classList.remove('active'));\n this._activeTabLink.classList.add('active');\n\n this._index = Math.max(Array.from(this._tabLinks).indexOf(this._activeTabLink), 0);\n if (this._activeTabLink && this._activeTabLink.hash) {\n this._content = document.querySelector(this._activeTabLink.hash);\n this._content.classList.add('active');\n }\n }\n\n _setupSwipeableTabs() {\n // Change swipeable according to responsive threshold\n if (window.innerWidth > this.options.responsiveThreshold)\n this.options.swipeable = false;\n\n const tabsContent = [];\n this._tabLinks.forEach(a => {\n if (a.hash) {\n const currContent = document.querySelector(a.hash);\n currContent.classList.add('carousel-item');\n tabsContent.push(currContent); \n }\n });\n\n // Create Carousel-Wrapper around Tab-Contents\n const tabsWrapper = document.createElement('div'); \n tabsWrapper.classList.add('tabs-content', 'carousel', 'carousel-slider');\n\n // Wrap around\n tabsContent[0].parentElement.insertBefore(tabsWrapper, tabsContent[0]);\n tabsContent.forEach(tabContent => {\n tabsWrapper.appendChild(tabContent);\n tabContent.style.display = '';\n });\n\n // Keep active tab index to set initial carousel slide\n const tab = this._activeTabLink.parentElement;\n const activeTabIndex = Array.from(tab.parentNode.children).indexOf(tab);\n\n this._tabsCarousel = Carousel.init(tabsWrapper, {\n fullWidth: true,\n noWrap: true,\n onCycleTo: (item) => {\n const prevIndex = this._index;\n this._index = Array.from(item.parentNode.children).indexOf(item);\n this._activeTabLink.classList.remove('active');\n this._activeTabLink = Array.from(this._tabLinks)[this._index];\n this._activeTabLink.classList.add('active');\n this._animateIndicator(prevIndex);\n if (typeof this.options.onShow === 'function')\n this.options.onShow.call(this, this._content);\n }\n });\n // Set initial carousel slide to active tab\n this._tabsCarousel.set(activeTabIndex);\n }\n\n _teardownSwipeableTabs() {\n const tabsWrapper = this._tabsCarousel.el;\n this._tabsCarousel.destroy();\n // Unwrap\n tabsWrapper.after(tabsWrapper.children);\n tabsWrapper.remove();\n }\n\n _setupNormalTabs() {\n // Hide Tabs Content\n Array.from(this._tabLinks).forEach(a => {\n if (a === this._activeTabLink) return;\n if ((<HTMLAnchorElement>a).hash) {\n const currContent = document.querySelector((<HTMLAnchorElement>a).hash);\n if (currContent) (<HTMLElement>currContent).style.display = 'none';\n }\n });\n }\n\n _teardownNormalTabs() {\n // show Tabs Content\n this._tabLinks.forEach(a => {\n if (a.hash) {\n const currContent = document.querySelector(a.hash);\n if (currContent) currContent.style.display = '';\n }\n });\n }\n\n _setTabsAndTabWidth() {\n this._tabsWidth = this.el.getBoundingClientRect().width;\n this._tabWidth = Math.max(this._tabsWidth, this.el.scrollWidth) / this._tabLinks.length;\n }\n\n _calcRightPos(el) {\n return Math.ceil(this._tabsWidth - el.offsetLeft - el.getBoundingClientRect().width);\n }\n\n _calcLeftPos(el) {\n return Math.floor(el.offsetLeft);\n }\n\n updateTabIndicator() {\n this._setTabsAndTabWidth();\n this._animateIndicator(this._index);\n }\n\n _animateIndicator(prevIndex) {\n let leftDelay = 0, rightDelay = 0;\n\n if (this._index - prevIndex >= 0)\n leftDelay = 90;\n else\n rightDelay = 90;\n\n const animOptions = {\n targets: this._indicator,\n left: {\n value: this._calcLeftPos(this._activeTabLink),\n delay: leftDelay\n },\n right: {\n value: this._calcRightPos(this._activeTabLink),\n delay: rightDelay\n },\n duration: this.options.duration,\n easing: 'easeOutQuad'\n };\n anim.remove(this._indicator);\n anim(animOptions);\n }\n\n select(tabId) {\n const tab = Array.from(this._tabLinks).find((a: HTMLAnchorElement) => a.getAttribute('href') === '#'+tabId);\n if (tab) (<HTMLAnchorElement>tab).click();\n }\n }\n","import { Component } from \"./component\";\nimport { M } from \"./global\";\n\nlet _defaults = {\n onOpen: undefined,\n onClose: undefined\n};\n\n export class TapTarget extends Component {\n el: HTMLElement\n isOpen: boolean;\n private wrapper: HTMLElement;\n private _handleDocumentClickBound: (this: HTMLElement, ev: MouseEvent) => any;\n private _origin: HTMLElement;\n private _handleTargetClickBound: EventListenerOrEventListenerObject;\n private originEl: HTMLElement;\n private _handleOriginClickBound: any;\n private _handleThrottledResizeBound: any;\n private waveEl: HTMLElement & Element & Node;\n private contentEl: HTMLElement;\n\n constructor(el, options) {\n super(TapTarget, el, options);\n (this.el as any).M_TapTarget = this;\n this.options = {...TapTarget.defaults, ...options};\n this.isOpen = false;\n // setup\n this._origin = document.querySelector('#'+this.el.getAttribute('data-target'));\n this._setup();\n this._calculatePositioning();\n this._setupEventHandlers();\n }\n\n static get defaults() {\n return _defaults;\n }\n\n static init(els, options) {\n return super.init(this, els, options);\n }\n\n static getInstance(el) {\n let domElem = !!el.jquery ? el[0] : el;\n return domElem.M_TapTarget;\n }\n\n destroy() {\n this._removeEventHandlers();\n (this.el as any).TapTarget = undefined;\n }\n\n _setupEventHandlers() {\n this._handleDocumentClickBound = this._handleDocumentClick.bind(this);\n this._handleTargetClickBound = this._handleTargetClick.bind(this);\n this._handleOriginClickBound = this._handleOriginClick.bind(this);\n this.el.addEventListener('click', this._handleTargetClickBound);\n this.originEl.addEventListener('click', this._handleOriginClickBound);\n // Resize\n let throttledResize = M.throttle(this._handleResize, 200);\n this._handleThrottledResizeBound = throttledResize.bind(this);\n window.addEventListener('resize', this._handleThrottledResizeBound);\n }\n\n _removeEventHandlers() {\n this.el.removeEventListener('click', this._handleTargetClickBound);\n this.originEl.removeEventListener('click', this._handleOriginClickBound);\n window.removeEventListener('resize', this._handleThrottledResizeBound);\n }\n\n _handleTargetClick(e) {\n this.open();\n }\n\n _handleOriginClick(e) {\n this.close();\n }\n\n _handleResize(e) {\n this._calculatePositioning();\n }\n\n _handleDocumentClick(e) {\n if (!e.target.closest('.tap-target-wrapper')) {\n this.close();\n e.preventDefault();\n e.stopPropagation();\n }\n }\n\n _setup() {\n // Creating tap target\n this.wrapper = this.el.parentElement;\n this.waveEl = this.wrapper.querySelector('.tap-target-wave');\n this.originEl = this.wrapper.querySelector('.tap-target-origin');\n this.contentEl = this.el.querySelector('.tap-target-content');\n // Creating wrapper\n if (!this.wrapper.classList.contains('.tap-target-wrapper')) {\n this.wrapper = document.createElement('div');\n this.wrapper.classList.add('tap-target-wrapper');\n this.el.before(this.wrapper);\n this.wrapper.append(this.el);\n }\n // Creating content\n if (!this.contentEl) {\n this.contentEl = document.createElement('div');\n this.contentEl.classList.add('tap-target-content');\n this.el.append(this.contentEl);\n }\n // Creating foreground wave\n if (!this.waveEl) {\n this.waveEl = document.createElement('div');\n this.waveEl.classList.add('tap-target-wave');\n // Creating origin\n if (!this.originEl) {\n this.originEl = <HTMLElement>this._origin.cloneNode(true); // .clone(true, true);\n this.originEl.classList.add('tap-target-origin');\n this.originEl.removeAttribute('id');\n this.originEl.removeAttribute('style');\n this.waveEl.append(this.originEl);\n }\n this.wrapper.append(this.waveEl);\n }\n }\n\n private _offset(el) {\n const box = el.getBoundingClientRect();\n const docElem = document.documentElement;\n return {\n top: box.top + window.pageYOffset - docElem.clientTop,\n left: box.left + window.pageXOffset - docElem.clientLeft\n };\n }\n\n _calculatePositioning() {\n // Element or parent is fixed position?\n let isFixed = getComputedStyle(this._origin).position === 'fixed';\n if (!isFixed) {\n\n let currentElem: any = this._origin;\n const parents = [];\n while ((currentElem = currentElem.parentNode) && currentElem !== document)\n parents.push(currentElem);\n \n for (let i = 0; i < parents.length; i++) {\n isFixed = getComputedStyle(parents[i]).position === 'fixed';\n if (isFixed) break;\n }\n }\n // Calculating origin\n const originWidth = this._origin.offsetWidth;\n const originHeight = this._origin.offsetHeight;\n const originTop = isFixed ? this._offset(this._origin).top - M.getDocumentScrollTop() : this._offset(this._origin).top;\n const originLeft = isFixed ? this._offset(this._origin).left - M.getDocumentScrollLeft() : this._offset(this._origin).left;\n\n // Calculating screen\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const scrollBarWidth = windowWidth - document.documentElement.clientWidth;\n const centerX = windowWidth / 2;\n const centerY = windowHeight / 2;\n const isLeft = originLeft <= centerX;\n const isRight = originLeft > centerX;\n const isTop = originTop <= centerY;\n const isBottom = originTop > centerY;\n const isCenterX = originLeft >= windowWidth * 0.25 && originLeft <= windowWidth * 0.75;\n\n // Calculating tap target\n const tapTargetWidth = this.el.offsetWidth;\n const tapTargetHeight = this.el.offsetHeight;\n const tapTargetTop = originTop + originHeight / 2 - tapTargetHeight / 2;\n const tapTargetLeft = originLeft + originWidth / 2 - tapTargetWidth / 2;\n const tapTargetPosition = isFixed ? 'fixed' : 'absolute';\n\n // Calculating content\n const tapTargetTextWidth = isCenterX ? tapTargetWidth : tapTargetWidth / 2 + originWidth;\n const tapTargetTextHeight = tapTargetHeight / 2;\n const tapTargetTextTop = isTop ? tapTargetHeight / 2 : 0;\n const tapTargetTextBottom = 0;\n const tapTargetTextLeft = isLeft && !isCenterX ? tapTargetWidth / 2 - originWidth : 0;\n const tapTargetTextRight = 0;\n const tapTargetTextPadding = originWidth;\n const tapTargetTextAlign = isBottom ? 'bottom' : 'top';\n\n // Calculating wave\n const tapTargetWaveWidth = originWidth > originHeight ? originWidth * 2 : originWidth * 2;\n const tapTargetWaveHeight = tapTargetWaveWidth;\n const tapTargetWaveTop = tapTargetHeight / 2 - tapTargetWaveHeight / 2;\n const tapTargetWaveLeft = tapTargetWidth / 2 - tapTargetWaveWidth / 2;\n\n // Setting tap target\n this.wrapper.style.top = isTop ? tapTargetTop + 'px' : '';\n this.wrapper.style.right = isRight ? windowWidth - tapTargetLeft - tapTargetWidth - scrollBarWidth + 'px' : '';\n this.wrapper.style.bottom = isBottom ? windowHeight - tapTargetTop - tapTargetHeight + 'px' : '';\n this.wrapper.style.left = isLeft ? tapTargetLeft + 'px' : '';\n this.wrapper.style.position = tapTargetPosition;\n\n // Setting content\n this.contentEl.style.width = tapTargetTextWidth + 'px';\n this.contentEl.style.height = tapTargetTextHeight + 'px';\n this.contentEl.style.top = tapTargetTextTop + 'px';\n this.contentEl.style.right = tapTargetTextRight + 'px';\n this.contentEl.style.bottom = tapTargetTextBottom + 'px';\n this.contentEl.style.left = tapTargetTextLeft + 'px';\n this.contentEl.style.padding = tapTargetTextPadding + 'px';\n this.contentEl.style.verticalAlign = tapTargetTextAlign;\n\n // Setting wave\n this.waveEl.style.top = tapTargetWaveTop+'px';\n this.waveEl.style.left = tapTargetWaveLeft+'px';\n this.waveEl.style.width = tapTargetWaveWidth+'px';\n this.waveEl.style.height = tapTargetWaveHeight+'px';\n }\n\n open() {\n if (this.isOpen) return;\n // onOpen callback\n if (typeof this.options.onOpen === 'function') {\n this.options.onOpen.call(this, this._origin);\n }\n this.isOpen = true;\n this.wrapper.classList.add('open');\n document.body.addEventListener('click', this._handleDocumentClickBound, true);\n document.body.addEventListener('touchend', this._handleDocumentClickBound);\n }\n\n close() {\n if (!this.isOpen) return;\n // onClose callback\n if (typeof this.options.onClose === 'function') {\n this.options.onClose.call(this, this._origin);\n }\n this.isOpen = false;\n this.wrapper.classList.remove('open');\n document.body.removeEventListener('click', this._handleDocumentClickBound, true);\n document.body.removeEventListener('touchend', this._handleDocumentClickBound);\n }\n }\n\n \n\n","import { Component } from \"./component\";\nimport { M } from \"./global\";\nimport { Modal } from \"./modal\";\n\nlet _defaults = {\n dialRadius: 135,\n outerRadius: 105,\n innerRadius: 70,\n tickRadius: 20,\n duration: 350,\n container: null,\n defaultTime: 'now', // default time, 'now' or '13:14' e.g.\n fromNow: 0, // Millisecond offset from the defaultTime\n showClearBtn: false,\n // internationalization\n i18n: {\n cancel: 'Cancel',\n clear: 'Clear',\n done: 'Ok'\n },\n autoClose: false, // auto close when minute is selected\n twelveHour: true, // change to 12 hour AM/PM clock from 24 hour\n vibrate: true, // vibrate the device when dragging clock hand\n // Callbacks\n onOpenStart: null,\n onOpenEnd: null,\n onCloseStart: null,\n onCloseEnd: null,\n onSelect: null\n};\n\ntype Point = {\n x: number,\n y: number\n};\n\n export class Timepicker extends Component {\n el: HTMLInputElement;\n id: string;\n modal: Modal;\n modalEl: HTMLElement;\n private _handleInputKeydownBound: any;\n private _handleInputClickBound: any;\n private _handleClockClickStartBound: any;\n private _handleDocumentClickMoveBound: any;\n private _handleDocumentClickEndBound: any;\n private _inputFromTextFieldBound: any;\n plate: any;\n digitalClock: any;\n inputHours: HTMLInputElement;\n inputMinutes: HTMLInputElement;\n x0: number;\n y0: number;\n moved: boolean;\n dx: number;\n dy: number;\n currentView: string;\n hand: any;\n minutesView: HTMLElement;\n hours: any;\n minutes: any;\n time: string;\n amOrPm: any;\n static _template: any;\n isOpen: boolean;\n vibrate: string;\n _canvas: HTMLElement;\n hoursView: any;\n spanAmPm: HTMLSpanElement;\n footer: HTMLElement;\n private _amBtn: HTMLElement;\n private _pmBtn: HTMLElement;\n bg: Element;\n bearing: Element;\n g: Element;\n toggleViewTimer: string | number | NodeJS.Timeout;\n canvas: any;\n vibrateTimer: any;\n\n constructor(el, options) {\n super(Timepicker, el, options);\n (this.el as any).M_Timepicker = this;\n this.options = {...Timepicker.defaults, ...options};\n this.id = M.guid();\n this._insertHTMLIntoDOM();\n this._setupModal();\n this._setupVariables();\n this._setupEventHandlers();\n this._clockSetup();\n this._pickerSetup();\n }\n\n static get defaults() {\n return _defaults;\n }\n\n static init(els, options) {\n return super.init(this, els, options);\n }\n\n static _addLeadingZero(num) {\n return (num < 10 ? '0' : '') + num;\n }\n\n static _createSVGEl(name) {\n let svgNS = 'http://www.w3.org/2000/svg';\n return document.createElementNS(svgNS, name);\n }\n\n static _Pos(e): Point {\n if (e.targetTouches && e.targetTouches.length >= 1) {\n return { x: e.targetTouches[0].clientX, y: e.targetTouches[0].clientY };\n }\n // mouse event\n return { x: e.clientX, y: e.clientY };\n }\n\n static getInstance(el) {\n const domElem = !!el.jquery ? el[0] : el;\n return domElem.M_Timepicker;\n }\n\n destroy() {\n this._removeEventHandlers();\n this.modal.destroy();\n this.modalEl.remove();\n (this.el as any).M_Timepicker = undefined;\n }\n\n _setupEventHandlers() {\n this._handleInputKeydownBound = this._handleInputKeydown.bind(this);\n this._handleInputClickBound = this._handleInputClick.bind(this);\n this._handleClockClickStartBound = this._handleClockClickStart.bind(this);\n this._handleDocumentClickMoveBound = this._handleDocumentClickMove.bind(this);\n this._handleDocumentClickEndBound = this._handleDocumentClickEnd.bind(this);\n this._inputFromTextFieldBound = this._handleTimeInputEnterKey.bind(this);\n this.el.addEventListener('click', this._handleInputClickBound);\n this.el.addEventListener('keydown', this._handleInputKeydownBound);\n this.plate.addEventListener('mousedown', this._handleClockClickStartBound);\n this.plate.addEventListener('touchstart', this._handleClockClickStartBound);\n this.digitalClock.addEventListener('keyup', this._inputFromTextFieldBound);\n this.inputHours.addEventListener('click', this.showView.bind(this, 'hours'));\n this.inputMinutes.addEventListener('click', this.showView.bind(this, 'minutes'));\n }\n\n _removeEventHandlers() {\n this.el.removeEventListener('click', this._handleInputClickBound);\n this.el.removeEventListener('keydown', this._handleInputKeydownBound);\n }\n\n _handleInputClick() {\n this.open();\n }\n\n _handleInputKeydown(e) {\n if (e.which === M.keys.ENTER) {\n e.preventDefault();\n this.open();\n }\n }\n\n _handleTimeInputEnterKey(e) {\n if (e.which === M.keys.ENTER) {\n e.preventDefault();\n this._inputFromTextField();\n }\n }\n\n _handleClockClickStart(e) {\n e.preventDefault();\n let clockPlateBR = this.plate.getBoundingClientRect();\n let offset = { x: clockPlateBR.left, y: clockPlateBR.top };\n\n this.x0 = offset.x + this.options.dialRadius;\n this.y0 = offset.y + this.options.dialRadius;\n this.moved = false;\n let clickPos = Timepicker._Pos(e);\n this.dx = clickPos.x - this.x0;\n this.dy = clickPos.y - this.y0;\n\n // Set clock hands\n this.setHand(this.dx, this.dy, false);\n // Mousemove on document\n document.addEventListener('mousemove', this._handleDocumentClickMoveBound);\n document.addEventListener('touchmove', this._handleDocumentClickMoveBound);\n // Mouseup on document\n document.addEventListener('mouseup', this._handleDocumentClickEndBound);\n document.addEventListener('touchend', this._handleDocumentClickEndBound);\n }\n\n _handleDocumentClickMove(e) {\n e.preventDefault();\n let clickPos = Timepicker._Pos(e);\n let x = clickPos.x - this.x0;\n let y = clickPos.y - this.y0;\n this.moved = true;\n this.setHand(x, y, false);\n }\n\n _handleDocumentClickEnd(e) {\n e.preventDefault();\n document.removeEventListener('mouseup', this._handleDocumentClickEndBound);\n document.removeEventListener('touchend', this._handleDocumentClickEndBound);\n let clickPos = Timepicker._Pos(e);\n let x = clickPos.x - this.x0;\n let y = clickPos.y - this.y0;\n if (this.moved && x === this.dx && y === this.dy) {\n this.setHand(x, y);\n }\n if (this.currentView === 'hours') {\n this.showView('minutes', this.options.duration / 2);\n }\n else if (this.options.autoClose) {\n this.minutesView.classList.add('timepicker-dial-out');\n setTimeout(() => {\n this.done();\n }, this.options.duration / 2);\n }\n if (typeof this.options.onSelect === 'function') {\n this.options.onSelect.call(this, this.hours, this.minutes);\n }\n // Unbind mousemove event\n document.removeEventListener('mousemove', this._handleDocumentClickMoveBound);\n document.removeEventListener('touchmove', this._handleDocumentClickMoveBound);\n }\n\n _insertHTMLIntoDOM() {\n const template = document.createElement('template');\n template.innerHTML = Timepicker._template.trim();\n this.modalEl = <HTMLElement>template.content.firstChild;\n this.modalEl.id = 'modal-' + this.id;\n\n // Append popover to input by default\n const optEl = this.options.container;\n const containerEl = optEl instanceof HTMLElement ? optEl : document.querySelector(optEl);\n \n if (this.options.container && !!containerEl) {\n containerEl.append(this.modalEl);\n }\n else {\n this.el.parentElement.appendChild(this.modalEl);\n }\n }\n\n _setupModal() {\n this.modal = M.Modal.init(this.modalEl, {\n onOpenStart: this.options.onOpenStart,\n onOpenEnd: this.options.onOpenEnd,\n onCloseStart: this.options.onCloseStart,\n onCloseEnd: () => {\n if (typeof this.options.onCloseEnd === 'function') {\n this.options.onCloseEnd.call(this);\n }\n this.isOpen = false;\n }\n });\n }\n\n _setupVariables() {\n this.currentView = 'hours';\n this.vibrate = navigator.vibrate\n ? 'vibrate'\n : (navigator as any).webkitVibrate\n ? 'webkitVibrate'\n : null;\n this._canvas = this.modalEl.querySelector('.timepicker-canvas');\n this.plate = this.modalEl.querySelector('.timepicker-plate');\n this.digitalClock = this.modalEl.querySelector('.timepicker-display-column');\n this.hoursView = this.modalEl.querySelector('.timepicker-hours');\n this.minutesView = this.modalEl.querySelector('.timepicker-minutes');\n this.inputHours = this.modalEl.querySelector('.timepicker-input-hours');\n this.inputMinutes = this.modalEl.querySelector('.timepicker-input-minutes');\n this.spanAmPm = this.modalEl.querySelector('.timepicker-span-am-pm');\n this.footer = this.modalEl.querySelector('.timepicker-footer');\n this.amOrPm = 'PM';\n }\n\n private _createButton(text: string, visibility: string): HTMLButtonElement {\n const button = document.createElement('button');\n button.classList.add('btn-flat', 'waves-effect');\n button.style.visibility = visibility;\n button.type = 'button';\n button.tabIndex = this.options.twelveHour ? 3 : 1;\n button.innerText = text;\n return button;\n }\n\n _pickerSetup() {\n const clearButton = this._createButton(this.options.i18n.clear, this.options.showClearBtn ? '' : 'hidden');\n clearButton.classList.add('timepicker-clear');\n clearButton.addEventListener('click', this.clear.bind(this));\n this.footer.appendChild(clearButton);\n\n const confirmationBtnsContainer = document.createElement('div');\n confirmationBtnsContainer.classList.add('confirmation-btns');\n this.footer.append(confirmationBtnsContainer);\n\n const cancelButton = this._createButton(this.options.i18n.cancel, '');\n cancelButton.classList.add('timepicker-close');\n cancelButton.addEventListener('click', this.close.bind(this));\n confirmationBtnsContainer.appendChild(cancelButton);\n\n const doneButton = this._createButton(this.options.i18n.done, '');\n doneButton.classList.add('timepicker-close');\n doneButton.addEventListener('click', this.done.bind(this));\n confirmationBtnsContainer.appendChild(doneButton);\n }\n\n _clockSetup() {\n if (this.options.twelveHour) {\n // AM Button\n this._amBtn = document.createElement('div');\n this._amBtn.classList.add('am-btn');\n this._amBtn.innerText = 'AM';\n this._amBtn.addEventListener('click', this._handleAmPmClick.bind(this));\n this.spanAmPm.appendChild(this._amBtn);\n // PM Button\n this._pmBtn = document.createElement('div');\n this._pmBtn.classList.add('pm-btn');\n this._pmBtn.innerText = 'PM';\n this._pmBtn.addEventListener('click', this._handleAmPmClick.bind(this));\n this.spanAmPm.appendChild(this._pmBtn);\n }\n this._buildHoursView();\n this._buildMinutesView();\n this._buildSVGClock();\n }\n\n _buildSVGClock() {\n // Draw clock hands and others\n let dialRadius = this.options.dialRadius;\n let tickRadius = this.options.tickRadius;\n let diameter = dialRadius * 2;\n let svg = Timepicker._createSVGEl('svg');\n svg.setAttribute('class', 'timepicker-svg');\n svg.setAttribute('width', diameter.toString());\n svg.setAttribute('height', diameter.toString());\n let g = Timepicker._createSVGEl('g');\n g.setAttribute('transform', 'translate(' + dialRadius + ',' + dialRadius + ')');\n let bearing = Timepicker._createSVGEl('circle');\n bearing.setAttribute('class', 'timepicker-canvas-bearing');\n bearing.setAttribute('cx', '0');\n bearing.setAttribute('cy', '0');\n bearing.setAttribute('r', '4');\n let hand = Timepicker._createSVGEl('line');\n hand.setAttribute('x1', '0');\n hand.setAttribute('y1', '0');\n let bg = Timepicker._createSVGEl('circle');\n bg.setAttribute('class', 'timepicker-canvas-bg');\n bg.setAttribute('r', tickRadius);\n g.appendChild(hand);\n g.appendChild(bg);\n g.appendChild(bearing);\n svg.appendChild(g);\n this._canvas.appendChild(svg);\n this.hand = hand;\n this.bg = bg;\n this.bearing = bearing;\n this.g = g;\n }\n\n _buildHoursView() {\n const $tick = document.createElement('div');\n $tick.classList.add('timepicker-tick');\n // Hours view\n if (this.options.twelveHour) {\n for (let i = 1; i < 13; i += 1) {\n const tick = <HTMLElement>$tick.cloneNode(true);\n const radian = (i / 6) * Math.PI;\n const radius = this.options.outerRadius;\n tick.style.left = this.options.dialRadius + Math.sin(radian) * radius - this.options.tickRadius + 'px';\n tick.style.top = this.options.dialRadius - Math.cos(radian) * radius - this.options.tickRadius + 'px';\n tick.innerHTML = i === 0 ? '00' : i.toString();\n this.hoursView.appendChild(tick);\n // tick.on(mousedownEvent, mousedown);\n }\n }\n else {\n for (let i = 0; i < 24; i += 1) {\n const tick = <HTMLElement>$tick.cloneNode(true);\n const radian = (i / 6) * Math.PI;\n const inner = i > 0 && i < 13;\n const radius = inner ? this.options.innerRadius : this.options.outerRadius;\n tick.style.left = this.options.dialRadius + Math.sin(radian) * radius - this.options.tickRadius + 'px';\n tick.style.top = this.options.dialRadius - Math.cos(radian) * radius - this.options.tickRadius + 'px';\n tick.innerHTML = i === 0 ? '00' : i.toString();\n this.hoursView.appendChild(tick);\n // tick.on(mousedownEvent, mousedown);\n }\n }\n }\n\n _buildMinutesView() {\n const _tick = document.createElement('div');\n _tick.classList.add('timepicker-tick');\n // Minutes view\n for (let i = 0; i < 60; i += 5) {\n const tick = <HTMLElement>_tick.cloneNode(true);\n const radian = (i / 30) * Math.PI;\n tick.style.left = \n this.options.dialRadius +\n Math.sin(radian) * this.options.outerRadius -\n this.options.tickRadius +\n 'px';\n tick.style.top =\n this.options.dialRadius -\n Math.cos(radian) * this.options.outerRadius -\n this.options.tickRadius +\n 'px';\n tick.innerHTML = Timepicker._addLeadingZero(i);\n this.minutesView.appendChild(tick);\n }\n }\n\n _handleAmPmClick(e) {\n const btnClicked = <HTMLElement>e.target;\n this.amOrPm = btnClicked.classList.contains('am-btn') ? 'AM' : 'PM';\n this._updateAmPmView();\n }\n\n _updateAmPmView() {\n if (this.options.twelveHour) {\n if (this.amOrPm === 'PM') {\n this._amBtn.classList.remove('text-primary');\n this._pmBtn.classList.add('text-primary');\n }\n else if (this.amOrPm === 'AM') {\n this._amBtn.classList.add('text-primary');\n this._pmBtn.classList.remove('text-primary');\n }\n }\n }\n\n _updateTimeFromInput() {\n // Get the time\n let value = ((this.el.value || this.options.defaultTime || '') + '').split(':');\n if (this.options.twelveHour && !(typeof value[1] === 'undefined')) {\n if (value[1].toUpperCase().indexOf('AM') > 0) {\n this.amOrPm = 'AM';\n } else {\n this.amOrPm = 'PM';\n }\n value[1] = value[1].replace('AM', '').replace('PM', '');\n }\n if (value[0] === 'now') {\n let now = new Date(+new Date() + this.options.fromNow);\n value = [now.getHours().toString(), now.getMinutes().toString()];\n if (this.options.twelveHour) {\n this.amOrPm = parseInt(value[0]) >= 12 && parseInt(value[0]) < 24 ? 'PM' : 'AM';\n }\n }\n this.hours = +value[0] || 0;\n this.minutes = +value[1] || 0;\n this.inputHours.value = this.hours;\n this.inputMinutes.value = Timepicker._addLeadingZero(this.minutes);\n\n this._updateAmPmView();\n }\n\n showView(view, delay: number = null) {\n if (view === 'minutes' && getComputedStyle(this.hoursView).visibility === 'visible') {\n // raiseCallback(this.options.beforeHourSelect);\n }\n let isHours = view === 'hours',\n nextView = isHours ? this.hoursView : this.minutesView,\n hideView = isHours ? this.minutesView : this.hoursView;\n this.currentView = view;\n\n if (isHours) {\n this.inputHours.classList.add('text-primary');\n this.inputMinutes.classList.remove('text-primary');\n }\n else {\n this.inputHours.classList.remove('text-primary');\n this.inputMinutes.classList.add('text-primary');\n }\n\n // Transition view\n hideView.classList.add('timepicker-dial-out');\n\n nextView.style.visibility = 'visible';\n nextView.classList.remove('timepicker-dial-out');\n\n // Reset clock hand\n this.resetClock(delay);\n // After transitions ended\n clearTimeout(this.toggleViewTimer);\n this.toggleViewTimer = setTimeout(() => {\n hideView.style.visibility = 'hidden';\n }, this.options.duration);\n }\n\n resetClock(delay) {\n let view = this.currentView,\n value = this[view],\n isHours = view === 'hours',\n unit = Math.PI / (isHours ? 6 : 30),\n radian = value * unit,\n radius =\n isHours && value > 0 && value < 13 ? this.options.innerRadius : this.options.outerRadius,\n x = Math.sin(radian) * radius,\n y = -Math.cos(radian) * radius,\n self = this;\n\n if (delay) {\n this.canvas?.classList.add('timepicker-canvas-out');\n setTimeout(() => {\n self.canvas?.classList.remove('timepicker-canvas-out');\n self.setHand(x, y);\n }, delay);\n }\n else {\n this.setHand(x, y);\n }\n }\n\n _inputFromTextField() {\n const isHours = this.currentView === 'hours';\n if (isHours) {\n const value = parseInt(this.inputHours.value);\n if (value > 0 && value < 13) {\n this.drawClockFromTimeInput(value, isHours);\n this.showView('minutes', this.options.duration / 2);\n this.hours = value;\n this.inputMinutes.focus();\n }\n else {\n const hour = new Date().getHours();\n this.inputHours.value = (hour % 12).toString();\n }\n }\n else {\n const value = parseInt(this.inputMinutes.value);\n if (value >= 0 && value < 60) {\n this.inputMinutes.value = Timepicker._addLeadingZero(value);\n this.drawClockFromTimeInput(value, isHours);\n this.minutes = value;\n (<HTMLElement>this.modalEl.querySelector('.confirmation-btns :nth-child(2)')).focus();\n }\n else {\n const minutes = new Date().getMinutes();\n this.inputMinutes.value = Timepicker._addLeadingZero(minutes);\n }\n }\n }\n\n drawClockFromTimeInput(value, isHours) {\n const unit = Math.PI / (isHours ? 6 : 30);\n const radian = value * unit;\n let radius;\n if (this.options.twelveHour) {\n radius = this.options.outerRadius;\n }\n let cx1 = Math.sin(radian) * (radius - this.options.tickRadius),\n cy1 = -Math.cos(radian) * (radius - this.options.tickRadius),\n cx2 = Math.sin(radian) * radius,\n cy2 = -Math.cos(radian) * radius;\n this.hand.setAttribute('x2', cx1.toString());\n this.hand.setAttribute('y2', cy1.toString());\n this.bg.setAttribute('cx', cx2.toString());\n this.bg.setAttribute('cy', cy2.toString());\n }\n\n setHand(x, y, roundBy5: boolean = false) {\n let radian = Math.atan2(x, -y),\n isHours = this.currentView === 'hours',\n unit = Math.PI / (isHours || roundBy5 ? 6 : 30),\n z = Math.sqrt(x * x + y * y),\n inner = isHours && z < (this.options.outerRadius + this.options.innerRadius) / 2,\n radius = inner ? this.options.innerRadius : this.options.outerRadius;\n\n if (this.options.twelveHour) {\n radius = this.options.outerRadius;\n }\n\n // Radian should in range [0, 2PI]\n if (radian < 0) {\n radian = Math.PI * 2 + radian;\n }\n\n // Get the round value\n let value = Math.round(radian / unit);\n\n // Get the round radian\n radian = value * unit;\n\n // Correct the hours or minutes\n if (this.options.twelveHour) {\n if (isHours) {\n if (value === 0) value = 12;\n } else {\n if (roundBy5) value *= 5;\n if (value === 60) value = 0;\n }\n } else {\n if (isHours) {\n if (value === 12) {\n value = 0;\n }\n value = inner ? (value === 0 ? 12 : value) : value === 0 ? 0 : value + 12;\n } else {\n if (roundBy5) {\n value *= 5;\n }\n if (value === 60) {\n value = 0;\n }\n }\n }\n\n // Once hours or minutes changed, vibrate the device\n if (this[this.currentView] !== value) {\n if (this.vibrate && this.options.vibrate) {\n // Do not vibrate too frequently\n if (!this.vibrateTimer) {\n navigator[this.vibrate](10);\n this.vibrateTimer = setTimeout(() => {\n this.vibrateTimer = null;\n }, 100);\n }\n }\n }\n\n this[this.currentView] = value;\n if (isHours) {\n this.inputHours.value = value.toString();\n }\n else {\n this.inputMinutes.value = Timepicker._addLeadingZero(value);\n }\n\n // Set clock hand and others' position\n let cx1 = Math.sin(radian) * (radius - this.options.tickRadius),\n cy1 = -Math.cos(radian) * (radius - this.options.tickRadius),\n cx2 = Math.sin(radian) * radius,\n cy2 = -Math.cos(radian) * radius;\n this.hand.setAttribute('x2', cx1.toString());\n this.hand.setAttribute('y2', cy1.toString());\n this.bg.setAttribute('cx', cx2.toString());\n this.bg.setAttribute('cy', cy2.toString());\n }\n\n open() {\n if (this.isOpen) return;\n this.isOpen = true;\n this._updateTimeFromInput();\n this.showView('hours');\n this.modal.open(undefined);\n }\n\n close() {\n if (!this.isOpen) return;\n this.isOpen = false;\n this.modal.close();\n }\n\n done(e = null, clearValue = null) {\n // Set input value\n let last = this.el.value;\n let value = clearValue\n ? ''\n : Timepicker._addLeadingZero(this.hours) + ':' + Timepicker._addLeadingZero(this.minutes);\n this.time = value;\n if (!clearValue && this.options.twelveHour) {\n value = `${value} ${this.amOrPm}`;\n }\n this.el.value = value;\n // Trigger change event\n if (value !== last) {\n this.el.dispatchEvent(new Event('change'));\n }\n this.close();\n this.el.focus();\n }\n\n clear() {\n this.done(null, true);\n }\n\n static {\n Timepicker._template = `\n <div class=\"modal timepicker-modal\">\n <div class=\"modal-content timepicker-container\">\n <div class=\"timepicker-digital-display\">\n <div class=\"timepicker-text-container\">\n <div class=\"timepicker-display-column\">\n <input type=\"text\" maxlength=\"2\" autofocus class=\"timepicker-input-hours text-primary\" />\n :\n <input type=\"text\" maxlength=\"2\" class=\"timepicker-input-minutes\" />\n </div>\n <div class=\"timepicker-display-column timepicker-display-am-pm\">\n <div class=\"timepicker-span-am-pm\"></div>\n </div>\n </div>\n </div>\n <div class=\"timepicker-analog-display\">\n <div class=\"timepicker-plate\">\n <div class=\"timepicker-canvas\"></div>\n <div class=\"timepicker-dial timepicker-hours\"></div>\n <div class=\"timepicker-dial timepicker-minutes timepicker-dial-out\"></div>\n </div>\n <div class=\"timepicker-footer\"></div>\n </div>\n </div>\n </div`;\n }\n }\n ","import anim from \"animejs\";\n\nlet _defaults = {\n text: '',\n displayLength: 4000,\n inDuration: 300,\n outDuration: 375,\n classes: '',\n completeCallback: null,\n activationPercent: 0.8\n };\n\n export class Toast {\n static _toasts: Toast[];\n static _container: any;\n static _draggedToast: Toast;\n options: any;\n message: string;\n panning: boolean;\n timeRemaining: number;\n el: HTMLDivElement;\n counterInterval: NodeJS.Timeout;\n wasSwiped: any;\n startingXPos: number;\n xPos: any;\n time: number;\n deltaX: number;\n velocityX: number;\n\n constructor(options: any) {\n this.options = {...Toast.defaults, ...options};\n //this.htmlMessage = this.options.html;\n // Warn when using html\n // if (!!this.options.html)\n // console.warn(\n // 'The html option is deprecated and will be removed in the future. See https://github.com/materializecss/materialize/pull/49'\n // );\n // If the new unsafeHTML is used, prefer that\n // if (!!this.options.unsafeHTML) {\n // this.htmlMessage = this.options.unsafeHTML;\n // }\n this.message = this.options.text;\n this.panning = false;\n this.timeRemaining = this.options.displayLength;\n if (Toast._toasts.length === 0) {\n Toast._createContainer();\n }\n // Create new toast\n Toast._toasts.push(this);\n let toastElement = this._createToast();\n (toastElement as any).M_Toast = this;\n this.el = toastElement;\n this._animateIn();\n this._setTimer();\n }\n\n static get defaults() {\n return _defaults;\n }\n\n static getInstance(el) {\n let domElem = !!el.jquery ? el[0] : el;\n return domElem.M_Toast;\n }\n\n static _createContainer() {\n const container = document.createElement('div');\n container.setAttribute('id', 'toast-container');\n // Add event handler\n container.addEventListener('touchstart', Toast._onDragStart);\n container.addEventListener('touchmove', Toast._onDragMove);\n container.addEventListener('touchend', Toast._onDragEnd);\n container.addEventListener('mousedown', Toast._onDragStart);\n document.addEventListener('mousemove', Toast._onDragMove);\n document.addEventListener('mouseup', Toast._onDragEnd);\n document.body.appendChild(container);\n Toast._container = container;\n }\n\n static _removeContainer() {\n document.removeEventListener('mousemove', Toast._onDragMove);\n document.removeEventListener('mouseup', Toast._onDragEnd);\n Toast._container.remove();\n Toast._container = null;\n }\n\n static _onDragStart(e) {\n if (e.target && (<HTMLElement>e.target).closest('.toast')) {\n const toastElem = (<HTMLElement>e.target).closest('.toast');\n const toast: Toast = (toastElem as any).M_Toast;\n toast.panning = true;\n Toast._draggedToast = toast;\n toast.el.classList.add('panning');\n toast.el.style.transition = '';\n toast.startingXPos = Toast._xPos(e);\n toast.time = Date.now();\n toast.xPos = Toast._xPos(e);\n }\n }\n\n static _onDragMove(e) {\n if (!!Toast._draggedToast) {\n e.preventDefault();\n const toast = Toast._draggedToast;\n toast.deltaX = Math.abs(toast.xPos - Toast._xPos(e));\n toast.xPos = Toast._xPos(e);\n toast.velocityX = toast.deltaX / (Date.now() - toast.time);\n toast.time = Date.now();\n\n const totalDeltaX = toast.xPos - toast.startingXPos;\n const activationDistance = toast.el.offsetWidth * toast.options.activationPercent;\n toast.el.style.transform = `translateX(${totalDeltaX}px)`;\n toast.el.style.opacity = (1 - Math.abs(totalDeltaX / activationDistance)).toString();\n }\n }\n\n static _onDragEnd() {\n if (!!Toast._draggedToast) {\n let toast = Toast._draggedToast;\n toast.panning = false;\n toast.el.classList.remove('panning');\n\n let totalDeltaX = toast.xPos - toast.startingXPos;\n let activationDistance = toast.el.offsetWidth * toast.options.activationPercent;\n let shouldBeDismissed = Math.abs(totalDeltaX) > activationDistance || toast.velocityX > 1;\n\n // Remove toast\n if (shouldBeDismissed) {\n toast.wasSwiped = true;\n toast.dismiss();\n // Animate toast back to original position\n }\n else {\n toast.el.style.transition = 'transform .2s, opacity .2s';\n toast.el.style.transform = '';\n toast.el.style.opacity = '';\n }\n Toast._draggedToast = null;\n }\n }\n\n static _xPos(e) {\n if (e.targetTouches && e.targetTouches.length >= 1) {\n return e.targetTouches[0].clientX;\n }\n // mouse event\n return e.clientX;\n }\n\n static dismissAll() {\n for (let toastIndex in Toast._toasts) {\n Toast._toasts[toastIndex].dismiss();\n }\n }\n\n _createToast() {\n const toast = document.createElement('div');\n toast.classList.add('toast');\n toast.setAttribute('role', 'alert');\n toast.setAttribute('aria-live', 'assertive');\n toast.setAttribute('aria-atomic', 'true');\n\n // Add custom classes onto toast\n if (this.options.classes.length > 0) {\n toast.classList.add(...this.options.classes.split(' '));\n }\n\n // Set safe text content\n toast.innerText = this.message;\n\n // if (\n // typeof HTMLElement === 'object'\n // ? this.htmlMessage instanceof HTMLElement\n // : this.htmlMessage &&\n // typeof this.htmlMessage === 'object' &&\n // this.htmlMessage !== null &&\n // this.htmlMessage.nodeType === 1 &&\n // typeof this.htmlMessage.nodeName === 'string'\n // ) {\n // //if the htmlMessage is an HTML node, append it directly\n // toast.appendChild(this.htmlMessage);\n // }\n // else if (!!this.htmlMessage.jquery) {\n // // Check if it is jQuery object, append the node\n // $(toast).append(this.htmlMessage[0]);\n // }\n // else {\n // // Append as unsanitized html;\n // $(toast).append(this.htmlMessage);\n // }\n\n // Append toast\n Toast._container.appendChild(toast);\n return toast;\n }\n\n _animateIn() {\n // Animate toast in\n anim({\n targets: this.el,\n top: 0,\n opacity: 1,\n duration: this.options.inDuration,\n easing: 'easeOutCubic'\n });\n }\n\n /**\n * Create setInterval which automatically removes toast when timeRemaining >= 0\n * has been reached\n */\n _setTimer() {\n if (this.timeRemaining !== Infinity) {\n this.counterInterval = setInterval(() => {\n // If toast is not being dragged, decrease its time remaining\n if (!this.panning) {\n this.timeRemaining -= 20;\n }\n // Animate toast out\n if (this.timeRemaining <= 0) {\n this.dismiss();\n }\n }, 20);\n }\n }\n\n /**\n * Dismiss toast with animation\n */\n dismiss() {\n window.clearInterval(this.counterInterval);\n let activationDistance = this.el.offsetWidth * this.options.activationPercent;\n\n if (this.wasSwiped) {\n this.el.style.transition = 'transform .05s, opacity .05s';\n this.el.style.transform = `translateX(${activationDistance}px)`;\n this.el.style.opacity = '0';\n }\n\n anim({\n targets: this.el,\n opacity: 0,\n marginTop: -40,\n duration: this.options.outDuration,\n easing: 'easeOutExpo',\n complete: () => {\n // Call the optional callback\n if (typeof this.options.completeCallback === 'function') {\n this.options.completeCallback();\n }\n // Remove toast from DOM\n this.el.remove();\n Toast._toasts.splice(Toast._toasts.indexOf(this), 1);\n if (Toast._toasts.length === 0) {\n Toast._removeContainer();\n }\n }\n });\n }\n\n static { \n Toast._toasts = [];\n Toast._container = null;\n Toast._draggedToast = null;\n }\n }\n","import { Component } from \"./component\";\nimport { M } from \"./global\";\nimport anim from \"animejs\";\nimport { Bounding } from \"./bounding\";\n\n const _defaults = {\n exitDelay: 200,\n enterDelay: 0,\n //html: null,\n text: '',\n //unsafeHTML: null,\n margin: 5,\n inDuration: 250,\n outDuration: 200,\n position: 'bottom',\n transitionMovement: 10\n };\n\n export class Tooltip extends Component {\n isOpen: boolean;\n isHovered: boolean;\n isFocused: boolean;\n tooltipEl: HTMLElement;\n private _handleMouseEnterBound: any;\n private _handleMouseLeaveBound: any;\n private _handleFocusBound: any;\n private _handleBlurBound: any;\n private _exitDelayTimeout: string | number | NodeJS.Timeout;\n private _enterDelayTimeout: string | number | NodeJS.Timeout;\n xMovement: number;\n yMovement: number;\n\n constructor(el, options) {\n super(Tooltip, el, options);\n (this.el as any).M_Tooltip = this;\n this.options = {...Tooltip.defaults, ...options};\n this.isOpen = false;\n this.isHovered = false;\n this.isFocused = false;\n this._appendTooltipEl();\n this._setupEventHandlers();\n }\n\n static get defaults() {\n return _defaults;\n }\n\n static init(els, options) {\n return super.init(this, els, options);\n }\n\n static getInstance(el) {\n const domElem = !!el.jquery ? el[0] : el;\n return domElem.M_Tooltip;\n }\n\n destroy() {\n this.tooltipEl.remove();\n this._removeEventHandlers();\n (this.el as any).M_Tooltip = undefined;\n }\n\n _appendTooltipEl() {\n this.tooltipEl = document.createElement('div');\n this.tooltipEl.classList.add('material-tooltip');\n\n const tooltipContentEl = document.createElement('div');\n tooltipContentEl.classList.add('tooltip-content');\n this._setTooltipContent(tooltipContentEl);\n this.tooltipEl.appendChild(tooltipContentEl);\n document.body.appendChild(this.tooltipEl);\n }\n\n _setTooltipContent(tooltipContentEl: HTMLElement) {\n tooltipContentEl.innerText = this.options.text;\n /*\n if (!!this.options.html) {\n // Warn when using html\n console.warn(\n 'The html option is deprecated and will be removed in the future. See https://github.com/materializecss/materialize/pull/49'\n );\n $(tooltipContentEl).append(this.options.html);\n }\n if (!!this.options.unsafeHTML) {\n $(tooltipContentEl).append(this.options.unsafeHTML);\n }\n */\n }\n\n _updateTooltipContent() {\n this._setTooltipContent(this.tooltipEl.querySelector('.tooltip-content'));\n }\n\n _setupEventHandlers() {\n this._handleMouseEnterBound = this._handleMouseEnter.bind(this);\n this._handleMouseLeaveBound = this._handleMouseLeave.bind(this);\n this._handleFocusBound = this._handleFocus.bind(this);\n this._handleBlurBound = this._handleBlur.bind(this);\n this.el.addEventListener('mouseenter', this._handleMouseEnterBound);\n this.el.addEventListener('mouseleave', this._handleMouseLeaveBound);\n this.el.addEventListener('focus', this._handleFocusBound, true);\n this.el.addEventListener('blur', this._handleBlurBound, true);\n }\n\n _removeEventHandlers() {\n this.el.removeEventListener('mouseenter', this._handleMouseEnterBound);\n this.el.removeEventListener('mouseleave', this._handleMouseLeaveBound);\n this.el.removeEventListener('focus', this._handleFocusBound, true);\n this.el.removeEventListener('blur', this._handleBlurBound, true);\n }\n\n open(isManual) {\n if (this.isOpen) return;\n isManual = isManual === undefined ? true : undefined; // Default value true\n this.isOpen = true;\n // Update tooltip content with HTML attribute options\n this.options = {...this.options, ...this._getAttributeOptions()};\n this._updateTooltipContent();\n this._setEnterDelayTimeout(isManual);\n }\n\n close() {\n if (!this.isOpen) return;\n this.isHovered = false;\n this.isFocused = false;\n this.isOpen = false;\n this._setExitDelayTimeout();\n }\n\n _setExitDelayTimeout() {\n clearTimeout(this._exitDelayTimeout);\n this._exitDelayTimeout = setTimeout(() => {\n if (this.isHovered || this.isFocused) return;\n this._animateOut();\n }, this.options.exitDelay);\n }\n\n _setEnterDelayTimeout(isManual) {\n clearTimeout(this._enterDelayTimeout);\n this._enterDelayTimeout = setTimeout(() => {\n if (!this.isHovered && !this.isFocused && !isManual) return;\n this._animateIn();\n }, this.options.enterDelay);\n }\n\n _positionTooltip() {\n const tooltip: HTMLElement = this.tooltipEl;\n const origin = (this.el as HTMLElement),\n originHeight = origin.offsetHeight,\n originWidth = origin.offsetWidth,\n tooltipHeight = tooltip.offsetHeight,\n tooltipWidth = tooltip.offsetWidth,\n margin = this.options.margin;\n\n (this.xMovement = 0), (this.yMovement = 0);\n\n let targetTop = origin.getBoundingClientRect().top + M.getDocumentScrollTop();\n let targetLeft = origin.getBoundingClientRect().left + M.getDocumentScrollLeft();\n if (this.options.position === 'top') {\n targetTop += -tooltipHeight - margin;\n targetLeft += originWidth / 2 - tooltipWidth / 2;\n this.yMovement = -this.options.transitionMovement;\n } else if (this.options.position === 'right') {\n targetTop += originHeight / 2 - tooltipHeight / 2;\n targetLeft += originWidth + margin;\n this.xMovement = this.options.transitionMovement;\n } else if (this.options.position === 'left') {\n targetTop += originHeight / 2 - tooltipHeight / 2;\n targetLeft += -tooltipWidth - margin;\n this.xMovement = -this.options.transitionMovement;\n } else {\n targetTop += originHeight + margin;\n targetLeft += originWidth / 2 - tooltipWidth / 2;\n this.yMovement = this.options.transitionMovement;\n }\n\n const newCoordinates = this._repositionWithinScreen(\n targetLeft,\n targetTop,\n tooltipWidth,\n tooltipHeight\n );\n \n tooltip.style.top = newCoordinates.y+'px';\n tooltip.style.left = newCoordinates.x+'px';\n }\n\n _repositionWithinScreen(x, y, width, height) {\n const scrollLeft = M.getDocumentScrollLeft();\n const scrollTop = M.getDocumentScrollTop();\n let newX = x - scrollLeft;\n let newY = y - scrollTop;\n\n const bounding: Bounding = {\n left: newX,\n top: newY,\n width: width,\n height: height\n };\n const offset = this.options.margin + this.options.transitionMovement;\n const edges = M.checkWithinContainer(document.body, bounding, offset);\n\n if (edges.left) {\n newX = offset;\n } else if (edges.right) {\n newX -= newX + width - window.innerWidth;\n }\n if (edges.top) {\n newY = offset;\n } else if (edges.bottom) {\n newY -= newY + height - window.innerHeight;\n }\n return {\n x: newX + scrollLeft,\n y: newY + scrollTop\n };\n }\n\n _animateIn() {\n this._positionTooltip();\n this.tooltipEl.style.visibility = 'visible';\n anim.remove(this.tooltipEl);\n anim({\n targets: this.tooltipEl,\n opacity: this.options.opacity || 1,\n translateX: this.xMovement,\n translateY: this.yMovement,\n duration: this.options.inDuration,\n easing: 'easeOutCubic'\n });\n }\n\n _animateOut() {\n anim.remove(this.tooltipEl);\n anim({\n targets: this.tooltipEl,\n opacity: 0,\n translateX: 0,\n translateY: 0,\n duration: this.options.outDuration,\n easing: 'easeOutCubic'\n });\n }\n\n _handleMouseEnter() {\n this.isHovered = true;\n this.isFocused = false; // Allows close of tooltip when opened by focus.\n this.open(false);\n }\n\n _handleMouseLeave() {\n this.isHovered = false;\n this.isFocused = false; // Allows close of tooltip when opened by focus.\n this.close();\n }\n\n _handleFocus() {\n if (M.tabPressed) {\n this.isFocused = true;\n this.open(false);\n }\n }\n\n _handleBlur() {\n this.isFocused = false;\n this.close();\n }\n\n _getAttributeOptions() {\n const attributeOptions = {};\n const tooltipTextOption = this.el.getAttribute('data-tooltip');\n const positionOption = this.el.getAttribute('data-position');\n if (tooltipTextOption) {\n (attributeOptions as any).text = tooltipTextOption;\n }\n if (positionOption) {\n (attributeOptions as any).position = positionOption;\n }\n return attributeOptions;\n }\n }\n\n\n","type RGBColor = {\n r: number,\n g: number,\n b: number,\n}\n\ntype Position = {\n x: number,\n y: number,\n}\n\nexport class Waves {\n \n private static _offset(el) {\n const box = el.getBoundingClientRect();\n const docElem = document.documentElement;\n return {\n top: box.top + window.pageYOffset - docElem.clientTop,\n left: box.left + window.pageXOffset - docElem.clientLeft\n };\n }\n \n // https://phoenix-dx.com/css-techniques-for-material-ripple-effect/\n\n public static renderWaveEffect(targetElement: HTMLElement, position: Position|null = null, color: RGBColor|null = null): void {\n const isCentered = position === null;\n const duration = 500;\n let animationFrame, animationStart; \n const animationStep = function(timestamp) {\n if (!animationStart) {\n animationStart = timestamp;\n } \n const frame = timestamp - animationStart;\n if (frame < duration) {\n const easing = (frame/duration) * (2 - (frame/duration));\n const circle = isCentered ? 'circle at 50% 50%' : `circle at ${position.x}px ${position.y}px`;\n const waveColor = `rgba(${color?.r || 0}, ${color?.g || 0}, ${color?.b || 0}, ${ 0.3 * (1-easing) })`;\n const stop = 90 * easing + \"%\"; \n targetElement.style.backgroundImage = \"radial-gradient(\"+circle+\", \"+waveColor+\" \"+stop+\", transparent \"+stop+\")\"; \n animationFrame = window.requestAnimationFrame(animationStep);\n }\n else {\n targetElement.style.backgroundImage = 'none';\n window.cancelAnimationFrame(animationFrame);\n }\n };\n animationFrame = window.requestAnimationFrame(animationStep); \n }\n\n static Init() {\n document.addEventListener(\"DOMContentLoaded\", () => {\n document.body.addEventListener('click', e => {\n const trigger = <HTMLElement>e.target;\n const el = <HTMLElement>trigger.closest('.waves-effect');\n if (el && el.contains(trigger)) {\n const isCircular = el.classList.contains('waves-circle');\n const x = e.pageX - Waves._offset(el).left;\n const y = e.pageY - Waves._offset(el).top;\n\n let color = null;\n if (el.classList.contains('waves-light'))\n color = {r:255, g:255, b:255};\n \n Waves.renderWaveEffect(el, isCircular ? null : {x, y}, color);\n }\n });\n });\n\n }\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(238);\n",""],"names":[],"sourceRoot":""}
|