From c64b771cb43ff367d4f2dd9584aa75f465b47820 Mon Sep 17 00:00:00 2001 From: jndaniels Date: Mon, 28 Oct 2024 21:40:20 -0500 Subject: [PATCH] Modal popup --- .wappler/project.json | 4 +- app/config/routes.json | 5 + app/sockets/connect.json | 3 + app/sockets/disconnect.json | 3 + public/dmxAppConnect/config.js | 26 +++ .../dmxAnimateCSS/animate.min.css | 9 + .../dmxAnimateCSS/dmxAnimateCSS.js | 8 + .../dmxAnimateCSS/dmxAnimateCSS.js.map | 1 + .../dmxBootstrap5Modal/dmxBootstrap5Modal.js | 8 + .../dmxBootstrap5Modal.js.map | 1 + .../dmxBootstrap5Navigation.js | 50 +++++ .../dmxDatastore/dmxDatastore.js | 8 + .../dmxDatastore/dmxDatastore.js.map | 1 + .../dmxFormatter/dmxFormatter.js | 8 + .../dmxFormatter/dmxFormatter.js.map | 1 + .../dmxStateManagement/dmxStateManagement.js | 8 + .../dmxStateManagement.js.map | 1 + public/states.json | 204 ++++++++++++++++++ views/.wappler_folder.json | 6 + views/DAPage1.ejs | 15 ++ views/index.ejs | 67 +++++- views/layouts/main.ejs | 31 +++ 22 files changed, 465 insertions(+), 3 deletions(-) create mode 100644 app/sockets/connect.json create mode 100644 app/sockets/disconnect.json create mode 100644 public/dmxAppConnect/config.js create mode 100644 public/dmxAppConnect/dmxAnimateCSS/animate.min.css create mode 100644 public/dmxAppConnect/dmxAnimateCSS/dmxAnimateCSS.js create mode 100644 public/dmxAppConnect/dmxAnimateCSS/dmxAnimateCSS.js.map create mode 100644 public/dmxAppConnect/dmxBootstrap5Modal/dmxBootstrap5Modal.js create mode 100644 public/dmxAppConnect/dmxBootstrap5Modal/dmxBootstrap5Modal.js.map create mode 100644 public/dmxAppConnect/dmxBootstrap5Navigation/dmxBootstrap5Navigation.js create mode 100644 public/dmxAppConnect/dmxDatastore/dmxDatastore.js create mode 100644 public/dmxAppConnect/dmxDatastore/dmxDatastore.js.map create mode 100644 public/dmxAppConnect/dmxFormatter/dmxFormatter.js create mode 100644 public/dmxAppConnect/dmxFormatter/dmxFormatter.js.map create mode 100644 public/dmxAppConnect/dmxStateManagement/dmxStateManagement.js create mode 100644 public/dmxAppConnect/dmxStateManagement/dmxStateManagement.js.map create mode 100644 public/states.json create mode 100644 views/.wappler_folder.json create mode 100644 views/DAPage1.ejs diff --git a/.wappler/project.json b/.wappler/project.json index e8729f5..99d350e 100644 --- a/.wappler/project.json +++ b/.wappler/project.json @@ -38,8 +38,8 @@ "NodeImageType": "slim", "webLoggingMaxFiles": "5", "webLoggingMaxFileSize": "10m", - "databaseLoggingMaxFiles": "5", - "databaseLoggingMaxFileSize": "10m" + "dockerTimezone": "Etc/UTC", + "databaseConnectionType": "none" } ], "activeTarget": "Development", diff --git a/app/config/routes.json b/app/config/routes.json index 215bf5f..ef7425a 100644 --- a/app/config/routes.json +++ b/app/config/routes.json @@ -5,6 +5,11 @@ "page": "index", "routeType": "page", "layout": "main" + }, + { + "path": "/DAPage1", + "page": "DAPage1", + "layout": "main" } ] } \ No newline at end of file diff --git a/app/sockets/connect.json b/app/sockets/connect.json new file mode 100644 index 0000000..18cca0a --- /dev/null +++ b/app/sockets/connect.json @@ -0,0 +1,3 @@ +{ + "exec": {} +} \ No newline at end of file diff --git a/app/sockets/disconnect.json b/app/sockets/disconnect.json new file mode 100644 index 0000000..18cca0a --- /dev/null +++ b/app/sockets/disconnect.json @@ -0,0 +1,3 @@ +{ + "exec": {} +} \ No newline at end of file diff --git a/public/dmxAppConnect/config.js b/public/dmxAppConnect/config.js new file mode 100644 index 0000000..4450c90 --- /dev/null +++ b/public/dmxAppConnect/config.js @@ -0,0 +1,26 @@ +dmx.config({ + "main": { + "datastore1": [ + { + "type": "boolean", + "name": "dirty" + } + ] + }, + "index": { + "datastore1": [ + { + "type": "text", + "name": "da_fullName" + }, + { + "type": "text", + "name": "da_driverLicense" + }, + { + "type": "text", + "name": "da_driverLicenseState" + } + ] + } +}); diff --git a/public/dmxAppConnect/dmxAnimateCSS/animate.min.css b/public/dmxAppConnect/dmxAnimateCSS/animate.min.css new file mode 100644 index 0000000..a7e6830 --- /dev/null +++ b/public/dmxAppConnect/dmxAnimateCSS/animate.min.css @@ -0,0 +1,9 @@ + +@charset "UTF-8"; +/*! + * animate.css - https://animate.style/ + * Version - 4.1.1 + * Licensed under the Hippocratic License 2.1 - http://firstdonoharm.dev + * + * Copyright (c) 2023 Animate.css + */:root{--animate-duration:1s;--animate-delay:0;--animate-repeat:1}.animate__animated{animation-delay:0;animation-delay:var(--animate-delay);animation-duration:1s;animation-duration:var(--animate-duration);animation-fill-mode:both}.animate__animated.animate__infinite{animation-iteration-count:infinite}.animate__animated.animate__repeat-1{animation-iteration-count:1}.animate__animated.animate__repeat-2{animation-iteration-count:2}.animate__animated.animate__repeat-3{animation-iteration-count:3}.animate__animated.animate__delay-1s{animation-delay:1s}.animate__animated.animate__delay-2s{animation-delay:2s}.animate__animated.animate__delay-3s{animation-delay:3s}.animate__animated.animate__delay-4s{animation-delay:4s}.animate__animated.animate__delay-5s{animation-delay:5s}.animate__animated.animate__faster{animation-duration:.5s;animation-duration:calc(var(--animate-duration)/2)}.animate__animated.animate__fast{animation-duration:.8s;animation-duration:calc(var(--animate-duration)*.8)}.animate__animated.animate__slow{animation-duration:2s;animation-duration:calc(var(--animate-duration)*2)}.animate__animated.animate__slower{animation-duration:3s;animation-duration:calc(var(--animate-duration)*3)}@media (prefers-reduced-motion:reduce),print{.animate__animated{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important}.animate__animated[class*=Out]{opacity:0}}@keyframes bounce{0%,20%,53%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1);transform:translateZ(0)}40%,43%{animation-timing-function:cubic-bezier(.755,.05,.855,.06);transform:translate3d(0,-30px,0) scaleY(1.1)}70%{animation-timing-function:cubic-bezier(.755,.05,.855,.06);transform:translate3d(0,-15px,0) scaleY(1.05)}80%{transform:translateZ(0) scaleY(.95);transition-timing-function:cubic-bezier(.215,.61,.355,1)}90%{transform:translate3d(0,-4px,0) scaleY(1.02)}}.animate__bounce{animation-name:bounce;transform-origin:center bottom}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}.animate__flash{animation-name:flash}@keyframes pulse{0%{transform:scaleX(1)}50%{transform:scale3d(1.05,1.05,1.05)}to{transform:scaleX(1)}}.animate__pulse{animation-name:pulse;animation-timing-function:ease-in-out}@keyframes rubberBand{0%{transform:scaleX(1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scaleX(1)}}.animate__rubberBand{animation-name:rubberBand}@keyframes shakeX{0%,to{transform:translateZ(0)}10%,30%,50%,70%,90%{transform:translate3d(-10px,0,0)}20%,40%,60%,80%{transform:translate3d(10px,0,0)}}.animate__shakeX{animation-name:shakeX}@keyframes shakeY{0%,to{transform:translateZ(0)}10%,30%,50%,70%,90%{transform:translate3d(0,-10px,0)}20%,40%,60%,80%{transform:translate3d(0,10px,0)}}.animate__shakeY{animation-name:shakeY}@keyframes headShake{0%{transform:translateX(0)}6.5%{transform:translateX(-6px) rotateY(-9deg)}18.5%{transform:translateX(5px) rotateY(7deg)}31.5%{transform:translateX(-3px) rotateY(-5deg)}43.5%{transform:translateX(2px) rotateY(3deg)}50%{transform:translateX(0)}}.animate__headShake{animation-name:headShake;animation-timing-function:ease-in-out}@keyframes swing{20%{transform:rotate(15deg)}40%{transform:rotate(-10deg)}60%{transform:rotate(5deg)}80%{transform:rotate(-5deg)}to{transform:rotate(0deg)}}.animate__swing{animation-name:swing;transform-origin:top center}@keyframes tada{0%{transform:scaleX(1)}10%,20%{transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{transform:scaleX(1)}}.animate__tada{animation-name:tada}@keyframes wobble{0%{transform:translateZ(0)}15%{transform:translate3d(-25%,0,0) rotate(-5deg)}30%{transform:translate3d(20%,0,0) rotate(3deg)}45%{transform:translate3d(-15%,0,0) rotate(-3deg)}60%{transform:translate3d(10%,0,0) rotate(2deg)}75%{transform:translate3d(-5%,0,0) rotate(-1deg)}to{transform:translateZ(0)}}.animate__wobble{animation-name:wobble}@keyframes jello{0%,11.1%,to{transform:translateZ(0)}22.2%{transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{transform:skewX(6.25deg) skewY(6.25deg)}44.4%{transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{transform:skewX(.390625deg) skewY(.390625deg)}88.8%{transform:skewX(-.1953125deg) skewY(-.1953125deg)}}.animate__jello{animation-name:jello;transform-origin:center}@keyframes heartBeat{0%{transform:scale(1)}14%{transform:scale(1.3)}28%{transform:scale(1)}42%{transform:scale(1.3)}70%{transform:scale(1)}}.animate__heartBeat{animation-duration:1.3s;animation-duration:calc(var(--animate-duration)*1.3);animation-name:heartBeat;animation-timing-function:ease-in-out}@keyframes backInDown{0%{opacity:.7;transform:translateY(-1200px) scale(.7)}80%{opacity:.7;transform:translateY(0) scale(.7)}to{opacity:1;transform:scale(1)}}.animate__backInDown{animation-name:backInDown}@keyframes backInLeft{0%{opacity:.7;transform:translateX(-2000px) scale(.7)}80%{opacity:.7;transform:translateX(0) scale(.7)}to{opacity:1;transform:scale(1)}}.animate__backInLeft{animation-name:backInLeft}@keyframes backInRight{0%{opacity:.7;transform:translateX(2000px) scale(.7)}80%{opacity:.7;transform:translateX(0) scale(.7)}to{opacity:1;transform:scale(1)}}.animate__backInRight{animation-name:backInRight}@keyframes backInUp{0%{opacity:.7;transform:translateY(1200px) scale(.7)}80%{opacity:.7;transform:translateY(0) scale(.7)}to{opacity:1;transform:scale(1)}}.animate__backInUp{animation-name:backInUp}@keyframes backOutDown{0%{opacity:1;transform:scale(1)}20%{opacity:.7;transform:translateY(0) scale(.7)}to{opacity:.7;transform:translateY(700px) scale(.7)}}.animate__backOutDown{animation-name:backOutDown}@keyframes backOutLeft{0%{opacity:1;transform:scale(1)}20%{opacity:.7;transform:translateX(0) scale(.7)}to{opacity:.7;transform:translateX(-2000px) scale(.7)}}.animate__backOutLeft{animation-name:backOutLeft}@keyframes backOutRight{0%{opacity:1;transform:scale(1)}20%{opacity:.7;transform:translateX(0) scale(.7)}to{opacity:.7;transform:translateX(2000px) scale(.7)}}.animate__backOutRight{animation-name:backOutRight}@keyframes backOutUp{0%{opacity:1;transform:scale(1)}20%{opacity:.7;transform:translateY(0) scale(.7)}to{opacity:.7;transform:translateY(-700px) scale(.7)}}.animate__backOutUp{animation-name:backOutUp}@keyframes bounceIn{0%,20%,40%,60%,80%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:scale3d(.3,.3,.3)}20%{transform:scale3d(1.1,1.1,1.1)}40%{transform:scale3d(.9,.9,.9)}60%{opacity:1;transform:scale3d(1.03,1.03,1.03)}80%{transform:scale3d(.97,.97,.97)}to{opacity:1;transform:scaleX(1)}}.animate__bounceIn{animation-duration:.75s;animation-duration:calc(var(--animate-duration)*.75);animation-name:bounceIn}@keyframes bounceInDown{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0) scaleY(3)}60%{opacity:1;transform:translate3d(0,25px,0) scaleY(.9)}75%{transform:translate3d(0,-10px,0) scaleY(.95)}90%{transform:translate3d(0,5px,0) scaleY(.985)}to{transform:translateZ(0)}}.animate__bounceInDown{animation-name:bounceInDown}@keyframes bounceInLeft{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(-3000px,0,0) scaleX(3)}60%{opacity:1;transform:translate3d(25px,0,0) scaleX(1)}75%{transform:translate3d(-10px,0,0) scaleX(.98)}90%{transform:translate3d(5px,0,0) scaleX(.995)}to{transform:translateZ(0)}}.animate__bounceInLeft{animation-name:bounceInLeft}@keyframes bounceInRight{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(3000px,0,0) scaleX(3)}60%{opacity:1;transform:translate3d(-25px,0,0) scaleX(1)}75%{transform:translate3d(10px,0,0) scaleX(.98)}90%{transform:translate3d(-5px,0,0) scaleX(.995)}to{transform:translateZ(0)}}.animate__bounceInRight{animation-name:bounceInRight}@keyframes bounceInUp{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,3000px,0) scaleY(5)}60%{opacity:1;transform:translate3d(0,-20px,0) scaleY(.9)}75%{transform:translate3d(0,10px,0) scaleY(.95)}90%{transform:translate3d(0,-5px,0) scaleY(.985)}to{transform:translateZ(0)}}.animate__bounceInUp{animation-name:bounceInUp}@keyframes bounceOut{20%{transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;transform:scale3d(1.1,1.1,1.1)}to{opacity:0;transform:scale3d(.3,.3,.3)}}.animate__bounceOut{animation-duration:.75s;animation-duration:calc(var(--animate-duration)*.75);animation-name:bounceOut}@keyframes bounceOutDown{20%{transform:translate3d(0,10px,0) scaleY(.985)}40%,45%{opacity:1;transform:translate3d(0,-20px,0) scaleY(.9)}to{opacity:0;transform:translate3d(0,2000px,0) scaleY(3)}}.animate__bounceOutDown{animation-name:bounceOutDown}@keyframes bounceOutLeft{20%{opacity:1;transform:translate3d(20px,0,0) scaleX(.9)}to{opacity:0;transform:translate3d(-2000px,0,0) scaleX(2)}}.animate__bounceOutLeft{animation-name:bounceOutLeft}@keyframes bounceOutRight{20%{opacity:1;transform:translate3d(-20px,0,0) scaleX(.9)}to{opacity:0;transform:translate3d(2000px,0,0) scaleX(2)}}.animate__bounceOutRight{animation-name:bounceOutRight}@keyframes bounceOutUp{20%{transform:translate3d(0,-10px,0) scaleY(.985)}40%,45%{opacity:1;transform:translate3d(0,20px,0) scaleY(.9)}to{opacity:0;transform:translate3d(0,-2000px,0) scaleY(3)}}.animate__bounceOutUp{animation-name:bounceOutUp}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.animate__fadeIn{animation-name:fadeIn}@keyframes fadeInDown{0%{opacity:0;transform:translate3d(0,-100%,0)}to{opacity:1;transform:translateZ(0)}}.animate__fadeInDown{animation-name:fadeInDown}@keyframes fadeInDownBig{0%{opacity:0;transform:translate3d(0,-2000px,0)}to{opacity:1;transform:translateZ(0)}}.animate__fadeInDownBig{animation-name:fadeInDownBig}@keyframes fadeInLeft{0%{opacity:0;transform:translate3d(-100%,0,0)}to{opacity:1;transform:translateZ(0)}}.animate__fadeInLeft{animation-name:fadeInLeft}@keyframes fadeInLeftBig{0%{opacity:0;transform:translate3d(-2000px,0,0)}to{opacity:1;transform:translateZ(0)}}.animate__fadeInLeftBig{animation-name:fadeInLeftBig}@keyframes fadeInRight{0%{opacity:0;transform:translate3d(100%,0,0)}to{opacity:1;transform:translateZ(0)}}.animate__fadeInRight{animation-name:fadeInRight}@keyframes fadeInRightBig{0%{opacity:0;transform:translate3d(2000px,0,0)}to{opacity:1;transform:translateZ(0)}}.animate__fadeInRightBig{animation-name:fadeInRightBig}@keyframes fadeInUp{0%{opacity:0;transform:translate3d(0,100%,0)}to{opacity:1;transform:translateZ(0)}}.animate__fadeInUp{animation-name:fadeInUp}@keyframes fadeInUpBig{0%{opacity:0;transform:translate3d(0,2000px,0)}to{opacity:1;transform:translateZ(0)}}.animate__fadeInUpBig{animation-name:fadeInUpBig}@keyframes fadeInTopLeft{0%{opacity:0;transform:translate3d(-100%,-100%,0)}to{opacity:1;transform:translateZ(0)}}.animate__fadeInTopLeft{animation-name:fadeInTopLeft}@keyframes fadeInTopRight{0%{opacity:0;transform:translate3d(100%,-100%,0)}to{opacity:1;transform:translateZ(0)}}.animate__fadeInTopRight{animation-name:fadeInTopRight}@keyframes fadeInBottomLeft{0%{opacity:0;transform:translate3d(-100%,100%,0)}to{opacity:1;transform:translateZ(0)}}.animate__fadeInBottomLeft{animation-name:fadeInBottomLeft}@keyframes fadeInBottomRight{0%{opacity:0;transform:translate3d(100%,100%,0)}to{opacity:1;transform:translateZ(0)}}.animate__fadeInBottomRight{animation-name:fadeInBottomRight}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.animate__fadeOut{animation-name:fadeOut}@keyframes fadeOutDown{0%{opacity:1}to{opacity:0;transform:translate3d(0,100%,0)}}.animate__fadeOutDown{animation-name:fadeOutDown}@keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;transform:translate3d(0,2000px,0)}}.animate__fadeOutDownBig{animation-name:fadeOutDownBig}@keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;transform:translate3d(-100%,0,0)}}.animate__fadeOutLeft{animation-name:fadeOutLeft}@keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;transform:translate3d(-2000px,0,0)}}.animate__fadeOutLeftBig{animation-name:fadeOutLeftBig}@keyframes fadeOutRight{0%{opacity:1}to{opacity:0;transform:translate3d(100%,0,0)}}.animate__fadeOutRight{animation-name:fadeOutRight}@keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;transform:translate3d(2000px,0,0)}}.animate__fadeOutRightBig{animation-name:fadeOutRightBig}@keyframes fadeOutUp{0%{opacity:1}to{opacity:0;transform:translate3d(0,-100%,0)}}.animate__fadeOutUp{animation-name:fadeOutUp}@keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;transform:translate3d(0,-2000px,0)}}.animate__fadeOutUpBig{animation-name:fadeOutUpBig}@keyframes fadeOutTopLeft{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(-100%,-100%,0)}}.animate__fadeOutTopLeft{animation-name:fadeOutTopLeft}@keyframes fadeOutTopRight{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(100%,-100%,0)}}.animate__fadeOutTopRight{animation-name:fadeOutTopRight}@keyframes fadeOutBottomRight{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(100%,100%,0)}}.animate__fadeOutBottomRight{animation-name:fadeOutBottomRight}@keyframes fadeOutBottomLeft{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(-100%,100%,0)}}.animate__fadeOutBottomLeft{animation-name:fadeOutBottomLeft}@keyframes flip{0%{animation-timing-function:ease-out;transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn)}40%{animation-timing-function:ease-out;transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg)}50%{animation-timing-function:ease-in;transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg)}80%{animation-timing-function:ease-in;transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg)}to{animation-timing-function:ease-in;transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg)}}.animate__animated.animate__flip{animation-name:flip;backface-visibility:visible}@keyframes flipInX{0%{animation-timing-function:ease-in;opacity:0;transform:perspective(400px) rotateX(90deg)}40%{animation-timing-function:ease-in;transform:perspective(400px) rotateX(-20deg)}60%{opacity:1;transform:perspective(400px) rotateX(10deg)}80%{transform:perspective(400px) rotateX(-5deg)}to{transform:perspective(400px)}}.animate__flipInX{animation-name:flipInX;backface-visibility:visible!important}@keyframes flipInY{0%{animation-timing-function:ease-in;opacity:0;transform:perspective(400px) rotateY(90deg)}40%{animation-timing-function:ease-in;transform:perspective(400px) rotateY(-20deg)}60%{opacity:1;transform:perspective(400px) rotateY(10deg)}80%{transform:perspective(400px) rotateY(-5deg)}to{transform:perspective(400px)}}.animate__flipInY{animation-name:flipInY;backface-visibility:visible!important}@keyframes flipOutX{0%{transform:perspective(400px)}30%{opacity:1;transform:perspective(400px) rotateX(-20deg)}to{opacity:0;transform:perspective(400px) rotateX(90deg)}}.animate__flipOutX{animation-duration:.75s;animation-duration:calc(var(--animate-duration)*.75);animation-name:flipOutX;backface-visibility:visible!important}@keyframes flipOutY{0%{transform:perspective(400px)}30%{opacity:1;transform:perspective(400px) rotateY(-15deg)}to{opacity:0;transform:perspective(400px) rotateY(90deg)}}.animate__flipOutY{animation-duration:.75s;animation-duration:calc(var(--animate-duration)*.75);animation-name:flipOutY;backface-visibility:visible!important}@keyframes lightSpeedInRight{0%{opacity:0;transform:translate3d(100%,0,0) skewX(-30deg)}60%{opacity:1;transform:skewX(20deg)}80%{transform:skewX(-5deg)}to{transform:translateZ(0)}}.animate__lightSpeedInRight{animation-name:lightSpeedInRight;animation-timing-function:ease-out}@keyframes lightSpeedInLeft{0%{opacity:0;transform:translate3d(-100%,0,0) skewX(30deg)}60%{opacity:1;transform:skewX(-20deg)}80%{transform:skewX(5deg)}to{transform:translateZ(0)}}.animate__lightSpeedInLeft{animation-name:lightSpeedInLeft;animation-timing-function:ease-out}@keyframes lightSpeedOutRight{0%{opacity:1}to{opacity:0;transform:translate3d(100%,0,0) skewX(30deg)}}.animate__lightSpeedOutRight{animation-name:lightSpeedOutRight;animation-timing-function:ease-in}@keyframes lightSpeedOutLeft{0%{opacity:1}to{opacity:0;transform:translate3d(-100%,0,0) skewX(-30deg)}}.animate__lightSpeedOutLeft{animation-name:lightSpeedOutLeft;animation-timing-function:ease-in}@keyframes rotateIn{0%{opacity:0;transform:rotate(-200deg)}to{opacity:1;transform:translateZ(0)}}.animate__rotateIn{animation-name:rotateIn;transform-origin:center}@keyframes rotateInDownLeft{0%{opacity:0;transform:rotate(-45deg)}to{opacity:1;transform:translateZ(0)}}.animate__rotateInDownLeft{animation-name:rotateInDownLeft;transform-origin:left bottom}@keyframes rotateInDownRight{0%{opacity:0;transform:rotate(45deg)}to{opacity:1;transform:translateZ(0)}}.animate__rotateInDownRight{animation-name:rotateInDownRight;transform-origin:right bottom}@keyframes rotateInUpLeft{0%{opacity:0;transform:rotate(45deg)}to{opacity:1;transform:translateZ(0)}}.animate__rotateInUpLeft{animation-name:rotateInUpLeft;transform-origin:left bottom}@keyframes rotateInUpRight{0%{opacity:0;transform:rotate(-90deg)}to{opacity:1;transform:translateZ(0)}}.animate__rotateInUpRight{animation-name:rotateInUpRight;transform-origin:right bottom}@keyframes rotateOut{0%{opacity:1}to{opacity:0;transform:rotate(200deg)}}.animate__rotateOut{animation-name:rotateOut;transform-origin:center}@keyframes rotateOutDownLeft{0%{opacity:1}to{opacity:0;transform:rotate(45deg)}}.animate__rotateOutDownLeft{animation-name:rotateOutDownLeft;transform-origin:left bottom}@keyframes rotateOutDownRight{0%{opacity:1}to{opacity:0;transform:rotate(-45deg)}}.animate__rotateOutDownRight{animation-name:rotateOutDownRight;transform-origin:right bottom}@keyframes rotateOutUpLeft{0%{opacity:1}to{opacity:0;transform:rotate(-45deg)}}.animate__rotateOutUpLeft{animation-name:rotateOutUpLeft;transform-origin:left bottom}@keyframes rotateOutUpRight{0%{opacity:1}to{opacity:0;transform:rotate(90deg)}}.animate__rotateOutUpRight{animation-name:rotateOutUpRight;transform-origin:right bottom}@keyframes hinge{0%{animation-timing-function:ease-in-out}20%,60%{animation-timing-function:ease-in-out;transform:rotate(80deg)}40%,80%{animation-timing-function:ease-in-out;opacity:1;transform:rotate(60deg)}to{opacity:0;transform:translate3d(0,700px,0)}}.animate__hinge{animation-duration:2s;animation-duration:calc(var(--animate-duration)*2);animation-name:hinge;transform-origin:top left}@keyframes jackInTheBox{0%{opacity:0;transform:scale(.1) rotate(30deg);transform-origin:center bottom}50%{transform:rotate(-10deg)}70%{transform:rotate(3deg)}to{opacity:1;transform:scale(1)}}.animate__jackInTheBox{animation-name:jackInTheBox}@keyframes rollIn{0%{opacity:0;transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;transform:translateZ(0)}}.animate__rollIn{animation-name:rollIn}@keyframes rollOut{0%{opacity:1}to{opacity:0;transform:translate3d(100%,0,0) rotate(120deg)}}.animate__rollOut{animation-name:rollOut}@keyframes zoomIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}.animate__zoomIn{animation-name:zoomIn}@keyframes zoomInDown{0%{animation-timing-function:cubic-bezier(.55,.055,.675,.19);opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0)}60%{animation-timing-function:cubic-bezier(.175,.885,.32,1);opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,60px,0)}}.animate__zoomInDown{animation-name:zoomInDown}@keyframes zoomInLeft{0%{animation-timing-function:cubic-bezier(.55,.055,.675,.19);opacity:0;transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0)}60%{animation-timing-function:cubic-bezier(.175,.885,.32,1);opacity:1;transform:scale3d(.475,.475,.475) translate3d(10px,0,0)}}.animate__zoomInLeft{animation-name:zoomInLeft}@keyframes zoomInRight{0%{animation-timing-function:cubic-bezier(.55,.055,.675,.19);opacity:0;transform:scale3d(.1,.1,.1) translate3d(1000px,0,0)}60%{animation-timing-function:cubic-bezier(.175,.885,.32,1);opacity:1;transform:scale3d(.475,.475,.475) translate3d(-10px,0,0)}}.animate__zoomInRight{animation-name:zoomInRight}@keyframes zoomInUp{0%{animation-timing-function:cubic-bezier(.55,.055,.675,.19);opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,1000px,0)}60%{animation-timing-function:cubic-bezier(.175,.885,.32,1);opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,-60px,0)}}.animate__zoomInUp{animation-name:zoomInUp}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;transform:scale3d(.3,.3,.3)}to{opacity:0}}.animate__zoomOut{animation-name:zoomOut}@keyframes zoomOutDown{40%{animation-timing-function:cubic-bezier(.55,.055,.675,.19);opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,-60px,0)}to{animation-timing-function:cubic-bezier(.175,.885,.32,1);opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,2000px,0)}}.animate__zoomOutDown{animation-name:zoomOutDown;transform-origin:center bottom}@keyframes zoomOutLeft{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;transform:scale(.1) translate3d(-2000px,0,0)}}.animate__zoomOutLeft{animation-name:zoomOutLeft;transform-origin:left center}@keyframes zoomOutRight{40%{opacity:1;transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;transform:scale(.1) translate3d(2000px,0,0)}}.animate__zoomOutRight{animation-name:zoomOutRight;transform-origin:right center}@keyframes zoomOutUp{40%{animation-timing-function:cubic-bezier(.55,.055,.675,.19);opacity:1;transform:scale3d(.475,.475,.475) translate3d(0,60px,0)}to{animation-timing-function:cubic-bezier(.175,.885,.32,1);opacity:0;transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0)}}.animate__zoomOutUp{animation-name:zoomOutUp;transform-origin:center bottom}@keyframes slideInDown{0%{transform:translate3d(0,-100%,0);visibility:visible}to{transform:translateZ(0)}}.animate__slideInDown{animation-name:slideInDown}@keyframes slideInLeft{0%{transform:translate3d(-100%,0,0);visibility:visible}to{transform:translateZ(0)}}.animate__slideInLeft{animation-name:slideInLeft}@keyframes slideInRight{0%{transform:translate3d(100%,0,0);visibility:visible}to{transform:translateZ(0)}}.animate__slideInRight{animation-name:slideInRight}@keyframes slideInUp{0%{transform:translate3d(0,100%,0);visibility:visible}to{transform:translateZ(0)}}.animate__slideInUp{animation-name:slideInUp}@keyframes slideOutDown{0%{transform:translateZ(0)}to{transform:translate3d(0,100%,0);visibility:hidden}}.animate__slideOutDown{animation-name:slideOutDown}@keyframes slideOutLeft{0%{transform:translateZ(0)}to{transform:translate3d(-100%,0,0);visibility:hidden}}.animate__slideOutLeft{animation-name:slideOutLeft}@keyframes slideOutRight{0%{transform:translateZ(0)}to{transform:translate3d(100%,0,0);visibility:hidden}}.animate__slideOutRight{animation-name:slideOutRight}@keyframes slideOutUp{0%{transform:translateZ(0)}to{transform:translate3d(0,-100%,0);visibility:hidden}}.animate__slideOutUp{animation-name:slideOutUp} \ No newline at end of file diff --git a/public/dmxAppConnect/dmxAnimateCSS/dmxAnimateCSS.js b/public/dmxAppConnect/dmxAnimateCSS/dmxAnimateCSS.js new file mode 100644 index 0000000..aa597ba --- /dev/null +++ b/public/dmxAppConnect/dmxAnimateCSS/dmxAnimateCSS.js @@ -0,0 +1,8 @@ +/*! + App Connect Animate CSS + Version: 3.0.2 + (c) 2024 Wappler.io + @build 2024-07-05 14:11:55 + */ +dmx.animate=function(t,e,i,a){return t.cancelAnimate&&t.cancelAnimate(),dmx.animate.clear(t),new Promise(((n,o)=>{const r=`animate__${e}`,s=e=>{t.cancelAnimate=null,e.stopPropagation(),dmx.animate.clear(t),n()};t.cancelAnimate=()=>{t.removeEventListener("animationend",s),dmx.animate.clear(t),o()},a&&t.style.setProperty("--animate-delay",a+"ms"),i&&t.style.setProperty("--animate-duration",i+"ms"),t.classList.add("animate__animated",r),t.addEventListener("animationend",s,{once:!0})}))},dmx.animate.clear=function(t){t.style.removeProperty("--animate-delay"),t.style.removeProperty("--animate-duration"),t.classList.remove("animate__animated",...dmx.animate.effects.map((t=>"animate__"+t)))},dmx.animate.effects=["bounce","flash","pulse","rubberBand","shakeX","shakeY","headShake","swing","tada","wobble","jello","heartBeat","backInDown","backInLeft","backInRight","backInUp","backOutDown","backOutLeft","backOutRight","backOutUp","bounceIn","bounceInDown","bounceInLeft","bounceInRight","bounceInUp","bounceOut","bounceOutDown","bounceOutLeft","bounceOutRight","bounceOutUp","fadeIn","fadeInDown","fadeInDownBig","fadeInLeft","fadeInLeftBig","fadeInRight","fadeInRightBig","fadeInUp","fadeInUpBig","fadeInTopLeft","fadeInTopRight","fadeInBottomLeft","fadeInBottomRight","fadeOut","fadeOutDown","fadeOutDownBig","fadeOutLeft","fadeOutLeftBig","fadeOutRight","fadeOutRightBig","fadeOutUp","fadeOutUpBig","fadeOutTopLeft","fadeOutTopRight","fadeOutBottomLeft","fadeOutBottomRight","flip","flipInX","flipInY","flipOutX","flipOutY","lightSpeedInRight","lightSpeedInLeft","lightSpeedOutRight","lightSpeedOutLeft","rotateIn","rotateInDownLeft","rotateInDownRight","rotateInUpLeft","rotateInUpRight","rotateOut","rotateOutDownLeft","rotateOutDownRight","rotateOutUpLeft","rotateOutUpRight","hinge","jackInTheBox","rollIn","rollOut","zoomIn","zoomInDown","zoomInLeft","zoomInRight","zoomInUp","zoomOut","zoomOutDown","zoomOutLeft","zoomOutRight","zoomOutUp","slideInDown","slideInLeft","slideInRight","slideInUp","slideOutDown","slideOutLeft","slideOutRight","slideOutUp"],dmx.animate.observer=new IntersectionObserver((t=>{t.forEach((t=>{const{inview:e,outview:i}=t.target;t.target.ratio=t.intersectionRatio,t.target.animateVisible||t.target.style.setProperty("visibility","hidden"),t.intersectionRatio>=e.ratio?t.target.animateVisible||(t.target.animating=!0,t.target.animateVisible=!0,t.target.style.removeProperty("visibility"),dmx.animate(t.target,e.effect,e.duration,e.delay).then((()=>{t.target.animating=!1,t.target.style.removeProperty("visibility")})).catch((()=>{}))):i&&t.target.animateVisible&&(t.target.animating=!0,t.target.animateVisible=!1,dmx.animate(t.target,i.effect,i.duration,i.delay).then((()=>{t.target.animating=!1,t.target.style.setProperty("visibility","hidden")})).catch((()=>{})))}))}),{threshold:[0,.1,.2,.3,.4,.5,.6,.7,.8,.9,1]}),dmx.Component("animate",{initialData:{animating:!1,visible:!1},attributes:{showeffect:{type:String,default:null},hideeffect:{type:String,default:null},showduration:{type:Number,default:null},hideduration:{type:Number,default:null},showdelay:{type:Number,default:0},hidedelay:{type:Number,default:0},visible:{type:Boolean,default:!1}},methods:{animate(t,e){this.props.visible&&dmx.animate(this.$node,t,e)}},init(t){this.props.visible||t.style.setProperty("visibility","hidden")},performUpdate(t){t.has("visible")&&(this.props.visible?(this.props.showeffect&&(this.set("animating",!0),dmx.animate(this.$node,this.props.showeffect,this.props.showduration,this.props.showdelay).then((()=>{this.set("animating",!1)})).catch((()=>{}))),console.log("remove visibility"),this.$node.style.removeProperty("visibility")):this.props.hideeffect&&(this.set("animating",!0),dmx.animate(this.$node,this.props.hideeffect,this.props.hideduration,this.props.hidedelay).then((()=>{this.set("animating",!1),console.log("add visibility"),this.$node.style.setProperty("visibility","hidden")})).catch((()=>{}))),this.set("visible",this.props.visible))}}),dmx.Attribute("animate-inview","mounted",(function(t,e){return t.inview={effect:e.value,delay:e.modifiers.delay,duration:e.modifiers.duration,ratio:(parseInt(e.argument,10)||100)/100},t.style.setProperty("visibility","hidden"),dmx.animate.observer.observe(t),()=>{dmx.animate.observer.unobserve(t)}})),dmx.Attribute("animate-outview","mounted",(function(t,e){t.outview={effect:e.value,delay:e.modifiers.delay,duration:e.modifiers.duration,ratio:(parseInt(e.argument,10)||100)/100}})),dmx.Attribute("animate-enter","mounted",(function(t,e){const{value:i,modifiers:a}=e,{delay:n,duration:o,random:r}=a;dmx.animate(t,i,o,(r?10*Math.random():this.data.$index)*n)})),dmx.Attribute("animate-leave","mounted",(function(t,e){const{value:i,modifiers:a}=e,{delay:n,duration:o,random:r}=a;t.addEventListener("remove",(e=>{e.preventDefault();const a={top:t.offsetTop,left:t.offsetLeft,width:t.offsetWidth,height:t.offsetHeight};requestAnimationFrame((()=>{t.style.setProperty("position","absolute"),t.style.setProperty("top",a.top),t.style.setProperty("left",a.left),t.style.setProperty("width",a.width),t.style.setProperty("height",a.height),t.offsetParent.appendChild(t),dmx.animate(t,i,o,(r?10*Math.random():this.data.$index)*n)}))}))})),dmx.Attribute("animate-move","mounted",(function(t,e){if("repeat-item"!==this.type)return void console.warn("Attribute animate-move is only allowed on repeat items");if(!this.parent.props.key)return void console.warn("Attribute animate-move can only be used on keyed repeaters");const{delay:i,duration:a,random:n}=e.modifiers,o=["linear","ease-in","ease-out","ease-in-out"].find((t=>!!e.modifiers[t])),r=this.parent,s=e=>{t.pos=t.getBoundingClientRect()},d=e=>{t.pos&&(t.style.removeProperty("transform"),t.style.removeProperty("transition"),requestAnimationFrame((()=>{const{left:e,top:r}=t.getBoundingClientRect();t.style.setProperty("transform",`translate(${t.pos.left-e}px, ${t.pos.top-r}px)`),requestAnimationFrame((()=>{t.style.setProperty("transition",`transform ${a||800}ms ${o||"ease"} ${i?(n?10*Math.random():this.data.$index)*i:0}ms`),t.style.removeProperty("transform")}))})))};return r.addEventListener("update",s),r.addEventListener("updated",d),()=>{r.removeEventListener("update",s),r.removeEventListener("updated",d)}})); +//# sourceMappingURL=dmxAnimateCSS.js.map diff --git a/public/dmxAppConnect/dmxAnimateCSS/dmxAnimateCSS.js.map b/public/dmxAppConnect/dmxAnimateCSS/dmxAnimateCSS.js.map new file mode 100644 index 0000000..9689be4 --- /dev/null +++ b/public/dmxAppConnect/dmxAnimateCSS/dmxAnimateCSS.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["core/animate.js","components/animate.js","attributes/animateInview.js","attributes/animateOutview.js","attributes/animateEnter.js","attributes/animateLeave.js","attributes/animateMove.js"],"names":["dmx","animate","node","effect","duration","delay","cancelAnimate","clear","Promise","resolve","reject","className","complete","event","stopPropagation","removeEventListener","style","setProperty","classList","add","addEventListener","once","removeProperty","remove","effects","map","observer","IntersectionObserver","entries","forEach","entry","inview","outview","target","ratio","intersectionRatio","animateVisible","animating","then","catch","threshold","Component","initialData","visible","attributes","showeffect","type","String","default","hideeffect","showduration","Number","hideduration","showdelay","hidedelay","Boolean","methods","this","props","$node","init","performUpdate","updatedProps","has","set","console","log","Attribute","attr","value","modifiers","parseInt","argument","observe","unobserve","random","Math","data","$index","preventDefault","pos","top","offsetTop","left","offsetLeft","width","offsetWidth","height","offsetHeight","requestAnimationFrame","offsetParent","appendChild","warn","parent","key","easing","find","repeater","updateHandler","getBoundingClientRect","updatedHandler"],"mappings":"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","file":"dmxAnimateCSS.js","sourcesContent":["dmx.animate = function (node, effect, duration, delay) {\r\n if (node.cancelAnimate) node.cancelAnimate();\r\n\r\n dmx.animate.clear(node);\r\n\r\n return new Promise((resolve, reject) => {\r\n const className = `animate__${effect}`;\r\n const complete = (event) => {\r\n node.cancelAnimate = null;\r\n event.stopPropagation();\r\n dmx.animate.clear(node);\r\n resolve();\r\n }\r\n\r\n node.cancelAnimate = () => {\r\n node.removeEventListener('animationend', complete);\r\n dmx.animate.clear(node);\r\n reject();\r\n };\r\n \r\n if (delay) node.style.setProperty('--animate-delay', delay + 'ms');\r\n if (duration) node.style.setProperty('--animate-duration', duration + 'ms');\r\n\r\n node.classList.add('animate__animated', className);\r\n\r\n node.addEventListener('animationend', complete, { once: true });\r\n });\r\n};\r\n\r\ndmx.animate.clear = function (node) {\r\n node.style.removeProperty('--animate-delay');\r\n node.style.removeProperty('--animate-duration');\r\n node.classList.remove('animate__animated', ...dmx.animate.effects.map(effect => 'animate__' + effect));\r\n};\r\n\r\ndmx.animate.effects = [\r\n // Attension seekers\r\n 'bounce', 'flash', 'pulse', 'rubberBand', 'shakeX', 'shakeY', 'headShake', 'swing', 'tada', 'wobble', 'jello', 'heartBeat',\r\n // Back entrances\r\n 'backInDown', 'backInLeft', 'backInRight', 'backInUp',\r\n // Back exits\r\n 'backOutDown', 'backOutLeft', 'backOutRight', 'backOutUp',\r\n // Bouncing entrances\r\n 'bounceIn', 'bounceInDown', 'bounceInLeft', 'bounceInRight', 'bounceInUp',\r\n // Bouncing exits\r\n 'bounceOut', 'bounceOutDown', 'bounceOutLeft', 'bounceOutRight', 'bounceOutUp',\r\n // Fading entrances\r\n 'fadeIn', 'fadeInDown', 'fadeInDownBig', 'fadeInLeft', 'fadeInLeftBig', 'fadeInRight', 'fadeInRightBig',\r\n 'fadeInUp', 'fadeInUpBig', 'fadeInTopLeft', 'fadeInTopRight', 'fadeInBottomLeft', 'fadeInBottomRight',\r\n // Fading exits\r\n 'fadeOut', 'fadeOutDown', 'fadeOutDownBig', 'fadeOutLeft', 'fadeOutLeftBig', 'fadeOutRight', 'fadeOutRightBig',\r\n 'fadeOutUp', 'fadeOutUpBig', 'fadeOutTopLeft', 'fadeOutTopRight', 'fadeOutBottomLeft', 'fadeOutBottomRight',\r\n // Flippers\r\n 'flip', 'flipInX', 'flipInY', 'flipOutX', 'flipOutY',\r\n // Lightspeed\r\n 'lightSpeedInRight', 'lightSpeedInLeft', 'lightSpeedOutRight', 'lightSpeedOutLeft',\r\n // Rotating entrances\r\n 'rotateIn', 'rotateInDownLeft', 'rotateInDownRight', 'rotateInUpLeft', 'rotateInUpRight',\r\n // Rotating exits\r\n 'rotateOut', 'rotateOutDownLeft', 'rotateOutDownRight', 'rotateOutUpLeft', 'rotateOutUpRight',\r\n // Specials\r\n 'hinge', 'jackInTheBox', 'rollIn', 'rollOut',\r\n // Zooming entrances\r\n 'zoomIn', 'zoomInDown', 'zoomInLeft', 'zoomInRight', 'zoomInUp',\r\n // Zooming exits\r\n 'zoomOut', 'zoomOutDown', 'zoomOutLeft', 'zoomOutRight', 'zoomOutUp',\r\n // Sliding entrances\r\n 'slideInDown', 'slideInLeft', 'slideInRight', 'slideInUp',\r\n // Sliding exits\r\n 'slideOutDown', 'slideOutLeft', 'slideOutRight', 'slideOutUp'\r\n];\r\n\r\ndmx.animate.observer = new IntersectionObserver(entries => {\r\n entries.forEach(entry => {\r\n const { inview, outview } = entry.target;\r\n\r\n entry.target.ratio = entry.intersectionRatio;\r\n\r\n //if (!entry.isIntersecting) return;\r\n\r\n if (!entry.target.animateVisible) {\r\n entry.target.style.setProperty('visibility', 'hidden');\r\n }\r\n\r\n if (entry.intersectionRatio >= inview.ratio) {\r\n if (!entry.target.animateVisible) {\r\n entry.target.animating = true;\r\n entry.target.animateVisible = true;\r\n entry.target.style.removeProperty('visibility');\r\n\r\n dmx.animate(entry.target, inview.effect, inview.duration, inview.delay).then(() => {\r\n entry.target.animating = false;\r\n entry.target.style.removeProperty('visibility');\r\n }).catch(() => {});\r\n }\r\n } else {\r\n if (outview && entry.target.animateVisible) {\r\n entry.target.animating = true;\r\n entry.target.animateVisible = false;\r\n \r\n dmx.animate(entry.target, outview.effect, outview.duration, outview.delay).then(() => {\r\n entry.target.animating = false;\r\n entry.target.style.setProperty('visibility', 'hidden');\r\n }).catch(() => {});\r\n }\r\n }\r\n });\r\n}, {\r\n threshold: [0,.1,.2,.3,.4,.5,.6,.7,.8,.9,1]\r\n});\r\n","dmx.Component('animate', {\r\n\r\n initialData: {\r\n animating: false,\r\n visible: false,\r\n },\r\n\r\n attributes: {\r\n showeffect: {\r\n type: String,\r\n default: null,\r\n },\r\n\r\n hideeffect: {\r\n type: String,\r\n default: null,\r\n },\r\n\r\n showduration: {\r\n type: Number,\r\n default: null,\r\n },\r\n\r\n hideduration: {\r\n type: Number,\r\n default: null,\r\n },\r\n\r\n showdelay: {\r\n type: Number,\r\n default: 0,\r\n },\r\n\r\n hidedelay: {\r\n type: Number,\r\n default: 0,\r\n },\r\n\r\n visible: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n methods: {\r\n animate (effect, duration) {\r\n if (this.props.visible) {\r\n dmx.animate(this.$node, effect, duration);\r\n }\r\n },\r\n },\r\n\r\n init (node) {\r\n if (!this.props.visible) {\r\n node.style.setProperty('visibility', 'hidden');\r\n }\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has('visible')) {\r\n if (this.props.visible) {\r\n if (this.props.showeffect) {\r\n this.set('animating', true);\r\n\r\n dmx.animate(this.$node, this.props.showeffect, this.props.showduration, this.props.showdelay).then(() => {\r\n this.set('animating', false);\r\n }).catch(() => {});\r\n }\r\n\r\n console.log('remove visibility');\r\n this.$node.style.removeProperty('visibility');\r\n } else {\r\n if (this.props.hideeffect) {\r\n this.set('animating', true);\r\n\r\n dmx.animate(this.$node, this.props.hideeffect, this.props.hideduration, this.props.hidedelay).then(() => {\r\n this.set('animating', false);\r\n console.log('add visibility');\r\n this.$node.style.setProperty('visibility', 'hidden');\r\n }).catch(() => {});\r\n }\r\n }\r\n\r\n this.set('visible', this.props.visible);\r\n }\r\n },\r\n\r\n});\r\n","dmx.Attribute('animate-inview', 'mounted', function (node, attr) {\r\n node.inview = {\r\n effect: attr.value,\r\n delay: attr.modifiers.delay,\r\n duration: attr.modifiers.duration,\r\n ratio: (parseInt(attr.argument, 10) || 100) / 100,\r\n };\r\n\r\n node.style.setProperty('visibility', 'hidden');\r\n\r\n dmx.animate.observer.observe(node);\r\n\r\n return () => {\r\n dmx.animate.observer.unobserve(node);\r\n };\r\n});\r\n","dmx.Attribute('animate-outview', 'mounted', function (node, attr) {\r\n node.outview = {\r\n effect: attr.value,\r\n delay: attr.modifiers.delay,\r\n duration: attr.modifiers.duration,\r\n ratio: (parseInt(attr.argument, 10) || 100) / 100,\r\n };\r\n});","dmx.Attribute('animate-enter', 'mounted', function (node, attr) {\r\n const { value, modifiers } = attr;\r\n const { delay, duration, random } = modifiers;\r\n dmx.animate(node, value, duration, (random ? Math.random() * 10 : this.data.$index) * delay);\r\n});","dmx.Attribute('animate-leave', 'mounted', function (node, attr) {\r\n const { value, modifiers } = attr;\r\n const { delay, duration, random } = modifiers;\r\n\r\n // repeaters trigger a remove event on nodes that get removed\r\n node.addEventListener('remove', event => {\r\n event.preventDefault();\r\n\r\n const pos = {\r\n top: node.offsetTop,\r\n left: node.offsetLeft,\r\n width: node.offsetWidth,\r\n height: node.offsetHeight,\r\n };\r\n\r\n requestAnimationFrame(() => {\r\n node.style.setProperty('position', 'absolute');\r\n node.style.setProperty('top', pos.top);\r\n node.style.setProperty('left', pos.left);\r\n node.style.setProperty('width', pos.width);\r\n node.style.setProperty('height', pos.height);\r\n node.offsetParent.appendChild(node);\r\n \r\n dmx.animate(node, value, duration, (random ? Math.random() * 10 : this.data.$index) * delay);\r\n });\r\n });\r\n});","dmx.Attribute('animate-move', 'mounted', function (node, attr) {\r\n if (this.type !== 'repeat-item') {\r\n console.warn('Attribute animate-move is only allowed on repeat items');\r\n return;\r\n }\r\n\r\n if (!this.parent.props.key) {\r\n console.warn('Attribute animate-move can only be used on keyed repeaters');\r\n return;\r\n }\r\n\r\n const { delay, duration, random } = attr.modifiers;\r\n const easing = ['linear', 'ease-in', 'ease-out', 'ease-in-out'].find(easing => !!attr.modifiers[easing]);\r\n const repeater = this.parent;\r\n const updateHandler = event => {\r\n node.pos = node.getBoundingClientRect();\r\n };\r\n const updatedHandler = event => {\r\n if (node.pos) {\r\n node.style.removeProperty('transform');\r\n node.style.removeProperty('transition');\r\n\r\n requestAnimationFrame(() => {\r\n const { left, top } = node.getBoundingClientRect();\r\n\r\n node.style.setProperty('transform', `translate(${node.pos.left - left}px, ${node.pos.top - top}px)`);\r\n\r\n requestAnimationFrame(() => {\r\n node.style.setProperty('transition', `transform ${duration || 800}ms ${easing || 'ease'} ${delay ? ((random ? Math.random() * 10 : this.data.$index) * delay) : 0}ms`);\r\n node.style.removeProperty('transform');\r\n });\r\n });\r\n }\r\n };\r\n\r\n repeater.addEventListener('update', updateHandler);\r\n repeater.addEventListener('updated', updatedHandler);\r\n\r\n return () => {\r\n repeater.removeEventListener('update', updateHandler);\r\n repeater.removeEventListener('updated', updatedHandler);\r\n };\r\n});"]} \ No newline at end of file diff --git a/public/dmxAppConnect/dmxBootstrap5Modal/dmxBootstrap5Modal.js b/public/dmxAppConnect/dmxBootstrap5Modal/dmxBootstrap5Modal.js new file mode 100644 index 0000000..7dba246 --- /dev/null +++ b/public/dmxAppConnect/dmxBootstrap5Modal/dmxBootstrap5Modal.js @@ -0,0 +1,8 @@ +/*! + App Connect Bootstrap 5 Modal + Version: 2.0.1 + (c) 2024 Wappler.io + @build 2024-06-19 11:47:11 + */ +dmx.Component("bs5-modal",{initialData:{visible:!1},attributes:{nobackdrop:{type:Boolean,default:!1},nocloseonclick:{type:Boolean,default:!1},nokeyboard:{type:Boolean,default:!1},nofocus:{type:Boolean,default:!1},show:{type:Boolean,default:!1}},methods:{toggle(){this._instance.toggle()},show(){this._instance.show()},hide(){this._instance.hide()},update(){this._instance.handleUpdate()}},events:{show:Event,shown:Event,hide:Event,hidden:Event},init(s){s.addEventListener("show.bs.modal",this.dispatchEvent.bind(this,"show")),s.addEventListener("shown.bs.modal",this.dispatchEvent.bind(this,"shown")),s.addEventListener("hide.bs.modal",this.dispatchEvent.bind(this,"hide")),s.addEventListener("hidden.bs.modal",this.dispatchEvent.bind(this,"hidden")),s.addEventListener("show.bs.modal",(()=>{this.set("visible",!0)})),s.addEventListener("hidden.bs.modal",(()=>{this.set("visible",!1)})),this._instance=new bootstrap.Modal(s,{backdrop:!this.props.nobackdrop&&this.props.nocloseonclick?"static":!this.props.nobackdrop,keyboard:!this.props.nokeyboard,focus:!this.props.nofocus}),this.props.show&&requestAnimationFrame((()=>{this._instance.show(),this.set("visible",!0)}))},destroy(){this._instance.dispose()},performUpdate(s){(s.has("nobackdrop")||s.has("nocloseonclick")||s.has("nokeyboard")||s.has("nofocus"))&&(this._instance.dispose(),this._instance=new bootstrap.Modal(this.$node,{backdrop:!this.props.nobackdrop&&this.props.nocloseonclick?"static":!this.props.nobackdrop,keyboard:!this.props.nokeyboard,focus:!this.props.nofocus})),s.has("show")&&this._instance[this.props.show?"show":"hide"]()}}); +//# sourceMappingURL=dmxBootstrap5Modal.js.map diff --git a/public/dmxAppConnect/dmxBootstrap5Modal/dmxBootstrap5Modal.js.map b/public/dmxAppConnect/dmxBootstrap5Modal/dmxBootstrap5Modal.js.map new file mode 100644 index 0000000..5c67464 --- /dev/null +++ b/public/dmxAppConnect/dmxBootstrap5Modal/dmxBootstrap5Modal.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["components/modal.js"],"names":["dmx","Component","initialData","visible","attributes","nobackdrop","type","Boolean","default","nocloseonclick","nokeyboard","nofocus","show","methods","toggle","this","_instance","hide","update","handleUpdate","events","Event","shown","hidden","init","node","addEventListener","dispatchEvent","bind","set","bootstrap","Modal","backdrop","props","keyboard","focus","requestAnimationFrame","destroy","dispose","performUpdate","updatedProps","has","$node"],"mappings":";;;;;;AAAAA,IAAAC,UAAA,YAAA,CAEAC,YAAA,CACAC,SAAA,GAGAC,WAAA,CACAC,WAAA,CACAC,KAAAC,QACAC,SAAA,GAGAC,eAAA,CACAH,KAAAC,QACAC,SAAA,GAGAE,WAAA,CACAJ,KAAAC,QACAC,SAAA,GAGAG,QAAA,CACAL,KAAAC,QACAC,SAAA,GAGAI,KAAA,CACAN,KAAAC,QACAC,SAAA,IAIAK,QAAA,CACAC,SACAC,KAAAC,UAAAF,QACA,EAEAF,OACAG,KAAAC,UAAAJ,MACA,EAEAK,OACAF,KAAAC,UAAAC,MACA,EAEAC,SACAH,KAAAC,UAAAG,cACA,GAGAC,OAAA,CACAR,KAAAS,MACAC,MAAAD,MACAJ,KAAAI,MACAE,OAAAF,OAGAG,KAAAC,GACAA,EAAAC,iBAAA,gBAAAX,KAAAY,cAAAC,KAAAb,KAAA,SACAU,EAAAC,iBAAA,iBAAAX,KAAAY,cAAAC,KAAAb,KAAA,UACAU,EAAAC,iBAAA,gBAAAX,KAAAY,cAAAC,KAAAb,KAAA,SACAU,EAAAC,iBAAA,kBAAAX,KAAAY,cAAAC,KAAAb,KAAA,WAEAU,EAAAC,iBAAA,iBAAA,KAAAX,KAAAc,IAAA,WAAA,EAAA,IACAJ,EAAAC,iBAAA,mBAAA,KAAAX,KAAAc,IAAA,WAAA,EAAA,IAEAd,KAAAC,UAAA,IAAAc,UAAAC,MAAAN,EAAA,CACAO,UAAAjB,KAAAkB,MAAA5B,YAAAU,KAAAkB,MAAAxB,eAAA,UAAAM,KAAAkB,MAAA5B,WACA6B,UAAAnB,KAAAkB,MAAAvB,WACAyB,OAAApB,KAAAkB,MAAAtB,UAGAI,KAAAkB,MAAArB,MACAwB,uBAAA,KACArB,KAAAC,UAAAJ,OACAG,KAAAc,IAAA,WAAA,EAAA,GAGA,EAEAQ,UACAtB,KAAAC,UAAAsB,SACA,EAEAC,cAAAC,IACAA,EAAAC,IAAA,eAAAD,EAAAC,IAAA,mBAAAD,EAAAC,IAAA,eAAAD,EAAAC,IAAA,cACA1B,KAAAC,UAAAsB,UACAvB,KAAAC,UAAA,IAAAc,UAAAC,MAAAhB,KAAA2B,MAAA,CACAV,UAAAjB,KAAAkB,MAAA5B,YAAAU,KAAAkB,MAAAxB,eAAA,UAAAM,KAAAkB,MAAA5B,WACA6B,UAAAnB,KAAAkB,MAAAvB,WACAyB,OAAApB,KAAAkB,MAAAtB,WAIA6B,EAAAC,IAAA,SACA1B,KAAAC,UAAAD,KAAAkB,MAAArB,KAAA,OAAA,SAEA","file":"dmxBootstrap5Modal.js","sourcesContent":["dmx.Component('bs5-modal', {\r\n\r\n initialData: {\r\n visible: false,\r\n },\r\n\r\n attributes: {\r\n nobackdrop: {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n nocloseonclick: {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n nokeyboard: {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n nofocus: {\r\n type: Boolean,\r\n default: false\r\n },\r\n\r\n show: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n\r\n methods: {\r\n toggle () {\r\n this._instance.toggle();\r\n },\r\n\r\n show () {\r\n this._instance.show();\r\n },\r\n\r\n hide () {\r\n this._instance.hide();\r\n },\r\n\r\n update () {\r\n this._instance.handleUpdate();\r\n }\r\n },\r\n\r\n events: {\r\n show: Event,\r\n shown: Event,\r\n hide: Event,\r\n hidden: Event\r\n },\r\n\r\n init (node) {\r\n node.addEventListener('show.bs.modal', this.dispatchEvent.bind(this, 'show'));\r\n node.addEventListener('shown.bs.modal', this.dispatchEvent.bind(this, 'shown'));\r\n node.addEventListener('hide.bs.modal', this.dispatchEvent.bind(this, 'hide'));\r\n node.addEventListener('hidden.bs.modal', this.dispatchEvent.bind(this, 'hidden'));\r\n\r\n node.addEventListener('show.bs.modal', () => { this.set('visible', true); });\r\n node.addEventListener('hidden.bs.modal', () => { this.set('visible', false); });\r\n\r\n this._instance = new bootstrap.Modal(node, {\r\n backdrop: !this.props.nobackdrop && this.props.nocloseonclick ? 'static' : !this.props.nobackdrop,\r\n keyboard: !this.props.nokeyboard,\r\n focus: !this.props.nofocus,\r\n });\r\n\r\n if (this.props.show) {\r\n requestAnimationFrame(() => {\r\n this._instance.show();\r\n this.set('visible', true);\r\n });\r\n }\r\n },\r\n\r\n destroy () {\r\n this._instance.dispose();\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has('nobackdrop') || updatedProps.has('nocloseonclick') || updatedProps.has('nokeyboard') || updatedProps.has('nofocus')) {\r\n this._instance.dispose();\r\n this._instance = new bootstrap.Modal(this.$node, {\r\n backdrop: !this.props.nobackdrop && this.props.nocloseonclick ? 'static' : !this.props.nobackdrop,\r\n keyboard: !this.props.nokeyboard,\r\n focus: !this.props.nofocus,\r\n });\r\n }\r\n \r\n if (updatedProps.has('show')) {\r\n this._instance[this.props.show ? 'show' : 'hide']();\r\n }\r\n },\r\n\r\n});\r\n"]} \ No newline at end of file diff --git a/public/dmxAppConnect/dmxBootstrap5Navigation/dmxBootstrap5Navigation.js b/public/dmxAppConnect/dmxBootstrap5Navigation/dmxBootstrap5Navigation.js new file mode 100644 index 0000000..f31ddc3 --- /dev/null +++ b/public/dmxAppConnect/dmxBootstrap5Navigation/dmxBootstrap5Navigation.js @@ -0,0 +1,50 @@ +(function() { + + // ignore if routing is enabled + if (dmx.routing) return; + + dmx.config.mapping['a.nav-link:not([href^="#"])'] = 'nav-link'; + + dmx.Component('nav-link', { + + init (node) { + this._stateHandler = this._stateHandler.bind(this); + window.addEventListener("popstate", this._stateHandler); + window.addEventListener("pushstate", this._stateHandler); + window.addEventListener("replacestate", this._stateHandler); + window.addEventListener('hashchange', this._stateHandler); + this._stateHandler(); + }, + + destroy () { + window.removeEventListener("popstate", this._stateHandler); + window.removeEventListener("pushstate", this._stateHandler); + window.removeEventListener("replacestate", this._stateHandler); + window.removeEventListener('hashchange', this._stateHandler); + }, + + _stateHandler () { + const node = this.$node; + const active = node.href == window.location.href || node.href == window.location.href.split("?")[0].split("#")[0]; + + node.classList.toggle('active', active); + + if (node.classList.contains('dropdown-item')) { + const items = node.parentNode.querySelectorAll('.dropdown-item'); + node.classList.remove('active'); + + for (let i = 0; i < items.length; i++) { + const match = items[i].href == window.location.href || items[i].href == window.location.href.split("?")[0].split("#")[0]; + if (match) { + items[i].classList.add('active'); + node.classList.add('active'); + } else { + items[i].classList.remove('active'); + } + } + } + }, + + }); + +})() \ No newline at end of file diff --git a/public/dmxAppConnect/dmxDatastore/dmxDatastore.js b/public/dmxAppConnect/dmxDatastore/dmxDatastore.js new file mode 100644 index 0000000..5e726aa --- /dev/null +++ b/public/dmxAppConnect/dmxDatastore/dmxDatastore.js @@ -0,0 +1,8 @@ +/*! + App Connect Datastore + Version: 2.0.0 + (c) 2024 Wappler.io + @build 2024-04-15 17:48:46 + */ +dmx.Component("datastore",{initialData:{batch:!1,data:[]},attributes:{session:{type:Boolean,default:!1},columns:{type:Object,default:null}},methods:{insert(e){this._insert(e)},update(e,t){this._update(e,t)},upsert(e,t){this._upsert(e,t)},delete(e){this._delete(e)},clear(){this._clear()},get(e){return this._filter(e)},startBatch(){this.set("batch",!0)},endBatch(){this.set("batch",!1),this._updateData()}},events:{inserted:Event,updated:Event,deleted:Event},render:!1,init(){this._records=[],this._lastid=0,this._save=this._save.bind(this),this._updateData=this._updateData.bind(this),this._storageHandler=this._storageHandler.bind(this),window.addEventListener("storage",this._storageHandler),this._read()},destroy(){window.removeEventListener("storage",this._storageHandler)},performUpdate(e){e.has("columns")&&this._updateData()},_read(){try{const e=JSON.parse(this._store().getItem("datastore_"+this.name));e&&(e.records&&(this._records=e.records),e.lastid&&(this._lastid=e.lastid),this._updateData())}catch(e){console.warn("Error parsing datastore",e)}},_filter(e){return"number"==typeof e&&(e={$id:e}),this._records.filter((t=>{if(Array.isArray(e)){for(const s=0;s{const s=this._mergeData({$id:++this._lastid},e);this._records.push(s),t.inserted.push(dmx.clone(s))})),dmx.debug&&console.timeEnd("_insert"+this.name),this._save(),this.dispatchEvent("inserted",null,t)},_update(e,t){if(!this._validData(t))return void console.warn("Invalid data!",t);const s={inserted:[],deleted:[]};dmx.debug&&(console.debug("_update method"),console.time("_update"+this.name)),this._filter(e).forEach((e=>{const i=this._mergeData(e,t);dmx.equal(e,i)||(s.deleted.push(dmx.clone(e)),s.inserted.push(dmx.clone(i)),Object.assign(e,i))})),dmx.debug&&console.timeEnd("_update"+this.name),this._save(),this.dispatchEvent("updated",null,s)},_upsert(e,t){this._filter(e).length?this._update(e,t):this._insert(t)},_delete(e){const t={inserted:[],deleted:[]};"number"==typeof e&&(e={$id:e}),dmx.debug&&(console.debug("_delete method"),console.time("_delete"+this.name)),this._records=this._records.filter((s=>{for(const i in e)if(s[i]===e[i])return t.deleted.push(dmx.clone(s)),!1;return!0})),dmx.debug&&console.timeEnd("_delete"+this.name),this._save(),this.dispatchEvent("deleted",null,t)},_clear(){this._records=[],this._lastid=0,this._save()},_validData:e=>"object"==typeof e&&!Array.isArray(e),_mergeData(e,t){dmx.debug&&(console.debug("Merge Data"),console.time("merge"+this.name));const s=Object.assign({},e);for(const i in t){let a=t[i];this._isExpression(a)&&(a=dmx.parse(a,dmx.DataScope(e,this))),s[i]=a}return dmx.debug&&console.timeEnd("merge"+this.name),s},_updateData(){this.data.batch||(this.props.columns&&"object"==typeof this.props.columns?(dmx.debug&&(console.debug("Update data columns"),console.time("update"+this.name)),this.set("data",this._records.map(((e,t)=>{const s=dmx.clone(e),i=dmx.DataScope({$value:e,$index:t,$key:t,...e},this);for(const e in this.props.columns){let t=this.props.columns[e];this._isExpression(t)&&(t=dmx.parse(t,i)),s[e]=t}return s}))),dmx.debug&&console.timeEnd("update"+this.name)):(dmx.debug&&(console.debug("Update data records"),console.time("update"+this.name)),this.set("data",dmx.clone(this._records)),dmx.debug&&console.timeEnd("update"+this.name)))},_save(){this._updateData(),this.delay&&clearTimeout(this.delay),this.delay=setTimeout((()=>{dmx.debug&&(console.debug("Save data to storage"),console.time("store"+this.name));const e=JSON.stringify({records:this._records,lastid:this._lastid});this._store().setItem("datastore_"+this.name,e),dmx.debug&&console.timeEnd("store"+this.name)}))},_isExpression:e=>"string"==typeof e&&e.includes("{{"),_array:e=>Array.isArray(e)?e:[e],_store(){return window[(this.props.session?"session":"local")+"Storage"]},_storageHandler(e){this._read()}}); +//# sourceMappingURL=dmxDatastore.js.map diff --git a/public/dmxAppConnect/dmxDatastore/dmxDatastore.js.map b/public/dmxAppConnect/dmxDatastore/dmxDatastore.js.map new file mode 100644 index 0000000..4cb19fb --- /dev/null +++ b/public/dmxAppConnect/dmxDatastore/dmxDatastore.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["components/datastore.js"],"names":["dmx","Component","initialData","batch","data","attributes","session","type","Boolean","default","columns","Object","methods","insert","this","_insert","update","filter","_update","upsert","_upsert","delete","_delete","clear","_clear","get","_filter","startBatch","set","endBatch","_updateData","events","inserted","Event","updated","deleted","render","init","_records","_lastid","_save","bind","_storageHandler","window","addEventListener","_read","destroy","removeEventListener","performUpdate","updatedProps","has","JSON","parse","_store","getItem","name","records","lastid","err","console","warn","$id","record","Array","isArray","i","length","prop","result","debug","time","_array","forEach","entry","_mergeData","push","clone","timeEnd","dispatchEvent","_validData","updatedRecord","equal","assign","merged","value","_isExpression","DataScope","props","map","index","scope","$value","$index","$key","column","delay","clearTimeout","setTimeout","stringify","setItem","includes","event"],"mappings":"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","file":"dmxDatastore.js","sourcesContent":["dmx.Component('datastore', {\r\n\r\n initialData: {\r\n batch: false,\r\n data: [],\r\n },\r\n\r\n attributes: {\r\n session: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n columns: {\r\n type: Object,\r\n default: null,\r\n },\r\n },\r\n\r\n methods: {\r\n insert (data) {\r\n this._insert(data);\r\n },\r\n\r\n update (filter, data) {\r\n this._update(filter, data);\r\n },\r\n\r\n upsert (filter, data) {\r\n this._upsert(filter, data);\r\n },\r\n\r\n delete (filter) {\r\n this._delete(filter);\r\n },\r\n\r\n clear () {\r\n this._clear();\r\n },\r\n\r\n get (filter) {\r\n return this._filter(filter)\r\n },\r\n\r\n startBatch () {\r\n this.set('batch', true);\r\n },\r\n\r\n endBatch () {\r\n this.set('batch', false);\r\n this._updateData();\r\n },\r\n },\r\n\r\n events: {\r\n inserted: Event,\r\n updated: Event,\r\n deleted: Event,\r\n },\r\n\r\n render: false,\r\n\r\n init () {\r\n this._records = [];\r\n this._lastid = 0;\r\n\r\n this._save = this._save.bind(this);\r\n this._updateData = this._updateData.bind(this);\r\n this._storageHandler = this._storageHandler.bind(this);\r\n\r\n window.addEventListener('storage', this._storageHandler);\r\n\r\n this._read();\r\n },\r\n\r\n destroy () {\r\n window.removeEventListener('storage', this._storageHandler);\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has('columns')) {\r\n this._updateData();\r\n }\r\n },\r\n\r\n _read () {\r\n try {\r\n const data = JSON.parse(this._store().getItem('datastore_' + this.name));\r\n\r\n if (data) {\r\n if (data.records) this._records = data.records;\r\n if (data.lastid) this._lastid = data.lastid;\r\n this._updateData();\r\n }\r\n } catch (err) {\r\n console.warn('Error parsing datastore', err);\r\n }\r\n },\r\n\r\n _filter (filter) {\r\n if (typeof filter == 'number') {\r\n filter = { $id: filter };\r\n }\r\n\r\n return this._records.filter(record => {\r\n if (Array.isArray(filter)) {\r\n for (const i = 0; i < filter.length; i++) {\r\n for (const prop in filter[i]) {\r\n if (record[prop] === filter[i][prop]) return true;\r\n }\r\n }\r\n } else {\r\n for (const prop in filter) {\r\n if (record[prop] === filter[prop]) return true;\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n },\r\n\r\n _insert (data) {\r\n const result = { inserted: [], deleted: [] };\r\n\r\n if (dmx.debug) {\r\n console.debug('_insert method');\r\n console.time('_insert' + this.name);\r\n }\r\n \r\n this._array(data).forEach(entry => {\r\n const record = this._mergeData({ $id: ++this._lastid }, entry);\r\n this._records.push(record);\r\n result.inserted.push(dmx.clone(record));\r\n });\r\n\r\n if (dmx.debug) {\r\n console.timeEnd('_insert' + this.name);\r\n }\r\n this._save();\r\n\r\n this.dispatchEvent('inserted', null, result);\r\n },\r\n\r\n _update (filter, data) {\r\n if (!this._validData(data)) {\r\n console.warn('Invalid data!', data);\r\n return;\r\n }\r\n\r\n const result = { inserted: [], deleted: [] };\r\n\r\n if (dmx.debug) {\r\n console.debug('_update method');\r\n console.time('_update' + this.name);\r\n }\r\n\r\n this._filter(filter).forEach(record => {\r\n const updatedRecord = this._mergeData(record, data);\r\n if (!dmx.equal(record, updatedRecord)) {\r\n result.deleted.push(dmx.clone(record));\r\n result.inserted.push(dmx.clone(updatedRecord));\r\n Object.assign(record, updatedRecord);\r\n }\r\n });\r\n\r\n if (dmx.debug) {\r\n console.timeEnd('_update' + this.name);\r\n }\r\n\r\n this._save();\r\n\r\n this.dispatchEvent('updated', null, result);\r\n },\r\n\r\n _upsert (filter, data) {\r\n const toUpdate = this._filter(filter);\r\n\r\n if (toUpdate.length) {\r\n this._update(filter, data);\r\n } else {\r\n this._insert(data);\r\n }\r\n },\r\n\r\n _delete (filter) {\r\n const result = { inserted: [], deleted: [] };\r\n\r\n if (typeof filter == 'number') {\r\n filter = { $id: filter };\r\n }\r\n\r\n if (dmx.debug) {\r\n console.debug('_delete method');\r\n console.time('_delete' + this.name);\r\n }\r\n\r\n this._records = this._records.filter(record => {\r\n for (const prop in filter) {\r\n if (record[prop] === filter[prop]) {\r\n result.deleted.push(dmx.clone(record));\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n });\r\n\r\n if (dmx.debug) {\r\n console.timeEnd('_delete' + this.name);\r\n }\r\n\r\n this._save();\r\n\r\n this.dispatchEvent('deleted', null, result);\r\n },\r\n\r\n _clear () {\r\n this._records = [];\r\n this._lastid = 0;\r\n this._save();\r\n },\r\n\r\n _validData (data) {\r\n return typeof data == 'object' && !Array.isArray(data);\r\n },\r\n\r\n _mergeData (record, data) {\r\n if (dmx.debug) {\r\n console.debug('Merge Data');\r\n console.time('merge' + this.name);\r\n }\r\n\r\n const merged = Object.assign({}, record);\r\n\r\n for (const prop in data) {\r\n let value = data[prop];\r\n\r\n if (this._isExpression(value)) {\r\n value = dmx.parse(value, dmx.DataScope(record, this));\r\n }\r\n\r\n merged[prop] = value;\r\n }\r\n\r\n if (dmx.debug) {\r\n console.timeEnd('merge' + this.name);\r\n }\r\n\r\n return merged;\r\n },\r\n\r\n _updateData () {\r\n if (this.data.batch) return;\r\n if (this.props.columns && typeof this.props.columns == 'object') {\r\n if (dmx.debug) {\r\n console.debug('Update data columns');\r\n console.time('update' + this.name);\r\n }\r\n this.set('data', this._records.map((record, index) => {\r\n const updatedRecord = dmx.clone(record);\r\n const scope = dmx.DataScope({ $value: record, $index: index, $key: index , ...record }, this);\r\n\r\n for (const column in this.props.columns) {\r\n let value = this.props.columns[column];\r\n\r\n if (this._isExpression(value)) {\r\n value = dmx.parse(value, scope);\r\n }\r\n\r\n updatedRecord[column] = value;\r\n }\r\n\r\n return updatedRecord;\r\n }));\r\n if (dmx.debug) {\r\n console.timeEnd('update' + this.name);\r\n }\r\n } else {\r\n if (dmx.debug) {\r\n console.debug('Update data records');\r\n console.time('update' + this.name);\r\n }\r\n this.set('data', dmx.clone(this._records));\r\n if (dmx.debug) {\r\n console.timeEnd('update' + this.name);\r\n }\r\n }\r\n },\r\n\r\n _save () {\r\n this._updateData();\r\n\r\n if (this.delay) {\r\n clearTimeout(this.delay);\r\n }\r\n\r\n this.delay = setTimeout(() => {\r\n if (dmx.debug) {\r\n console.debug('Save data to storage');\r\n console.time('store' + this.name);\r\n }\r\n const data = JSON.stringify({\r\n records: this._records,\r\n lastid: this._lastid,\r\n });\r\n\r\n this._store().setItem('datastore_' + this.name, data);\r\n if (dmx.debug) {\r\n console.timeEnd('store' + this.name);\r\n }\r\n });\r\n },\r\n\r\n _isExpression (value) {\r\n return typeof value == 'string' && value.includes('{{');\r\n },\r\n\r\n _array (data) {\r\n return Array.isArray(data) ? data : [data];\r\n },\r\n\r\n _store () {\r\n return window[(this.props.session ? 'session' : 'local') + 'Storage'];\r\n },\r\n\r\n _storageHandler (event) {\r\n this._read();\r\n },\r\n\r\n});\r\n"]} \ No newline at end of file diff --git a/public/dmxAppConnect/dmxFormatter/dmxFormatter.js b/public/dmxAppConnect/dmxFormatter/dmxFormatter.js new file mode 100644 index 0000000..f4ce551 --- /dev/null +++ b/public/dmxAppConnect/dmxFormatter/dmxFormatter.js @@ -0,0 +1,8 @@ +/*! + App Connect Formatter + Version: 2.0.3 + (c) 2024 Wappler.io + @build 2024-07-04 15:04:32 + */ +dmx.isValidDate=function(e){return e&&"Invalid Date"!=e.toString()},dmx.resetTime=function(e){return e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0),e},dmx.formatDate=function(e){const t=(e,t)=>("0000"+t).slice(-e);return t(4,e.getFullYear())+"-"+t(2,e.getMonth()+1)+"-"+t(2,e.getDate())+" "+t(2,e.getHours())+":"+t(2,e.getMinutes())+":"+t(2,e.getSeconds())+"."+t(3,e.getMilliseconds())},dmx.Formatters("global",{default:(e,t)=>null==e?t:e,bool:e=>Boolean(e),string:e=>null==e?"":String(e),number:e=>Number(e),date(e){const t=dmx.parseDate(e);if(dmx.isValidDate(t))return dmx.formatDate(t)}}),dmx.Formatters("any",{default:(e,t)=>null==e?t:e,isDefined:e=>null!=e,isEmpty(e){const t=typeof e;if("undefined"==t)return!0;if("string"==t)return 0==e.length;if("number"==t)return 0==e;if("boolean"==t)return 0==e;if("object"==t){if(Array.isArray(e))return 0==e.length;for(let t in e)if(e.hasOwnProperty(t))return!1;return!0}return!1},toBool:e=>Boolean(e),toJSON:e=>JSON.stringify(e),toNumber:e=>Number(e),toBigInt:e=>BigInt(e),toString:e=>null==e?"":String(e),toTimestamp(e){const t=dmx.parseDate(e);if(dmx.isValidDate(t))return Math.floor(t.getTime()/1e3)},toDate(e){const t=dmx.parseDate(e);if(dmx.isValidDate(t))return dmx.formatDate(t)},toUTCDate(e){const t=dmx.parseDate(e);if(dmx.isValidDate(t))return t.toISOString()},toISODate(e){const t=(e,t)=>("0000"+t).slice(-e),a=dmx.parseDate(e);if(dmx.isValidDate(a))return`${t(4,a.getFullYear())}-${t(2,a.getMonth()+1)}-${t(2,a.getDate())}`},toISOTime(e,t){const a=(e,t)=>("0000"+t).slice(-e),r=dmx.parseDate(e);if(dmx.isValidDate(r))return`${a(2,r.getHours())}:${a(2,r.getMinutes())}:${a(2,r.getSeconds())}${t?"."+a(3,r.getMilliseconds()):""}`}}),dmx.propCheck=/^\w+$/,dmx.Formatters("array",{toKeyedObject(e,t,a){const r=dmx.propCheck.test(t),s=dmx.propCheck.test(a);return e.reduce(((e,n,d)=>{const i={...n,$index:d,$key:d,$value:n};return e[r?n[t]:dmx.parse(t,dmx.DataScope(i,this))]=s?n[a]:dmx.parse(a,dmx.DataScope(i,this)),e}),{})},hasItems:e=>!!e.length,contains:(e,t)=>e.includes(t),join:(e,t)=>e.join(t),count:e=>e.length,top:(e,t=1)=>e.length?e.slice(0,t):[],last:(e,t)=>e.length?null==t?e[e.length-1]:e.slice(-t):null==t?void 0:[],first:e=>e[0],get:(e,t)=>e[t],slice:(e,t,a)=>e.length?e.slice(t,a):[],reverse:e=>e.length?e.slice(0).reverse():[],randomize(e){if(!e.length)return[];const t=dmx.randomizer(this.seed*dmx.hashCode(e));let a,r,s=e.length;for(e=e.slice(0);0!==s;)r=Math.floor(t()*s--),a=e[s],e[s]=e[r],e[r]=a;return e},filter(e,t){return e.length?("$"==t[0]&&(e=dmx.repeatItems(e)),e.filter((e=>dmx.parse(t,dmx.DataScope(e,this))))):[]},map(e,t){return e.length?("$"==t[0]&&(e=dmx.repeatItems(e)),e.map((e=>dmx.parse(t,dmx.DataScope(e,this))))):[]},where(e,t,a,r="==",s=!1){return e.length?("$"==t[0]&&(e=dmx.repeatItems(e)),e.filter((e=>{var n=dmx.propCheck.test(t)?e[t]:dmx.parse(t,dmx.DataScope(e,this));switch(r){case"startsWith":return s?String(n).toLowerCase().startsWith(a.toLowerCase()):String(n).startsWith(a);case"endsWith":return s?String(n).toLowerCase().endsWith(a.toLowerCase()):String(n).endsWith(a);case"contains":return s?String(n).toLowerCase().includes(a.toLowerCase()):String(n).includes(a);case"notContains":return s?!String(n).toLowerCase().includes(a.toLowerCase()):!String(n).includes(a);case"inArray":return s?Array.isArray(a)&&a.includes(n.toLowerCase()):Array.isArray(a)&&a.includes(n);case"notInArray":return s?!(Array.isArray(a)&&a.includes(n.toLowerCase())):!(Array.isArray(a)&&a.includes(n));case"fuzzySearch":return function(e,t){if(null==t)return!1;const a=e.length,r=t.length;if(s&&(e=e.toLowerCase(),t=t.toLowerCase()),r>a)return!1;if(r===a)return e===t;e:for(let s=0,n=0;s":return n>a;case">=":return n>=a}return!0}))):[]},values(e,t){if(!e.length)return[];const a=dmx.propCheck.test(t);return e.map((e=>a?e[t]:dmx.parse(t,new dmx.DataScope(e,this))))},groupBy(e,t){if(!e.length)return{};const a=dmx.propCheck.test(t);return e.reduce(((e,r)=>{const s=a?r[t]:dmx.parse(t,new dmx.DataScope(r,this));return e[s]?e[s].push(r):e[s]=[r],e}),{})},unique(e,t){if(!e.length)return[];if(t){const a=dmx.propCheck.test(t);e=e.map((e=>a?e[t]:dmx.parse(t,dmx.DataScope(e,this))))}return Array.from(new Set(e))},sort(e,t){if(!e.length)return[];const a=!t||dmx.propCheck.test(t);return e.slice(0).sort(((e,r)=>(t&&(e=a?e[t]:dmx.parse(t,dmx.DataScope(e,this)),r=a?r[t]:dmx.parse(t,dmx.DataScope(r,this))),er?1:0)))},min(e,t){if(e.length){if(t){const a=dmx.propCheck.test(t);e=e.map((e=>a?e[t]:dmx.parse(t,dmx.DataScope(e,this))))}return Math.min.apply(null,e)}},max(e,t){if(e.length){if(t){const a=dmx.propCheck.test(t);e=e.map((e=>a?e[t]:dmx.parse(t,dmx.DataScope(e,this))))}return Math.max.apply(null,e)}},sum(e,t){if(!e.length)return 0;const a=!t||dmx.propCheck.test(t);return e.reduce(((e,r)=>(t&&(r=a?r[t]:dmx.parse(t,dmx.DataScope(r,this))),e+Number(r))),0)},avg(e,t){if(!e.length)return 0;const a=!t||dmx.propCheck.test(t);return e.reduce(((e,r)=>(t&&(r=a?r[t]:dmx.parse(t,dmx.DataScope(r,this))),e+Number(r))),0)/e.length}}),dmx.Formatters("boolean",{then:(e,t,a)=>e?t:a}),dmx.l10n=dmx.l10n||{},dmx.l10n.en=dmx.l10n.en||{},dmx.l10n.en.months=["January","February","March","April","May","June","July","August","September","October","November","December"],dmx.l10n.en.monthsShort=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dmx.l10n.en.days=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dmx.l10n.en.daysShort=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dmx.Formatters("string",{getYear(e){const t=dmx.parseDate(e);if(dmx.isValidDate(t))return t.getFullYear()},getMonth(e){const t=dmx.parseDate(e);if(dmx.isValidDate(t))return t.getMonth()+1},getDate(e){const t=dmx.parseDate(e);if(dmx.isValidDate(t))return t.getDate()},getDay(e){const t=dmx.parseDate(e);if(dmx.isValidDate(t))return t.getDay()},getHours(e){const t=dmx.parseDate(e);if(dmx.isValidDate(t))return t.getHours()},getMinutes(e){const t=dmx.parseDate(e);if(dmx.isValidDate(t))return t.getMinutes()},getSeconds(e){const t=dmx.parseDate(e);if(dmx.isValidDate(t))return t.getSeconds()},getMilliseconds(e){const t=dmx.parseDate(e);if(dmx.isValidDate(t))return t.getMilliseconds()},addYears(e,t){const a=dmx.parseDate(e);if(dmx.isValidDate(a))return a.setFullYear(a.getFullYear()+Number(t)),dmx.formatDate(a)},addMonths(e,t){const a=dmx.parseDate(e);if(dmx.isValidDate(a))return a.setMonth(a.getMonth()+Number(t)),dmx.formatDate(a)},addWeeks(e,t){const a=dmx.parseDate(e);if(dmx.isValidDate(a))return a.setDate(a.getDate()+7*Number(t)),dmx.formatDate(a)},addDays(e,t){const a=dmx.parseDate(e);if(dmx.isValidDate(a))return a.setDate(a.getDate()+Number(t)),dmx.formatDate(a)},addHours(e,t){const a=dmx.parseDate(e);if(dmx.isValidDate(a))return a.setHours(a.getHours()+Number(t)),dmx.formatDate(a)},addMinutes(e,t){const a=dmx.parseDate(e);if(dmx.isValidDate(a))return a.setMinutes(a.getMinutes()+Number(t)),dmx.formatDate(a)},addSeconds(e,t){const a=dmx.parseDate(e);if(dmx.isValidDate(a))return a.setSeconds(a.getSeconds()+Number(t)),dmx.formatDate(a)},addMilliseconds(e,t){const a=dmx.parseDate(e);if(dmx.isValidDate(a))return a.setMilliseconds(a.getMilliseconds()+Number(t)),dmx.formatDate(a)},yearsUntil(e,t){const a=dmx.parseDate(e),r=dmx.parseDate(t);if(dmx.isValidDate(a)&&dmx.isValidDate(r))return r.getFullYear()-a.getFullYear()},monthsUntil(e,t){const a=dmx.parseDate(e),r=dmx.parseDate(t);if(dmx.isValidDate(a)&&dmx.isValidDate(r))return 12*r.getFullYear()+r.getMonth()-(12*a.getFullYear()+a.getMonth())},weeksUntil(e,t){const a=dmx.parseDate(e),r=dmx.parseDate(t);if(dmx.isValidDate(a)&&dmx.isValidDate(r))return Math.floor((r-a)/6048e5)},daysUntil(e,t){const a=dmx.parseDate(e),r=dmx.parseDate(t);if(!dmx.isValidDate(a)||!dmx.isValidDate(r))return;const s=e=>(e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0),e);return Math.round((s(r)-s(a))/864e5)},hoursUntil(e,t){const a=dmx.parseDate(e),r=dmx.parseDate(t);if(dmx.isValidDate(a)&&dmx.isValidDate(r))return Math.floor((r-a)/36e5)},minutesUntil(e,t){const a=dmx.parseDate(e),r=dmx.parseDate(t);if(dmx.isValidDate(a)&&dmx.isValidDate(r))return Math.floor((r-a)/6e4)},secondsUntil(e,t){const a=dmx.parseDate(e),r=dmx.parseDate(t);if(dmx.isValidDate(a)&&dmx.isValidDate(r))return Math.floor((r-a)/1e3)},millisecondsUntil(e,t){const a=dmx.parseDate(e),r=dmx.parseDate(t);if(dmx.isValidDate(a)&&dmx.isValidDate(r))return r-a},timeUntil(e,t,a){const r=(e,t)=>("0000"+t).slice(-e),s=dmx.parseDate(e),n=dmx.parseDate(t);if(!dmx.isValidDate(s)||!dmx.isValidDate(n))return;let d=Math.floor((n-s)/1e3),i=Math.floor(d/60),o=Math.floor(i/60);return d-=60*i,a?(i-=60*o,o+":"+r(2,i)+":"+r(2,d)):i+":"+r(2,d)},formatDate(e,t){const a=(e,t)=>("0000"+t).slice(-e),r=dmx.parseDate(e);if(!dmx.isValidDate(r))return;const s=r.getFullYear(),n=r.getMonth(),d=r.getDate(),i=r.getDay(),o=r.getHours(),c=r.getMinutes(),u=r.getSeconds(),l=r.getMilliseconds();return t.replace(/([yMdHhmsSaAvw])(\1+)?/g,(e=>{switch(e){case"yyyy":return a(4,s);case"yy":return a(2,s);case"y":return s;case"MMMM":return dmx.l10n.en.months[n];case"MMM":return dmx.l10n.en.monthsShort[n];case"MM":return a(2,n+1);case"M":return n+1;case"dddd":return dmx.l10n.en.days[i];case"ddd":return dmx.l10n.en.daysShort[i];case"dd":return a(2,d);case"d":return d;case"HH":return a(2,o);case"H":return o;case"hh":return a(2,o%12||12);case"h":return o%12||12;case"mm":return a(2,c);case"m":return c;case"ss":return a(2,u);case"s":return u;case"a":return o<12?"am":"pm";case"A":return o<12?"AM":"PM";case"v":case"SSS":return a(3,l);case"w":return i}return e}))}}),dmx.Formatters("number",{inRange:(e,t,a)=>e>=t&&e<=a,abs:e=>Math.abs(e),ceil:e=>Math.ceil(e),floor:e=>Math.floor(e),max:(e,t)=>Math.max(e,t),min:(e,t)=>Math.min(e,t),pow:(e,t)=>Math.pow(e,t),per:(e,t)=>e*t/100,perOf:(e,t)=>e/t,round(e,t=0){let a=Math.pow(10,t),r=e*a;return Math.round(r)/a},pad(e,t){let a=e<0?"-":"",r=String(Math.abs(e));for(;r.lengthe.toFixed(t),formatNumber(e,t,a=".",r=""){if(isNaN(e))return"Invalid Number";if(!isFinite(e))return(e<0?"-":"")+"∞";a=a||".",r=r||"";let s=e<0;e=Math.abs(e);let n=(null!=t&&t>=0?e.toFixed(t):e.toString()).split("."),d=n[0],i=n.length>1?a+n[1]:"";if(r){let e=/(\d+)(\d{3})/;for(;e.test(d);)d=d.replace(e,"$1"+r+"$2")}return(s?"-":"")+d+i},formatPercentage(e,t){if(isNaN(e)||!isFinite(e))return"Invalid Percentage";let a=100*e;return null!=t&&t>=0&&(a=a.toFixed(t)),a+"%"},formatCurrency(e,t="$",a=".",r=",",s=2){if(isNaN(e)||!isFinite(e))return"Invalid Amount";let n=e<0,d=Math.abs(e).toFixed(s).split("."),i=d[0],o=d.length>1?a+d[1]:"";if(r){let e=/(\d+)(\d{3})/;for(;e.test(i);)i=i.replace(e,"$1"+r+"$2")}return(n?"-":"")+t+i+o},formatSize(e,t=2,a=!1){if(isNaN(e)||!isFinite(e))return"Invalid Size";let r=a?1024:1e3,s=a?["KiB","MiB","GiB","TiB"]:["KB","MB","GB","TB"];for(let a=3;a>=0;a--){let n=Math.pow(r,a+1);if(e>=n)return e/=n,t>=0&&(e=e.toFixed(t)),e+" "+s[a]}return e+" B"}}),dmx.Formatters("string",{startsWith:(e,t,a)=>null!=t&&(a&&(e=e.toLowerCase(),t=t.toLowerCase()),e.startsWith(t)),endsWith:(e,t,a)=>null!=t&&(a&&(e=e.toLowerCase(),t=t.toLowerCase()),e.endsWith(t)),contains:(e,t,a)=>null!=t&&(a&&(e=e.toLowerCase(),t=t.toLowerCase()),e.includes(t)),notContains:(e,t,a)=>null==t||(a&&(e=e.toLowerCase(),t=t.toLowerCase()),!e.includes(t)),search:(e,t,a,r)=>null!=t&&(r&&(e=e.toLowerCase(),t=t.toLowerCase()),String(t).split(/\s+/)[a?"every":"some"]((t=>e.includes(t)))),fuzzySearch(e,t,a){if(null==t)return!1;const r=e.length,s=t.length;if(s>r)return!1;if(a&&(e=e.toLowerCase(),t=t.toLowerCase()),s===r)return e===t;e:for(let a=0,n=0;a!!Array.isArray(t)&&(a&&(e=e.toLowerCase()),t.some((t=>(a&&(t=t.toLowerCase()),t===e)))),notInArray:(e,t,a)=>!Array.isArray(t)||(a&&(e=e.toLowerCase()),!t.some((t=>(a&&(t=t.toLowerCase()),t===e)))),test:(e,t)=>t.test(e),lowercase:e=>e.toLowerCase(),uppercase:e=>e.toUpperCase(),slugify(e){const t={"2d":"-",20:"-",24:"s",26:"and",30:"0",31:"1",32:"2",33:"3",34:"4",35:"5",36:"6",37:"7",38:"8",39:"9",41:"A",42:"B",43:"C",44:"D",45:"E",46:"F",47:"G",48:"H",49:"I",50:"P",51:"Q",52:"R",53:"S",54:"T",55:"U",56:"V",57:"W",58:"X",59:"Y",61:"a",62:"b",63:"c",64:"d",65:"e",66:"f",67:"g",68:"h",69:"i",70:"p",71:"q",72:"r",73:"s",74:"t",75:"u",76:"v",77:"w",78:"x",79:"y",100:"A",101:"a",102:"A",103:"a",104:"A",105:"a",106:"C",107:"c",108:"C",109:"c",110:"D",111:"d",112:"E",113:"e",114:"E",115:"e",116:"E",117:"e",118:"E",119:"e",120:"G",121:"g",122:"G",123:"g",124:"H",125:"h",126:"H",127:"h",128:"I",129:"i",130:"I",131:"i",132:"IJ",133:"ij",134:"J",135:"j",136:"K",137:"k",138:"k",139:"L",140:"l",141:"L",142:"l",143:"N",144:"n",145:"N",146:"n",147:"N",148:"n",149:"n",150:"O",151:"o",152:"OE",153:"oe",154:"R",155:"r",156:"R",157:"r",158:"R",159:"r",160:"S",161:"s",162:"T",163:"t",164:"T",165:"t",166:"T",167:"t",168:"U",169:"u",170:"U",171:"u",172:"U",173:"u",174:"W",175:"w",176:"Y",177:"y",178:"Y",179:"Z",180:"b",181:"B",182:"b",183:"b",184:"b",185:"b",186:"C",187:"C",188:"c",189:"D",190:"E",191:"F",192:"f",193:"G",194:"Y",195:"h",196:"i",197:"I",198:"K",199:"k",200:"A",201:"a",202:"A",203:"a",204:"E",205:"e",206:"E",207:"e",208:"I",209:"i",210:"R",211:"r",212:"R",213:"r",214:"U",215:"u",216:"U",217:"u",218:"S",219:"s",220:"n",221:"d",222:"8",223:"8",224:"Z",225:"z",226:"A",227:"a",228:"E",229:"e",230:"O",231:"o",232:"Y",233:"y",234:"l",235:"n",236:"t",237:"j",238:"db",239:"qp",240:"<",241:"?",242:"?",243:"B",244:"U",245:"A",246:"E",247:"e",248:"J",249:"j",250:"a",251:"a",252:"a",253:"b",254:"c",255:"e",256:"d",257:"d",258:"e",259:"e",260:"g",261:"g",262:"g",263:"Y",264:"x",265:"u",266:"h",267:"h",268:"i",269:"i",270:"w",271:"m",272:"n",273:"n",274:"N",275:"o",276:"oe",277:"m",278:"o",279:"r",280:"R",281:"R",282:"S",283:"f",284:"f",285:"f",286:"f",287:"t",288:"t",289:"u",290:"Z",291:"Z",292:"3",293:"3",294:"?",295:"?",296:"5",297:"C",298:"O",299:"B",363:"a",364:"e",365:"i",366:"o",367:"u",368:"c",369:"d",386:"A",388:"E",389:"H",390:"i",391:"A",392:"B",393:"r",394:"A",395:"E",396:"Z",397:"H",398:"O",399:"I",400:"E",401:"E",402:"T",403:"r",404:"E",405:"S",406:"I",407:"I",408:"J",409:"jb",410:"A",411:"B",412:"V",413:"G",414:"D",415:"E",416:"ZH",417:"Z",418:"I",419:"Y",420:"R",421:"S",422:"T",423:"U",424:"F",425:"H",426:"TS",427:"CH",428:"SH",429:"SCH",430:"a",431:"b",432:"v",433:"g",434:"d",435:"e",436:"zh",437:"z",438:"i",439:"y",440:"r",441:"s",442:"t",443:"u",444:"f",445:"h",446:"ts",447:"ch",448:"sh",449:"sch",450:"e",451:"e",452:"h",453:"r",454:"e",455:"s",456:"i",457:"i",458:"j",459:"jb",460:"W",461:"w",462:"Tb",463:"tb",464:"IC",465:"ic",466:"A",467:"a",468:"IA",469:"ia",470:"Y",471:"y",472:"O",473:"o",474:"V",475:"v",476:"V",477:"v",478:"Oy",479:"oy",480:"C",481:"c",490:"R",491:"r",492:"F",493:"f",494:"H",495:"h",496:"X",497:"x",498:"3",499:"3",500:"d",501:"d",502:"d",503:"d",504:"R",505:"R",506:"R",507:"R",508:"JT",509:"JT",510:"E",511:"e",512:"JT",513:"jt",514:"JX",515:"JX",531:"U",532:"D",533:"Q",534:"N",535:"T",536:"2",537:"F",538:"r",539:"p",540:"z",541:"2",542:"n",543:"x",544:"U",545:"B",546:"j",547:"t",548:"n",549:"C",550:"R",551:"8",552:"R",553:"O",554:"P",555:"O",556:"S",561:"w",562:"f",563:"q",564:"n",565:"t",566:"q",567:"t",568:"n",569:"p",570:"h",571:"a",572:"n",573:"a",574:"u",575:"j",576:"u",577:"2",578:"n",579:"2",580:"n",581:"g",582:"l",583:"uh",584:"p",585:"o",586:"S",587:"u","4a":"J","4b":"K","4c":"L","4d":"M","4e":"N","4f":"O","5a":"Z","6a":"j","6b":"k","6c":"l","6d":"m","6e":"n","6f":"o","7a":"z",a2:"c",a3:"f",a5:"Y",a7:"s",a9:"c",aa:"a",ae:"r",b2:"2",b3:"3",b5:"u",b6:"p",b9:"1",c0:"A",c1:"A",c2:"A",c3:"A",c4:"A",c5:"A",c6:"AE",c7:"C",c8:"E",c9:"E",ca:"E",cb:"E",cc:"I",cd:"I",ce:"I",cf:"I",d0:"D",d1:"N",d2:"O",d3:"O",d4:"O",d5:"O",d6:"O",d7:"X",d8:"O",d9:"U",da:"U",db:"U",dc:"U",dd:"Y",de:"p",df:"b",e0:"a",e1:"a",e2:"a",e3:"a",e4:"a",e5:"a",e6:"ae",e7:"c",e8:"e",e9:"e",ea:"e",eb:"e",ec:"i",ed:"i",ee:"i",ef:"i",f0:"o",f1:"n",f2:"o",f3:"o",f4:"o",f5:"o",f6:"o",f8:"o",f9:"u",fa:"u",fb:"u",fc:"u",fd:"y",ff:"y","10a":"C","10b":"c","10c":"C","10d":"c","10e":"D","10f":"d","11a":"E","11b":"e","11c":"G","11d":"g","11e":"G","11f":"g","12a":"I","12b":"i","12c":"I","12d":"i","12e":"I","12f":"i","13a":"l","13b":"L","13c":"l","13d":"L","13e":"l","13f":"L","14a":"n","14b":"n","14c":"O","14d":"o","14e":"O","14f":"o","15a":"S","15b":"s","15c":"S","15d":"s","15e":"S","15f":"s","16a":"U","16b":"u","16c":"U","16d":"u","16e":"U","16f":"u","17a":"z","17b":"Z","17c":"z","17d":"Z","17e":"z","17f":"f","18a":"D","18b":"d","18c":"d","18d":"q","18e":"E","18f":"e","19a":"l","19b":"h","19c":"w","19d":"N","19e":"n","19f":"O","1a0":"O","1a1":"o","1a2":"P","1a3":"P","1a4":"P","1a5":"p","1a6":"R","1a7":"S","1a8":"s","1a9":"E","1aa":"l","1ab":"t","1ac":"T","1ad":"t","1ae":"T","1af":"U","1b0":"u","1b1":"U","1b2":"U","1b3":"Y","1b4":"y","1b5":"Z","1b6":"z","1b7":"3","1b8":"3","1b9":"3","1ba":"3","1bb":"2","1bc":"5","1bd":"5","1be":"5","1bf":"p","1c4":"DZ","1c5":"Dz","1c6":"dz","1c7":"Lj","1c8":"Lj","1c9":"lj","1ca":"NJ","1cb":"Nj","1cc":"nj","1cd":"A","1ce":"a","1cf":"I","1d0":"i","1d1":"O","1d2":"o","1d3":"U","1d4":"u","1d5":"U","1d6":"u","1d7":"U","1d8":"u","1d9":"U","1da":"u","1db":"U","1dc":"u","1dd":"e","1de":"A","1df":"a","1e0":"A","1e1":"a","1e2":"AE","1e3":"ae","1e4":"G","1e5":"g","1e6":"G","1e7":"g","1e8":"K","1e9":"k","1ea":"Q","1eb":"q","1ec":"Q","1ed":"q","1ee":"3","1ef":"3","1f0":"J","1f1":"dz","1f2":"dZ","1f3":"DZ","1f4":"g","1f5":"G","1f6":"h","1f7":"p","1f8":"N","1f9":"n","1fa":"A","1fb":"a","1fc":"AE","1fd":"ae","1fe":"O","1ff":"o","20a":"I","20b":"i","20c":"O","20d":"o","20e":"O","20f":"o","21a":"T","21b":"t","21c":"3","21d":"3","21e":"H","21f":"h","22a":"O","22b":"o","22c":"O","22d":"o","22e":"O","22f":"o","23a":"A","23b":"C","23c":"c","23d":"L","23e":"T","23f":"s","24a":"Q","24b":"q","24c":"R","24d":"r","24e":"Y","24f":"y","25a":"e","25b":"3","25c":"3","25d":"3","25e":"3","25f":"j","26a":"i","26b":"I","26c":"I","26d":"I","26e":"h","26f":"w","27a":"R","27b":"r","27c":"R","27d":"R","27e":"r","27f":"r","28a":"u","28b":"v","28c":"A","28d":"M","28e":"Y","28f":"Y","29a":"B","29b":"G","29c":"H","29d":"j","29e":"K","29f":"L","2a0":"q","2a1":"?","2a2":"c","2a3":"dz","2a4":"d3","2a5":"dz","2a6":"ts","2a7":"tf","2a8":"tc","2a9":"fn","2aa":"ls","2ab":"lz","2ac":"ww","2ae":"u","2af":"u","2b0":"h","2b1":"h","2b2":"j","2b3":"r","2b4":"r","2b5":"r","2b6":"R","2b7":"W","2b8":"Y","2df":"x","2e0":"Y","2e1":"1","2e2":"s","2e3":"x","2e4":"c","36a":"h","36b":"m","36c":"r","36d":"t","36e":"v","36f":"x","37b":"c","37c":"c","37d":"c","38a":"I","38c":"O","38e":"Y","38f":"O","39a":"K","39b":"A","39c":"M","39d":"N","39e":"E","39f":"O","3a0":"TT","3a1":"P","3a3":"E","3a4":"T","3a5":"Y","3a6":"O","3a7":"X","3a8":"Y","3a9":"O","3aa":"I","3ab":"Y","3ac":"a","3ad":"e","3ae":"n","3af":"i","3b0":"v","3b1":"a","3b2":"b","3b3":"y","3b4":"d","3b5":"e","3b6":"c","3b7":"n","3b8":"0","3b9":"1","3ba":"k","3bb":"j","3bc":"u","3bd":"v","3be":"c","3bf":"o","3c0":"tt","3c1":"p","3c2":"s","3c3":"o","3c4":"t","3c5":"u","3c6":"q","3c7":"X","3c8":"Y","3c9":"w","3ca":"i","3cb":"u","3cc":"o","3cd":"u","3ce":"w","3d0":"b","3d1":"e","3d2":"Y","3d3":"Y","3d4":"Y","3d5":"O","3d6":"w","3d7":"x","3d8":"Q","3d9":"q","3da":"C","3db":"c","3dc":"F","3dd":"f","3de":"N","3df":"N","3e2":"W","3e3":"w","3e4":"q","3e5":"q","3e6":"h","3e7":"e","3e8":"S","3e9":"s","3ea":"X","3eb":"x","3ec":"6","3ed":"6","3ee":"t","3ef":"t","3f0":"x","3f1":"e","3f2":"c","3f3":"j","3f4":"O","3f5":"E","3f6":"E","3f7":"p","3f8":"p","3f9":"C","3fa":"M","3fb":"M","3fc":"p","3fd":"C","3fe":"C","3ff":"C","40a":"Hb","40b":"Th","40c":"K","40d":"N","40e":"Y","40f":"U","41a":"K","41b":"L","41c":"M","41d":"N","41e":"O","41f":"P","42a":"","42b":"Y","42c":"","42d":"E","42e":"U","42f":"YA","43a":"k","43b":"l","43c":"m","43d":"n","43e":"o","43f":"p","44a":"","44b":"y","44c":"","44d":"e","44e":"u","44f":"ya","45a":"Hb","45b":"h","45c":"k","45d":"n","45e":"y","45f":"u","46a":"mY","46b":"my","46c":"Im","46d":"Im","46e":"3","46f":"3","47a":"O","47b":"o","47c":"W","47d":"w","47e":"W","47f":"W","48a":"H","48b":"H","48c":"B","48d":"b","48e":"P","48f":"p","49a":"K","49b":"k","49c":"K","49d":"k","49e":"K","49f":"k","4a0":"K","4a1":"k","4a2":"H","4a3":"h","4a4":"H","4a5":"h","4a6":"Ih","4a7":"ih","4a8":"O","4a9":"o","4aa":"C","4ab":"c","4ac":"T","4ad":"t","4ae":"Y","4af":"y","4b0":"Y","4b1":"y","4b2":"X","4b3":"x","4b4":"TI","4b5":"ti","4b6":"H","4b7":"h","4b8":"H","4b9":"h","4ba":"H","4bb":"h","4bc":"E","4bd":"e","4be":"E","4bf":"e","4c0":"I","4c1":"X","4c2":"x","4c3":"K","4c4":"k","4c5":"jt","4c6":"jt","4c7":"H","4c8":"h","4c9":"H","4ca":"h","4cb":"H","4cc":"h","4cd":"M","4ce":"m","4cf":"l","4d0":"A","4d1":"a","4d2":"A","4d3":"a","4d4":"AE","4d5":"ae","4d6":"E","4d7":"e","4d8":"e","4d9":"e","4da":"E","4db":"e","4dc":"X","4dd":"X","4de":"3","4df":"3","4e0":"3","4e1":"3","4e2":"N","4e3":"n","4e4":"N","4e5":"n","4e6":"O","4e7":"o","4e8":"O","4e9":"o","4ea":"O","4eb":"o","4ec":"E","4ed":"e","4ee":"Y","4ef":"y","4f0":"Y","4f1":"y","4f2":"Y","4f3":"y","4f4":"H","4f5":"h","4f6":"R","4f7":"r","4f8":"bI","4f9":"bi","4fa":"F","4fb":"f","4fc":"X","4fd":"x","4fe":"X","4ff":"x","50a":"H","50b":"h","50c":"G","50d":"g","50e":"T","50f":"t","51a":"Q","51b":"q","51c":"W","51d":"w","53a":"d","53b":"r","53c":"L","53d":"Iu","53e":"O","53f":"y","54a":"m","54b":"o","54c":"N","54d":"U","54e":"Y","54f":"S","56a":"d","56b":"h","56c":"l","56d":"lu","56e":"d","56f":"y","57a":"w","57b":"2","57c":"n","57d":"u","57e":"y","57f":"un"};let a="";for(let r=0;re.trim().replace(/(\-|_|\s)+(.)?/g,((e,t,a)=>a?a.toUpperCase():"")),capitalize:e=>e.substr(0,1).toUpperCase()+e.substr(1).toLowerCase(),dasherize:e=>e.replace(/[_\s]+/g,"-").replace(/([A-Z])/g,"-$1").replace(/-+/g,"-").toLowerCase(),humanize(e){let t=e.replace(/([a-z\d])([A-Z+])/g,"$1_$2").replace(/[-\s]+/g,"_").replace(/_+/g," ").trim();return t.substr(0,1).toUpperCase()+t.substr(1).toLowerCase()},underscore:e=>e.trim().replace(/([a-z\d])([A-Z]+)/g,"$1_$1").replace(/[-\s]+/g,"_").toLowerCase(),titlecase:e=>e.replace(/(?:^|\s)\S/g,(e=>e.toUpperCase())),camelcase:e=>e.toLowerCase().replace(/\s+(\S)/g,((e,t)=>t.toUpperCase())),substr:(e,t,a)=>e.substr(t,a),substring:(e,t,a)=>e.slice(t,a),replace:(e,t,a,r)=>("string"==typeof t&&(t=new RegExp(dmx.escapeRegExp(t),"g"+(r?"i":""))),e.replace(t,a)),trim:e=>e.trim(),trimLeft:e=>e.replace(/^[\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF]*/,""),trimRight:e=>e.replace(/[\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF]*$/,""),concat:(e,t)=>(null==t&&(t=""),e.concat(t)),trunc(e,t,a,r="…"){if(e.length>t){if(e=e.substr(0,t),a){let t=e.lastIndexOf(" ");-1!==t&&(e=e.substr(0,t))}e+=r}return e},stripTags:e=>e.replace(/<[^>]+>/g,""),padStart:(e,t,a=" ")=>e.padStart(t,a),padEnd:(e,t,a=" ")=>e.padEnd(t,a),repeat:(e,t)=>e.repeat(t),wordCount:e=>e.trim().split(/\s+/).length,length:e=>e.length,split:(e,t)=>e.split(t),parseJSON:e=>JSON.parse(e),encodeURIComponent:e=>encodeURIComponent(e),encodeURI:e=>encodeURI(e)}),dmx.Formatters("object",{keys:e=>Object.keys(e),values:e=>Object.keys(e).map((t=>e[t])),hasKey:(e,t)=>Object.keys(e).includes(t),hasValue:(e,t)=>Object.values(e).includes(t),getValueOrKey:(e,t)=>null!=e[t]?e[t]:t}); +//# sourceMappingURL=dmxFormatter.js.map diff --git a/public/dmxAppConnect/dmxFormatter/dmxFormatter.js.map b/public/dmxAppConnect/dmxFormatter/dmxFormatter.js.map new file mode 100644 index 0000000..465216f --- /dev/null +++ b/public/dmxAppConnect/dmxFormatter/dmxFormatter.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["formatters/global.js","formatters/any.js","formatters/array.js","formatters/boolean.js","formatters/date.js","formatters/number.js","formatters/string.js","formatters/object.js"],"names":["dmx","isValidDate","date","toString","resetTime","setHours","setMinutes","setSeconds","setMilliseconds","formatDate","pad","s","n","slice","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","Formatters","default","value","defaultValue","bool","Boolean","string","String","number","Number","parseDate","obj","isDefined","isEmpty","type","length","Array","isArray","key","hasOwnProperty","toBool","toJSON","JSON","stringify","toNumber","toBigInt","BigInt","toTimestamp","Math","floor","getTime","toDate","toUTCDate","toISOString","toISODate","toISOTime","incMilliseconds","propCheck","toKeyedObject","array","staticKey","test","staticVal","reduce","item","index","scope","$index","$key","$value","parse","DataScope","this","hasItems","contains","includes","join","separator","count","top","last","undefined","first","get","begin","end","reverse","randomize","rnd","randomizer","seed","hashCode","t","r","i","filter","expression","repeatItems","map","where","prop","operator","caseInsensitive","val","toLowerCase","startsWith","endsWith","search","stringLen","searchLen","outer","j","char","charCodeAt","values","static","groupBy","push","unique","from","Set","sort","a","b","min","apply","max","sum","avg","then","trueValue","falseValue","l10n","en","months","monthsShort","days","daysShort","getYear","str","getDay","addYears","setFullYear","addMonths","setMonth","addWeeks","setDate","addDays","addHours","addMinutes","addSeconds","addMilliseconds","yearsUntil","str1","str2","date1","date2","monthsUntil","weeksUntil","daysUntil","round","hoursUntil","minutesUntil","secondsUntil","millisecondsUntil","timeUntil","incHours","seconds","minutes","hours","format","year","month","day","weekday","milliseconds","replace","part","inRange","abs","ceil","pow","exponent","per","amount","perOf","total","precision","factor","temp","neg","toFixed","decimals","formatNumber","delimiter","isNaN","isFinite","x","split","x1","x2","re","formatPercentage","num","formatCurrency","unit","formatSize","binary","base","suffix","notContains","matchAll","word","fuzzySearch","inArray","some","notInArray","regexp","lowercase","uppercase","toUpperCase","slugify","a2","a3","a5","a7","a9","aa","ae","b2","b3","b5","b6","b9","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f8","f9","fa","fb","fc","fd","ff","camelize","trim","c","capitalize","substr","dasherize","humanize","underscore","titlecase","camelcase","start","substring","RegExp","escapeRegExp","trimLeft","trimRight","concat","string2","trunc","charsAllowed","useWordBoundary","append","lastSpace","lastIndexOf","stripTags","padStart","filler","padEnd","repeat","wordCount","parseJSON","encodeURIComponent","encodeURI","keys","object","Object","hasKey","hasValue","getValueOrKey"],"mappings":"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AAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,MAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,MAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA4H,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,KAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,KAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAAC,GAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,GAAA,MAAA,IAAA,MAAA,GAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,GAAA,MAAA,IAAA,MAAA,GAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,KAAA,MAAA,KAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,IAAA,MAAA,I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","file":"dmxFormatter.js","sourcesContent":["dmx.isValidDate = function (date) {\r\n return date && date.toString() != 'Invalid Date';\r\n};\r\n\r\ndmx.resetTime = function (date) {\r\n date.setHours(0);\r\n date.setMinutes(0);\r\n date.setSeconds(0);\r\n date.setMilliseconds(0);\r\n return date;\r\n};\r\n\r\ndmx.formatDate = function (date) {\r\n const pad = (s, n) => ('0000' + n).slice(-s);\r\n return (\r\n pad(4, date.getFullYear()) +\r\n '-' +\r\n pad(2, date.getMonth() + 1) +\r\n '-' +\r\n pad(2, date.getDate()) +\r\n ' ' +\r\n pad(2, date.getHours()) +\r\n ':' +\r\n pad(2, date.getMinutes()) +\r\n ':' +\r\n pad(2, date.getSeconds()) +\r\n '.' +\r\n pad(3, date.getMilliseconds())\r\n );\r\n}\r\n\r\n\r\ndmx.Formatters('global', {\r\n\r\n // default(value:Any, defaultValue:Any):Any\r\n default (value, defaultValue) {\r\n return value == null ? defaultValue : value;\r\n },\r\n\r\n // bool(value:Any):Boolean\r\n bool (value) {\r\n return Boolean(value);\r\n },\r\n\r\n // string(value:Any):String\r\n string (value) {\r\n if (value == null) return '';\r\n return String(value);\r\n },\r\n\r\n // number(value:Any):String\r\n number (value) {\r\n return Number(value);\r\n },\r\n\r\n // date(value:Any):String\r\n date (value) {\r\n const date = dmx.parseDate(value);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n return dmx.formatDate(date);\r\n },\r\n\r\n});\r\n","dmx.Formatters('any', {\r\n\r\n // default(defaultValue:Any):Any\r\n default (obj, defaultValue) {\r\n return obj == null ? defaultValue : obj;\r\n },\r\n\r\n isDefined (obj) {\r\n return obj != null;\r\n },\r\n\r\n isEmpty (obj) {\r\n const type = typeof obj;\r\n if (type == 'undefined') return true;\r\n if (type == 'string') return obj.length == 0;\r\n if (type == 'number') return obj == 0;\r\n if (type == 'boolean') return obj == false;\r\n if (type == 'object') {\r\n if (Array.isArray(obj)) return obj.length == 0;\r\n for (let key in obj) {\r\n if (obj.hasOwnProperty(key)) return false;\r\n }\r\n return true;\r\n }\r\n return false;\r\n },\r\n\r\n // toBool():Boolean\r\n toBool (obj) {\r\n return Boolean(obj);\r\n },\r\n\r\n // toJSON():String\r\n toJSON (obj) {\r\n return JSON.stringify(obj);\r\n },\r\n\r\n // toNumber():Number\r\n toNumber (obj) {\r\n return Number(obj);\r\n },\r\n\r\n toBigInt (obj) {\r\n return BigInt(obj);\r\n },\r\n\r\n // toString():String\r\n toString (obj) {\r\n if (obj == null) return '';\r\n return String(obj);\r\n },\r\n\r\n // toTimestamp():Number\r\n toTimestamp (obj) { // UNIX timestamp\r\n const date = dmx.parseDate(obj);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n return Math.floor(date.getTime() / 1000);\r\n },\r\n\r\n // toDate():String\r\n toDate (obj) {\r\n const date = dmx.parseDate(obj);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n return dmx.formatDate(date);\r\n },\r\n\r\n // toUTCDate():String\r\n toUTCDate (obj) {\r\n const date = dmx.parseDate(obj);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n return date.toISOString();\r\n },\r\n\r\n // toISODate():String\r\n toISODate (obj) {\r\n const pad = (s, n) => ('0000' + n).slice(-s);\r\n const date = dmx.parseDate(obj);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n return `${pad(4, date.getFullYear())}-${pad(2, date.getMonth() + 1)}-${pad(2, date.getDate())}`;\r\n },\r\n\r\n // toISOTime(incMilliseconds:Boolean):String\r\n toISOTime (obj, incMilliseconds) {\r\n const pad = (s, n) => ('0000' + n).slice(-s);\r\n const date = dmx.parseDate(obj);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n return `${pad(2, date.getHours())}:${pad(2, date.getMinutes())}:${pad(2, date.getSeconds())}${incMilliseconds ? '.' + pad(3, date.getMilliseconds()) : ''}`;\r\n },\r\n});\r\n","dmx.propCheck = /^\\w+$/;\r\n\r\ndmx.Formatters('array', {\r\n\r\n //toKeyedObject(): object\r\n toKeyedObject (array, key, value) {\r\n const staticKey = dmx.propCheck.test(key);\r\n const staticVal = dmx.propCheck.test(value);\r\n\r\n return array.reduce((obj, item, index) => {\r\n const scope = { ...item, $index: index, $key: index, $value: item };\r\n const k = staticKey ? item[key] : dmx.parse(key, dmx.DataScope(scope, this));\r\n obj[k] = staticVal ? item[value] : dmx.parse(value, dmx.DataScope(scope, this));\r\n return obj;\r\n }, {});\r\n },\r\n\r\n // hasItems():Boolean\r\n hasItems (array) {\r\n return !!array.length;\r\n },\r\n\r\n // contains(value:Any):Boolean\r\n contains (array, value) {\r\n return array.includes(value);\r\n },\r\n\r\n // join(separator:String):String\r\n join (array, separator) {\r\n return array.join(separator);\r\n },\r\n\r\n // count():Number\r\n count (array) {\r\n return array.length;\r\n },\r\n\r\n // top(count:Number):Array\r\n top (array, count = 1) {\r\n if (!array.length) return [];\r\n return array.slice(0, count);\r\n },\r\n\r\n // last(count:Number):Array\r\n // last():*\r\n last (array, count) {\r\n if (!array.length) return count == null ? undefined : [];\r\n return count == null ? array[array.length - 1] : array.slice(-count);\r\n },\r\n\r\n // first():*\r\n first (array) {\r\n return array[0];\r\n },\r\n\r\n // get(index:Number):*\r\n get (array, index) {\r\n return array[index];\r\n },\r\n\r\n // slice([begin:Number], [end:Number])\r\n slice (array, begin, end) {\r\n if (!array.length) return [];\r\n return array.slice(begin, end);\r\n },\r\n\r\n // reverse():Array\r\n reverse (array) {\r\n if (!array.length) return [];\r\n return array.slice(0).reverse();\r\n },\r\n\r\n // randomize():Array\r\n randomize (array) {\r\n if (!array.length) return [];\r\n\r\n const rnd = dmx.randomizer(this.seed * dmx.hashCode(array));\r\n let i = array.length, t, r;\r\n\r\n array = array.slice(0);\r\n\r\n while (0 !== i) {\r\n r = Math.floor(rnd() * i--);\r\n t = array[i];\r\n array[i] = array[r];\r\n array[r] = t;\r\n }\r\n\r\n return array;\r\n },\r\n\r\n // Collection formatters (requires array with objects in them)\r\n\r\n // filter(expression:Expression):Array\r\n filter (array, expression) {\r\n if (!array.length) return [];\r\n if (expression[0] == '$') array = dmx.repeatItems(array);\r\n return array.filter((item) => dmx.parse(expression, dmx.DataScope(item, this)));\r\n },\r\n\r\n // map(expression:Expression):Array\r\n map (array, expression) {\r\n if (!array.length) return [];\r\n if (expression[0] == '$') array = dmx.repeatItems(array);\r\n return array.map((item) => dmx.parse(expression, dmx.DataScope(item, this)));\r\n },\r\n\r\n // where(prop:String, value:String, [operator:String]):Array\r\n where (array, prop, value, operator = '==', caseInsensitive = false) {\r\n if (!array.length) return [];\r\n if (prop[0] == '$') array = dmx.repeatItems(array);\r\n\r\n return array.filter((item) => {\r\n var val = dmx.propCheck.test(prop) ? item[prop] : dmx.parse(prop, dmx.DataScope(item, this));\r\n\r\n switch (operator) {\r\n case 'startsWith':\r\n if (caseInsensitive) return String(val).toLowerCase().startsWith(value.toLowerCase());\r\n return String(val).startsWith(value);\r\n case 'endsWith':\r\n if (caseInsensitive) return String(val).toLowerCase().endsWith(value.toLowerCase());\r\n return String(val).endsWith(value);\r\n case 'contains':\r\n if (caseInsensitive) return String(val).toLowerCase().includes(value.toLowerCase());\r\n return String(val).includes(value);\r\n case 'notContains':\r\n if (caseInsensitive) return !String(val).toLowerCase().includes(value.toLowerCase());\r\n return !String(val).includes(value);\r\n case 'inArray':\r\n if (caseInsensitive) return Array.isArray(value) && value.includes(val.toLowerCase());\r\n return Array.isArray(value) && value.includes(val);\r\n case 'notInArray':\r\n if (caseInsensitive) return !(Array.isArray(value) && value.includes(val.toLowerCase()));\r\n return !(Array.isArray(value) && value.includes(val));\r\n case 'fuzzySearch':\r\n return (function (string, search) {\r\n if (search == null) return false;\r\n\r\n const stringLen = string.length;\r\n const searchLen = search.length;\r\n\r\n if (caseInsensitive) {\r\n string = string.toLowerCase();\r\n search = search.toLowerCase();\r\n }\r\n\r\n if (searchLen > stringLen) return false;\r\n if (searchLen === stringLen) return string === search;\r\n\r\n outer: for (let i = 0, j = 0; i < searchLen; i++) {\r\n const char = search.charCodeAt(i);\r\n\r\n while (j < stringLen) {\r\n if (string.charCodeAt(j++) === char) {\r\n continue outer;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n return true;\r\n })(String(val), value);\r\n case '==':\r\n return val == value;\r\n case '===':\r\n return val === value;\r\n case '!=':\r\n return val != value;\r\n case '!==':\r\n return val !== value;\r\n case '<':\r\n return val < value;\r\n case '<=':\r\n return val <= value;\r\n case '>':\r\n return val > value;\r\n case '>=':\r\n return val >= value;\r\n }\r\n\r\n return true;\r\n });\r\n },\r\n\r\n // values(prop:String):Array\r\n values (array, prop) {\r\n if (!array.length) return [];\r\n\r\n const static = dmx.propCheck.test(prop);\r\n\r\n return array.map((item) => {\r\n return static ? item[prop] : dmx.parse(prop, new dmx.DataScope(item, this));\r\n });\r\n },\r\n\r\n // groupBy(prop:String):Object\r\n groupBy (array, prop) {\r\n if (!array.length) return {};\r\n\r\n const static = dmx.propCheck.test(prop);\r\n\r\n return array.reduce((obj, item) => {\r\n const key = static ? item[prop] : dmx.parse(prop, new dmx.DataScope(item, this));\r\n \r\n if (obj[key]) {\r\n obj[key].push(item);\r\n } else {\r\n obj[key] = [item];\r\n }\r\n\r\n return obj;\r\n }, {});\r\n },\r\n\r\n // unique([prop:String]):Array\r\n unique (array, prop) {\r\n if (!array.length) return [];\r\n\r\n if (prop) {\r\n const static = dmx.propCheck.test(prop);\r\n\r\n array = array.map((item) => {\r\n return static ? item[prop] : dmx.parse(prop, dmx.DataScope(item, this));\r\n });\r\n }\r\n\r\n return Array.from(new Set(array));\r\n },\r\n\r\n // sortOn([prop:String]):Array\r\n sort (array, prop) {\r\n if (!array.length) return [];\r\n\r\n const static = !prop || dmx.propCheck.test(prop);\r\n\r\n return array.slice(0).sort((a, b) => {\r\n if (prop) {\r\n a = static ? a[prop] : dmx.parse(prop, dmx.DataScope(a, this));\r\n b = static ? b[prop] : dmx.parse(prop, dmx.DataScope(b, this));\r\n }\r\n return a < b ? -1 : a > b ? 1 : 0;\r\n });\r\n },\r\n\r\n // min([prop:String]):Number\r\n min (array, prop) {\r\n if (!array.length) return undefined;\r\n\r\n if (prop) {\r\n const static = dmx.propCheck.test(prop);\r\n\r\n array = array.map((item) => {\r\n return static ? item[prop] : dmx.parse(prop, dmx.DataScope(item, this));\r\n });\r\n }\r\n\r\n return Math.min.apply(null, array);\r\n },\r\n\r\n // max([prop:String]):Number\r\n max (array, prop) {\r\n if (!array.length) return undefined;\r\n\r\n if (prop) {\r\n const static = dmx.propCheck.test(prop);\r\n\r\n array = array.map((item) => {\r\n return static ? item[prop] : dmx.parse(prop, dmx.DataScope(item, this));\r\n });\r\n }\r\n\r\n return Math.max.apply(null, array);\r\n },\r\n\r\n // sum([prop:String]):Number\r\n sum (array, prop) {\r\n if (!array.length) return 0;\r\n\r\n const static = !prop || dmx.propCheck.test(prop);\r\n\r\n return array.reduce((sum, value) => {\r\n if (prop) value = static ? value[prop] : dmx.parse(prop, dmx.DataScope(value, this));\r\n return sum + Number(value);\r\n }, 0);\r\n },\r\n\r\n // avg([prop:String]):Number\r\n avg (array, prop) {\r\n if (!array.length) return 0;\r\n\r\n const static = !prop || dmx.propCheck.test(prop);\r\n\r\n return (array.reduce((sum, value) => {\r\n if (prop) value = static ? value[prop] : dmx.parse(prop, dmx.DataScope(value, this));\r\n return sum + Number(value);\r\n }, 0) / array.length);\r\n },\r\n\r\n});\r\n","dmx.Formatters('boolean', {\r\n\r\n // then(trueValue:Any, falseValue:Any):Any\r\n then (bool, trueValue, falseValue) {\r\n return bool ? trueValue : falseValue;\r\n },\r\n\r\n});\r\n","dmx.l10n = dmx.l10n || {};\r\ndmx.l10n.en = dmx.l10n.en || {};\r\n\r\ndmx.l10n.en.months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\r\ndmx.l10n.en.monthsShort = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\r\ndmx.l10n.en.days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\r\ndmx.l10n.en.daysShort = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\r\n\r\ndmx.Formatters('string', {\r\n // getYear():Number\r\n getYear (str) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n return date.getFullYear();\r\n },\r\n\r\n // getMonth():Number\r\n getMonth (str) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n return date.getMonth() + 1;\r\n },\r\n\r\n // getDate():Number\r\n getDate (str) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n return date.getDate();\r\n },\r\n\r\n // getDay():Number\r\n getDay (str) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n return date.getDay();\r\n },\r\n\r\n // getHours():Number\r\n getHours (str) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n return date.getHours();\r\n },\r\n\r\n // getMinutes():Number\r\n getMinutes (str) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n return date.getMinutes();\r\n },\r\n\r\n // getSeconds():Number\r\n getSeconds (str) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n return date.getSeconds();\r\n },\r\n\r\n // getMilliseconds():Number\r\n getMilliseconds (str) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n return date.getMilliseconds();\r\n },\r\n\r\n // addYears(n:Number):String\r\n addYears (str, n) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n date.setFullYear(date.getFullYear() + Number(n));\r\n return dmx.formatDate(date);\r\n },\r\n\r\n // addMonths(n:Number):String\r\n addMonths (str, n) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n date.setMonth(date.getMonth() + Number(n));\r\n return dmx.formatDate(date);\r\n },\r\n\r\n // addWeeks(n:Number):String\r\n addWeeks (str, n) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n date.setDate(date.getDate() + (Number(n) * 7));\r\n return dmx.formatDate(date);\r\n },\r\n\r\n // addDays(n:Number):String\r\n addDays (str, n) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n date.setDate(date.getDate() + Number(n));\r\n return dmx.formatDate(date);\r\n },\r\n\r\n // addHours(n:Number):String\r\n addHours (str, n) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n date.setHours(date.getHours() + Number(n));\r\n return dmx.formatDate(date);\r\n },\r\n\r\n // addMinutes(n:Number):String\r\n addMinutes (str, n) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n date.setMinutes(date.getMinutes() + Number(n));\r\n return dmx.formatDate(date);\r\n },\r\n\r\n // addSeconds(n:Number):String\r\n addSeconds (str, n) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n date.setSeconds(date.getSeconds() + Number(n));\r\n return dmx.formatDate(date);\r\n },\r\n\r\n // addMilliseconds(n:Number):String\r\n addMilliseconds (str, n) {\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n date.setMilliseconds(date.getMilliseconds() + Number(n));\r\n return dmx.formatDate(date);\r\n },\r\n\r\n // yearsUntil(date:String):Number\r\n yearsUntil (str1, str2) {\r\n const date1 = dmx.parseDate(str1);\r\n const date2 = dmx.parseDate(str2);\r\n if (!dmx.isValidDate(date1) || !dmx.isValidDate(date2)) return undefined;\r\n return date2.getFullYear() - date1.getFullYear();\r\n },\r\n\r\n // monthsUntil(date:String):Number\r\n monthsUntil (str1, str2) {\r\n const date1 = dmx.parseDate(str1);\r\n const date2 = dmx.parseDate(str2);\r\n if (!dmx.isValidDate(date1) || !dmx.isValidDate(date2)) return undefined;\r\n return date2.getFullYear() * 12 + date2.getMonth() - (date1.getFullYear() * 12 + date1.getMonth());\r\n },\r\n\r\n // weeksUntil(date:String):String\r\n weeksUntil (str1, str2) {\r\n const date1 = dmx.parseDate(str1);\r\n const date2 = dmx.parseDate(str2);\r\n if (!dmx.isValidDate(date1) || !dmx.isValidDate(date2)) return undefined;\r\n return Math.floor((date2 - date1) / 604800000); // 7 * 24 * 60 * 60 * 1000\r\n },\r\n\r\n // daysUntil(date:String):Number\r\n daysUntil (str1, str2) {\r\n const date1 = dmx.parseDate(str1);\r\n const date2 = dmx.parseDate(str2);\r\n if (!dmx.isValidDate(date1) || !dmx.isValidDate(date2)) return undefined;\r\n const resetTime = (date) => {\r\n date.setHours(0);\r\n date.setMinutes(0);\r\n date.setSeconds(0);\r\n date.setMilliseconds(0);\r\n return date;\r\n };\r\n return Math.round((resetTime(date2) - resetTime(date1)) / 86400000); // 24 * 60 * 60 * 1000\r\n },\r\n\r\n // hoursUntil(date:String):Number\r\n hoursUntil (str1, str2) {\r\n const date1 = dmx.parseDate(str1);\r\n const date2 = dmx.parseDate(str2);\r\n if (!dmx.isValidDate(date1) || !dmx.isValidDate(date2)) return undefined;\r\n return Math.floor((date2 - date1) / 3600000); // 60 * 60 * 1000\r\n },\r\n\r\n // minutesUntil(date:String):Number\r\n minutesUntil (str1, str2) {\r\n const date1 = dmx.parseDate(str1);\r\n const date2 = dmx.parseDate(str2);\r\n if (!dmx.isValidDate(date1) || !dmx.isValidDate(date2)) return undefined;\r\n return Math.floor((date2 - date1) / 60000); // 60 * 1000\r\n },\r\n\r\n // secondsUntil(date:String):Number\r\n secondsUntil (str1, str2) {\r\n const date1 = dmx.parseDate(str1);\r\n const date2 = dmx.parseDate(str2);\r\n if (!dmx.isValidDate(date1) || !dmx.isValidDate(date2)) return undefined;\r\n return Math.floor((date2 - date1) / 1000);\r\n },\r\n\r\n // millisecondsUntil(date:String):Number\r\n millisecondsUntil (str1, str2) {\r\n const date1 = dmx.parseDate(str1);\r\n const date2 = dmx.parseDate(str2);\r\n if (!dmx.isValidDate(date1) || !dmx.isValidDate(date2)) return undefined;\r\n return date2 - date1;\r\n },\r\n\r\n // timeUntil(date:String, incHours:Boolean):String\r\n timeUntil (str1, str2, incHours) {\r\n const pad = (s, n) => ('0000' + n).slice(-s);\r\n const date1 = dmx.parseDate(str1);\r\n const date2 = dmx.parseDate(str2);\r\n if (!dmx.isValidDate(date1) || !dmx.isValidDate(date2)) return undefined;\r\n let seconds = Math.floor((date2 - date1) / 1000);\r\n let minutes = Math.floor(seconds / 60);\r\n let hours = Math.floor(minutes / 60);\r\n seconds -= minutes * 60;\r\n if (incHours) {\r\n minutes -= hours * 60;\r\n return hours + ':' + pad(2, minutes) + ':' + pad(2, seconds);\r\n }\r\n return minutes + ':' + pad(2, seconds);\r\n },\r\n\r\n // formatDate(format:String):String\r\n formatDate (str, format) {\r\n const pad = (s, n) => ('0000' + n).slice(-s);\r\n const date = dmx.parseDate(str);\r\n if (!dmx.isValidDate(date)) return undefined;\r\n const year = date.getFullYear();\r\n const month = date.getMonth();\r\n const day = date.getDate();\r\n const weekday = date.getDay();\r\n const hours = date.getHours();\r\n const minutes = date.getMinutes();\r\n const seconds = date.getSeconds();\r\n const milliseconds = date.getMilliseconds();\r\n return format.replace(/([yMdHhmsSaAvw])(\\1+)?/g, (part) => {\r\n switch (part) {\r\n case 'yyyy':\r\n return pad(4, year);\r\n case 'yy':\r\n return pad(2, year);\r\n case 'y':\r\n return year;\r\n case 'MMMM':\r\n return dmx.l10n.en.months[month];\r\n case 'MMM':\r\n return dmx.l10n.en.monthsShort[month];\r\n case 'MM':\r\n return pad(2, month + 1);\r\n case 'M':\r\n return month + 1;\r\n case 'dddd':\r\n return dmx.l10n.en.days[weekday];\r\n case 'ddd':\r\n return dmx.l10n.en.daysShort[weekday];\r\n case 'dd':\r\n return pad(2, day);\r\n case 'd':\r\n return day;\r\n case 'HH':\r\n return pad(2, hours);\r\n case 'H':\r\n return hours;\r\n case 'hh':\r\n return pad(2, hours % 12 || 12);\r\n case 'h':\r\n return hours % 12 || 12;\r\n case 'mm':\r\n return pad(2, minutes);\r\n case 'm':\r\n return minutes;\r\n case 'ss':\r\n return pad(2, seconds);\r\n case 's':\r\n return seconds;\r\n case 'a':\r\n return hours < 12 ? 'am' : 'pm';\r\n case 'A':\r\n return hours < 12 ? 'AM' : 'PM';\r\n case 'v':\r\n case 'SSS':\r\n return pad(3, milliseconds);\r\n case 'w':\r\n return weekday;\r\n }\r\n return part;\r\n });\r\n },\r\n});\r\n","dmx.Formatters('number', {\r\n\r\n // inRange(min:Number, max:Number):Boolean\r\n inRange (number, min, max) {\r\n return number >= min && number <= max;\r\n },\r\n\r\n // abs():Number\r\n abs (number) {\r\n return Math.abs(number);\r\n },\r\n\r\n // ceil():Number\r\n ceil (number) {\r\n return Math.ceil(number);\r\n },\r\n\r\n // floor():Number\r\n floor (number) {\r\n return Math.floor(number);\r\n },\r\n\r\n // max(max:Number):Number\r\n max (number, max) {\r\n return Math.max(number, max);\r\n },\r\n\r\n // min(min:Number):Number\r\n min (number, min) {\r\n return Math.min(number, min);\r\n },\r\n\r\n // pow(exponent:Number):Number\r\n pow (number, exponent) {\r\n return Math.pow(number, exponent);\r\n },\r\n\r\n // per(amount:Number):Number\r\n per (number, amount) {\r\n return (number * amount) / 100;\r\n },\r\n\r\n // perOf(total:Number):Number\r\n perOf (number, total) {\r\n return number / total;\r\n },\r\n\r\n // round([precision:Number]):Number\r\n round (number, precision = 0) {\r\n let factor = Math.pow(10, precision);\r\n let temp = number * factor;\r\n let rounded = Math.round(temp);\r\n return rounded / factor;\r\n },\r\n\r\n // pad(length:Number):String\r\n pad (number, length) {\r\n let neg = number < 0 ? '-' : '';\r\n let str = String(Math.abs(number));\r\n while (str.length < length) {\r\n str = '0' + str;\r\n }\r\n return neg + str;\r\n },\r\n\r\n // toFixed([decimals:Number]):String\r\n toFixed (number, decimals) {\r\n return number.toFixed(decimals);\r\n },\r\n\r\n // formatNumber([decimals:Number], [separator:String], [delimiter:String]):String\r\n formatNumber (number, decimals, separator = '.', delimiter = '') {\r\n if (isNaN(number)) return 'Invalid Number';\r\n if (!isFinite(number)) return (number < 0 ? '-' : '') + '\\u221E';\r\n\r\n separator = separator || '.';\r\n delimiter = delimiter || '';\r\n\r\n let neg = number < 0;\r\n number = Math.abs(number);\r\n let x = (decimals != null && decimals >= 0 ? number.toFixed(decimals) : number.toString()).split('.');\r\n let x1 = x[0];\r\n let x2 = x.length > 1 ? separator + x[1] : '';\r\n\r\n if (delimiter) {\r\n let re = /(\\d+)(\\d{3})/;\r\n while (re.test(x1)) {\r\n x1 = x1.replace(re, '$1' + delimiter + '$2');\r\n }\r\n }\r\n\r\n return (neg ? '-' : '') + x1 + x2;\r\n },\r\n\r\n // formatPercentage([decimals:Number]):String\r\n formatPercentage (number, decimals) {\r\n if (isNaN(number) || !isFinite(number)) return 'Invalid Percentage';\r\n\r\n let num = number * 100;\r\n if (decimals != null && decimals >= 0) {\r\n num = num.toFixed(decimals);\r\n }\r\n return num + '%';\r\n },\r\n\r\n // formatCurrency([unit:String], [separator:String], [delimiter:String], [precision:Number]):String\r\n formatCurrency (number, unit = '$', separator = '.', delimiter = ',', precision = 2) {\r\n if (isNaN(number) || !isFinite(number)) return 'Invalid Amount';\r\n\r\n let neg = number < 0;\r\n let x = Math.abs(number).toFixed(precision).split('.');\r\n let x1 = x[0];\r\n let x2 = x.length > 1 ? separator + x[1] : '';\r\n\r\n if (delimiter) {\r\n let re = /(\\d+)(\\d{3})/;\r\n while (re.test(x1)) {\r\n x1 = x1.replace(re, '$1' + delimiter + '$2');\r\n }\r\n }\r\n\r\n return (neg ? '-' : '') + unit + x1 + x2;\r\n },\r\n\r\n // formatSize([decimals:Number], [binary:Boolean]):String\r\n formatSize (number, decimals = 2, binary = false) {\r\n if (isNaN(number) || !isFinite(number)) return 'Invalid Size';\r\n\r\n let base = binary ? 1024 : 1000;\r\n let suffix = binary ? ['KiB', 'MiB', 'GiB', 'TiB'] : ['KB', 'MB', 'GB', 'TB'];\r\n\r\n for (let i = 3; i >= 0; i--) {\r\n let n = Math.pow(base, i + 1);\r\n if (number >= n) {\r\n number /= n;\r\n if (decimals >= 0) {\r\n number = number.toFixed(decimals);\r\n }\r\n return number + ' ' + suffix[i];\r\n }\r\n }\r\n\r\n return number + ' B';\r\n },\r\n\r\n});\r\n","dmx.Formatters('string', {\r\n\r\n // startWith(search:String):Boolean\r\n startsWith (string, search, caseInsensitive) {\r\n if (search == null) return false;\r\n\r\n if (caseInsensitive) {\r\n string = string.toLowerCase();\r\n search = search.toLowerCase();\r\n }\r\n\r\n return string.startsWith(search);\r\n },\r\n\r\n // endsWith(search:String):Boolean\r\n endsWith (string, search, caseInsensitive) {\r\n if (search == null) return false;\r\n\r\n if (caseInsensitive) {\r\n string = string.toLowerCase();\r\n search = search.toLowerCase();\r\n }\r\n\r\n return string.endsWith(search);\r\n },\r\n\r\n // contains(search:String):Boolean\r\n contains (string, search, caseInsensitive) {\r\n if (search == null) return false;\r\n \r\n if (caseInsensitive) {\r\n string = string.toLowerCase();\r\n search = search.toLowerCase();\r\n }\r\n\r\n return string.includes(search);\r\n },\r\n\r\n // notContains(search:String):Boolean\r\n notContains (string, search, caseInsensitive) {\r\n if (search == null) return true;\r\n\r\n if (caseInsensitive) {\r\n string = string.toLowerCase();\r\n search = search.toLowerCase();\r\n }\r\n\r\n return !string.includes(search);\r\n },\r\n\r\n search (string, search, matchAll, caseInsensitive) {\r\n if (search == null) return false;\r\n\r\n if (caseInsensitive) {\r\n string = string.toLowerCase();\r\n search = search.toLowerCase();\r\n }\r\n\r\n return String(search).split(/\\s+/)[matchAll ? 'every' : 'some']((word) => {\r\n return string.includes(word);\r\n });\r\n },\r\n\r\n // fuzzySearch(search:String):Boolean\r\n fuzzySearch (string, search, caseInsensitive) {\r\n if (search == null) return false;\r\n\r\n const stringLen = string.length;\r\n const searchLen = search.length;\r\n\r\n if (searchLen > stringLen) {\r\n return false;\r\n }\r\n\r\n if (caseInsensitive) {\r\n string = string.toLowerCase();\r\n search = search.toLowerCase();\r\n }\r\n\r\n if (searchLen === stringLen) {\r\n return string === search;\r\n }\r\n\r\n outer: for (let i = 0, j = 0; i < searchLen; i++) {\r\n const char = search.charCodeAt(i);\r\n \r\n while (j < stringLen) {\r\n if (string.charCodeAt(j++) === char) {\r\n continue outer;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n return true;\r\n },\r\n\r\n inArray (string, array, caseInsensitive) {\r\n if (!Array.isArray(array)) return false;\r\n\r\n if (caseInsensitive) {\r\n string = string.toLowerCase();\r\n }\r\n\r\n return array.some((item) => {\r\n if (caseInsensitive) {\r\n item = item.toLowerCase();\r\n }\r\n\r\n return item === string;\r\n });\r\n },\r\n\r\n notInArray (string, array, caseInsensitive) {\r\n if (!Array.isArray(array)) return true;\r\n\r\n if (caseInsensitive) {\r\n string = string.toLowerCase();\r\n }\r\n\r\n return !array.some((item) => {\r\n if (caseInsensitive) {\r\n item = item.toLowerCase();\r\n }\r\n\r\n return item === string;\r\n });\r\n },\r\n\r\n // test(regexp:RegExp):Boolean\r\n test (string, regexp) {\r\n return regexp.test(string);\r\n },\r\n\r\n // lowercase():String\r\n lowercase (string) {\r\n return string.toLowerCase();\r\n },\r\n\r\n // uppercase():String\r\n uppercase (string) {\r\n return string.toUpperCase();\r\n },\r\n\r\n // slugify():String\r\n slugify (string) {\r\n const map = {\"2d\":\"-\",\"20\":\"-\",\"24\":\"s\",\"26\":\"and\",\"30\":\"0\",\"31\":\"1\",\"32\":\"2\",\"33\":\"3\",\"34\":\"4\",\"35\":\"5\",\"36\":\"6\",\"37\":\"7\",\"38\":\"8\",\"39\":\"9\",\"41\":\"A\",\"42\":\"B\",\"43\":\"C\",\"44\":\"D\",\"45\":\"E\",\"46\":\"F\",\"47\":\"G\",\"48\":\"H\",\"49\":\"I\",\"50\":\"P\",\"51\":\"Q\",\"52\":\"R\",\"53\":\"S\",\"54\":\"T\",\"55\":\"U\",\"56\":\"V\",\"57\":\"W\",\"58\":\"X\",\"59\":\"Y\",\"61\":\"a\",\"62\":\"b\",\"63\":\"c\",\"64\":\"d\",\"65\":\"e\",\"66\":\"f\",\"67\":\"g\",\"68\":\"h\",\"69\":\"i\",\"70\":\"p\",\"71\":\"q\",\"72\":\"r\",\"73\":\"s\",\"74\":\"t\",\"75\":\"u\",\"76\":\"v\",\"77\":\"w\",\"78\":\"x\",\"79\":\"y\",\"100\":\"A\",\"101\":\"a\",\"102\":\"A\",\"103\":\"a\",\"104\":\"A\",\"105\":\"a\",\"106\":\"C\",\"107\":\"c\",\"108\":\"C\",\"109\":\"c\",\"110\":\"D\",\"111\":\"d\",\"112\":\"E\",\"113\":\"e\",\"114\":\"E\",\"115\":\"e\",\"116\":\"E\",\"117\":\"e\",\"118\":\"E\",\"119\":\"e\",\"120\":\"G\",\"121\":\"g\",\"122\":\"G\",\"123\":\"g\",\"124\":\"H\",\"125\":\"h\",\"126\":\"H\",\"127\":\"h\",\"128\":\"I\",\"129\":\"i\",\"130\":\"I\",\"131\":\"i\",\"132\":\"IJ\",\"133\":\"ij\",\"134\":\"J\",\"135\":\"j\",\"136\":\"K\",\"137\":\"k\",\"138\":\"k\",\"139\":\"L\",\"140\":\"l\",\"141\":\"L\",\"142\":\"l\",\"143\":\"N\",\"144\":\"n\",\"145\":\"N\",\"146\":\"n\",\"147\":\"N\",\"148\":\"n\",\"149\":\"n\",\"150\":\"O\",\"151\":\"o\",\"152\":\"OE\",\"153\":\"oe\",\"154\":\"R\",\"155\":\"r\",\"156\":\"R\",\"157\":\"r\",\"158\":\"R\",\"159\":\"r\",\"160\":\"S\",\"161\":\"s\",\"162\":\"T\",\"163\":\"t\",\"164\":\"T\",\"165\":\"t\",\"166\":\"T\",\"167\":\"t\",\"168\":\"U\",\"169\":\"u\",\"170\":\"U\",\"171\":\"u\",\"172\":\"U\",\"173\":\"u\",\"174\":\"W\",\"175\":\"w\",\"176\":\"Y\",\"177\":\"y\",\"178\":\"Y\",\"179\":\"Z\",\"180\":\"b\",\"181\":\"B\",\"182\":\"b\",\"183\":\"b\",\"184\":\"b\",\"185\":\"b\",\"186\":\"C\",\"187\":\"C\",\"188\":\"c\",\"189\":\"D\",\"190\":\"E\",\"191\":\"F\",\"192\":\"f\",\"193\":\"G\",\"194\":\"Y\",\"195\":\"h\",\"196\":\"i\",\"197\":\"I\",\"198\":\"K\",\"199\":\"k\",\"200\":\"A\",\"201\":\"a\",\"202\":\"A\",\"203\":\"a\",\"204\":\"E\",\"205\":\"e\",\"206\":\"E\",\"207\":\"e\",\"208\":\"I\",\"209\":\"i\",\"210\":\"R\",\"211\":\"r\",\"212\":\"R\",\"213\":\"r\",\"214\":\"U\",\"215\":\"u\",\"216\":\"U\",\"217\":\"u\",\"218\":\"S\",\"219\":\"s\",\"220\":\"n\",\"221\":\"d\",\"222\":\"8\",\"223\":\"8\",\"224\":\"Z\",\"225\":\"z\",\"226\":\"A\",\"227\":\"a\",\"228\":\"E\",\"229\":\"e\",\"230\":\"O\",\"231\":\"o\",\"232\":\"Y\",\"233\":\"y\",\"234\":\"l\",\"235\":\"n\",\"236\":\"t\",\"237\":\"j\",\"238\":\"db\",\"239\":\"qp\",\"240\":\"<\",\"241\":\"?\",\"242\":\"?\",\"243\":\"B\",\"244\":\"U\",\"245\":\"A\",\"246\":\"E\",\"247\":\"e\",\"248\":\"J\",\"249\":\"j\",\"250\":\"a\",\"251\":\"a\",\"252\":\"a\",\"253\":\"b\",\"254\":\"c\",\"255\":\"e\",\"256\":\"d\",\"257\":\"d\",\"258\":\"e\",\"259\":\"e\",\"260\":\"g\",\"261\":\"g\",\"262\":\"g\",\"263\":\"Y\",\"264\":\"x\",\"265\":\"u\",\"266\":\"h\",\"267\":\"h\",\"268\":\"i\",\"269\":\"i\",\"270\":\"w\",\"271\":\"m\",\"272\":\"n\",\"273\":\"n\",\"274\":\"N\",\"275\":\"o\",\"276\":\"oe\",\"277\":\"m\",\"278\":\"o\",\"279\":\"r\",\"280\":\"R\",\"281\":\"R\",\"282\":\"S\",\"283\":\"f\",\"284\":\"f\",\"285\":\"f\",\"286\":\"f\",\"287\":\"t\",\"288\":\"t\",\"289\":\"u\",\"290\":\"Z\",\"291\":\"Z\",\"292\":\"3\",\"293\":\"3\",\"294\":\"?\",\"295\":\"?\",\"296\":\"5\",\"297\":\"C\",\"298\":\"O\",\"299\":\"B\",\"363\":\"a\",\"364\":\"e\",\"365\":\"i\",\"366\":\"o\",\"367\":\"u\",\"368\":\"c\",\"369\":\"d\",\"386\":\"A\",\"388\":\"E\",\"389\":\"H\",\"390\":\"i\",\"391\":\"A\",\"392\":\"B\",\"393\":\"r\",\"394\":\"A\",\"395\":\"E\",\"396\":\"Z\",\"397\":\"H\",\"398\":\"O\",\"399\":\"I\",\"400\":\"E\",\"401\":\"E\",\"402\":\"T\",\"403\":\"r\",\"404\":\"E\",\"405\":\"S\",\"406\":\"I\",\"407\":\"I\",\"408\":\"J\",\"409\":\"jb\",\"410\":\"A\",\"411\":\"B\",\"412\":\"V\",\"413\":\"G\",\"414\":\"D\",\"415\":\"E\",\"416\":\"ZH\",\"417\":\"Z\",\"418\":\"I\",\"419\":\"Y\",\"420\":\"R\",\"421\":\"S\",\"422\":\"T\",\"423\":\"U\",\"424\":\"F\",\"425\":\"H\",\"426\":\"TS\",\"427\":\"CH\",\"428\":\"SH\",\"429\":\"SCH\",\"430\":\"a\",\"431\":\"b\",\"432\":\"v\",\"433\":\"g\",\"434\":\"d\",\"435\":\"e\",\"436\":\"zh\",\"437\":\"z\",\"438\":\"i\",\"439\":\"y\",\"440\":\"r\",\"441\":\"s\",\"442\":\"t\",\"443\":\"u\",\"444\":\"f\",\"445\":\"h\",\"446\":\"ts\",\"447\":\"ch\",\"448\":\"sh\",\"449\":\"sch\",\"450\":\"e\",\"451\":\"e\",\"452\":\"h\",\"453\":\"r\",\"454\":\"e\",\"455\":\"s\",\"456\":\"i\",\"457\":\"i\",\"458\":\"j\",\"459\":\"jb\",\"460\":\"W\",\"461\":\"w\",\"462\":\"Tb\",\"463\":\"tb\",\"464\":\"IC\",\"465\":\"ic\",\"466\":\"A\",\"467\":\"a\",\"468\":\"IA\",\"469\":\"ia\",\"470\":\"Y\",\"471\":\"y\",\"472\":\"O\",\"473\":\"o\",\"474\":\"V\",\"475\":\"v\",\"476\":\"V\",\"477\":\"v\",\"478\":\"Oy\",\"479\":\"oy\",\"480\":\"C\",\"481\":\"c\",\"490\":\"R\",\"491\":\"r\",\"492\":\"F\",\"493\":\"f\",\"494\":\"H\",\"495\":\"h\",\"496\":\"X\",\"497\":\"x\",\"498\":\"3\",\"499\":\"3\",\"500\":\"d\",\"501\":\"d\",\"502\":\"d\",\"503\":\"d\",\"504\":\"R\",\"505\":\"R\",\"506\":\"R\",\"507\":\"R\",\"508\":\"JT\",\"509\":\"JT\",\"510\":\"E\",\"511\":\"e\",\"512\":\"JT\",\"513\":\"jt\",\"514\":\"JX\",\"515\":\"JX\",\"531\":\"U\",\"532\":\"D\",\"533\":\"Q\",\"534\":\"N\",\"535\":\"T\",\"536\":\"2\",\"537\":\"F\",\"538\":\"r\",\"539\":\"p\",\"540\":\"z\",\"541\":\"2\",\"542\":\"n\",\"543\":\"x\",\"544\":\"U\",\"545\":\"B\",\"546\":\"j\",\"547\":\"t\",\"548\":\"n\",\"549\":\"C\",\"550\":\"R\",\"551\":\"8\",\"552\":\"R\",\"553\":\"O\",\"554\":\"P\",\"555\":\"O\",\"556\":\"S\",\"561\":\"w\",\"562\":\"f\",\"563\":\"q\",\"564\":\"n\",\"565\":\"t\",\"566\":\"q\",\"567\":\"t\",\"568\":\"n\",\"569\":\"p\",\"570\":\"h\",\"571\":\"a\",\"572\":\"n\",\"573\":\"a\",\"574\":\"u\",\"575\":\"j\",\"576\":\"u\",\"577\":\"2\",\"578\":\"n\",\"579\":\"2\",\"580\":\"n\",\"581\":\"g\",\"582\":\"l\",\"583\":\"uh\",\"584\":\"p\",\"585\":\"o\",\"586\":\"S\",\"587\":\"u\",\"4a\":\"J\",\"4b\":\"K\",\"4c\":\"L\",\"4d\":\"M\",\"4e\":\"N\",\"4f\":\"O\",\"5a\":\"Z\",\"6a\":\"j\",\"6b\":\"k\",\"6c\":\"l\",\"6d\":\"m\",\"6e\":\"n\",\"6f\":\"o\",\"7a\":\"z\",\"a2\":\"c\",\"a3\":\"f\",\"a5\":\"Y\",\"a7\":\"s\",\"a9\":\"c\",\"aa\":\"a\",\"ae\":\"r\",\"b2\":\"2\",\"b3\":\"3\",\"b5\":\"u\",\"b6\":\"p\",\"b9\":\"1\",\"c0\":\"A\",\"c1\":\"A\",\"c2\":\"A\",\"c3\":\"A\",\"c4\":\"A\",\"c5\":\"A\",\"c6\":\"AE\",\"c7\":\"C\",\"c8\":\"E\",\"c9\":\"E\",\"ca\":\"E\",\"cb\":\"E\",\"cc\":\"I\",\"cd\":\"I\",\"ce\":\"I\",\"cf\":\"I\",\"d0\":\"D\",\"d1\":\"N\",\"d2\":\"O\",\"d3\":\"O\",\"d4\":\"O\",\"d5\":\"O\",\"d6\":\"O\",\"d7\":\"X\",\"d8\":\"O\",\"d9\":\"U\",\"da\":\"U\",\"db\":\"U\",\"dc\":\"U\",\"dd\":\"Y\",\"de\":\"p\",\"df\":\"b\",\"e0\":\"a\",\"e1\":\"a\",\"e2\":\"a\",\"e3\":\"a\",\"e4\":\"a\",\"e5\":\"a\",\"e6\":\"ae\",\"e7\":\"c\",\"e8\":\"e\",\"e9\":\"e\",\"ea\":\"e\",\"eb\":\"e\",\"ec\":\"i\",\"ed\":\"i\",\"ee\":\"i\",\"ef\":\"i\",\"f0\":\"o\",\"f1\":\"n\",\"f2\":\"o\",\"f3\":\"o\",\"f4\":\"o\",\"f5\":\"o\",\"f6\":\"o\",\"f8\":\"o\",\"f9\":\"u\",\"fa\":\"u\",\"fb\":\"u\",\"fc\":\"u\",\"fd\":\"y\",\"ff\":\"y\",\"10a\":\"C\",\"10b\":\"c\",\"10c\":\"C\",\"10d\":\"c\",\"10e\":\"D\",\"10f\":\"d\",\"11a\":\"E\",\"11b\":\"e\",\"11c\":\"G\",\"11d\":\"g\",\"11e\":\"G\",\"11f\":\"g\",\"12a\":\"I\",\"12b\":\"i\",\"12c\":\"I\",\"12d\":\"i\",\"12e\":\"I\",\"12f\":\"i\",\"13a\":\"l\",\"13b\":\"L\",\"13c\":\"l\",\"13d\":\"L\",\"13e\":\"l\",\"13f\":\"L\",\"14a\":\"n\",\"14b\":\"n\",\"14c\":\"O\",\"14d\":\"o\",\"14e\":\"O\",\"14f\":\"o\",\"15a\":\"S\",\"15b\":\"s\",\"15c\":\"S\",\"15d\":\"s\",\"15e\":\"S\",\"15f\":\"s\",\"16a\":\"U\",\"16b\":\"u\",\"16c\":\"U\",\"16d\":\"u\",\"16e\":\"U\",\"16f\":\"u\",\"17a\":\"z\",\"17b\":\"Z\",\"17c\":\"z\",\"17d\":\"Z\",\"17e\":\"z\",\"17f\":\"f\",\"18a\":\"D\",\"18b\":\"d\",\"18c\":\"d\",\"18d\":\"q\",\"18e\":\"E\",\"18f\":\"e\",\"19a\":\"l\",\"19b\":\"h\",\"19c\":\"w\",\"19d\":\"N\",\"19e\":\"n\",\"19f\":\"O\",\"1a0\":\"O\",\"1a1\":\"o\",\"1a2\":\"P\",\"1a3\":\"P\",\"1a4\":\"P\",\"1a5\":\"p\",\"1a6\":\"R\",\"1a7\":\"S\",\"1a8\":\"s\",\"1a9\":\"E\",\"1aa\":\"l\",\"1ab\":\"t\",\"1ac\":\"T\",\"1ad\":\"t\",\"1ae\":\"T\",\"1af\":\"U\",\"1b0\":\"u\",\"1b1\":\"U\",\"1b2\":\"U\",\"1b3\":\"Y\",\"1b4\":\"y\",\"1b5\":\"Z\",\"1b6\":\"z\",\"1b7\":\"3\",\"1b8\":\"3\",\"1b9\":\"3\",\"1ba\":\"3\",\"1bb\":\"2\",\"1bc\":\"5\",\"1bd\":\"5\",\"1be\":\"5\",\"1bf\":\"p\",\"1c4\":\"DZ\",\"1c5\":\"Dz\",\"1c6\":\"dz\",\"1c7\":\"Lj\",\"1c8\":\"Lj\",\"1c9\":\"lj\",\"1ca\":\"NJ\",\"1cb\":\"Nj\",\"1cc\":\"nj\",\"1cd\":\"A\",\"1ce\":\"a\",\"1cf\":\"I\",\"1d0\":\"i\",\"1d1\":\"O\",\"1d2\":\"o\",\"1d3\":\"U\",\"1d4\":\"u\",\"1d5\":\"U\",\"1d6\":\"u\",\"1d7\":\"U\",\"1d8\":\"u\",\"1d9\":\"U\",\"1da\":\"u\",\"1db\":\"U\",\"1dc\":\"u\",\"1dd\":\"e\",\"1de\":\"A\",\"1df\":\"a\",\"1e0\":\"A\",\"1e1\":\"a\",\"1e2\":\"AE\",\"1e3\":\"ae\",\"1e4\":\"G\",\"1e5\":\"g\",\"1e6\":\"G\",\"1e7\":\"g\",\"1e8\":\"K\",\"1e9\":\"k\",\"1ea\":\"Q\",\"1eb\":\"q\",\"1ec\":\"Q\",\"1ed\":\"q\",\"1ee\":\"3\",\"1ef\":\"3\",\"1f0\":\"J\",\"1f1\":\"dz\",\"1f2\":\"dZ\",\"1f3\":\"DZ\",\"1f4\":\"g\",\"1f5\":\"G\",\"1f6\":\"h\",\"1f7\":\"p\",\"1f8\":\"N\",\"1f9\":\"n\",\"1fa\":\"A\",\"1fb\":\"a\",\"1fc\":\"AE\",\"1fd\":\"ae\",\"1fe\":\"O\",\"1ff\":\"o\",\"20a\":\"I\",\"20b\":\"i\",\"20c\":\"O\",\"20d\":\"o\",\"20e\":\"O\",\"20f\":\"o\",\"21a\":\"T\",\"21b\":\"t\",\"21c\":\"3\",\"21d\":\"3\",\"21e\":\"H\",\"21f\":\"h\",\"22a\":\"O\",\"22b\":\"o\",\"22c\":\"O\",\"22d\":\"o\",\"22e\":\"O\",\"22f\":\"o\",\"23a\":\"A\",\"23b\":\"C\",\"23c\":\"c\",\"23d\":\"L\",\"23e\":\"T\",\"23f\":\"s\",\"24a\":\"Q\",\"24b\":\"q\",\"24c\":\"R\",\"24d\":\"r\",\"24e\":\"Y\",\"24f\":\"y\",\"25a\":\"e\",\"25b\":\"3\",\"25c\":\"3\",\"25d\":\"3\",\"25e\":\"3\",\"25f\":\"j\",\"26a\":\"i\",\"26b\":\"I\",\"26c\":\"I\",\"26d\":\"I\",\"26e\":\"h\",\"26f\":\"w\",\"27a\":\"R\",\"27b\":\"r\",\"27c\":\"R\",\"27d\":\"R\",\"27e\":\"r\",\"27f\":\"r\",\"28a\":\"u\",\"28b\":\"v\",\"28c\":\"A\",\"28d\":\"M\",\"28e\":\"Y\",\"28f\":\"Y\",\"29a\":\"B\",\"29b\":\"G\",\"29c\":\"H\",\"29d\":\"j\",\"29e\":\"K\",\"29f\":\"L\",\"2a0\":\"q\",\"2a1\":\"?\",\"2a2\":\"c\",\"2a3\":\"dz\",\"2a4\":\"d3\",\"2a5\":\"dz\",\"2a6\":\"ts\",\"2a7\":\"tf\",\"2a8\":\"tc\",\"2a9\":\"fn\",\"2aa\":\"ls\",\"2ab\":\"lz\",\"2ac\":\"ww\",\"2ae\":\"u\",\"2af\":\"u\",\"2b0\":\"h\",\"2b1\":\"h\",\"2b2\":\"j\",\"2b3\":\"r\",\"2b4\":\"r\",\"2b5\":\"r\",\"2b6\":\"R\",\"2b7\":\"W\",\"2b8\":\"Y\",\"2df\":\"x\",\"2e0\":\"Y\",\"2e1\":\"1\",\"2e2\":\"s\",\"2e3\":\"x\",\"2e4\":\"c\",\"36a\":\"h\",\"36b\":\"m\",\"36c\":\"r\",\"36d\":\"t\",\"36e\":\"v\",\"36f\":\"x\",\"37b\":\"c\",\"37c\":\"c\",\"37d\":\"c\",\"38a\":\"I\",\"38c\":\"O\",\"38e\":\"Y\",\"38f\":\"O\",\"39a\":\"K\",\"39b\":\"A\",\"39c\":\"M\",\"39d\":\"N\",\"39e\":\"E\",\"39f\":\"O\",\"3a0\":\"TT\",\"3a1\":\"P\",\"3a3\":\"E\",\"3a4\":\"T\",\"3a5\":\"Y\",\"3a6\":\"O\",\"3a7\":\"X\",\"3a8\":\"Y\",\"3a9\":\"O\",\"3aa\":\"I\",\"3ab\":\"Y\",\"3ac\":\"a\",\"3ad\":\"e\",\"3ae\":\"n\",\"3af\":\"i\",\"3b0\":\"v\",\"3b1\":\"a\",\"3b2\":\"b\",\"3b3\":\"y\",\"3b4\":\"d\",\"3b5\":\"e\",\"3b6\":\"c\",\"3b7\":\"n\",\"3b8\":\"0\",\"3b9\":\"1\",\"3ba\":\"k\",\"3bb\":\"j\",\"3bc\":\"u\",\"3bd\":\"v\",\"3be\":\"c\",\"3bf\":\"o\",\"3c0\":\"tt\",\"3c1\":\"p\",\"3c2\":\"s\",\"3c3\":\"o\",\"3c4\":\"t\",\"3c5\":\"u\",\"3c6\":\"q\",\"3c7\":\"X\",\"3c8\":\"Y\",\"3c9\":\"w\",\"3ca\":\"i\",\"3cb\":\"u\",\"3cc\":\"o\",\"3cd\":\"u\",\"3ce\":\"w\",\"3d0\":\"b\",\"3d1\":\"e\",\"3d2\":\"Y\",\"3d3\":\"Y\",\"3d4\":\"Y\",\"3d5\":\"O\",\"3d6\":\"w\",\"3d7\":\"x\",\"3d8\":\"Q\",\"3d9\":\"q\",\"3da\":\"C\",\"3db\":\"c\",\"3dc\":\"F\",\"3dd\":\"f\",\"3de\":\"N\",\"3df\":\"N\",\"3e2\":\"W\",\"3e3\":\"w\",\"3e4\":\"q\",\"3e5\":\"q\",\"3e6\":\"h\",\"3e7\":\"e\",\"3e8\":\"S\",\"3e9\":\"s\",\"3ea\":\"X\",\"3eb\":\"x\",\"3ec\":\"6\",\"3ed\":\"6\",\"3ee\":\"t\",\"3ef\":\"t\",\"3f0\":\"x\",\"3f1\":\"e\",\"3f2\":\"c\",\"3f3\":\"j\",\"3f4\":\"O\",\"3f5\":\"E\",\"3f6\":\"E\",\"3f7\":\"p\",\"3f8\":\"p\",\"3f9\":\"C\",\"3fa\":\"M\",\"3fb\":\"M\",\"3fc\":\"p\",\"3fd\":\"C\",\"3fe\":\"C\",\"3ff\":\"C\",\"40a\":\"Hb\",\"40b\":\"Th\",\"40c\":\"K\",\"40d\":\"N\",\"40e\":\"Y\",\"40f\":\"U\",\"41a\":\"K\",\"41b\":\"L\",\"41c\":\"M\",\"41d\":\"N\",\"41e\":\"O\",\"41f\":\"P\",\"42a\":\"\",\"42b\":\"Y\",\"42c\":\"\",\"42d\":\"E\",\"42e\":\"U\",\"42f\":\"YA\",\"43a\":\"k\",\"43b\":\"l\",\"43c\":\"m\",\"43d\":\"n\",\"43e\":\"o\",\"43f\":\"p\",\"44a\":\"\",\"44b\":\"y\",\"44c\":\"\",\"44d\":\"e\",\"44e\":\"u\",\"44f\":\"ya\",\"45a\":\"Hb\",\"45b\":\"h\",\"45c\":\"k\",\"45d\":\"n\",\"45e\":\"y\",\"45f\":\"u\",\"46a\":\"mY\",\"46b\":\"my\",\"46c\":\"Im\",\"46d\":\"Im\",\"46e\":\"3\",\"46f\":\"3\",\"47a\":\"O\",\"47b\":\"o\",\"47c\":\"W\",\"47d\":\"w\",\"47e\":\"W\",\"47f\":\"W\",\"48a\":\"H\",\"48b\":\"H\",\"48c\":\"B\",\"48d\":\"b\",\"48e\":\"P\",\"48f\":\"p\",\"49a\":\"K\",\"49b\":\"k\",\"49c\":\"K\",\"49d\":\"k\",\"49e\":\"K\",\"49f\":\"k\",\"4a0\":\"K\",\"4a1\":\"k\",\"4a2\":\"H\",\"4a3\":\"h\",\"4a4\":\"H\",\"4a5\":\"h\",\"4a6\":\"Ih\",\"4a7\":\"ih\",\"4a8\":\"O\",\"4a9\":\"o\",\"4aa\":\"C\",\"4ab\":\"c\",\"4ac\":\"T\",\"4ad\":\"t\",\"4ae\":\"Y\",\"4af\":\"y\",\"4b0\":\"Y\",\"4b1\":\"y\",\"4b2\":\"X\",\"4b3\":\"x\",\"4b4\":\"TI\",\"4b5\":\"ti\",\"4b6\":\"H\",\"4b7\":\"h\",\"4b8\":\"H\",\"4b9\":\"h\",\"4ba\":\"H\",\"4bb\":\"h\",\"4bc\":\"E\",\"4bd\":\"e\",\"4be\":\"E\",\"4bf\":\"e\",\"4c0\":\"I\",\"4c1\":\"X\",\"4c2\":\"x\",\"4c3\":\"K\",\"4c4\":\"k\",\"4c5\":\"jt\",\"4c6\":\"jt\",\"4c7\":\"H\",\"4c8\":\"h\",\"4c9\":\"H\",\"4ca\":\"h\",\"4cb\":\"H\",\"4cc\":\"h\",\"4cd\":\"M\",\"4ce\":\"m\",\"4cf\":\"l\",\"4d0\":\"A\",\"4d1\":\"a\",\"4d2\":\"A\",\"4d3\":\"a\",\"4d4\":\"AE\",\"4d5\":\"ae\",\"4d6\":\"E\",\"4d7\":\"e\",\"4d8\":\"e\",\"4d9\":\"e\",\"4da\":\"E\",\"4db\":\"e\",\"4dc\":\"X\",\"4dd\":\"X\",\"4de\":\"3\",\"4df\":\"3\",\"4e0\":\"3\",\"4e1\":\"3\",\"4e2\":\"N\",\"4e3\":\"n\",\"4e4\":\"N\",\"4e5\":\"n\",\"4e6\":\"O\",\"4e7\":\"o\",\"4e8\":\"O\",\"4e9\":\"o\",\"4ea\":\"O\",\"4eb\":\"o\",\"4ec\":\"E\",\"4ed\":\"e\",\"4ee\":\"Y\",\"4ef\":\"y\",\"4f0\":\"Y\",\"4f1\":\"y\",\"4f2\":\"Y\",\"4f3\":\"y\",\"4f4\":\"H\",\"4f5\":\"h\",\"4f6\":\"R\",\"4f7\":\"r\",\"4f8\":\"bI\",\"4f9\":\"bi\",\"4fa\":\"F\",\"4fb\":\"f\",\"4fc\":\"X\",\"4fd\":\"x\",\"4fe\":\"X\",\"4ff\":\"x\",\"50a\":\"H\",\"50b\":\"h\",\"50c\":\"G\",\"50d\":\"g\",\"50e\":\"T\",\"50f\":\"t\",\"51a\":\"Q\",\"51b\":\"q\",\"51c\":\"W\",\"51d\":\"w\",\"53a\":\"d\",\"53b\":\"r\",\"53c\":\"L\",\"53d\":\"Iu\",\"53e\":\"O\",\"53f\":\"y\",\"54a\":\"m\",\"54b\":\"o\",\"54c\":\"N\",\"54d\":\"U\",\"54e\":\"Y\",\"54f\":\"S\",\"56a\":\"d\",\"56b\":\"h\",\"56c\":\"l\",\"56d\":\"lu\",\"56e\":\"d\",\"56f\":\"y\",\"57a\":\"w\",\"57b\":\"2\",\"57c\":\"n\",\"57d\":\"u\",\"57e\":\"y\",\"57f\":\"un\"};\r\n\r\n let str = '';\r\n for (let i = 0; i < string.length; i++) {\r\n str += map[string.charCodeAt(i).toString(16)] || '';\r\n }\r\n\r\n return str.toLowerCase().replace(/-+/g, '-').replace(/^-|-$/, '');\r\n },\r\n\r\n // camelize():String\r\n camelize (string) {\r\n return string.trim().replace(/(\\-|_|\\s)+(.)?/g, (a, b, c) => {\r\n return (c ? c.toUpperCase() : '');\r\n });\r\n },\r\n\r\n // capitalize():String\r\n capitalize (string) {\r\n return string.substr(0, 1).toUpperCase() + string.substr(1).toLowerCase();\r\n },\r\n\r\n // dasherize():String\r\n dasherize (string) {\r\n return string.replace(/[_\\s]+/g, '-').replace(/([A-Z])/g, '-$1').replace(/-+/g, '-').toLowerCase();\r\n },\r\n\r\n // humanize():String\r\n humanize (string) {\r\n let str = string.replace(/([a-z\\d])([A-Z+])/g, '$1_$2').replace(/[-\\s]+/g, '_').replace(/_+/g, ' ').trim();\r\n return str.substr(0, 1).toUpperCase() + str.substr(1).toLowerCase();\r\n },\r\n\r\n // underscore():String\r\n underscore (string) {\r\n return string.trim().replace(/([a-z\\d])([A-Z]+)/g, '$1_$1').replace(/[-\\s]+/g, '_').toLowerCase();\r\n },\r\n\r\n // titlecase():String\r\n titlecase (string) {\r\n return string.replace(/(?:^|\\s)\\S/g, (a) => {\r\n return a.toUpperCase();\r\n });\r\n },\r\n\r\n // camelcase():String\r\n camelcase (string) {\r\n return string.toLowerCase().replace(/\\s+(\\S)/g, (a, b) => {\r\n return b.toUpperCase();\r\n });\r\n },\r\n\r\n // substr(start:Number, [length:Number]):String\r\n substr (string, start, length) {\r\n return string.substr(start, length);\r\n },\r\n\r\n // substring(start:Number, [end:Number]):String\r\n substring (string, start, end) {\r\n return string.slice(start, end);\r\n },\r\n\r\n // replace(search:String|RegExp, replace:String):String\r\n replace (string, search, replace, caseInsensitive) {\r\n if (typeof search == 'string') {\r\n search = new RegExp(dmx.escapeRegExp(search), 'g' + (caseInsensitive ? 'i' : ''));\r\n }\r\n\r\n return string.replace(search, replace);\r\n },\r\n\r\n // trim():String\r\n trim (string) {\r\n return string.trim();\r\n },\r\n\r\n // trimLeft():String\r\n trimLeft (string) {\r\n return string.replace(/^[\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF]*/, '');\r\n },\r\n\r\n // trimRight():String\r\n trimRight (string) {\r\n return string.replace(/[\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF]*$/, '');\r\n },\r\n\r\n // concat(string2:String):String\r\n concat (string, string2) {\r\n if (string2 == null) string2 = '';\r\n return string.concat(string2);\r\n },\r\n\r\n // trunc(charsAllowed:Number, [useWordBoundary:Boolean], [append:String]):String\r\n trunc (string, charsAllowed, useWordBoundary, append = '…') {\r\n if (string.length > charsAllowed) {\r\n string = string.substr(0, charsAllowed);\r\n\r\n if (useWordBoundary) {\r\n let lastSpace = string.lastIndexOf(' ');\r\n if (lastSpace !== -1) {\r\n string = string.substr(0, lastSpace);\r\n }\r\n }\r\n\r\n string += append;\r\n }\r\n\r\n return string;\r\n },\r\n\r\n // stripTags():String\r\n stripTags (string) {\r\n return string.replace(/<[^>]+>/g, '');\r\n },\r\n\r\n // padStart(length:Number, [filler:String]):String\r\n padStart (string, length, filler = ' ') {\r\n return string.padStart(length, filler);\r\n },\r\n\r\n // padEnd(length:Number, [filler:String]):String\r\n padEnd (string, length, filler = ' ') {\r\n return string.padEnd(length, filler);\r\n },\r\n\r\n // repeat(count:Number):String\r\n repeat (string, count) {\r\n return string.repeat(count);\r\n },\r\n\r\n // wordCount():Number\r\n wordCount (string) {\r\n return string.trim().split(/\\s+/).length;\r\n },\r\n\r\n // length():Number\r\n length (string) {\r\n return string.length;\r\n },\r\n\r\n // split(separator:String|RegExp):Array\r\n split (string, separator) {\r\n return string.split(separator);\r\n },\r\n\r\n parseJSON (string) {\r\n return JSON.parse(string);\r\n },\r\n\r\n encodeURIComponent (string) {\r\n return encodeURIComponent(string);\r\n },\r\n\r\n encodeURI (string) {\r\n return encodeURI(string);\r\n },\r\n\r\n});\r\n","dmx.Formatters('object', {\r\n\r\n // keys():Array\r\n keys (object) {\r\n return Object.keys(object);\r\n },\r\n\r\n // values():Array\r\n values (object) {\r\n return Object.keys(object).map(key => object[key]);\r\n },\r\n\r\n // hasKey(key:String):Boolean\r\n hasKey (object, key) {\r\n return Object.keys(object).includes(key);\r\n },\r\n\r\n // hasValue(value:Any):Boolean\r\n hasValue (object, value) {\r\n return Object.values(object).includes(value);\r\n },\r\n\r\n //getValueOrKey():any\r\n getValueOrKey (object, key) {\r\n return object[key] != null ? object[key] : key;\r\n },\r\n\r\n});\r\n"]} \ No newline at end of file diff --git a/public/dmxAppConnect/dmxStateManagement/dmxStateManagement.js b/public/dmxAppConnect/dmxStateManagement/dmxStateManagement.js new file mode 100644 index 0000000..ea8e84c --- /dev/null +++ b/public/dmxAppConnect/dmxStateManagement/dmxStateManagement.js @@ -0,0 +1,8 @@ +/*! + App Connect State Management + Version: 2.0.0 + (c) 2024 Wappler.io + @build 2024-04-15 17:48:46 + */ +dmx.Component("query-manager",{initialData:{data:{}},methods:{set(e,t){this._setQueryParam(e,t)},remove(e){this._setQueryParam(e)},removeAll(){this._setQueryParam()}},render:!1,init(){this._updateHandler=this._updateHandler.bind(this),window.addEventListener("popstate",this._updateHandler),window.addEventListener("pushstate",this._updateHandler),window.addEventListener("replacestate",this._updateHandler),this._updateHandler()},destroy(){window.removeEventListener("popstate",this._updateHandler),window.removeEventListener("pushstate",this._updateHandler),window.removeEventListener("replacestate",this._updateHandler)},_setQueryParam:function(e,t){let o=!1,a=dmx.clone(this.data.data);if(null==t?null==e?(a={},o=!0):a[e]&&(delete a[e],o=!0):a[e]!=t&&(a[e]=t,o=!0),o){const e=new URL(window.location);e.search=new URLSearchParams(a),window.history.pushState(null,null,e)}},_buildQuery:function(e){const t=Object.keys(e);return t.length?"?"+t.reduce((function(t,o){return t&&(t+="&"),t+=encodeURIComponent(o)+"="+encodeURIComponent(e[o])}),""):""},_parseQuery:function(){return this.search.replace(/^\?/,"").split("&").reduce((function(e,t){const o=t.replace(/\+/g," ").split("=");return o[0]&&(e[decodeURIComponent(o[0])]=decodeURIComponent(o[1]||"")),e}),{})},_updateHandler(){this.search!==window.location.search&&(this.search=window.location.search,this.set("data",this._parseQuery()))}}),dmx.Component("cookie-manager",{initialData(){return this._cookie=document.cookie,{data:this._getCookie()}},methods:{set(e,t,o={}){this._setCookie(e,t,o)},remove(e,t={}){t.expires="1970-01-01T00:00:00Z",this._setCookie(e,"",t)},removeAll(e={}){e.expires="1970-01-01T00:00:00Z",Object.keys(this.data.data).forEach((function(t){this._setCookie(t,"",e)}))}},render:!1,_getCookie(){return this._cookie.split(/;\s*/).reduce((function(e,t){var o=t.indexOf("=");return e[decodeURIComponent(t.substr(0,o))]=decodeURIComponent(t.substr(o+1)),e}),{})},_setCookie:function(e,t,o){if(!e||/^(?:expires|max\-age|path|domain|secure)$/i.test(e))return!1;(o=o||{}).path=o.path||"/";var a=(e=(e=(e=encodeURIComponent(String(e))).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent)).replace(/[\(\)]/g,escape))+"="+(t=(t=encodeURIComponent(String(t))).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent));o.expires&&("number"==typeof o.expires&&(o.expires=Date.now()+864e5*o.expires),a+="; expires="+new Date(o.expires).toUTCString()),o.domain&&(a+="; domain="+o.domain),o.path&&(a+="; path="+o.path),o.secure&&(a+="; secure"),document.cookie=a,this._cookie=document.cookie,this.set("data",this._getCookie())}}),dmx.Component("local-manager",{initialData:{data:{}},methods:{set(e,t){const o=JSON.stringify(t);null!=o?window.localStorage.setItem("dmxState-"+e,o):window.localStorage.removeItem("dmxState-"+e),this._getData()},remove(e){window.localStorage.removeItem("dmxState-"+e),this._getData()},removeAll(){Object.keys(window.localStorage).forEach((function(e){e.startsWith("dmxState-")&&window.localStorage.removeItem(e)})),this._getData()}},render:!1,init(){this._getData()},_getData(){this.set("data",Object.keys(window.localStorage).reduce((function(e,t){if(t.startsWith("dmxState-"))try{e[t.slice(9)]=JSON.parse(window.localStorage.getItem(t))}catch(e){console.warn("Error parsing JSON: "+window.localStorage.getItem(t))}return e}),{}))}}),dmx.Component("session-manager",{initialData:{data:{}},methods:{set(e,t){const o=JSON.stringify(t);null!=o?window.sessionStorage.setItem("dmxState-"+e,o):window.sessionStorage.removeItem("dmxState-"+e),this._getData()},remove(e){window.sessionStorage.removeItem("dmxState-"+e),this._getData()},removeAll(){Object.keys(window.sessionStorage).forEach((function(e){e.startsWith("dmxState-")&&window.sessionStorage.removeItem(e)})),this._getData()}},render:!1,init(e){this._getData()},_getData(){this.set("data",Object.keys(window.sessionStorage).reduce((function(e,t){if(t.startsWith("dmxState-"))try{e[t.slice(9)]=JSON.parse(window.sessionStorage.getItem(t))}catch(e){console.warn("Error parsing JSON: "+window.sessionStorage.getItem(t))}return e}),{}))}}); +//# sourceMappingURL=dmxStateManagement.js.map diff --git a/public/dmxAppConnect/dmxStateManagement/dmxStateManagement.js.map b/public/dmxAppConnect/dmxStateManagement/dmxStateManagement.js.map new file mode 100644 index 0000000..3082bf7 --- /dev/null +++ b/public/dmxAppConnect/dmxStateManagement/dmxStateManagement.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["components/queryManager.js","components/cookieManager.js","components/localManager.js","components/sessionManager.js"],"names":["dmx","Component","initialData","data","methods","set","key","value","this","_setQueryParam","remove","removeAll","render","init","_updateHandler","bind","window","addEventListener","destroy","removeEventListener","updated","params","clone","url","URL","location","search","URLSearchParams","history","pushState","_buildQuery","keys","Object","length","reduce","query","encodeURIComponent","_parseQuery","replace","split","part","p","decodeURIComponent","_cookie","document","cookie","_getCookie","name","options","_setCookie","expires","forEach","pos","indexOf","substr","test","path","String","escape","Date","now","toUTCString","domain","secure","val","JSON","stringify","localStorage","setItem","removeItem","_getData","startsWith","slice","parse","getItem","e","console","warn","sessionStorage","node"],"mappings":"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","file":"dmxStateManagement.js","sourcesContent":["dmx.Component('query-manager', {\r\n\r\n initialData: {\r\n data: {},\r\n },\r\n\r\n methods: {\r\n set (key, value) {\r\n this._setQueryParam(key, value);\r\n },\r\n\r\n remove (key) {\r\n this._setQueryParam(key);\r\n },\r\n\r\n removeAll () {\r\n this._setQueryParam();\r\n },\r\n },\r\n\r\n render: false,\r\n\r\n init () {\r\n this._updateHandler = this._updateHandler.bind(this);\r\n\r\n // only need to update on these events\r\n window.addEventListener('popstate', this._updateHandler);\r\n window.addEventListener('pushstate', this._updateHandler);\r\n window.addEventListener('replacestate', this._updateHandler);\r\n\r\n this._updateHandler();\r\n },\r\n\r\n destroy () {\r\n window.removeEventListener('popstate', this._updateHandler);\r\n window.removeEventListener('pushstate', this._updateHandler);\r\n window.removeEventListener('replacestate', this._updateHandler);\r\n },\r\n\r\n _setQueryParam: function (key, value) {\r\n let updated = false;\r\n let params = dmx.clone(this.data.data);\r\n\r\n if (value == null) {\r\n if (key == null) {\r\n params = {};\r\n updated = true;\r\n } else if (params[key]) {\r\n delete params[key];\r\n updated = true;\r\n }\r\n } else if (params[key] != value) {\r\n params[key] = value;\r\n updated = true;\r\n }\r\n\r\n if (updated) {\r\n const url = new URL(window.location);\r\n url.search = new URLSearchParams(params);\r\n window.history.pushState(null, null, url);\r\n }\r\n },\r\n\r\n _buildQuery: function (data) {\r\n const keys = Object.keys(data);\r\n\r\n return keys.length\r\n ? '?' +\r\n keys.reduce(function (query, key) {\r\n if (query) query += '&';\r\n query += encodeURIComponent(key) + '=' + encodeURIComponent(data[key]);\r\n return query;\r\n }, '')\r\n : '';\r\n },\r\n\r\n _parseQuery: function () {\r\n const query = this.search.replace(/^\\?/, '');\r\n\r\n return query.split('&').reduce(function (data, part) {\r\n const p = part.replace(/\\+/g, ' ').split('=');\r\n if (p[0]) data[decodeURIComponent(p[0])] = decodeURIComponent(p[1] || '');\r\n return data;\r\n }, {});\r\n },\r\n\r\n _updateHandler () {\r\n if (this.search !== window.location.search) {\r\n this.search = window.location.search;\r\n this.set('data', this._parseQuery());\r\n }\r\n },\r\n\r\n});\r\n","dmx.Component('cookie-manager', {\r\n\r\n initialData () {\r\n this._cookie = document.cookie;\r\n\r\n return {\r\n data: this._getCookie(),\r\n };\r\n },\r\n\r\n methods: {\r\n set (name, value, options = {}) {\r\n this._setCookie(name, value, options);\r\n },\r\n\r\n remove (name, options = {}) {\r\n options.expires = '1970-01-01T00:00:00Z';\r\n this._setCookie(name, '', options);\r\n },\r\n\r\n removeAll (options = {}) {\r\n options.expires = '1970-01-01T00:00:00Z';\r\n Object.keys(this.data.data).forEach(function (name) {\r\n this._setCookie(name, '', options);\r\n });\r\n },\r\n },\r\n\r\n render: false,\r\n\r\n _getCookie () {\r\n return this._cookie.split(/;\\s*/).reduce(function (data, cookie) {\r\n var pos = cookie.indexOf('=');\r\n data[decodeURIComponent(cookie.substr(0, pos))] = decodeURIComponent(cookie.substr(pos + 1));\r\n return data;\r\n }, {});\r\n },\r\n\r\n _setCookie: function (name, value, options) {\r\n if (!name || /^(?:expires|max\\-age|path|domain|secure)$/i.test(name)) {\r\n return false;\r\n }\r\n\r\n options = options || {};\r\n options.path = options.path || '/';\r\n\r\n // escaping taken from:\r\n // https://github.com/js-cookie/js-cookie/blob/master/src/js.cookie.js\r\n name = encodeURIComponent(String(name));\r\n name = name.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent);\r\n name = name.replace(/[\\(\\)]/g, escape);\r\n\r\n value = encodeURIComponent(String(value));\r\n value = value.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\r\n\r\n var cookie = name + '=' + value;\r\n\r\n if (options.expires) {\r\n if (typeof options.expires == 'number') {\r\n options.expires = Date.now() + options.expires * 86400000;\r\n }\r\n cookie += '; expires=' + new Date(options.expires).toUTCString();\r\n }\r\n\r\n if (options.domain) {\r\n cookie += '; domain=' + options.domain;\r\n }\r\n\r\n if (options.path) {\r\n cookie += '; path=' + options.path;\r\n }\r\n\r\n if (options.secure) {\r\n cookie += '; secure';\r\n }\r\n\r\n document.cookie = cookie;\r\n\r\n this._cookie = document.cookie;\r\n this.set('data', this._getCookie());\r\n },\r\n\r\n});\r\n","dmx.Component('local-manager', {\r\n\r\n initialData: {\r\n data: {},\r\n },\r\n\r\n methods: {\r\n set (key, value) {\r\n const val = JSON.stringify(value);\r\n if (val != null) {\r\n window.localStorage.setItem('dmxState-' + key, val);\r\n } else {\r\n window.localStorage.removeItem('dmxState-' + key);\r\n }\r\n this._getData();\r\n },\r\n\r\n remove (key) {\r\n window.localStorage.removeItem('dmxState-' + key);\r\n this._getData();\r\n },\r\n\r\n removeAll () {\r\n Object.keys(window.localStorage).forEach(function (key) {\r\n if (key.startsWith('dmxState-')) {\r\n window.localStorage.removeItem(key);\r\n }\r\n });\r\n this._getData();\r\n },\r\n },\r\n\r\n render: false,\r\n\r\n init () {\r\n this._getData();\r\n },\r\n\r\n _getData () {\r\n this.set(\r\n 'data',\r\n Object.keys(window.localStorage).reduce(function (data, key) {\r\n if (key.startsWith('dmxState-')) {\r\n try {\r\n data[key.slice(9)] = JSON.parse(window.localStorage.getItem(key));\r\n } catch (e) {\r\n console.warn('Error parsing JSON: ' + window.localStorage.getItem(key));\r\n }\r\n }\r\n\r\n return data;\r\n }, {})\r\n );\r\n },\r\n});\r\n","dmx.Component('session-manager', {\r\n\r\n initialData: {\r\n data: {},\r\n },\r\n\r\n methods: {\r\n set (key, value) {\r\n const val = JSON.stringify(value);\r\n if (val != null) {\r\n window.sessionStorage.setItem('dmxState-' + key, val);\r\n } else {\r\n window.sessionStorage.removeItem('dmxState-' + key);\r\n }\r\n this._getData();\r\n },\r\n\r\n remove (key) {\r\n window.sessionStorage.removeItem('dmxState-' + key);\r\n this._getData();\r\n },\r\n\r\n removeAll () {\r\n Object.keys(window.sessionStorage).forEach(function (key) {\r\n if (key.startsWith('dmxState-')) {\r\n window.sessionStorage.removeItem(key);\r\n }\r\n });\r\n this._getData();\r\n },\r\n },\r\n\r\n render: false,\r\n\r\n init (node) {\r\n this._getData();\r\n },\r\n\r\n _getData () {\r\n this.set(\r\n 'data',\r\n Object.keys(window.sessionStorage).reduce(function (data, key) {\r\n if (key.startsWith('dmxState-')) {\r\n try {\r\n data[key.slice(9)] = JSON.parse(window.sessionStorage.getItem(key));\r\n } catch (e) {\r\n console.warn('Error parsing JSON: ' + window.sessionStorage.getItem(key));\r\n }\r\n }\r\n\r\n return data;\r\n }, {})\r\n );\r\n },\r\n});\r\n"]} \ No newline at end of file diff --git a/public/states.json b/public/states.json new file mode 100644 index 0000000..13837bd --- /dev/null +++ b/public/states.json @@ -0,0 +1,204 @@ +{ + "states": [ + { + "name": "Alabama", + "abbreviation": "AL" + }, + { + "name": "Alaska", + "abbreviation": "AK" + }, + { + "name": "Arizona", + "abbreviation": "AZ" + }, + { + "name": "Arkansas", + "abbreviation": "AR" + }, + { + "name": "California", + "abbreviation": "CA" + }, + { + "name": "Colorado", + "abbreviation": "CO" + }, + { + "name": "Connecticut", + "abbreviation": "CT" + }, + { + "name": "Delaware", + "abbreviation": "DE" + }, + { + "name": "Florida", + "abbreviation": "FL" + }, + { + "name": "Georgia", + "abbreviation": "GA" + }, + { + "name": "Hawaii", + "abbreviation": "HI" + }, + { + "name": "Idaho", + "abbreviation": "ID" + }, + { + "name": "Illinois", + "abbreviation": "IL" + }, + { + "name": "Indiana", + "abbreviation": "IN" + }, + { + "name": "Iowa", + "abbreviation": "IA" + }, + { + "name": "Kansas", + "abbreviation": "KS" + }, + { + "name": "Kentucky", + "abbreviation": "KY" + }, + { + "name": "Louisiana", + "abbreviation": "LA" + }, + { + "name": "Maine", + "abbreviation": "ME" + }, + { + "name": "Maryland", + "abbreviation": "MD" + }, + { + "name": "Massachusetts", + "abbreviation": "MA" + }, + { + "name": "Michigan", + "abbreviation": "MI" + }, + { + "name": "Minnesota", + "abbreviation": "MN" + }, + { + "name": "Mississippi", + "abbreviation": "MS" + }, + { + "name": "Missouri", + "abbreviation": "MO" + }, + { + "name": "Montana", + "abbreviation": "MT" + }, + { + "name": "Nebraska", + "abbreviation": "NE" + }, + { + "name": "Nevada", + "abbreviation": "NV" + }, + { + "name": "New Hampshire", + "abbreviation": "NH" + }, + { + "name": "New Jersey", + "abbreviation": "NJ" + }, + { + "name": "New Mexico", + "abbreviation": "NM" + }, + { + "name": "New York", + "abbreviation": "NY" + }, + { + "name": "North Carolina", + "abbreviation": "NC" + }, + { + "name": "North Dakota", + "abbreviation": "ND" + }, + { + "name": "Ohio", + "abbreviation": "OH" + }, + { + "name": "Oklahoma", + "abbreviation": "OK" + }, + { + "name": "Oregon", + "abbreviation": "OR" + }, + { + "name": "Pennsylvania", + "abbreviation": "PA" + }, + { + "name": "Rhode Island", + "abbreviation": "RI" + }, + { + "name": "South Carolina", + "abbreviation": "SC" + }, + { + "name": "South Dakota", + "abbreviation": "SD" + }, + { + "name": "Tennessee", + "abbreviation": "TN" + }, + { + "name": "Texas", + "abbreviation": "TX" + }, + { + "name": "Utah", + "abbreviation": "UT" + }, + { + "name": "Vermont", + "abbreviation": "VT" + }, + { + "name": "Virginia", + "abbreviation": "VA" + }, + { + "name": "Washington", + "abbreviation": "WA" + }, + { + "name": "West Virginia", + "abbreviation": "WV" + }, + { + "name": "Wisconsin", + "abbreviation": "WI" + }, + { + "name": "Wyoming", + "abbreviation": "WY" + } + ] +} \ No newline at end of file diff --git a/views/.wappler_folder.json b/views/.wappler_folder.json new file mode 100644 index 0000000..a601f06 --- /dev/null +++ b/views/.wappler_folder.json @@ -0,0 +1,6 @@ +{ + "DAPage1.ejs": { + "layoutPage": "main", + "description": "Initalization page for Delivery Associate" + } +} \ No newline at end of file diff --git a/views/DAPage1.ejs b/views/DAPage1.ejs new file mode 100644 index 0000000..b8dfd6a --- /dev/null +++ b/views/DAPage1.ejs @@ -0,0 +1,15 @@ + + +
+

A nice paragraph

+

A nice paragraph

+

A nice paragraph

+

A nice paragraph

+
+
+
+
+
+
+
+ \ No newline at end of file diff --git a/views/index.ejs b/views/index.ejs index 97990fe..0afe830 100644 --- a/views/index.ejs +++ b/views/index.ejs @@ -1,2 +1,67 @@ - + + + + +
+

Lets Begin. What is your Role?

+
+
+
+
+ +
+
+ +
+
+
+ \ No newline at end of file diff --git a/views/layouts/main.ejs b/views/layouts/main.ejs index ab2c82a..365a3ff 100644 --- a/views/layouts/main.ejs +++ b/views/layouts/main.ejs @@ -12,12 +12,43 @@ + + + + + + + + +
+ + +

ERT Fast Filler

+
<%- await include(content, locals); %>
+
+

ERT Fast Fill - Developed by Jeff Daniels (DNIJE) / Data only locally saved / Powered by Docker and Node.js

+