From c1eb8bf2dc8ebaf0faedc1d3303b5e2ef1db6a7d Mon Sep 17 00:00:00 2001 From: hkvstore Date: Fri, 17 Sep 2021 09:51:52 +0800 Subject: [PATCH 1/8] Localize number --- src/js/actions.ts | 4 ++-- src/js/datetime.ts | 11 ++++------- src/js/display/calendar/date-display.ts | 6 +++++- src/js/display/calendar/decade-display.ts | 6 +++--- src/js/display/calendar/year-display.ts | 4 ++-- 5 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/js/actions.ts b/src/js/actions.ts index 2e70d75e2..befcdf480 100644 --- a/src/js/actions.ts +++ b/src/js/actions.ts @@ -104,7 +104,7 @@ export default class Actions { day.manipulate(1, Unit.month); } - day.date = +currentTarget.innerText; + day.date = +currentTarget.getAttribute('data-day'); let index = 0; if (this._context._options.multipleDates) { index = this._context.dates.pickedIndex(day, Unit.date); @@ -152,7 +152,7 @@ export default class Actions { } break; case ActionTypes.selectMinute: - lastPicked.minutes = +currentTarget.innerText; + lastPicked.minutes = +currentTarget.getAttribute('data-value'); this._context.dates._setValue( lastPicked, this._context.dates.lastPickedIndex diff --git a/src/js/datetime.ts b/src/js/datetime.ts index 461957c2d..af8ecdc4d 100644 --- a/src/js/datetime.ts +++ b/src/js/datetime.ts @@ -276,7 +276,7 @@ export class DateTime extends Date { * Returns two digit hours */ get secondsFormatted(): string { - return this.seconds < 10 ? `0${this.seconds}` : `${this.seconds}`; + return this.format({ second: "2-digit" }); } /** @@ -297,7 +297,7 @@ export class DateTime extends Date { * Returns two digit hours */ get minutesFormatted(): string { - return this.minutes < 10 ? `0${this.minutes}` : `${this.minutes}`; + return this.format({ minute: "2-digit" }); } /** @@ -318,17 +318,14 @@ export class DateTime extends Date { * Returns two digit hours */ get hoursFormatted(): string { - return this.hours < 10 ? `0${this.hours}` : `${this.hours}`; + return this.format({ hour: "2-digit" }); } /** * Returns two digit hours but in twelve hour mode e.g. 13 -> 1 */ get twelveHoursFormatted(): string { - let hour = this.hours; - if (hour > 12) hour = hour - 12; - if (hour === 0) hour = 12; - return hour < 10 ? `0${hour}` : `${hour}`; + return this.format({ hour12: true, hour: "2-digit" }); } /** diff --git a/src/js/display/calendar/date-display.ts b/src/js/display/calendar/date-display.ts index dcd06d843..93fee5431 100644 --- a/src/js/display/calendar/date-display.ts +++ b/src/js/display/calendar/date-display.ts @@ -133,7 +133,11 @@ export default class DateDisplay { 'data-value', `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}` ); - containerClone.innerText = `${innerDate.date}`; + containerClone.setAttribute( + 'data-day', + `${innerDate.date}` + ); + containerClone.innerText = innerDate.format({ day: "numeric" }); innerDate.manipulate(1, Unit.date); }); } diff --git a/src/js/display/calendar/decade-display.ts b/src/js/display/calendar/decade-display.ts index 733ba81b8..7fef3fb25 100644 --- a/src/js/display/calendar/decade-display.ts +++ b/src/js/display/calendar/decade-display.ts @@ -55,7 +55,7 @@ export default class DecadeDisplay { switcher.setAttribute( Namespace.css.decadesContainer, - `${this._startDecade.year}-${this._endDecade.year}` + `${this._startDecade.format({ year: 'numeric' })}-${this._endDecade.format({ year: 'numeric' })}` ); this._context._validation.isValid(this._startDecade, Unit.year) @@ -79,7 +79,7 @@ export default class DecadeDisplay { containerClone.setAttribute('data-value', ``); return; } else { - containerClone.innerText = `${this._startDecade.year - 10}`; + containerClone.innerText = this._startDecade.clone.manipulate(-10, Unit.year).format({ year: 'numeric' }); containerClone.setAttribute( 'data-value', `${this._startDecade.year}` @@ -107,7 +107,7 @@ export default class DecadeDisplay { 'data-value', `${this._startDecade.year}` ); - containerClone.innerText = `${this._startDecade.year}`; + containerClone.innerText = `${this._startDecade.format({ year: 'numeric' })}`; this._startDecade.manipulate(10, Unit.year); }); diff --git a/src/js/display/calendar/year-display.ts b/src/js/display/calendar/year-display.ts index be768b680..06265e6c8 100644 --- a/src/js/display/calendar/year-display.ts +++ b/src/js/display/calendar/year-display.ts @@ -54,7 +54,7 @@ export default class YearDisplay { switcher.setAttribute( Namespace.css.yearsContainer, - `${this._startYear.year}-${this._endYear.year}` + `${this._startYear.format({ year: 'numeric' })}-${this._endYear.format({ year: 'numeric' })}` ); this._context._validation.isValid(this._startYear, Unit.year) @@ -87,7 +87,7 @@ export default class YearDisplay { containerClone.classList.remove(...containerClone.classList); containerClone.classList.add(...classes); containerClone.setAttribute('data-value', `${innerDate.year}`); - containerClone.innerText = `${innerDate.year}`; + containerClone.innerText = innerDate.format({ year: "numeric" }); innerDate.manipulate(1, Unit.year); }); From dd0ae172bbb9d7913998a8e6b5f5685ce0117aff Mon Sep 17 00:00:00 2001 From: Eonasdan Date: Wed, 6 Oct 2021 21:16:23 -0400 Subject: [PATCH 2/8] should fix #2407, #2404 #2403, #2402, #2387 --- .gitignore | 3 +- dist/css/tempus-dominus.css | 8 +- dist/css/tempus-dominus.css.map | 2 +- dist/js/tempus-dominus.esm.js | 87 +- dist/js/tempus-dominus.esm.js.map | 2 +- dist/js/tempus-dominus.js | 91 +- dist/js/tempus-dominus.js.map | 2 +- docs/6/change-log.html | 15 + docs/6/css/tempus-dominus.css | 8 +- docs/6/css/tempus-dominus.css.map | 2 +- docs/6/examples/index.html | 9 +- docs/6/js/jQuery-provider.js | 5 + docs/6/js/search.json | 15 +- docs/6/js/tempus-dominus.esm.js | 89 +- docs/6/js/tempus-dominus.esm.js.map | 2 +- docs/6/js/tempus-dominus.js | 93 +- docs/6/js/tempus-dominus.js.map | 2 +- docs/6/options.html | 53 +- docs/css/styles.min.css | 43 +- docs/js/bundle.min.js | 6 +- docs/sitemap.xml | 6 +- package-lock.json | 1289 ++--------------- package.json | 22 +- src/docs/partials/change-log.html | 16 + src/docs/partials/examples/index.html | 9 +- src/docs/partials/examples/test.html | 1903 +++++++++++++++++++++++++ src/docs/partials/options.html | 64 +- src/js/conts.ts | 5 +- src/js/dates.ts | 10 +- src/js/display/index.ts | 11 +- src/js/options.ts | 17 +- src/js/tempus-dominus.ts | 55 +- types/options.d.ts | 7 +- 33 files changed, 2494 insertions(+), 1457 deletions(-) create mode 100644 src/docs/partials/examples/test.html diff --git a/.gitignore b/.gitignore index 9d0af261b..59546de63 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,5 @@ site *.user *.csproj *.sln -*.nupkg \ No newline at end of file +*.nupkg +src/docs/partials/examples/test.html \ No newline at end of file diff --git a/dist/css/tempus-dominus.css b/dist/css/tempus-dominus.css index 804574d84..637480dc0 100644 --- a/dist/css/tempus-dominus.css +++ b/dist/css/tempus-dominus.css @@ -132,7 +132,7 @@ todo look at how bootstrap loops through their vars to make a --root section display: grid; grid-template-areas: "a a a a a a a"; grid-auto-rows: 40px; - grid-auto-columns: calc(100% / 7); + grid-auto-columns: 14.2857142857%; } .tempus-dominus-widget .date-container-days .dow { color: rgba(0, 0, 0, 0.5); @@ -157,16 +157,16 @@ todo look at how bootstrap loops through their vars to make a --root section .tempus-dominus-widget .date-container-decades, .tempus-dominus-widget .date-container-years, .tempus-dominus-widget .date-container-months { display: grid; grid-template-areas: "a a a"; - grid-auto-rows: calc(calc(19rem - 2 * 4px) / 7); + grid-auto-rows: calc((19rem - 8px) / 7); } .tempus-dominus-widget .time-container-hour, .tempus-dominus-widget .time-container-minute, .tempus-dominus-widget .time-container-second { display: grid; grid-template-areas: "a a a a"; - grid-auto-rows: calc(calc(19rem - 2 * 4px) / 7); + grid-auto-rows: calc((19rem - 8px) / 7); } .tempus-dominus-widget .time-container-clock { display: grid; - grid-auto-rows: calc(calc(19rem - 2 * 4px) / 7); + grid-auto-rows: calc((19rem - 8px) / 7); } .tempus-dominus-widget .time-container-clock .no-highlight { width: 90%; diff --git a/dist/css/tempus-dominus.css.map b/dist/css/tempus-dominus.css.map index 077b32a16..e01211a8a 100644 --- a/dist/css/tempus-dominus.css.map +++ b/dist/css/tempus-dominus.css.map @@ -1 +1 @@ -{"version":3,"sources":["tempus-dominus.scss"],"names":[],"mappings":"AAAA;;EAEE;AACF;EACE,6BAA6B;EAC7B,qBAAqB;EACrB,sBAAsB;EACtB,qBAAqB;EACrB,uBAAuB;EACvB,2BAA2B;EAC3B,iCAAiC;EACjC,8BAA8B;EAC9B,oBAAoB;AACtB;;AAEA;EACE,gBAAgB;EAChB,YAAY;EACZ,YAAY;EACZ,kBAAkB;EAClB,aAAa;EACb,uBAAuB;EACvB,2BAA2B;EAC3B,aAAa;EACb,gHAAgH;AAClH;AACA;EACE,YAAY;AACd;AACA;EACE,wBAAwB;AAC1B;AACA;EACE,eAAe;AACjB;AACA;EACE,oBAAoB;AACtB;AACA;EACE,gBAAgB;EAChB,cAAc;EACd,mBAAmB;AACrB;AACA;EACE,aAAa;AACf;AACA;EACE,cAAc;AAChB;AACA;EACE,aAAa;AACf;AACA;EACE,SAAS;EACT,gBAAgB;EAChB,6BAA6B;AAC/B;AACA;EACE;IACE,WAAW;EACb;AACF;AACA;EACE;IACE,WAAW;EACb;AACF;AACA;EACE;IACE,WAAW;EACb;AACF;AACA;EACE,aAAa;AACf;AACA;EACE,cAAc;EACd,UAAU;AACZ;AACA;EACE,gBAAgB;AAClB;AACA;;;EAGE,WAAW;EACX,iBAAiB;EACjB,gBAAgB;EAChB,SAAS;AACX;AACA;EACE,YAAY;AACd;AACA;EACE,kBAAkB;EAClB,eAAe;EACf,YAAY;AACd;AACA;EACE,aAAa;EACb,4BAA4B;EAC5B,mBAAmB;EACnB,iBAAiB;AACnB;AACA;EACE,iBAAiB;EACjB,mBAAmB;AACrB;AACA;EACE,gBAAgB;EAChB,kBAAkB;AACpB;AACA;EACE,kBAAkB;AACpB;AACA;EACE,aAAa;EACb,sBAAsB;EACtB,oBAAoB;AACtB;AACA;EACE,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;EACvB,sBAAsB;EACtB,aAAa;AACf;AACA;EACE,mBAAmB;AACrB;AACA;EACE,aAAa;EACb,oCAAoC;EACpC,oBAAoB;EACpB,iCAAiC;AACnC;AACA;EACE,yBAAyB;EACzB,mBAAmB;EACnB,uBAAuB;EACvB,kBAAkB;AACpB;AACA;EACE,UAAU;EACV,WAAW;EACX,mBAAmB;EACnB,uBAAuB;EACvB,aAAa;EACb,gBAAgB;EAChB,iBAAiB;EACjB,0BAA0B;EAC1B,eAAe;AACjB;AACA;EACE,sCAAsC;AACxC;AACA;EACE,aAAa;EACb,4BAA4B;EAC5B,+CAA+C;AACjD;AACA;EACE,aAAa;EACb,8BAA8B;EAC9B,+CAA+C;AACjD;AACA;EACE,aAAa;EACb,+CAA+C;AACjD;AACA;EACE,UAAU;EACV,WAAW;EACX,mBAAmB;EACnB,uBAAuB;EACvB,aAAa;AACf;AACA;;EAEE,UAAU;EACV,WAAW;EACX,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;EACvB,sBAAsB;EACtB,aAAa;AACf;AACA;;EAEE,mBAAmB;AACrB;AACA;;EAEE,yBAAyB;EACzB,WAAW;EACX,yCAAyC;AAC3C;AACA;;EAEE,yBAAyB;AAC3B;AACA;;;EAGE,0BAA0B;AAC5B;AACA;;;EAGE,gBAAgB;EAChB,cAAc;EACd,mBAAmB;AACrB;AACA;;EAEE,kBAAkB;AACpB;AACA;;EAEE,WAAW;EACX,qBAAqB;EACrB,yBAAyB;EACzB,yBAAyB;EACzB,4BAA4B;EAC5B,oCAAoC;EACpC,kBAAkB;EAClB,WAAW;EACX,UAAU;AACZ;AACA;EACE,qBAAqB;AACvB;AACA;EACE,WAAW;EACX,yBAAyB;EACzB,qBAAqB;EACrB,qBAAqB;EACrB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,qBAAqB;EACrB,sBAAsB;EACtB,eAAe;EACf,yBAAyB;EACzB,sBAAsB;EACtB,iBAAiB;EACjB,yBAAyB;EACzB,eAAe;EACf,sBAAsB;EACtB,qIAAqI;AACvI;AACA;;;;;;;;;;;;;;EAcE,oBAAoB;EACpB,eAAe;AACjB;AACA;;;;;;;;;;;;;;EAcE,gBAAgB;AAClB","file":"tempus-dominus.css","sourcesContent":["/*\ntodo look at how bootstrap loops through their vars to make a --root section\n */\n.visually-hidden, .tempus-dominus-widget [data-action]::after {\n position: absolute !important;\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip: rect(0, 0, 0, 0) !important;\n white-space: nowrap !important;\n border: 0 !important;\n}\n\n.tempus-dominus-widget {\n list-style: none;\n padding: 4px;\n width: 19rem;\n border-radius: 4px;\n display: none;\n background-color: white;\n /*border: 1px solid black;*/\n z-index: 9999;\n box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);\n}\n.tempus-dominus-widget.calendarWeeks {\n width: 21rem;\n}\n.tempus-dominus-widget.calendarWeeks .date-container-days {\n grid-auto-columns: 12.5%;\n}\n.tempus-dominus-widget [data-action] {\n cursor: pointer;\n}\n.tempus-dominus-widget [data-action]::after {\n content: attr(title);\n}\n.tempus-dominus-widget [data-action].disabled, .tempus-dominus-widget [data-action].disabled:hover {\n background: none;\n color: #6c757d;\n cursor: not-allowed;\n}\n.tempus-dominus-widget .arrow {\n display: none;\n}\n.tempus-dominus-widget.show {\n display: block;\n}\n.tempus-dominus-widget .td-collapse:not(.show) {\n display: none;\n}\n.tempus-dominus-widget .td-collapsing {\n height: 0;\n overflow: hidden;\n transition: height 0.35s ease;\n}\n@media (min-width: 576px) {\n .tempus-dominus-widget.timepicker-sbs {\n width: 38em;\n }\n}\n@media (min-width: 768px) {\n .tempus-dominus-widget.timepicker-sbs {\n width: 38em;\n }\n}\n@media (min-width: 992px) {\n .tempus-dominus-widget.timepicker-sbs {\n width: 38em;\n }\n}\n.tempus-dominus-widget.timepicker-sbs .td-row {\n display: flex;\n}\n.tempus-dominus-widget.timepicker-sbs .td-row .td-half {\n flex: 0 0 auto;\n width: 50%;\n}\n.tempus-dominus-widget div[data-action]:active {\n box-shadow: none;\n}\n.tempus-dominus-widget .timepicker-hour,\n.tempus-dominus-widget .timepicker-minute,\n.tempus-dominus-widget .timepicker-second {\n width: 54px;\n font-weight: bold;\n font-size: 1.2em;\n margin: 0;\n}\n.tempus-dominus-widget button[data-action] {\n padding: 6px;\n}\n.tempus-dominus-widget .toggleMeridiem {\n text-align: center;\n /*width: 38px;*/\n height: 38px;\n}\n.tempus-dominus-widget .calendar-header {\n display: grid;\n grid-template-areas: \"a a a\";\n margin-bottom: 10px;\n font-weight: bold;\n}\n.tempus-dominus-widget .calendar-header .next {\n text-align: right;\n padding-right: 10px;\n}\n.tempus-dominus-widget .calendar-header .previous {\n text-align: left;\n padding-left: 10px;\n}\n.tempus-dominus-widget .calendar-header .picker-switch {\n text-align: center;\n}\n.tempus-dominus-widget .toolbar {\n display: grid;\n grid-auto-flow: column;\n grid-auto-rows: 40px;\n}\n.tempus-dominus-widget .toolbar div {\n border-radius: 999px;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n display: flex;\n}\n.tempus-dominus-widget .toolbar div:hover {\n background: #e9ecef;\n}\n.tempus-dominus-widget .date-container-days {\n display: grid;\n grid-template-areas: \"a a a a a a a\";\n grid-auto-rows: 40px;\n grid-auto-columns: calc(100% / 7);\n}\n.tempus-dominus-widget .date-container-days .dow {\n color: rgba(0, 0, 0, 0.5);\n align-items: center;\n justify-content: center;\n text-align: center;\n}\n.tempus-dominus-widget .date-container-days .cw {\n width: 90%;\n height: 90%;\n align-items: center;\n justify-content: center;\n display: flex;\n font-size: 0.8em;\n line-height: 20px;\n color: rgba(0, 0, 0, 0.38);\n cursor: default;\n}\n.tempus-dominus-widget.calendarWeeks .date-container-days {\n grid-template-areas: \"a a a a a a a a\";\n}\n.tempus-dominus-widget .date-container-decades, .tempus-dominus-widget .date-container-years, .tempus-dominus-widget .date-container-months {\n display: grid;\n grid-template-areas: \"a a a\";\n grid-auto-rows: calc(calc(19rem - 2 * 4px) / 7);\n}\n.tempus-dominus-widget .time-container-hour, .tempus-dominus-widget .time-container-minute, .tempus-dominus-widget .time-container-second {\n display: grid;\n grid-template-areas: \"a a a a\";\n grid-auto-rows: calc(calc(19rem - 2 * 4px) / 7);\n}\n.tempus-dominus-widget .time-container-clock {\n display: grid;\n grid-auto-rows: calc(calc(19rem - 2 * 4px) / 7);\n}\n.tempus-dominus-widget .time-container-clock .no-highlight {\n width: 90%;\n height: 90%;\n align-items: center;\n justify-content: center;\n display: flex;\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight), .tempus-dominus-widget .date-container-years div:not(.no-highlight), .tempus-dominus-widget .date-container-months div:not(.no-highlight), .tempus-dominus-widget .date-container-days div:not(.no-highlight),\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight), .tempus-dominus-widget .time-container-hour div:not(.no-highlight), .tempus-dominus-widget .time-container-minute div:not(.no-highlight), .tempus-dominus-widget .time-container-second div:not(.no-highlight) {\n width: 90%;\n height: 90%;\n border-radius: 999px;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n display: flex;\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight):hover, .tempus-dominus-widget .date-container-years div:not(.no-highlight):hover, .tempus-dominus-widget .date-container-months div:not(.no-highlight):hover, .tempus-dominus-widget .date-container-days div:not(.no-highlight):hover,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight):hover, .tempus-dominus-widget .time-container-hour div:not(.no-highlight):hover, .tempus-dominus-widget .time-container-minute div:not(.no-highlight):hover, .tempus-dominus-widget .time-container-second div:not(.no-highlight):hover {\n background: #e9ecef;\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight).active, .tempus-dominus-widget .date-container-years div:not(.no-highlight).active, .tempus-dominus-widget .date-container-months div:not(.no-highlight).active, .tempus-dominus-widget .date-container-days div:not(.no-highlight).active,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).active, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).active, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).active, .tempus-dominus-widget .time-container-second div:not(.no-highlight).active {\n background-color: #0d6efd;\n color: #fff;\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight).active.today:before, .tempus-dominus-widget .date-container-years div:not(.no-highlight).active.today:before, .tempus-dominus-widget .date-container-months div:not(.no-highlight).active.today:before, .tempus-dominus-widget .date-container-days div:not(.no-highlight).active.today:before,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).active.today:before, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).active.today:before, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).active.today:before, .tempus-dominus-widget .time-container-second div:not(.no-highlight).active.today:before {\n border-bottom-color: #fff;\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight).old, .tempus-dominus-widget .date-container-decades div:not(.no-highlight).new, .tempus-dominus-widget .date-container-years div:not(.no-highlight).old, .tempus-dominus-widget .date-container-years div:not(.no-highlight).new, .tempus-dominus-widget .date-container-months div:not(.no-highlight).old, .tempus-dominus-widget .date-container-months div:not(.no-highlight).new, .tempus-dominus-widget .date-container-days div:not(.no-highlight).old, .tempus-dominus-widget .date-container-days div:not(.no-highlight).new,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).old,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).new, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).old, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).new, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).old, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).new, .tempus-dominus-widget .time-container-second div:not(.no-highlight).old, .tempus-dominus-widget .time-container-second div:not(.no-highlight).new {\n color: rgba(0, 0, 0, 0.38);\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight).disabled, .tempus-dominus-widget .date-container-decades div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .date-container-years div:not(.no-highlight).disabled, .tempus-dominus-widget .date-container-years div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .date-container-months div:not(.no-highlight).disabled, .tempus-dominus-widget .date-container-months div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .date-container-days div:not(.no-highlight).disabled, .tempus-dominus-widget .date-container-days div:not(.no-highlight).disabled:hover,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).disabled,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).disabled, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).disabled, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .time-container-second div:not(.no-highlight).disabled, .tempus-dominus-widget .time-container-second div:not(.no-highlight).disabled:hover {\n background: none;\n color: #6c757d;\n cursor: not-allowed;\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight).today, .tempus-dominus-widget .date-container-years div:not(.no-highlight).today, .tempus-dominus-widget .date-container-months div:not(.no-highlight).today, .tempus-dominus-widget .date-container-days div:not(.no-highlight).today,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).today, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).today, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).today, .tempus-dominus-widget .time-container-second div:not(.no-highlight).today {\n position: relative;\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight).today:before, .tempus-dominus-widget .date-container-years div:not(.no-highlight).today:before, .tempus-dominus-widget .date-container-months div:not(.no-highlight).today:before, .tempus-dominus-widget .date-container-days div:not(.no-highlight).today:before,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).today:before, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).today:before, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).today:before, .tempus-dominus-widget .time-container-second div:not(.no-highlight).today:before {\n content: \"\";\n display: inline-block;\n border: solid transparent;\n border-width: 0 0 7px 7px;\n border-bottom-color: #0d6efd;\n border-top-color: rgba(0, 0, 0, 0.2);\n position: absolute;\n bottom: 6px;\n right: 6px;\n}\n.tempus-dominus-widget .time-container {\n margin-bottom: 0.5rem;\n}\n.tempus-dominus-widget button {\n color: #fff;\n background-color: #0d6efd;\n border-color: #0d6efd;\n display: inline-block;\n font-weight: 400;\n line-height: 1.5;\n text-align: center;\n text-decoration: none;\n vertical-align: middle;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n border-radius: 0.25rem;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.day,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.hour,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.minute,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.second,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=incrementHours],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=incrementMinutes],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=incrementSeconds],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=decrementHours],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=decrementMinutes],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=decrementSeconds],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=showHours],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=showMinutes],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=showSeconds],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=togglePeriod] {\n pointer-events: none;\n cursor: default;\n}\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.day:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.hour:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.minute:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.second:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=incrementHours]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=incrementMinutes]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=incrementSeconds]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=decrementHours]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=decrementMinutes]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=decrementSeconds]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=showHours]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=showMinutes]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=showSeconds]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=togglePeriod]:hover {\n background: none;\n}"]} \ No newline at end of file +{"version":3,"sources":["tempus-dominus.scss"],"names":[],"mappings":"AAAA;;EAEE;AACF;EACE,6BAA6B;EAC7B,qBAAqB;EACrB,sBAAsB;EACtB,qBAAqB;EACrB,uBAAuB;EACvB,2BAA2B;EAC3B,iCAAiC;EACjC,8BAA8B;EAC9B,oBAAoB;AACtB;;AAEA;EACE,gBAAgB;EAChB,YAAY;EACZ,YAAY;EACZ,kBAAkB;EAClB,aAAa;EACb,uBAAuB;EACvB,2BAA2B;EAC3B,aAAa;EACb,gHAAgH;AAClH;AACA;EACE,YAAY;AACd;AACA;EACE,wBAAwB;AAC1B;AACA;EACE,eAAe;AACjB;AACA;EACE,oBAAoB;AACtB;AACA;EACE,gBAAgB;EAChB,cAAc;EACd,mBAAmB;AACrB;AACA;EACE,aAAa;AACf;AACA;EACE,cAAc;AAChB;AACA;EACE,aAAa;AACf;AACA;EACE,SAAS;EACT,gBAAgB;EAChB,6BAA6B;AAC/B;AACA;EACE;IACE,WAAW;EACb;AACF;AACA;EACE;IACE,WAAW;EACb;AACF;AACA;EACE;IACE,WAAW;EACb;AACF;AACA;EACE,aAAa;AACf;AACA;EACE,cAAc;EACd,UAAU;AACZ;AACA;EACE,gBAAgB;AAClB;AACA;;;EAGE,WAAW;EACX,iBAAiB;EACjB,gBAAgB;EAChB,SAAS;AACX;AACA;EACE,YAAY;AACd;AACA;EACE,kBAAkB;EAClB,eAAe;EACf,YAAY;AACd;AACA;EACE,aAAa;EACb,4BAA4B;EAC5B,mBAAmB;EACnB,iBAAiB;AACnB;AACA;EACE,iBAAiB;EACjB,mBAAmB;AACrB;AACA;EACE,gBAAgB;EAChB,kBAAkB;AACpB;AACA;EACE,kBAAkB;AACpB;AACA;EACE,aAAa;EACb,sBAAsB;EACtB,oBAAoB;AACtB;AACA;EACE,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;EACvB,sBAAsB;EACtB,aAAa;AACf;AACA;EACE,mBAAmB;AACrB;AACA;EACE,aAAa;EACb,oCAAoC;EACpC,oBAAoB;EACpB,iCAAiC;AACnC;AACA;EACE,yBAAyB;EACzB,mBAAmB;EACnB,uBAAuB;EACvB,kBAAkB;AACpB;AACA;EACE,UAAU;EACV,WAAW;EACX,mBAAmB;EACnB,uBAAuB;EACvB,aAAa;EACb,gBAAgB;EAChB,iBAAiB;EACjB,0BAA0B;EAC1B,eAAe;AACjB;AACA;EACE,sCAAsC;AACxC;AACA;EACE,aAAa;EACb,4BAA4B;EAC5B,uCAAuC;AACzC;AACA;EACE,aAAa;EACb,8BAA8B;EAC9B,uCAAuC;AACzC;AACA;EACE,aAAa;EACb,uCAAuC;AACzC;AACA;EACE,UAAU;EACV,WAAW;EACX,mBAAmB;EACnB,uBAAuB;EACvB,aAAa;AACf;AACA;;EAEE,UAAU;EACV,WAAW;EACX,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;EACvB,sBAAsB;EACtB,aAAa;AACf;AACA;;EAEE,mBAAmB;AACrB;AACA;;EAEE,yBAAyB;EACzB,WAAW;EACX,yCAAyC;AAC3C;AACA;;EAEE,yBAAyB;AAC3B;AACA;;;EAGE,0BAA0B;AAC5B;AACA;;;EAGE,gBAAgB;EAChB,cAAc;EACd,mBAAmB;AACrB;AACA;;EAEE,kBAAkB;AACpB;AACA;;EAEE,WAAW;EACX,qBAAqB;EACrB,yBAAyB;EACzB,yBAAyB;EACzB,4BAA4B;EAC5B,oCAAoC;EACpC,kBAAkB;EAClB,WAAW;EACX,UAAU;AACZ;AACA;EACE,qBAAqB;AACvB;AACA;EACE,WAAW;EACX,yBAAyB;EACzB,qBAAqB;EACrB,qBAAqB;EACrB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,qBAAqB;EACrB,sBAAsB;EACtB,eAAe;EACf,yBAAyB;EACzB,sBAAsB;EACtB,iBAAiB;EACjB,yBAAyB;EACzB,eAAe;EACf,sBAAsB;EACtB,qIAAqI;AACvI;AACA;;;;;;;;;;;;;;EAcE,oBAAoB;EACpB,eAAe;AACjB;AACA;;;;;;;;;;;;;;EAcE,gBAAgB;AAClB","file":"tempus-dominus.css","sourcesContent":["/*\ntodo look at how bootstrap loops through their vars to make a --root section\n */\n.visually-hidden, .tempus-dominus-widget [data-action]::after {\n position: absolute !important;\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip: rect(0, 0, 0, 0) !important;\n white-space: nowrap !important;\n border: 0 !important;\n}\n\n.tempus-dominus-widget {\n list-style: none;\n padding: 4px;\n width: 19rem;\n border-radius: 4px;\n display: none;\n background-color: white;\n /*border: 1px solid black;*/\n z-index: 9999;\n box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);\n}\n.tempus-dominus-widget.calendarWeeks {\n width: 21rem;\n}\n.tempus-dominus-widget.calendarWeeks .date-container-days {\n grid-auto-columns: 12.5%;\n}\n.tempus-dominus-widget [data-action] {\n cursor: pointer;\n}\n.tempus-dominus-widget [data-action]::after {\n content: attr(title);\n}\n.tempus-dominus-widget [data-action].disabled, .tempus-dominus-widget [data-action].disabled:hover {\n background: none;\n color: #6c757d;\n cursor: not-allowed;\n}\n.tempus-dominus-widget .arrow {\n display: none;\n}\n.tempus-dominus-widget.show {\n display: block;\n}\n.tempus-dominus-widget .td-collapse:not(.show) {\n display: none;\n}\n.tempus-dominus-widget .td-collapsing {\n height: 0;\n overflow: hidden;\n transition: height 0.35s ease;\n}\n@media (min-width: 576px) {\n .tempus-dominus-widget.timepicker-sbs {\n width: 38em;\n }\n}\n@media (min-width: 768px) {\n .tempus-dominus-widget.timepicker-sbs {\n width: 38em;\n }\n}\n@media (min-width: 992px) {\n .tempus-dominus-widget.timepicker-sbs {\n width: 38em;\n }\n}\n.tempus-dominus-widget.timepicker-sbs .td-row {\n display: flex;\n}\n.tempus-dominus-widget.timepicker-sbs .td-row .td-half {\n flex: 0 0 auto;\n width: 50%;\n}\n.tempus-dominus-widget div[data-action]:active {\n box-shadow: none;\n}\n.tempus-dominus-widget .timepicker-hour,\n.tempus-dominus-widget .timepicker-minute,\n.tempus-dominus-widget .timepicker-second {\n width: 54px;\n font-weight: bold;\n font-size: 1.2em;\n margin: 0;\n}\n.tempus-dominus-widget button[data-action] {\n padding: 6px;\n}\n.tempus-dominus-widget .toggleMeridiem {\n text-align: center;\n /*width: 38px;*/\n height: 38px;\n}\n.tempus-dominus-widget .calendar-header {\n display: grid;\n grid-template-areas: \"a a a\";\n margin-bottom: 10px;\n font-weight: bold;\n}\n.tempus-dominus-widget .calendar-header .next {\n text-align: right;\n padding-right: 10px;\n}\n.tempus-dominus-widget .calendar-header .previous {\n text-align: left;\n padding-left: 10px;\n}\n.tempus-dominus-widget .calendar-header .picker-switch {\n text-align: center;\n}\n.tempus-dominus-widget .toolbar {\n display: grid;\n grid-auto-flow: column;\n grid-auto-rows: 40px;\n}\n.tempus-dominus-widget .toolbar div {\n border-radius: 999px;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n display: flex;\n}\n.tempus-dominus-widget .toolbar div:hover {\n background: #e9ecef;\n}\n.tempus-dominus-widget .date-container-days {\n display: grid;\n grid-template-areas: \"a a a a a a a\";\n grid-auto-rows: 40px;\n grid-auto-columns: 14.2857142857%;\n}\n.tempus-dominus-widget .date-container-days .dow {\n color: rgba(0, 0, 0, 0.5);\n align-items: center;\n justify-content: center;\n text-align: center;\n}\n.tempus-dominus-widget .date-container-days .cw {\n width: 90%;\n height: 90%;\n align-items: center;\n justify-content: center;\n display: flex;\n font-size: 0.8em;\n line-height: 20px;\n color: rgba(0, 0, 0, 0.38);\n cursor: default;\n}\n.tempus-dominus-widget.calendarWeeks .date-container-days {\n grid-template-areas: \"a a a a a a a a\";\n}\n.tempus-dominus-widget .date-container-decades, .tempus-dominus-widget .date-container-years, .tempus-dominus-widget .date-container-months {\n display: grid;\n grid-template-areas: \"a a a\";\n grid-auto-rows: calc((19rem - 8px) / 7);\n}\n.tempus-dominus-widget .time-container-hour, .tempus-dominus-widget .time-container-minute, .tempus-dominus-widget .time-container-second {\n display: grid;\n grid-template-areas: \"a a a a\";\n grid-auto-rows: calc((19rem - 8px) / 7);\n}\n.tempus-dominus-widget .time-container-clock {\n display: grid;\n grid-auto-rows: calc((19rem - 8px) / 7);\n}\n.tempus-dominus-widget .time-container-clock .no-highlight {\n width: 90%;\n height: 90%;\n align-items: center;\n justify-content: center;\n display: flex;\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight), .tempus-dominus-widget .date-container-years div:not(.no-highlight), .tempus-dominus-widget .date-container-months div:not(.no-highlight), .tempus-dominus-widget .date-container-days div:not(.no-highlight),\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight), .tempus-dominus-widget .time-container-hour div:not(.no-highlight), .tempus-dominus-widget .time-container-minute div:not(.no-highlight), .tempus-dominus-widget .time-container-second div:not(.no-highlight) {\n width: 90%;\n height: 90%;\n border-radius: 999px;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n display: flex;\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight):hover, .tempus-dominus-widget .date-container-years div:not(.no-highlight):hover, .tempus-dominus-widget .date-container-months div:not(.no-highlight):hover, .tempus-dominus-widget .date-container-days div:not(.no-highlight):hover,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight):hover, .tempus-dominus-widget .time-container-hour div:not(.no-highlight):hover, .tempus-dominus-widget .time-container-minute div:not(.no-highlight):hover, .tempus-dominus-widget .time-container-second div:not(.no-highlight):hover {\n background: #e9ecef;\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight).active, .tempus-dominus-widget .date-container-years div:not(.no-highlight).active, .tempus-dominus-widget .date-container-months div:not(.no-highlight).active, .tempus-dominus-widget .date-container-days div:not(.no-highlight).active,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).active, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).active, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).active, .tempus-dominus-widget .time-container-second div:not(.no-highlight).active {\n background-color: #0d6efd;\n color: #fff;\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight).active.today:before, .tempus-dominus-widget .date-container-years div:not(.no-highlight).active.today:before, .tempus-dominus-widget .date-container-months div:not(.no-highlight).active.today:before, .tempus-dominus-widget .date-container-days div:not(.no-highlight).active.today:before,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).active.today:before, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).active.today:before, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).active.today:before, .tempus-dominus-widget .time-container-second div:not(.no-highlight).active.today:before {\n border-bottom-color: #fff;\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight).old, .tempus-dominus-widget .date-container-decades div:not(.no-highlight).new, .tempus-dominus-widget .date-container-years div:not(.no-highlight).old, .tempus-dominus-widget .date-container-years div:not(.no-highlight).new, .tempus-dominus-widget .date-container-months div:not(.no-highlight).old, .tempus-dominus-widget .date-container-months div:not(.no-highlight).new, .tempus-dominus-widget .date-container-days div:not(.no-highlight).old, .tempus-dominus-widget .date-container-days div:not(.no-highlight).new,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).old,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).new, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).old, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).new, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).old, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).new, .tempus-dominus-widget .time-container-second div:not(.no-highlight).old, .tempus-dominus-widget .time-container-second div:not(.no-highlight).new {\n color: rgba(0, 0, 0, 0.38);\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight).disabled, .tempus-dominus-widget .date-container-decades div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .date-container-years div:not(.no-highlight).disabled, .tempus-dominus-widget .date-container-years div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .date-container-months div:not(.no-highlight).disabled, .tempus-dominus-widget .date-container-months div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .date-container-days div:not(.no-highlight).disabled, .tempus-dominus-widget .date-container-days div:not(.no-highlight).disabled:hover,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).disabled,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).disabled, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).disabled, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .time-container-second div:not(.no-highlight).disabled, .tempus-dominus-widget .time-container-second div:not(.no-highlight).disabled:hover {\n background: none;\n color: #6c757d;\n cursor: not-allowed;\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight).today, .tempus-dominus-widget .date-container-years div:not(.no-highlight).today, .tempus-dominus-widget .date-container-months div:not(.no-highlight).today, .tempus-dominus-widget .date-container-days div:not(.no-highlight).today,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).today, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).today, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).today, .tempus-dominus-widget .time-container-second div:not(.no-highlight).today {\n position: relative;\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight).today:before, .tempus-dominus-widget .date-container-years div:not(.no-highlight).today:before, .tempus-dominus-widget .date-container-months div:not(.no-highlight).today:before, .tempus-dominus-widget .date-container-days div:not(.no-highlight).today:before,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).today:before, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).today:before, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).today:before, .tempus-dominus-widget .time-container-second div:not(.no-highlight).today:before {\n content: \"\";\n display: inline-block;\n border: solid transparent;\n border-width: 0 0 7px 7px;\n border-bottom-color: #0d6efd;\n border-top-color: rgba(0, 0, 0, 0.2);\n position: absolute;\n bottom: 6px;\n right: 6px;\n}\n.tempus-dominus-widget .time-container {\n margin-bottom: 0.5rem;\n}\n.tempus-dominus-widget button {\n color: #fff;\n background-color: #0d6efd;\n border-color: #0d6efd;\n display: inline-block;\n font-weight: 400;\n line-height: 1.5;\n text-align: center;\n text-decoration: none;\n vertical-align: middle;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n border-radius: 0.25rem;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.day,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.hour,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.minute,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.second,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=incrementHours],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=incrementMinutes],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=incrementSeconds],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=decrementHours],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=decrementMinutes],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=decrementSeconds],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=showHours],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=showMinutes],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=showSeconds],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=togglePeriod] {\n pointer-events: none;\n cursor: default;\n}\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.day:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.hour:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.minute:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.second:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=incrementHours]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=incrementMinutes]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=incrementSeconds]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=decrementHours]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=decrementMinutes]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=decrementSeconds]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=showHours]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=showMinutes]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=showSeconds]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=togglePeriod]:hover {\n background: none;\n}"]} \ No newline at end of file diff --git a/dist/js/tempus-dominus.esm.js b/dist/js/tempus-dominus.esm.js index 04370bc2d..afe4b6984 100644 --- a/dist/js/tempus-dominus.esm.js +++ b/dist/js/tempus-dominus.esm.js @@ -765,7 +765,6 @@ const DefaultOptions = { seconds: false, useTwentyfourHour: false, }, - inputFormat: undefined, inline: false, }, stepping: 1, @@ -809,6 +808,10 @@ const DefaultOptions = { multipleDatesSeparator: '; ', promptTimeOnDateChange: false, promptTimeOnDateChangeTransitionDelay: 200, + hooks: { + inputParse: undefined, + inputFormat: undefined, + }, }; const DatePickerModes = [ { @@ -1363,6 +1366,7 @@ class OptionConverter { static _mergeOptions(providedOptions, mergeTo) { const newOptions = {}; let path = ''; + const ignoreProperties = ['inputParse', 'inputFormat']; const processKey = (key, value, providedType, defaultType) => { switch (key) { case 'defaultDate': { @@ -1475,6 +1479,7 @@ class OptionConverter { if (!keyOptions.includes(value)) Namespace.errorMessages.unexpectedOptionValue(path.substring(1), value, keyOptions); return value; + case 'inputParse': case 'inputFormat': return value; default: @@ -1531,7 +1536,7 @@ class OptionConverter { } path += `.${key}`; copyTo[key] = processKey(key, value, providedType, defaultType); - if (typeof defaultOptionValue !== 'object' || key === 'inputFormat') { + if (typeof defaultOptionValue !== 'object' || ignoreProperties.includes(key)) { path = path.substring(0, path.lastIndexOf(`.${key}`)); return; } @@ -1609,9 +1614,9 @@ class OptionConverter { * @private */ static _dateTypeCheck(d) { - if (d.constructor.name === 'DateTime') + if (d.constructor.name === DateTime.name) return d; - if (d.constructor.name === 'Date') { + if (d.constructor.name === Date.name) { return DateTime.convert(d); } if (typeof d === typeof '') { @@ -1660,12 +1665,12 @@ class OptionConverter { * @param optionName Provides text to error messages e.g. disabledDates */ static _dateConversion(d, optionName) { - if (typeof d === typeof '' && optionName !== 'input field') { + if (typeof d === typeof '' && optionName !== 'input') { Namespace.errorMessages.dateString(); } const converted = this._dateTypeCheck(d); if (!converted) { - Namespace.errorMessages.failedToParseDate(optionName, d); + Namespace.errorMessages.failedToParseDate(optionName, d, optionName === 'input'); } return converted; } @@ -1739,11 +1744,9 @@ class Dates { set(value, index, from = 'date.set') { if (!value) this._setValue(value, index); - const converted = OptionConverter._dateConversion(value, 'input field'); - if (converted !== undefined) + const converted = OptionConverter._dateConversion(value, from); + if (converted) this._setValue(converted, index); - else - Namespace.errorMessages.failedToParseDate(from, value, true); } /** * Returns true if the `targetDate` is part of the selected dates array. @@ -1817,10 +1820,10 @@ class Dates { const updateInput = () => { if (!this._context._input) return; - let newValue = (target === null || target === void 0 ? void 0 : target.format(this._context._options.display.inputFormat)) || ''; + let newValue = this._context._options.hooks.inputFormat(target); if (this._context._options.multipleDates) { newValue = this._dates - .map((d) => d.format(this._context._options.display.inputFormat)) + .map((d) => this._context._options.hooks.inputFormat(d)) .join(this._context._options.multipleDatesSeparator); } if (this._context._input.value != newValue) @@ -2395,12 +2398,14 @@ class Display { */ this._documentClickEvent = (e) => { var _a; + if (this._context._options.display.keepOpen || + this._context._options.debug || + window.debug) + return; if (this._isVisible && !e.composedPath().includes(this.widget) && // click inside the widget - !((_a = e.composedPath()) === null || _a === void 0 ? void 0 : _a.includes(this._context._element)) && // click on the element - (!this._context._options.display.keepOpen || - !this._context._options.debug || - !window.debug)) { + !((_a = e.composedPath()) === null || _a === void 0 ? void 0 : _a.includes(this._context._element)) // click on the element + ) { this.hide(); } }; @@ -2578,7 +2583,7 @@ class Display { this._context._currentViewMode = max; } this.widget - .querySelectorAll(`.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div`) + .querySelectorAll(`.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div:not(.${Namespace.css.clockContainer})`) .forEach((e) => (e.style.display = 'none')); const datePickerMode = DatePickerModes[this._context._currentViewMode]; let picker = this.widget.querySelector(`.${datePickerMode.className}`); @@ -2996,20 +3001,36 @@ class TempusDominus { * @private */ this._inputChangeEvent = () => { + const setViewDate = () => { + if (this.dates.lastPicked) + this._viewDate = this.dates.lastPicked; + }; const value = this._input.value; if (this._options.multipleDates) { try { const valueSplit = value.split(this._options.multipleDatesSeparator); for (let i = 0; i < valueSplit.length; i++) { - this.dates.set(valueSplit[i], i, 'input'); + if (this._options.hooks.inputParse) { + this.dates.set(this._options.hooks.inputParse(valueSplit[i]), i, 'input'); + } + else { + this.dates.set(valueSplit[i], i, 'input'); + } } + setViewDate(); } catch (_a) { console.warn('TD: Something went wrong trying to set the multidate values from the input field.'); } } else { - this.dates.set(value, 0, 'input'); + if (this._options.hooks.inputParse) { + this.dates.set(this._options.hooks.inputParse(value), 0, 'input'); + } + else { + this.dates.set(value, 0, 'input'); + } + setViewDate(); } }; /** @@ -3256,20 +3277,22 @@ class TempusDominus { this._currentViewMode = Math.max(DatePickerModes.findIndex((x) => x.name === config.display.viewMode), this._minViewModeNumber); } // defaults the input format based on the components enabled - if (config.display.inputFormat === undefined) { + if (config.hooks.inputFormat === undefined) { const components = config.display.components; - config.display.inputFormat = { - year: components.calendar && components.year ? 'numeric' : undefined, - month: components.calendar && components.month ? '2-digit' : undefined, - day: components.calendar && components.date ? '2-digit' : undefined, - hour: components.clock && components.hours - ? components.useTwentyfourHour - ? '2-digit' - : 'numeric' - : undefined, - minute: components.clock && components.minutes ? '2-digit' : undefined, - second: components.clock && components.seconds ? '2-digit' : undefined, - hour12: !components.useTwentyfourHour, + config.hooks.inputFormat = (date) => { + return date.format({ + year: components.calendar && components.year ? 'numeric' : undefined, + month: components.calendar && components.month ? '2-digit' : undefined, + day: components.calendar && components.date ? '2-digit' : undefined, + hour: components.clock && components.hours + ? components.useTwentyfourHour + ? '2-digit' + : 'numeric' + : undefined, + minute: components.clock && components.minutes ? '2-digit' : undefined, + second: components.clock && components.seconds ? '2-digit' : undefined, + hour12: !components.useTwentyfourHour, + }); }; } if ((_a = this._display) === null || _a === void 0 ? void 0 : _a.isVisible) { diff --git a/dist/js/tempus-dominus.esm.js.map b/dist/js/tempus-dominus.esm.js.map index 366213b29..c5bb3e41b 100644 --- a/dist/js/tempus-dominus.esm.js.map +++ b/dist/js/tempus-dominus.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"tempus-dominus.esm.js","sources":["../../src/js/datetime.ts","../../src/js/errors.ts","../../src/js/namespace.ts","../../src/js/conts.ts","../../src/js/display/collapse.ts","../../src/js/actions.ts","../../src/js/display/calendar/date-display.ts","../../src/js/display/calendar/month-display.ts","../../src/js/options.ts","../../src/js/dates.ts","../../src/js/display/calendar/year-display.ts","../../src/js/display/calendar/decade-display.ts","../../src/js/display/time/time-display.ts","../../src/js/display/time/hour-display.ts","../../src/js/display/time/minute-display.ts","../../src/js/display/time/second-display.ts","../../src/js/display/index.ts","../../src/js/validation.ts","../../src/js/tempus-dominus.ts"],"sourcesContent":["export enum Unit {\n seconds = 'seconds',\n minutes = 'minutes',\n hours = 'hours',\n date = 'date',\n month = 'month',\n year = 'year',\n}\n\nexport interface DateTimeFormatOptions extends Intl.DateTimeFormatOptions {\n timeStyle?: 'short' | 'medium' | 'long';\n dateStyle?: 'short' | 'medium' | 'long' | 'full';\n}\n\n/**\n * For the most part this object behaves exactly the same way\n * as the native Date object with a little extra spice.\n */\nexport class DateTime extends Date {\n /**\n * Used with Intl.DateTimeFormat\n */\n locale = 'default';\n\n /**\n * Chainable way to set the {@link locale}\n * @param value\n */\n setLocale(value: string): this {\n this.locale = value;\n return this;\n }\n\n /**\n * Converts a plain JS date object to a DateTime object.\n * Doing this allows access to format, etc.\n * @param date\n */\n static convert(date: Date): DateTime {\n if (!date) throw `A date is required`;\n return new DateTime(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n );\n }\n\n /**\n * Native date manipulations are not pure functions. This function creates a duplicate of the DateTime object.\n */\n get clone() {\n return new DateTime(\n this.year,\n this.month,\n this.date,\n this.hours,\n this.minutes,\n this.seconds,\n this.getMilliseconds()\n ).setLocale(this.locale);\n }\n\n /**\n * Sets the current date to the start of the {@link unit} provided\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).startOf('month')\n * would return April 1, 2021, 12:00:00.000 AM (midnight)\n * @param unit\n */\n startOf(unit: Unit | 'weekDay'): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n switch (unit) {\n case 'seconds':\n this.setMilliseconds(0);\n break;\n case 'minutes':\n this.setSeconds(0, 0);\n break;\n case 'hours':\n this.setMinutes(0, 0, 0);\n break;\n case 'date':\n this.setHours(0, 0, 0, 0);\n break;\n case 'weekDay':\n this.startOf(Unit.date);\n this.manipulate(0 - this.weekDay, Unit.date);\n break;\n case 'month':\n this.startOf(Unit.date);\n this.setDate(1);\n break;\n case 'year':\n this.startOf(Unit.date);\n this.setMonth(0, 1);\n break;\n }\n return this;\n }\n\n /**\n * Sets the current date to the end of the {@link unit} provided\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).endOf('month')\n * would return April 30, 2021, 11:59:59.999 PM\n * @param unit\n */\n endOf(unit: Unit | 'weekDay'): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n switch (unit) {\n case 'seconds':\n this.setMilliseconds(999);\n break;\n case 'minutes':\n this.setSeconds(59, 999);\n break;\n case 'hours':\n this.setMinutes(59, 59, 999);\n break;\n case 'date':\n this.setHours(23, 59, 59, 999);\n break;\n case 'weekDay':\n this.startOf(Unit.date);\n this.manipulate(6 - this.weekDay, Unit.date);\n break;\n case 'month':\n this.endOf(Unit.date);\n this.manipulate(1, Unit.month);\n this.setDate(0);\n break;\n case 'year':\n this.endOf(Unit.date);\n this.manipulate(1, Unit.year);\n this.setDate(0);\n break;\n }\n return this;\n }\n\n /**\n * Change a {@link unit} value. Value can be positive or negative\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).manipulate(1, 'month')\n * would return May 30, 2021, 11:45:32.984 AM\n * @param value A positive or negative number\n * @param unit\n */\n manipulate(value: number, unit: Unit): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n this[unit] += value;\n return this;\n }\n\n /**\n * Returns a string format.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat\n * for valid templates and locale objects\n * @param template An object. Uses browser defaults otherwise.\n * @param locale Can be a string or an array of strings. Uses browser defaults otherwise.\n */\n format(template: DateTimeFormatOptions, locale = this.locale): string {\n return new Intl.DateTimeFormat(locale, template).format(this);\n }\n\n /**\n * Return true if {@link compare} is before this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isBefore(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() < compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n return (\n this.clone.startOf(unit).valueOf() < compare.clone.startOf(unit).valueOf()\n );\n }\n\n /**\n * Return true if {@link compare} is after this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isAfter(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() > compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n return (\n this.clone.startOf(unit).valueOf() > compare.clone.startOf(unit).valueOf()\n );\n }\n\n /**\n * Return true if {@link compare} is same this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isSame(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() === compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n compare = DateTime.convert(compare);\n return (\n this.clone.startOf(unit).valueOf() === compare.startOf(unit).valueOf()\n );\n }\n\n /**\n * Check if this is between two other DateTimes, optionally looking at unit scale. The match is exclusive.\n * @param left\n * @param right\n * @param unit.\n * @param inclusivity. A [ indicates inclusion of a value. A ( indicates exclusion.\n * If the inclusivity parameter is used, both indicators must be passed.\n */\n isBetween(\n left: DateTime,\n right: DateTime,\n unit?: Unit,\n inclusivity: '()' | '[]' | '(]' | '[)' = '()'\n ): boolean {\n if (unit && this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n const leftInclusivity = inclusivity[0] === '(';\n const rightInclusivity = inclusivity[1] === ')';\n\n return (\n ((leftInclusivity\n ? this.isAfter(left, unit)\n : !this.isBefore(left, unit)) &&\n (rightInclusivity\n ? this.isBefore(right, unit)\n : !this.isAfter(right, unit))) ||\n ((leftInclusivity\n ? this.isBefore(left, unit)\n : !this.isAfter(left, unit)) &&\n (rightInclusivity\n ? this.isAfter(right, unit)\n : !this.isBefore(right, unit)))\n );\n }\n\n /**\n * Returns flattened object of the date. Does not include literals\n * @param locale\n * @param template\n */\n parts(\n locale = this.locale,\n template: any = { dateStyle: 'full', timeStyle: 'long' }\n ) {\n const parts = {};\n new Intl.DateTimeFormat(locale, template)\n .formatToParts(this)\n .filter((x) => x.type !== 'literal')\n .forEach((x) => (parts[x.type] = x.value));\n return parts;\n }\n\n /**\n * Shortcut to Date.getSeconds()\n */\n get seconds(): number {\n return this.getSeconds();\n }\n\n /**\n * Shortcut to Date.setSeconds()\n */\n set seconds(value: number) {\n this.setSeconds(value);\n }\n\n /**\n * Returns two digit hours\n */\n get secondsFormatted(): string {\n return this.seconds < 10 ? `0${this.seconds}` : `${this.seconds}`;\n }\n\n /**\n * Shortcut to Date.getMinutes()\n */\n get minutes(): number {\n return this.getMinutes();\n }\n\n /**\n * Shortcut to Date.setMinutes()\n */\n set minutes(value: number) {\n this.setMinutes(value);\n }\n\n /**\n * Returns two digit hours\n */\n get minutesFormatted(): string {\n return this.minutes < 10 ? `0${this.minutes}` : `${this.minutes}`;\n }\n\n /**\n * Shortcut to Date.getHours()\n */\n get hours(): number {\n return this.getHours();\n }\n\n /**\n * Shortcut to Date.setHours()\n */\n set hours(value: number) {\n this.setHours(value);\n }\n\n /**\n * Returns two digit hours\n */\n get hoursFormatted(): string {\n return this.hours < 10 ? `0${this.hours}` : `${this.hours}`;\n }\n\n /**\n * Returns two digit hours but in twelve hour mode e.g. 13 -> 1\n */\n get twelveHoursFormatted(): string {\n let hour = this.hours;\n if (hour > 12) hour = hour - 12;\n if (hour === 0) hour = 12;\n return hour < 10 ? `0${hour}` : `${hour}`;\n }\n\n /**\n * Get the meridiem of the date. E.g. AM or PM.\n * If the {@link locale} provides a \"dayPeriod\" then this will be returned,\n * otherwise it will return AM or PM.\n * @param locale\n */\n meridiem(locale: string = this.locale): string {\n return new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n hour12: true,\n } as any)\n .formatToParts(this)\n .find((p) => p.type === 'dayPeriod')?.value;\n }\n\n /**\n * Shortcut to Date.getDate()\n */\n get date(): number {\n return this.getDate();\n }\n\n /**\n * Shortcut to Date.setDate()\n */\n set date(value: number) {\n this.setDate(value);\n }\n\n /**\n * Return two digit date\n */\n get dateFormatted(): string {\n return this.date < 10 ? `0${this.date}` : `${this.date}`;\n }\n\n // https://github.com/you-dont-need/You-Dont-Need-Momentjs#week-of-year\n /**\n * Gets the week of the year\n */\n get week(): number {\n const startOfYear = new Date(this.year, 0, 1);\n startOfYear.setDate(\n startOfYear.getDate() + (1 - (startOfYear.getDay() % 7))\n );\n return Math.round((this.valueOf() - startOfYear.valueOf()) / 604800000) + 1;\n }\n\n /**\n * Shortcut to Date.getDay()\n */\n get weekDay(): number {\n return this.getDay();\n }\n\n /**\n * Shortcut to Date.getMonth()\n */\n get month(): number {\n return this.getMonth();\n }\n\n /**\n * Shortcut to Date.setMonth()\n */\n set month(value: number) {\n this.setMonth(value);\n }\n\n /**\n * Return two digit, human expected month. E.g. January = 1, December = 12\n */\n get monthFormatted(): string {\n return this.month + 1 < 10 ? `0${this.month}` : `${this.month}`;\n }\n\n /**\n * Shortcut to Date.getFullYear()\n */\n get year(): number {\n return this.getFullYear();\n }\n\n /**\n * Shortcut to Date.setFullYear()\n */\n set year(value: number) {\n this.setFullYear(value);\n }\n}\n","import Namespace from './namespace';\n\nexport class TdError extends Error {\n code: number;\n}\n\nexport class ErrorMessages {\n private base = 'TD:';\n\n //#region out to console\n\n /**\n * Throws an error indicating that a key in the options object is invalid.\n * @param optionName\n */\n unexpectedOption(optionName: string) {\n const error = new TdError(\n `${this.base} Unexpected option: ${optionName} does not match a known option.`\n );\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error indicating that one more keys in the options object is invalid.\n * @param optionName\n */\n unexpectedOptions(optionName: string[]) {\n const error = new TdError(`${this.base}: ${optionName.join(', ')}`);\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error when an option is provide an unsupported value.\n * For example a value of 'cheese' for toolbarPlacement which only supports\n * 'top', 'bottom', 'default'.\n * @param optionName\n * @param badValue\n * @param validOptions\n */\n unexpectedOptionValue(\n optionName: string,\n badValue: string,\n validOptions: string[]\n ) {\n const error = new TdError(\n `${\n this.base\n } Unexpected option value: ${optionName} does not accept a value of \"${badValue}\". Valid values are: ${validOptions.join(\n ', '\n )}`\n );\n error.code = 2;\n throw error;\n }\n\n /**\n * Throws an error when an option value is the wrong type.\n * For example a string value was provided to multipleDates which only\n * supports true or false.\n * @param optionName\n * @param badType\n * @param expectedType\n */\n typeMismatch(optionName: string, badType: string, expectedType: string) {\n const error = new TdError(\n `${this.base} Mismatch types: ${optionName} has a type of ${badType} instead of the required ${expectedType}`\n );\n error.code = 3;\n throw error;\n }\n\n /**\n * Throws an error when an option value is outside of the expected range.\n * For example restrictions.daysOfWeekDisabled excepts a value between 0 and 6.\n * @param optionName\n * @param lower\n * @param upper\n */\n numbersOutOfRage(optionName: string, lower: number, upper: number) {\n const error = new TdError(\n `${this.base} ${optionName} expected an array of number between ${lower} and ${upper}.`\n );\n error.code = 4;\n throw error;\n }\n\n /**\n * Throws an error when a value for a date options couldn't be parsed. Either\n * the option was an invalide string or an invalid Date object.\n * @param optionName\n * @param date\n * @param soft If true, logs a warning instead of an error.\n */\n failedToParseDate(optionName: string, date: any, soft = false) {\n const error = new TdError(\n `${this.base} Could not correctly parse \"${date}\" to a date for ${optionName}.`\n );\n error.code = 5;\n if (!soft) throw error;\n console.warn(error);\n }\n\n /**\n * Throws when an element to attach to was not provided in the constructor.\n */\n mustProvideElement() {\n const error = new TdError(`${this.base} No element was provided.`);\n error.code = 6;\n throw error;\n }\n\n /**\n * Throws if providing an array for the events to subscribe method doesn't have\n * the same number of callbacks. E.g., subscribe([1,2], [1])\n */\n subscribeMismatch() {\n const error = new TdError(\n `${this.base} The subscribed events does not match the number of callbacks`\n );\n error.code = 7;\n throw error;\n }\n\n /**\n * Throws if the configuration has conflicting rules e.g. minDate is after maxDate\n */\n conflictingConfiguration(message?: string) {\n const error = new TdError(\n `${this.base} A configuration value conflicts with another rule. ${message}`\n );\n error.code = 8;\n throw error;\n }\n\n /**\n * Logs a warning if a date option value is provided as a string, instead of\n * a date/datetime object.\n */\n dateString() {\n console.warn(\n `${this.base} Using a string for date options is not recommended unless you specify an ISO string.`\n );\n }\n\n //#endregion\n\n //#region used with notify.error\n\n /**\n * Used with an Error Event type if the user selects a date that\n * fails restriction validation.\n */\n failedToSetInvalidDate = 'Failed to set invalid date';\n\n /**\n * Used with an Error Event type when a user changes the value of the\n * input field directly, and does not provide a valid date.\n */\n failedToParseInput = 'Failed parse input field';\n\n //#endregion\n}\n","import { ErrorMessages } from './errors';\n// this is not the way I want this to stay but nested classes seemed to blown up once its compiled.\nconst NAME = 'tempus-dominus',\n version = '6.0.0-alpha1',\n dataKey = 'td';\n\n/**\n * Events\n */\nclass Events {\n key = `.${dataKey}`;\n\n /**\n * Change event. Fired when the user selects a date.\n * See also EventTypes.ChangeEvent\n */\n change = `change${this.key}`;\n\n /**\n * Emit when the view changes for example from month view to the year view.\n * See also EventTypes.ViewUpdateEvent\n */\n update = `update${this.key}`;\n\n /**\n * Emits when a selected date or value from the input field fails to meet the provided validation rules.\n * See also EventTypes.FailEvent\n */\n error = `error${this.key}`;\n\n /**\n * Show event\n * @event Events#show\n */\n show = `show${this.key}`;\n\n /**\n * Hide event\n * @event Events#hide\n */\n hide = `hide${this.key}`;\n\n // blur and focus are used in the jQuery provider but are otherwise unused.\n // keyup/down will be used later for keybinding options\n\n blur = `blur${this.key}`;\n focus = `focus${this.key}`;\n keyup = `keyup${this.key}`;\n keydown = `keydown${this.key}`;\n}\n\nclass Css {\n /**\n * The outer element for the widget.\n */\n widget = `${NAME}-widget`;\n\n /**\n * Hold the previous, next and switcher divs\n */\n calendarHeader = 'calendar-header';\n\n /**\n * The element for the action to change the calendar view. E.g. month -> year.\n */\n switch = 'picker-switch';\n\n /**\n * The elements for all of the toolbar options\n */\n toolbar = 'toolbar';\n\n /**\n * Disables the hover and rounding affect.\n */\n noHighlight = 'no-highlight';\n\n /**\n * Applied to the widget element when the side by side option is in use.\n */\n sideBySide = 'timepicker-sbs';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> July\n */\n previous = 'previous';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> September\n */\n next = 'next';\n\n /**\n * Applied to any action that would violate any restriction options. ALso applied\n * to an input field if the disabled function is called.\n */\n disabled = 'disabled';\n\n /**\n * Applied to any date that is less than requested view,\n * e.g. the last day of the previous month.\n */\n old = 'old';\n\n /**\n * Applied to any date that is greater than of requested view,\n * e.g. the last day of the previous month.\n */\n new = 'new';\n\n /**\n * Applied to any date that is currently selected.\n */\n active = 'active';\n\n //#region date element\n\n /**\n * The outer most element for the calendar view.\n */\n dateContainer = 'date-container';\n\n /**\n * The outer most element for the decades view.\n */\n decadesContainer = `${this.dateContainer}-decades`;\n\n /**\n * Applied to elements within the decades container, e.g. 2020, 2030\n */\n decade = 'decade';\n\n /**\n * The outer most element for the years view.\n */\n yearsContainer = `${this.dateContainer}-years`;\n\n /**\n * Applied to elements within the years container, e.g. 2021, 2021\n */\n year = 'year';\n\n /**\n * The outer most element for the month view.\n */\n monthsContainer = `${this.dateContainer}-months`;\n\n /**\n * Applied to elements within the month container, e.g. January, February\n */\n month = 'month';\n\n /**\n * The outer most element for the calendar view.\n */\n daysContainer = `${this.dateContainer}-days`;\n\n /**\n * Applied to elements within the day container, e.g. 1, 2..31\n */\n day = 'day';\n\n /**\n * If display.calendarWeeks is enabled, a column displaying the week of year\n * is shown. This class is applied to each cell in that column.\n */\n calendarWeeks = 'cw';\n\n /**\n * Applied to the first row of the calendar view, e.g. Sunday, Monday\n */\n dayOfTheWeek = 'dow';\n\n /**\n * Applied to the current date on the calendar view.\n */\n today = 'today';\n\n /**\n * Applied to the locale's weekend dates on the calendar view, e.g. Sunday, Saturday\n */\n weekend = 'weekend';\n\n //#endregion\n\n //#region time element\n\n /**\n * The outer most element for all time related elements.\n */\n timeContainer = 'time-container';\n\n /**\n * Applied the separator columns between time elements, e.g. hour *:* minute *:* second\n */\n separator = 'separator';\n\n /**\n * The outer most element for the clock view.\n */\n clockContainer = `${this.timeContainer}-clock`;\n\n /**\n * The outer most element for the hours selection view.\n */\n hourContainer = `${this.timeContainer}-hour`;\n\n /**\n * The outer most element for the minutes selection view.\n */\n minuteContainer = `${this.timeContainer}-minute`;\n\n /**\n * The outer most element for the seconds selection view.\n */\n secondContainer = `${this.timeContainer}-second`;\n\n /**\n * Applied to each element in the hours selection view.\n */\n hour = 'hour';\n\n /**\n * Applied to each element in the minutes selection view.\n */\n minute = 'minute';\n\n /**\n * Applied to each element in the seconds selection view.\n */\n second = 'second';\n\n /**\n * Applied AM/PM toggle button.\n */\n toggleMeridiem = 'toggleMeridiem';\n\n //#endregion\n\n //#region collapse\n\n /**\n * Applied the element of the current view mode, e.g. calendar or clock.\n */\n show = 'show';\n\n /**\n * Applied to the currently showing view mode during a transition\n * between calendar and clock views\n */\n collapsing = 'td-collapsing';\n\n /**\n * Applied to the currently hidden view mode.\n */\n collapse = 'td-collapse';\n\n //#endregion\n\n /**\n * Applied to the widget when the option display.inline is enabled.\n */\n inline = 'inline';\n}\n\nexport default class Namespace {\n static NAME = NAME;\n // noinspection JSUnusedGlobalSymbols\n static version = version;\n static dataKey = dataKey;\n\n static events = new Events();\n\n static css = new Css();\n\n static errorMessages = new ErrorMessages();\n}\n","import { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options from './options';\n\nconst DefaultOptions: Options = {\n restrictions: {\n minDate: undefined,\n maxDate: undefined,\n disabledDates: [],\n enabledDates: [],\n daysOfWeekDisabled: [],\n disabledTimeIntervals: [],\n disabledHours: [],\n enabledHours: [],\n },\n display: {\n icons: {\n type: 'icons',\n time: 'fas fa-clock',\n date: 'fas fa-calendar',\n up: 'fas fa-arrow-up',\n down: 'fas fa-arrow-down',\n previous: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n today: 'fas fa-calendar-check',\n clear: 'fas fa-trash',\n close: 'fas fa-times',\n },\n sideBySide: false,\n calendarWeeks: false,\n viewMode: 'calendar',\n toolbarPlacement: 'bottom',\n keepOpen: false,\n buttons: {\n today: false,\n clear: false,\n close: false,\n },\n components: {\n calendar: true,\n date: true,\n month: true,\n year: true,\n decades: true,\n clock: true,\n hours: true,\n minutes: true,\n seconds: false,\n useTwentyfourHour: false,\n },\n inputFormat: undefined,\n inline: false,\n },\n stepping: 1,\n useCurrent: true,\n defaultDate: undefined,\n localization: {\n today: 'Go to today',\n clear: 'Clear selection',\n close: 'Close the picker',\n selectMonth: 'Select Month',\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n selectYear: 'Select Year',\n previousYear: 'Previous Year',\n nextYear: 'Next Year',\n selectDecade: 'Select Decade',\n previousDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n previousCentury: 'Previous Century',\n nextCentury: 'Next Century',\n pickHour: 'Pick Hour',\n incrementHour: 'Increment Hour',\n decrementHour: 'Decrement Hour',\n pickMinute: 'Pick Minute',\n incrementMinute: 'Increment Minute',\n decrementMinute: 'Decrement Minute',\n pickSecond: 'Pick Second',\n incrementSecond: 'Increment Second',\n decrementSecond: 'Decrement Second',\n toggleMeridiem: 'Toggle Meridiem',\n selectTime: 'Select Time',\n selectDate: 'Select Date',\n dayViewHeaderFormat: 'long',\n locale: 'default',\n },\n keepInvalid: false,\n debug: false,\n allowInputToggle: false,\n viewDate: new DateTime(),\n multipleDates: false,\n multipleDatesSeparator: '; ',\n promptTimeOnDateChange: false,\n promptTimeOnDateChangeTransitionDelay: 200,\n};\n\nconst DatePickerModes: {\n name: string;\n className: string;\n unit: Unit;\n step: number;\n}[] = [\n {\n name: 'calendar',\n className: Namespace.css.daysContainer,\n unit: Unit.month,\n step: 1,\n },\n {\n name: 'months',\n className: Namespace.css.monthsContainer,\n unit: Unit.year,\n step: 1,\n },\n {\n name: 'years',\n className: Namespace.css.yearsContainer,\n unit: Unit.year,\n step: 10,\n },\n {\n name: 'decades',\n className: Namespace.css.decadesContainer,\n unit: Unit.year,\n step: 100,\n },\n];\n\nexport { DefaultOptions, DatePickerModes, Namespace };\n","import Namespace from '../namespace';\n\n/**\n * Provides a collapse functionality to the view changes\n */\nexport default class Collapse {\n private timeOut;\n\n /**\n * Flips the show/hide state of `target`\n * @param target html element to affect.\n */\n toggle(target: HTMLElement, callback = undefined) {\n if (target.classList.contains(Namespace.css.show)) {\n this.hide(target, callback);\n } else {\n this.show(target, callback);\n }\n }\n\n /**\n * If `target` is not already showing, then show after the animation.\n * @param target\n */\n show(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse, Namespace.css.show);\n target.style.height = '';\n this.timeOut = null;\n if (callback) callback();\n };\n\n target.style.height = '0';\n target.classList.remove(Namespace.css.collapse);\n target.classList.add(Namespace.css.collapsing);\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n target.style.height = `${target.scrollHeight}px`;\n }\n\n /**\n * If `target` is not already hidden, then hide after the animation.\n * @param target HTML Element\n */\n hide(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n !target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse);\n this.timeOut = null;\n };\n\n target.style.height = `${target.getBoundingClientRect()['height']}px`;\n\n const reflow = (element) => element.offsetHeight;\n\n reflow(target);\n\n target.classList.remove(Namespace.css.collapse, Namespace.css.show);\n target.classList.add(Namespace.css.collapsing);\n target.style.height = '';\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n }\n\n /**\n * Gets the transition duration from the `element` by getting css properties\n * `transition-duration` and `transition-delay`\n * @param element HTML Element\n */\n private getTransitionDurationFromElement = (element: HTMLElement) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } =\n window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) +\n Number.parseFloat(transitionDelay)) *\n 1000\n );\n };\n}\n","import { DatePickerModes } from './conts.js';\r\nimport { DateTime, Unit } from './datetime';\r\nimport { TempusDominus } from './tempus-dominus';\r\nimport Collapse from './display/collapse';\r\nimport Namespace from './namespace';\r\n\r\n/**\r\n *\r\n */\r\nexport default class Actions {\r\n private _context: TempusDominus;\r\n private collapse: Collapse;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this.collapse = new Collapse();\r\n }\r\n\r\n /**\r\n * Performs the selected `action`. See ActionTypes\r\n * @param e This is normally a click event\r\n * @param action If not provided, then look for a [data-action]\r\n */\r\n do(e: any, action?: ActionTypes) {\r\n const currentTarget = e.currentTarget;\r\n if (currentTarget.classList.contains(Namespace.css.disabled)) return false;\r\n action = action || currentTarget.dataset.action;\r\n const lastPicked = (\r\n this._context.dates.lastPicked || this._context._viewDate\r\n ).clone;\r\n\r\n /**\r\n * Common function to manipulate {@link lastPicked} by `unit`\r\n * @param unit\r\n * @param value Value to change by\r\n */\r\n const manipulateAndSet = (unit: Unit, value = 1) => {\r\n const newDate = lastPicked.manipulate(value, unit);\r\n if (this._context._validation.isValid(newDate, unit)) {\r\n this._context.dates._setValue(\r\n newDate,\r\n this._context.dates.lastPickedIndex\r\n );\r\n }\r\n };\r\n\r\n switch (action) {\r\n case ActionTypes.next:\r\n case ActionTypes.previous:\r\n const { unit, step } = DatePickerModes[this._context._currentViewMode];\r\n if (action === ActionTypes.next)\r\n this._context._viewDate.manipulate(step, unit);\r\n else this._context._viewDate.manipulate(step * -1, unit);\r\n this._context._viewUpdate(unit);\r\n\r\n this._context._display._showMode();\r\n break;\r\n case ActionTypes.pickerSwitch:\r\n this._context._display._showMode(1);\r\n this._context._viewUpdate(\r\n DatePickerModes[this._context._currentViewMode].unit\r\n );\r\n this._context._display._updateCalendarHeader();\r\n break;\r\n case ActionTypes.selectMonth:\r\n case ActionTypes.selectYear:\r\n case ActionTypes.selectDecade:\r\n const value = +currentTarget.getAttribute('data-value');\r\n switch (action) {\r\n case ActionTypes.selectMonth:\r\n this._context._viewDate.month = value;\r\n this._context._viewUpdate(Unit.month);\r\n break;\r\n case ActionTypes.selectYear:\r\n this._context._viewDate.year = value;\r\n this._context._viewUpdate(Unit.year);\r\n break;\r\n case ActionTypes.selectDecade:\r\n this._context._viewDate.year = value;\r\n this._context._viewUpdate(Unit.year);\r\n break;\r\n }\r\n\r\n if (\r\n this._context._currentViewMode === this._context._minViewModeNumber\r\n ) {\r\n this._context.dates._setValue(\r\n this._context._viewDate,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (!this._context._options.display.inline) {\r\n this._context._display.hide();\r\n }\r\n } else {\r\n this._context._display._showMode(-1);\r\n }\r\n break;\r\n case ActionTypes.selectDay:\r\n const day = this._context._viewDate.clone;\r\n if (currentTarget.classList.contains(Namespace.css.old)) {\r\n day.manipulate(-1, Unit.month);\r\n }\r\n if (currentTarget.classList.contains(Namespace.css.new)) {\r\n day.manipulate(1, Unit.month);\r\n }\r\n\r\n day.date = +currentTarget.innerText;\r\n let index = 0;\r\n if (this._context._options.multipleDates) {\r\n index = this._context.dates.pickedIndex(day, Unit.date);\r\n if (index !== -1) {\r\n this._context.dates._setValue(null, index); //deselect multi-date\r\n } else {\r\n this._context.dates._setValue(\r\n day,\r\n this._context.dates.lastPickedIndex + 1\r\n );\r\n }\r\n } else {\r\n this._context.dates._setValue(\r\n day,\r\n this._context.dates.lastPickedIndex\r\n );\r\n }\r\n\r\n if (\r\n !this._context._display._hasTime &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline &&\r\n !this._context._options.multipleDates\r\n ) {\r\n this._context._display.hide();\r\n }\r\n break;\r\n case ActionTypes.selectHour:\r\n let hour = +currentTarget.getAttribute('data-value');\r\n if (lastPicked.hours >= 12 && !this._context._options.display.components.useTwentyfourHour) hour += 12;\r\n lastPicked.hours = hour;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.components.minutes &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.selectMinute:\r\n lastPicked.minutes = +currentTarget.innerText;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.components.seconds &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.selectSecond:\r\n lastPicked.seconds = +currentTarget.innerText;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.incrementHours:\r\n manipulateAndSet(Unit.hours);\r\n break;\r\n case ActionTypes.incrementMinutes:\r\n manipulateAndSet(Unit.minutes, this._context._options.stepping);\r\n break;\r\n case ActionTypes.incrementSeconds:\r\n manipulateAndSet(Unit.seconds);\r\n break;\r\n case ActionTypes.decrementHours:\r\n manipulateAndSet(Unit.hours, -1);\r\n break;\r\n case ActionTypes.decrementMinutes:\r\n manipulateAndSet(Unit.minutes, this._context._options.stepping * -1);\r\n break;\r\n case ActionTypes.decrementSeconds:\r\n manipulateAndSet(Unit.seconds, -1);\r\n break;\r\n case ActionTypes.toggleMeridiem:\r\n manipulateAndSet(\r\n Unit.hours,\r\n this._context.dates.lastPicked.hours >= 12 ? -12 : 12\r\n );\r\n break;\r\n case ActionTypes.togglePicker:\r\n this._context._display.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer}, .${Namespace.css.timeContainer}`\r\n )\r\n .forEach((htmlElement: HTMLElement) =>\r\n this.collapse.toggle(htmlElement)\r\n );\r\n if (\r\n currentTarget.getAttribute('title') ===\r\n this._context._options.localization.selectDate\r\n ) {\r\n currentTarget.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectTime\r\n );\r\n currentTarget.innerHTML = this._context._display._iconTag(\r\n this._context._options.display.icons.time\r\n ).outerHTML;\r\n\r\n this._context._display._updateCalendarHeader();\r\n } else {\r\n currentTarget.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDate\r\n );\r\n currentTarget.innerHTML = this._context._display._iconTag(\r\n this._context._options.display.icons.date\r\n ).outerHTML;\r\n this.do(e, ActionTypes.showClock);\r\n this._context._display._update('clock');\r\n }\r\n break;\r\n case ActionTypes.showClock:\r\n case ActionTypes.showHours:\r\n case ActionTypes.showMinutes:\r\n case ActionTypes.showSeconds:\r\n this._context._display.widget\r\n .querySelectorAll(`.${Namespace.css.timeContainer} > div`)\r\n .forEach(\r\n (htmlElement: HTMLElement) => (htmlElement.style.display = 'none')\r\n );\r\n\r\n let classToUse = '';\r\n switch (action) {\r\n case ActionTypes.showClock:\r\n classToUse = Namespace.css.clockContainer;\r\n this._context._display._update('clock');\r\n break;\r\n case ActionTypes.showHours:\r\n classToUse = Namespace.css.hourContainer;\r\n this._context._display._update(Unit.hours);\r\n break;\r\n case ActionTypes.showMinutes:\r\n classToUse = Namespace.css.minuteContainer;\r\n this._context._display._update(Unit.minutes);\r\n break;\r\n case ActionTypes.showSeconds:\r\n classToUse = Namespace.css.secondContainer;\r\n this._context._display._update(Unit.seconds);\r\n break;\r\n }\r\n\r\n ((\r\n this._context._display.widget.getElementsByClassName(classToUse)[0]\r\n )).style.display = 'grid';\r\n break;\r\n case ActionTypes.clear:\r\n this._context.dates._setValue(null);\r\n this._context._display._updateCalendarHeader();\r\n break;\r\n case ActionTypes.close:\r\n this._context._display.hide();\r\n break;\r\n case ActionTypes.today:\r\n const today = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n this._context._viewDate = today;\r\n if (this._context._validation.isValid(today, Unit.date))\r\n this._context.dates._setValue(\r\n today,\r\n this._context.dates.lastPickedIndex\r\n );\r\n break;\r\n }\r\n }\r\n}\r\n\r\nexport enum ActionTypes {\r\n next = 'next',\r\n previous = 'previous',\r\n pickerSwitch = 'pickerSwitch',\r\n selectMonth = 'selectMonth',\r\n selectYear = 'selectYear',\r\n selectDecade = 'selectDecade',\r\n selectDay = 'selectDay',\r\n selectHour = 'selectHour',\r\n selectMinute = 'selectMinute',\r\n selectSecond = 'selectSecond',\r\n incrementHours = 'incrementHours',\r\n incrementMinutes = 'incrementMinutes',\r\n incrementSeconds = 'incrementSeconds',\r\n decrementHours = 'decrementHours',\r\n decrementMinutes = 'decrementMinutes',\r\n decrementSeconds = 'decrementSeconds',\r\n toggleMeridiem = 'toggleMeridiem',\r\n togglePicker = 'togglePicker',\r\n showClock = 'showClock',\r\n showHours = 'showHours',\r\n showMinutes = 'showMinutes',\r\n showSeconds = 'showSeconds',\r\n clear = 'clear',\r\n close = 'close',\r\n today = 'today',\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { DateTime, Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `date`\n */\nexport default class DateDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.daysContainer);\n\n container.append(...this._daysOfTheWeek());\n\n if (this._context._options.display.calendarWeeks) {\n const div = document.createElement('div');\n div.classList.add(Namespace.css.calendarWeeks, Namespace.css.noHighlight);\n container.appendChild(div);\n }\n\n for (let i = 0; i < 42; i++) {\n if (i !== 0 && i % 7 === 0) {\n if (this._context._options.display.calendarWeeks) {\n const div = document.createElement('div');\n div.classList.add(\n Namespace.css.calendarWeeks,\n Namespace.css.noHighlight\n );\n container.appendChild(div);\n }\n }\n\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectDay);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.daysContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.daysContainer,\n this._context._viewDate.format({\n month: this._context._options.localization.dayViewHeaderFormat,\n })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.month),\n Unit.month\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.month),\n Unit.month\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone\n .startOf(Unit.month)\n .startOf('weekDay')\n .manipulate(12, Unit.hours);\n\n container\n .querySelectorAll(\n `[data-action=\"${ActionTypes.selectDay}\"], .${Namespace.css.calendarWeeks}`\n )\n .forEach((containerClone: HTMLElement, index) => {\n if (\n this._context._options.display.calendarWeeks &&\n containerClone.classList.contains(Namespace.css.calendarWeeks)\n ) {\n if (containerClone.innerText === '#') return;\n containerClone.innerText = `${innerDate.week}`;\n return;\n }\n\n let classes = [];\n classes.push(Namespace.css.day);\n\n if (innerDate.isBefore(this._context._viewDate, Unit.month)) {\n classes.push(Namespace.css.old);\n }\n if (innerDate.isAfter(this._context._viewDate, Unit.month)) {\n classes.push(Namespace.css.new);\n }\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.date)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.date)) {\n classes.push(Namespace.css.disabled);\n }\n if (innerDate.isSame(new DateTime(), Unit.date)) {\n classes.push(Namespace.css.today);\n }\n if (innerDate.weekDay === 0 || innerDate.weekDay === 6) {\n classes.push(Namespace.css.weekend);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute(\n 'data-value',\n `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`\n );\n containerClone.innerText = `${innerDate.date}`;\n innerDate.manipulate(1, Unit.date);\n });\n }\n\n /***\n * Generates an html row that contains the days of the week.\n * @private\n */\n private _daysOfTheWeek(): HTMLElement[] {\n let innerDate = this._context._viewDate.clone\n .startOf('weekDay')\n .startOf(Unit.date);\n const row = [];\n document.createElement('div');\n\n if (this._context._options.display.calendarWeeks) {\n const htmlDivElement = document.createElement('div');\n htmlDivElement.classList.add(\n Namespace.css.calendarWeeks,\n Namespace.css.noHighlight\n );\n htmlDivElement.innerText = '#';\n row.push(htmlDivElement);\n }\n\n for (let i = 0; i < 7; i++) {\n const htmlDivElement = document.createElement('div');\n htmlDivElement.classList.add(\n Namespace.css.dayOfTheWeek,\n Namespace.css.noHighlight\n );\n htmlDivElement.innerText = innerDate.format({ weekday: 'short' });\n innerDate.manipulate(1, Unit.date);\n row.push(htmlDivElement);\n }\n\n return row;\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `month`\n */\nexport default class MonthDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.monthsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMonth);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.monthsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.monthsContainer,\n this._context._viewDate.format({ year: 'numeric' })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.year),\n Unit.year\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.year),\n Unit.year\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone.startOf(Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMonth}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.month);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.month)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.month)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${index}`);\n containerClone.innerText = `${innerDate.format({ month: 'short' })}`;\n innerDate.manipulate(1, Unit.month);\n });\n }\n}\n","import { DateTime, DateTimeFormatOptions } from './datetime';\nimport Namespace from './namespace';\nimport { DefaultOptions } from './conts';\n\nexport default interface Options {\n restrictions: {\n minDate: DateTime;\n maxDate: DateTime;\n enabledDates: DateTime[];\n disabledDates: DateTime[];\n enabledHours: number[];\n disabledHours: number[];\n disabledTimeIntervals: { from: DateTime; to: DateTime }[];\n daysOfWeekDisabled: number[];\n };\n display: {\n toolbarPlacement: 'top' | 'bottom';\n components: {\n calendar: boolean;\n date: boolean;\n month: boolean;\n year: boolean;\n decades: boolean;\n clock: boolean;\n hours: boolean;\n minutes: boolean;\n seconds: boolean;\n useTwentyfourHour: boolean;\n };\n buttons: { today: boolean; close: boolean; clear: boolean };\n calendarWeeks: boolean;\n icons: {\n date: string;\n next: string;\n previous: string;\n today: string;\n clear: string;\n time: string;\n up: string;\n type: 'icons' | 'sprites';\n down: string;\n close: string;\n };\n viewMode: 'clock' | 'calendar' | 'months' | 'years' | 'decades';\n sideBySide: boolean;\n inputFormat: DateTimeFormatOptions;\n inline: boolean;\n keepOpen: boolean;\n };\n stepping: number;\n useCurrent: boolean;\n defaultDate: DateTime;\n localization: {\n nextMonth: string;\n pickHour: string;\n incrementSecond: string;\n nextDecade: string;\n selectDecade: string;\n dayViewHeaderFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n decrementHour: string;\n selectDate: string;\n incrementHour: string;\n previousCentury: string;\n decrementSecond: string;\n today: string;\n previousMonth: string;\n selectYear: string;\n pickSecond: string;\n nextCentury: string;\n close: string;\n incrementMinute: string;\n selectTime: string;\n clear: string;\n toggleMeridiem: string;\n selectMonth: string;\n decrementMinute: string;\n pickMinute: string;\n nextYear: string;\n previousYear: string;\n previousDecade: string;\n locale: string;\n };\n keepInvalid: boolean;\n debug: boolean;\n allowInputToggle: boolean;\n viewDate: DateTime;\n multipleDates: boolean;\n multipleDatesSeparator: string;\n promptTimeOnDateChange: boolean;\n promptTimeOnDateChangeTransitionDelay: number;\n}\n\nexport class OptionConverter {\n static _mergeOptions(providedOptions: Options, mergeTo: Options): Options {\n const newOptions = {} as Options;\n let path = '';\n\n const processKey = (key, value, providedType, defaultType) => {\n switch (key) {\n case 'defaultDate': {\n const dateTime = this._dateConversion(value, 'defaultDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'defaultDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'viewDate': {\n const dateTime = this._dateConversion(value, 'viewDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'viewDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'minDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.minDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.minDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'maxDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.maxDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.maxDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'disabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.disabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.disabledHours',\n 0,\n 23\n );\n return value;\n case 'enabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.enabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.enabledHours',\n 0,\n 23\n );\n return value;\n case 'daysOfWeekDisabled':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.daysOfWeekDisabled',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 6).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.daysOfWeekDisabled',\n 0,\n 6\n );\n return value;\n case 'enabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.enabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.disabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledTimeIntervals':\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n key,\n providedType,\n 'array of { from: DateTime|Date, to: DateTime|Date }'\n );\n }\n const valueObject = value as { from: any; to: any }[];\n for (let i = 0; i < valueObject.length; i++) {\n Object.keys(valueObject[i]).forEach((vk) => {\n const subOptionName = `${key}[${i}].${vk}`;\n let d = valueObject[i][vk];\n const dateTime = this._dateConversion(d, subOptionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n subOptionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n valueObject[i][vk] = dateTime;\n });\n }\n return valueObject;\n case 'toolbarPlacement':\n case 'type':\n case 'viewMode':\n case 'dayViewHeaderFormat':\n const optionValues = {\n toolbarPlacement: ['top', 'bottom', 'default'],\n type: ['icons', 'sprites'],\n viewMode: ['clock', 'calendar', 'months', 'years', 'decades'],\n dayViewHeaderFormat: [\n 'numeric',\n '2-digit',\n 'long',\n 'short',\n 'narrow',\n ],\n };\n const keyOptions = optionValues[key];\n if (!keyOptions.includes(value))\n Namespace.errorMessages.unexpectedOptionValue(\n path.substring(1),\n value,\n keyOptions\n );\n\n return value;\n case 'inputFormat':\n return value;\n default:\n switch (defaultType) {\n case 'boolean':\n return value === 'true' || value === true;\n case 'number':\n return +value;\n case 'string':\n return value.toString();\n case 'object':\n return {};\n case 'function':\n return value;\n default:\n Namespace.errorMessages.typeMismatch(\n path.substring(1),\n providedType,\n defaultType\n );\n }\n }\n };\n\n /**\n * The spread operator caused sub keys to be missing after merging.\n * This is to fix that issue by using spread on the child objects first.\n * Also handles complex options like disabledDates\n * @param provided An option from new providedOptions\n * @param mergeOption Default option to compare types against\n * @param copyTo Destination object. This was add to prevent reference copies\n */\n const spread = (provided, mergeOption, copyTo) => {\n const unsupportedOptions = Object.keys(provided).filter(\n (x) => !Object.keys(mergeOption).includes(x)\n );\n if (unsupportedOptions.length > 0) {\n const flattenedOptions = OptionConverter._flattenDefaultOptions;\n\n const errors = unsupportedOptions.map((x) => {\n let error = `\"${path.substring(1)}.${x}\" in not a known option.`;\n let didYouMean = flattenedOptions.find((y) => y.includes(x));\n if (didYouMean) error += `Did you mean \"${didYouMean}\"?`;\n return error;\n });\n Namespace.errorMessages.unexpectedOptions(errors);\n }\n Object.keys(mergeOption).forEach((key) => {\n const defaultOptionValue = mergeOption[key];\n let providedType = typeof provided[key];\n let defaultType = typeof defaultOptionValue;\n let value = provided[key];\n if (!provided.hasOwnProperty(key)) {\n if (\n defaultType === 'undefined' ||\n (value?.length === 0 && Array.isArray(defaultOptionValue))\n ) {\n copyTo[key] = defaultOptionValue;\n return;\n }\n provided[key] = defaultOptionValue;\n value = provided[key];\n }\n path += `.${key}`;\n copyTo[key] = processKey(key, value, providedType, defaultType);\n\n if (typeof defaultOptionValue !== 'object' || key === 'inputFormat') {\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n return;\n }\n if (!Array.isArray(provided[key])) {\n spread(provided[key], defaultOptionValue, copyTo[key]);\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n }\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n });\n };\n spread(providedOptions, mergeTo, newOptions);\n\n return newOptions;\n }\n\n static _dataToOptions(element, options: Options): Options {\n const eData = element.dataset;\n if (\n !eData ||\n Object.keys(eData).length === 0 ||\n eData.constructor !== DOMStringMap\n )\n return options;\n let dataOptions = {} as Options;\n\n // because dataset returns camelCase including the 'td' key the option\n // key won't align\n const objectToNormalized = (object) => {\n const lowered = {};\n Object.keys(object).forEach((x) => {\n lowered[x.toLowerCase()] = x;\n });\n\n return lowered;\n };\n\n const rabbitHole = (\n split: string[],\n index: number,\n optionSubgroup: {},\n value: any\n ) => {\n // first round = display { ... }\n const normalizedOptions = objectToNormalized(optionSubgroup);\n\n const keyOption = normalizedOptions[split[index].toLowerCase()];\n const internalObject = {};\n\n if (keyOption === undefined) return internalObject;\n\n // if this is another object, continue down the rabbit hole\n if (optionSubgroup[keyOption].constructor === Object) {\n index++;\n internalObject[keyOption] = rabbitHole(\n split,\n index,\n optionSubgroup[keyOption],\n value\n );\n } else {\n internalObject[keyOption] = value;\n }\n return internalObject;\n };\n const optionsLower = objectToNormalized(options);\n\n Object.keys(eData)\n .filter((x) => x.startsWith(Namespace.dataKey))\n .map((x) => x.substring(2))\n .forEach((key) => {\n let keyOption = optionsLower[key.toLowerCase()];\n\n // dataset merges dashes to camelCase... yay\n // i.e. key = display_components_seconds\n if (key.includes('_')) {\n // [display, components, seconds]\n const split = key.split('_');\n // display\n keyOption = optionsLower[split[0].toLowerCase()];\n if (\n keyOption !== undefined &&\n options[keyOption].constructor === Object\n ) {\n dataOptions[keyOption] = rabbitHole(\n split,\n 1,\n options[keyOption],\n eData[`td${key}`]\n );\n }\n }\n // or key = multipleDate\n else if (keyOption !== undefined) {\n dataOptions[keyOption] = eData[`td${key}`];\n }\n });\n\n return this._mergeOptions(dataOptions, options);\n }\n\n /**\n * Attempts to prove `d` is a DateTime or Date or can be converted into one.\n * @param d If a string will attempt creating a date from it.\n * @private\n */\n static _dateTypeCheck(d: any): DateTime | null {\n if (d.constructor.name === 'DateTime') return d;\n if (d.constructor.name === 'Date') {\n return DateTime.convert(d);\n }\n if (typeof d === typeof '') {\n const dateTime = new DateTime(d);\n if (JSON.stringify(dateTime) === 'null') {\n return null;\n }\n return dateTime;\n }\n return null;\n }\n\n /**\n * Type checks that `value` is an array of Date or DateTime\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckDateArray(optionName: string, value, providedType: string) {\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of DateTime or Date'\n );\n }\n for (let i = 0; i < value.length; i++) {\n let d = value[i];\n const dateTime = this._dateConversion(d, optionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n value[i] = dateTime;\n }\n }\n\n /**\n * Type checks that `value` is an array of numbers\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckNumberArray(\n optionName: string,\n value,\n providedType: string\n ) {\n if (!Array.isArray(value) || value.find((x) => typeof x !== typeof 0)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of numbers'\n );\n }\n return;\n }\n\n /**\n * Attempts to convert `d` to a DateTime object\n * @param d value to convert\n * @param optionName Provides text to error messages e.g. disabledDates\n */\n static _dateConversion(d: any, optionName: string) {\n if (typeof d === typeof '' && optionName !== 'input field') {\n Namespace.errorMessages.dateString();\n }\n\n const converted = this._dateTypeCheck(d);\n\n if (!converted) {\n Namespace.errorMessages.failedToParseDate(optionName, d);\n }\n return converted;\n }\n\n private static _flatback: string[];\n\n private static get _flattenDefaultOptions(): string[] {\n if (this._flatback) return this._flatback;\n const deepKeys = (t, pre = []) =>\n Array.isArray(t)\n ? []\n : Object(t) === t\n ? Object.entries(t).flatMap(([k, v]) => deepKeys(v, [...pre, k]))\n : pre.join('.');\n\n this._flatback = deepKeys(DefaultOptions);\n\n return this._flatback;\n }\n\n /**\n * Some options conflict like min/max date. Verify that these kinds of options\n * are set correctly.\n * @param config\n */\n static _validateConflcits(config: Options) {\n if (config.restrictions.minDate && config.restrictions.maxDate) {\n if (config.restrictions.minDate.isAfter(config.restrictions.maxDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'minDate is after maxDate'\n );\n }\n\n if (config.restrictions.maxDate.isBefore(config.restrictions.minDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'maxDate is before minDate'\n );\n }\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport { ChangeEvent, FailEvent } from './event-types';\nimport { OptionConverter } from './options';\n\nexport default class Dates {\n private _dates: DateTime[] = [];\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Returns the array of selected dates\n */\n get picked(): DateTime[] {\n return this._dates;\n }\n\n /**\n * Returns the last picked value.\n */\n get lastPicked(): DateTime {\n return this._dates[this.lastPickedIndex];\n }\n\n /**\n * Returns the length of picked dates -1 or 0 if none are selected.\n */\n get lastPickedIndex(): number {\n if (this._dates.length === 0) return 0;\n return this._dates.length - 1;\n }\n\n /**\n * Adds a new DateTime to selected dates array\n * @param date\n */\n add(date: DateTime): void {\n this._dates.push(date);\n }\n\n /**\n * Tries to convert the provided value to a DateTime object.\n * If value is null|undefined then clear the value of the provided index (or 0).\n * @param value Value to convert or null|undefined\n * @param index When using multidates this is the index in the array\n * @param from Used in the warning message, useful for debugging.\n */\n set(value: any, index?: number, from: string = 'date.set') {\n if (!value) this._setValue(value, index);\n const converted = OptionConverter._dateConversion(value, 'input field');\n if (converted !== undefined) this._setValue(converted, index);\n else Namespace.errorMessages.failedToParseDate(from, value, true);\n }\n\n /**\n * Returns true if the `targetDate` is part of the selected dates array.\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n isPicked(targetDate: DateTime, unit?: Unit): boolean {\n if (!unit) return this._dates.find((x) => x === targetDate) !== undefined;\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return (\n this._dates\n .map((x) => x.format(format))\n .find((x) => x === innerDateFormatted) !== undefined\n );\n }\n\n /**\n * Returns the index at which `targetDate` is in the array.\n * This is used for updating or removing a date when multi-date is used\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n pickedIndex(targetDate: DateTime, unit?: Unit): number {\n if (!unit) return this._dates.indexOf(targetDate);\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return this._dates.map((x) => x.format(format)).indexOf(innerDateFormatted);\n }\n\n /**\n * Clears all selected dates.\n */\n clear() {\n this._context._unset = true;\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate: this.lastPicked,\n isClear: true,\n isValid: true,\n } as ChangeEvent);\n this._dates = [];\n }\n\n /**\n * Find the \"book end\" years given a `year` and a `factor`\n * @param factor e.g. 100 for decades\n * @param year e.g. 2021\n */\n static getStartEndYear(\n factor: number,\n year: number\n ): [number, number, number] {\n const step = factor / 10,\n startYear = Math.floor(year / factor) * factor,\n endYear = startYear + step * 9,\n focusValue = Math.floor(year / step) * step;\n return [startYear, endYear, focusValue];\n }\n\n /**\n * Do not use direectly. Attempts to either clear or set the `target` date at `index`.\n * If the `target` is null then the date will be cleared.\n * If multi-date is being used then it will be removed from the array.\n * If `target` is valid and multi-date is used then if `index` is\n * provided the date at that index will be replaced, otherwise it is appended.\n * @param target\n * @param index\n */\n _setValue(target?: DateTime, index?: number): void {\n const noIndex = typeof index === 'undefined',\n isClear = !target && noIndex;\n let oldDate = this._context._unset ? null : this._dates[index];\n if (!oldDate && !this._context._unset && noIndex && isClear) {\n oldDate = this.lastPicked;\n }\n\n if (target && oldDate?.isSame(target)) return;\n\n const updateInput = () => {\n if (!this._context._input) return;\n\n let newValue =\n target?.format(this._context._options.display.inputFormat) || '';\n if (this._context._options.multipleDates) {\n newValue = this._dates\n .map((d) => d.format(this._context._options.display.inputFormat))\n .join(this._context._options.multipleDatesSeparator);\n }\n if (this._context._input.value != newValue)\n this._context._input.value = newValue;\n };\n\n // case of calling setValue(null)\n if (!target) {\n if (\n !this._context._options.multipleDates ||\n this._dates.length === 1 ||\n isClear\n ) {\n this._context._unset = true;\n this._dates = [];\n } else {\n this._dates.splice(index, 1);\n }\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n\n updateInput();\n this._context._display._update('all');\n return;\n }\n\n index = index || 0;\n target = target.clone;\n\n // minute stepping is being used, force the minute to the closest value\n if (this._context._options.stepping !== 1) {\n target.minutes =\n Math.round(target.minutes / this._context._options.stepping) *\n this._context._options.stepping;\n target.seconds = 0;\n }\n\n if (this._context._validation.isValid(target)) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._unset = false;\n this._context._display._update('all');\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n return;\n }\n\n if (this._context._options.keepInvalid) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: false,\n } as ChangeEvent);\n }\n this._context._triggerEvent({\n type: Namespace.events.error,\n reason: Namespace.errorMessages.failedToSetInvalidDate,\n date: target,\n oldDate,\n } as FailEvent);\n }\n\n /**\n * Returns a format object based on the granularity of `unit`\n * @param unit\n */\n static getFormatByUnit(unit: Unit): object {\n switch (unit) {\n case 'date':\n return { dateStyle: 'short' };\n case 'month':\n return {\n month: 'numeric',\n year: 'numeric',\n };\n case 'year':\n return { year: 'numeric' };\n }\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { DateTime, Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\nimport Dates from '../../dates';\n\n/**\n * Creates and updates the grid for `year`\n */\nexport default class YearDisplay {\n private _context: TempusDominus;\n private _startYear: DateTime;\n private _endYear: DateTime;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.yearsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectYear);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update() {\n const [start, end] = Dates.getStartEndYear(\n 10,\n this._context._viewDate.year\n );\n this._startYear = this._context._viewDate.clone.manipulate(-1, Unit.year);\n this._endYear = this._context._viewDate.clone.manipulate(10, Unit.year);\n\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.yearsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.yearsContainer,\n `${this._startYear.year}-${this._endYear.year}`\n );\n\n this._context._validation.isValid(this._startYear, Unit.year)\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n this._context._validation.isValid(this._endYear, Unit.year)\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone\n .startOf(Unit.year)\n .manipulate(-1, Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectYear}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.year);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.year)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.year)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.year}`);\n containerClone.innerText = `${innerDate.year}`;\n\n innerDate.manipulate(1, Unit.year);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport Dates from '../../dates';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `seconds`\r\n */\r\nexport default class DecadeDisplay {\r\n private _context: TempusDominus;\r\n private _startDecade: DateTime;\r\n private _endDecade: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker() {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.decadesContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDecade);\r\n container.appendChild(div);\r\n }\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 100,\r\n this._context._viewDate.year\r\n );\r\n this._startDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._startDecade.year = start;\r\n this._endDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._endDecade.year = end;\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.decadesContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.decadesContainer,\r\n `${this._startDecade.year}-${this._endDecade.year}`\r\n );\r\n\r\n this._context._validation.isValid(this._startDecade, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endDecade, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n const pickedYears = this._context.dates.picked.map((x) => x.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectDecade}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (index === 0) {\r\n containerClone.classList.add(Namespace.css.old);\r\n if (this._startDecade.year - 10 < 0) {\r\n containerClone.textContent = ' ';\r\n previous.classList.add(Namespace.css.disabled);\r\n containerClone.classList.add(Namespace.css.disabled);\r\n containerClone.setAttribute('data-value', ``);\r\n return;\r\n } else {\r\n containerClone.innerText = `${this._startDecade.year - 10}`;\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n return;\r\n }\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.decade);\r\n const startDecadeYear = this._startDecade.year;\r\n const endDecadeYear = this._startDecade.year + 9;\r\n\r\n if (\r\n !this._context._unset &&\r\n pickedYears.filter((x) => x >= startDecadeYear && x <= endDecadeYear)\r\n .length > 0\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n containerClone.innerText = `${this._startDecade.year}`;\r\n\r\n this._startDecade.manipulate(10, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates the clock display\n */\nexport default class TimeDisplay {\n private _context: TempusDominus;\n private _gridColumns = '';\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the clock display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.clockContainer);\n\n container.append(...this._grid());\n\n return container;\n }\n\n /**\n * Populates the various elements with in the clock display\n * like the current hour and if the manipulation icons are enabled.\n * @private\n */\n _update(): void {\n const timesDiv = (\n this._context._display.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0]\n );\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n timesDiv\n .querySelectorAll('.disabled')\n .forEach((element) => element.classList.remove(Namespace.css.disabled));\n\n if (this._context._options.display.components.hours) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.hours}]`\n ).innerText = this._context._options.display.components.useTwentyfourHour\n ? lastPicked.hoursFormatted\n : lastPicked.twelveHoursFormatted;\n }\n\n if (this._context._options.display.components.minutes) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.minutes}]`\n ).innerText = lastPicked.minutesFormatted;\n }\n\n if (this._context._options.display.components.seconds) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.seconds}]`\n ).innerText = lastPicked.secondsFormatted;\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n const toggle = timesDiv.querySelector(\n `[data-action=${ActionTypes.toggleMeridiem}]`\n );\n\n toggle.innerText = lastPicked.meridiem();\n\n if (\n !this._context._validation.isValid(\n lastPicked.clone.manipulate(\n lastPicked.hours >= 12 ? -12 : 12,\n Unit.hours\n )\n )\n ) {\n toggle.classList.add(Namespace.css.disabled);\n } else {\n toggle.classList.remove(Namespace.css.disabled);\n }\n }\n\n timesDiv.style.gridTemplateAreas = `\"${this._gridColumns}\"`;\n }\n\n /**\n * Creates the table for the clock display depending on what options are selected.\n * @private\n */\n private _grid(): HTMLElement[] {\n this._gridColumns = '';\n const top = [],\n middle = [],\n bottom = [],\n separator = document.createElement('div'),\n upIcon = this._context._display._iconTag(\n this._context._options.display.icons.up\n ),\n downIcon = this._context._display._iconTag(\n this._context._options.display.icons.down\n );\n\n separator.classList.add(Namespace.css.separator, Namespace.css.noHighlight);\n const separatorColon = separator.cloneNode(true);\n separatorColon.innerHTML = ':';\n\n const getSeparator = (colon = false): HTMLElement => {\n return colon\n ? separatorColon.cloneNode(true)\n : separator.cloneNode(true);\n };\n\n if (this._context._options.display.components.hours) {\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.incrementHours);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickHour\n );\n divElement.setAttribute('data-action', ActionTypes.showHours);\n divElement.setAttribute('data-time-component', Unit.hours);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.decrementHours);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n this._gridColumns += 'a';\n }\n\n if (this._context._options.display.components.minutes) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.hours) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.incrementMinutes);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickMinute\n );\n divElement.setAttribute('data-action', ActionTypes.showMinutes);\n divElement.setAttribute('data-time-component', Unit.minutes);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.decrementMinutes);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (this._context._options.display.components.seconds) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.minutes) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.incrementSeconds);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickSecond\n );\n divElement.setAttribute('data-action', ActionTypes.showSeconds);\n divElement.setAttribute('data-time-component', Unit.seconds);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.decrementSeconds);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n this._gridColumns += ' a';\n let divElement = getSeparator();\n top.push(divElement);\n\n let button = document.createElement('button');\n button.setAttribute(\n 'title',\n this._context._options.localization.toggleMeridiem\n );\n button.setAttribute('data-action', ActionTypes.toggleMeridiem);\n button.setAttribute('tabindex', '-1');\n button.classList.add(Namespace.css.toggleMeridiem);\n\n divElement = document.createElement('div');\n divElement.classList.add(Namespace.css.noHighlight);\n divElement.appendChild(button);\n middle.push(divElement);\n\n divElement = getSeparator();\n bottom.push(divElement);\n }\n\n this._gridColumns = this._gridColumns.trim();\n\n return [...top, ...middle, ...bottom];\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `hours`\n */\nexport default class HourDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.hourContainer);\n\n for (\n let i = 0;\n i <\n (this._context._options.display.components.useTwentyfourHour ? 24 : 12);\n i++\n ) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectHour);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.hourContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.date);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectHour}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.hour);\n\n if (!this._context._validation.isValid(innerDate, Unit.hours)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.hours}`);\n containerClone.innerText = this._context._options.display.components\n .useTwentyfourHour\n ? innerDate.hoursFormatted\n : innerDate.twelveHoursFormatted;\n innerDate.manipulate(1, Unit.hours);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `minutes`\n */\nexport default class MinuteDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.minuteContainer);\n\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n for (let i = 0; i < 60 / step; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMinute);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.minuteContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.hours);\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMinute}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.minute);\n\n if (!this._context._validation.isValid(innerDate, Unit.minutes)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.minutes}`);\n containerClone.innerText = innerDate.minutesFormatted;\n innerDate.manipulate(step, Unit.minutes);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class secondDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.secondContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectSecond);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.secondContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.minutes);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectSecond}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.second);\n\n if (!this._context._validation.isValid(innerDate, Unit.seconds)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.seconds}`);\n containerClone.innerText = innerDate.secondsFormatted;\n innerDate.manipulate(5, Unit.seconds);\n });\n }\n}\n","import DateDisplay from './calendar/date-display';\r\nimport MonthDisplay from './calendar/month-display';\r\nimport YearDisplay from './calendar/year-display';\r\nimport DecadeDisplay from './calendar/decade-display';\r\nimport TimeDisplay from './time/time-display';\r\nimport HourDisplay from './time/hour-display';\r\nimport MinuteDisplay from './time/minute-display';\r\nimport SecondDisplay from './time/second-display';\r\nimport { DateTime, Unit } from '../datetime';\r\nimport { DatePickerModes } from '../conts';\r\nimport { TempusDominus } from '../tempus-dominus';\r\nimport { ActionTypes } from '../actions';\r\nimport { createPopper } from '@popperjs/core';\r\nimport Namespace from '../namespace';\r\nimport { HideEvent } from '../event-types';\r\n\r\n/**\r\n * Main class for all things display related.\r\n */\r\nexport default class Display {\r\n private _context: TempusDominus;\r\n private _dateDisplay: DateDisplay;\r\n private _monthDisplay: MonthDisplay;\r\n private _yearDisplay: YearDisplay;\r\n private _decadeDisplay: DecadeDisplay;\r\n private _timeDisplay: TimeDisplay;\r\n private _widget: HTMLElement;\r\n private _hourDisplay: HourDisplay;\r\n private _minuteDisplay: MinuteDisplay;\r\n private _secondDisplay: SecondDisplay;\r\n private _popperInstance: any;\r\n private _isVisible = false;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this._dateDisplay = new DateDisplay(context);\r\n this._monthDisplay = new MonthDisplay(context);\r\n this._yearDisplay = new YearDisplay(context);\r\n this._decadeDisplay = new DecadeDisplay(context);\r\n this._timeDisplay = new TimeDisplay(context);\r\n this._hourDisplay = new HourDisplay(context);\r\n this._minuteDisplay = new MinuteDisplay(context);\r\n this._secondDisplay = new SecondDisplay(context);\r\n\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Returns the widget body or undefined\r\n * @private\r\n */\r\n get widget(): HTMLElement | undefined {\r\n return this._widget;\r\n }\r\n\r\n /**\r\n * Returns this visible state of the picker (shown)\r\n */\r\n get isVisible() {\r\n return this._isVisible;\r\n }\r\n\r\n /**\r\n * Updates the table for a particular unit. Used when an option as changed or\r\n * whenever the class list might need to be refreshed.\r\n * @param unit\r\n * @private\r\n */\r\n _update(unit: Unit | 'clock' | 'calendar' | 'all'): void {\r\n if (!this.widget) return;\r\n //todo do I want some kind of error catching or other guards here?\r\n switch (unit) {\r\n case Unit.seconds:\r\n this._secondDisplay._update();\r\n break;\r\n case Unit.minutes:\r\n this._minuteDisplay._update();\r\n break;\r\n case Unit.hours:\r\n this._hourDisplay._update();\r\n break;\r\n case Unit.date:\r\n this._dateDisplay._update();\r\n break;\r\n case Unit.month:\r\n this._monthDisplay._update();\r\n break;\r\n case Unit.year:\r\n this._yearDisplay._update();\r\n break;\r\n case 'clock':\r\n this._timeDisplay._update();\r\n this._update(Unit.hours);\r\n this._update(Unit.minutes);\r\n this._update(Unit.seconds);\r\n break;\r\n case 'calendar':\r\n this._update(Unit.date);\r\n this._update(Unit.year);\r\n this._update(Unit.month);\r\n this._decadeDisplay._update();\r\n this._updateCalendarHeader();\r\n break;\r\n case 'all':\r\n if (this._hasTime) {\r\n this._update('clock');\r\n }\r\n if (this._hasDate) {\r\n this._update('calendar');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Shows the picker and creates a Popper instance if needed.\r\n * Add document click event to hide when clicking outside the picker.\r\n * @fires Events#show\r\n */\r\n show(): void {\r\n if (this.widget == undefined) {\r\n if (\r\n this._context._options.useCurrent &&\r\n !this._context._options.defaultDate &&\r\n !this._context._input?.value\r\n ) {\r\n //todo in the td4 branch a pr changed this to allow granularity\r\n const date = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n if (!this._context._options.keepInvalid) {\r\n let tries = 0;\r\n let direction = 1;\r\n if (this._context._options.restrictions.maxDate?.isBefore(date)) {\r\n direction = -1;\r\n }\r\n while (!this._context._validation.isValid(date)) {\r\n date.manipulate(direction, Unit.date);\r\n if (tries > 31) break;\r\n tries++;\r\n }\r\n }\r\n this._context.dates._setValue(date);\r\n }\r\n\r\n if (this._context._options.defaultDate) {\r\n this._context.dates._setValue(this._context._options.defaultDate);\r\n }\r\n\r\n this._buildWidget();\r\n if (this._hasDate) {\r\n this._showMode();\r\n }\r\n\r\n if (!this._context._options.display.inline) {\r\n document.body.appendChild(this.widget);\r\n\r\n this._popperInstance = createPopper(\r\n this._context._element,\r\n this.widget,\r\n {\r\n modifiers: [\r\n /* {\r\n name: 'offset',\r\n options: {\r\n offset: [2, 8],\r\n },\r\n },*/\r\n { name: 'eventListeners', enabled: true },\r\n ],\r\n placement: 'bottom-start',\r\n }\r\n );\r\n } else {\r\n this._context._element.appendChild(this.widget);\r\n }\r\n\r\n if (this._context._options.display.viewMode == 'clock') {\r\n this._context._action.do(\r\n {\r\n currentTarget: this.widget.querySelector(\r\n `.${Namespace.css.timeContainer}`\r\n ),\r\n },\r\n ActionTypes.showClock\r\n );\r\n }\r\n\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.addEventListener('click', this._actionsClickEvent)\r\n );\r\n\r\n // show the clock when using sideBySide\r\n if (this._context._options.display.sideBySide) {\r\n this._timeDisplay._update();\r\n (\r\n this.widget.getElementsByClassName(\r\n Namespace.css.clockContainer\r\n )[0] as HTMLElement\r\n ).style.display = 'grid';\r\n }\r\n }\r\n\r\n this.widget.classList.add(Namespace.css.show);\r\n if (!this._context._options.display.inline) {\r\n this._popperInstance.update();\r\n document.addEventListener('click', this._documentClickEvent);\r\n }\r\n this._context._triggerEvent({ type: Namespace.events.show });\r\n this._isVisible = true;\r\n }\r\n\r\n /**\r\n * Changes the calendar view mode. E.g. month <-> year\r\n * @param direction -/+ number to move currentViewMode\r\n * @private\r\n */\r\n _showMode(direction?: number): void {\r\n if (!this.widget) {\r\n return;\r\n }\r\n if (direction) {\r\n const max = Math.max(\r\n this._context._minViewModeNumber,\r\n Math.min(3, this._context._currentViewMode + direction)\r\n );\r\n if (this._context._currentViewMode == max) return;\r\n this._context._currentViewMode = max;\r\n }\r\n\r\n this.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div`\r\n )\r\n .forEach((e: HTMLElement) => (e.style.display = 'none'));\r\n\r\n const datePickerMode = DatePickerModes[this._context._currentViewMode];\r\n let picker: HTMLElement = this.widget.querySelector(\r\n `.${datePickerMode.className}`\r\n );\r\n\r\n switch (datePickerMode.className) {\r\n case Namespace.css.decadesContainer:\r\n this._decadeDisplay._update();\r\n break;\r\n case Namespace.css.yearsContainer:\r\n this._yearDisplay._update();\r\n break;\r\n case Namespace.css.monthsContainer:\r\n this._monthDisplay._update();\r\n break;\r\n case Namespace.css.daysContainer:\r\n this._dateDisplay._update();\r\n break;\r\n }\r\n\r\n picker.style.display = 'grid';\r\n this._updateCalendarHeader();\r\n }\r\n\r\n _updateCalendarHeader() {\r\n const showing = [\r\n ...this.widget.querySelector(\r\n `.${Namespace.css.dateContainer} div[style*=\"display: grid\"]`\r\n ).classList,\r\n ].find((x) => x.startsWith(Namespace.css.dateContainer));\r\n\r\n const [previous, switcher, next] = this._context._display.widget\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switch (showing) {\r\n case Namespace.css.decadesContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousCentury\r\n );\r\n switcher.setAttribute('title', '');\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextCentury\r\n );\r\n break;\r\n case Namespace.css.yearsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousDecade\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDecade\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextDecade\r\n );\r\n break;\r\n case Namespace.css.monthsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousYear\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectYear\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextYear\r\n );\r\n break;\r\n case Namespace.css.daysContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousMonth\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectMonth\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextMonth\r\n );\r\n switcher.innerText = this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n });\r\n break;\r\n }\r\n switcher.innerText = switcher.getAttribute(showing);\r\n }\r\n\r\n /**\r\n * Hides the picker if needed.\r\n * Remove document click event to hide when clicking outside the picker.\r\n * @fires Events#hide\r\n */\r\n hide(): void {\r\n if (!this.widget || !this._isVisible) return;\r\n\r\n this.widget.classList.remove(Namespace.css.show);\r\n\r\n if (this._isVisible) {\r\n this._context._triggerEvent({\r\n type: Namespace.events.hide,\r\n date: this._context._unset\r\n ? null\r\n : this._context.dates.lastPicked\r\n ? this._context.dates.lastPicked.clone\r\n : void 0,\r\n } as HideEvent);\r\n this._isVisible = false;\r\n }\r\n\r\n document.removeEventListener('click', this._documentClickEvent);\r\n }\r\n\r\n /**\r\n * Toggles the picker's open state. Fires a show/hide event depending.\r\n */\r\n toggle() {\r\n return this._isVisible ? this.hide() : this.show();\r\n }\r\n\r\n /**\r\n * Removes document and data-action click listener and reset the widget\r\n * @private\r\n */\r\n _dispose() {\r\n document.removeEventListener('click', this._documentClickEvent);\r\n if (!this.widget) return;\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.removeEventListener('click', this._actionsClickEvent)\r\n );\r\n this.widget.parentNode.removeChild(this.widget);\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Builds the widgets html template.\r\n * @private\r\n */\r\n private _buildWidget(): HTMLElement {\r\n const template = document.createElement('div');\r\n template.classList.add(Namespace.css.widget);\r\n\r\n const dateView = document.createElement('div');\r\n dateView.classList.add(Namespace.css.dateContainer);\r\n dateView.append(\r\n this._headTemplate,\r\n this._decadeDisplay._picker,\r\n this._yearDisplay._picker,\r\n this._monthDisplay._picker,\r\n this._dateDisplay._picker\r\n );\r\n\r\n const timeView = document.createElement('div');\r\n timeView.classList.add(Namespace.css.timeContainer);\r\n timeView.appendChild(this._timeDisplay._picker);\r\n timeView.appendChild(this._hourDisplay._picker);\r\n timeView.appendChild(this._minuteDisplay._picker);\r\n timeView.appendChild(this._secondDisplay._picker);\r\n\r\n const toolbar = document.createElement('div');\r\n toolbar.classList.add(Namespace.css.toolbar);\r\n toolbar.append(...this._toolbar);\r\n\r\n if (this._context._options.display.inline) {\r\n template.classList.add(Namespace.css.inline);\r\n }\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n template.classList.add('calendarWeeks');\r\n }\r\n\r\n if (\r\n this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n template.classList.add(Namespace.css.sideBySide);\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n const row = document.createElement('div');\r\n row.classList.add('td-row');\r\n dateView.classList.add('td-half');\r\n timeView.classList.add('td-half');\r\n\r\n row.appendChild(dateView);\r\n row.appendChild(timeView);\r\n template.appendChild(row);\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n this._widget = template;\r\n return;\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n if (this._hasDate) {\r\n if (this._hasTime) {\r\n dateView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode !== 'clock')\r\n dateView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(dateView);\r\n }\r\n\r\n if (this._hasTime) {\r\n if (this._hasDate) {\r\n timeView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode === 'clock')\r\n timeView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(timeView);\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n const arrow = document.createElement('div');\r\n arrow.classList.add('arrow');\r\n arrow.setAttribute('data-popper-arrow', '');\r\n template.appendChild(arrow);\r\n\r\n this._widget = template;\r\n }\r\n\r\n /**\r\n * Returns true if the hours, minutes, or seconds component is turned on\r\n */\r\n get _hasTime(): boolean {\r\n return (\r\n this._context._options.display.components.clock &&\r\n (this._context._options.display.components.hours ||\r\n this._context._options.display.components.minutes ||\r\n this._context._options.display.components.seconds)\r\n );\r\n }\r\n\r\n /**\r\n * Returns true if the year, month, or date component is turned on\r\n */\r\n get _hasDate(): boolean {\r\n return (\r\n this._context._options.display.components.calendar &&\r\n (this._context._options.display.components.year ||\r\n this._context._options.display.components.month ||\r\n this._context._options.display.components.date)\r\n );\r\n }\r\n\r\n /**\r\n * Get the toolbar html based on options like buttons.today\r\n * @private\r\n */\r\n get _toolbar(): HTMLElement[] {\r\n const toolbar = [];\r\n\r\n if (this._context._options.display.buttons.today) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.today);\r\n div.setAttribute('title', this._context._options.localization.today);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.today)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (\r\n !this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n let title, icon;\r\n if (this._context._options.display.viewMode === 'clock') {\r\n title = this._context._options.localization.selectDate;\r\n icon = this._context._options.display.icons.date;\r\n } else {\r\n title = this._context._options.localization.selectTime;\r\n icon = this._context._options.display.icons.time;\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.togglePicker);\r\n div.setAttribute('title', title);\r\n\r\n div.appendChild(this._iconTag(icon));\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.clear) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.clear);\r\n div.setAttribute('title', this._context._options.localization.clear);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.clear)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.close) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.close);\r\n div.setAttribute('title', this._context._options.localization.close);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.close)\r\n );\r\n toolbar.push(div);\r\n }\r\n\r\n return toolbar;\r\n }\r\n\r\n /***\r\n * Builds the base header template with next and previous icons\r\n * @private\r\n */\r\n get _headTemplate(): HTMLElement {\r\n const calendarHeader = document.createElement('div');\r\n calendarHeader.classList.add(Namespace.css.calendarHeader);\r\n\r\n const previous = document.createElement('div');\r\n previous.classList.add(Namespace.css.previous);\r\n previous.setAttribute('data-action', ActionTypes.previous);\r\n previous.appendChild(\r\n this._iconTag(this._context._options.display.icons.previous)\r\n );\r\n\r\n const switcher = document.createElement('div');\r\n switcher.classList.add(Namespace.css.switch);\r\n switcher.setAttribute('data-action', ActionTypes.pickerSwitch);\r\n\r\n const next = document.createElement('div');\r\n next.classList.add(Namespace.css.next);\r\n next.setAttribute('data-action', ActionTypes.next);\r\n next.appendChild(this._iconTag(this._context._options.display.icons.next));\r\n\r\n calendarHeader.append(previous, switcher, next);\r\n return calendarHeader;\r\n }\r\n\r\n /**\r\n * Builds an icon tag as either an ``\r\n * or with icons.type is `sprites` then an svg tag instead\r\n * @param iconClass\r\n * @private\r\n */\r\n _iconTag(iconClass: string): HTMLElement {\r\n if (this._context._options.display.icons.type === 'sprites') {\r\n const svg = document.createElement('svg');\r\n svg.innerHTML = ``;\r\n return svg;\r\n }\r\n const icon = document.createElement('i');\r\n DOMTokenList.prototype.add.apply(icon.classList, iconClass.split(' '));\r\n return icon;\r\n }\r\n\r\n /**\r\n * A document click event to hide the widget if click is outside\r\n * @private\r\n * @param e MouseEvent\r\n */\r\n private _documentClickEvent = (e: MouseEvent) => {\r\n if (\r\n this._isVisible &&\r\n !e.composedPath().includes(this.widget) && // click inside the widget\r\n !e.composedPath()?.includes(this._context._element) && // click on the element\r\n (!this._context._options.display.keepOpen ||\r\n !this._context._options.debug ||\r\n !(window as any).debug)\r\n ) {\r\n this.hide();\r\n }\r\n };\r\n\r\n /**\r\n * Click event for any action like selecting a date\r\n * @param e MouseEvent\r\n * @private\r\n */\r\n private _actionsClickEvent = (e: MouseEvent) => {\r\n this._context._action.do(e);\r\n };\r\n\r\n /**\r\n * Causes the widget to get rebuilt on next show. If the picker is already open\r\n * then hide and reshow it.\r\n * @private\r\n */\r\n _rebuild() {\r\n const wasVisible = this._isVisible;\r\n if (wasVisible) this.hide();\r\n this._dispose();\r\n if (wasVisible) {\r\n this.show();\r\n }\r\n }\r\n}\r\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Dates from './dates';\n\n/**\n * Main class for date validation rules based on the options provided.\n */\nexport default class Validation {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Checks to see if the target date is valid based on the rules provided in the options.\n * Granularity can be provide to chek portions of the date instead of the whole.\n * @param targetDate\n * @param granularity\n */\n isValid(targetDate: DateTime, granularity?: Unit): boolean {\n if (\n this._context._options.restrictions.disabledDates.length > 0 &&\n this._isInDisabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledDates.length > 0 &&\n !this._isInEnabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.daysOfWeekDisabled?.length > 0 &&\n this._context._options.restrictions.daysOfWeekDisabled.indexOf(\n targetDate.weekDay\n ) !== -1\n ) {\n return false;\n }\n\n if (\n this._context._options.restrictions.minDate &&\n targetDate.isBefore(\n this._context._options.restrictions.minDate,\n granularity\n )\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.maxDate &&\n targetDate.isAfter(\n this._context._options.restrictions.maxDate,\n granularity\n )\n ) {\n return false;\n }\n\n if (\n granularity === Unit.hours ||\n granularity === Unit.minutes ||\n granularity === Unit.seconds\n ) {\n if (\n this._context._options.restrictions.disabledHours.length > 0 &&\n this._isInDisabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledHours.length > 0 &&\n !this._isInEnabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.disabledTimeIntervals.length > 0\n ) {\n for (\n let i = 0;\n i < this._context._options.restrictions.disabledTimeIntervals.length;\n i++\n ) {\n if (\n targetDate.isBetween(\n this._context._options.restrictions.disabledTimeIntervals[i].from,\n this._context._options.restrictions.disabledTimeIntervals[i].to\n )\n )\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Checks to see if the disabledDates option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInDisabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledDates ||\n this._context._options.restrictions.disabledDates.length === 0\n )\n return false;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.disabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the enabledDates option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInEnabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledDates ||\n this._context._options.restrictions.enabledDates.length === 0\n )\n return true;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.enabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the disabledHours option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInDisabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledHours ||\n this._context._options.restrictions.disabledHours.length === 0\n )\n return false;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.disabledHours.find(\n (x) => x === formattedDate\n );\n }\n\n /**\n * Checks to see if the enabledHours option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInEnabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledHours ||\n this._context._options.restrictions.enabledHours.length === 0\n )\n return true;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.enabledHours.find(\n (x) => x === formattedDate\n );\n }\n}\n","import Display from './display/index';\nimport Validation from './validation';\nimport Dates from './dates';\nimport Actions, { ActionTypes } from './actions';\nimport { DatePickerModes, DefaultOptions } from './conts';\nimport { DateTime, DateTimeFormatOptions, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options, { OptionConverter } from './options';\nimport {\n BaseEvent,\n ChangeEvent,\n ViewUpdateEvent,\n FailEvent,\n} from './event-types';\n\n/**\n * A robust and powerful date/time picker component.\n */\nclass TempusDominus {\n dates: Dates;\n\n _options: Options;\n _currentViewMode = 0;\n _subscribers: { [key: string]: ((event: any) => {})[] } = {};\n _element: HTMLElement;\n _input: HTMLInputElement;\n _unset: boolean;\n _minViewModeNumber = 0;\n _display: Display;\n _validation: Validation;\n _action: Actions;\n private _isDisabled = false;\n private _notifyChangeEventContext = 0;\n private _toggle: HTMLElement;\n private _currentPromptTimeTimeout: any;\n\n constructor(element: HTMLElement, options: Options = {} as Options) {\n if (!element) {\n Namespace.errorMessages.mustProvideElement;\n }\n this._element = element;\n this._options = this._initializeOptions(options, DefaultOptions, true);\n this._viewDate.setLocale(this._options.localization.locale);\n this._unset = true;\n\n this._display = new Display(this);\n this._validation = new Validation(this);\n this.dates = new Dates(this);\n this._action = new Actions(this);\n\n this._initializeInput();\n this._initializeToggle();\n\n if (this._options.display.inline) this._display.show();\n }\n\n _viewDate = new DateTime();\n\n get viewDate() {\n return this._viewDate;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Update the picker options. If `reset` is provide `options` will be merged with DefaultOptions instead.\n * @param options\n * @param reset\n * @public\n */\n updateOptions(options, reset = false): void {\n if (reset) this._options = this._initializeOptions(options, DefaultOptions);\n else this._options = this._initializeOptions(options, this._options);\n this._display._rebuild();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Toggles the picker open or closed. If the picker is disabled, nothing will happen.\n * @public\n */\n toggle(): void {\n if (this._isDisabled) return;\n this._display.toggle();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Shows the picker unless the picker is disabled.\n * @public\n */\n show(): void {\n if (this._isDisabled) return;\n this._display.show();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker unless the picker is disabled.\n * @public\n */\n hide(): void {\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Disables the picker and the target input field.\n * @public\n */\n disable(): void {\n this._isDisabled = true;\n // todo this might be undesired. If a dev disables the input field to\n // only allow using the picker, this will break that.\n this._input?.setAttribute('disabled', 'disabled');\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Enables the picker and the target input field.\n * @public\n */\n enable(): void {\n this._isDisabled = false;\n this._input?.removeAttribute('disabled');\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Clears all the selected dates\n * @public\n */\n clear(): void {\n this.dates.clear();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Allows for a direct subscription to picker events, without having to use addEventListener on the element.\n * @param eventTypes See Namespace.Events\n * @param callbacks Function to call when event is triggered\n * @public\n */\n subscribe(\n eventTypes: string | string[],\n callbacks: (event: any) => void | ((event: any) => void)[]\n ): { unsubscribe: void }[] {\n if (typeof eventTypes === 'string') {\n eventTypes = [eventTypes];\n }\n let callBackArray = [];\n if (!Array.isArray(callbacks)) {\n callBackArray = [callbacks];\n } else {\n callBackArray = callbacks;\n }\n\n if (eventTypes.length !== callBackArray.length) {\n Namespace.errorMessages.subscribeMismatch;\n }\n\n const returnArray = [];\n\n for (let i = 0; i < eventTypes.length; i++) {\n const eventType = eventTypes[i];\n if (!Array.isArray(this._subscribers[eventType])) {\n this._subscribers[eventType] = [];\n }\n\n this._subscribers[eventType].push(callBackArray[i]);\n\n returnArray.push({\n unsubscribe: this._unsubscribe.bind(\n this,\n eventType,\n this._subscribers[eventType].length - 1\n ),\n });\n\n if (eventTypes.length === 1) {\n return returnArray[0];\n }\n }\n\n return returnArray;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker and removes event listeners\n */\n dispose() {\n this._display.hide();\n // this will clear the document click event listener\n this._display._dispose();\n this._input?.removeEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input?.removeEventListener('click', this._toggleClickEvent);\n }\n this._toggle.removeEventListener('click', this._toggleClickEvent);\n this._subscribers = {};\n }\n\n /**\n * Triggers an event like ChangeEvent when the picker has updated the value\n * of a selected date.\n * @param event Accepts a BaseEvent object.\n * @private\n */\n _triggerEvent(event: BaseEvent) {\n // checking hasOwnProperty because the BasicEvent also falls through here otherwise\n if ((event as ChangeEvent) && event.hasOwnProperty('date')) {\n const { date, oldDate, isClear } = event as ChangeEvent;\n // this was to prevent a max call stack error\n // https://github.com/tempusdominus/core/commit/15a280507f5277b31b0b3319ab1edc7c19a000fb\n // todo see if this is still needed or if there's a cleaner way\n this._notifyChangeEventContext++;\n if (\n (date && oldDate && date.isSame(oldDate)) ||\n (!isClear && !date && !oldDate) ||\n this._notifyChangeEventContext > 1\n ) {\n this._notifyChangeEventContext = 0;\n return;\n }\n this._handleAfterChangeEvent(event as ChangeEvent);\n }\n\n this._element.dispatchEvent(\n new CustomEvent(event.type, { detail: event as any })\n );\n\n if ((window as any).jQuery) {\n const $ = (window as any).jQuery;\n $(this._element).trigger(event);\n }\n\n const publish = () => {\n // return if event is not subscribed\n if (!Array.isArray(this._subscribers[event.type])) {\n return;\n }\n\n // Trigger callback for each subscriber\n this._subscribers[event.type].forEach((callback) => {\n callback(event);\n });\n };\n\n publish();\n\n this._notifyChangeEventContext = 0;\n }\n\n /**\n * Fires a ViewUpdate event when, for example, the month view is changed.\n * @param {Unit} unit\n * @private\n */\n _viewUpdate(unit: Unit) {\n this._triggerEvent({\n type: Namespace.events.update,\n change: unit,\n viewDate: this._viewDate.clone,\n } as ViewUpdateEvent);\n }\n\n private _unsubscribe(eventName, index) {\n this._subscribers[eventName].splice(index, 1);\n }\n\n /**\n * Merges two Option objects together and validates options type\n * @param config new Options\n * @param mergeTo Options to merge into\n * @param includeDataset When true, the elements data-td attributes will be included in the\n * @private\n */\n private _initializeOptions(\n config: Options,\n mergeTo: Options,\n includeDataset = false\n ): Options {\n config = OptionConverter._mergeOptions(config, mergeTo);\n if (includeDataset)\n config = OptionConverter._dataToOptions(this._element, config);\n\n OptionConverter._validateConflcits(config);\n\n config.viewDate = config.viewDate.setLocale(config.localization.locale);\n\n if (!this._viewDate.isSame(config.viewDate)) {\n this._viewDate = config.viewDate;\n }\n\n /**\n * Sets the minimum view allowed by the picker. For example the case of only\n * allowing year and month to be selected but not date.\n */\n if (config.display.components.year) {\n this._minViewModeNumber = 2;\n }\n if (config.display.components.month) {\n this._minViewModeNumber = 1;\n }\n if (config.display.components.date) {\n this._minViewModeNumber = 0;\n }\n\n this._currentViewMode = Math.max(\n this._minViewModeNumber,\n this._currentViewMode\n );\n\n // Update view mode if needed\n if (\n DatePickerModes[this._currentViewMode].name !== config.display.viewMode\n ) {\n this._currentViewMode = Math.max(\n DatePickerModes.findIndex((x) => x.name === config.display.viewMode),\n this._minViewModeNumber\n );\n }\n\n // defaults the input format based on the components enabled\n if (config.display.inputFormat === undefined) {\n const components = config.display.components;\n config.display.inputFormat = {\n year: components.calendar && components.year ? 'numeric' : undefined,\n month: components.calendar && components.month ? '2-digit' : undefined,\n day: components.calendar && components.date ? '2-digit' : undefined,\n hour:\n components.clock && components.hours\n ? components.useTwentyfourHour\n ? '2-digit'\n : 'numeric'\n : undefined,\n minute: components.clock && components.minutes ? '2-digit' : undefined,\n second: components.clock && components.seconds ? '2-digit' : undefined,\n hour12: !components.useTwentyfourHour,\n };\n }\n\n if (this._display?.isVisible) {\n this._display._update('all');\n }\n\n return config;\n }\n\n /**\n * Checks if an input field is being used, attempts to locate one and sets an\n * event listener if found.\n * @private\n */\n private _initializeInput() {\n if (this._element.tagName == 'INPUT') {\n this._input = this._element as HTMLInputElement;\n } else {\n let query = this._element.dataset.tdTargetInput;\n if (query == undefined || query == 'nearest') {\n this._input = this._element.querySelector('input');\n } else {\n this._input = this._element.querySelector(query);\n }\n }\n\n if (!this._input) return;\n\n this._input.addEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input.addEventListener('click', this._toggleClickEvent);\n }\n\n if (this._input.value) {\n this._inputChangeEvent();\n }\n }\n\n /**\n * Attempts to locate a toggle for the picker and sets an event listener\n * @private\n */\n private _initializeToggle() {\n if (this._options.display.inline) return;\n let query = this._element.dataset.tdTargetToggle;\n if (query == 'nearest') {\n query = '[data-td-toggle=\"datetimepicker\"]';\n }\n this._toggle =\n query == undefined ? this._element : this._element.querySelector(query);\n this._toggle.addEventListener('click', this._toggleClickEvent);\n }\n\n /**\n * If the option is enabled this will render the clock view after a date pick.\n * @param e change event\n * @private\n */\n private _handleAfterChangeEvent(e: ChangeEvent) {\n if (\n // options is disabled\n !this._options.promptTimeOnDateChange ||\n this._options.display.inline ||\n this._options.display.sideBySide ||\n // time is disabled\n !this._display._hasTime ||\n // clock component is already showing\n this._display.widget\n ?.getElementsByClassName(Namespace.css.show)[0]\n .classList.contains(Namespace.css.timeContainer)\n )\n return;\n\n // First time ever. If useCurrent option is set to true (default), do nothing\n // because the first date is selected automatically.\n // or date didn't change (time did) or date changed because time did.\n if (\n (!e.oldDate && this._options.useCurrent) ||\n (e.oldDate && e.date?.isSame(e.oldDate))\n ) {\n return;\n }\n\n clearTimeout(this._currentPromptTimeTimeout);\n this._currentPromptTimeTimeout = setTimeout(() => {\n if (this._display.widget) {\n this._action.do(\n {\n currentTarget: this._display.widget.querySelector(\n `.${Namespace.css.switch} div`\n ),\n },\n ActionTypes.togglePicker\n );\n }\n }, this._options.promptTimeOnDateChangeTransitionDelay);\n }\n\n /**\n * Event for when the input field changes. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _inputChangeEvent = () => {\n const value = this._input.value;\n if (this._options.multipleDates) {\n try {\n const valueSplit = value.split(this._options.multipleDatesSeparator);\n for (let i = 0; i < valueSplit.length; i++) {\n this.dates.set(valueSplit[i], i, 'input');\n }\n } catch {\n console.warn(\n 'TD: Something went wrong trying to set the multidate values from the input field.'\n );\n }\n } else {\n this.dates.set(value, 0, 'input');\n }\n };\n\n /**\n * Event for when the toggle is clicked. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _toggleClickEvent = () => {\n this.toggle();\n };\n}\n\nexport {\n TempusDominus,\n Namespace,\n DefaultOptions,\n DateTime,\n Options,\n Unit,\n DateTimeFormatOptions,\n};\n"],"names":["SecondDisplay"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tempus-dominus.esm.js","sources":["../../src/js/datetime.ts","../../src/js/errors.ts","../../src/js/namespace.ts","../../src/js/conts.ts","../../src/js/display/collapse.ts","../../src/js/actions.ts","../../src/js/display/calendar/date-display.ts","../../src/js/display/calendar/month-display.ts","../../src/js/options.ts","../../src/js/dates.ts","../../src/js/display/calendar/year-display.ts","../../src/js/display/calendar/decade-display.ts","../../src/js/display/time/time-display.ts","../../src/js/display/time/hour-display.ts","../../src/js/display/time/minute-display.ts","../../src/js/display/time/second-display.ts","../../src/js/display/index.ts","../../src/js/validation.ts","../../src/js/tempus-dominus.ts"],"sourcesContent":["export enum Unit {\n seconds = 'seconds',\n minutes = 'minutes',\n hours = 'hours',\n date = 'date',\n month = 'month',\n year = 'year',\n}\n\nexport interface DateTimeFormatOptions extends Intl.DateTimeFormatOptions {\n timeStyle?: 'short' | 'medium' | 'long';\n dateStyle?: 'short' | 'medium' | 'long' | 'full';\n}\n\n/**\n * For the most part this object behaves exactly the same way\n * as the native Date object with a little extra spice.\n */\nexport class DateTime extends Date {\n /**\n * Used with Intl.DateTimeFormat\n */\n locale = 'default';\n\n /**\n * Chainable way to set the {@link locale}\n * @param value\n */\n setLocale(value: string): this {\n this.locale = value;\n return this;\n }\n\n /**\n * Converts a plain JS date object to a DateTime object.\n * Doing this allows access to format, etc.\n * @param date\n */\n static convert(date: Date): DateTime {\n if (!date) throw `A date is required`;\n return new DateTime(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n );\n }\n\n /**\n * Native date manipulations are not pure functions. This function creates a duplicate of the DateTime object.\n */\n get clone() {\n return new DateTime(\n this.year,\n this.month,\n this.date,\n this.hours,\n this.minutes,\n this.seconds,\n this.getMilliseconds()\n ).setLocale(this.locale);\n }\n\n /**\n * Sets the current date to the start of the {@link unit} provided\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).startOf('month')\n * would return April 1, 2021, 12:00:00.000 AM (midnight)\n * @param unit\n */\n startOf(unit: Unit | 'weekDay'): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n switch (unit) {\n case 'seconds':\n this.setMilliseconds(0);\n break;\n case 'minutes':\n this.setSeconds(0, 0);\n break;\n case 'hours':\n this.setMinutes(0, 0, 0);\n break;\n case 'date':\n this.setHours(0, 0, 0, 0);\n break;\n case 'weekDay':\n this.startOf(Unit.date);\n this.manipulate(0 - this.weekDay, Unit.date);\n break;\n case 'month':\n this.startOf(Unit.date);\n this.setDate(1);\n break;\n case 'year':\n this.startOf(Unit.date);\n this.setMonth(0, 1);\n break;\n }\n return this;\n }\n\n /**\n * Sets the current date to the end of the {@link unit} provided\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).endOf('month')\n * would return April 30, 2021, 11:59:59.999 PM\n * @param unit\n */\n endOf(unit: Unit | 'weekDay'): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n switch (unit) {\n case 'seconds':\n this.setMilliseconds(999);\n break;\n case 'minutes':\n this.setSeconds(59, 999);\n break;\n case 'hours':\n this.setMinutes(59, 59, 999);\n break;\n case 'date':\n this.setHours(23, 59, 59, 999);\n break;\n case 'weekDay':\n this.startOf(Unit.date);\n this.manipulate(6 - this.weekDay, Unit.date);\n break;\n case 'month':\n this.endOf(Unit.date);\n this.manipulate(1, Unit.month);\n this.setDate(0);\n break;\n case 'year':\n this.endOf(Unit.date);\n this.manipulate(1, Unit.year);\n this.setDate(0);\n break;\n }\n return this;\n }\n\n /**\n * Change a {@link unit} value. Value can be positive or negative\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).manipulate(1, 'month')\n * would return May 30, 2021, 11:45:32.984 AM\n * @param value A positive or negative number\n * @param unit\n */\n manipulate(value: number, unit: Unit): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n this[unit] += value;\n return this;\n }\n\n /**\n * Returns a string format.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat\n * for valid templates and locale objects\n * @param template An object. Uses browser defaults otherwise.\n * @param locale Can be a string or an array of strings. Uses browser defaults otherwise.\n */\n format(template: DateTimeFormatOptions, locale = this.locale): string {\n return new Intl.DateTimeFormat(locale, template).format(this);\n }\n\n /**\n * Return true if {@link compare} is before this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isBefore(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() < compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n return (\n this.clone.startOf(unit).valueOf() < compare.clone.startOf(unit).valueOf()\n );\n }\n\n /**\n * Return true if {@link compare} is after this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isAfter(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() > compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n return (\n this.clone.startOf(unit).valueOf() > compare.clone.startOf(unit).valueOf()\n );\n }\n\n /**\n * Return true if {@link compare} is same this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isSame(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() === compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n compare = DateTime.convert(compare);\n return (\n this.clone.startOf(unit).valueOf() === compare.startOf(unit).valueOf()\n );\n }\n\n /**\n * Check if this is between two other DateTimes, optionally looking at unit scale. The match is exclusive.\n * @param left\n * @param right\n * @param unit.\n * @param inclusivity. A [ indicates inclusion of a value. A ( indicates exclusion.\n * If the inclusivity parameter is used, both indicators must be passed.\n */\n isBetween(\n left: DateTime,\n right: DateTime,\n unit?: Unit,\n inclusivity: '()' | '[]' | '(]' | '[)' = '()'\n ): boolean {\n if (unit && this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n const leftInclusivity = inclusivity[0] === '(';\n const rightInclusivity = inclusivity[1] === ')';\n\n return (\n ((leftInclusivity\n ? this.isAfter(left, unit)\n : !this.isBefore(left, unit)) &&\n (rightInclusivity\n ? this.isBefore(right, unit)\n : !this.isAfter(right, unit))) ||\n ((leftInclusivity\n ? this.isBefore(left, unit)\n : !this.isAfter(left, unit)) &&\n (rightInclusivity\n ? this.isAfter(right, unit)\n : !this.isBefore(right, unit)))\n );\n }\n\n /**\n * Returns flattened object of the date. Does not include literals\n * @param locale\n * @param template\n */\n parts(\n locale = this.locale,\n template: any = { dateStyle: 'full', timeStyle: 'long' }\n ) {\n const parts = {};\n new Intl.DateTimeFormat(locale, template)\n .formatToParts(this)\n .filter((x) => x.type !== 'literal')\n .forEach((x) => (parts[x.type] = x.value));\n return parts;\n }\n\n /**\n * Shortcut to Date.getSeconds()\n */\n get seconds(): number {\n return this.getSeconds();\n }\n\n /**\n * Shortcut to Date.setSeconds()\n */\n set seconds(value: number) {\n this.setSeconds(value);\n }\n\n /**\n * Returns two digit hours\n */\n get secondsFormatted(): string {\n return this.seconds < 10 ? `0${this.seconds}` : `${this.seconds}`;\n }\n\n /**\n * Shortcut to Date.getMinutes()\n */\n get minutes(): number {\n return this.getMinutes();\n }\n\n /**\n * Shortcut to Date.setMinutes()\n */\n set minutes(value: number) {\n this.setMinutes(value);\n }\n\n /**\n * Returns two digit hours\n */\n get minutesFormatted(): string {\n return this.minutes < 10 ? `0${this.minutes}` : `${this.minutes}`;\n }\n\n /**\n * Shortcut to Date.getHours()\n */\n get hours(): number {\n return this.getHours();\n }\n\n /**\n * Shortcut to Date.setHours()\n */\n set hours(value: number) {\n this.setHours(value);\n }\n\n /**\n * Returns two digit hours\n */\n get hoursFormatted(): string {\n return this.hours < 10 ? `0${this.hours}` : `${this.hours}`;\n }\n\n /**\n * Returns two digit hours but in twelve hour mode e.g. 13 -> 1\n */\n get twelveHoursFormatted(): string {\n let hour = this.hours;\n if (hour > 12) hour = hour - 12;\n if (hour === 0) hour = 12;\n return hour < 10 ? `0${hour}` : `${hour}`;\n }\n\n /**\n * Get the meridiem of the date. E.g. AM or PM.\n * If the {@link locale} provides a \"dayPeriod\" then this will be returned,\n * otherwise it will return AM or PM.\n * @param locale\n */\n meridiem(locale: string = this.locale): string {\n return new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n hour12: true,\n } as any)\n .formatToParts(this)\n .find((p) => p.type === 'dayPeriod')?.value;\n }\n\n /**\n * Shortcut to Date.getDate()\n */\n get date(): number {\n return this.getDate();\n }\n\n /**\n * Shortcut to Date.setDate()\n */\n set date(value: number) {\n this.setDate(value);\n }\n\n /**\n * Return two digit date\n */\n get dateFormatted(): string {\n return this.date < 10 ? `0${this.date}` : `${this.date}`;\n }\n\n // https://github.com/you-dont-need/You-Dont-Need-Momentjs#week-of-year\n /**\n * Gets the week of the year\n */\n get week(): number {\n const startOfYear = new Date(this.year, 0, 1);\n startOfYear.setDate(\n startOfYear.getDate() + (1 - (startOfYear.getDay() % 7))\n );\n return Math.round((this.valueOf() - startOfYear.valueOf()) / 604800000) + 1;\n }\n\n /**\n * Shortcut to Date.getDay()\n */\n get weekDay(): number {\n return this.getDay();\n }\n\n /**\n * Shortcut to Date.getMonth()\n */\n get month(): number {\n return this.getMonth();\n }\n\n /**\n * Shortcut to Date.setMonth()\n */\n set month(value: number) {\n this.setMonth(value);\n }\n\n /**\n * Return two digit, human expected month. E.g. January = 1, December = 12\n */\n get monthFormatted(): string {\n return this.month + 1 < 10 ? `0${this.month}` : `${this.month}`;\n }\n\n /**\n * Shortcut to Date.getFullYear()\n */\n get year(): number {\n return this.getFullYear();\n }\n\n /**\n * Shortcut to Date.setFullYear()\n */\n set year(value: number) {\n this.setFullYear(value);\n }\n}\n","import Namespace from './namespace';\n\nexport class TdError extends Error {\n code: number;\n}\n\nexport class ErrorMessages {\n private base = 'TD:';\n\n //#region out to console\n\n /**\n * Throws an error indicating that a key in the options object is invalid.\n * @param optionName\n */\n unexpectedOption(optionName: string) {\n const error = new TdError(\n `${this.base} Unexpected option: ${optionName} does not match a known option.`\n );\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error indicating that one more keys in the options object is invalid.\n * @param optionName\n */\n unexpectedOptions(optionName: string[]) {\n const error = new TdError(`${this.base}: ${optionName.join(', ')}`);\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error when an option is provide an unsupported value.\n * For example a value of 'cheese' for toolbarPlacement which only supports\n * 'top', 'bottom', 'default'.\n * @param optionName\n * @param badValue\n * @param validOptions\n */\n unexpectedOptionValue(\n optionName: string,\n badValue: string,\n validOptions: string[]\n ) {\n const error = new TdError(\n `${\n this.base\n } Unexpected option value: ${optionName} does not accept a value of \"${badValue}\". Valid values are: ${validOptions.join(\n ', '\n )}`\n );\n error.code = 2;\n throw error;\n }\n\n /**\n * Throws an error when an option value is the wrong type.\n * For example a string value was provided to multipleDates which only\n * supports true or false.\n * @param optionName\n * @param badType\n * @param expectedType\n */\n typeMismatch(optionName: string, badType: string, expectedType: string) {\n const error = new TdError(\n `${this.base} Mismatch types: ${optionName} has a type of ${badType} instead of the required ${expectedType}`\n );\n error.code = 3;\n throw error;\n }\n\n /**\n * Throws an error when an option value is outside of the expected range.\n * For example restrictions.daysOfWeekDisabled excepts a value between 0 and 6.\n * @param optionName\n * @param lower\n * @param upper\n */\n numbersOutOfRage(optionName: string, lower: number, upper: number) {\n const error = new TdError(\n `${this.base} ${optionName} expected an array of number between ${lower} and ${upper}.`\n );\n error.code = 4;\n throw error;\n }\n\n /**\n * Throws an error when a value for a date options couldn't be parsed. Either\n * the option was an invalide string or an invalid Date object.\n * @param optionName\n * @param date\n * @param soft If true, logs a warning instead of an error.\n */\n failedToParseDate(optionName: string, date: any, soft = false) {\n const error = new TdError(\n `${this.base} Could not correctly parse \"${date}\" to a date for ${optionName}.`\n );\n error.code = 5;\n if (!soft) throw error;\n console.warn(error);\n }\n\n /**\n * Throws when an element to attach to was not provided in the constructor.\n */\n mustProvideElement() {\n const error = new TdError(`${this.base} No element was provided.`);\n error.code = 6;\n throw error;\n }\n\n /**\n * Throws if providing an array for the events to subscribe method doesn't have\n * the same number of callbacks. E.g., subscribe([1,2], [1])\n */\n subscribeMismatch() {\n const error = new TdError(\n `${this.base} The subscribed events does not match the number of callbacks`\n );\n error.code = 7;\n throw error;\n }\n\n /**\n * Throws if the configuration has conflicting rules e.g. minDate is after maxDate\n */\n conflictingConfiguration(message?: string) {\n const error = new TdError(\n `${this.base} A configuration value conflicts with another rule. ${message}`\n );\n error.code = 8;\n throw error;\n }\n\n /**\n * Logs a warning if a date option value is provided as a string, instead of\n * a date/datetime object.\n */\n dateString() {\n console.warn(\n `${this.base} Using a string for date options is not recommended unless you specify an ISO string.`\n );\n }\n\n //#endregion\n\n //#region used with notify.error\n\n /**\n * Used with an Error Event type if the user selects a date that\n * fails restriction validation.\n */\n failedToSetInvalidDate = 'Failed to set invalid date';\n\n /**\n * Used with an Error Event type when a user changes the value of the\n * input field directly, and does not provide a valid date.\n */\n failedToParseInput = 'Failed parse input field';\n\n //#endregion\n}\n","import { ErrorMessages } from './errors';\n// this is not the way I want this to stay but nested classes seemed to blown up once its compiled.\nconst NAME = 'tempus-dominus',\n version = '6.0.0-alpha1',\n dataKey = 'td';\n\n/**\n * Events\n */\nclass Events {\n key = `.${dataKey}`;\n\n /**\n * Change event. Fired when the user selects a date.\n * See also EventTypes.ChangeEvent\n */\n change = `change${this.key}`;\n\n /**\n * Emit when the view changes for example from month view to the year view.\n * See also EventTypes.ViewUpdateEvent\n */\n update = `update${this.key}`;\n\n /**\n * Emits when a selected date or value from the input field fails to meet the provided validation rules.\n * See also EventTypes.FailEvent\n */\n error = `error${this.key}`;\n\n /**\n * Show event\n * @event Events#show\n */\n show = `show${this.key}`;\n\n /**\n * Hide event\n * @event Events#hide\n */\n hide = `hide${this.key}`;\n\n // blur and focus are used in the jQuery provider but are otherwise unused.\n // keyup/down will be used later for keybinding options\n\n blur = `blur${this.key}`;\n focus = `focus${this.key}`;\n keyup = `keyup${this.key}`;\n keydown = `keydown${this.key}`;\n}\n\nclass Css {\n /**\n * The outer element for the widget.\n */\n widget = `${NAME}-widget`;\n\n /**\n * Hold the previous, next and switcher divs\n */\n calendarHeader = 'calendar-header';\n\n /**\n * The element for the action to change the calendar view. E.g. month -> year.\n */\n switch = 'picker-switch';\n\n /**\n * The elements for all of the toolbar options\n */\n toolbar = 'toolbar';\n\n /**\n * Disables the hover and rounding affect.\n */\n noHighlight = 'no-highlight';\n\n /**\n * Applied to the widget element when the side by side option is in use.\n */\n sideBySide = 'timepicker-sbs';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> July\n */\n previous = 'previous';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> September\n */\n next = 'next';\n\n /**\n * Applied to any action that would violate any restriction options. ALso applied\n * to an input field if the disabled function is called.\n */\n disabled = 'disabled';\n\n /**\n * Applied to any date that is less than requested view,\n * e.g. the last day of the previous month.\n */\n old = 'old';\n\n /**\n * Applied to any date that is greater than of requested view,\n * e.g. the last day of the previous month.\n */\n new = 'new';\n\n /**\n * Applied to any date that is currently selected.\n */\n active = 'active';\n\n //#region date element\n\n /**\n * The outer most element for the calendar view.\n */\n dateContainer = 'date-container';\n\n /**\n * The outer most element for the decades view.\n */\n decadesContainer = `${this.dateContainer}-decades`;\n\n /**\n * Applied to elements within the decades container, e.g. 2020, 2030\n */\n decade = 'decade';\n\n /**\n * The outer most element for the years view.\n */\n yearsContainer = `${this.dateContainer}-years`;\n\n /**\n * Applied to elements within the years container, e.g. 2021, 2021\n */\n year = 'year';\n\n /**\n * The outer most element for the month view.\n */\n monthsContainer = `${this.dateContainer}-months`;\n\n /**\n * Applied to elements within the month container, e.g. January, February\n */\n month = 'month';\n\n /**\n * The outer most element for the calendar view.\n */\n daysContainer = `${this.dateContainer}-days`;\n\n /**\n * Applied to elements within the day container, e.g. 1, 2..31\n */\n day = 'day';\n\n /**\n * If display.calendarWeeks is enabled, a column displaying the week of year\n * is shown. This class is applied to each cell in that column.\n */\n calendarWeeks = 'cw';\n\n /**\n * Applied to the first row of the calendar view, e.g. Sunday, Monday\n */\n dayOfTheWeek = 'dow';\n\n /**\n * Applied to the current date on the calendar view.\n */\n today = 'today';\n\n /**\n * Applied to the locale's weekend dates on the calendar view, e.g. Sunday, Saturday\n */\n weekend = 'weekend';\n\n //#endregion\n\n //#region time element\n\n /**\n * The outer most element for all time related elements.\n */\n timeContainer = 'time-container';\n\n /**\n * Applied the separator columns between time elements, e.g. hour *:* minute *:* second\n */\n separator = 'separator';\n\n /**\n * The outer most element for the clock view.\n */\n clockContainer = `${this.timeContainer}-clock`;\n\n /**\n * The outer most element for the hours selection view.\n */\n hourContainer = `${this.timeContainer}-hour`;\n\n /**\n * The outer most element for the minutes selection view.\n */\n minuteContainer = `${this.timeContainer}-minute`;\n\n /**\n * The outer most element for the seconds selection view.\n */\n secondContainer = `${this.timeContainer}-second`;\n\n /**\n * Applied to each element in the hours selection view.\n */\n hour = 'hour';\n\n /**\n * Applied to each element in the minutes selection view.\n */\n minute = 'minute';\n\n /**\n * Applied to each element in the seconds selection view.\n */\n second = 'second';\n\n /**\n * Applied AM/PM toggle button.\n */\n toggleMeridiem = 'toggleMeridiem';\n\n //#endregion\n\n //#region collapse\n\n /**\n * Applied the element of the current view mode, e.g. calendar or clock.\n */\n show = 'show';\n\n /**\n * Applied to the currently showing view mode during a transition\n * between calendar and clock views\n */\n collapsing = 'td-collapsing';\n\n /**\n * Applied to the currently hidden view mode.\n */\n collapse = 'td-collapse';\n\n //#endregion\n\n /**\n * Applied to the widget when the option display.inline is enabled.\n */\n inline = 'inline';\n}\n\nexport default class Namespace {\n static NAME = NAME;\n // noinspection JSUnusedGlobalSymbols\n static version = version;\n static dataKey = dataKey;\n\n static events = new Events();\n\n static css = new Css();\n\n static errorMessages = new ErrorMessages();\n}\n","import { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options from './options';\n\nconst DefaultOptions: Options = {\n restrictions: {\n minDate: undefined,\n maxDate: undefined,\n disabledDates: [],\n enabledDates: [],\n daysOfWeekDisabled: [],\n disabledTimeIntervals: [],\n disabledHours: [],\n enabledHours: [],\n },\n display: {\n icons: {\n type: 'icons',\n time: 'fas fa-clock',\n date: 'fas fa-calendar',\n up: 'fas fa-arrow-up',\n down: 'fas fa-arrow-down',\n previous: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n today: 'fas fa-calendar-check',\n clear: 'fas fa-trash',\n close: 'fas fa-times',\n },\n sideBySide: false,\n calendarWeeks: false,\n viewMode: 'calendar',\n toolbarPlacement: 'bottom',\n keepOpen: false,\n buttons: {\n today: false,\n clear: false,\n close: false,\n },\n components: {\n calendar: true,\n date: true,\n month: true,\n year: true,\n decades: true,\n clock: true,\n hours: true,\n minutes: true,\n seconds: false,\n useTwentyfourHour: false,\n },\n inline: false,\n },\n stepping: 1,\n useCurrent: true,\n defaultDate: undefined,\n localization: {\n today: 'Go to today',\n clear: 'Clear selection',\n close: 'Close the picker',\n selectMonth: 'Select Month',\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n selectYear: 'Select Year',\n previousYear: 'Previous Year',\n nextYear: 'Next Year',\n selectDecade: 'Select Decade',\n previousDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n previousCentury: 'Previous Century',\n nextCentury: 'Next Century',\n pickHour: 'Pick Hour',\n incrementHour: 'Increment Hour',\n decrementHour: 'Decrement Hour',\n pickMinute: 'Pick Minute',\n incrementMinute: 'Increment Minute',\n decrementMinute: 'Decrement Minute',\n pickSecond: 'Pick Second',\n incrementSecond: 'Increment Second',\n decrementSecond: 'Decrement Second',\n toggleMeridiem: 'Toggle Meridiem',\n selectTime: 'Select Time',\n selectDate: 'Select Date',\n dayViewHeaderFormat: 'long',\n locale: 'default',\n },\n keepInvalid: false,\n debug: false,\n allowInputToggle: false,\n viewDate: new DateTime(),\n multipleDates: false,\n multipleDatesSeparator: '; ',\n promptTimeOnDateChange: false,\n promptTimeOnDateChangeTransitionDelay: 200,\n hooks: {\n inputParse: undefined,\n inputFormat: undefined,\n },\n};\n\nconst DatePickerModes: {\n name: string;\n className: string;\n unit: Unit;\n step: number;\n}[] = [\n {\n name: 'calendar',\n className: Namespace.css.daysContainer,\n unit: Unit.month,\n step: 1,\n },\n {\n name: 'months',\n className: Namespace.css.monthsContainer,\n unit: Unit.year,\n step: 1,\n },\n {\n name: 'years',\n className: Namespace.css.yearsContainer,\n unit: Unit.year,\n step: 10,\n },\n {\n name: 'decades',\n className: Namespace.css.decadesContainer,\n unit: Unit.year,\n step: 100,\n },\n];\n\nexport { DefaultOptions, DatePickerModes, Namespace };\n","import Namespace from '../namespace';\n\n/**\n * Provides a collapse functionality to the view changes\n */\nexport default class Collapse {\n private timeOut;\n\n /**\n * Flips the show/hide state of `target`\n * @param target html element to affect.\n */\n toggle(target: HTMLElement, callback = undefined) {\n if (target.classList.contains(Namespace.css.show)) {\n this.hide(target, callback);\n } else {\n this.show(target, callback);\n }\n }\n\n /**\n * If `target` is not already showing, then show after the animation.\n * @param target\n */\n show(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse, Namespace.css.show);\n target.style.height = '';\n this.timeOut = null;\n if (callback) callback();\n };\n\n target.style.height = '0';\n target.classList.remove(Namespace.css.collapse);\n target.classList.add(Namespace.css.collapsing);\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n target.style.height = `${target.scrollHeight}px`;\n }\n\n /**\n * If `target` is not already hidden, then hide after the animation.\n * @param target HTML Element\n */\n hide(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n !target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse);\n this.timeOut = null;\n };\n\n target.style.height = `${target.getBoundingClientRect()['height']}px`;\n\n const reflow = (element) => element.offsetHeight;\n\n reflow(target);\n\n target.classList.remove(Namespace.css.collapse, Namespace.css.show);\n target.classList.add(Namespace.css.collapsing);\n target.style.height = '';\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n }\n\n /**\n * Gets the transition duration from the `element` by getting css properties\n * `transition-duration` and `transition-delay`\n * @param element HTML Element\n */\n private getTransitionDurationFromElement = (element: HTMLElement) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } =\n window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) +\n Number.parseFloat(transitionDelay)) *\n 1000\n );\n };\n}\n","import { DatePickerModes } from './conts.js';\r\nimport { DateTime, Unit } from './datetime';\r\nimport { TempusDominus } from './tempus-dominus';\r\nimport Collapse from './display/collapse';\r\nimport Namespace from './namespace';\r\n\r\n/**\r\n *\r\n */\r\nexport default class Actions {\r\n private _context: TempusDominus;\r\n private collapse: Collapse;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this.collapse = new Collapse();\r\n }\r\n\r\n /**\r\n * Performs the selected `action`. See ActionTypes\r\n * @param e This is normally a click event\r\n * @param action If not provided, then look for a [data-action]\r\n */\r\n do(e: any, action?: ActionTypes) {\r\n const currentTarget = e.currentTarget;\r\n if (currentTarget.classList.contains(Namespace.css.disabled)) return false;\r\n action = action || currentTarget.dataset.action;\r\n const lastPicked = (\r\n this._context.dates.lastPicked || this._context._viewDate\r\n ).clone;\r\n\r\n /**\r\n * Common function to manipulate {@link lastPicked} by `unit`\r\n * @param unit\r\n * @param value Value to change by\r\n */\r\n const manipulateAndSet = (unit: Unit, value = 1) => {\r\n const newDate = lastPicked.manipulate(value, unit);\r\n if (this._context._validation.isValid(newDate, unit)) {\r\n this._context.dates._setValue(\r\n newDate,\r\n this._context.dates.lastPickedIndex\r\n );\r\n }\r\n };\r\n\r\n switch (action) {\r\n case ActionTypes.next:\r\n case ActionTypes.previous:\r\n const { unit, step } = DatePickerModes[this._context._currentViewMode];\r\n if (action === ActionTypes.next)\r\n this._context._viewDate.manipulate(step, unit);\r\n else this._context._viewDate.manipulate(step * -1, unit);\r\n this._context._viewUpdate(unit);\r\n\r\n this._context._display._showMode();\r\n break;\r\n case ActionTypes.pickerSwitch:\r\n this._context._display._showMode(1);\r\n this._context._viewUpdate(\r\n DatePickerModes[this._context._currentViewMode].unit\r\n );\r\n this._context._display._updateCalendarHeader();\r\n break;\r\n case ActionTypes.selectMonth:\r\n case ActionTypes.selectYear:\r\n case ActionTypes.selectDecade:\r\n const value = +currentTarget.getAttribute('data-value');\r\n switch (action) {\r\n case ActionTypes.selectMonth:\r\n this._context._viewDate.month = value;\r\n this._context._viewUpdate(Unit.month);\r\n break;\r\n case ActionTypes.selectYear:\r\n this._context._viewDate.year = value;\r\n this._context._viewUpdate(Unit.year);\r\n break;\r\n case ActionTypes.selectDecade:\r\n this._context._viewDate.year = value;\r\n this._context._viewUpdate(Unit.year);\r\n break;\r\n }\r\n\r\n if (\r\n this._context._currentViewMode === this._context._minViewModeNumber\r\n ) {\r\n this._context.dates._setValue(\r\n this._context._viewDate,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (!this._context._options.display.inline) {\r\n this._context._display.hide();\r\n }\r\n } else {\r\n this._context._display._showMode(-1);\r\n }\r\n break;\r\n case ActionTypes.selectDay:\r\n const day = this._context._viewDate.clone;\r\n if (currentTarget.classList.contains(Namespace.css.old)) {\r\n day.manipulate(-1, Unit.month);\r\n }\r\n if (currentTarget.classList.contains(Namespace.css.new)) {\r\n day.manipulate(1, Unit.month);\r\n }\r\n\r\n day.date = +currentTarget.innerText;\r\n let index = 0;\r\n if (this._context._options.multipleDates) {\r\n index = this._context.dates.pickedIndex(day, Unit.date);\r\n if (index !== -1) {\r\n this._context.dates._setValue(null, index); //deselect multi-date\r\n } else {\r\n this._context.dates._setValue(\r\n day,\r\n this._context.dates.lastPickedIndex + 1\r\n );\r\n }\r\n } else {\r\n this._context.dates._setValue(\r\n day,\r\n this._context.dates.lastPickedIndex\r\n );\r\n }\r\n\r\n if (\r\n !this._context._display._hasTime &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline &&\r\n !this._context._options.multipleDates\r\n ) {\r\n this._context._display.hide();\r\n }\r\n break;\r\n case ActionTypes.selectHour:\r\n let hour = +currentTarget.getAttribute('data-value');\r\n if (lastPicked.hours >= 12 && !this._context._options.display.components.useTwentyfourHour) hour += 12;\r\n lastPicked.hours = hour;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.components.minutes &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.selectMinute:\r\n lastPicked.minutes = +currentTarget.innerText;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.components.seconds &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.selectSecond:\r\n lastPicked.seconds = +currentTarget.innerText;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.incrementHours:\r\n manipulateAndSet(Unit.hours);\r\n break;\r\n case ActionTypes.incrementMinutes:\r\n manipulateAndSet(Unit.minutes, this._context._options.stepping);\r\n break;\r\n case ActionTypes.incrementSeconds:\r\n manipulateAndSet(Unit.seconds);\r\n break;\r\n case ActionTypes.decrementHours:\r\n manipulateAndSet(Unit.hours, -1);\r\n break;\r\n case ActionTypes.decrementMinutes:\r\n manipulateAndSet(Unit.minutes, this._context._options.stepping * -1);\r\n break;\r\n case ActionTypes.decrementSeconds:\r\n manipulateAndSet(Unit.seconds, -1);\r\n break;\r\n case ActionTypes.toggleMeridiem:\r\n manipulateAndSet(\r\n Unit.hours,\r\n this._context.dates.lastPicked.hours >= 12 ? -12 : 12\r\n );\r\n break;\r\n case ActionTypes.togglePicker:\r\n this._context._display.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer}, .${Namespace.css.timeContainer}`\r\n )\r\n .forEach((htmlElement: HTMLElement) =>\r\n this.collapse.toggle(htmlElement)\r\n );\r\n if (\r\n currentTarget.getAttribute('title') ===\r\n this._context._options.localization.selectDate\r\n ) {\r\n currentTarget.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectTime\r\n );\r\n currentTarget.innerHTML = this._context._display._iconTag(\r\n this._context._options.display.icons.time\r\n ).outerHTML;\r\n\r\n this._context._display._updateCalendarHeader();\r\n } else {\r\n currentTarget.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDate\r\n );\r\n currentTarget.innerHTML = this._context._display._iconTag(\r\n this._context._options.display.icons.date\r\n ).outerHTML;\r\n this.do(e, ActionTypes.showClock);\r\n this._context._display._update('clock');\r\n }\r\n break;\r\n case ActionTypes.showClock:\r\n case ActionTypes.showHours:\r\n case ActionTypes.showMinutes:\r\n case ActionTypes.showSeconds:\r\n this._context._display.widget\r\n .querySelectorAll(`.${Namespace.css.timeContainer} > div`)\r\n .forEach(\r\n (htmlElement: HTMLElement) => (htmlElement.style.display = 'none')\r\n );\r\n\r\n let classToUse = '';\r\n switch (action) {\r\n case ActionTypes.showClock:\r\n classToUse = Namespace.css.clockContainer;\r\n this._context._display._update('clock');\r\n break;\r\n case ActionTypes.showHours:\r\n classToUse = Namespace.css.hourContainer;\r\n this._context._display._update(Unit.hours);\r\n break;\r\n case ActionTypes.showMinutes:\r\n classToUse = Namespace.css.minuteContainer;\r\n this._context._display._update(Unit.minutes);\r\n break;\r\n case ActionTypes.showSeconds:\r\n classToUse = Namespace.css.secondContainer;\r\n this._context._display._update(Unit.seconds);\r\n break;\r\n }\r\n\r\n ((\r\n this._context._display.widget.getElementsByClassName(classToUse)[0]\r\n )).style.display = 'grid';\r\n break;\r\n case ActionTypes.clear:\r\n this._context.dates._setValue(null);\r\n this._context._display._updateCalendarHeader();\r\n break;\r\n case ActionTypes.close:\r\n this._context._display.hide();\r\n break;\r\n case ActionTypes.today:\r\n const today = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n this._context._viewDate = today;\r\n if (this._context._validation.isValid(today, Unit.date))\r\n this._context.dates._setValue(\r\n today,\r\n this._context.dates.lastPickedIndex\r\n );\r\n break;\r\n }\r\n }\r\n}\r\n\r\nexport enum ActionTypes {\r\n next = 'next',\r\n previous = 'previous',\r\n pickerSwitch = 'pickerSwitch',\r\n selectMonth = 'selectMonth',\r\n selectYear = 'selectYear',\r\n selectDecade = 'selectDecade',\r\n selectDay = 'selectDay',\r\n selectHour = 'selectHour',\r\n selectMinute = 'selectMinute',\r\n selectSecond = 'selectSecond',\r\n incrementHours = 'incrementHours',\r\n incrementMinutes = 'incrementMinutes',\r\n incrementSeconds = 'incrementSeconds',\r\n decrementHours = 'decrementHours',\r\n decrementMinutes = 'decrementMinutes',\r\n decrementSeconds = 'decrementSeconds',\r\n toggleMeridiem = 'toggleMeridiem',\r\n togglePicker = 'togglePicker',\r\n showClock = 'showClock',\r\n showHours = 'showHours',\r\n showMinutes = 'showMinutes',\r\n showSeconds = 'showSeconds',\r\n clear = 'clear',\r\n close = 'close',\r\n today = 'today',\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { DateTime, Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `date`\n */\nexport default class DateDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.daysContainer);\n\n container.append(...this._daysOfTheWeek());\n\n if (this._context._options.display.calendarWeeks) {\n const div = document.createElement('div');\n div.classList.add(Namespace.css.calendarWeeks, Namespace.css.noHighlight);\n container.appendChild(div);\n }\n\n for (let i = 0; i < 42; i++) {\n if (i !== 0 && i % 7 === 0) {\n if (this._context._options.display.calendarWeeks) {\n const div = document.createElement('div');\n div.classList.add(\n Namespace.css.calendarWeeks,\n Namespace.css.noHighlight\n );\n container.appendChild(div);\n }\n }\n\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectDay);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.daysContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.daysContainer,\n this._context._viewDate.format({\n month: this._context._options.localization.dayViewHeaderFormat,\n })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.month),\n Unit.month\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.month),\n Unit.month\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone\n .startOf(Unit.month)\n .startOf('weekDay')\n .manipulate(12, Unit.hours);\n\n container\n .querySelectorAll(\n `[data-action=\"${ActionTypes.selectDay}\"], .${Namespace.css.calendarWeeks}`\n )\n .forEach((containerClone: HTMLElement, index) => {\n if (\n this._context._options.display.calendarWeeks &&\n containerClone.classList.contains(Namespace.css.calendarWeeks)\n ) {\n if (containerClone.innerText === '#') return;\n containerClone.innerText = `${innerDate.week}`;\n return;\n }\n\n let classes = [];\n classes.push(Namespace.css.day);\n\n if (innerDate.isBefore(this._context._viewDate, Unit.month)) {\n classes.push(Namespace.css.old);\n }\n if (innerDate.isAfter(this._context._viewDate, Unit.month)) {\n classes.push(Namespace.css.new);\n }\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.date)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.date)) {\n classes.push(Namespace.css.disabled);\n }\n if (innerDate.isSame(new DateTime(), Unit.date)) {\n classes.push(Namespace.css.today);\n }\n if (innerDate.weekDay === 0 || innerDate.weekDay === 6) {\n classes.push(Namespace.css.weekend);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute(\n 'data-value',\n `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`\n );\n containerClone.innerText = `${innerDate.date}`;\n innerDate.manipulate(1, Unit.date);\n });\n }\n\n /***\n * Generates an html row that contains the days of the week.\n * @private\n */\n private _daysOfTheWeek(): HTMLElement[] {\n let innerDate = this._context._viewDate.clone\n .startOf('weekDay')\n .startOf(Unit.date);\n const row = [];\n document.createElement('div');\n\n if (this._context._options.display.calendarWeeks) {\n const htmlDivElement = document.createElement('div');\n htmlDivElement.classList.add(\n Namespace.css.calendarWeeks,\n Namespace.css.noHighlight\n );\n htmlDivElement.innerText = '#';\n row.push(htmlDivElement);\n }\n\n for (let i = 0; i < 7; i++) {\n const htmlDivElement = document.createElement('div');\n htmlDivElement.classList.add(\n Namespace.css.dayOfTheWeek,\n Namespace.css.noHighlight\n );\n htmlDivElement.innerText = innerDate.format({ weekday: 'short' });\n innerDate.manipulate(1, Unit.date);\n row.push(htmlDivElement);\n }\n\n return row;\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `month`\n */\nexport default class MonthDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.monthsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMonth);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.monthsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.monthsContainer,\n this._context._viewDate.format({ year: 'numeric' })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.year),\n Unit.year\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.year),\n Unit.year\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone.startOf(Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMonth}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.month);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.month)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.month)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${index}`);\n containerClone.innerText = `${innerDate.format({ month: 'short' })}`;\n innerDate.manipulate(1, Unit.month);\n });\n }\n}\n","import { DateTime, DateTimeFormatOptions } from './datetime';\nimport Namespace from './namespace';\nimport { DefaultOptions } from './conts';\n\nexport default interface Options {\n restrictions: {\n minDate: DateTime;\n maxDate: DateTime;\n enabledDates: DateTime[];\n disabledDates: DateTime[];\n enabledHours: number[];\n disabledHours: number[];\n disabledTimeIntervals: { from: DateTime; to: DateTime }[];\n daysOfWeekDisabled: number[];\n };\n display: {\n toolbarPlacement: 'top' | 'bottom';\n components: {\n calendar: boolean;\n date: boolean;\n month: boolean;\n year: boolean;\n decades: boolean;\n clock: boolean;\n hours: boolean;\n minutes: boolean;\n seconds: boolean;\n useTwentyfourHour: boolean;\n };\n buttons: { today: boolean; close: boolean; clear: boolean };\n calendarWeeks: boolean;\n icons: {\n date: string;\n next: string;\n previous: string;\n today: string;\n clear: string;\n time: string;\n up: string;\n type: 'icons' | 'sprites';\n down: string;\n close: string;\n };\n viewMode: 'clock' | 'calendar' | 'months' | 'years' | 'decades';\n sideBySide: boolean;\n inline: boolean;\n keepOpen: boolean;\n };\n stepping: number;\n useCurrent: boolean;\n defaultDate: DateTime;\n localization: {\n nextMonth: string;\n pickHour: string;\n incrementSecond: string;\n nextDecade: string;\n selectDecade: string;\n dayViewHeaderFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n decrementHour: string;\n selectDate: string;\n incrementHour: string;\n previousCentury: string;\n decrementSecond: string;\n today: string;\n previousMonth: string;\n selectYear: string;\n pickSecond: string;\n nextCentury: string;\n close: string;\n incrementMinute: string;\n selectTime: string;\n clear: string;\n toggleMeridiem: string;\n selectMonth: string;\n decrementMinute: string;\n pickMinute: string;\n nextYear: string;\n previousYear: string;\n previousDecade: string;\n locale: string;\n };\n keepInvalid: boolean;\n debug: boolean;\n allowInputToggle: boolean;\n viewDate: DateTime;\n multipleDates: boolean;\n multipleDatesSeparator: string;\n promptTimeOnDateChange: boolean;\n promptTimeOnDateChangeTransitionDelay: number;\n hooks: {\n inputParse: (value: any) => DateTime;\n inputFormat: (date: DateTime) => string;\n };\n}\n\nexport class OptionConverter {\n static _mergeOptions(providedOptions: Options, mergeTo: Options): Options {\n const newOptions = {} as Options;\n let path = '';\n const ignoreProperties = ['inputParse', 'inputFormat'];\n\n const processKey = (key, value, providedType, defaultType) => {\n switch (key) {\n case 'defaultDate': {\n const dateTime = this._dateConversion(value, 'defaultDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'defaultDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'viewDate': {\n const dateTime = this._dateConversion(value, 'viewDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'viewDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'minDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.minDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.minDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'maxDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.maxDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.maxDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'disabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.disabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.disabledHours',\n 0,\n 23\n );\n return value;\n case 'enabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.enabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.enabledHours',\n 0,\n 23\n );\n return value;\n case 'daysOfWeekDisabled':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.daysOfWeekDisabled',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 6).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.daysOfWeekDisabled',\n 0,\n 6\n );\n return value;\n case 'enabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.enabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.disabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledTimeIntervals':\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n key,\n providedType,\n 'array of { from: DateTime|Date, to: DateTime|Date }'\n );\n }\n const valueObject = value as { from: any; to: any }[];\n for (let i = 0; i < valueObject.length; i++) {\n Object.keys(valueObject[i]).forEach((vk) => {\n const subOptionName = `${key}[${i}].${vk}`;\n let d = valueObject[i][vk];\n const dateTime = this._dateConversion(d, subOptionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n subOptionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n valueObject[i][vk] = dateTime;\n });\n }\n return valueObject;\n case 'toolbarPlacement':\n case 'type':\n case 'viewMode':\n case 'dayViewHeaderFormat':\n const optionValues = {\n toolbarPlacement: ['top', 'bottom', 'default'],\n type: ['icons', 'sprites'],\n viewMode: ['clock', 'calendar', 'months', 'years', 'decades'],\n dayViewHeaderFormat: [\n 'numeric',\n '2-digit',\n 'long',\n 'short',\n 'narrow',\n ],\n };\n const keyOptions = optionValues[key];\n if (!keyOptions.includes(value))\n Namespace.errorMessages.unexpectedOptionValue(\n path.substring(1),\n value,\n keyOptions\n );\n\n return value;\n case 'inputParse':\n case 'inputFormat':\n return value;\n default:\n switch (defaultType) {\n case 'boolean':\n return value === 'true' || value === true;\n case 'number':\n return +value;\n case 'string':\n return value.toString();\n case 'object':\n return {};\n case 'function':\n return value;\n default:\n Namespace.errorMessages.typeMismatch(\n path.substring(1),\n providedType,\n defaultType\n );\n }\n }\n };\n\n /**\n * The spread operator caused sub keys to be missing after merging.\n * This is to fix that issue by using spread on the child objects first.\n * Also handles complex options like disabledDates\n * @param provided An option from new providedOptions\n * @param mergeOption Default option to compare types against\n * @param copyTo Destination object. This was add to prevent reference copies\n */\n const spread = (provided, mergeOption, copyTo) => {\n const unsupportedOptions = Object.keys(provided).filter(\n (x) => !Object.keys(mergeOption).includes(x)\n );\n if (unsupportedOptions.length > 0) {\n const flattenedOptions = OptionConverter._flattenDefaultOptions;\n\n const errors = unsupportedOptions.map((x) => {\n let error = `\"${path.substring(1)}.${x}\" in not a known option.`;\n let didYouMean = flattenedOptions.find((y) => y.includes(x));\n if (didYouMean) error += `Did you mean \"${didYouMean}\"?`;\n return error;\n });\n Namespace.errorMessages.unexpectedOptions(errors);\n }\n Object.keys(mergeOption).forEach((key) => {\n const defaultOptionValue = mergeOption[key];\n let providedType = typeof provided[key];\n let defaultType = typeof defaultOptionValue;\n let value = provided[key];\n if (!provided.hasOwnProperty(key)) {\n if (\n defaultType === 'undefined' ||\n (value?.length === 0 && Array.isArray(defaultOptionValue))\n ) {\n copyTo[key] = defaultOptionValue;\n return;\n }\n provided[key] = defaultOptionValue;\n value = provided[key];\n }\n path += `.${key}`;\n copyTo[key] = processKey(key, value, providedType, defaultType);\n\n if (typeof defaultOptionValue !== 'object' || ignoreProperties.includes(key)) {\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n return;\n }\n if (!Array.isArray(provided[key])) {\n spread(provided[key], defaultOptionValue, copyTo[key]);\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n }\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n });\n };\n spread(providedOptions, mergeTo, newOptions);\n\n return newOptions;\n }\n\n static _dataToOptions(element, options: Options): Options {\n const eData = element.dataset;\n if (\n !eData ||\n Object.keys(eData).length === 0 ||\n eData.constructor !== DOMStringMap\n )\n return options;\n let dataOptions = {} as Options;\n\n // because dataset returns camelCase including the 'td' key the option\n // key won't align\n const objectToNormalized = (object) => {\n const lowered = {};\n Object.keys(object).forEach((x) => {\n lowered[x.toLowerCase()] = x;\n });\n\n return lowered;\n };\n\n const rabbitHole = (\n split: string[],\n index: number,\n optionSubgroup: {},\n value: any\n ) => {\n // first round = display { ... }\n const normalizedOptions = objectToNormalized(optionSubgroup);\n\n const keyOption = normalizedOptions[split[index].toLowerCase()];\n const internalObject = {};\n\n if (keyOption === undefined) return internalObject;\n\n // if this is another object, continue down the rabbit hole\n if (optionSubgroup[keyOption].constructor === Object) {\n index++;\n internalObject[keyOption] = rabbitHole(\n split,\n index,\n optionSubgroup[keyOption],\n value\n );\n } else {\n internalObject[keyOption] = value;\n }\n return internalObject;\n };\n const optionsLower = objectToNormalized(options);\n\n Object.keys(eData)\n .filter((x) => x.startsWith(Namespace.dataKey))\n .map((x) => x.substring(2))\n .forEach((key) => {\n let keyOption = optionsLower[key.toLowerCase()];\n\n // dataset merges dashes to camelCase... yay\n // i.e. key = display_components_seconds\n if (key.includes('_')) {\n // [display, components, seconds]\n const split = key.split('_');\n // display\n keyOption = optionsLower[split[0].toLowerCase()];\n if (\n keyOption !== undefined &&\n options[keyOption].constructor === Object\n ) {\n dataOptions[keyOption] = rabbitHole(\n split,\n 1,\n options[keyOption],\n eData[`td${key}`]\n );\n }\n }\n // or key = multipleDate\n else if (keyOption !== undefined) {\n dataOptions[keyOption] = eData[`td${key}`];\n }\n });\n\n return this._mergeOptions(dataOptions, options);\n }\n\n /**\n * Attempts to prove `d` is a DateTime or Date or can be converted into one.\n * @param d If a string will attempt creating a date from it.\n * @private\n */\n static _dateTypeCheck(d: any): DateTime | null {\n if (d.constructor.name === DateTime.name) return d;\n if (d.constructor.name === Date.name) {\n return DateTime.convert(d);\n }\n if (typeof d === typeof '') {\n const dateTime = new DateTime(d);\n if (JSON.stringify(dateTime) === 'null') {\n return null;\n }\n return dateTime;\n }\n return null;\n }\n\n /**\n * Type checks that `value` is an array of Date or DateTime\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckDateArray(optionName: string, value, providedType: string) {\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of DateTime or Date'\n );\n }\n for (let i = 0; i < value.length; i++) {\n let d = value[i];\n const dateTime = this._dateConversion(d, optionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n value[i] = dateTime;\n }\n }\n\n /**\n * Type checks that `value` is an array of numbers\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckNumberArray(\n optionName: string,\n value,\n providedType: string\n ) {\n if (!Array.isArray(value) || value.find((x) => typeof x !== typeof 0)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of numbers'\n );\n }\n return;\n }\n\n /**\n * Attempts to convert `d` to a DateTime object\n * @param d value to convert\n * @param optionName Provides text to error messages e.g. disabledDates\n */\n static _dateConversion(d: any, optionName: string) {\n if (typeof d === typeof '' && optionName !== 'input') {\n Namespace.errorMessages.dateString();\n }\n\n const converted = this._dateTypeCheck(d);\n\n if (!converted) {\n Namespace.errorMessages.failedToParseDate(\n optionName,\n d,\n optionName === 'input'\n );\n }\n return converted;\n }\n\n private static _flatback: string[];\n\n private static get _flattenDefaultOptions(): string[] {\n if (this._flatback) return this._flatback;\n const deepKeys = (t, pre = []) =>\n Array.isArray(t)\n ? []\n : Object(t) === t\n ? Object.entries(t).flatMap(([k, v]) => deepKeys(v, [...pre, k]))\n : pre.join('.');\n\n this._flatback = deepKeys(DefaultOptions);\n\n return this._flatback;\n }\n\n /**\n * Some options conflict like min/max date. Verify that these kinds of options\n * are set correctly.\n * @param config\n */\n static _validateConflcits(config: Options) {\n if (config.restrictions.minDate && config.restrictions.maxDate) {\n if (config.restrictions.minDate.isAfter(config.restrictions.maxDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'minDate is after maxDate'\n );\n }\n\n if (config.restrictions.maxDate.isBefore(config.restrictions.minDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'maxDate is before minDate'\n );\n }\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport { ChangeEvent, FailEvent } from './event-types';\nimport { OptionConverter } from './options';\n\nexport default class Dates {\n private _dates: DateTime[] = [];\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Returns the array of selected dates\n */\n get picked(): DateTime[] {\n return this._dates;\n }\n\n /**\n * Returns the last picked value.\n */\n get lastPicked(): DateTime {\n return this._dates[this.lastPickedIndex];\n }\n\n /**\n * Returns the length of picked dates -1 or 0 if none are selected.\n */\n get lastPickedIndex(): number {\n if (this._dates.length === 0) return 0;\n return this._dates.length - 1;\n }\n\n /**\n * Adds a new DateTime to selected dates array\n * @param date\n */\n add(date: DateTime): void {\n this._dates.push(date);\n }\n\n /**\n * Tries to convert the provided value to a DateTime object.\n * If value is null|undefined then clear the value of the provided index (or 0).\n * @param value Value to convert or null|undefined\n * @param index When using multidates this is the index in the array\n * @param from Used in the warning message, useful for debugging.\n */\n set(value: any, index?: number, from: string = 'date.set') {\n if (!value) this._setValue(value, index);\n const converted = OptionConverter._dateConversion(value, from);\n if (converted) this._setValue(converted, index);\n }\n\n /**\n * Returns true if the `targetDate` is part of the selected dates array.\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n isPicked(targetDate: DateTime, unit?: Unit): boolean {\n if (!unit) return this._dates.find((x) => x === targetDate) !== undefined;\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return (\n this._dates\n .map((x) => x.format(format))\n .find((x) => x === innerDateFormatted) !== undefined\n );\n }\n\n /**\n * Returns the index at which `targetDate` is in the array.\n * This is used for updating or removing a date when multi-date is used\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n pickedIndex(targetDate: DateTime, unit?: Unit): number {\n if (!unit) return this._dates.indexOf(targetDate);\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return this._dates.map((x) => x.format(format)).indexOf(innerDateFormatted);\n }\n\n /**\n * Clears all selected dates.\n */\n clear() {\n this._context._unset = true;\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate: this.lastPicked,\n isClear: true,\n isValid: true,\n } as ChangeEvent);\n this._dates = [];\n }\n\n /**\n * Find the \"book end\" years given a `year` and a `factor`\n * @param factor e.g. 100 for decades\n * @param year e.g. 2021\n */\n static getStartEndYear(\n factor: number,\n year: number\n ): [number, number, number] {\n const step = factor / 10,\n startYear = Math.floor(year / factor) * factor,\n endYear = startYear + step * 9,\n focusValue = Math.floor(year / step) * step;\n return [startYear, endYear, focusValue];\n }\n\n /**\n * Do not use direectly. Attempts to either clear or set the `target` date at `index`.\n * If the `target` is null then the date will be cleared.\n * If multi-date is being used then it will be removed from the array.\n * If `target` is valid and multi-date is used then if `index` is\n * provided the date at that index will be replaced, otherwise it is appended.\n * @param target\n * @param index\n */\n _setValue(target?: DateTime, index?: number): void {\n const noIndex = typeof index === 'undefined',\n isClear = !target && noIndex;\n let oldDate = this._context._unset ? null : this._dates[index];\n if (!oldDate && !this._context._unset && noIndex && isClear) {\n oldDate = this.lastPicked;\n }\n\n if (target && oldDate?.isSame(target)) return;\n\n const updateInput = () => {\n if (!this._context._input) return;\n\n let newValue = this._context._options.hooks.inputFormat(target);\n if (this._context._options.multipleDates) {\n newValue = this._dates\n .map((d) => this._context._options.hooks.inputFormat(d))\n .join(this._context._options.multipleDatesSeparator);\n }\n if (this._context._input.value != newValue)\n this._context._input.value = newValue;\n };\n\n // case of calling setValue(null)\n if (!target) {\n if (\n !this._context._options.multipleDates ||\n this._dates.length === 1 ||\n isClear\n ) {\n this._context._unset = true;\n this._dates = [];\n } else {\n this._dates.splice(index, 1);\n }\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n\n updateInput();\n this._context._display._update('all');\n return;\n }\n\n index = index || 0;\n target = target.clone;\n\n // minute stepping is being used, force the minute to the closest value\n if (this._context._options.stepping !== 1) {\n target.minutes =\n Math.round(target.minutes / this._context._options.stepping) *\n this._context._options.stepping;\n target.seconds = 0;\n }\n\n if (this._context._validation.isValid(target)) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._unset = false;\n this._context._display._update('all');\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n return;\n }\n\n if (this._context._options.keepInvalid) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: false,\n } as ChangeEvent);\n }\n this._context._triggerEvent({\n type: Namespace.events.error,\n reason: Namespace.errorMessages.failedToSetInvalidDate,\n date: target,\n oldDate,\n } as FailEvent);\n }\n\n /**\n * Returns a format object based on the granularity of `unit`\n * @param unit\n */\n static getFormatByUnit(unit: Unit): object {\n switch (unit) {\n case 'date':\n return { dateStyle: 'short' };\n case 'month':\n return {\n month: 'numeric',\n year: 'numeric',\n };\n case 'year':\n return { year: 'numeric' };\n }\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { DateTime, Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\nimport Dates from '../../dates';\n\n/**\n * Creates and updates the grid for `year`\n */\nexport default class YearDisplay {\n private _context: TempusDominus;\n private _startYear: DateTime;\n private _endYear: DateTime;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.yearsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectYear);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update() {\n const [start, end] = Dates.getStartEndYear(\n 10,\n this._context._viewDate.year\n );\n this._startYear = this._context._viewDate.clone.manipulate(-1, Unit.year);\n this._endYear = this._context._viewDate.clone.manipulate(10, Unit.year);\n\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.yearsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.yearsContainer,\n `${this._startYear.year}-${this._endYear.year}`\n );\n\n this._context._validation.isValid(this._startYear, Unit.year)\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n this._context._validation.isValid(this._endYear, Unit.year)\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone\n .startOf(Unit.year)\n .manipulate(-1, Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectYear}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.year);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.year)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.year)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.year}`);\n containerClone.innerText = `${innerDate.year}`;\n\n innerDate.manipulate(1, Unit.year);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport Dates from '../../dates';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `seconds`\r\n */\r\nexport default class DecadeDisplay {\r\n private _context: TempusDominus;\r\n private _startDecade: DateTime;\r\n private _endDecade: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker() {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.decadesContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDecade);\r\n container.appendChild(div);\r\n }\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 100,\r\n this._context._viewDate.year\r\n );\r\n this._startDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._startDecade.year = start;\r\n this._endDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._endDecade.year = end;\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.decadesContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.decadesContainer,\r\n `${this._startDecade.year}-${this._endDecade.year}`\r\n );\r\n\r\n this._context._validation.isValid(this._startDecade, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endDecade, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n const pickedYears = this._context.dates.picked.map((x) => x.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectDecade}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (index === 0) {\r\n containerClone.classList.add(Namespace.css.old);\r\n if (this._startDecade.year - 10 < 0) {\r\n containerClone.textContent = ' ';\r\n previous.classList.add(Namespace.css.disabled);\r\n containerClone.classList.add(Namespace.css.disabled);\r\n containerClone.setAttribute('data-value', ``);\r\n return;\r\n } else {\r\n containerClone.innerText = `${this._startDecade.year - 10}`;\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n return;\r\n }\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.decade);\r\n const startDecadeYear = this._startDecade.year;\r\n const endDecadeYear = this._startDecade.year + 9;\r\n\r\n if (\r\n !this._context._unset &&\r\n pickedYears.filter((x) => x >= startDecadeYear && x <= endDecadeYear)\r\n .length > 0\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n containerClone.innerText = `${this._startDecade.year}`;\r\n\r\n this._startDecade.manipulate(10, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates the clock display\n */\nexport default class TimeDisplay {\n private _context: TempusDominus;\n private _gridColumns = '';\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the clock display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.clockContainer);\n\n container.append(...this._grid());\n\n return container;\n }\n\n /**\n * Populates the various elements with in the clock display\n * like the current hour and if the manipulation icons are enabled.\n * @private\n */\n _update(): void {\n const timesDiv = (\n this._context._display.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0]\n );\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n timesDiv\n .querySelectorAll('.disabled')\n .forEach((element) => element.classList.remove(Namespace.css.disabled));\n\n if (this._context._options.display.components.hours) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.hours}]`\n ).innerText = this._context._options.display.components.useTwentyfourHour\n ? lastPicked.hoursFormatted\n : lastPicked.twelveHoursFormatted;\n }\n\n if (this._context._options.display.components.minutes) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.minutes}]`\n ).innerText = lastPicked.minutesFormatted;\n }\n\n if (this._context._options.display.components.seconds) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.seconds}]`\n ).innerText = lastPicked.secondsFormatted;\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n const toggle = timesDiv.querySelector(\n `[data-action=${ActionTypes.toggleMeridiem}]`\n );\n\n toggle.innerText = lastPicked.meridiem();\n\n if (\n !this._context._validation.isValid(\n lastPicked.clone.manipulate(\n lastPicked.hours >= 12 ? -12 : 12,\n Unit.hours\n )\n )\n ) {\n toggle.classList.add(Namespace.css.disabled);\n } else {\n toggle.classList.remove(Namespace.css.disabled);\n }\n }\n\n timesDiv.style.gridTemplateAreas = `\"${this._gridColumns}\"`;\n }\n\n /**\n * Creates the table for the clock display depending on what options are selected.\n * @private\n */\n private _grid(): HTMLElement[] {\n this._gridColumns = '';\n const top = [],\n middle = [],\n bottom = [],\n separator = document.createElement('div'),\n upIcon = this._context._display._iconTag(\n this._context._options.display.icons.up\n ),\n downIcon = this._context._display._iconTag(\n this._context._options.display.icons.down\n );\n\n separator.classList.add(Namespace.css.separator, Namespace.css.noHighlight);\n const separatorColon = separator.cloneNode(true);\n separatorColon.innerHTML = ':';\n\n const getSeparator = (colon = false): HTMLElement => {\n return colon\n ? separatorColon.cloneNode(true)\n : separator.cloneNode(true);\n };\n\n if (this._context._options.display.components.hours) {\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.incrementHours);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickHour\n );\n divElement.setAttribute('data-action', ActionTypes.showHours);\n divElement.setAttribute('data-time-component', Unit.hours);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.decrementHours);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n this._gridColumns += 'a';\n }\n\n if (this._context._options.display.components.minutes) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.hours) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.incrementMinutes);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickMinute\n );\n divElement.setAttribute('data-action', ActionTypes.showMinutes);\n divElement.setAttribute('data-time-component', Unit.minutes);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.decrementMinutes);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (this._context._options.display.components.seconds) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.minutes) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.incrementSeconds);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickSecond\n );\n divElement.setAttribute('data-action', ActionTypes.showSeconds);\n divElement.setAttribute('data-time-component', Unit.seconds);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.decrementSeconds);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n this._gridColumns += ' a';\n let divElement = getSeparator();\n top.push(divElement);\n\n let button = document.createElement('button');\n button.setAttribute(\n 'title',\n this._context._options.localization.toggleMeridiem\n );\n button.setAttribute('data-action', ActionTypes.toggleMeridiem);\n button.setAttribute('tabindex', '-1');\n button.classList.add(Namespace.css.toggleMeridiem);\n\n divElement = document.createElement('div');\n divElement.classList.add(Namespace.css.noHighlight);\n divElement.appendChild(button);\n middle.push(divElement);\n\n divElement = getSeparator();\n bottom.push(divElement);\n }\n\n this._gridColumns = this._gridColumns.trim();\n\n return [...top, ...middle, ...bottom];\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `hours`\n */\nexport default class HourDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.hourContainer);\n\n for (\n let i = 0;\n i <\n (this._context._options.display.components.useTwentyfourHour ? 24 : 12);\n i++\n ) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectHour);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.hourContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.date);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectHour}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.hour);\n\n if (!this._context._validation.isValid(innerDate, Unit.hours)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.hours}`);\n containerClone.innerText = this._context._options.display.components\n .useTwentyfourHour\n ? innerDate.hoursFormatted\n : innerDate.twelveHoursFormatted;\n innerDate.manipulate(1, Unit.hours);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `minutes`\n */\nexport default class MinuteDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.minuteContainer);\n\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n for (let i = 0; i < 60 / step; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMinute);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.minuteContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.hours);\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMinute}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.minute);\n\n if (!this._context._validation.isValid(innerDate, Unit.minutes)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.minutes}`);\n containerClone.innerText = innerDate.minutesFormatted;\n innerDate.manipulate(step, Unit.minutes);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class secondDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.secondContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectSecond);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.secondContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.minutes);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectSecond}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.second);\n\n if (!this._context._validation.isValid(innerDate, Unit.seconds)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.seconds}`);\n containerClone.innerText = innerDate.secondsFormatted;\n innerDate.manipulate(5, Unit.seconds);\n });\n }\n}\n","import DateDisplay from './calendar/date-display';\r\nimport MonthDisplay from './calendar/month-display';\r\nimport YearDisplay from './calendar/year-display';\r\nimport DecadeDisplay from './calendar/decade-display';\r\nimport TimeDisplay from './time/time-display';\r\nimport HourDisplay from './time/hour-display';\r\nimport MinuteDisplay from './time/minute-display';\r\nimport SecondDisplay from './time/second-display';\r\nimport { DateTime, Unit } from '../datetime';\r\nimport { DatePickerModes } from '../conts';\r\nimport { TempusDominus } from '../tempus-dominus';\r\nimport { ActionTypes } from '../actions';\r\nimport { createPopper } from '@popperjs/core';\r\nimport Namespace from '../namespace';\r\nimport { HideEvent } from '../event-types';\r\n\r\n/**\r\n * Main class for all things display related.\r\n */\r\nexport default class Display {\r\n private _context: TempusDominus;\r\n private _dateDisplay: DateDisplay;\r\n private _monthDisplay: MonthDisplay;\r\n private _yearDisplay: YearDisplay;\r\n private _decadeDisplay: DecadeDisplay;\r\n private _timeDisplay: TimeDisplay;\r\n private _widget: HTMLElement;\r\n private _hourDisplay: HourDisplay;\r\n private _minuteDisplay: MinuteDisplay;\r\n private _secondDisplay: SecondDisplay;\r\n private _popperInstance: any;\r\n private _isVisible = false;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this._dateDisplay = new DateDisplay(context);\r\n this._monthDisplay = new MonthDisplay(context);\r\n this._yearDisplay = new YearDisplay(context);\r\n this._decadeDisplay = new DecadeDisplay(context);\r\n this._timeDisplay = new TimeDisplay(context);\r\n this._hourDisplay = new HourDisplay(context);\r\n this._minuteDisplay = new MinuteDisplay(context);\r\n this._secondDisplay = new SecondDisplay(context);\r\n\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Returns the widget body or undefined\r\n * @private\r\n */\r\n get widget(): HTMLElement | undefined {\r\n return this._widget;\r\n }\r\n\r\n /**\r\n * Returns this visible state of the picker (shown)\r\n */\r\n get isVisible() {\r\n return this._isVisible;\r\n }\r\n\r\n /**\r\n * Updates the table for a particular unit. Used when an option as changed or\r\n * whenever the class list might need to be refreshed.\r\n * @param unit\r\n * @private\r\n */\r\n _update(unit: Unit | 'clock' | 'calendar' | 'all'): void {\r\n if (!this.widget) return;\r\n //todo do I want some kind of error catching or other guards here?\r\n switch (unit) {\r\n case Unit.seconds:\r\n this._secondDisplay._update();\r\n break;\r\n case Unit.minutes:\r\n this._minuteDisplay._update();\r\n break;\r\n case Unit.hours:\r\n this._hourDisplay._update();\r\n break;\r\n case Unit.date:\r\n this._dateDisplay._update();\r\n break;\r\n case Unit.month:\r\n this._monthDisplay._update();\r\n break;\r\n case Unit.year:\r\n this._yearDisplay._update();\r\n break;\r\n case 'clock':\r\n this._timeDisplay._update();\r\n this._update(Unit.hours);\r\n this._update(Unit.minutes);\r\n this._update(Unit.seconds);\r\n break;\r\n case 'calendar':\r\n this._update(Unit.date);\r\n this._update(Unit.year);\r\n this._update(Unit.month);\r\n this._decadeDisplay._update();\r\n this._updateCalendarHeader();\r\n break;\r\n case 'all':\r\n if (this._hasTime) {\r\n this._update('clock');\r\n }\r\n if (this._hasDate) {\r\n this._update('calendar');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Shows the picker and creates a Popper instance if needed.\r\n * Add document click event to hide when clicking outside the picker.\r\n * @fires Events#show\r\n */\r\n show(): void {\r\n if (this.widget == undefined) {\r\n if (\r\n this._context._options.useCurrent &&\r\n !this._context._options.defaultDate &&\r\n !this._context._input?.value\r\n ) {\r\n //todo in the td4 branch a pr changed this to allow granularity\r\n const date = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n if (!this._context._options.keepInvalid) {\r\n let tries = 0;\r\n let direction = 1;\r\n if (this._context._options.restrictions.maxDate?.isBefore(date)) {\r\n direction = -1;\r\n }\r\n while (!this._context._validation.isValid(date)) {\r\n date.manipulate(direction, Unit.date);\r\n if (tries > 31) break;\r\n tries++;\r\n }\r\n }\r\n this._context.dates._setValue(date);\r\n }\r\n\r\n if (this._context._options.defaultDate) {\r\n this._context.dates._setValue(this._context._options.defaultDate);\r\n }\r\n\r\n this._buildWidget();\r\n if (this._hasDate) {\r\n this._showMode();\r\n }\r\n\r\n if (!this._context._options.display.inline) {\r\n document.body.appendChild(this.widget);\r\n\r\n this._popperInstance = createPopper(\r\n this._context._element,\r\n this.widget,\r\n {\r\n modifiers: [\r\n /* {\r\n name: 'offset',\r\n options: {\r\n offset: [2, 8],\r\n },\r\n },*/\r\n { name: 'eventListeners', enabled: true },\r\n ],\r\n placement: 'bottom-start',\r\n }\r\n );\r\n } else {\r\n this._context._element.appendChild(this.widget);\r\n }\r\n\r\n if (this._context._options.display.viewMode == 'clock') {\r\n this._context._action.do(\r\n {\r\n currentTarget: this.widget.querySelector(\r\n `.${Namespace.css.timeContainer}`\r\n ),\r\n },\r\n ActionTypes.showClock\r\n );\r\n }\r\n\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.addEventListener('click', this._actionsClickEvent)\r\n );\r\n\r\n // show the clock when using sideBySide\r\n if (this._context._options.display.sideBySide) {\r\n this._timeDisplay._update();\r\n (\r\n this.widget.getElementsByClassName(\r\n Namespace.css.clockContainer\r\n )[0] as HTMLElement\r\n ).style.display = 'grid';\r\n }\r\n }\r\n\r\n this.widget.classList.add(Namespace.css.show);\r\n if (!this._context._options.display.inline) {\r\n this._popperInstance.update();\r\n document.addEventListener('click', this._documentClickEvent);\r\n }\r\n this._context._triggerEvent({ type: Namespace.events.show });\r\n this._isVisible = true;\r\n }\r\n\r\n /**\r\n * Changes the calendar view mode. E.g. month <-> year\r\n * @param direction -/+ number to move currentViewMode\r\n * @private\r\n */\r\n _showMode(direction?: number): void {\r\n if (!this.widget) {\r\n return;\r\n }\r\n if (direction) {\r\n const max = Math.max(\r\n this._context._minViewModeNumber,\r\n Math.min(3, this._context._currentViewMode + direction)\r\n );\r\n if (this._context._currentViewMode == max) return;\r\n this._context._currentViewMode = max;\r\n }\r\n\r\n this.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div:not(.${Namespace.css.clockContainer})`\r\n )\r\n .forEach((e: HTMLElement) => (e.style.display = 'none'));\r\n\r\n const datePickerMode = DatePickerModes[this._context._currentViewMode];\r\n let picker: HTMLElement = this.widget.querySelector(\r\n `.${datePickerMode.className}`\r\n );\r\n\r\n switch (datePickerMode.className) {\r\n case Namespace.css.decadesContainer:\r\n this._decadeDisplay._update();\r\n break;\r\n case Namespace.css.yearsContainer:\r\n this._yearDisplay._update();\r\n break;\r\n case Namespace.css.monthsContainer:\r\n this._monthDisplay._update();\r\n break;\r\n case Namespace.css.daysContainer:\r\n this._dateDisplay._update();\r\n break;\r\n }\r\n\r\n picker.style.display = 'grid';\r\n this._updateCalendarHeader();\r\n }\r\n\r\n _updateCalendarHeader() {\r\n const showing = [\r\n ...this.widget.querySelector(\r\n `.${Namespace.css.dateContainer} div[style*=\"display: grid\"]`\r\n ).classList,\r\n ].find((x) => x.startsWith(Namespace.css.dateContainer));\r\n\r\n const [previous, switcher, next] = this._context._display.widget\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switch (showing) {\r\n case Namespace.css.decadesContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousCentury\r\n );\r\n switcher.setAttribute('title', '');\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextCentury\r\n );\r\n break;\r\n case Namespace.css.yearsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousDecade\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDecade\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextDecade\r\n );\r\n break;\r\n case Namespace.css.monthsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousYear\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectYear\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextYear\r\n );\r\n break;\r\n case Namespace.css.daysContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousMonth\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectMonth\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextMonth\r\n );\r\n switcher.innerText = this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n });\r\n break;\r\n }\r\n switcher.innerText = switcher.getAttribute(showing);\r\n }\r\n\r\n /**\r\n * Hides the picker if needed.\r\n * Remove document click event to hide when clicking outside the picker.\r\n * @fires Events#hide\r\n */\r\n hide(): void {\r\n if (!this.widget || !this._isVisible) return;\r\n\r\n this.widget.classList.remove(Namespace.css.show);\r\n\r\n if (this._isVisible) {\r\n this._context._triggerEvent({\r\n type: Namespace.events.hide,\r\n date: this._context._unset\r\n ? null\r\n : this._context.dates.lastPicked\r\n ? this._context.dates.lastPicked.clone\r\n : void 0,\r\n } as HideEvent);\r\n this._isVisible = false;\r\n }\r\n\r\n document.removeEventListener('click', this._documentClickEvent);\r\n }\r\n\r\n /**\r\n * Toggles the picker's open state. Fires a show/hide event depending.\r\n */\r\n toggle() {\r\n return this._isVisible ? this.hide() : this.show();\r\n }\r\n\r\n /**\r\n * Removes document and data-action click listener and reset the widget\r\n * @private\r\n */\r\n _dispose() {\r\n document.removeEventListener('click', this._documentClickEvent);\r\n if (!this.widget) return;\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.removeEventListener('click', this._actionsClickEvent)\r\n );\r\n this.widget.parentNode.removeChild(this.widget);\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Builds the widgets html template.\r\n * @private\r\n */\r\n private _buildWidget(): HTMLElement {\r\n const template = document.createElement('div');\r\n template.classList.add(Namespace.css.widget);\r\n\r\n const dateView = document.createElement('div');\r\n dateView.classList.add(Namespace.css.dateContainer);\r\n dateView.append(\r\n this._headTemplate,\r\n this._decadeDisplay._picker,\r\n this._yearDisplay._picker,\r\n this._monthDisplay._picker,\r\n this._dateDisplay._picker\r\n );\r\n\r\n const timeView = document.createElement('div');\r\n timeView.classList.add(Namespace.css.timeContainer);\r\n timeView.appendChild(this._timeDisplay._picker);\r\n timeView.appendChild(this._hourDisplay._picker);\r\n timeView.appendChild(this._minuteDisplay._picker);\r\n timeView.appendChild(this._secondDisplay._picker);\r\n\r\n const toolbar = document.createElement('div');\r\n toolbar.classList.add(Namespace.css.toolbar);\r\n toolbar.append(...this._toolbar);\r\n\r\n if (this._context._options.display.inline) {\r\n template.classList.add(Namespace.css.inline);\r\n }\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n template.classList.add('calendarWeeks');\r\n }\r\n\r\n if (\r\n this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n template.classList.add(Namespace.css.sideBySide);\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n const row = document.createElement('div');\r\n row.classList.add('td-row');\r\n dateView.classList.add('td-half');\r\n timeView.classList.add('td-half');\r\n\r\n row.appendChild(dateView);\r\n row.appendChild(timeView);\r\n template.appendChild(row);\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n this._widget = template;\r\n return;\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n if (this._hasDate) {\r\n if (this._hasTime) {\r\n dateView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode !== 'clock')\r\n dateView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(dateView);\r\n }\r\n\r\n if (this._hasTime) {\r\n if (this._hasDate) {\r\n timeView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode === 'clock')\r\n timeView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(timeView);\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n const arrow = document.createElement('div');\r\n arrow.classList.add('arrow');\r\n arrow.setAttribute('data-popper-arrow', '');\r\n template.appendChild(arrow);\r\n\r\n this._widget = template;\r\n }\r\n\r\n /**\r\n * Returns true if the hours, minutes, or seconds component is turned on\r\n */\r\n get _hasTime(): boolean {\r\n return (\r\n this._context._options.display.components.clock &&\r\n (this._context._options.display.components.hours ||\r\n this._context._options.display.components.minutes ||\r\n this._context._options.display.components.seconds)\r\n );\r\n }\r\n\r\n /**\r\n * Returns true if the year, month, or date component is turned on\r\n */\r\n get _hasDate(): boolean {\r\n return (\r\n this._context._options.display.components.calendar &&\r\n (this._context._options.display.components.year ||\r\n this._context._options.display.components.month ||\r\n this._context._options.display.components.date)\r\n );\r\n }\r\n\r\n /**\r\n * Get the toolbar html based on options like buttons.today\r\n * @private\r\n */\r\n get _toolbar(): HTMLElement[] {\r\n const toolbar = [];\r\n\r\n if (this._context._options.display.buttons.today) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.today);\r\n div.setAttribute('title', this._context._options.localization.today);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.today)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (\r\n !this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n let title, icon;\r\n if (this._context._options.display.viewMode === 'clock') {\r\n title = this._context._options.localization.selectDate;\r\n icon = this._context._options.display.icons.date;\r\n } else {\r\n title = this._context._options.localization.selectTime;\r\n icon = this._context._options.display.icons.time;\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.togglePicker);\r\n div.setAttribute('title', title);\r\n\r\n div.appendChild(this._iconTag(icon));\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.clear) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.clear);\r\n div.setAttribute('title', this._context._options.localization.clear);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.clear)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.close) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.close);\r\n div.setAttribute('title', this._context._options.localization.close);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.close)\r\n );\r\n toolbar.push(div);\r\n }\r\n\r\n return toolbar;\r\n }\r\n\r\n /***\r\n * Builds the base header template with next and previous icons\r\n * @private\r\n */\r\n get _headTemplate(): HTMLElement {\r\n const calendarHeader = document.createElement('div');\r\n calendarHeader.classList.add(Namespace.css.calendarHeader);\r\n\r\n const previous = document.createElement('div');\r\n previous.classList.add(Namespace.css.previous);\r\n previous.setAttribute('data-action', ActionTypes.previous);\r\n previous.appendChild(\r\n this._iconTag(this._context._options.display.icons.previous)\r\n );\r\n\r\n const switcher = document.createElement('div');\r\n switcher.classList.add(Namespace.css.switch);\r\n switcher.setAttribute('data-action', ActionTypes.pickerSwitch);\r\n\r\n const next = document.createElement('div');\r\n next.classList.add(Namespace.css.next);\r\n next.setAttribute('data-action', ActionTypes.next);\r\n next.appendChild(this._iconTag(this._context._options.display.icons.next));\r\n\r\n calendarHeader.append(previous, switcher, next);\r\n return calendarHeader;\r\n }\r\n\r\n /**\r\n * Builds an icon tag as either an ``\r\n * or with icons.type is `sprites` then an svg tag instead\r\n * @param iconClass\r\n * @private\r\n */\r\n _iconTag(iconClass: string): HTMLElement {\r\n if (this._context._options.display.icons.type === 'sprites') {\r\n const svg = document.createElement('svg');\r\n svg.innerHTML = ``;\r\n return svg;\r\n }\r\n const icon = document.createElement('i');\r\n DOMTokenList.prototype.add.apply(icon.classList, iconClass.split(' '));\r\n return icon;\r\n }\r\n\r\n /**\r\n * A document click event to hide the widget if click is outside\r\n * @private\r\n * @param e MouseEvent\r\n */\r\n private _documentClickEvent = (e: MouseEvent) => {\r\n if (this._context._options.display.keepOpen ||\r\n this._context._options.debug ||\r\n (window as any).debug) return;\r\n\r\n if (\r\n this._isVisible &&\r\n !e.composedPath().includes(this.widget) && // click inside the widget\r\n !e.composedPath()?.includes(this._context._element) // click on the element\r\n ) {\r\n this.hide();\r\n }\r\n };\r\n\r\n /**\r\n * Click event for any action like selecting a date\r\n * @param e MouseEvent\r\n * @private\r\n */\r\n private _actionsClickEvent = (e: MouseEvent) => {\r\n this._context._action.do(e);\r\n };\r\n\r\n /**\r\n * Causes the widget to get rebuilt on next show. If the picker is already open\r\n * then hide and reshow it.\r\n * @private\r\n */\r\n _rebuild() {\r\n const wasVisible = this._isVisible;\r\n if (wasVisible) this.hide();\r\n this._dispose();\r\n if (wasVisible) {\r\n this.show();\r\n }\r\n }\r\n}\r\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Dates from './dates';\n\n/**\n * Main class for date validation rules based on the options provided.\n */\nexport default class Validation {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Checks to see if the target date is valid based on the rules provided in the options.\n * Granularity can be provide to chek portions of the date instead of the whole.\n * @param targetDate\n * @param granularity\n */\n isValid(targetDate: DateTime, granularity?: Unit): boolean {\n if (\n this._context._options.restrictions.disabledDates.length > 0 &&\n this._isInDisabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledDates.length > 0 &&\n !this._isInEnabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.daysOfWeekDisabled?.length > 0 &&\n this._context._options.restrictions.daysOfWeekDisabled.indexOf(\n targetDate.weekDay\n ) !== -1\n ) {\n return false;\n }\n\n if (\n this._context._options.restrictions.minDate &&\n targetDate.isBefore(\n this._context._options.restrictions.minDate,\n granularity\n )\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.maxDate &&\n targetDate.isAfter(\n this._context._options.restrictions.maxDate,\n granularity\n )\n ) {\n return false;\n }\n\n if (\n granularity === Unit.hours ||\n granularity === Unit.minutes ||\n granularity === Unit.seconds\n ) {\n if (\n this._context._options.restrictions.disabledHours.length > 0 &&\n this._isInDisabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledHours.length > 0 &&\n !this._isInEnabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.disabledTimeIntervals.length > 0\n ) {\n for (\n let i = 0;\n i < this._context._options.restrictions.disabledTimeIntervals.length;\n i++\n ) {\n if (\n targetDate.isBetween(\n this._context._options.restrictions.disabledTimeIntervals[i].from,\n this._context._options.restrictions.disabledTimeIntervals[i].to\n )\n )\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Checks to see if the disabledDates option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInDisabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledDates ||\n this._context._options.restrictions.disabledDates.length === 0\n )\n return false;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.disabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the enabledDates option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInEnabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledDates ||\n this._context._options.restrictions.enabledDates.length === 0\n )\n return true;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.enabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the disabledHours option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInDisabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledHours ||\n this._context._options.restrictions.disabledHours.length === 0\n )\n return false;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.disabledHours.find(\n (x) => x === formattedDate\n );\n }\n\n /**\n * Checks to see if the enabledHours option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInEnabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledHours ||\n this._context._options.restrictions.enabledHours.length === 0\n )\n return true;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.enabledHours.find(\n (x) => x === formattedDate\n );\n }\n}\n","import Display from './display/index';\nimport Validation from './validation';\nimport Dates from './dates';\nimport Actions, { ActionTypes } from './actions';\nimport { DatePickerModes, DefaultOptions } from './conts';\nimport { DateTime, DateTimeFormatOptions, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options, { OptionConverter } from './options';\nimport {\n BaseEvent,\n ChangeEvent,\n ViewUpdateEvent,\n FailEvent,\n} from './event-types';\n\n/**\n * A robust and powerful date/time picker component.\n */\nclass TempusDominus {\n dates: Dates;\n\n _options: Options;\n _currentViewMode = 0;\n _subscribers: { [key: string]: ((event: any) => {})[] } = {};\n _element: HTMLElement;\n _input: HTMLInputElement;\n _unset: boolean;\n _minViewModeNumber = 0;\n _display: Display;\n _validation: Validation;\n _action: Actions;\n private _isDisabled = false;\n private _notifyChangeEventContext = 0;\n private _toggle: HTMLElement;\n private _currentPromptTimeTimeout: any;\n\n constructor(element: HTMLElement, options: Options = {} as Options) {\n if (!element) {\n Namespace.errorMessages.mustProvideElement;\n }\n this._element = element;\n this._options = this._initializeOptions(options, DefaultOptions, true);\n this._viewDate.setLocale(this._options.localization.locale);\n this._unset = true;\n\n this._display = new Display(this);\n this._validation = new Validation(this);\n this.dates = new Dates(this);\n this._action = new Actions(this);\n\n this._initializeInput();\n this._initializeToggle();\n\n if (this._options.display.inline) this._display.show();\n }\n\n _viewDate = new DateTime();\n\n get viewDate() {\n return this._viewDate;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Update the picker options. If `reset` is provide `options` will be merged with DefaultOptions instead.\n * @param options\n * @param reset\n * @public\n */\n updateOptions(options, reset = false): void {\n if (reset) this._options = this._initializeOptions(options, DefaultOptions);\n else this._options = this._initializeOptions(options, this._options);\n this._display._rebuild();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Toggles the picker open or closed. If the picker is disabled, nothing will happen.\n * @public\n */\n toggle(): void {\n if (this._isDisabled) return;\n this._display.toggle();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Shows the picker unless the picker is disabled.\n * @public\n */\n show(): void {\n if (this._isDisabled) return;\n this._display.show();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker unless the picker is disabled.\n * @public\n */\n hide(): void {\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Disables the picker and the target input field.\n * @public\n */\n disable(): void {\n this._isDisabled = true;\n // todo this might be undesired. If a dev disables the input field to\n // only allow using the picker, this will break that.\n this._input?.setAttribute('disabled', 'disabled');\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Enables the picker and the target input field.\n * @public\n */\n enable(): void {\n this._isDisabled = false;\n this._input?.removeAttribute('disabled');\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Clears all the selected dates\n * @public\n */\n clear(): void {\n this.dates.clear();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Allows for a direct subscription to picker events, without having to use addEventListener on the element.\n * @param eventTypes See Namespace.Events\n * @param callbacks Function to call when event is triggered\n * @public\n */\n subscribe(\n eventTypes: string | string[],\n callbacks: (event: any) => void | ((event: any) => void)[]\n ): { unsubscribe: void }[] {\n if (typeof eventTypes === 'string') {\n eventTypes = [eventTypes];\n }\n let callBackArray = [];\n if (!Array.isArray(callbacks)) {\n callBackArray = [callbacks];\n } else {\n callBackArray = callbacks;\n }\n\n if (eventTypes.length !== callBackArray.length) {\n Namespace.errorMessages.subscribeMismatch;\n }\n\n const returnArray = [];\n\n for (let i = 0; i < eventTypes.length; i++) {\n const eventType = eventTypes[i];\n if (!Array.isArray(this._subscribers[eventType])) {\n this._subscribers[eventType] = [];\n }\n\n this._subscribers[eventType].push(callBackArray[i]);\n\n returnArray.push({\n unsubscribe: this._unsubscribe.bind(\n this,\n eventType,\n this._subscribers[eventType].length - 1\n ),\n });\n\n if (eventTypes.length === 1) {\n return returnArray[0];\n }\n }\n\n return returnArray;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker and removes event listeners\n */\n dispose() {\n this._display.hide();\n // this will clear the document click event listener\n this._display._dispose();\n this._input?.removeEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input?.removeEventListener('click', this._toggleClickEvent);\n }\n this._toggle.removeEventListener('click', this._toggleClickEvent);\n this._subscribers = {};\n }\n\n /**\n * Triggers an event like ChangeEvent when the picker has updated the value\n * of a selected date.\n * @param event Accepts a BaseEvent object.\n * @private\n */\n _triggerEvent(event: BaseEvent) {\n // checking hasOwnProperty because the BasicEvent also falls through here otherwise\n if ((event as ChangeEvent) && event.hasOwnProperty('date')) {\n const { date, oldDate, isClear } = event as ChangeEvent;\n // this was to prevent a max call stack error\n // https://github.com/tempusdominus/core/commit/15a280507f5277b31b0b3319ab1edc7c19a000fb\n // todo see if this is still needed or if there's a cleaner way\n this._notifyChangeEventContext++;\n if (\n (date && oldDate && date.isSame(oldDate)) ||\n (!isClear && !date && !oldDate) ||\n this._notifyChangeEventContext > 1\n ) {\n this._notifyChangeEventContext = 0;\n return;\n }\n this._handleAfterChangeEvent(event as ChangeEvent);\n }\n\n this._element.dispatchEvent(\n new CustomEvent(event.type, { detail: event as any })\n );\n\n if ((window as any).jQuery) {\n const $ = (window as any).jQuery;\n $(this._element).trigger(event);\n }\n\n const publish = () => {\n // return if event is not subscribed\n if (!Array.isArray(this._subscribers[event.type])) {\n return;\n }\n\n // Trigger callback for each subscriber\n this._subscribers[event.type].forEach((callback) => {\n callback(event);\n });\n };\n\n publish();\n\n this._notifyChangeEventContext = 0;\n }\n\n /**\n * Fires a ViewUpdate event when, for example, the month view is changed.\n * @param {Unit} unit\n * @private\n */\n _viewUpdate(unit: Unit) {\n this._triggerEvent({\n type: Namespace.events.update,\n change: unit,\n viewDate: this._viewDate.clone,\n } as ViewUpdateEvent);\n }\n\n private _unsubscribe(eventName, index) {\n this._subscribers[eventName].splice(index, 1);\n }\n\n /**\n * Merges two Option objects together and validates options type\n * @param config new Options\n * @param mergeTo Options to merge into\n * @param includeDataset When true, the elements data-td attributes will be included in the\n * @private\n */\n private _initializeOptions(\n config: Options,\n mergeTo: Options,\n includeDataset = false\n ): Options {\n config = OptionConverter._mergeOptions(config, mergeTo);\n if (includeDataset)\n config = OptionConverter._dataToOptions(this._element, config);\n\n OptionConverter._validateConflcits(config);\n\n config.viewDate = config.viewDate.setLocale(config.localization.locale);\n\n if (!this._viewDate.isSame(config.viewDate)) {\n this._viewDate = config.viewDate;\n }\n\n /**\n * Sets the minimum view allowed by the picker. For example the case of only\n * allowing year and month to be selected but not date.\n */\n if (config.display.components.year) {\n this._minViewModeNumber = 2;\n }\n if (config.display.components.month) {\n this._minViewModeNumber = 1;\n }\n if (config.display.components.date) {\n this._minViewModeNumber = 0;\n }\n\n this._currentViewMode = Math.max(\n this._minViewModeNumber,\n this._currentViewMode\n );\n\n // Update view mode if needed\n if (\n DatePickerModes[this._currentViewMode].name !== config.display.viewMode\n ) {\n this._currentViewMode = Math.max(\n DatePickerModes.findIndex((x) => x.name === config.display.viewMode),\n this._minViewModeNumber\n );\n }\n\n // defaults the input format based on the components enabled\n if (config.hooks.inputFormat === undefined) {\n const components = config.display.components;\n config.hooks.inputFormat = (date: DateTime) => {\n return date.format({\n year: components.calendar && components.year ? 'numeric' : undefined,\n month:\n components.calendar && components.month ? '2-digit' : undefined,\n day: components.calendar && components.date ? '2-digit' : undefined,\n hour:\n components.clock && components.hours\n ? components.useTwentyfourHour\n ? '2-digit'\n : 'numeric'\n : undefined,\n minute:\n components.clock && components.minutes ? '2-digit' : undefined,\n second:\n components.clock && components.seconds ? '2-digit' : undefined,\n hour12: !components.useTwentyfourHour,\n });\n };\n }\n\n if (this._display?.isVisible) {\n this._display._update('all');\n }\n\n return config;\n }\n\n /**\n * Checks if an input field is being used, attempts to locate one and sets an\n * event listener if found.\n * @private\n */\n private _initializeInput() {\n if (this._element.tagName == 'INPUT') {\n this._input = this._element as HTMLInputElement;\n } else {\n let query = this._element.dataset.tdTargetInput;\n if (query == undefined || query == 'nearest') {\n this._input = this._element.querySelector('input');\n } else {\n this._input = this._element.querySelector(query);\n }\n }\n\n if (!this._input) return;\n\n this._input.addEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input.addEventListener('click', this._toggleClickEvent);\n }\n\n if (this._input.value) {\n this._inputChangeEvent();\n }\n }\n\n /**\n * Attempts to locate a toggle for the picker and sets an event listener\n * @private\n */\n private _initializeToggle() {\n if (this._options.display.inline) return;\n let query = this._element.dataset.tdTargetToggle;\n if (query == 'nearest') {\n query = '[data-td-toggle=\"datetimepicker\"]';\n }\n this._toggle =\n query == undefined ? this._element : this._element.querySelector(query);\n this._toggle.addEventListener('click', this._toggleClickEvent);\n }\n\n /**\n * If the option is enabled this will render the clock view after a date pick.\n * @param e change event\n * @private\n */\n private _handleAfterChangeEvent(e: ChangeEvent) {\n if (\n // options is disabled\n !this._options.promptTimeOnDateChange ||\n this._options.display.inline ||\n this._options.display.sideBySide ||\n // time is disabled\n !this._display._hasTime ||\n // clock component is already showing\n this._display.widget\n ?.getElementsByClassName(Namespace.css.show)[0]\n .classList.contains(Namespace.css.timeContainer)\n )\n return;\n\n // First time ever. If useCurrent option is set to true (default), do nothing\n // because the first date is selected automatically.\n // or date didn't change (time did) or date changed because time did.\n if (\n (!e.oldDate && this._options.useCurrent) ||\n (e.oldDate && e.date?.isSame(e.oldDate))\n ) {\n return;\n }\n\n clearTimeout(this._currentPromptTimeTimeout);\n this._currentPromptTimeTimeout = setTimeout(() => {\n if (this._display.widget) {\n this._action.do(\n {\n currentTarget: this._display.widget.querySelector(\n `.${Namespace.css.switch} div`\n ),\n },\n ActionTypes.togglePicker\n );\n }\n }, this._options.promptTimeOnDateChangeTransitionDelay);\n }\n\n /**\n * Event for when the input field changes. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _inputChangeEvent = () => {\n const setViewDate = () => {\n if (this.dates.lastPicked) this._viewDate = this.dates.lastPicked;\n };\n\n const value = this._input.value;\n if (this._options.multipleDates) {\n try {\n const valueSplit = value.split(this._options.multipleDatesSeparator);\n for (let i = 0; i < valueSplit.length; i++) {\n if (this._options.hooks.inputParse) {\n this.dates.set(\n this._options.hooks.inputParse(valueSplit[i]),\n i,\n 'input'\n );\n } else {\n this.dates.set(valueSplit[i], i, 'input');\n }\n }\n setViewDate();\n } catch {\n console.warn(\n 'TD: Something went wrong trying to set the multidate values from the input field.'\n );\n }\n } else {\n if (this._options.hooks.inputParse) {\n this.dates.set(this._options.hooks.inputParse(value), 0, 'input');\n } else {\n this.dates.set(value, 0, 'input');\n }\n setViewDate();\n }\n };\n\n /**\n * Event for when the toggle is clicked. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _toggleClickEvent = () => {\n this.toggle();\n };\n}\n\nexport {\n TempusDominus,\n Namespace,\n DefaultOptions,\n DateTime,\n Options,\n Unit,\n DateTimeFormatOptions,\n};\n"],"names":["SecondDisplay"],"mappings":"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"} \ No newline at end of file diff --git a/dist/js/tempus-dominus.js b/dist/js/tempus-dominus.js index 3f81ed4d0..3405567d6 100644 --- a/dist/js/tempus-dominus.js +++ b/dist/js/tempus-dominus.js @@ -7,7 +7,7 @@ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@popperjs/core')) : typeof define === 'function' && define.amd ? define(['exports', '@popperjs/core'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.tempusDominus = {}, global.Popper)); -}(this, (function (exports, core) { 'use strict'; +})(this, (function (exports, core) { 'use strict'; exports.Unit = void 0; (function (Unit) { @@ -769,7 +769,6 @@ seconds: false, useTwentyfourHour: false, }, - inputFormat: undefined, inline: false, }, stepping: 1, @@ -813,6 +812,10 @@ multipleDatesSeparator: '; ', promptTimeOnDateChange: false, promptTimeOnDateChangeTransitionDelay: 200, + hooks: { + inputParse: undefined, + inputFormat: undefined, + }, }; const DatePickerModes = [ { @@ -1367,6 +1370,7 @@ static _mergeOptions(providedOptions, mergeTo) { const newOptions = {}; let path = ''; + const ignoreProperties = ['inputParse', 'inputFormat']; const processKey = (key, value, providedType, defaultType) => { switch (key) { case 'defaultDate': { @@ -1479,6 +1483,7 @@ if (!keyOptions.includes(value)) Namespace.errorMessages.unexpectedOptionValue(path.substring(1), value, keyOptions); return value; + case 'inputParse': case 'inputFormat': return value; default: @@ -1535,7 +1540,7 @@ } path += `.${key}`; copyTo[key] = processKey(key, value, providedType, defaultType); - if (typeof defaultOptionValue !== 'object' || key === 'inputFormat') { + if (typeof defaultOptionValue !== 'object' || ignoreProperties.includes(key)) { path = path.substring(0, path.lastIndexOf(`.${key}`)); return; } @@ -1613,9 +1618,9 @@ * @private */ static _dateTypeCheck(d) { - if (d.constructor.name === 'DateTime') + if (d.constructor.name === DateTime.name) return d; - if (d.constructor.name === 'Date') { + if (d.constructor.name === Date.name) { return DateTime.convert(d); } if (typeof d === typeof '') { @@ -1664,12 +1669,12 @@ * @param optionName Provides text to error messages e.g. disabledDates */ static _dateConversion(d, optionName) { - if (typeof d === typeof '' && optionName !== 'input field') { + if (typeof d === typeof '' && optionName !== 'input') { Namespace.errorMessages.dateString(); } const converted = this._dateTypeCheck(d); if (!converted) { - Namespace.errorMessages.failedToParseDate(optionName, d); + Namespace.errorMessages.failedToParseDate(optionName, d, optionName === 'input'); } return converted; } @@ -1743,11 +1748,9 @@ set(value, index, from = 'date.set') { if (!value) this._setValue(value, index); - const converted = OptionConverter._dateConversion(value, 'input field'); - if (converted !== undefined) + const converted = OptionConverter._dateConversion(value, from); + if (converted) this._setValue(converted, index); - else - Namespace.errorMessages.failedToParseDate(from, value, true); } /** * Returns true if the `targetDate` is part of the selected dates array. @@ -1821,10 +1824,10 @@ const updateInput = () => { if (!this._context._input) return; - let newValue = (target === null || target === void 0 ? void 0 : target.format(this._context._options.display.inputFormat)) || ''; + let newValue = this._context._options.hooks.inputFormat(target); if (this._context._options.multipleDates) { newValue = this._dates - .map((d) => d.format(this._context._options.display.inputFormat)) + .map((d) => this._context._options.hooks.inputFormat(d)) .join(this._context._options.multipleDatesSeparator); } if (this._context._input.value != newValue) @@ -2399,12 +2402,14 @@ */ this._documentClickEvent = (e) => { var _a; + if (this._context._options.display.keepOpen || + this._context._options.debug || + window.debug) + return; if (this._isVisible && !e.composedPath().includes(this.widget) && // click inside the widget - !((_a = e.composedPath()) === null || _a === void 0 ? void 0 : _a.includes(this._context._element)) && // click on the element - (!this._context._options.display.keepOpen || - !this._context._options.debug || - !window.debug)) { + !((_a = e.composedPath()) === null || _a === void 0 ? void 0 : _a.includes(this._context._element)) // click on the element + ) { this.hide(); } }; @@ -2582,7 +2587,7 @@ this._context._currentViewMode = max; } this.widget - .querySelectorAll(`.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div`) + .querySelectorAll(`.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div:not(.${Namespace.css.clockContainer})`) .forEach((e) => (e.style.display = 'none')); const datePickerMode = DatePickerModes[this._context._currentViewMode]; let picker = this.widget.querySelector(`.${datePickerMode.className}`); @@ -3000,20 +3005,36 @@ * @private */ this._inputChangeEvent = () => { + const setViewDate = () => { + if (this.dates.lastPicked) + this._viewDate = this.dates.lastPicked; + }; const value = this._input.value; if (this._options.multipleDates) { try { const valueSplit = value.split(this._options.multipleDatesSeparator); for (let i = 0; i < valueSplit.length; i++) { - this.dates.set(valueSplit[i], i, 'input'); + if (this._options.hooks.inputParse) { + this.dates.set(this._options.hooks.inputParse(valueSplit[i]), i, 'input'); + } + else { + this.dates.set(valueSplit[i], i, 'input'); + } } + setViewDate(); } catch (_a) { console.warn('TD: Something went wrong trying to set the multidate values from the input field.'); } } else { - this.dates.set(value, 0, 'input'); + if (this._options.hooks.inputParse) { + this.dates.set(this._options.hooks.inputParse(value), 0, 'input'); + } + else { + this.dates.set(value, 0, 'input'); + } + setViewDate(); } }; /** @@ -3260,20 +3281,22 @@ this._currentViewMode = Math.max(DatePickerModes.findIndex((x) => x.name === config.display.viewMode), this._minViewModeNumber); } // defaults the input format based on the components enabled - if (config.display.inputFormat === undefined) { + if (config.hooks.inputFormat === undefined) { const components = config.display.components; - config.display.inputFormat = { - year: components.calendar && components.year ? 'numeric' : undefined, - month: components.calendar && components.month ? '2-digit' : undefined, - day: components.calendar && components.date ? '2-digit' : undefined, - hour: components.clock && components.hours - ? components.useTwentyfourHour - ? '2-digit' - : 'numeric' - : undefined, - minute: components.clock && components.minutes ? '2-digit' : undefined, - second: components.clock && components.seconds ? '2-digit' : undefined, - hour12: !components.useTwentyfourHour, + config.hooks.inputFormat = (date) => { + return date.format({ + year: components.calendar && components.year ? 'numeric' : undefined, + month: components.calendar && components.month ? '2-digit' : undefined, + day: components.calendar && components.date ? '2-digit' : undefined, + hour: components.clock && components.hours + ? components.useTwentyfourHour + ? '2-digit' + : 'numeric' + : undefined, + minute: components.clock && components.minutes ? '2-digit' : undefined, + second: components.clock && components.seconds ? '2-digit' : undefined, + hour12: !components.useTwentyfourHour, + }); }; } if ((_a = this._display) === null || _a === void 0 ? void 0 : _a.isVisible) { @@ -3367,5 +3390,5 @@ Object.defineProperty(exports, '__esModule', { value: true }); -}))); +})); //# sourceMappingURL=tempus-dominus.js.map diff --git a/dist/js/tempus-dominus.js.map b/dist/js/tempus-dominus.js.map index 25f79d7c8..a7d5bbe68 100644 --- a/dist/js/tempus-dominus.js.map +++ b/dist/js/tempus-dominus.js.map @@ -1 +1 @@ -{"version":3,"file":"tempus-dominus.js","sources":["../../src/js/datetime.ts","../../src/js/errors.ts","../../src/js/namespace.ts","../../src/js/conts.ts","../../src/js/display/collapse.ts","../../src/js/actions.ts","../../src/js/display/calendar/date-display.ts","../../src/js/display/calendar/month-display.ts","../../src/js/options.ts","../../src/js/dates.ts","../../src/js/display/calendar/year-display.ts","../../src/js/display/calendar/decade-display.ts","../../src/js/display/time/time-display.ts","../../src/js/display/time/hour-display.ts","../../src/js/display/time/minute-display.ts","../../src/js/display/time/second-display.ts","../../src/js/display/index.ts","../../src/js/validation.ts","../../src/js/tempus-dominus.ts"],"sourcesContent":["export enum Unit {\n seconds = 'seconds',\n minutes = 'minutes',\n hours = 'hours',\n date = 'date',\n month = 'month',\n year = 'year',\n}\n\nexport interface DateTimeFormatOptions extends Intl.DateTimeFormatOptions {\n timeStyle?: 'short' | 'medium' | 'long';\n dateStyle?: 'short' | 'medium' | 'long' | 'full';\n}\n\n/**\n * For the most part this object behaves exactly the same way\n * as the native Date object with a little extra spice.\n */\nexport class DateTime extends Date {\n /**\n * Used with Intl.DateTimeFormat\n */\n locale = 'default';\n\n /**\n * Chainable way to set the {@link locale}\n * @param value\n */\n setLocale(value: string): this {\n this.locale = value;\n return this;\n }\n\n /**\n * Converts a plain JS date object to a DateTime object.\n * Doing this allows access to format, etc.\n * @param date\n */\n static convert(date: Date): DateTime {\n if (!date) throw `A date is required`;\n return new DateTime(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n );\n }\n\n /**\n * Native date manipulations are not pure functions. This function creates a duplicate of the DateTime object.\n */\n get clone() {\n return new DateTime(\n this.year,\n this.month,\n this.date,\n this.hours,\n this.minutes,\n this.seconds,\n this.getMilliseconds()\n ).setLocale(this.locale);\n }\n\n /**\n * Sets the current date to the start of the {@link unit} provided\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).startOf('month')\n * would return April 1, 2021, 12:00:00.000 AM (midnight)\n * @param unit\n */\n startOf(unit: Unit | 'weekDay'): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n switch (unit) {\n case 'seconds':\n this.setMilliseconds(0);\n break;\n case 'minutes':\n this.setSeconds(0, 0);\n break;\n case 'hours':\n this.setMinutes(0, 0, 0);\n break;\n case 'date':\n this.setHours(0, 0, 0, 0);\n break;\n case 'weekDay':\n this.startOf(Unit.date);\n this.manipulate(0 - this.weekDay, Unit.date);\n break;\n case 'month':\n this.startOf(Unit.date);\n this.setDate(1);\n break;\n case 'year':\n this.startOf(Unit.date);\n this.setMonth(0, 1);\n break;\n }\n return this;\n }\n\n /**\n * Sets the current date to the end of the {@link unit} provided\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).endOf('month')\n * would return April 30, 2021, 11:59:59.999 PM\n * @param unit\n */\n endOf(unit: Unit | 'weekDay'): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n switch (unit) {\n case 'seconds':\n this.setMilliseconds(999);\n break;\n case 'minutes':\n this.setSeconds(59, 999);\n break;\n case 'hours':\n this.setMinutes(59, 59, 999);\n break;\n case 'date':\n this.setHours(23, 59, 59, 999);\n break;\n case 'weekDay':\n this.startOf(Unit.date);\n this.manipulate(6 - this.weekDay, Unit.date);\n break;\n case 'month':\n this.endOf(Unit.date);\n this.manipulate(1, Unit.month);\n this.setDate(0);\n break;\n case 'year':\n this.endOf(Unit.date);\n this.manipulate(1, Unit.year);\n this.setDate(0);\n break;\n }\n return this;\n }\n\n /**\n * Change a {@link unit} value. Value can be positive or negative\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).manipulate(1, 'month')\n * would return May 30, 2021, 11:45:32.984 AM\n * @param value A positive or negative number\n * @param unit\n */\n manipulate(value: number, unit: Unit): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n this[unit] += value;\n return this;\n }\n\n /**\n * Returns a string format.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat\n * for valid templates and locale objects\n * @param template An object. Uses browser defaults otherwise.\n * @param locale Can be a string or an array of strings. Uses browser defaults otherwise.\n */\n format(template: DateTimeFormatOptions, locale = this.locale): string {\n return new Intl.DateTimeFormat(locale, template).format(this);\n }\n\n /**\n * Return true if {@link compare} is before this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isBefore(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() < compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n return (\n this.clone.startOf(unit).valueOf() < compare.clone.startOf(unit).valueOf()\n );\n }\n\n /**\n * Return true if {@link compare} is after this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isAfter(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() > compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n return (\n this.clone.startOf(unit).valueOf() > compare.clone.startOf(unit).valueOf()\n );\n }\n\n /**\n * Return true if {@link compare} is same this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isSame(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() === compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n compare = DateTime.convert(compare);\n return (\n this.clone.startOf(unit).valueOf() === compare.startOf(unit).valueOf()\n );\n }\n\n /**\n * Check if this is between two other DateTimes, optionally looking at unit scale. The match is exclusive.\n * @param left\n * @param right\n * @param unit.\n * @param inclusivity. A [ indicates inclusion of a value. A ( indicates exclusion.\n * If the inclusivity parameter is used, both indicators must be passed.\n */\n isBetween(\n left: DateTime,\n right: DateTime,\n unit?: Unit,\n inclusivity: '()' | '[]' | '(]' | '[)' = '()'\n ): boolean {\n if (unit && this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n const leftInclusivity = inclusivity[0] === '(';\n const rightInclusivity = inclusivity[1] === ')';\n\n return (\n ((leftInclusivity\n ? this.isAfter(left, unit)\n : !this.isBefore(left, unit)) &&\n (rightInclusivity\n ? this.isBefore(right, unit)\n : !this.isAfter(right, unit))) ||\n ((leftInclusivity\n ? this.isBefore(left, unit)\n : !this.isAfter(left, unit)) &&\n (rightInclusivity\n ? this.isAfter(right, unit)\n : !this.isBefore(right, unit)))\n );\n }\n\n /**\n * Returns flattened object of the date. Does not include literals\n * @param locale\n * @param template\n */\n parts(\n locale = this.locale,\n template: any = { dateStyle: 'full', timeStyle: 'long' }\n ) {\n const parts = {};\n new Intl.DateTimeFormat(locale, template)\n .formatToParts(this)\n .filter((x) => x.type !== 'literal')\n .forEach((x) => (parts[x.type] = x.value));\n return parts;\n }\n\n /**\n * Shortcut to Date.getSeconds()\n */\n get seconds(): number {\n return this.getSeconds();\n }\n\n /**\n * Shortcut to Date.setSeconds()\n */\n set seconds(value: number) {\n this.setSeconds(value);\n }\n\n /**\n * Returns two digit hours\n */\n get secondsFormatted(): string {\n return this.seconds < 10 ? `0${this.seconds}` : `${this.seconds}`;\n }\n\n /**\n * Shortcut to Date.getMinutes()\n */\n get minutes(): number {\n return this.getMinutes();\n }\n\n /**\n * Shortcut to Date.setMinutes()\n */\n set minutes(value: number) {\n this.setMinutes(value);\n }\n\n /**\n * Returns two digit hours\n */\n get minutesFormatted(): string {\n return this.minutes < 10 ? `0${this.minutes}` : `${this.minutes}`;\n }\n\n /**\n * Shortcut to Date.getHours()\n */\n get hours(): number {\n return this.getHours();\n }\n\n /**\n * Shortcut to Date.setHours()\n */\n set hours(value: number) {\n this.setHours(value);\n }\n\n /**\n * Returns two digit hours\n */\n get hoursFormatted(): string {\n return this.hours < 10 ? `0${this.hours}` : `${this.hours}`;\n }\n\n /**\n * Returns two digit hours but in twelve hour mode e.g. 13 -> 1\n */\n get twelveHoursFormatted(): string {\n let hour = this.hours;\n if (hour > 12) hour = hour - 12;\n if (hour === 0) hour = 12;\n return hour < 10 ? `0${hour}` : `${hour}`;\n }\n\n /**\n * Get the meridiem of the date. E.g. AM or PM.\n * If the {@link locale} provides a \"dayPeriod\" then this will be returned,\n * otherwise it will return AM or PM.\n * @param locale\n */\n meridiem(locale: string = this.locale): string {\n return new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n hour12: true,\n } as any)\n .formatToParts(this)\n .find((p) => p.type === 'dayPeriod')?.value;\n }\n\n /**\n * Shortcut to Date.getDate()\n */\n get date(): number {\n return this.getDate();\n }\n\n /**\n * Shortcut to Date.setDate()\n */\n set date(value: number) {\n this.setDate(value);\n }\n\n /**\n * Return two digit date\n */\n get dateFormatted(): string {\n return this.date < 10 ? `0${this.date}` : `${this.date}`;\n }\n\n // https://github.com/you-dont-need/You-Dont-Need-Momentjs#week-of-year\n /**\n * Gets the week of the year\n */\n get week(): number {\n const startOfYear = new Date(this.year, 0, 1);\n startOfYear.setDate(\n startOfYear.getDate() + (1 - (startOfYear.getDay() % 7))\n );\n return Math.round((this.valueOf() - startOfYear.valueOf()) / 604800000) + 1;\n }\n\n /**\n * Shortcut to Date.getDay()\n */\n get weekDay(): number {\n return this.getDay();\n }\n\n /**\n * Shortcut to Date.getMonth()\n */\n get month(): number {\n return this.getMonth();\n }\n\n /**\n * Shortcut to Date.setMonth()\n */\n set month(value: number) {\n this.setMonth(value);\n }\n\n /**\n * Return two digit, human expected month. E.g. January = 1, December = 12\n */\n get monthFormatted(): string {\n return this.month + 1 < 10 ? `0${this.month}` : `${this.month}`;\n }\n\n /**\n * Shortcut to Date.getFullYear()\n */\n get year(): number {\n return this.getFullYear();\n }\n\n /**\n * Shortcut to Date.setFullYear()\n */\n set year(value: number) {\n this.setFullYear(value);\n }\n}\n","import Namespace from './namespace';\n\nexport class TdError extends Error {\n code: number;\n}\n\nexport class ErrorMessages {\n private base = 'TD:';\n\n //#region out to console\n\n /**\n * Throws an error indicating that a key in the options object is invalid.\n * @param optionName\n */\n unexpectedOption(optionName: string) {\n const error = new TdError(\n `${this.base} Unexpected option: ${optionName} does not match a known option.`\n );\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error indicating that one more keys in the options object is invalid.\n * @param optionName\n */\n unexpectedOptions(optionName: string[]) {\n const error = new TdError(`${this.base}: ${optionName.join(', ')}`);\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error when an option is provide an unsupported value.\n * For example a value of 'cheese' for toolbarPlacement which only supports\n * 'top', 'bottom', 'default'.\n * @param optionName\n * @param badValue\n * @param validOptions\n */\n unexpectedOptionValue(\n optionName: string,\n badValue: string,\n validOptions: string[]\n ) {\n const error = new TdError(\n `${\n this.base\n } Unexpected option value: ${optionName} does not accept a value of \"${badValue}\". Valid values are: ${validOptions.join(\n ', '\n )}`\n );\n error.code = 2;\n throw error;\n }\n\n /**\n * Throws an error when an option value is the wrong type.\n * For example a string value was provided to multipleDates which only\n * supports true or false.\n * @param optionName\n * @param badType\n * @param expectedType\n */\n typeMismatch(optionName: string, badType: string, expectedType: string) {\n const error = new TdError(\n `${this.base} Mismatch types: ${optionName} has a type of ${badType} instead of the required ${expectedType}`\n );\n error.code = 3;\n throw error;\n }\n\n /**\n * Throws an error when an option value is outside of the expected range.\n * For example restrictions.daysOfWeekDisabled excepts a value between 0 and 6.\n * @param optionName\n * @param lower\n * @param upper\n */\n numbersOutOfRage(optionName: string, lower: number, upper: number) {\n const error = new TdError(\n `${this.base} ${optionName} expected an array of number between ${lower} and ${upper}.`\n );\n error.code = 4;\n throw error;\n }\n\n /**\n * Throws an error when a value for a date options couldn't be parsed. Either\n * the option was an invalide string or an invalid Date object.\n * @param optionName\n * @param date\n * @param soft If true, logs a warning instead of an error.\n */\n failedToParseDate(optionName: string, date: any, soft = false) {\n const error = new TdError(\n `${this.base} Could not correctly parse \"${date}\" to a date for ${optionName}.`\n );\n error.code = 5;\n if (!soft) throw error;\n console.warn(error);\n }\n\n /**\n * Throws when an element to attach to was not provided in the constructor.\n */\n mustProvideElement() {\n const error = new TdError(`${this.base} No element was provided.`);\n error.code = 6;\n throw error;\n }\n\n /**\n * Throws if providing an array for the events to subscribe method doesn't have\n * the same number of callbacks. E.g., subscribe([1,2], [1])\n */\n subscribeMismatch() {\n const error = new TdError(\n `${this.base} The subscribed events does not match the number of callbacks`\n );\n error.code = 7;\n throw error;\n }\n\n /**\n * Throws if the configuration has conflicting rules e.g. minDate is after maxDate\n */\n conflictingConfiguration(message?: string) {\n const error = new TdError(\n `${this.base} A configuration value conflicts with another rule. ${message}`\n );\n error.code = 8;\n throw error;\n }\n\n /**\n * Logs a warning if a date option value is provided as a string, instead of\n * a date/datetime object.\n */\n dateString() {\n console.warn(\n `${this.base} Using a string for date options is not recommended unless you specify an ISO string.`\n );\n }\n\n //#endregion\n\n //#region used with notify.error\n\n /**\n * Used with an Error Event type if the user selects a date that\n * fails restriction validation.\n */\n failedToSetInvalidDate = 'Failed to set invalid date';\n\n /**\n * Used with an Error Event type when a user changes the value of the\n * input field directly, and does not provide a valid date.\n */\n failedToParseInput = 'Failed parse input field';\n\n //#endregion\n}\n","import { ErrorMessages } from './errors';\n// this is not the way I want this to stay but nested classes seemed to blown up once its compiled.\nconst NAME = 'tempus-dominus',\n version = '6.0.0-alpha1',\n dataKey = 'td';\n\n/**\n * Events\n */\nclass Events {\n key = `.${dataKey}`;\n\n /**\n * Change event. Fired when the user selects a date.\n * See also EventTypes.ChangeEvent\n */\n change = `change${this.key}`;\n\n /**\n * Emit when the view changes for example from month view to the year view.\n * See also EventTypes.ViewUpdateEvent\n */\n update = `update${this.key}`;\n\n /**\n * Emits when a selected date or value from the input field fails to meet the provided validation rules.\n * See also EventTypes.FailEvent\n */\n error = `error${this.key}`;\n\n /**\n * Show event\n * @event Events#show\n */\n show = `show${this.key}`;\n\n /**\n * Hide event\n * @event Events#hide\n */\n hide = `hide${this.key}`;\n\n // blur and focus are used in the jQuery provider but are otherwise unused.\n // keyup/down will be used later for keybinding options\n\n blur = `blur${this.key}`;\n focus = `focus${this.key}`;\n keyup = `keyup${this.key}`;\n keydown = `keydown${this.key}`;\n}\n\nclass Css {\n /**\n * The outer element for the widget.\n */\n widget = `${NAME}-widget`;\n\n /**\n * Hold the previous, next and switcher divs\n */\n calendarHeader = 'calendar-header';\n\n /**\n * The element for the action to change the calendar view. E.g. month -> year.\n */\n switch = 'picker-switch';\n\n /**\n * The elements for all of the toolbar options\n */\n toolbar = 'toolbar';\n\n /**\n * Disables the hover and rounding affect.\n */\n noHighlight = 'no-highlight';\n\n /**\n * Applied to the widget element when the side by side option is in use.\n */\n sideBySide = 'timepicker-sbs';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> July\n */\n previous = 'previous';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> September\n */\n next = 'next';\n\n /**\n * Applied to any action that would violate any restriction options. ALso applied\n * to an input field if the disabled function is called.\n */\n disabled = 'disabled';\n\n /**\n * Applied to any date that is less than requested view,\n * e.g. the last day of the previous month.\n */\n old = 'old';\n\n /**\n * Applied to any date that is greater than of requested view,\n * e.g. the last day of the previous month.\n */\n new = 'new';\n\n /**\n * Applied to any date that is currently selected.\n */\n active = 'active';\n\n //#region date element\n\n /**\n * The outer most element for the calendar view.\n */\n dateContainer = 'date-container';\n\n /**\n * The outer most element for the decades view.\n */\n decadesContainer = `${this.dateContainer}-decades`;\n\n /**\n * Applied to elements within the decades container, e.g. 2020, 2030\n */\n decade = 'decade';\n\n /**\n * The outer most element for the years view.\n */\n yearsContainer = `${this.dateContainer}-years`;\n\n /**\n * Applied to elements within the years container, e.g. 2021, 2021\n */\n year = 'year';\n\n /**\n * The outer most element for the month view.\n */\n monthsContainer = `${this.dateContainer}-months`;\n\n /**\n * Applied to elements within the month container, e.g. January, February\n */\n month = 'month';\n\n /**\n * The outer most element for the calendar view.\n */\n daysContainer = `${this.dateContainer}-days`;\n\n /**\n * Applied to elements within the day container, e.g. 1, 2..31\n */\n day = 'day';\n\n /**\n * If display.calendarWeeks is enabled, a column displaying the week of year\n * is shown. This class is applied to each cell in that column.\n */\n calendarWeeks = 'cw';\n\n /**\n * Applied to the first row of the calendar view, e.g. Sunday, Monday\n */\n dayOfTheWeek = 'dow';\n\n /**\n * Applied to the current date on the calendar view.\n */\n today = 'today';\n\n /**\n * Applied to the locale's weekend dates on the calendar view, e.g. Sunday, Saturday\n */\n weekend = 'weekend';\n\n //#endregion\n\n //#region time element\n\n /**\n * The outer most element for all time related elements.\n */\n timeContainer = 'time-container';\n\n /**\n * Applied the separator columns between time elements, e.g. hour *:* minute *:* second\n */\n separator = 'separator';\n\n /**\n * The outer most element for the clock view.\n */\n clockContainer = `${this.timeContainer}-clock`;\n\n /**\n * The outer most element for the hours selection view.\n */\n hourContainer = `${this.timeContainer}-hour`;\n\n /**\n * The outer most element for the minutes selection view.\n */\n minuteContainer = `${this.timeContainer}-minute`;\n\n /**\n * The outer most element for the seconds selection view.\n */\n secondContainer = `${this.timeContainer}-second`;\n\n /**\n * Applied to each element in the hours selection view.\n */\n hour = 'hour';\n\n /**\n * Applied to each element in the minutes selection view.\n */\n minute = 'minute';\n\n /**\n * Applied to each element in the seconds selection view.\n */\n second = 'second';\n\n /**\n * Applied AM/PM toggle button.\n */\n toggleMeridiem = 'toggleMeridiem';\n\n //#endregion\n\n //#region collapse\n\n /**\n * Applied the element of the current view mode, e.g. calendar or clock.\n */\n show = 'show';\n\n /**\n * Applied to the currently showing view mode during a transition\n * between calendar and clock views\n */\n collapsing = 'td-collapsing';\n\n /**\n * Applied to the currently hidden view mode.\n */\n collapse = 'td-collapse';\n\n //#endregion\n\n /**\n * Applied to the widget when the option display.inline is enabled.\n */\n inline = 'inline';\n}\n\nexport default class Namespace {\n static NAME = NAME;\n // noinspection JSUnusedGlobalSymbols\n static version = version;\n static dataKey = dataKey;\n\n static events = new Events();\n\n static css = new Css();\n\n static errorMessages = new ErrorMessages();\n}\n","import { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options from './options';\n\nconst DefaultOptions: Options = {\n restrictions: {\n minDate: undefined,\n maxDate: undefined,\n disabledDates: [],\n enabledDates: [],\n daysOfWeekDisabled: [],\n disabledTimeIntervals: [],\n disabledHours: [],\n enabledHours: [],\n },\n display: {\n icons: {\n type: 'icons',\n time: 'fas fa-clock',\n date: 'fas fa-calendar',\n up: 'fas fa-arrow-up',\n down: 'fas fa-arrow-down',\n previous: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n today: 'fas fa-calendar-check',\n clear: 'fas fa-trash',\n close: 'fas fa-times',\n },\n sideBySide: false,\n calendarWeeks: false,\n viewMode: 'calendar',\n toolbarPlacement: 'bottom',\n keepOpen: false,\n buttons: {\n today: false,\n clear: false,\n close: false,\n },\n components: {\n calendar: true,\n date: true,\n month: true,\n year: true,\n decades: true,\n clock: true,\n hours: true,\n minutes: true,\n seconds: false,\n useTwentyfourHour: false,\n },\n inputFormat: undefined,\n inline: false,\n },\n stepping: 1,\n useCurrent: true,\n defaultDate: undefined,\n localization: {\n today: 'Go to today',\n clear: 'Clear selection',\n close: 'Close the picker',\n selectMonth: 'Select Month',\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n selectYear: 'Select Year',\n previousYear: 'Previous Year',\n nextYear: 'Next Year',\n selectDecade: 'Select Decade',\n previousDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n previousCentury: 'Previous Century',\n nextCentury: 'Next Century',\n pickHour: 'Pick Hour',\n incrementHour: 'Increment Hour',\n decrementHour: 'Decrement Hour',\n pickMinute: 'Pick Minute',\n incrementMinute: 'Increment Minute',\n decrementMinute: 'Decrement Minute',\n pickSecond: 'Pick Second',\n incrementSecond: 'Increment Second',\n decrementSecond: 'Decrement Second',\n toggleMeridiem: 'Toggle Meridiem',\n selectTime: 'Select Time',\n selectDate: 'Select Date',\n dayViewHeaderFormat: 'long',\n locale: 'default',\n },\n keepInvalid: false,\n debug: false,\n allowInputToggle: false,\n viewDate: new DateTime(),\n multipleDates: false,\n multipleDatesSeparator: '; ',\n promptTimeOnDateChange: false,\n promptTimeOnDateChangeTransitionDelay: 200,\n};\n\nconst DatePickerModes: {\n name: string;\n className: string;\n unit: Unit;\n step: number;\n}[] = [\n {\n name: 'calendar',\n className: Namespace.css.daysContainer,\n unit: Unit.month,\n step: 1,\n },\n {\n name: 'months',\n className: Namespace.css.monthsContainer,\n unit: Unit.year,\n step: 1,\n },\n {\n name: 'years',\n className: Namespace.css.yearsContainer,\n unit: Unit.year,\n step: 10,\n },\n {\n name: 'decades',\n className: Namespace.css.decadesContainer,\n unit: Unit.year,\n step: 100,\n },\n];\n\nexport { DefaultOptions, DatePickerModes, Namespace };\n","import Namespace from '../namespace';\n\n/**\n * Provides a collapse functionality to the view changes\n */\nexport default class Collapse {\n private timeOut;\n\n /**\n * Flips the show/hide state of `target`\n * @param target html element to affect.\n */\n toggle(target: HTMLElement, callback = undefined) {\n if (target.classList.contains(Namespace.css.show)) {\n this.hide(target, callback);\n } else {\n this.show(target, callback);\n }\n }\n\n /**\n * If `target` is not already showing, then show after the animation.\n * @param target\n */\n show(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse, Namespace.css.show);\n target.style.height = '';\n this.timeOut = null;\n if (callback) callback();\n };\n\n target.style.height = '0';\n target.classList.remove(Namespace.css.collapse);\n target.classList.add(Namespace.css.collapsing);\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n target.style.height = `${target.scrollHeight}px`;\n }\n\n /**\n * If `target` is not already hidden, then hide after the animation.\n * @param target HTML Element\n */\n hide(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n !target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse);\n this.timeOut = null;\n };\n\n target.style.height = `${target.getBoundingClientRect()['height']}px`;\n\n const reflow = (element) => element.offsetHeight;\n\n reflow(target);\n\n target.classList.remove(Namespace.css.collapse, Namespace.css.show);\n target.classList.add(Namespace.css.collapsing);\n target.style.height = '';\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n }\n\n /**\n * Gets the transition duration from the `element` by getting css properties\n * `transition-duration` and `transition-delay`\n * @param element HTML Element\n */\n private getTransitionDurationFromElement = (element: HTMLElement) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } =\n window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) +\n Number.parseFloat(transitionDelay)) *\n 1000\n );\n };\n}\n","import { DatePickerModes } from './conts.js';\r\nimport { DateTime, Unit } from './datetime';\r\nimport { TempusDominus } from './tempus-dominus';\r\nimport Collapse from './display/collapse';\r\nimport Namespace from './namespace';\r\n\r\n/**\r\n *\r\n */\r\nexport default class Actions {\r\n private _context: TempusDominus;\r\n private collapse: Collapse;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this.collapse = new Collapse();\r\n }\r\n\r\n /**\r\n * Performs the selected `action`. See ActionTypes\r\n * @param e This is normally a click event\r\n * @param action If not provided, then look for a [data-action]\r\n */\r\n do(e: any, action?: ActionTypes) {\r\n const currentTarget = e.currentTarget;\r\n if (currentTarget.classList.contains(Namespace.css.disabled)) return false;\r\n action = action || currentTarget.dataset.action;\r\n const lastPicked = (\r\n this._context.dates.lastPicked || this._context._viewDate\r\n ).clone;\r\n\r\n /**\r\n * Common function to manipulate {@link lastPicked} by `unit`\r\n * @param unit\r\n * @param value Value to change by\r\n */\r\n const manipulateAndSet = (unit: Unit, value = 1) => {\r\n const newDate = lastPicked.manipulate(value, unit);\r\n if (this._context._validation.isValid(newDate, unit)) {\r\n this._context.dates._setValue(\r\n newDate,\r\n this._context.dates.lastPickedIndex\r\n );\r\n }\r\n };\r\n\r\n switch (action) {\r\n case ActionTypes.next:\r\n case ActionTypes.previous:\r\n const { unit, step } = DatePickerModes[this._context._currentViewMode];\r\n if (action === ActionTypes.next)\r\n this._context._viewDate.manipulate(step, unit);\r\n else this._context._viewDate.manipulate(step * -1, unit);\r\n this._context._viewUpdate(unit);\r\n\r\n this._context._display._showMode();\r\n break;\r\n case ActionTypes.pickerSwitch:\r\n this._context._display._showMode(1);\r\n this._context._viewUpdate(\r\n DatePickerModes[this._context._currentViewMode].unit\r\n );\r\n this._context._display._updateCalendarHeader();\r\n break;\r\n case ActionTypes.selectMonth:\r\n case ActionTypes.selectYear:\r\n case ActionTypes.selectDecade:\r\n const value = +currentTarget.getAttribute('data-value');\r\n switch (action) {\r\n case ActionTypes.selectMonth:\r\n this._context._viewDate.month = value;\r\n this._context._viewUpdate(Unit.month);\r\n break;\r\n case ActionTypes.selectYear:\r\n this._context._viewDate.year = value;\r\n this._context._viewUpdate(Unit.year);\r\n break;\r\n case ActionTypes.selectDecade:\r\n this._context._viewDate.year = value;\r\n this._context._viewUpdate(Unit.year);\r\n break;\r\n }\r\n\r\n if (\r\n this._context._currentViewMode === this._context._minViewModeNumber\r\n ) {\r\n this._context.dates._setValue(\r\n this._context._viewDate,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (!this._context._options.display.inline) {\r\n this._context._display.hide();\r\n }\r\n } else {\r\n this._context._display._showMode(-1);\r\n }\r\n break;\r\n case ActionTypes.selectDay:\r\n const day = this._context._viewDate.clone;\r\n if (currentTarget.classList.contains(Namespace.css.old)) {\r\n day.manipulate(-1, Unit.month);\r\n }\r\n if (currentTarget.classList.contains(Namespace.css.new)) {\r\n day.manipulate(1, Unit.month);\r\n }\r\n\r\n day.date = +currentTarget.innerText;\r\n let index = 0;\r\n if (this._context._options.multipleDates) {\r\n index = this._context.dates.pickedIndex(day, Unit.date);\r\n if (index !== -1) {\r\n this._context.dates._setValue(null, index); //deselect multi-date\r\n } else {\r\n this._context.dates._setValue(\r\n day,\r\n this._context.dates.lastPickedIndex + 1\r\n );\r\n }\r\n } else {\r\n this._context.dates._setValue(\r\n day,\r\n this._context.dates.lastPickedIndex\r\n );\r\n }\r\n\r\n if (\r\n !this._context._display._hasTime &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline &&\r\n !this._context._options.multipleDates\r\n ) {\r\n this._context._display.hide();\r\n }\r\n break;\r\n case ActionTypes.selectHour:\r\n let hour = +currentTarget.getAttribute('data-value');\r\n if (lastPicked.hours >= 12 && !this._context._options.display.components.useTwentyfourHour) hour += 12;\r\n lastPicked.hours = hour;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.components.minutes &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.selectMinute:\r\n lastPicked.minutes = +currentTarget.innerText;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.components.seconds &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.selectSecond:\r\n lastPicked.seconds = +currentTarget.innerText;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.incrementHours:\r\n manipulateAndSet(Unit.hours);\r\n break;\r\n case ActionTypes.incrementMinutes:\r\n manipulateAndSet(Unit.minutes, this._context._options.stepping);\r\n break;\r\n case ActionTypes.incrementSeconds:\r\n manipulateAndSet(Unit.seconds);\r\n break;\r\n case ActionTypes.decrementHours:\r\n manipulateAndSet(Unit.hours, -1);\r\n break;\r\n case ActionTypes.decrementMinutes:\r\n manipulateAndSet(Unit.minutes, this._context._options.stepping * -1);\r\n break;\r\n case ActionTypes.decrementSeconds:\r\n manipulateAndSet(Unit.seconds, -1);\r\n break;\r\n case ActionTypes.toggleMeridiem:\r\n manipulateAndSet(\r\n Unit.hours,\r\n this._context.dates.lastPicked.hours >= 12 ? -12 : 12\r\n );\r\n break;\r\n case ActionTypes.togglePicker:\r\n this._context._display.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer}, .${Namespace.css.timeContainer}`\r\n )\r\n .forEach((htmlElement: HTMLElement) =>\r\n this.collapse.toggle(htmlElement)\r\n );\r\n if (\r\n currentTarget.getAttribute('title') ===\r\n this._context._options.localization.selectDate\r\n ) {\r\n currentTarget.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectTime\r\n );\r\n currentTarget.innerHTML = this._context._display._iconTag(\r\n this._context._options.display.icons.time\r\n ).outerHTML;\r\n\r\n this._context._display._updateCalendarHeader();\r\n } else {\r\n currentTarget.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDate\r\n );\r\n currentTarget.innerHTML = this._context._display._iconTag(\r\n this._context._options.display.icons.date\r\n ).outerHTML;\r\n this.do(e, ActionTypes.showClock);\r\n this._context._display._update('clock');\r\n }\r\n break;\r\n case ActionTypes.showClock:\r\n case ActionTypes.showHours:\r\n case ActionTypes.showMinutes:\r\n case ActionTypes.showSeconds:\r\n this._context._display.widget\r\n .querySelectorAll(`.${Namespace.css.timeContainer} > div`)\r\n .forEach(\r\n (htmlElement: HTMLElement) => (htmlElement.style.display = 'none')\r\n );\r\n\r\n let classToUse = '';\r\n switch (action) {\r\n case ActionTypes.showClock:\r\n classToUse = Namespace.css.clockContainer;\r\n this._context._display._update('clock');\r\n break;\r\n case ActionTypes.showHours:\r\n classToUse = Namespace.css.hourContainer;\r\n this._context._display._update(Unit.hours);\r\n break;\r\n case ActionTypes.showMinutes:\r\n classToUse = Namespace.css.minuteContainer;\r\n this._context._display._update(Unit.minutes);\r\n break;\r\n case ActionTypes.showSeconds:\r\n classToUse = Namespace.css.secondContainer;\r\n this._context._display._update(Unit.seconds);\r\n break;\r\n }\r\n\r\n ((\r\n this._context._display.widget.getElementsByClassName(classToUse)[0]\r\n )).style.display = 'grid';\r\n break;\r\n case ActionTypes.clear:\r\n this._context.dates._setValue(null);\r\n this._context._display._updateCalendarHeader();\r\n break;\r\n case ActionTypes.close:\r\n this._context._display.hide();\r\n break;\r\n case ActionTypes.today:\r\n const today = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n this._context._viewDate = today;\r\n if (this._context._validation.isValid(today, Unit.date))\r\n this._context.dates._setValue(\r\n today,\r\n this._context.dates.lastPickedIndex\r\n );\r\n break;\r\n }\r\n }\r\n}\r\n\r\nexport enum ActionTypes {\r\n next = 'next',\r\n previous = 'previous',\r\n pickerSwitch = 'pickerSwitch',\r\n selectMonth = 'selectMonth',\r\n selectYear = 'selectYear',\r\n selectDecade = 'selectDecade',\r\n selectDay = 'selectDay',\r\n selectHour = 'selectHour',\r\n selectMinute = 'selectMinute',\r\n selectSecond = 'selectSecond',\r\n incrementHours = 'incrementHours',\r\n incrementMinutes = 'incrementMinutes',\r\n incrementSeconds = 'incrementSeconds',\r\n decrementHours = 'decrementHours',\r\n decrementMinutes = 'decrementMinutes',\r\n decrementSeconds = 'decrementSeconds',\r\n toggleMeridiem = 'toggleMeridiem',\r\n togglePicker = 'togglePicker',\r\n showClock = 'showClock',\r\n showHours = 'showHours',\r\n showMinutes = 'showMinutes',\r\n showSeconds = 'showSeconds',\r\n clear = 'clear',\r\n close = 'close',\r\n today = 'today',\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { DateTime, Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `date`\n */\nexport default class DateDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.daysContainer);\n\n container.append(...this._daysOfTheWeek());\n\n if (this._context._options.display.calendarWeeks) {\n const div = document.createElement('div');\n div.classList.add(Namespace.css.calendarWeeks, Namespace.css.noHighlight);\n container.appendChild(div);\n }\n\n for (let i = 0; i < 42; i++) {\n if (i !== 0 && i % 7 === 0) {\n if (this._context._options.display.calendarWeeks) {\n const div = document.createElement('div');\n div.classList.add(\n Namespace.css.calendarWeeks,\n Namespace.css.noHighlight\n );\n container.appendChild(div);\n }\n }\n\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectDay);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.daysContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.daysContainer,\n this._context._viewDate.format({\n month: this._context._options.localization.dayViewHeaderFormat,\n })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.month),\n Unit.month\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.month),\n Unit.month\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone\n .startOf(Unit.month)\n .startOf('weekDay')\n .manipulate(12, Unit.hours);\n\n container\n .querySelectorAll(\n `[data-action=\"${ActionTypes.selectDay}\"], .${Namespace.css.calendarWeeks}`\n )\n .forEach((containerClone: HTMLElement, index) => {\n if (\n this._context._options.display.calendarWeeks &&\n containerClone.classList.contains(Namespace.css.calendarWeeks)\n ) {\n if (containerClone.innerText === '#') return;\n containerClone.innerText = `${innerDate.week}`;\n return;\n }\n\n let classes = [];\n classes.push(Namespace.css.day);\n\n if (innerDate.isBefore(this._context._viewDate, Unit.month)) {\n classes.push(Namespace.css.old);\n }\n if (innerDate.isAfter(this._context._viewDate, Unit.month)) {\n classes.push(Namespace.css.new);\n }\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.date)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.date)) {\n classes.push(Namespace.css.disabled);\n }\n if (innerDate.isSame(new DateTime(), Unit.date)) {\n classes.push(Namespace.css.today);\n }\n if (innerDate.weekDay === 0 || innerDate.weekDay === 6) {\n classes.push(Namespace.css.weekend);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute(\n 'data-value',\n `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`\n );\n containerClone.innerText = `${innerDate.date}`;\n innerDate.manipulate(1, Unit.date);\n });\n }\n\n /***\n * Generates an html row that contains the days of the week.\n * @private\n */\n private _daysOfTheWeek(): HTMLElement[] {\n let innerDate = this._context._viewDate.clone\n .startOf('weekDay')\n .startOf(Unit.date);\n const row = [];\n document.createElement('div');\n\n if (this._context._options.display.calendarWeeks) {\n const htmlDivElement = document.createElement('div');\n htmlDivElement.classList.add(\n Namespace.css.calendarWeeks,\n Namespace.css.noHighlight\n );\n htmlDivElement.innerText = '#';\n row.push(htmlDivElement);\n }\n\n for (let i = 0; i < 7; i++) {\n const htmlDivElement = document.createElement('div');\n htmlDivElement.classList.add(\n Namespace.css.dayOfTheWeek,\n Namespace.css.noHighlight\n );\n htmlDivElement.innerText = innerDate.format({ weekday: 'short' });\n innerDate.manipulate(1, Unit.date);\n row.push(htmlDivElement);\n }\n\n return row;\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `month`\n */\nexport default class MonthDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.monthsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMonth);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.monthsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.monthsContainer,\n this._context._viewDate.format({ year: 'numeric' })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.year),\n Unit.year\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.year),\n Unit.year\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone.startOf(Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMonth}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.month);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.month)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.month)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${index}`);\n containerClone.innerText = `${innerDate.format({ month: 'short' })}`;\n innerDate.manipulate(1, Unit.month);\n });\n }\n}\n","import { DateTime, DateTimeFormatOptions } from './datetime';\nimport Namespace from './namespace';\nimport { DefaultOptions } from './conts';\n\nexport default interface Options {\n restrictions: {\n minDate: DateTime;\n maxDate: DateTime;\n enabledDates: DateTime[];\n disabledDates: DateTime[];\n enabledHours: number[];\n disabledHours: number[];\n disabledTimeIntervals: { from: DateTime; to: DateTime }[];\n daysOfWeekDisabled: number[];\n };\n display: {\n toolbarPlacement: 'top' | 'bottom';\n components: {\n calendar: boolean;\n date: boolean;\n month: boolean;\n year: boolean;\n decades: boolean;\n clock: boolean;\n hours: boolean;\n minutes: boolean;\n seconds: boolean;\n useTwentyfourHour: boolean;\n };\n buttons: { today: boolean; close: boolean; clear: boolean };\n calendarWeeks: boolean;\n icons: {\n date: string;\n next: string;\n previous: string;\n today: string;\n clear: string;\n time: string;\n up: string;\n type: 'icons' | 'sprites';\n down: string;\n close: string;\n };\n viewMode: 'clock' | 'calendar' | 'months' | 'years' | 'decades';\n sideBySide: boolean;\n inputFormat: DateTimeFormatOptions;\n inline: boolean;\n keepOpen: boolean;\n };\n stepping: number;\n useCurrent: boolean;\n defaultDate: DateTime;\n localization: {\n nextMonth: string;\n pickHour: string;\n incrementSecond: string;\n nextDecade: string;\n selectDecade: string;\n dayViewHeaderFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n decrementHour: string;\n selectDate: string;\n incrementHour: string;\n previousCentury: string;\n decrementSecond: string;\n today: string;\n previousMonth: string;\n selectYear: string;\n pickSecond: string;\n nextCentury: string;\n close: string;\n incrementMinute: string;\n selectTime: string;\n clear: string;\n toggleMeridiem: string;\n selectMonth: string;\n decrementMinute: string;\n pickMinute: string;\n nextYear: string;\n previousYear: string;\n previousDecade: string;\n locale: string;\n };\n keepInvalid: boolean;\n debug: boolean;\n allowInputToggle: boolean;\n viewDate: DateTime;\n multipleDates: boolean;\n multipleDatesSeparator: string;\n promptTimeOnDateChange: boolean;\n promptTimeOnDateChangeTransitionDelay: number;\n}\n\nexport class OptionConverter {\n static _mergeOptions(providedOptions: Options, mergeTo: Options): Options {\n const newOptions = {} as Options;\n let path = '';\n\n const processKey = (key, value, providedType, defaultType) => {\n switch (key) {\n case 'defaultDate': {\n const dateTime = this._dateConversion(value, 'defaultDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'defaultDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'viewDate': {\n const dateTime = this._dateConversion(value, 'viewDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'viewDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'minDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.minDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.minDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'maxDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.maxDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.maxDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'disabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.disabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.disabledHours',\n 0,\n 23\n );\n return value;\n case 'enabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.enabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.enabledHours',\n 0,\n 23\n );\n return value;\n case 'daysOfWeekDisabled':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.daysOfWeekDisabled',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 6).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.daysOfWeekDisabled',\n 0,\n 6\n );\n return value;\n case 'enabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.enabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.disabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledTimeIntervals':\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n key,\n providedType,\n 'array of { from: DateTime|Date, to: DateTime|Date }'\n );\n }\n const valueObject = value as { from: any; to: any }[];\n for (let i = 0; i < valueObject.length; i++) {\n Object.keys(valueObject[i]).forEach((vk) => {\n const subOptionName = `${key}[${i}].${vk}`;\n let d = valueObject[i][vk];\n const dateTime = this._dateConversion(d, subOptionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n subOptionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n valueObject[i][vk] = dateTime;\n });\n }\n return valueObject;\n case 'toolbarPlacement':\n case 'type':\n case 'viewMode':\n case 'dayViewHeaderFormat':\n const optionValues = {\n toolbarPlacement: ['top', 'bottom', 'default'],\n type: ['icons', 'sprites'],\n viewMode: ['clock', 'calendar', 'months', 'years', 'decades'],\n dayViewHeaderFormat: [\n 'numeric',\n '2-digit',\n 'long',\n 'short',\n 'narrow',\n ],\n };\n const keyOptions = optionValues[key];\n if (!keyOptions.includes(value))\n Namespace.errorMessages.unexpectedOptionValue(\n path.substring(1),\n value,\n keyOptions\n );\n\n return value;\n case 'inputFormat':\n return value;\n default:\n switch (defaultType) {\n case 'boolean':\n return value === 'true' || value === true;\n case 'number':\n return +value;\n case 'string':\n return value.toString();\n case 'object':\n return {};\n case 'function':\n return value;\n default:\n Namespace.errorMessages.typeMismatch(\n path.substring(1),\n providedType,\n defaultType\n );\n }\n }\n };\n\n /**\n * The spread operator caused sub keys to be missing after merging.\n * This is to fix that issue by using spread on the child objects first.\n * Also handles complex options like disabledDates\n * @param provided An option from new providedOptions\n * @param mergeOption Default option to compare types against\n * @param copyTo Destination object. This was add to prevent reference copies\n */\n const spread = (provided, mergeOption, copyTo) => {\n const unsupportedOptions = Object.keys(provided).filter(\n (x) => !Object.keys(mergeOption).includes(x)\n );\n if (unsupportedOptions.length > 0) {\n const flattenedOptions = OptionConverter._flattenDefaultOptions;\n\n const errors = unsupportedOptions.map((x) => {\n let error = `\"${path.substring(1)}.${x}\" in not a known option.`;\n let didYouMean = flattenedOptions.find((y) => y.includes(x));\n if (didYouMean) error += `Did you mean \"${didYouMean}\"?`;\n return error;\n });\n Namespace.errorMessages.unexpectedOptions(errors);\n }\n Object.keys(mergeOption).forEach((key) => {\n const defaultOptionValue = mergeOption[key];\n let providedType = typeof provided[key];\n let defaultType = typeof defaultOptionValue;\n let value = provided[key];\n if (!provided.hasOwnProperty(key)) {\n if (\n defaultType === 'undefined' ||\n (value?.length === 0 && Array.isArray(defaultOptionValue))\n ) {\n copyTo[key] = defaultOptionValue;\n return;\n }\n provided[key] = defaultOptionValue;\n value = provided[key];\n }\n path += `.${key}`;\n copyTo[key] = processKey(key, value, providedType, defaultType);\n\n if (typeof defaultOptionValue !== 'object' || key === 'inputFormat') {\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n return;\n }\n if (!Array.isArray(provided[key])) {\n spread(provided[key], defaultOptionValue, copyTo[key]);\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n }\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n });\n };\n spread(providedOptions, mergeTo, newOptions);\n\n return newOptions;\n }\n\n static _dataToOptions(element, options: Options): Options {\n const eData = element.dataset;\n if (\n !eData ||\n Object.keys(eData).length === 0 ||\n eData.constructor !== DOMStringMap\n )\n return options;\n let dataOptions = {} as Options;\n\n // because dataset returns camelCase including the 'td' key the option\n // key won't align\n const objectToNormalized = (object) => {\n const lowered = {};\n Object.keys(object).forEach((x) => {\n lowered[x.toLowerCase()] = x;\n });\n\n return lowered;\n };\n\n const rabbitHole = (\n split: string[],\n index: number,\n optionSubgroup: {},\n value: any\n ) => {\n // first round = display { ... }\n const normalizedOptions = objectToNormalized(optionSubgroup);\n\n const keyOption = normalizedOptions[split[index].toLowerCase()];\n const internalObject = {};\n\n if (keyOption === undefined) return internalObject;\n\n // if this is another object, continue down the rabbit hole\n if (optionSubgroup[keyOption].constructor === Object) {\n index++;\n internalObject[keyOption] = rabbitHole(\n split,\n index,\n optionSubgroup[keyOption],\n value\n );\n } else {\n internalObject[keyOption] = value;\n }\n return internalObject;\n };\n const optionsLower = objectToNormalized(options);\n\n Object.keys(eData)\n .filter((x) => x.startsWith(Namespace.dataKey))\n .map((x) => x.substring(2))\n .forEach((key) => {\n let keyOption = optionsLower[key.toLowerCase()];\n\n // dataset merges dashes to camelCase... yay\n // i.e. key = display_components_seconds\n if (key.includes('_')) {\n // [display, components, seconds]\n const split = key.split('_');\n // display\n keyOption = optionsLower[split[0].toLowerCase()];\n if (\n keyOption !== undefined &&\n options[keyOption].constructor === Object\n ) {\n dataOptions[keyOption] = rabbitHole(\n split,\n 1,\n options[keyOption],\n eData[`td${key}`]\n );\n }\n }\n // or key = multipleDate\n else if (keyOption !== undefined) {\n dataOptions[keyOption] = eData[`td${key}`];\n }\n });\n\n return this._mergeOptions(dataOptions, options);\n }\n\n /**\n * Attempts to prove `d` is a DateTime or Date or can be converted into one.\n * @param d If a string will attempt creating a date from it.\n * @private\n */\n static _dateTypeCheck(d: any): DateTime | null {\n if (d.constructor.name === 'DateTime') return d;\n if (d.constructor.name === 'Date') {\n return DateTime.convert(d);\n }\n if (typeof d === typeof '') {\n const dateTime = new DateTime(d);\n if (JSON.stringify(dateTime) === 'null') {\n return null;\n }\n return dateTime;\n }\n return null;\n }\n\n /**\n * Type checks that `value` is an array of Date or DateTime\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckDateArray(optionName: string, value, providedType: string) {\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of DateTime or Date'\n );\n }\n for (let i = 0; i < value.length; i++) {\n let d = value[i];\n const dateTime = this._dateConversion(d, optionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n value[i] = dateTime;\n }\n }\n\n /**\n * Type checks that `value` is an array of numbers\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckNumberArray(\n optionName: string,\n value,\n providedType: string\n ) {\n if (!Array.isArray(value) || value.find((x) => typeof x !== typeof 0)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of numbers'\n );\n }\n return;\n }\n\n /**\n * Attempts to convert `d` to a DateTime object\n * @param d value to convert\n * @param optionName Provides text to error messages e.g. disabledDates\n */\n static _dateConversion(d: any, optionName: string) {\n if (typeof d === typeof '' && optionName !== 'input field') {\n Namespace.errorMessages.dateString();\n }\n\n const converted = this._dateTypeCheck(d);\n\n if (!converted) {\n Namespace.errorMessages.failedToParseDate(optionName, d);\n }\n return converted;\n }\n\n private static _flatback: string[];\n\n private static get _flattenDefaultOptions(): string[] {\n if (this._flatback) return this._flatback;\n const deepKeys = (t, pre = []) =>\n Array.isArray(t)\n ? []\n : Object(t) === t\n ? Object.entries(t).flatMap(([k, v]) => deepKeys(v, [...pre, k]))\n : pre.join('.');\n\n this._flatback = deepKeys(DefaultOptions);\n\n return this._flatback;\n }\n\n /**\n * Some options conflict like min/max date. Verify that these kinds of options\n * are set correctly.\n * @param config\n */\n static _validateConflcits(config: Options) {\n if (config.restrictions.minDate && config.restrictions.maxDate) {\n if (config.restrictions.minDate.isAfter(config.restrictions.maxDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'minDate is after maxDate'\n );\n }\n\n if (config.restrictions.maxDate.isBefore(config.restrictions.minDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'maxDate is before minDate'\n );\n }\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport { ChangeEvent, FailEvent } from './event-types';\nimport { OptionConverter } from './options';\n\nexport default class Dates {\n private _dates: DateTime[] = [];\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Returns the array of selected dates\n */\n get picked(): DateTime[] {\n return this._dates;\n }\n\n /**\n * Returns the last picked value.\n */\n get lastPicked(): DateTime {\n return this._dates[this.lastPickedIndex];\n }\n\n /**\n * Returns the length of picked dates -1 or 0 if none are selected.\n */\n get lastPickedIndex(): number {\n if (this._dates.length === 0) return 0;\n return this._dates.length - 1;\n }\n\n /**\n * Adds a new DateTime to selected dates array\n * @param date\n */\n add(date: DateTime): void {\n this._dates.push(date);\n }\n\n /**\n * Tries to convert the provided value to a DateTime object.\n * If value is null|undefined then clear the value of the provided index (or 0).\n * @param value Value to convert or null|undefined\n * @param index When using multidates this is the index in the array\n * @param from Used in the warning message, useful for debugging.\n */\n set(value: any, index?: number, from: string = 'date.set') {\n if (!value) this._setValue(value, index);\n const converted = OptionConverter._dateConversion(value, 'input field');\n if (converted !== undefined) this._setValue(converted, index);\n else Namespace.errorMessages.failedToParseDate(from, value, true);\n }\n\n /**\n * Returns true if the `targetDate` is part of the selected dates array.\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n isPicked(targetDate: DateTime, unit?: Unit): boolean {\n if (!unit) return this._dates.find((x) => x === targetDate) !== undefined;\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return (\n this._dates\n .map((x) => x.format(format))\n .find((x) => x === innerDateFormatted) !== undefined\n );\n }\n\n /**\n * Returns the index at which `targetDate` is in the array.\n * This is used for updating or removing a date when multi-date is used\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n pickedIndex(targetDate: DateTime, unit?: Unit): number {\n if (!unit) return this._dates.indexOf(targetDate);\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return this._dates.map((x) => x.format(format)).indexOf(innerDateFormatted);\n }\n\n /**\n * Clears all selected dates.\n */\n clear() {\n this._context._unset = true;\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate: this.lastPicked,\n isClear: true,\n isValid: true,\n } as ChangeEvent);\n this._dates = [];\n }\n\n /**\n * Find the \"book end\" years given a `year` and a `factor`\n * @param factor e.g. 100 for decades\n * @param year e.g. 2021\n */\n static getStartEndYear(\n factor: number,\n year: number\n ): [number, number, number] {\n const step = factor / 10,\n startYear = Math.floor(year / factor) * factor,\n endYear = startYear + step * 9,\n focusValue = Math.floor(year / step) * step;\n return [startYear, endYear, focusValue];\n }\n\n /**\n * Do not use direectly. Attempts to either clear or set the `target` date at `index`.\n * If the `target` is null then the date will be cleared.\n * If multi-date is being used then it will be removed from the array.\n * If `target` is valid and multi-date is used then if `index` is\n * provided the date at that index will be replaced, otherwise it is appended.\n * @param target\n * @param index\n */\n _setValue(target?: DateTime, index?: number): void {\n const noIndex = typeof index === 'undefined',\n isClear = !target && noIndex;\n let oldDate = this._context._unset ? null : this._dates[index];\n if (!oldDate && !this._context._unset && noIndex && isClear) {\n oldDate = this.lastPicked;\n }\n\n if (target && oldDate?.isSame(target)) return;\n\n const updateInput = () => {\n if (!this._context._input) return;\n\n let newValue =\n target?.format(this._context._options.display.inputFormat) || '';\n if (this._context._options.multipleDates) {\n newValue = this._dates\n .map((d) => d.format(this._context._options.display.inputFormat))\n .join(this._context._options.multipleDatesSeparator);\n }\n if (this._context._input.value != newValue)\n this._context._input.value = newValue;\n };\n\n // case of calling setValue(null)\n if (!target) {\n if (\n !this._context._options.multipleDates ||\n this._dates.length === 1 ||\n isClear\n ) {\n this._context._unset = true;\n this._dates = [];\n } else {\n this._dates.splice(index, 1);\n }\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n\n updateInput();\n this._context._display._update('all');\n return;\n }\n\n index = index || 0;\n target = target.clone;\n\n // minute stepping is being used, force the minute to the closest value\n if (this._context._options.stepping !== 1) {\n target.minutes =\n Math.round(target.minutes / this._context._options.stepping) *\n this._context._options.stepping;\n target.seconds = 0;\n }\n\n if (this._context._validation.isValid(target)) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._unset = false;\n this._context._display._update('all');\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n return;\n }\n\n if (this._context._options.keepInvalid) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: false,\n } as ChangeEvent);\n }\n this._context._triggerEvent({\n type: Namespace.events.error,\n reason: Namespace.errorMessages.failedToSetInvalidDate,\n date: target,\n oldDate,\n } as FailEvent);\n }\n\n /**\n * Returns a format object based on the granularity of `unit`\n * @param unit\n */\n static getFormatByUnit(unit: Unit): object {\n switch (unit) {\n case 'date':\n return { dateStyle: 'short' };\n case 'month':\n return {\n month: 'numeric',\n year: 'numeric',\n };\n case 'year':\n return { year: 'numeric' };\n }\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { DateTime, Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\nimport Dates from '../../dates';\n\n/**\n * Creates and updates the grid for `year`\n */\nexport default class YearDisplay {\n private _context: TempusDominus;\n private _startYear: DateTime;\n private _endYear: DateTime;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.yearsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectYear);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update() {\n const [start, end] = Dates.getStartEndYear(\n 10,\n this._context._viewDate.year\n );\n this._startYear = this._context._viewDate.clone.manipulate(-1, Unit.year);\n this._endYear = this._context._viewDate.clone.manipulate(10, Unit.year);\n\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.yearsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.yearsContainer,\n `${this._startYear.year}-${this._endYear.year}`\n );\n\n this._context._validation.isValid(this._startYear, Unit.year)\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n this._context._validation.isValid(this._endYear, Unit.year)\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone\n .startOf(Unit.year)\n .manipulate(-1, Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectYear}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.year);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.year)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.year)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.year}`);\n containerClone.innerText = `${innerDate.year}`;\n\n innerDate.manipulate(1, Unit.year);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport Dates from '../../dates';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `seconds`\r\n */\r\nexport default class DecadeDisplay {\r\n private _context: TempusDominus;\r\n private _startDecade: DateTime;\r\n private _endDecade: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker() {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.decadesContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDecade);\r\n container.appendChild(div);\r\n }\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 100,\r\n this._context._viewDate.year\r\n );\r\n this._startDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._startDecade.year = start;\r\n this._endDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._endDecade.year = end;\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.decadesContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.decadesContainer,\r\n `${this._startDecade.year}-${this._endDecade.year}`\r\n );\r\n\r\n this._context._validation.isValid(this._startDecade, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endDecade, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n const pickedYears = this._context.dates.picked.map((x) => x.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectDecade}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (index === 0) {\r\n containerClone.classList.add(Namespace.css.old);\r\n if (this._startDecade.year - 10 < 0) {\r\n containerClone.textContent = ' ';\r\n previous.classList.add(Namespace.css.disabled);\r\n containerClone.classList.add(Namespace.css.disabled);\r\n containerClone.setAttribute('data-value', ``);\r\n return;\r\n } else {\r\n containerClone.innerText = `${this._startDecade.year - 10}`;\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n return;\r\n }\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.decade);\r\n const startDecadeYear = this._startDecade.year;\r\n const endDecadeYear = this._startDecade.year + 9;\r\n\r\n if (\r\n !this._context._unset &&\r\n pickedYears.filter((x) => x >= startDecadeYear && x <= endDecadeYear)\r\n .length > 0\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n containerClone.innerText = `${this._startDecade.year}`;\r\n\r\n this._startDecade.manipulate(10, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates the clock display\n */\nexport default class TimeDisplay {\n private _context: TempusDominus;\n private _gridColumns = '';\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the clock display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.clockContainer);\n\n container.append(...this._grid());\n\n return container;\n }\n\n /**\n * Populates the various elements with in the clock display\n * like the current hour and if the manipulation icons are enabled.\n * @private\n */\n _update(): void {\n const timesDiv = (\n this._context._display.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0]\n );\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n timesDiv\n .querySelectorAll('.disabled')\n .forEach((element) => element.classList.remove(Namespace.css.disabled));\n\n if (this._context._options.display.components.hours) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.hours}]`\n ).innerText = this._context._options.display.components.useTwentyfourHour\n ? lastPicked.hoursFormatted\n : lastPicked.twelveHoursFormatted;\n }\n\n if (this._context._options.display.components.minutes) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.minutes}]`\n ).innerText = lastPicked.minutesFormatted;\n }\n\n if (this._context._options.display.components.seconds) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.seconds}]`\n ).innerText = lastPicked.secondsFormatted;\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n const toggle = timesDiv.querySelector(\n `[data-action=${ActionTypes.toggleMeridiem}]`\n );\n\n toggle.innerText = lastPicked.meridiem();\n\n if (\n !this._context._validation.isValid(\n lastPicked.clone.manipulate(\n lastPicked.hours >= 12 ? -12 : 12,\n Unit.hours\n )\n )\n ) {\n toggle.classList.add(Namespace.css.disabled);\n } else {\n toggle.classList.remove(Namespace.css.disabled);\n }\n }\n\n timesDiv.style.gridTemplateAreas = `\"${this._gridColumns}\"`;\n }\n\n /**\n * Creates the table for the clock display depending on what options are selected.\n * @private\n */\n private _grid(): HTMLElement[] {\n this._gridColumns = '';\n const top = [],\n middle = [],\n bottom = [],\n separator = document.createElement('div'),\n upIcon = this._context._display._iconTag(\n this._context._options.display.icons.up\n ),\n downIcon = this._context._display._iconTag(\n this._context._options.display.icons.down\n );\n\n separator.classList.add(Namespace.css.separator, Namespace.css.noHighlight);\n const separatorColon = separator.cloneNode(true);\n separatorColon.innerHTML = ':';\n\n const getSeparator = (colon = false): HTMLElement => {\n return colon\n ? separatorColon.cloneNode(true)\n : separator.cloneNode(true);\n };\n\n if (this._context._options.display.components.hours) {\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.incrementHours);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickHour\n );\n divElement.setAttribute('data-action', ActionTypes.showHours);\n divElement.setAttribute('data-time-component', Unit.hours);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.decrementHours);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n this._gridColumns += 'a';\n }\n\n if (this._context._options.display.components.minutes) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.hours) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.incrementMinutes);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickMinute\n );\n divElement.setAttribute('data-action', ActionTypes.showMinutes);\n divElement.setAttribute('data-time-component', Unit.minutes);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.decrementMinutes);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (this._context._options.display.components.seconds) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.minutes) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.incrementSeconds);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickSecond\n );\n divElement.setAttribute('data-action', ActionTypes.showSeconds);\n divElement.setAttribute('data-time-component', Unit.seconds);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.decrementSeconds);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n this._gridColumns += ' a';\n let divElement = getSeparator();\n top.push(divElement);\n\n let button = document.createElement('button');\n button.setAttribute(\n 'title',\n this._context._options.localization.toggleMeridiem\n );\n button.setAttribute('data-action', ActionTypes.toggleMeridiem);\n button.setAttribute('tabindex', '-1');\n button.classList.add(Namespace.css.toggleMeridiem);\n\n divElement = document.createElement('div');\n divElement.classList.add(Namespace.css.noHighlight);\n divElement.appendChild(button);\n middle.push(divElement);\n\n divElement = getSeparator();\n bottom.push(divElement);\n }\n\n this._gridColumns = this._gridColumns.trim();\n\n return [...top, ...middle, ...bottom];\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `hours`\n */\nexport default class HourDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.hourContainer);\n\n for (\n let i = 0;\n i <\n (this._context._options.display.components.useTwentyfourHour ? 24 : 12);\n i++\n ) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectHour);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.hourContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.date);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectHour}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.hour);\n\n if (!this._context._validation.isValid(innerDate, Unit.hours)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.hours}`);\n containerClone.innerText = this._context._options.display.components\n .useTwentyfourHour\n ? innerDate.hoursFormatted\n : innerDate.twelveHoursFormatted;\n innerDate.manipulate(1, Unit.hours);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `minutes`\n */\nexport default class MinuteDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.minuteContainer);\n\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n for (let i = 0; i < 60 / step; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMinute);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.minuteContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.hours);\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMinute}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.minute);\n\n if (!this._context._validation.isValid(innerDate, Unit.minutes)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.minutes}`);\n containerClone.innerText = innerDate.minutesFormatted;\n innerDate.manipulate(step, Unit.minutes);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class secondDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.secondContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectSecond);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.secondContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.minutes);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectSecond}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.second);\n\n if (!this._context._validation.isValid(innerDate, Unit.seconds)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.seconds}`);\n containerClone.innerText = innerDate.secondsFormatted;\n innerDate.manipulate(5, Unit.seconds);\n });\n }\n}\n","import DateDisplay from './calendar/date-display';\r\nimport MonthDisplay from './calendar/month-display';\r\nimport YearDisplay from './calendar/year-display';\r\nimport DecadeDisplay from './calendar/decade-display';\r\nimport TimeDisplay from './time/time-display';\r\nimport HourDisplay from './time/hour-display';\r\nimport MinuteDisplay from './time/minute-display';\r\nimport SecondDisplay from './time/second-display';\r\nimport { DateTime, Unit } from '../datetime';\r\nimport { DatePickerModes } from '../conts';\r\nimport { TempusDominus } from '../tempus-dominus';\r\nimport { ActionTypes } from '../actions';\r\nimport { createPopper } from '@popperjs/core';\r\nimport Namespace from '../namespace';\r\nimport { HideEvent } from '../event-types';\r\n\r\n/**\r\n * Main class for all things display related.\r\n */\r\nexport default class Display {\r\n private _context: TempusDominus;\r\n private _dateDisplay: DateDisplay;\r\n private _monthDisplay: MonthDisplay;\r\n private _yearDisplay: YearDisplay;\r\n private _decadeDisplay: DecadeDisplay;\r\n private _timeDisplay: TimeDisplay;\r\n private _widget: HTMLElement;\r\n private _hourDisplay: HourDisplay;\r\n private _minuteDisplay: MinuteDisplay;\r\n private _secondDisplay: SecondDisplay;\r\n private _popperInstance: any;\r\n private _isVisible = false;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this._dateDisplay = new DateDisplay(context);\r\n this._monthDisplay = new MonthDisplay(context);\r\n this._yearDisplay = new YearDisplay(context);\r\n this._decadeDisplay = new DecadeDisplay(context);\r\n this._timeDisplay = new TimeDisplay(context);\r\n this._hourDisplay = new HourDisplay(context);\r\n this._minuteDisplay = new MinuteDisplay(context);\r\n this._secondDisplay = new SecondDisplay(context);\r\n\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Returns the widget body or undefined\r\n * @private\r\n */\r\n get widget(): HTMLElement | undefined {\r\n return this._widget;\r\n }\r\n\r\n /**\r\n * Returns this visible state of the picker (shown)\r\n */\r\n get isVisible() {\r\n return this._isVisible;\r\n }\r\n\r\n /**\r\n * Updates the table for a particular unit. Used when an option as changed or\r\n * whenever the class list might need to be refreshed.\r\n * @param unit\r\n * @private\r\n */\r\n _update(unit: Unit | 'clock' | 'calendar' | 'all'): void {\r\n if (!this.widget) return;\r\n //todo do I want some kind of error catching or other guards here?\r\n switch (unit) {\r\n case Unit.seconds:\r\n this._secondDisplay._update();\r\n break;\r\n case Unit.minutes:\r\n this._minuteDisplay._update();\r\n break;\r\n case Unit.hours:\r\n this._hourDisplay._update();\r\n break;\r\n case Unit.date:\r\n this._dateDisplay._update();\r\n break;\r\n case Unit.month:\r\n this._monthDisplay._update();\r\n break;\r\n case Unit.year:\r\n this._yearDisplay._update();\r\n break;\r\n case 'clock':\r\n this._timeDisplay._update();\r\n this._update(Unit.hours);\r\n this._update(Unit.minutes);\r\n this._update(Unit.seconds);\r\n break;\r\n case 'calendar':\r\n this._update(Unit.date);\r\n this._update(Unit.year);\r\n this._update(Unit.month);\r\n this._decadeDisplay._update();\r\n this._updateCalendarHeader();\r\n break;\r\n case 'all':\r\n if (this._hasTime) {\r\n this._update('clock');\r\n }\r\n if (this._hasDate) {\r\n this._update('calendar');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Shows the picker and creates a Popper instance if needed.\r\n * Add document click event to hide when clicking outside the picker.\r\n * @fires Events#show\r\n */\r\n show(): void {\r\n if (this.widget == undefined) {\r\n if (\r\n this._context._options.useCurrent &&\r\n !this._context._options.defaultDate &&\r\n !this._context._input?.value\r\n ) {\r\n //todo in the td4 branch a pr changed this to allow granularity\r\n const date = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n if (!this._context._options.keepInvalid) {\r\n let tries = 0;\r\n let direction = 1;\r\n if (this._context._options.restrictions.maxDate?.isBefore(date)) {\r\n direction = -1;\r\n }\r\n while (!this._context._validation.isValid(date)) {\r\n date.manipulate(direction, Unit.date);\r\n if (tries > 31) break;\r\n tries++;\r\n }\r\n }\r\n this._context.dates._setValue(date);\r\n }\r\n\r\n if (this._context._options.defaultDate) {\r\n this._context.dates._setValue(this._context._options.defaultDate);\r\n }\r\n\r\n this._buildWidget();\r\n if (this._hasDate) {\r\n this._showMode();\r\n }\r\n\r\n if (!this._context._options.display.inline) {\r\n document.body.appendChild(this.widget);\r\n\r\n this._popperInstance = createPopper(\r\n this._context._element,\r\n this.widget,\r\n {\r\n modifiers: [\r\n /* {\r\n name: 'offset',\r\n options: {\r\n offset: [2, 8],\r\n },\r\n },*/\r\n { name: 'eventListeners', enabled: true },\r\n ],\r\n placement: 'bottom-start',\r\n }\r\n );\r\n } else {\r\n this._context._element.appendChild(this.widget);\r\n }\r\n\r\n if (this._context._options.display.viewMode == 'clock') {\r\n this._context._action.do(\r\n {\r\n currentTarget: this.widget.querySelector(\r\n `.${Namespace.css.timeContainer}`\r\n ),\r\n },\r\n ActionTypes.showClock\r\n );\r\n }\r\n\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.addEventListener('click', this._actionsClickEvent)\r\n );\r\n\r\n // show the clock when using sideBySide\r\n if (this._context._options.display.sideBySide) {\r\n this._timeDisplay._update();\r\n (\r\n this.widget.getElementsByClassName(\r\n Namespace.css.clockContainer\r\n )[0] as HTMLElement\r\n ).style.display = 'grid';\r\n }\r\n }\r\n\r\n this.widget.classList.add(Namespace.css.show);\r\n if (!this._context._options.display.inline) {\r\n this._popperInstance.update();\r\n document.addEventListener('click', this._documentClickEvent);\r\n }\r\n this._context._triggerEvent({ type: Namespace.events.show });\r\n this._isVisible = true;\r\n }\r\n\r\n /**\r\n * Changes the calendar view mode. E.g. month <-> year\r\n * @param direction -/+ number to move currentViewMode\r\n * @private\r\n */\r\n _showMode(direction?: number): void {\r\n if (!this.widget) {\r\n return;\r\n }\r\n if (direction) {\r\n const max = Math.max(\r\n this._context._minViewModeNumber,\r\n Math.min(3, this._context._currentViewMode + direction)\r\n );\r\n if (this._context._currentViewMode == max) return;\r\n this._context._currentViewMode = max;\r\n }\r\n\r\n this.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div`\r\n )\r\n .forEach((e: HTMLElement) => (e.style.display = 'none'));\r\n\r\n const datePickerMode = DatePickerModes[this._context._currentViewMode];\r\n let picker: HTMLElement = this.widget.querySelector(\r\n `.${datePickerMode.className}`\r\n );\r\n\r\n switch (datePickerMode.className) {\r\n case Namespace.css.decadesContainer:\r\n this._decadeDisplay._update();\r\n break;\r\n case Namespace.css.yearsContainer:\r\n this._yearDisplay._update();\r\n break;\r\n case Namespace.css.monthsContainer:\r\n this._monthDisplay._update();\r\n break;\r\n case Namespace.css.daysContainer:\r\n this._dateDisplay._update();\r\n break;\r\n }\r\n\r\n picker.style.display = 'grid';\r\n this._updateCalendarHeader();\r\n }\r\n\r\n _updateCalendarHeader() {\r\n const showing = [\r\n ...this.widget.querySelector(\r\n `.${Namespace.css.dateContainer} div[style*=\"display: grid\"]`\r\n ).classList,\r\n ].find((x) => x.startsWith(Namespace.css.dateContainer));\r\n\r\n const [previous, switcher, next] = this._context._display.widget\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switch (showing) {\r\n case Namespace.css.decadesContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousCentury\r\n );\r\n switcher.setAttribute('title', '');\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextCentury\r\n );\r\n break;\r\n case Namespace.css.yearsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousDecade\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDecade\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextDecade\r\n );\r\n break;\r\n case Namespace.css.monthsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousYear\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectYear\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextYear\r\n );\r\n break;\r\n case Namespace.css.daysContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousMonth\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectMonth\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextMonth\r\n );\r\n switcher.innerText = this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n });\r\n break;\r\n }\r\n switcher.innerText = switcher.getAttribute(showing);\r\n }\r\n\r\n /**\r\n * Hides the picker if needed.\r\n * Remove document click event to hide when clicking outside the picker.\r\n * @fires Events#hide\r\n */\r\n hide(): void {\r\n if (!this.widget || !this._isVisible) return;\r\n\r\n this.widget.classList.remove(Namespace.css.show);\r\n\r\n if (this._isVisible) {\r\n this._context._triggerEvent({\r\n type: Namespace.events.hide,\r\n date: this._context._unset\r\n ? null\r\n : this._context.dates.lastPicked\r\n ? this._context.dates.lastPicked.clone\r\n : void 0,\r\n } as HideEvent);\r\n this._isVisible = false;\r\n }\r\n\r\n document.removeEventListener('click', this._documentClickEvent);\r\n }\r\n\r\n /**\r\n * Toggles the picker's open state. Fires a show/hide event depending.\r\n */\r\n toggle() {\r\n return this._isVisible ? this.hide() : this.show();\r\n }\r\n\r\n /**\r\n * Removes document and data-action click listener and reset the widget\r\n * @private\r\n */\r\n _dispose() {\r\n document.removeEventListener('click', this._documentClickEvent);\r\n if (!this.widget) return;\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.removeEventListener('click', this._actionsClickEvent)\r\n );\r\n this.widget.parentNode.removeChild(this.widget);\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Builds the widgets html template.\r\n * @private\r\n */\r\n private _buildWidget(): HTMLElement {\r\n const template = document.createElement('div');\r\n template.classList.add(Namespace.css.widget);\r\n\r\n const dateView = document.createElement('div');\r\n dateView.classList.add(Namespace.css.dateContainer);\r\n dateView.append(\r\n this._headTemplate,\r\n this._decadeDisplay._picker,\r\n this._yearDisplay._picker,\r\n this._monthDisplay._picker,\r\n this._dateDisplay._picker\r\n );\r\n\r\n const timeView = document.createElement('div');\r\n timeView.classList.add(Namespace.css.timeContainer);\r\n timeView.appendChild(this._timeDisplay._picker);\r\n timeView.appendChild(this._hourDisplay._picker);\r\n timeView.appendChild(this._minuteDisplay._picker);\r\n timeView.appendChild(this._secondDisplay._picker);\r\n\r\n const toolbar = document.createElement('div');\r\n toolbar.classList.add(Namespace.css.toolbar);\r\n toolbar.append(...this._toolbar);\r\n\r\n if (this._context._options.display.inline) {\r\n template.classList.add(Namespace.css.inline);\r\n }\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n template.classList.add('calendarWeeks');\r\n }\r\n\r\n if (\r\n this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n template.classList.add(Namespace.css.sideBySide);\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n const row = document.createElement('div');\r\n row.classList.add('td-row');\r\n dateView.classList.add('td-half');\r\n timeView.classList.add('td-half');\r\n\r\n row.appendChild(dateView);\r\n row.appendChild(timeView);\r\n template.appendChild(row);\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n this._widget = template;\r\n return;\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n if (this._hasDate) {\r\n if (this._hasTime) {\r\n dateView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode !== 'clock')\r\n dateView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(dateView);\r\n }\r\n\r\n if (this._hasTime) {\r\n if (this._hasDate) {\r\n timeView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode === 'clock')\r\n timeView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(timeView);\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n const arrow = document.createElement('div');\r\n arrow.classList.add('arrow');\r\n arrow.setAttribute('data-popper-arrow', '');\r\n template.appendChild(arrow);\r\n\r\n this._widget = template;\r\n }\r\n\r\n /**\r\n * Returns true if the hours, minutes, or seconds component is turned on\r\n */\r\n get _hasTime(): boolean {\r\n return (\r\n this._context._options.display.components.clock &&\r\n (this._context._options.display.components.hours ||\r\n this._context._options.display.components.minutes ||\r\n this._context._options.display.components.seconds)\r\n );\r\n }\r\n\r\n /**\r\n * Returns true if the year, month, or date component is turned on\r\n */\r\n get _hasDate(): boolean {\r\n return (\r\n this._context._options.display.components.calendar &&\r\n (this._context._options.display.components.year ||\r\n this._context._options.display.components.month ||\r\n this._context._options.display.components.date)\r\n );\r\n }\r\n\r\n /**\r\n * Get the toolbar html based on options like buttons.today\r\n * @private\r\n */\r\n get _toolbar(): HTMLElement[] {\r\n const toolbar = [];\r\n\r\n if (this._context._options.display.buttons.today) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.today);\r\n div.setAttribute('title', this._context._options.localization.today);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.today)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (\r\n !this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n let title, icon;\r\n if (this._context._options.display.viewMode === 'clock') {\r\n title = this._context._options.localization.selectDate;\r\n icon = this._context._options.display.icons.date;\r\n } else {\r\n title = this._context._options.localization.selectTime;\r\n icon = this._context._options.display.icons.time;\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.togglePicker);\r\n div.setAttribute('title', title);\r\n\r\n div.appendChild(this._iconTag(icon));\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.clear) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.clear);\r\n div.setAttribute('title', this._context._options.localization.clear);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.clear)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.close) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.close);\r\n div.setAttribute('title', this._context._options.localization.close);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.close)\r\n );\r\n toolbar.push(div);\r\n }\r\n\r\n return toolbar;\r\n }\r\n\r\n /***\r\n * Builds the base header template with next and previous icons\r\n * @private\r\n */\r\n get _headTemplate(): HTMLElement {\r\n const calendarHeader = document.createElement('div');\r\n calendarHeader.classList.add(Namespace.css.calendarHeader);\r\n\r\n const previous = document.createElement('div');\r\n previous.classList.add(Namespace.css.previous);\r\n previous.setAttribute('data-action', ActionTypes.previous);\r\n previous.appendChild(\r\n this._iconTag(this._context._options.display.icons.previous)\r\n );\r\n\r\n const switcher = document.createElement('div');\r\n switcher.classList.add(Namespace.css.switch);\r\n switcher.setAttribute('data-action', ActionTypes.pickerSwitch);\r\n\r\n const next = document.createElement('div');\r\n next.classList.add(Namespace.css.next);\r\n next.setAttribute('data-action', ActionTypes.next);\r\n next.appendChild(this._iconTag(this._context._options.display.icons.next));\r\n\r\n calendarHeader.append(previous, switcher, next);\r\n return calendarHeader;\r\n }\r\n\r\n /**\r\n * Builds an icon tag as either an ``\r\n * or with icons.type is `sprites` then an svg tag instead\r\n * @param iconClass\r\n * @private\r\n */\r\n _iconTag(iconClass: string): HTMLElement {\r\n if (this._context._options.display.icons.type === 'sprites') {\r\n const svg = document.createElement('svg');\r\n svg.innerHTML = ``;\r\n return svg;\r\n }\r\n const icon = document.createElement('i');\r\n DOMTokenList.prototype.add.apply(icon.classList, iconClass.split(' '));\r\n return icon;\r\n }\r\n\r\n /**\r\n * A document click event to hide the widget if click is outside\r\n * @private\r\n * @param e MouseEvent\r\n */\r\n private _documentClickEvent = (e: MouseEvent) => {\r\n if (\r\n this._isVisible &&\r\n !e.composedPath().includes(this.widget) && // click inside the widget\r\n !e.composedPath()?.includes(this._context._element) && // click on the element\r\n (!this._context._options.display.keepOpen ||\r\n !this._context._options.debug ||\r\n !(window as any).debug)\r\n ) {\r\n this.hide();\r\n }\r\n };\r\n\r\n /**\r\n * Click event for any action like selecting a date\r\n * @param e MouseEvent\r\n * @private\r\n */\r\n private _actionsClickEvent = (e: MouseEvent) => {\r\n this._context._action.do(e);\r\n };\r\n\r\n /**\r\n * Causes the widget to get rebuilt on next show. If the picker is already open\r\n * then hide and reshow it.\r\n * @private\r\n */\r\n _rebuild() {\r\n const wasVisible = this._isVisible;\r\n if (wasVisible) this.hide();\r\n this._dispose();\r\n if (wasVisible) {\r\n this.show();\r\n }\r\n }\r\n}\r\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Dates from './dates';\n\n/**\n * Main class for date validation rules based on the options provided.\n */\nexport default class Validation {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Checks to see if the target date is valid based on the rules provided in the options.\n * Granularity can be provide to chek portions of the date instead of the whole.\n * @param targetDate\n * @param granularity\n */\n isValid(targetDate: DateTime, granularity?: Unit): boolean {\n if (\n this._context._options.restrictions.disabledDates.length > 0 &&\n this._isInDisabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledDates.length > 0 &&\n !this._isInEnabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.daysOfWeekDisabled?.length > 0 &&\n this._context._options.restrictions.daysOfWeekDisabled.indexOf(\n targetDate.weekDay\n ) !== -1\n ) {\n return false;\n }\n\n if (\n this._context._options.restrictions.minDate &&\n targetDate.isBefore(\n this._context._options.restrictions.minDate,\n granularity\n )\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.maxDate &&\n targetDate.isAfter(\n this._context._options.restrictions.maxDate,\n granularity\n )\n ) {\n return false;\n }\n\n if (\n granularity === Unit.hours ||\n granularity === Unit.minutes ||\n granularity === Unit.seconds\n ) {\n if (\n this._context._options.restrictions.disabledHours.length > 0 &&\n this._isInDisabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledHours.length > 0 &&\n !this._isInEnabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.disabledTimeIntervals.length > 0\n ) {\n for (\n let i = 0;\n i < this._context._options.restrictions.disabledTimeIntervals.length;\n i++\n ) {\n if (\n targetDate.isBetween(\n this._context._options.restrictions.disabledTimeIntervals[i].from,\n this._context._options.restrictions.disabledTimeIntervals[i].to\n )\n )\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Checks to see if the disabledDates option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInDisabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledDates ||\n this._context._options.restrictions.disabledDates.length === 0\n )\n return false;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.disabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the enabledDates option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInEnabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledDates ||\n this._context._options.restrictions.enabledDates.length === 0\n )\n return true;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.enabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the disabledHours option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInDisabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledHours ||\n this._context._options.restrictions.disabledHours.length === 0\n )\n return false;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.disabledHours.find(\n (x) => x === formattedDate\n );\n }\n\n /**\n * Checks to see if the enabledHours option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInEnabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledHours ||\n this._context._options.restrictions.enabledHours.length === 0\n )\n return true;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.enabledHours.find(\n (x) => x === formattedDate\n );\n }\n}\n","import Display from './display/index';\nimport Validation from './validation';\nimport Dates from './dates';\nimport Actions, { ActionTypes } from './actions';\nimport { DatePickerModes, DefaultOptions } from './conts';\nimport { DateTime, DateTimeFormatOptions, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options, { OptionConverter } from './options';\nimport {\n BaseEvent,\n ChangeEvent,\n ViewUpdateEvent,\n FailEvent,\n} from './event-types';\n\n/**\n * A robust and powerful date/time picker component.\n */\nclass TempusDominus {\n dates: Dates;\n\n _options: Options;\n _currentViewMode = 0;\n _subscribers: { [key: string]: ((event: any) => {})[] } = {};\n _element: HTMLElement;\n _input: HTMLInputElement;\n _unset: boolean;\n _minViewModeNumber = 0;\n _display: Display;\n _validation: Validation;\n _action: Actions;\n private _isDisabled = false;\n private _notifyChangeEventContext = 0;\n private _toggle: HTMLElement;\n private _currentPromptTimeTimeout: any;\n\n constructor(element: HTMLElement, options: Options = {} as Options) {\n if (!element) {\n Namespace.errorMessages.mustProvideElement;\n }\n this._element = element;\n this._options = this._initializeOptions(options, DefaultOptions, true);\n this._viewDate.setLocale(this._options.localization.locale);\n this._unset = true;\n\n this._display = new Display(this);\n this._validation = new Validation(this);\n this.dates = new Dates(this);\n this._action = new Actions(this);\n\n this._initializeInput();\n this._initializeToggle();\n\n if (this._options.display.inline) this._display.show();\n }\n\n _viewDate = new DateTime();\n\n get viewDate() {\n return this._viewDate;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Update the picker options. If `reset` is provide `options` will be merged with DefaultOptions instead.\n * @param options\n * @param reset\n * @public\n */\n updateOptions(options, reset = false): void {\n if (reset) this._options = this._initializeOptions(options, DefaultOptions);\n else this._options = this._initializeOptions(options, this._options);\n this._display._rebuild();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Toggles the picker open or closed. If the picker is disabled, nothing will happen.\n * @public\n */\n toggle(): void {\n if (this._isDisabled) return;\n this._display.toggle();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Shows the picker unless the picker is disabled.\n * @public\n */\n show(): void {\n if (this._isDisabled) return;\n this._display.show();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker unless the picker is disabled.\n * @public\n */\n hide(): void {\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Disables the picker and the target input field.\n * @public\n */\n disable(): void {\n this._isDisabled = true;\n // todo this might be undesired. If a dev disables the input field to\n // only allow using the picker, this will break that.\n this._input?.setAttribute('disabled', 'disabled');\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Enables the picker and the target input field.\n * @public\n */\n enable(): void {\n this._isDisabled = false;\n this._input?.removeAttribute('disabled');\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Clears all the selected dates\n * @public\n */\n clear(): void {\n this.dates.clear();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Allows for a direct subscription to picker events, without having to use addEventListener on the element.\n * @param eventTypes See Namespace.Events\n * @param callbacks Function to call when event is triggered\n * @public\n */\n subscribe(\n eventTypes: string | string[],\n callbacks: (event: any) => void | ((event: any) => void)[]\n ): { unsubscribe: void }[] {\n if (typeof eventTypes === 'string') {\n eventTypes = [eventTypes];\n }\n let callBackArray = [];\n if (!Array.isArray(callbacks)) {\n callBackArray = [callbacks];\n } else {\n callBackArray = callbacks;\n }\n\n if (eventTypes.length !== callBackArray.length) {\n Namespace.errorMessages.subscribeMismatch;\n }\n\n const returnArray = [];\n\n for (let i = 0; i < eventTypes.length; i++) {\n const eventType = eventTypes[i];\n if (!Array.isArray(this._subscribers[eventType])) {\n this._subscribers[eventType] = [];\n }\n\n this._subscribers[eventType].push(callBackArray[i]);\n\n returnArray.push({\n unsubscribe: this._unsubscribe.bind(\n this,\n eventType,\n this._subscribers[eventType].length - 1\n ),\n });\n\n if (eventTypes.length === 1) {\n return returnArray[0];\n }\n }\n\n return returnArray;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker and removes event listeners\n */\n dispose() {\n this._display.hide();\n // this will clear the document click event listener\n this._display._dispose();\n this._input?.removeEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input?.removeEventListener('click', this._toggleClickEvent);\n }\n this._toggle.removeEventListener('click', this._toggleClickEvent);\n this._subscribers = {};\n }\n\n /**\n * Triggers an event like ChangeEvent when the picker has updated the value\n * of a selected date.\n * @param event Accepts a BaseEvent object.\n * @private\n */\n _triggerEvent(event: BaseEvent) {\n // checking hasOwnProperty because the BasicEvent also falls through here otherwise\n if ((event as ChangeEvent) && event.hasOwnProperty('date')) {\n const { date, oldDate, isClear } = event as ChangeEvent;\n // this was to prevent a max call stack error\n // https://github.com/tempusdominus/core/commit/15a280507f5277b31b0b3319ab1edc7c19a000fb\n // todo see if this is still needed or if there's a cleaner way\n this._notifyChangeEventContext++;\n if (\n (date && oldDate && date.isSame(oldDate)) ||\n (!isClear && !date && !oldDate) ||\n this._notifyChangeEventContext > 1\n ) {\n this._notifyChangeEventContext = 0;\n return;\n }\n this._handleAfterChangeEvent(event as ChangeEvent);\n }\n\n this._element.dispatchEvent(\n new CustomEvent(event.type, { detail: event as any })\n );\n\n if ((window as any).jQuery) {\n const $ = (window as any).jQuery;\n $(this._element).trigger(event);\n }\n\n const publish = () => {\n // return if event is not subscribed\n if (!Array.isArray(this._subscribers[event.type])) {\n return;\n }\n\n // Trigger callback for each subscriber\n this._subscribers[event.type].forEach((callback) => {\n callback(event);\n });\n };\n\n publish();\n\n this._notifyChangeEventContext = 0;\n }\n\n /**\n * Fires a ViewUpdate event when, for example, the month view is changed.\n * @param {Unit} unit\n * @private\n */\n _viewUpdate(unit: Unit) {\n this._triggerEvent({\n type: Namespace.events.update,\n change: unit,\n viewDate: this._viewDate.clone,\n } as ViewUpdateEvent);\n }\n\n private _unsubscribe(eventName, index) {\n this._subscribers[eventName].splice(index, 1);\n }\n\n /**\n * Merges two Option objects together and validates options type\n * @param config new Options\n * @param mergeTo Options to merge into\n * @param includeDataset When true, the elements data-td attributes will be included in the\n * @private\n */\n private _initializeOptions(\n config: Options,\n mergeTo: Options,\n includeDataset = false\n ): Options {\n config = OptionConverter._mergeOptions(config, mergeTo);\n if (includeDataset)\n config = OptionConverter._dataToOptions(this._element, config);\n\n OptionConverter._validateConflcits(config);\n\n config.viewDate = config.viewDate.setLocale(config.localization.locale);\n\n if (!this._viewDate.isSame(config.viewDate)) {\n this._viewDate = config.viewDate;\n }\n\n /**\n * Sets the minimum view allowed by the picker. For example the case of only\n * allowing year and month to be selected but not date.\n */\n if (config.display.components.year) {\n this._minViewModeNumber = 2;\n }\n if (config.display.components.month) {\n this._minViewModeNumber = 1;\n }\n if (config.display.components.date) {\n this._minViewModeNumber = 0;\n }\n\n this._currentViewMode = Math.max(\n this._minViewModeNumber,\n this._currentViewMode\n );\n\n // Update view mode if needed\n if (\n DatePickerModes[this._currentViewMode].name !== config.display.viewMode\n ) {\n this._currentViewMode = Math.max(\n DatePickerModes.findIndex((x) => x.name === config.display.viewMode),\n this._minViewModeNumber\n );\n }\n\n // defaults the input format based on the components enabled\n if (config.display.inputFormat === undefined) {\n const components = config.display.components;\n config.display.inputFormat = {\n year: components.calendar && components.year ? 'numeric' : undefined,\n month: components.calendar && components.month ? '2-digit' : undefined,\n day: components.calendar && components.date ? '2-digit' : undefined,\n hour:\n components.clock && components.hours\n ? components.useTwentyfourHour\n ? '2-digit'\n : 'numeric'\n : undefined,\n minute: components.clock && components.minutes ? '2-digit' : undefined,\n second: components.clock && components.seconds ? '2-digit' : undefined,\n hour12: !components.useTwentyfourHour,\n };\n }\n\n if (this._display?.isVisible) {\n this._display._update('all');\n }\n\n return config;\n }\n\n /**\n * Checks if an input field is being used, attempts to locate one and sets an\n * event listener if found.\n * @private\n */\n private _initializeInput() {\n if (this._element.tagName == 'INPUT') {\n this._input = this._element as HTMLInputElement;\n } else {\n let query = this._element.dataset.tdTargetInput;\n if (query == undefined || query == 'nearest') {\n this._input = this._element.querySelector('input');\n } else {\n this._input = this._element.querySelector(query);\n }\n }\n\n if (!this._input) return;\n\n this._input.addEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input.addEventListener('click', this._toggleClickEvent);\n }\n\n if (this._input.value) {\n this._inputChangeEvent();\n }\n }\n\n /**\n * Attempts to locate a toggle for the picker and sets an event listener\n * @private\n */\n private _initializeToggle() {\n if (this._options.display.inline) return;\n let query = this._element.dataset.tdTargetToggle;\n if (query == 'nearest') {\n query = '[data-td-toggle=\"datetimepicker\"]';\n }\n this._toggle =\n query == undefined ? this._element : this._element.querySelector(query);\n this._toggle.addEventListener('click', this._toggleClickEvent);\n }\n\n /**\n * If the option is enabled this will render the clock view after a date pick.\n * @param e change event\n * @private\n */\n private _handleAfterChangeEvent(e: ChangeEvent) {\n if (\n // options is disabled\n !this._options.promptTimeOnDateChange ||\n this._options.display.inline ||\n this._options.display.sideBySide ||\n // time is disabled\n !this._display._hasTime ||\n // clock component is already showing\n this._display.widget\n ?.getElementsByClassName(Namespace.css.show)[0]\n .classList.contains(Namespace.css.timeContainer)\n )\n return;\n\n // First time ever. If useCurrent option is set to true (default), do nothing\n // because the first date is selected automatically.\n // or date didn't change (time did) or date changed because time did.\n if (\n (!e.oldDate && this._options.useCurrent) ||\n (e.oldDate && e.date?.isSame(e.oldDate))\n ) {\n return;\n }\n\n clearTimeout(this._currentPromptTimeTimeout);\n this._currentPromptTimeTimeout = setTimeout(() => {\n if (this._display.widget) {\n this._action.do(\n {\n currentTarget: this._display.widget.querySelector(\n `.${Namespace.css.switch} div`\n ),\n },\n ActionTypes.togglePicker\n );\n }\n }, this._options.promptTimeOnDateChangeTransitionDelay);\n }\n\n /**\n * Event for when the input field changes. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _inputChangeEvent = () => {\n const value = this._input.value;\n if (this._options.multipleDates) {\n try {\n const valueSplit = value.split(this._options.multipleDatesSeparator);\n for (let i = 0; i < valueSplit.length; i++) {\n this.dates.set(valueSplit[i], i, 'input');\n }\n } catch {\n console.warn(\n 'TD: Something went wrong trying to set the multidate values from the input field.'\n );\n }\n } else {\n this.dates.set(value, 0, 'input');\n }\n };\n\n /**\n * Event for when the toggle is clicked. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _toggleClickEvent = () => {\n this.toggle();\n };\n}\n\nexport {\n TempusDominus,\n Namespace,\n DefaultOptions,\n DateTime,\n Options,\n Unit,\n DateTimeFormatOptions,\n};\n"],"names":["Unit","SecondDisplay","createPopper"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tempus-dominus.js","sources":["../../src/js/datetime.ts","../../src/js/errors.ts","../../src/js/namespace.ts","../../src/js/conts.ts","../../src/js/display/collapse.ts","../../src/js/actions.ts","../../src/js/display/calendar/date-display.ts","../../src/js/display/calendar/month-display.ts","../../src/js/options.ts","../../src/js/dates.ts","../../src/js/display/calendar/year-display.ts","../../src/js/display/calendar/decade-display.ts","../../src/js/display/time/time-display.ts","../../src/js/display/time/hour-display.ts","../../src/js/display/time/minute-display.ts","../../src/js/display/time/second-display.ts","../../src/js/display/index.ts","../../src/js/validation.ts","../../src/js/tempus-dominus.ts"],"sourcesContent":["export enum Unit {\n seconds = 'seconds',\n minutes = 'minutes',\n hours = 'hours',\n date = 'date',\n month = 'month',\n year = 'year',\n}\n\nexport interface DateTimeFormatOptions extends Intl.DateTimeFormatOptions {\n timeStyle?: 'short' | 'medium' | 'long';\n dateStyle?: 'short' | 'medium' | 'long' | 'full';\n}\n\n/**\n * For the most part this object behaves exactly the same way\n * as the native Date object with a little extra spice.\n */\nexport class DateTime extends Date {\n /**\n * Used with Intl.DateTimeFormat\n */\n locale = 'default';\n\n /**\n * Chainable way to set the {@link locale}\n * @param value\n */\n setLocale(value: string): this {\n this.locale = value;\n return this;\n }\n\n /**\n * Converts a plain JS date object to a DateTime object.\n * Doing this allows access to format, etc.\n * @param date\n */\n static convert(date: Date): DateTime {\n if (!date) throw `A date is required`;\n return new DateTime(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n );\n }\n\n /**\n * Native date manipulations are not pure functions. This function creates a duplicate of the DateTime object.\n */\n get clone() {\n return new DateTime(\n this.year,\n this.month,\n this.date,\n this.hours,\n this.minutes,\n this.seconds,\n this.getMilliseconds()\n ).setLocale(this.locale);\n }\n\n /**\n * Sets the current date to the start of the {@link unit} provided\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).startOf('month')\n * would return April 1, 2021, 12:00:00.000 AM (midnight)\n * @param unit\n */\n startOf(unit: Unit | 'weekDay'): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n switch (unit) {\n case 'seconds':\n this.setMilliseconds(0);\n break;\n case 'minutes':\n this.setSeconds(0, 0);\n break;\n case 'hours':\n this.setMinutes(0, 0, 0);\n break;\n case 'date':\n this.setHours(0, 0, 0, 0);\n break;\n case 'weekDay':\n this.startOf(Unit.date);\n this.manipulate(0 - this.weekDay, Unit.date);\n break;\n case 'month':\n this.startOf(Unit.date);\n this.setDate(1);\n break;\n case 'year':\n this.startOf(Unit.date);\n this.setMonth(0, 1);\n break;\n }\n return this;\n }\n\n /**\n * Sets the current date to the end of the {@link unit} provided\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).endOf('month')\n * would return April 30, 2021, 11:59:59.999 PM\n * @param unit\n */\n endOf(unit: Unit | 'weekDay'): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n switch (unit) {\n case 'seconds':\n this.setMilliseconds(999);\n break;\n case 'minutes':\n this.setSeconds(59, 999);\n break;\n case 'hours':\n this.setMinutes(59, 59, 999);\n break;\n case 'date':\n this.setHours(23, 59, 59, 999);\n break;\n case 'weekDay':\n this.startOf(Unit.date);\n this.manipulate(6 - this.weekDay, Unit.date);\n break;\n case 'month':\n this.endOf(Unit.date);\n this.manipulate(1, Unit.month);\n this.setDate(0);\n break;\n case 'year':\n this.endOf(Unit.date);\n this.manipulate(1, Unit.year);\n this.setDate(0);\n break;\n }\n return this;\n }\n\n /**\n * Change a {@link unit} value. Value can be positive or negative\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).manipulate(1, 'month')\n * would return May 30, 2021, 11:45:32.984 AM\n * @param value A positive or negative number\n * @param unit\n */\n manipulate(value: number, unit: Unit): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n this[unit] += value;\n return this;\n }\n\n /**\n * Returns a string format.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat\n * for valid templates and locale objects\n * @param template An object. Uses browser defaults otherwise.\n * @param locale Can be a string or an array of strings. Uses browser defaults otherwise.\n */\n format(template: DateTimeFormatOptions, locale = this.locale): string {\n return new Intl.DateTimeFormat(locale, template).format(this);\n }\n\n /**\n * Return true if {@link compare} is before this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isBefore(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() < compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n return (\n this.clone.startOf(unit).valueOf() < compare.clone.startOf(unit).valueOf()\n );\n }\n\n /**\n * Return true if {@link compare} is after this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isAfter(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() > compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n return (\n this.clone.startOf(unit).valueOf() > compare.clone.startOf(unit).valueOf()\n );\n }\n\n /**\n * Return true if {@link compare} is same this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isSame(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() === compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n compare = DateTime.convert(compare);\n return (\n this.clone.startOf(unit).valueOf() === compare.startOf(unit).valueOf()\n );\n }\n\n /**\n * Check if this is between two other DateTimes, optionally looking at unit scale. The match is exclusive.\n * @param left\n * @param right\n * @param unit.\n * @param inclusivity. A [ indicates inclusion of a value. A ( indicates exclusion.\n * If the inclusivity parameter is used, both indicators must be passed.\n */\n isBetween(\n left: DateTime,\n right: DateTime,\n unit?: Unit,\n inclusivity: '()' | '[]' | '(]' | '[)' = '()'\n ): boolean {\n if (unit && this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n const leftInclusivity = inclusivity[0] === '(';\n const rightInclusivity = inclusivity[1] === ')';\n\n return (\n ((leftInclusivity\n ? this.isAfter(left, unit)\n : !this.isBefore(left, unit)) &&\n (rightInclusivity\n ? this.isBefore(right, unit)\n : !this.isAfter(right, unit))) ||\n ((leftInclusivity\n ? this.isBefore(left, unit)\n : !this.isAfter(left, unit)) &&\n (rightInclusivity\n ? this.isAfter(right, unit)\n : !this.isBefore(right, unit)))\n );\n }\n\n /**\n * Returns flattened object of the date. Does not include literals\n * @param locale\n * @param template\n */\n parts(\n locale = this.locale,\n template: any = { dateStyle: 'full', timeStyle: 'long' }\n ) {\n const parts = {};\n new Intl.DateTimeFormat(locale, template)\n .formatToParts(this)\n .filter((x) => x.type !== 'literal')\n .forEach((x) => (parts[x.type] = x.value));\n return parts;\n }\n\n /**\n * Shortcut to Date.getSeconds()\n */\n get seconds(): number {\n return this.getSeconds();\n }\n\n /**\n * Shortcut to Date.setSeconds()\n */\n set seconds(value: number) {\n this.setSeconds(value);\n }\n\n /**\n * Returns two digit hours\n */\n get secondsFormatted(): string {\n return this.seconds < 10 ? `0${this.seconds}` : `${this.seconds}`;\n }\n\n /**\n * Shortcut to Date.getMinutes()\n */\n get minutes(): number {\n return this.getMinutes();\n }\n\n /**\n * Shortcut to Date.setMinutes()\n */\n set minutes(value: number) {\n this.setMinutes(value);\n }\n\n /**\n * Returns two digit hours\n */\n get minutesFormatted(): string {\n return this.minutes < 10 ? `0${this.minutes}` : `${this.minutes}`;\n }\n\n /**\n * Shortcut to Date.getHours()\n */\n get hours(): number {\n return this.getHours();\n }\n\n /**\n * Shortcut to Date.setHours()\n */\n set hours(value: number) {\n this.setHours(value);\n }\n\n /**\n * Returns two digit hours\n */\n get hoursFormatted(): string {\n return this.hours < 10 ? `0${this.hours}` : `${this.hours}`;\n }\n\n /**\n * Returns two digit hours but in twelve hour mode e.g. 13 -> 1\n */\n get twelveHoursFormatted(): string {\n let hour = this.hours;\n if (hour > 12) hour = hour - 12;\n if (hour === 0) hour = 12;\n return hour < 10 ? `0${hour}` : `${hour}`;\n }\n\n /**\n * Get the meridiem of the date. E.g. AM or PM.\n * If the {@link locale} provides a \"dayPeriod\" then this will be returned,\n * otherwise it will return AM or PM.\n * @param locale\n */\n meridiem(locale: string = this.locale): string {\n return new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n hour12: true,\n } as any)\n .formatToParts(this)\n .find((p) => p.type === 'dayPeriod')?.value;\n }\n\n /**\n * Shortcut to Date.getDate()\n */\n get date(): number {\n return this.getDate();\n }\n\n /**\n * Shortcut to Date.setDate()\n */\n set date(value: number) {\n this.setDate(value);\n }\n\n /**\n * Return two digit date\n */\n get dateFormatted(): string {\n return this.date < 10 ? `0${this.date}` : `${this.date}`;\n }\n\n // https://github.com/you-dont-need/You-Dont-Need-Momentjs#week-of-year\n /**\n * Gets the week of the year\n */\n get week(): number {\n const startOfYear = new Date(this.year, 0, 1);\n startOfYear.setDate(\n startOfYear.getDate() + (1 - (startOfYear.getDay() % 7))\n );\n return Math.round((this.valueOf() - startOfYear.valueOf()) / 604800000) + 1;\n }\n\n /**\n * Shortcut to Date.getDay()\n */\n get weekDay(): number {\n return this.getDay();\n }\n\n /**\n * Shortcut to Date.getMonth()\n */\n get month(): number {\n return this.getMonth();\n }\n\n /**\n * Shortcut to Date.setMonth()\n */\n set month(value: number) {\n this.setMonth(value);\n }\n\n /**\n * Return two digit, human expected month. E.g. January = 1, December = 12\n */\n get monthFormatted(): string {\n return this.month + 1 < 10 ? `0${this.month}` : `${this.month}`;\n }\n\n /**\n * Shortcut to Date.getFullYear()\n */\n get year(): number {\n return this.getFullYear();\n }\n\n /**\n * Shortcut to Date.setFullYear()\n */\n set year(value: number) {\n this.setFullYear(value);\n }\n}\n","import Namespace from './namespace';\n\nexport class TdError extends Error {\n code: number;\n}\n\nexport class ErrorMessages {\n private base = 'TD:';\n\n //#region out to console\n\n /**\n * Throws an error indicating that a key in the options object is invalid.\n * @param optionName\n */\n unexpectedOption(optionName: string) {\n const error = new TdError(\n `${this.base} Unexpected option: ${optionName} does not match a known option.`\n );\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error indicating that one more keys in the options object is invalid.\n * @param optionName\n */\n unexpectedOptions(optionName: string[]) {\n const error = new TdError(`${this.base}: ${optionName.join(', ')}`);\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error when an option is provide an unsupported value.\n * For example a value of 'cheese' for toolbarPlacement which only supports\n * 'top', 'bottom', 'default'.\n * @param optionName\n * @param badValue\n * @param validOptions\n */\n unexpectedOptionValue(\n optionName: string,\n badValue: string,\n validOptions: string[]\n ) {\n const error = new TdError(\n `${\n this.base\n } Unexpected option value: ${optionName} does not accept a value of \"${badValue}\". Valid values are: ${validOptions.join(\n ', '\n )}`\n );\n error.code = 2;\n throw error;\n }\n\n /**\n * Throws an error when an option value is the wrong type.\n * For example a string value was provided to multipleDates which only\n * supports true or false.\n * @param optionName\n * @param badType\n * @param expectedType\n */\n typeMismatch(optionName: string, badType: string, expectedType: string) {\n const error = new TdError(\n `${this.base} Mismatch types: ${optionName} has a type of ${badType} instead of the required ${expectedType}`\n );\n error.code = 3;\n throw error;\n }\n\n /**\n * Throws an error when an option value is outside of the expected range.\n * For example restrictions.daysOfWeekDisabled excepts a value between 0 and 6.\n * @param optionName\n * @param lower\n * @param upper\n */\n numbersOutOfRage(optionName: string, lower: number, upper: number) {\n const error = new TdError(\n `${this.base} ${optionName} expected an array of number between ${lower} and ${upper}.`\n );\n error.code = 4;\n throw error;\n }\n\n /**\n * Throws an error when a value for a date options couldn't be parsed. Either\n * the option was an invalide string or an invalid Date object.\n * @param optionName\n * @param date\n * @param soft If true, logs a warning instead of an error.\n */\n failedToParseDate(optionName: string, date: any, soft = false) {\n const error = new TdError(\n `${this.base} Could not correctly parse \"${date}\" to a date for ${optionName}.`\n );\n error.code = 5;\n if (!soft) throw error;\n console.warn(error);\n }\n\n /**\n * Throws when an element to attach to was not provided in the constructor.\n */\n mustProvideElement() {\n const error = new TdError(`${this.base} No element was provided.`);\n error.code = 6;\n throw error;\n }\n\n /**\n * Throws if providing an array for the events to subscribe method doesn't have\n * the same number of callbacks. E.g., subscribe([1,2], [1])\n */\n subscribeMismatch() {\n const error = new TdError(\n `${this.base} The subscribed events does not match the number of callbacks`\n );\n error.code = 7;\n throw error;\n }\n\n /**\n * Throws if the configuration has conflicting rules e.g. minDate is after maxDate\n */\n conflictingConfiguration(message?: string) {\n const error = new TdError(\n `${this.base} A configuration value conflicts with another rule. ${message}`\n );\n error.code = 8;\n throw error;\n }\n\n /**\n * Logs a warning if a date option value is provided as a string, instead of\n * a date/datetime object.\n */\n dateString() {\n console.warn(\n `${this.base} Using a string for date options is not recommended unless you specify an ISO string.`\n );\n }\n\n //#endregion\n\n //#region used with notify.error\n\n /**\n * Used with an Error Event type if the user selects a date that\n * fails restriction validation.\n */\n failedToSetInvalidDate = 'Failed to set invalid date';\n\n /**\n * Used with an Error Event type when a user changes the value of the\n * input field directly, and does not provide a valid date.\n */\n failedToParseInput = 'Failed parse input field';\n\n //#endregion\n}\n","import { ErrorMessages } from './errors';\n// this is not the way I want this to stay but nested classes seemed to blown up once its compiled.\nconst NAME = 'tempus-dominus',\n version = '6.0.0-alpha1',\n dataKey = 'td';\n\n/**\n * Events\n */\nclass Events {\n key = `.${dataKey}`;\n\n /**\n * Change event. Fired when the user selects a date.\n * See also EventTypes.ChangeEvent\n */\n change = `change${this.key}`;\n\n /**\n * Emit when the view changes for example from month view to the year view.\n * See also EventTypes.ViewUpdateEvent\n */\n update = `update${this.key}`;\n\n /**\n * Emits when a selected date or value from the input field fails to meet the provided validation rules.\n * See also EventTypes.FailEvent\n */\n error = `error${this.key}`;\n\n /**\n * Show event\n * @event Events#show\n */\n show = `show${this.key}`;\n\n /**\n * Hide event\n * @event Events#hide\n */\n hide = `hide${this.key}`;\n\n // blur and focus are used in the jQuery provider but are otherwise unused.\n // keyup/down will be used later for keybinding options\n\n blur = `blur${this.key}`;\n focus = `focus${this.key}`;\n keyup = `keyup${this.key}`;\n keydown = `keydown${this.key}`;\n}\n\nclass Css {\n /**\n * The outer element for the widget.\n */\n widget = `${NAME}-widget`;\n\n /**\n * Hold the previous, next and switcher divs\n */\n calendarHeader = 'calendar-header';\n\n /**\n * The element for the action to change the calendar view. E.g. month -> year.\n */\n switch = 'picker-switch';\n\n /**\n * The elements for all of the toolbar options\n */\n toolbar = 'toolbar';\n\n /**\n * Disables the hover and rounding affect.\n */\n noHighlight = 'no-highlight';\n\n /**\n * Applied to the widget element when the side by side option is in use.\n */\n sideBySide = 'timepicker-sbs';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> July\n */\n previous = 'previous';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> September\n */\n next = 'next';\n\n /**\n * Applied to any action that would violate any restriction options. ALso applied\n * to an input field if the disabled function is called.\n */\n disabled = 'disabled';\n\n /**\n * Applied to any date that is less than requested view,\n * e.g. the last day of the previous month.\n */\n old = 'old';\n\n /**\n * Applied to any date that is greater than of requested view,\n * e.g. the last day of the previous month.\n */\n new = 'new';\n\n /**\n * Applied to any date that is currently selected.\n */\n active = 'active';\n\n //#region date element\n\n /**\n * The outer most element for the calendar view.\n */\n dateContainer = 'date-container';\n\n /**\n * The outer most element for the decades view.\n */\n decadesContainer = `${this.dateContainer}-decades`;\n\n /**\n * Applied to elements within the decades container, e.g. 2020, 2030\n */\n decade = 'decade';\n\n /**\n * The outer most element for the years view.\n */\n yearsContainer = `${this.dateContainer}-years`;\n\n /**\n * Applied to elements within the years container, e.g. 2021, 2021\n */\n year = 'year';\n\n /**\n * The outer most element for the month view.\n */\n monthsContainer = `${this.dateContainer}-months`;\n\n /**\n * Applied to elements within the month container, e.g. January, February\n */\n month = 'month';\n\n /**\n * The outer most element for the calendar view.\n */\n daysContainer = `${this.dateContainer}-days`;\n\n /**\n * Applied to elements within the day container, e.g. 1, 2..31\n */\n day = 'day';\n\n /**\n * If display.calendarWeeks is enabled, a column displaying the week of year\n * is shown. This class is applied to each cell in that column.\n */\n calendarWeeks = 'cw';\n\n /**\n * Applied to the first row of the calendar view, e.g. Sunday, Monday\n */\n dayOfTheWeek = 'dow';\n\n /**\n * Applied to the current date on the calendar view.\n */\n today = 'today';\n\n /**\n * Applied to the locale's weekend dates on the calendar view, e.g. Sunday, Saturday\n */\n weekend = 'weekend';\n\n //#endregion\n\n //#region time element\n\n /**\n * The outer most element for all time related elements.\n */\n timeContainer = 'time-container';\n\n /**\n * Applied the separator columns between time elements, e.g. hour *:* minute *:* second\n */\n separator = 'separator';\n\n /**\n * The outer most element for the clock view.\n */\n clockContainer = `${this.timeContainer}-clock`;\n\n /**\n * The outer most element for the hours selection view.\n */\n hourContainer = `${this.timeContainer}-hour`;\n\n /**\n * The outer most element for the minutes selection view.\n */\n minuteContainer = `${this.timeContainer}-minute`;\n\n /**\n * The outer most element for the seconds selection view.\n */\n secondContainer = `${this.timeContainer}-second`;\n\n /**\n * Applied to each element in the hours selection view.\n */\n hour = 'hour';\n\n /**\n * Applied to each element in the minutes selection view.\n */\n minute = 'minute';\n\n /**\n * Applied to each element in the seconds selection view.\n */\n second = 'second';\n\n /**\n * Applied AM/PM toggle button.\n */\n toggleMeridiem = 'toggleMeridiem';\n\n //#endregion\n\n //#region collapse\n\n /**\n * Applied the element of the current view mode, e.g. calendar or clock.\n */\n show = 'show';\n\n /**\n * Applied to the currently showing view mode during a transition\n * between calendar and clock views\n */\n collapsing = 'td-collapsing';\n\n /**\n * Applied to the currently hidden view mode.\n */\n collapse = 'td-collapse';\n\n //#endregion\n\n /**\n * Applied to the widget when the option display.inline is enabled.\n */\n inline = 'inline';\n}\n\nexport default class Namespace {\n static NAME = NAME;\n // noinspection JSUnusedGlobalSymbols\n static version = version;\n static dataKey = dataKey;\n\n static events = new Events();\n\n static css = new Css();\n\n static errorMessages = new ErrorMessages();\n}\n","import { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options from './options';\n\nconst DefaultOptions: Options = {\n restrictions: {\n minDate: undefined,\n maxDate: undefined,\n disabledDates: [],\n enabledDates: [],\n daysOfWeekDisabled: [],\n disabledTimeIntervals: [],\n disabledHours: [],\n enabledHours: [],\n },\n display: {\n icons: {\n type: 'icons',\n time: 'fas fa-clock',\n date: 'fas fa-calendar',\n up: 'fas fa-arrow-up',\n down: 'fas fa-arrow-down',\n previous: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n today: 'fas fa-calendar-check',\n clear: 'fas fa-trash',\n close: 'fas fa-times',\n },\n sideBySide: false,\n calendarWeeks: false,\n viewMode: 'calendar',\n toolbarPlacement: 'bottom',\n keepOpen: false,\n buttons: {\n today: false,\n clear: false,\n close: false,\n },\n components: {\n calendar: true,\n date: true,\n month: true,\n year: true,\n decades: true,\n clock: true,\n hours: true,\n minutes: true,\n seconds: false,\n useTwentyfourHour: false,\n },\n inline: false,\n },\n stepping: 1,\n useCurrent: true,\n defaultDate: undefined,\n localization: {\n today: 'Go to today',\n clear: 'Clear selection',\n close: 'Close the picker',\n selectMonth: 'Select Month',\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n selectYear: 'Select Year',\n previousYear: 'Previous Year',\n nextYear: 'Next Year',\n selectDecade: 'Select Decade',\n previousDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n previousCentury: 'Previous Century',\n nextCentury: 'Next Century',\n pickHour: 'Pick Hour',\n incrementHour: 'Increment Hour',\n decrementHour: 'Decrement Hour',\n pickMinute: 'Pick Minute',\n incrementMinute: 'Increment Minute',\n decrementMinute: 'Decrement Minute',\n pickSecond: 'Pick Second',\n incrementSecond: 'Increment Second',\n decrementSecond: 'Decrement Second',\n toggleMeridiem: 'Toggle Meridiem',\n selectTime: 'Select Time',\n selectDate: 'Select Date',\n dayViewHeaderFormat: 'long',\n locale: 'default',\n },\n keepInvalid: false,\n debug: false,\n allowInputToggle: false,\n viewDate: new DateTime(),\n multipleDates: false,\n multipleDatesSeparator: '; ',\n promptTimeOnDateChange: false,\n promptTimeOnDateChangeTransitionDelay: 200,\n hooks: {\n inputParse: undefined,\n inputFormat: undefined,\n },\n};\n\nconst DatePickerModes: {\n name: string;\n className: string;\n unit: Unit;\n step: number;\n}[] = [\n {\n name: 'calendar',\n className: Namespace.css.daysContainer,\n unit: Unit.month,\n step: 1,\n },\n {\n name: 'months',\n className: Namespace.css.monthsContainer,\n unit: Unit.year,\n step: 1,\n },\n {\n name: 'years',\n className: Namespace.css.yearsContainer,\n unit: Unit.year,\n step: 10,\n },\n {\n name: 'decades',\n className: Namespace.css.decadesContainer,\n unit: Unit.year,\n step: 100,\n },\n];\n\nexport { DefaultOptions, DatePickerModes, Namespace };\n","import Namespace from '../namespace';\n\n/**\n * Provides a collapse functionality to the view changes\n */\nexport default class Collapse {\n private timeOut;\n\n /**\n * Flips the show/hide state of `target`\n * @param target html element to affect.\n */\n toggle(target: HTMLElement, callback = undefined) {\n if (target.classList.contains(Namespace.css.show)) {\n this.hide(target, callback);\n } else {\n this.show(target, callback);\n }\n }\n\n /**\n * If `target` is not already showing, then show after the animation.\n * @param target\n */\n show(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse, Namespace.css.show);\n target.style.height = '';\n this.timeOut = null;\n if (callback) callback();\n };\n\n target.style.height = '0';\n target.classList.remove(Namespace.css.collapse);\n target.classList.add(Namespace.css.collapsing);\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n target.style.height = `${target.scrollHeight}px`;\n }\n\n /**\n * If `target` is not already hidden, then hide after the animation.\n * @param target HTML Element\n */\n hide(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n !target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse);\n this.timeOut = null;\n };\n\n target.style.height = `${target.getBoundingClientRect()['height']}px`;\n\n const reflow = (element) => element.offsetHeight;\n\n reflow(target);\n\n target.classList.remove(Namespace.css.collapse, Namespace.css.show);\n target.classList.add(Namespace.css.collapsing);\n target.style.height = '';\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n }\n\n /**\n * Gets the transition duration from the `element` by getting css properties\n * `transition-duration` and `transition-delay`\n * @param element HTML Element\n */\n private getTransitionDurationFromElement = (element: HTMLElement) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } =\n window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) +\n Number.parseFloat(transitionDelay)) *\n 1000\n );\n };\n}\n","import { DatePickerModes } from './conts.js';\r\nimport { DateTime, Unit } from './datetime';\r\nimport { TempusDominus } from './tempus-dominus';\r\nimport Collapse from './display/collapse';\r\nimport Namespace from './namespace';\r\n\r\n/**\r\n *\r\n */\r\nexport default class Actions {\r\n private _context: TempusDominus;\r\n private collapse: Collapse;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this.collapse = new Collapse();\r\n }\r\n\r\n /**\r\n * Performs the selected `action`. See ActionTypes\r\n * @param e This is normally a click event\r\n * @param action If not provided, then look for a [data-action]\r\n */\r\n do(e: any, action?: ActionTypes) {\r\n const currentTarget = e.currentTarget;\r\n if (currentTarget.classList.contains(Namespace.css.disabled)) return false;\r\n action = action || currentTarget.dataset.action;\r\n const lastPicked = (\r\n this._context.dates.lastPicked || this._context._viewDate\r\n ).clone;\r\n\r\n /**\r\n * Common function to manipulate {@link lastPicked} by `unit`\r\n * @param unit\r\n * @param value Value to change by\r\n */\r\n const manipulateAndSet = (unit: Unit, value = 1) => {\r\n const newDate = lastPicked.manipulate(value, unit);\r\n if (this._context._validation.isValid(newDate, unit)) {\r\n this._context.dates._setValue(\r\n newDate,\r\n this._context.dates.lastPickedIndex\r\n );\r\n }\r\n };\r\n\r\n switch (action) {\r\n case ActionTypes.next:\r\n case ActionTypes.previous:\r\n const { unit, step } = DatePickerModes[this._context._currentViewMode];\r\n if (action === ActionTypes.next)\r\n this._context._viewDate.manipulate(step, unit);\r\n else this._context._viewDate.manipulate(step * -1, unit);\r\n this._context._viewUpdate(unit);\r\n\r\n this._context._display._showMode();\r\n break;\r\n case ActionTypes.pickerSwitch:\r\n this._context._display._showMode(1);\r\n this._context._viewUpdate(\r\n DatePickerModes[this._context._currentViewMode].unit\r\n );\r\n this._context._display._updateCalendarHeader();\r\n break;\r\n case ActionTypes.selectMonth:\r\n case ActionTypes.selectYear:\r\n case ActionTypes.selectDecade:\r\n const value = +currentTarget.getAttribute('data-value');\r\n switch (action) {\r\n case ActionTypes.selectMonth:\r\n this._context._viewDate.month = value;\r\n this._context._viewUpdate(Unit.month);\r\n break;\r\n case ActionTypes.selectYear:\r\n this._context._viewDate.year = value;\r\n this._context._viewUpdate(Unit.year);\r\n break;\r\n case ActionTypes.selectDecade:\r\n this._context._viewDate.year = value;\r\n this._context._viewUpdate(Unit.year);\r\n break;\r\n }\r\n\r\n if (\r\n this._context._currentViewMode === this._context._minViewModeNumber\r\n ) {\r\n this._context.dates._setValue(\r\n this._context._viewDate,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (!this._context._options.display.inline) {\r\n this._context._display.hide();\r\n }\r\n } else {\r\n this._context._display._showMode(-1);\r\n }\r\n break;\r\n case ActionTypes.selectDay:\r\n const day = this._context._viewDate.clone;\r\n if (currentTarget.classList.contains(Namespace.css.old)) {\r\n day.manipulate(-1, Unit.month);\r\n }\r\n if (currentTarget.classList.contains(Namespace.css.new)) {\r\n day.manipulate(1, Unit.month);\r\n }\r\n\r\n day.date = +currentTarget.innerText;\r\n let index = 0;\r\n if (this._context._options.multipleDates) {\r\n index = this._context.dates.pickedIndex(day, Unit.date);\r\n if (index !== -1) {\r\n this._context.dates._setValue(null, index); //deselect multi-date\r\n } else {\r\n this._context.dates._setValue(\r\n day,\r\n this._context.dates.lastPickedIndex + 1\r\n );\r\n }\r\n } else {\r\n this._context.dates._setValue(\r\n day,\r\n this._context.dates.lastPickedIndex\r\n );\r\n }\r\n\r\n if (\r\n !this._context._display._hasTime &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline &&\r\n !this._context._options.multipleDates\r\n ) {\r\n this._context._display.hide();\r\n }\r\n break;\r\n case ActionTypes.selectHour:\r\n let hour = +currentTarget.getAttribute('data-value');\r\n if (lastPicked.hours >= 12 && !this._context._options.display.components.useTwentyfourHour) hour += 12;\r\n lastPicked.hours = hour;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.components.minutes &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.selectMinute:\r\n lastPicked.minutes = +currentTarget.innerText;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.components.seconds &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.selectSecond:\r\n lastPicked.seconds = +currentTarget.innerText;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.incrementHours:\r\n manipulateAndSet(Unit.hours);\r\n break;\r\n case ActionTypes.incrementMinutes:\r\n manipulateAndSet(Unit.minutes, this._context._options.stepping);\r\n break;\r\n case ActionTypes.incrementSeconds:\r\n manipulateAndSet(Unit.seconds);\r\n break;\r\n case ActionTypes.decrementHours:\r\n manipulateAndSet(Unit.hours, -1);\r\n break;\r\n case ActionTypes.decrementMinutes:\r\n manipulateAndSet(Unit.minutes, this._context._options.stepping * -1);\r\n break;\r\n case ActionTypes.decrementSeconds:\r\n manipulateAndSet(Unit.seconds, -1);\r\n break;\r\n case ActionTypes.toggleMeridiem:\r\n manipulateAndSet(\r\n Unit.hours,\r\n this._context.dates.lastPicked.hours >= 12 ? -12 : 12\r\n );\r\n break;\r\n case ActionTypes.togglePicker:\r\n this._context._display.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer}, .${Namespace.css.timeContainer}`\r\n )\r\n .forEach((htmlElement: HTMLElement) =>\r\n this.collapse.toggle(htmlElement)\r\n );\r\n if (\r\n currentTarget.getAttribute('title') ===\r\n this._context._options.localization.selectDate\r\n ) {\r\n currentTarget.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectTime\r\n );\r\n currentTarget.innerHTML = this._context._display._iconTag(\r\n this._context._options.display.icons.time\r\n ).outerHTML;\r\n\r\n this._context._display._updateCalendarHeader();\r\n } else {\r\n currentTarget.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDate\r\n );\r\n currentTarget.innerHTML = this._context._display._iconTag(\r\n this._context._options.display.icons.date\r\n ).outerHTML;\r\n this.do(e, ActionTypes.showClock);\r\n this._context._display._update('clock');\r\n }\r\n break;\r\n case ActionTypes.showClock:\r\n case ActionTypes.showHours:\r\n case ActionTypes.showMinutes:\r\n case ActionTypes.showSeconds:\r\n this._context._display.widget\r\n .querySelectorAll(`.${Namespace.css.timeContainer} > div`)\r\n .forEach(\r\n (htmlElement: HTMLElement) => (htmlElement.style.display = 'none')\r\n );\r\n\r\n let classToUse = '';\r\n switch (action) {\r\n case ActionTypes.showClock:\r\n classToUse = Namespace.css.clockContainer;\r\n this._context._display._update('clock');\r\n break;\r\n case ActionTypes.showHours:\r\n classToUse = Namespace.css.hourContainer;\r\n this._context._display._update(Unit.hours);\r\n break;\r\n case ActionTypes.showMinutes:\r\n classToUse = Namespace.css.minuteContainer;\r\n this._context._display._update(Unit.minutes);\r\n break;\r\n case ActionTypes.showSeconds:\r\n classToUse = Namespace.css.secondContainer;\r\n this._context._display._update(Unit.seconds);\r\n break;\r\n }\r\n\r\n ((\r\n this._context._display.widget.getElementsByClassName(classToUse)[0]\r\n )).style.display = 'grid';\r\n break;\r\n case ActionTypes.clear:\r\n this._context.dates._setValue(null);\r\n this._context._display._updateCalendarHeader();\r\n break;\r\n case ActionTypes.close:\r\n this._context._display.hide();\r\n break;\r\n case ActionTypes.today:\r\n const today = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n this._context._viewDate = today;\r\n if (this._context._validation.isValid(today, Unit.date))\r\n this._context.dates._setValue(\r\n today,\r\n this._context.dates.lastPickedIndex\r\n );\r\n break;\r\n }\r\n }\r\n}\r\n\r\nexport enum ActionTypes {\r\n next = 'next',\r\n previous = 'previous',\r\n pickerSwitch = 'pickerSwitch',\r\n selectMonth = 'selectMonth',\r\n selectYear = 'selectYear',\r\n selectDecade = 'selectDecade',\r\n selectDay = 'selectDay',\r\n selectHour = 'selectHour',\r\n selectMinute = 'selectMinute',\r\n selectSecond = 'selectSecond',\r\n incrementHours = 'incrementHours',\r\n incrementMinutes = 'incrementMinutes',\r\n incrementSeconds = 'incrementSeconds',\r\n decrementHours = 'decrementHours',\r\n decrementMinutes = 'decrementMinutes',\r\n decrementSeconds = 'decrementSeconds',\r\n toggleMeridiem = 'toggleMeridiem',\r\n togglePicker = 'togglePicker',\r\n showClock = 'showClock',\r\n showHours = 'showHours',\r\n showMinutes = 'showMinutes',\r\n showSeconds = 'showSeconds',\r\n clear = 'clear',\r\n close = 'close',\r\n today = 'today',\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { DateTime, Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `date`\n */\nexport default class DateDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.daysContainer);\n\n container.append(...this._daysOfTheWeek());\n\n if (this._context._options.display.calendarWeeks) {\n const div = document.createElement('div');\n div.classList.add(Namespace.css.calendarWeeks, Namespace.css.noHighlight);\n container.appendChild(div);\n }\n\n for (let i = 0; i < 42; i++) {\n if (i !== 0 && i % 7 === 0) {\n if (this._context._options.display.calendarWeeks) {\n const div = document.createElement('div');\n div.classList.add(\n Namespace.css.calendarWeeks,\n Namespace.css.noHighlight\n );\n container.appendChild(div);\n }\n }\n\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectDay);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.daysContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.daysContainer,\n this._context._viewDate.format({\n month: this._context._options.localization.dayViewHeaderFormat,\n })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.month),\n Unit.month\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.month),\n Unit.month\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone\n .startOf(Unit.month)\n .startOf('weekDay')\n .manipulate(12, Unit.hours);\n\n container\n .querySelectorAll(\n `[data-action=\"${ActionTypes.selectDay}\"], .${Namespace.css.calendarWeeks}`\n )\n .forEach((containerClone: HTMLElement, index) => {\n if (\n this._context._options.display.calendarWeeks &&\n containerClone.classList.contains(Namespace.css.calendarWeeks)\n ) {\n if (containerClone.innerText === '#') return;\n containerClone.innerText = `${innerDate.week}`;\n return;\n }\n\n let classes = [];\n classes.push(Namespace.css.day);\n\n if (innerDate.isBefore(this._context._viewDate, Unit.month)) {\n classes.push(Namespace.css.old);\n }\n if (innerDate.isAfter(this._context._viewDate, Unit.month)) {\n classes.push(Namespace.css.new);\n }\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.date)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.date)) {\n classes.push(Namespace.css.disabled);\n }\n if (innerDate.isSame(new DateTime(), Unit.date)) {\n classes.push(Namespace.css.today);\n }\n if (innerDate.weekDay === 0 || innerDate.weekDay === 6) {\n classes.push(Namespace.css.weekend);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute(\n 'data-value',\n `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`\n );\n containerClone.innerText = `${innerDate.date}`;\n innerDate.manipulate(1, Unit.date);\n });\n }\n\n /***\n * Generates an html row that contains the days of the week.\n * @private\n */\n private _daysOfTheWeek(): HTMLElement[] {\n let innerDate = this._context._viewDate.clone\n .startOf('weekDay')\n .startOf(Unit.date);\n const row = [];\n document.createElement('div');\n\n if (this._context._options.display.calendarWeeks) {\n const htmlDivElement = document.createElement('div');\n htmlDivElement.classList.add(\n Namespace.css.calendarWeeks,\n Namespace.css.noHighlight\n );\n htmlDivElement.innerText = '#';\n row.push(htmlDivElement);\n }\n\n for (let i = 0; i < 7; i++) {\n const htmlDivElement = document.createElement('div');\n htmlDivElement.classList.add(\n Namespace.css.dayOfTheWeek,\n Namespace.css.noHighlight\n );\n htmlDivElement.innerText = innerDate.format({ weekday: 'short' });\n innerDate.manipulate(1, Unit.date);\n row.push(htmlDivElement);\n }\n\n return row;\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `month`\n */\nexport default class MonthDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.monthsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMonth);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.monthsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.monthsContainer,\n this._context._viewDate.format({ year: 'numeric' })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.year),\n Unit.year\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.year),\n Unit.year\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone.startOf(Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMonth}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.month);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.month)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.month)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${index}`);\n containerClone.innerText = `${innerDate.format({ month: 'short' })}`;\n innerDate.manipulate(1, Unit.month);\n });\n }\n}\n","import { DateTime, DateTimeFormatOptions } from './datetime';\nimport Namespace from './namespace';\nimport { DefaultOptions } from './conts';\n\nexport default interface Options {\n restrictions: {\n minDate: DateTime;\n maxDate: DateTime;\n enabledDates: DateTime[];\n disabledDates: DateTime[];\n enabledHours: number[];\n disabledHours: number[];\n disabledTimeIntervals: { from: DateTime; to: DateTime }[];\n daysOfWeekDisabled: number[];\n };\n display: {\n toolbarPlacement: 'top' | 'bottom';\n components: {\n calendar: boolean;\n date: boolean;\n month: boolean;\n year: boolean;\n decades: boolean;\n clock: boolean;\n hours: boolean;\n minutes: boolean;\n seconds: boolean;\n useTwentyfourHour: boolean;\n };\n buttons: { today: boolean; close: boolean; clear: boolean };\n calendarWeeks: boolean;\n icons: {\n date: string;\n next: string;\n previous: string;\n today: string;\n clear: string;\n time: string;\n up: string;\n type: 'icons' | 'sprites';\n down: string;\n close: string;\n };\n viewMode: 'clock' | 'calendar' | 'months' | 'years' | 'decades';\n sideBySide: boolean;\n inline: boolean;\n keepOpen: boolean;\n };\n stepping: number;\n useCurrent: boolean;\n defaultDate: DateTime;\n localization: {\n nextMonth: string;\n pickHour: string;\n incrementSecond: string;\n nextDecade: string;\n selectDecade: string;\n dayViewHeaderFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n decrementHour: string;\n selectDate: string;\n incrementHour: string;\n previousCentury: string;\n decrementSecond: string;\n today: string;\n previousMonth: string;\n selectYear: string;\n pickSecond: string;\n nextCentury: string;\n close: string;\n incrementMinute: string;\n selectTime: string;\n clear: string;\n toggleMeridiem: string;\n selectMonth: string;\n decrementMinute: string;\n pickMinute: string;\n nextYear: string;\n previousYear: string;\n previousDecade: string;\n locale: string;\n };\n keepInvalid: boolean;\n debug: boolean;\n allowInputToggle: boolean;\n viewDate: DateTime;\n multipleDates: boolean;\n multipleDatesSeparator: string;\n promptTimeOnDateChange: boolean;\n promptTimeOnDateChangeTransitionDelay: number;\n hooks: {\n inputParse: (value: any) => DateTime;\n inputFormat: (date: DateTime) => string;\n };\n}\n\nexport class OptionConverter {\n static _mergeOptions(providedOptions: Options, mergeTo: Options): Options {\n const newOptions = {} as Options;\n let path = '';\n const ignoreProperties = ['inputParse', 'inputFormat'];\n\n const processKey = (key, value, providedType, defaultType) => {\n switch (key) {\n case 'defaultDate': {\n const dateTime = this._dateConversion(value, 'defaultDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'defaultDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'viewDate': {\n const dateTime = this._dateConversion(value, 'viewDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'viewDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'minDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.minDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.minDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'maxDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.maxDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.maxDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'disabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.disabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.disabledHours',\n 0,\n 23\n );\n return value;\n case 'enabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.enabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.enabledHours',\n 0,\n 23\n );\n return value;\n case 'daysOfWeekDisabled':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.daysOfWeekDisabled',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 6).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.daysOfWeekDisabled',\n 0,\n 6\n );\n return value;\n case 'enabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.enabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.disabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledTimeIntervals':\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n key,\n providedType,\n 'array of { from: DateTime|Date, to: DateTime|Date }'\n );\n }\n const valueObject = value as { from: any; to: any }[];\n for (let i = 0; i < valueObject.length; i++) {\n Object.keys(valueObject[i]).forEach((vk) => {\n const subOptionName = `${key}[${i}].${vk}`;\n let d = valueObject[i][vk];\n const dateTime = this._dateConversion(d, subOptionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n subOptionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n valueObject[i][vk] = dateTime;\n });\n }\n return valueObject;\n case 'toolbarPlacement':\n case 'type':\n case 'viewMode':\n case 'dayViewHeaderFormat':\n const optionValues = {\n toolbarPlacement: ['top', 'bottom', 'default'],\n type: ['icons', 'sprites'],\n viewMode: ['clock', 'calendar', 'months', 'years', 'decades'],\n dayViewHeaderFormat: [\n 'numeric',\n '2-digit',\n 'long',\n 'short',\n 'narrow',\n ],\n };\n const keyOptions = optionValues[key];\n if (!keyOptions.includes(value))\n Namespace.errorMessages.unexpectedOptionValue(\n path.substring(1),\n value,\n keyOptions\n );\n\n return value;\n case 'inputParse':\n case 'inputFormat':\n return value;\n default:\n switch (defaultType) {\n case 'boolean':\n return value === 'true' || value === true;\n case 'number':\n return +value;\n case 'string':\n return value.toString();\n case 'object':\n return {};\n case 'function':\n return value;\n default:\n Namespace.errorMessages.typeMismatch(\n path.substring(1),\n providedType,\n defaultType\n );\n }\n }\n };\n\n /**\n * The spread operator caused sub keys to be missing after merging.\n * This is to fix that issue by using spread on the child objects first.\n * Also handles complex options like disabledDates\n * @param provided An option from new providedOptions\n * @param mergeOption Default option to compare types against\n * @param copyTo Destination object. This was add to prevent reference copies\n */\n const spread = (provided, mergeOption, copyTo) => {\n const unsupportedOptions = Object.keys(provided).filter(\n (x) => !Object.keys(mergeOption).includes(x)\n );\n if (unsupportedOptions.length > 0) {\n const flattenedOptions = OptionConverter._flattenDefaultOptions;\n\n const errors = unsupportedOptions.map((x) => {\n let error = `\"${path.substring(1)}.${x}\" in not a known option.`;\n let didYouMean = flattenedOptions.find((y) => y.includes(x));\n if (didYouMean) error += `Did you mean \"${didYouMean}\"?`;\n return error;\n });\n Namespace.errorMessages.unexpectedOptions(errors);\n }\n Object.keys(mergeOption).forEach((key) => {\n const defaultOptionValue = mergeOption[key];\n let providedType = typeof provided[key];\n let defaultType = typeof defaultOptionValue;\n let value = provided[key];\n if (!provided.hasOwnProperty(key)) {\n if (\n defaultType === 'undefined' ||\n (value?.length === 0 && Array.isArray(defaultOptionValue))\n ) {\n copyTo[key] = defaultOptionValue;\n return;\n }\n provided[key] = defaultOptionValue;\n value = provided[key];\n }\n path += `.${key}`;\n copyTo[key] = processKey(key, value, providedType, defaultType);\n\n if (typeof defaultOptionValue !== 'object' || ignoreProperties.includes(key)) {\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n return;\n }\n if (!Array.isArray(provided[key])) {\n spread(provided[key], defaultOptionValue, copyTo[key]);\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n }\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n });\n };\n spread(providedOptions, mergeTo, newOptions);\n\n return newOptions;\n }\n\n static _dataToOptions(element, options: Options): Options {\n const eData = element.dataset;\n if (\n !eData ||\n Object.keys(eData).length === 0 ||\n eData.constructor !== DOMStringMap\n )\n return options;\n let dataOptions = {} as Options;\n\n // because dataset returns camelCase including the 'td' key the option\n // key won't align\n const objectToNormalized = (object) => {\n const lowered = {};\n Object.keys(object).forEach((x) => {\n lowered[x.toLowerCase()] = x;\n });\n\n return lowered;\n };\n\n const rabbitHole = (\n split: string[],\n index: number,\n optionSubgroup: {},\n value: any\n ) => {\n // first round = display { ... }\n const normalizedOptions = objectToNormalized(optionSubgroup);\n\n const keyOption = normalizedOptions[split[index].toLowerCase()];\n const internalObject = {};\n\n if (keyOption === undefined) return internalObject;\n\n // if this is another object, continue down the rabbit hole\n if (optionSubgroup[keyOption].constructor === Object) {\n index++;\n internalObject[keyOption] = rabbitHole(\n split,\n index,\n optionSubgroup[keyOption],\n value\n );\n } else {\n internalObject[keyOption] = value;\n }\n return internalObject;\n };\n const optionsLower = objectToNormalized(options);\n\n Object.keys(eData)\n .filter((x) => x.startsWith(Namespace.dataKey))\n .map((x) => x.substring(2))\n .forEach((key) => {\n let keyOption = optionsLower[key.toLowerCase()];\n\n // dataset merges dashes to camelCase... yay\n // i.e. key = display_components_seconds\n if (key.includes('_')) {\n // [display, components, seconds]\n const split = key.split('_');\n // display\n keyOption = optionsLower[split[0].toLowerCase()];\n if (\n keyOption !== undefined &&\n options[keyOption].constructor === Object\n ) {\n dataOptions[keyOption] = rabbitHole(\n split,\n 1,\n options[keyOption],\n eData[`td${key}`]\n );\n }\n }\n // or key = multipleDate\n else if (keyOption !== undefined) {\n dataOptions[keyOption] = eData[`td${key}`];\n }\n });\n\n return this._mergeOptions(dataOptions, options);\n }\n\n /**\n * Attempts to prove `d` is a DateTime or Date or can be converted into one.\n * @param d If a string will attempt creating a date from it.\n * @private\n */\n static _dateTypeCheck(d: any): DateTime | null {\n if (d.constructor.name === DateTime.name) return d;\n if (d.constructor.name === Date.name) {\n return DateTime.convert(d);\n }\n if (typeof d === typeof '') {\n const dateTime = new DateTime(d);\n if (JSON.stringify(dateTime) === 'null') {\n return null;\n }\n return dateTime;\n }\n return null;\n }\n\n /**\n * Type checks that `value` is an array of Date or DateTime\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckDateArray(optionName: string, value, providedType: string) {\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of DateTime or Date'\n );\n }\n for (let i = 0; i < value.length; i++) {\n let d = value[i];\n const dateTime = this._dateConversion(d, optionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n value[i] = dateTime;\n }\n }\n\n /**\n * Type checks that `value` is an array of numbers\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckNumberArray(\n optionName: string,\n value,\n providedType: string\n ) {\n if (!Array.isArray(value) || value.find((x) => typeof x !== typeof 0)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of numbers'\n );\n }\n return;\n }\n\n /**\n * Attempts to convert `d` to a DateTime object\n * @param d value to convert\n * @param optionName Provides text to error messages e.g. disabledDates\n */\n static _dateConversion(d: any, optionName: string) {\n if (typeof d === typeof '' && optionName !== 'input') {\n Namespace.errorMessages.dateString();\n }\n\n const converted = this._dateTypeCheck(d);\n\n if (!converted) {\n Namespace.errorMessages.failedToParseDate(\n optionName,\n d,\n optionName === 'input'\n );\n }\n return converted;\n }\n\n private static _flatback: string[];\n\n private static get _flattenDefaultOptions(): string[] {\n if (this._flatback) return this._flatback;\n const deepKeys = (t, pre = []) =>\n Array.isArray(t)\n ? []\n : Object(t) === t\n ? Object.entries(t).flatMap(([k, v]) => deepKeys(v, [...pre, k]))\n : pre.join('.');\n\n this._flatback = deepKeys(DefaultOptions);\n\n return this._flatback;\n }\n\n /**\n * Some options conflict like min/max date. Verify that these kinds of options\n * are set correctly.\n * @param config\n */\n static _validateConflcits(config: Options) {\n if (config.restrictions.minDate && config.restrictions.maxDate) {\n if (config.restrictions.minDate.isAfter(config.restrictions.maxDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'minDate is after maxDate'\n );\n }\n\n if (config.restrictions.maxDate.isBefore(config.restrictions.minDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'maxDate is before minDate'\n );\n }\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport { ChangeEvent, FailEvent } from './event-types';\nimport { OptionConverter } from './options';\n\nexport default class Dates {\n private _dates: DateTime[] = [];\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Returns the array of selected dates\n */\n get picked(): DateTime[] {\n return this._dates;\n }\n\n /**\n * Returns the last picked value.\n */\n get lastPicked(): DateTime {\n return this._dates[this.lastPickedIndex];\n }\n\n /**\n * Returns the length of picked dates -1 or 0 if none are selected.\n */\n get lastPickedIndex(): number {\n if (this._dates.length === 0) return 0;\n return this._dates.length - 1;\n }\n\n /**\n * Adds a new DateTime to selected dates array\n * @param date\n */\n add(date: DateTime): void {\n this._dates.push(date);\n }\n\n /**\n * Tries to convert the provided value to a DateTime object.\n * If value is null|undefined then clear the value of the provided index (or 0).\n * @param value Value to convert or null|undefined\n * @param index When using multidates this is the index in the array\n * @param from Used in the warning message, useful for debugging.\n */\n set(value: any, index?: number, from: string = 'date.set') {\n if (!value) this._setValue(value, index);\n const converted = OptionConverter._dateConversion(value, from);\n if (converted) this._setValue(converted, index);\n }\n\n /**\n * Returns true if the `targetDate` is part of the selected dates array.\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n isPicked(targetDate: DateTime, unit?: Unit): boolean {\n if (!unit) return this._dates.find((x) => x === targetDate) !== undefined;\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return (\n this._dates\n .map((x) => x.format(format))\n .find((x) => x === innerDateFormatted) !== undefined\n );\n }\n\n /**\n * Returns the index at which `targetDate` is in the array.\n * This is used for updating or removing a date when multi-date is used\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n pickedIndex(targetDate: DateTime, unit?: Unit): number {\n if (!unit) return this._dates.indexOf(targetDate);\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return this._dates.map((x) => x.format(format)).indexOf(innerDateFormatted);\n }\n\n /**\n * Clears all selected dates.\n */\n clear() {\n this._context._unset = true;\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate: this.lastPicked,\n isClear: true,\n isValid: true,\n } as ChangeEvent);\n this._dates = [];\n }\n\n /**\n * Find the \"book end\" years given a `year` and a `factor`\n * @param factor e.g. 100 for decades\n * @param year e.g. 2021\n */\n static getStartEndYear(\n factor: number,\n year: number\n ): [number, number, number] {\n const step = factor / 10,\n startYear = Math.floor(year / factor) * factor,\n endYear = startYear + step * 9,\n focusValue = Math.floor(year / step) * step;\n return [startYear, endYear, focusValue];\n }\n\n /**\n * Do not use direectly. Attempts to either clear or set the `target` date at `index`.\n * If the `target` is null then the date will be cleared.\n * If multi-date is being used then it will be removed from the array.\n * If `target` is valid and multi-date is used then if `index` is\n * provided the date at that index will be replaced, otherwise it is appended.\n * @param target\n * @param index\n */\n _setValue(target?: DateTime, index?: number): void {\n const noIndex = typeof index === 'undefined',\n isClear = !target && noIndex;\n let oldDate = this._context._unset ? null : this._dates[index];\n if (!oldDate && !this._context._unset && noIndex && isClear) {\n oldDate = this.lastPicked;\n }\n\n if (target && oldDate?.isSame(target)) return;\n\n const updateInput = () => {\n if (!this._context._input) return;\n\n let newValue = this._context._options.hooks.inputFormat(target);\n if (this._context._options.multipleDates) {\n newValue = this._dates\n .map((d) => this._context._options.hooks.inputFormat(d))\n .join(this._context._options.multipleDatesSeparator);\n }\n if (this._context._input.value != newValue)\n this._context._input.value = newValue;\n };\n\n // case of calling setValue(null)\n if (!target) {\n if (\n !this._context._options.multipleDates ||\n this._dates.length === 1 ||\n isClear\n ) {\n this._context._unset = true;\n this._dates = [];\n } else {\n this._dates.splice(index, 1);\n }\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n\n updateInput();\n this._context._display._update('all');\n return;\n }\n\n index = index || 0;\n target = target.clone;\n\n // minute stepping is being used, force the minute to the closest value\n if (this._context._options.stepping !== 1) {\n target.minutes =\n Math.round(target.minutes / this._context._options.stepping) *\n this._context._options.stepping;\n target.seconds = 0;\n }\n\n if (this._context._validation.isValid(target)) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._unset = false;\n this._context._display._update('all');\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n return;\n }\n\n if (this._context._options.keepInvalid) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: false,\n } as ChangeEvent);\n }\n this._context._triggerEvent({\n type: Namespace.events.error,\n reason: Namespace.errorMessages.failedToSetInvalidDate,\n date: target,\n oldDate,\n } as FailEvent);\n }\n\n /**\n * Returns a format object based on the granularity of `unit`\n * @param unit\n */\n static getFormatByUnit(unit: Unit): object {\n switch (unit) {\n case 'date':\n return { dateStyle: 'short' };\n case 'month':\n return {\n month: 'numeric',\n year: 'numeric',\n };\n case 'year':\n return { year: 'numeric' };\n }\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { DateTime, Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\nimport Dates from '../../dates';\n\n/**\n * Creates and updates the grid for `year`\n */\nexport default class YearDisplay {\n private _context: TempusDominus;\n private _startYear: DateTime;\n private _endYear: DateTime;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.yearsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectYear);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update() {\n const [start, end] = Dates.getStartEndYear(\n 10,\n this._context._viewDate.year\n );\n this._startYear = this._context._viewDate.clone.manipulate(-1, Unit.year);\n this._endYear = this._context._viewDate.clone.manipulate(10, Unit.year);\n\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.yearsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.yearsContainer,\n `${this._startYear.year}-${this._endYear.year}`\n );\n\n this._context._validation.isValid(this._startYear, Unit.year)\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n this._context._validation.isValid(this._endYear, Unit.year)\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone\n .startOf(Unit.year)\n .manipulate(-1, Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectYear}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.year);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.year)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.year)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.year}`);\n containerClone.innerText = `${innerDate.year}`;\n\n innerDate.manipulate(1, Unit.year);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport Dates from '../../dates';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `seconds`\r\n */\r\nexport default class DecadeDisplay {\r\n private _context: TempusDominus;\r\n private _startDecade: DateTime;\r\n private _endDecade: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker() {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.decadesContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDecade);\r\n container.appendChild(div);\r\n }\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 100,\r\n this._context._viewDate.year\r\n );\r\n this._startDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._startDecade.year = start;\r\n this._endDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._endDecade.year = end;\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.decadesContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.decadesContainer,\r\n `${this._startDecade.year}-${this._endDecade.year}`\r\n );\r\n\r\n this._context._validation.isValid(this._startDecade, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endDecade, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n const pickedYears = this._context.dates.picked.map((x) => x.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectDecade}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (index === 0) {\r\n containerClone.classList.add(Namespace.css.old);\r\n if (this._startDecade.year - 10 < 0) {\r\n containerClone.textContent = ' ';\r\n previous.classList.add(Namespace.css.disabled);\r\n containerClone.classList.add(Namespace.css.disabled);\r\n containerClone.setAttribute('data-value', ``);\r\n return;\r\n } else {\r\n containerClone.innerText = `${this._startDecade.year - 10}`;\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n return;\r\n }\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.decade);\r\n const startDecadeYear = this._startDecade.year;\r\n const endDecadeYear = this._startDecade.year + 9;\r\n\r\n if (\r\n !this._context._unset &&\r\n pickedYears.filter((x) => x >= startDecadeYear && x <= endDecadeYear)\r\n .length > 0\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n containerClone.innerText = `${this._startDecade.year}`;\r\n\r\n this._startDecade.manipulate(10, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates the clock display\n */\nexport default class TimeDisplay {\n private _context: TempusDominus;\n private _gridColumns = '';\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the clock display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.clockContainer);\n\n container.append(...this._grid());\n\n return container;\n }\n\n /**\n * Populates the various elements with in the clock display\n * like the current hour and if the manipulation icons are enabled.\n * @private\n */\n _update(): void {\n const timesDiv = (\n this._context._display.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0]\n );\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n timesDiv\n .querySelectorAll('.disabled')\n .forEach((element) => element.classList.remove(Namespace.css.disabled));\n\n if (this._context._options.display.components.hours) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.hours}]`\n ).innerText = this._context._options.display.components.useTwentyfourHour\n ? lastPicked.hoursFormatted\n : lastPicked.twelveHoursFormatted;\n }\n\n if (this._context._options.display.components.minutes) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.minutes}]`\n ).innerText = lastPicked.minutesFormatted;\n }\n\n if (this._context._options.display.components.seconds) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.seconds}]`\n ).innerText = lastPicked.secondsFormatted;\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n const toggle = timesDiv.querySelector(\n `[data-action=${ActionTypes.toggleMeridiem}]`\n );\n\n toggle.innerText = lastPicked.meridiem();\n\n if (\n !this._context._validation.isValid(\n lastPicked.clone.manipulate(\n lastPicked.hours >= 12 ? -12 : 12,\n Unit.hours\n )\n )\n ) {\n toggle.classList.add(Namespace.css.disabled);\n } else {\n toggle.classList.remove(Namespace.css.disabled);\n }\n }\n\n timesDiv.style.gridTemplateAreas = `\"${this._gridColumns}\"`;\n }\n\n /**\n * Creates the table for the clock display depending on what options are selected.\n * @private\n */\n private _grid(): HTMLElement[] {\n this._gridColumns = '';\n const top = [],\n middle = [],\n bottom = [],\n separator = document.createElement('div'),\n upIcon = this._context._display._iconTag(\n this._context._options.display.icons.up\n ),\n downIcon = this._context._display._iconTag(\n this._context._options.display.icons.down\n );\n\n separator.classList.add(Namespace.css.separator, Namespace.css.noHighlight);\n const separatorColon = separator.cloneNode(true);\n separatorColon.innerHTML = ':';\n\n const getSeparator = (colon = false): HTMLElement => {\n return colon\n ? separatorColon.cloneNode(true)\n : separator.cloneNode(true);\n };\n\n if (this._context._options.display.components.hours) {\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.incrementHours);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickHour\n );\n divElement.setAttribute('data-action', ActionTypes.showHours);\n divElement.setAttribute('data-time-component', Unit.hours);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.decrementHours);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n this._gridColumns += 'a';\n }\n\n if (this._context._options.display.components.minutes) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.hours) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.incrementMinutes);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickMinute\n );\n divElement.setAttribute('data-action', ActionTypes.showMinutes);\n divElement.setAttribute('data-time-component', Unit.minutes);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.decrementMinutes);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (this._context._options.display.components.seconds) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.minutes) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.incrementSeconds);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickSecond\n );\n divElement.setAttribute('data-action', ActionTypes.showSeconds);\n divElement.setAttribute('data-time-component', Unit.seconds);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.decrementSeconds);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n this._gridColumns += ' a';\n let divElement = getSeparator();\n top.push(divElement);\n\n let button = document.createElement('button');\n button.setAttribute(\n 'title',\n this._context._options.localization.toggleMeridiem\n );\n button.setAttribute('data-action', ActionTypes.toggleMeridiem);\n button.setAttribute('tabindex', '-1');\n button.classList.add(Namespace.css.toggleMeridiem);\n\n divElement = document.createElement('div');\n divElement.classList.add(Namespace.css.noHighlight);\n divElement.appendChild(button);\n middle.push(divElement);\n\n divElement = getSeparator();\n bottom.push(divElement);\n }\n\n this._gridColumns = this._gridColumns.trim();\n\n return [...top, ...middle, ...bottom];\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `hours`\n */\nexport default class HourDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.hourContainer);\n\n for (\n let i = 0;\n i <\n (this._context._options.display.components.useTwentyfourHour ? 24 : 12);\n i++\n ) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectHour);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.hourContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.date);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectHour}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.hour);\n\n if (!this._context._validation.isValid(innerDate, Unit.hours)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.hours}`);\n containerClone.innerText = this._context._options.display.components\n .useTwentyfourHour\n ? innerDate.hoursFormatted\n : innerDate.twelveHoursFormatted;\n innerDate.manipulate(1, Unit.hours);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `minutes`\n */\nexport default class MinuteDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.minuteContainer);\n\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n for (let i = 0; i < 60 / step; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMinute);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.minuteContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.hours);\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMinute}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.minute);\n\n if (!this._context._validation.isValid(innerDate, Unit.minutes)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.minutes}`);\n containerClone.innerText = innerDate.minutesFormatted;\n innerDate.manipulate(step, Unit.minutes);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class secondDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.secondContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectSecond);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.secondContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.minutes);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectSecond}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.second);\n\n if (!this._context._validation.isValid(innerDate, Unit.seconds)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.seconds}`);\n containerClone.innerText = innerDate.secondsFormatted;\n innerDate.manipulate(5, Unit.seconds);\n });\n }\n}\n","import DateDisplay from './calendar/date-display';\r\nimport MonthDisplay from './calendar/month-display';\r\nimport YearDisplay from './calendar/year-display';\r\nimport DecadeDisplay from './calendar/decade-display';\r\nimport TimeDisplay from './time/time-display';\r\nimport HourDisplay from './time/hour-display';\r\nimport MinuteDisplay from './time/minute-display';\r\nimport SecondDisplay from './time/second-display';\r\nimport { DateTime, Unit } from '../datetime';\r\nimport { DatePickerModes } from '../conts';\r\nimport { TempusDominus } from '../tempus-dominus';\r\nimport { ActionTypes } from '../actions';\r\nimport { createPopper } from '@popperjs/core';\r\nimport Namespace from '../namespace';\r\nimport { HideEvent } from '../event-types';\r\n\r\n/**\r\n * Main class for all things display related.\r\n */\r\nexport default class Display {\r\n private _context: TempusDominus;\r\n private _dateDisplay: DateDisplay;\r\n private _monthDisplay: MonthDisplay;\r\n private _yearDisplay: YearDisplay;\r\n private _decadeDisplay: DecadeDisplay;\r\n private _timeDisplay: TimeDisplay;\r\n private _widget: HTMLElement;\r\n private _hourDisplay: HourDisplay;\r\n private _minuteDisplay: MinuteDisplay;\r\n private _secondDisplay: SecondDisplay;\r\n private _popperInstance: any;\r\n private _isVisible = false;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this._dateDisplay = new DateDisplay(context);\r\n this._monthDisplay = new MonthDisplay(context);\r\n this._yearDisplay = new YearDisplay(context);\r\n this._decadeDisplay = new DecadeDisplay(context);\r\n this._timeDisplay = new TimeDisplay(context);\r\n this._hourDisplay = new HourDisplay(context);\r\n this._minuteDisplay = new MinuteDisplay(context);\r\n this._secondDisplay = new SecondDisplay(context);\r\n\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Returns the widget body or undefined\r\n * @private\r\n */\r\n get widget(): HTMLElement | undefined {\r\n return this._widget;\r\n }\r\n\r\n /**\r\n * Returns this visible state of the picker (shown)\r\n */\r\n get isVisible() {\r\n return this._isVisible;\r\n }\r\n\r\n /**\r\n * Updates the table for a particular unit. Used when an option as changed or\r\n * whenever the class list might need to be refreshed.\r\n * @param unit\r\n * @private\r\n */\r\n _update(unit: Unit | 'clock' | 'calendar' | 'all'): void {\r\n if (!this.widget) return;\r\n //todo do I want some kind of error catching or other guards here?\r\n switch (unit) {\r\n case Unit.seconds:\r\n this._secondDisplay._update();\r\n break;\r\n case Unit.minutes:\r\n this._minuteDisplay._update();\r\n break;\r\n case Unit.hours:\r\n this._hourDisplay._update();\r\n break;\r\n case Unit.date:\r\n this._dateDisplay._update();\r\n break;\r\n case Unit.month:\r\n this._monthDisplay._update();\r\n break;\r\n case Unit.year:\r\n this._yearDisplay._update();\r\n break;\r\n case 'clock':\r\n this._timeDisplay._update();\r\n this._update(Unit.hours);\r\n this._update(Unit.minutes);\r\n this._update(Unit.seconds);\r\n break;\r\n case 'calendar':\r\n this._update(Unit.date);\r\n this._update(Unit.year);\r\n this._update(Unit.month);\r\n this._decadeDisplay._update();\r\n this._updateCalendarHeader();\r\n break;\r\n case 'all':\r\n if (this._hasTime) {\r\n this._update('clock');\r\n }\r\n if (this._hasDate) {\r\n this._update('calendar');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Shows the picker and creates a Popper instance if needed.\r\n * Add document click event to hide when clicking outside the picker.\r\n * @fires Events#show\r\n */\r\n show(): void {\r\n if (this.widget == undefined) {\r\n if (\r\n this._context._options.useCurrent &&\r\n !this._context._options.defaultDate &&\r\n !this._context._input?.value\r\n ) {\r\n //todo in the td4 branch a pr changed this to allow granularity\r\n const date = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n if (!this._context._options.keepInvalid) {\r\n let tries = 0;\r\n let direction = 1;\r\n if (this._context._options.restrictions.maxDate?.isBefore(date)) {\r\n direction = -1;\r\n }\r\n while (!this._context._validation.isValid(date)) {\r\n date.manipulate(direction, Unit.date);\r\n if (tries > 31) break;\r\n tries++;\r\n }\r\n }\r\n this._context.dates._setValue(date);\r\n }\r\n\r\n if (this._context._options.defaultDate) {\r\n this._context.dates._setValue(this._context._options.defaultDate);\r\n }\r\n\r\n this._buildWidget();\r\n if (this._hasDate) {\r\n this._showMode();\r\n }\r\n\r\n if (!this._context._options.display.inline) {\r\n document.body.appendChild(this.widget);\r\n\r\n this._popperInstance = createPopper(\r\n this._context._element,\r\n this.widget,\r\n {\r\n modifiers: [\r\n /* {\r\n name: 'offset',\r\n options: {\r\n offset: [2, 8],\r\n },\r\n },*/\r\n { name: 'eventListeners', enabled: true },\r\n ],\r\n placement: 'bottom-start',\r\n }\r\n );\r\n } else {\r\n this._context._element.appendChild(this.widget);\r\n }\r\n\r\n if (this._context._options.display.viewMode == 'clock') {\r\n this._context._action.do(\r\n {\r\n currentTarget: this.widget.querySelector(\r\n `.${Namespace.css.timeContainer}`\r\n ),\r\n },\r\n ActionTypes.showClock\r\n );\r\n }\r\n\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.addEventListener('click', this._actionsClickEvent)\r\n );\r\n\r\n // show the clock when using sideBySide\r\n if (this._context._options.display.sideBySide) {\r\n this._timeDisplay._update();\r\n (\r\n this.widget.getElementsByClassName(\r\n Namespace.css.clockContainer\r\n )[0] as HTMLElement\r\n ).style.display = 'grid';\r\n }\r\n }\r\n\r\n this.widget.classList.add(Namespace.css.show);\r\n if (!this._context._options.display.inline) {\r\n this._popperInstance.update();\r\n document.addEventListener('click', this._documentClickEvent);\r\n }\r\n this._context._triggerEvent({ type: Namespace.events.show });\r\n this._isVisible = true;\r\n }\r\n\r\n /**\r\n * Changes the calendar view mode. E.g. month <-> year\r\n * @param direction -/+ number to move currentViewMode\r\n * @private\r\n */\r\n _showMode(direction?: number): void {\r\n if (!this.widget) {\r\n return;\r\n }\r\n if (direction) {\r\n const max = Math.max(\r\n this._context._minViewModeNumber,\r\n Math.min(3, this._context._currentViewMode + direction)\r\n );\r\n if (this._context._currentViewMode == max) return;\r\n this._context._currentViewMode = max;\r\n }\r\n\r\n this.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div:not(.${Namespace.css.clockContainer})`\r\n )\r\n .forEach((e: HTMLElement) => (e.style.display = 'none'));\r\n\r\n const datePickerMode = DatePickerModes[this._context._currentViewMode];\r\n let picker: HTMLElement = this.widget.querySelector(\r\n `.${datePickerMode.className}`\r\n );\r\n\r\n switch (datePickerMode.className) {\r\n case Namespace.css.decadesContainer:\r\n this._decadeDisplay._update();\r\n break;\r\n case Namespace.css.yearsContainer:\r\n this._yearDisplay._update();\r\n break;\r\n case Namespace.css.monthsContainer:\r\n this._monthDisplay._update();\r\n break;\r\n case Namespace.css.daysContainer:\r\n this._dateDisplay._update();\r\n break;\r\n }\r\n\r\n picker.style.display = 'grid';\r\n this._updateCalendarHeader();\r\n }\r\n\r\n _updateCalendarHeader() {\r\n const showing = [\r\n ...this.widget.querySelector(\r\n `.${Namespace.css.dateContainer} div[style*=\"display: grid\"]`\r\n ).classList,\r\n ].find((x) => x.startsWith(Namespace.css.dateContainer));\r\n\r\n const [previous, switcher, next] = this._context._display.widget\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switch (showing) {\r\n case Namespace.css.decadesContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousCentury\r\n );\r\n switcher.setAttribute('title', '');\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextCentury\r\n );\r\n break;\r\n case Namespace.css.yearsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousDecade\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDecade\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextDecade\r\n );\r\n break;\r\n case Namespace.css.monthsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousYear\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectYear\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextYear\r\n );\r\n break;\r\n case Namespace.css.daysContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousMonth\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectMonth\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextMonth\r\n );\r\n switcher.innerText = this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n });\r\n break;\r\n }\r\n switcher.innerText = switcher.getAttribute(showing);\r\n }\r\n\r\n /**\r\n * Hides the picker if needed.\r\n * Remove document click event to hide when clicking outside the picker.\r\n * @fires Events#hide\r\n */\r\n hide(): void {\r\n if (!this.widget || !this._isVisible) return;\r\n\r\n this.widget.classList.remove(Namespace.css.show);\r\n\r\n if (this._isVisible) {\r\n this._context._triggerEvent({\r\n type: Namespace.events.hide,\r\n date: this._context._unset\r\n ? null\r\n : this._context.dates.lastPicked\r\n ? this._context.dates.lastPicked.clone\r\n : void 0,\r\n } as HideEvent);\r\n this._isVisible = false;\r\n }\r\n\r\n document.removeEventListener('click', this._documentClickEvent);\r\n }\r\n\r\n /**\r\n * Toggles the picker's open state. Fires a show/hide event depending.\r\n */\r\n toggle() {\r\n return this._isVisible ? this.hide() : this.show();\r\n }\r\n\r\n /**\r\n * Removes document and data-action click listener and reset the widget\r\n * @private\r\n */\r\n _dispose() {\r\n document.removeEventListener('click', this._documentClickEvent);\r\n if (!this.widget) return;\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.removeEventListener('click', this._actionsClickEvent)\r\n );\r\n this.widget.parentNode.removeChild(this.widget);\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Builds the widgets html template.\r\n * @private\r\n */\r\n private _buildWidget(): HTMLElement {\r\n const template = document.createElement('div');\r\n template.classList.add(Namespace.css.widget);\r\n\r\n const dateView = document.createElement('div');\r\n dateView.classList.add(Namespace.css.dateContainer);\r\n dateView.append(\r\n this._headTemplate,\r\n this._decadeDisplay._picker,\r\n this._yearDisplay._picker,\r\n this._monthDisplay._picker,\r\n this._dateDisplay._picker\r\n );\r\n\r\n const timeView = document.createElement('div');\r\n timeView.classList.add(Namespace.css.timeContainer);\r\n timeView.appendChild(this._timeDisplay._picker);\r\n timeView.appendChild(this._hourDisplay._picker);\r\n timeView.appendChild(this._minuteDisplay._picker);\r\n timeView.appendChild(this._secondDisplay._picker);\r\n\r\n const toolbar = document.createElement('div');\r\n toolbar.classList.add(Namespace.css.toolbar);\r\n toolbar.append(...this._toolbar);\r\n\r\n if (this._context._options.display.inline) {\r\n template.classList.add(Namespace.css.inline);\r\n }\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n template.classList.add('calendarWeeks');\r\n }\r\n\r\n if (\r\n this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n template.classList.add(Namespace.css.sideBySide);\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n const row = document.createElement('div');\r\n row.classList.add('td-row');\r\n dateView.classList.add('td-half');\r\n timeView.classList.add('td-half');\r\n\r\n row.appendChild(dateView);\r\n row.appendChild(timeView);\r\n template.appendChild(row);\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n this._widget = template;\r\n return;\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n if (this._hasDate) {\r\n if (this._hasTime) {\r\n dateView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode !== 'clock')\r\n dateView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(dateView);\r\n }\r\n\r\n if (this._hasTime) {\r\n if (this._hasDate) {\r\n timeView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode === 'clock')\r\n timeView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(timeView);\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n const arrow = document.createElement('div');\r\n arrow.classList.add('arrow');\r\n arrow.setAttribute('data-popper-arrow', '');\r\n template.appendChild(arrow);\r\n\r\n this._widget = template;\r\n }\r\n\r\n /**\r\n * Returns true if the hours, minutes, or seconds component is turned on\r\n */\r\n get _hasTime(): boolean {\r\n return (\r\n this._context._options.display.components.clock &&\r\n (this._context._options.display.components.hours ||\r\n this._context._options.display.components.minutes ||\r\n this._context._options.display.components.seconds)\r\n );\r\n }\r\n\r\n /**\r\n * Returns true if the year, month, or date component is turned on\r\n */\r\n get _hasDate(): boolean {\r\n return (\r\n this._context._options.display.components.calendar &&\r\n (this._context._options.display.components.year ||\r\n this._context._options.display.components.month ||\r\n this._context._options.display.components.date)\r\n );\r\n }\r\n\r\n /**\r\n * Get the toolbar html based on options like buttons.today\r\n * @private\r\n */\r\n get _toolbar(): HTMLElement[] {\r\n const toolbar = [];\r\n\r\n if (this._context._options.display.buttons.today) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.today);\r\n div.setAttribute('title', this._context._options.localization.today);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.today)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (\r\n !this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n let title, icon;\r\n if (this._context._options.display.viewMode === 'clock') {\r\n title = this._context._options.localization.selectDate;\r\n icon = this._context._options.display.icons.date;\r\n } else {\r\n title = this._context._options.localization.selectTime;\r\n icon = this._context._options.display.icons.time;\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.togglePicker);\r\n div.setAttribute('title', title);\r\n\r\n div.appendChild(this._iconTag(icon));\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.clear) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.clear);\r\n div.setAttribute('title', this._context._options.localization.clear);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.clear)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.close) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.close);\r\n div.setAttribute('title', this._context._options.localization.close);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.close)\r\n );\r\n toolbar.push(div);\r\n }\r\n\r\n return toolbar;\r\n }\r\n\r\n /***\r\n * Builds the base header template with next and previous icons\r\n * @private\r\n */\r\n get _headTemplate(): HTMLElement {\r\n const calendarHeader = document.createElement('div');\r\n calendarHeader.classList.add(Namespace.css.calendarHeader);\r\n\r\n const previous = document.createElement('div');\r\n previous.classList.add(Namespace.css.previous);\r\n previous.setAttribute('data-action', ActionTypes.previous);\r\n previous.appendChild(\r\n this._iconTag(this._context._options.display.icons.previous)\r\n );\r\n\r\n const switcher = document.createElement('div');\r\n switcher.classList.add(Namespace.css.switch);\r\n switcher.setAttribute('data-action', ActionTypes.pickerSwitch);\r\n\r\n const next = document.createElement('div');\r\n next.classList.add(Namespace.css.next);\r\n next.setAttribute('data-action', ActionTypes.next);\r\n next.appendChild(this._iconTag(this._context._options.display.icons.next));\r\n\r\n calendarHeader.append(previous, switcher, next);\r\n return calendarHeader;\r\n }\r\n\r\n /**\r\n * Builds an icon tag as either an ``\r\n * or with icons.type is `sprites` then an svg tag instead\r\n * @param iconClass\r\n * @private\r\n */\r\n _iconTag(iconClass: string): HTMLElement {\r\n if (this._context._options.display.icons.type === 'sprites') {\r\n const svg = document.createElement('svg');\r\n svg.innerHTML = ``;\r\n return svg;\r\n }\r\n const icon = document.createElement('i');\r\n DOMTokenList.prototype.add.apply(icon.classList, iconClass.split(' '));\r\n return icon;\r\n }\r\n\r\n /**\r\n * A document click event to hide the widget if click is outside\r\n * @private\r\n * @param e MouseEvent\r\n */\r\n private _documentClickEvent = (e: MouseEvent) => {\r\n if (this._context._options.display.keepOpen ||\r\n this._context._options.debug ||\r\n (window as any).debug) return;\r\n\r\n if (\r\n this._isVisible &&\r\n !e.composedPath().includes(this.widget) && // click inside the widget\r\n !e.composedPath()?.includes(this._context._element) // click on the element\r\n ) {\r\n this.hide();\r\n }\r\n };\r\n\r\n /**\r\n * Click event for any action like selecting a date\r\n * @param e MouseEvent\r\n * @private\r\n */\r\n private _actionsClickEvent = (e: MouseEvent) => {\r\n this._context._action.do(e);\r\n };\r\n\r\n /**\r\n * Causes the widget to get rebuilt on next show. If the picker is already open\r\n * then hide and reshow it.\r\n * @private\r\n */\r\n _rebuild() {\r\n const wasVisible = this._isVisible;\r\n if (wasVisible) this.hide();\r\n this._dispose();\r\n if (wasVisible) {\r\n this.show();\r\n }\r\n }\r\n}\r\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Dates from './dates';\n\n/**\n * Main class for date validation rules based on the options provided.\n */\nexport default class Validation {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Checks to see if the target date is valid based on the rules provided in the options.\n * Granularity can be provide to chek portions of the date instead of the whole.\n * @param targetDate\n * @param granularity\n */\n isValid(targetDate: DateTime, granularity?: Unit): boolean {\n if (\n this._context._options.restrictions.disabledDates.length > 0 &&\n this._isInDisabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledDates.length > 0 &&\n !this._isInEnabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.daysOfWeekDisabled?.length > 0 &&\n this._context._options.restrictions.daysOfWeekDisabled.indexOf(\n targetDate.weekDay\n ) !== -1\n ) {\n return false;\n }\n\n if (\n this._context._options.restrictions.minDate &&\n targetDate.isBefore(\n this._context._options.restrictions.minDate,\n granularity\n )\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.maxDate &&\n targetDate.isAfter(\n this._context._options.restrictions.maxDate,\n granularity\n )\n ) {\n return false;\n }\n\n if (\n granularity === Unit.hours ||\n granularity === Unit.minutes ||\n granularity === Unit.seconds\n ) {\n if (\n this._context._options.restrictions.disabledHours.length > 0 &&\n this._isInDisabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledHours.length > 0 &&\n !this._isInEnabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.disabledTimeIntervals.length > 0\n ) {\n for (\n let i = 0;\n i < this._context._options.restrictions.disabledTimeIntervals.length;\n i++\n ) {\n if (\n targetDate.isBetween(\n this._context._options.restrictions.disabledTimeIntervals[i].from,\n this._context._options.restrictions.disabledTimeIntervals[i].to\n )\n )\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Checks to see if the disabledDates option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInDisabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledDates ||\n this._context._options.restrictions.disabledDates.length === 0\n )\n return false;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.disabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the enabledDates option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInEnabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledDates ||\n this._context._options.restrictions.enabledDates.length === 0\n )\n return true;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.enabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the disabledHours option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInDisabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledHours ||\n this._context._options.restrictions.disabledHours.length === 0\n )\n return false;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.disabledHours.find(\n (x) => x === formattedDate\n );\n }\n\n /**\n * Checks to see if the enabledHours option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInEnabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledHours ||\n this._context._options.restrictions.enabledHours.length === 0\n )\n return true;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.enabledHours.find(\n (x) => x === formattedDate\n );\n }\n}\n","import Display from './display/index';\nimport Validation from './validation';\nimport Dates from './dates';\nimport Actions, { ActionTypes } from './actions';\nimport { DatePickerModes, DefaultOptions } from './conts';\nimport { DateTime, DateTimeFormatOptions, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options, { OptionConverter } from './options';\nimport {\n BaseEvent,\n ChangeEvent,\n ViewUpdateEvent,\n FailEvent,\n} from './event-types';\n\n/**\n * A robust and powerful date/time picker component.\n */\nclass TempusDominus {\n dates: Dates;\n\n _options: Options;\n _currentViewMode = 0;\n _subscribers: { [key: string]: ((event: any) => {})[] } = {};\n _element: HTMLElement;\n _input: HTMLInputElement;\n _unset: boolean;\n _minViewModeNumber = 0;\n _display: Display;\n _validation: Validation;\n _action: Actions;\n private _isDisabled = false;\n private _notifyChangeEventContext = 0;\n private _toggle: HTMLElement;\n private _currentPromptTimeTimeout: any;\n\n constructor(element: HTMLElement, options: Options = {} as Options) {\n if (!element) {\n Namespace.errorMessages.mustProvideElement;\n }\n this._element = element;\n this._options = this._initializeOptions(options, DefaultOptions, true);\n this._viewDate.setLocale(this._options.localization.locale);\n this._unset = true;\n\n this._display = new Display(this);\n this._validation = new Validation(this);\n this.dates = new Dates(this);\n this._action = new Actions(this);\n\n this._initializeInput();\n this._initializeToggle();\n\n if (this._options.display.inline) this._display.show();\n }\n\n _viewDate = new DateTime();\n\n get viewDate() {\n return this._viewDate;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Update the picker options. If `reset` is provide `options` will be merged with DefaultOptions instead.\n * @param options\n * @param reset\n * @public\n */\n updateOptions(options, reset = false): void {\n if (reset) this._options = this._initializeOptions(options, DefaultOptions);\n else this._options = this._initializeOptions(options, this._options);\n this._display._rebuild();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Toggles the picker open or closed. If the picker is disabled, nothing will happen.\n * @public\n */\n toggle(): void {\n if (this._isDisabled) return;\n this._display.toggle();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Shows the picker unless the picker is disabled.\n * @public\n */\n show(): void {\n if (this._isDisabled) return;\n this._display.show();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker unless the picker is disabled.\n * @public\n */\n hide(): void {\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Disables the picker and the target input field.\n * @public\n */\n disable(): void {\n this._isDisabled = true;\n // todo this might be undesired. If a dev disables the input field to\n // only allow using the picker, this will break that.\n this._input?.setAttribute('disabled', 'disabled');\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Enables the picker and the target input field.\n * @public\n */\n enable(): void {\n this._isDisabled = false;\n this._input?.removeAttribute('disabled');\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Clears all the selected dates\n * @public\n */\n clear(): void {\n this.dates.clear();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Allows for a direct subscription to picker events, without having to use addEventListener on the element.\n * @param eventTypes See Namespace.Events\n * @param callbacks Function to call when event is triggered\n * @public\n */\n subscribe(\n eventTypes: string | string[],\n callbacks: (event: any) => void | ((event: any) => void)[]\n ): { unsubscribe: void }[] {\n if (typeof eventTypes === 'string') {\n eventTypes = [eventTypes];\n }\n let callBackArray = [];\n if (!Array.isArray(callbacks)) {\n callBackArray = [callbacks];\n } else {\n callBackArray = callbacks;\n }\n\n if (eventTypes.length !== callBackArray.length) {\n Namespace.errorMessages.subscribeMismatch;\n }\n\n const returnArray = [];\n\n for (let i = 0; i < eventTypes.length; i++) {\n const eventType = eventTypes[i];\n if (!Array.isArray(this._subscribers[eventType])) {\n this._subscribers[eventType] = [];\n }\n\n this._subscribers[eventType].push(callBackArray[i]);\n\n returnArray.push({\n unsubscribe: this._unsubscribe.bind(\n this,\n eventType,\n this._subscribers[eventType].length - 1\n ),\n });\n\n if (eventTypes.length === 1) {\n return returnArray[0];\n }\n }\n\n return returnArray;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker and removes event listeners\n */\n dispose() {\n this._display.hide();\n // this will clear the document click event listener\n this._display._dispose();\n this._input?.removeEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input?.removeEventListener('click', this._toggleClickEvent);\n }\n this._toggle.removeEventListener('click', this._toggleClickEvent);\n this._subscribers = {};\n }\n\n /**\n * Triggers an event like ChangeEvent when the picker has updated the value\n * of a selected date.\n * @param event Accepts a BaseEvent object.\n * @private\n */\n _triggerEvent(event: BaseEvent) {\n // checking hasOwnProperty because the BasicEvent also falls through here otherwise\n if ((event as ChangeEvent) && event.hasOwnProperty('date')) {\n const { date, oldDate, isClear } = event as ChangeEvent;\n // this was to prevent a max call stack error\n // https://github.com/tempusdominus/core/commit/15a280507f5277b31b0b3319ab1edc7c19a000fb\n // todo see if this is still needed or if there's a cleaner way\n this._notifyChangeEventContext++;\n if (\n (date && oldDate && date.isSame(oldDate)) ||\n (!isClear && !date && !oldDate) ||\n this._notifyChangeEventContext > 1\n ) {\n this._notifyChangeEventContext = 0;\n return;\n }\n this._handleAfterChangeEvent(event as ChangeEvent);\n }\n\n this._element.dispatchEvent(\n new CustomEvent(event.type, { detail: event as any })\n );\n\n if ((window as any).jQuery) {\n const $ = (window as any).jQuery;\n $(this._element).trigger(event);\n }\n\n const publish = () => {\n // return if event is not subscribed\n if (!Array.isArray(this._subscribers[event.type])) {\n return;\n }\n\n // Trigger callback for each subscriber\n this._subscribers[event.type].forEach((callback) => {\n callback(event);\n });\n };\n\n publish();\n\n this._notifyChangeEventContext = 0;\n }\n\n /**\n * Fires a ViewUpdate event when, for example, the month view is changed.\n * @param {Unit} unit\n * @private\n */\n _viewUpdate(unit: Unit) {\n this._triggerEvent({\n type: Namespace.events.update,\n change: unit,\n viewDate: this._viewDate.clone,\n } as ViewUpdateEvent);\n }\n\n private _unsubscribe(eventName, index) {\n this._subscribers[eventName].splice(index, 1);\n }\n\n /**\n * Merges two Option objects together and validates options type\n * @param config new Options\n * @param mergeTo Options to merge into\n * @param includeDataset When true, the elements data-td attributes will be included in the\n * @private\n */\n private _initializeOptions(\n config: Options,\n mergeTo: Options,\n includeDataset = false\n ): Options {\n config = OptionConverter._mergeOptions(config, mergeTo);\n if (includeDataset)\n config = OptionConverter._dataToOptions(this._element, config);\n\n OptionConverter._validateConflcits(config);\n\n config.viewDate = config.viewDate.setLocale(config.localization.locale);\n\n if (!this._viewDate.isSame(config.viewDate)) {\n this._viewDate = config.viewDate;\n }\n\n /**\n * Sets the minimum view allowed by the picker. For example the case of only\n * allowing year and month to be selected but not date.\n */\n if (config.display.components.year) {\n this._minViewModeNumber = 2;\n }\n if (config.display.components.month) {\n this._minViewModeNumber = 1;\n }\n if (config.display.components.date) {\n this._minViewModeNumber = 0;\n }\n\n this._currentViewMode = Math.max(\n this._minViewModeNumber,\n this._currentViewMode\n );\n\n // Update view mode if needed\n if (\n DatePickerModes[this._currentViewMode].name !== config.display.viewMode\n ) {\n this._currentViewMode = Math.max(\n DatePickerModes.findIndex((x) => x.name === config.display.viewMode),\n this._minViewModeNumber\n );\n }\n\n // defaults the input format based on the components enabled\n if (config.hooks.inputFormat === undefined) {\n const components = config.display.components;\n config.hooks.inputFormat = (date: DateTime) => {\n return date.format({\n year: components.calendar && components.year ? 'numeric' : undefined,\n month:\n components.calendar && components.month ? '2-digit' : undefined,\n day: components.calendar && components.date ? '2-digit' : undefined,\n hour:\n components.clock && components.hours\n ? components.useTwentyfourHour\n ? '2-digit'\n : 'numeric'\n : undefined,\n minute:\n components.clock && components.minutes ? '2-digit' : undefined,\n second:\n components.clock && components.seconds ? '2-digit' : undefined,\n hour12: !components.useTwentyfourHour,\n });\n };\n }\n\n if (this._display?.isVisible) {\n this._display._update('all');\n }\n\n return config;\n }\n\n /**\n * Checks if an input field is being used, attempts to locate one and sets an\n * event listener if found.\n * @private\n */\n private _initializeInput() {\n if (this._element.tagName == 'INPUT') {\n this._input = this._element as HTMLInputElement;\n } else {\n let query = this._element.dataset.tdTargetInput;\n if (query == undefined || query == 'nearest') {\n this._input = this._element.querySelector('input');\n } else {\n this._input = this._element.querySelector(query);\n }\n }\n\n if (!this._input) return;\n\n this._input.addEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input.addEventListener('click', this._toggleClickEvent);\n }\n\n if (this._input.value) {\n this._inputChangeEvent();\n }\n }\n\n /**\n * Attempts to locate a toggle for the picker and sets an event listener\n * @private\n */\n private _initializeToggle() {\n if (this._options.display.inline) return;\n let query = this._element.dataset.tdTargetToggle;\n if (query == 'nearest') {\n query = '[data-td-toggle=\"datetimepicker\"]';\n }\n this._toggle =\n query == undefined ? this._element : this._element.querySelector(query);\n this._toggle.addEventListener('click', this._toggleClickEvent);\n }\n\n /**\n * If the option is enabled this will render the clock view after a date pick.\n * @param e change event\n * @private\n */\n private _handleAfterChangeEvent(e: ChangeEvent) {\n if (\n // options is disabled\n !this._options.promptTimeOnDateChange ||\n this._options.display.inline ||\n this._options.display.sideBySide ||\n // time is disabled\n !this._display._hasTime ||\n // clock component is already showing\n this._display.widget\n ?.getElementsByClassName(Namespace.css.show)[0]\n .classList.contains(Namespace.css.timeContainer)\n )\n return;\n\n // First time ever. If useCurrent option is set to true (default), do nothing\n // because the first date is selected automatically.\n // or date didn't change (time did) or date changed because time did.\n if (\n (!e.oldDate && this._options.useCurrent) ||\n (e.oldDate && e.date?.isSame(e.oldDate))\n ) {\n return;\n }\n\n clearTimeout(this._currentPromptTimeTimeout);\n this._currentPromptTimeTimeout = setTimeout(() => {\n if (this._display.widget) {\n this._action.do(\n {\n currentTarget: this._display.widget.querySelector(\n `.${Namespace.css.switch} div`\n ),\n },\n ActionTypes.togglePicker\n );\n }\n }, this._options.promptTimeOnDateChangeTransitionDelay);\n }\n\n /**\n * Event for when the input field changes. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _inputChangeEvent = () => {\n const setViewDate = () => {\n if (this.dates.lastPicked) this._viewDate = this.dates.lastPicked;\n };\n\n const value = this._input.value;\n if (this._options.multipleDates) {\n try {\n const valueSplit = value.split(this._options.multipleDatesSeparator);\n for (let i = 0; i < valueSplit.length; i++) {\n if (this._options.hooks.inputParse) {\n this.dates.set(\n this._options.hooks.inputParse(valueSplit[i]),\n i,\n 'input'\n );\n } else {\n this.dates.set(valueSplit[i], i, 'input');\n }\n }\n setViewDate();\n } catch {\n console.warn(\n 'TD: Something went wrong trying to set the multidate values from the input field.'\n );\n }\n } else {\n if (this._options.hooks.inputParse) {\n this.dates.set(this._options.hooks.inputParse(value), 0, 'input');\n } else {\n this.dates.set(value, 0, 'input');\n }\n setViewDate();\n }\n };\n\n /**\n * Event for when the toggle is clicked. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _toggleClickEvent = () => {\n this.toggle();\n };\n}\n\nexport {\n TempusDominus,\n Namespace,\n DefaultOptions,\n DateTime,\n Options,\n Unit,\n DateTimeFormatOptions,\n};\n"],"names":["Unit","SecondDisplay","createPopper"],"mappings":"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"} \ No newline at end of file diff --git a/docs/6/change-log.html b/docs/6/change-log.html index ce5b14599..4e6282805 100644 --- a/docs/6/change-log.html +++ b/docs/6/change-log.html @@ -224,6 +224,21 @@

Change Log

Version 6

+
+

Version 6-alpha_

+

New

+
    +
  • Cleaned up css a bit. Got rid of the popper arrow and aligned the picker to the start of the element.
  • +
  • BREAKING display.inputFormat now takes a function, not an Intl format. By default a function will be executed that uses Intl to format the selected date(s) based on the selected components.
  • +
+

Bug fixes

+
    +
  • Merged a fix for parsing issue from comparing constructor names. Thanks @faatihi #2408
  • +
  • Fixed doc issue
  • +
  • Fixed input value for real this time. #2387
  • +
  • Fixed keepOpen
  • +
+

Version 6-alpha1.0.13

New

diff --git a/docs/6/css/tempus-dominus.css b/docs/6/css/tempus-dominus.css index 804574d84..637480dc0 100644 --- a/docs/6/css/tempus-dominus.css +++ b/docs/6/css/tempus-dominus.css @@ -132,7 +132,7 @@ todo look at how bootstrap loops through their vars to make a --root section display: grid; grid-template-areas: "a a a a a a a"; grid-auto-rows: 40px; - grid-auto-columns: calc(100% / 7); + grid-auto-columns: 14.2857142857%; } .tempus-dominus-widget .date-container-days .dow { color: rgba(0, 0, 0, 0.5); @@ -157,16 +157,16 @@ todo look at how bootstrap loops through their vars to make a --root section .tempus-dominus-widget .date-container-decades, .tempus-dominus-widget .date-container-years, .tempus-dominus-widget .date-container-months { display: grid; grid-template-areas: "a a a"; - grid-auto-rows: calc(calc(19rem - 2 * 4px) / 7); + grid-auto-rows: calc((19rem - 8px) / 7); } .tempus-dominus-widget .time-container-hour, .tempus-dominus-widget .time-container-minute, .tempus-dominus-widget .time-container-second { display: grid; grid-template-areas: "a a a a"; - grid-auto-rows: calc(calc(19rem - 2 * 4px) / 7); + grid-auto-rows: calc((19rem - 8px) / 7); } .tempus-dominus-widget .time-container-clock { display: grid; - grid-auto-rows: calc(calc(19rem - 2 * 4px) / 7); + grid-auto-rows: calc((19rem - 8px) / 7); } .tempus-dominus-widget .time-container-clock .no-highlight { width: 90%; diff --git a/docs/6/css/tempus-dominus.css.map b/docs/6/css/tempus-dominus.css.map index 077b32a16..e01211a8a 100644 --- a/docs/6/css/tempus-dominus.css.map +++ b/docs/6/css/tempus-dominus.css.map @@ -1 +1 @@ -{"version":3,"sources":["tempus-dominus.scss"],"names":[],"mappings":"AAAA;;EAEE;AACF;EACE,6BAA6B;EAC7B,qBAAqB;EACrB,sBAAsB;EACtB,qBAAqB;EACrB,uBAAuB;EACvB,2BAA2B;EAC3B,iCAAiC;EACjC,8BAA8B;EAC9B,oBAAoB;AACtB;;AAEA;EACE,gBAAgB;EAChB,YAAY;EACZ,YAAY;EACZ,kBAAkB;EAClB,aAAa;EACb,uBAAuB;EACvB,2BAA2B;EAC3B,aAAa;EACb,gHAAgH;AAClH;AACA;EACE,YAAY;AACd;AACA;EACE,wBAAwB;AAC1B;AACA;EACE,eAAe;AACjB;AACA;EACE,oBAAoB;AACtB;AACA;EACE,gBAAgB;EAChB,cAAc;EACd,mBAAmB;AACrB;AACA;EACE,aAAa;AACf;AACA;EACE,cAAc;AAChB;AACA;EACE,aAAa;AACf;AACA;EACE,SAAS;EACT,gBAAgB;EAChB,6BAA6B;AAC/B;AACA;EACE;IACE,WAAW;EACb;AACF;AACA;EACE;IACE,WAAW;EACb;AACF;AACA;EACE;IACE,WAAW;EACb;AACF;AACA;EACE,aAAa;AACf;AACA;EACE,cAAc;EACd,UAAU;AACZ;AACA;EACE,gBAAgB;AAClB;AACA;;;EAGE,WAAW;EACX,iBAAiB;EACjB,gBAAgB;EAChB,SAAS;AACX;AACA;EACE,YAAY;AACd;AACA;EACE,kBAAkB;EAClB,eAAe;EACf,YAAY;AACd;AACA;EACE,aAAa;EACb,4BAA4B;EAC5B,mBAAmB;EACnB,iBAAiB;AACnB;AACA;EACE,iBAAiB;EACjB,mBAAmB;AACrB;AACA;EACE,gBAAgB;EAChB,kBAAkB;AACpB;AACA;EACE,kBAAkB;AACpB;AACA;EACE,aAAa;EACb,sBAAsB;EACtB,oBAAoB;AACtB;AACA;EACE,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;EACvB,sBAAsB;EACtB,aAAa;AACf;AACA;EACE,mBAAmB;AACrB;AACA;EACE,aAAa;EACb,oCAAoC;EACpC,oBAAoB;EACpB,iCAAiC;AACnC;AACA;EACE,yBAAyB;EACzB,mBAAmB;EACnB,uBAAuB;EACvB,kBAAkB;AACpB;AACA;EACE,UAAU;EACV,WAAW;EACX,mBAAmB;EACnB,uBAAuB;EACvB,aAAa;EACb,gBAAgB;EAChB,iBAAiB;EACjB,0BAA0B;EAC1B,eAAe;AACjB;AACA;EACE,sCAAsC;AACxC;AACA;EACE,aAAa;EACb,4BAA4B;EAC5B,+CAA+C;AACjD;AACA;EACE,aAAa;EACb,8BAA8B;EAC9B,+CAA+C;AACjD;AACA;EACE,aAAa;EACb,+CAA+C;AACjD;AACA;EACE,UAAU;EACV,WAAW;EACX,mBAAmB;EACnB,uBAAuB;EACvB,aAAa;AACf;AACA;;EAEE,UAAU;EACV,WAAW;EACX,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;EACvB,sBAAsB;EACtB,aAAa;AACf;AACA;;EAEE,mBAAmB;AACrB;AACA;;EAEE,yBAAyB;EACzB,WAAW;EACX,yCAAyC;AAC3C;AACA;;EAEE,yBAAyB;AAC3B;AACA;;;EAGE,0BAA0B;AAC5B;AACA;;;EAGE,gBAAgB;EAChB,cAAc;EACd,mBAAmB;AACrB;AACA;;EAEE,kBAAkB;AACpB;AACA;;EAEE,WAAW;EACX,qBAAqB;EACrB,yBAAyB;EACzB,yBAAyB;EACzB,4BAA4B;EAC5B,oCAAoC;EACpC,kBAAkB;EAClB,WAAW;EACX,UAAU;AACZ;AACA;EACE,qBAAqB;AACvB;AACA;EACE,WAAW;EACX,yBAAyB;EACzB,qBAAqB;EACrB,qBAAqB;EACrB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,qBAAqB;EACrB,sBAAsB;EACtB,eAAe;EACf,yBAAyB;EACzB,sBAAsB;EACtB,iBAAiB;EACjB,yBAAyB;EACzB,eAAe;EACf,sBAAsB;EACtB,qIAAqI;AACvI;AACA;;;;;;;;;;;;;;EAcE,oBAAoB;EACpB,eAAe;AACjB;AACA;;;;;;;;;;;;;;EAcE,gBAAgB;AAClB","file":"tempus-dominus.css","sourcesContent":["/*\ntodo look at how bootstrap loops through their vars to make a --root section\n */\n.visually-hidden, .tempus-dominus-widget [data-action]::after {\n position: absolute !important;\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip: rect(0, 0, 0, 0) !important;\n white-space: nowrap !important;\n border: 0 !important;\n}\n\n.tempus-dominus-widget {\n list-style: none;\n padding: 4px;\n width: 19rem;\n border-radius: 4px;\n display: none;\n background-color: white;\n /*border: 1px solid black;*/\n z-index: 9999;\n box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);\n}\n.tempus-dominus-widget.calendarWeeks {\n width: 21rem;\n}\n.tempus-dominus-widget.calendarWeeks .date-container-days {\n grid-auto-columns: 12.5%;\n}\n.tempus-dominus-widget [data-action] {\n cursor: pointer;\n}\n.tempus-dominus-widget [data-action]::after {\n content: attr(title);\n}\n.tempus-dominus-widget [data-action].disabled, .tempus-dominus-widget [data-action].disabled:hover {\n background: none;\n color: #6c757d;\n cursor: not-allowed;\n}\n.tempus-dominus-widget .arrow {\n display: none;\n}\n.tempus-dominus-widget.show {\n display: block;\n}\n.tempus-dominus-widget .td-collapse:not(.show) {\n display: none;\n}\n.tempus-dominus-widget .td-collapsing {\n height: 0;\n overflow: hidden;\n transition: height 0.35s ease;\n}\n@media (min-width: 576px) {\n .tempus-dominus-widget.timepicker-sbs {\n width: 38em;\n }\n}\n@media (min-width: 768px) {\n .tempus-dominus-widget.timepicker-sbs {\n width: 38em;\n }\n}\n@media (min-width: 992px) {\n .tempus-dominus-widget.timepicker-sbs {\n width: 38em;\n }\n}\n.tempus-dominus-widget.timepicker-sbs .td-row {\n display: flex;\n}\n.tempus-dominus-widget.timepicker-sbs .td-row .td-half {\n flex: 0 0 auto;\n width: 50%;\n}\n.tempus-dominus-widget div[data-action]:active {\n box-shadow: none;\n}\n.tempus-dominus-widget .timepicker-hour,\n.tempus-dominus-widget .timepicker-minute,\n.tempus-dominus-widget .timepicker-second {\n width: 54px;\n font-weight: bold;\n font-size: 1.2em;\n margin: 0;\n}\n.tempus-dominus-widget button[data-action] {\n padding: 6px;\n}\n.tempus-dominus-widget .toggleMeridiem {\n text-align: center;\n /*width: 38px;*/\n height: 38px;\n}\n.tempus-dominus-widget .calendar-header {\n display: grid;\n grid-template-areas: \"a a a\";\n margin-bottom: 10px;\n font-weight: bold;\n}\n.tempus-dominus-widget .calendar-header .next {\n text-align: right;\n padding-right: 10px;\n}\n.tempus-dominus-widget .calendar-header .previous {\n text-align: left;\n padding-left: 10px;\n}\n.tempus-dominus-widget .calendar-header .picker-switch {\n text-align: center;\n}\n.tempus-dominus-widget .toolbar {\n display: grid;\n grid-auto-flow: column;\n grid-auto-rows: 40px;\n}\n.tempus-dominus-widget .toolbar div {\n border-radius: 999px;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n display: flex;\n}\n.tempus-dominus-widget .toolbar div:hover {\n background: #e9ecef;\n}\n.tempus-dominus-widget .date-container-days {\n display: grid;\n grid-template-areas: \"a a a a a a a\";\n grid-auto-rows: 40px;\n grid-auto-columns: calc(100% / 7);\n}\n.tempus-dominus-widget .date-container-days .dow {\n color: rgba(0, 0, 0, 0.5);\n align-items: center;\n justify-content: center;\n text-align: center;\n}\n.tempus-dominus-widget .date-container-days .cw {\n width: 90%;\n height: 90%;\n align-items: center;\n justify-content: center;\n display: flex;\n font-size: 0.8em;\n line-height: 20px;\n color: rgba(0, 0, 0, 0.38);\n cursor: default;\n}\n.tempus-dominus-widget.calendarWeeks .date-container-days {\n grid-template-areas: \"a a a a a a a a\";\n}\n.tempus-dominus-widget .date-container-decades, .tempus-dominus-widget .date-container-years, .tempus-dominus-widget .date-container-months {\n display: grid;\n grid-template-areas: \"a a a\";\n grid-auto-rows: calc(calc(19rem - 2 * 4px) / 7);\n}\n.tempus-dominus-widget .time-container-hour, .tempus-dominus-widget .time-container-minute, .tempus-dominus-widget .time-container-second {\n display: grid;\n grid-template-areas: \"a a a a\";\n grid-auto-rows: calc(calc(19rem - 2 * 4px) / 7);\n}\n.tempus-dominus-widget .time-container-clock {\n display: grid;\n grid-auto-rows: calc(calc(19rem - 2 * 4px) / 7);\n}\n.tempus-dominus-widget .time-container-clock .no-highlight {\n width: 90%;\n height: 90%;\n align-items: center;\n justify-content: center;\n display: flex;\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight), .tempus-dominus-widget .date-container-years div:not(.no-highlight), .tempus-dominus-widget .date-container-months div:not(.no-highlight), .tempus-dominus-widget .date-container-days div:not(.no-highlight),\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight), .tempus-dominus-widget .time-container-hour div:not(.no-highlight), .tempus-dominus-widget .time-container-minute div:not(.no-highlight), .tempus-dominus-widget .time-container-second div:not(.no-highlight) {\n width: 90%;\n height: 90%;\n border-radius: 999px;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n display: flex;\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight):hover, .tempus-dominus-widget .date-container-years div:not(.no-highlight):hover, .tempus-dominus-widget .date-container-months div:not(.no-highlight):hover, .tempus-dominus-widget .date-container-days div:not(.no-highlight):hover,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight):hover, .tempus-dominus-widget .time-container-hour div:not(.no-highlight):hover, .tempus-dominus-widget .time-container-minute div:not(.no-highlight):hover, .tempus-dominus-widget .time-container-second div:not(.no-highlight):hover {\n background: #e9ecef;\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight).active, .tempus-dominus-widget .date-container-years div:not(.no-highlight).active, .tempus-dominus-widget .date-container-months div:not(.no-highlight).active, .tempus-dominus-widget .date-container-days div:not(.no-highlight).active,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).active, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).active, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).active, .tempus-dominus-widget .time-container-second div:not(.no-highlight).active {\n background-color: #0d6efd;\n color: #fff;\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight).active.today:before, .tempus-dominus-widget .date-container-years div:not(.no-highlight).active.today:before, .tempus-dominus-widget .date-container-months div:not(.no-highlight).active.today:before, .tempus-dominus-widget .date-container-days div:not(.no-highlight).active.today:before,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).active.today:before, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).active.today:before, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).active.today:before, .tempus-dominus-widget .time-container-second div:not(.no-highlight).active.today:before {\n border-bottom-color: #fff;\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight).old, .tempus-dominus-widget .date-container-decades div:not(.no-highlight).new, .tempus-dominus-widget .date-container-years div:not(.no-highlight).old, .tempus-dominus-widget .date-container-years div:not(.no-highlight).new, .tempus-dominus-widget .date-container-months div:not(.no-highlight).old, .tempus-dominus-widget .date-container-months div:not(.no-highlight).new, .tempus-dominus-widget .date-container-days div:not(.no-highlight).old, .tempus-dominus-widget .date-container-days div:not(.no-highlight).new,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).old,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).new, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).old, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).new, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).old, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).new, .tempus-dominus-widget .time-container-second div:not(.no-highlight).old, .tempus-dominus-widget .time-container-second div:not(.no-highlight).new {\n color: rgba(0, 0, 0, 0.38);\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight).disabled, .tempus-dominus-widget .date-container-decades div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .date-container-years div:not(.no-highlight).disabled, .tempus-dominus-widget .date-container-years div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .date-container-months div:not(.no-highlight).disabled, .tempus-dominus-widget .date-container-months div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .date-container-days div:not(.no-highlight).disabled, .tempus-dominus-widget .date-container-days div:not(.no-highlight).disabled:hover,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).disabled,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).disabled, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).disabled, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .time-container-second div:not(.no-highlight).disabled, .tempus-dominus-widget .time-container-second div:not(.no-highlight).disabled:hover {\n background: none;\n color: #6c757d;\n cursor: not-allowed;\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight).today, .tempus-dominus-widget .date-container-years div:not(.no-highlight).today, .tempus-dominus-widget .date-container-months div:not(.no-highlight).today, .tempus-dominus-widget .date-container-days div:not(.no-highlight).today,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).today, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).today, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).today, .tempus-dominus-widget .time-container-second div:not(.no-highlight).today {\n position: relative;\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight).today:before, .tempus-dominus-widget .date-container-years div:not(.no-highlight).today:before, .tempus-dominus-widget .date-container-months div:not(.no-highlight).today:before, .tempus-dominus-widget .date-container-days div:not(.no-highlight).today:before,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).today:before, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).today:before, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).today:before, .tempus-dominus-widget .time-container-second div:not(.no-highlight).today:before {\n content: \"\";\n display: inline-block;\n border: solid transparent;\n border-width: 0 0 7px 7px;\n border-bottom-color: #0d6efd;\n border-top-color: rgba(0, 0, 0, 0.2);\n position: absolute;\n bottom: 6px;\n right: 6px;\n}\n.tempus-dominus-widget .time-container {\n margin-bottom: 0.5rem;\n}\n.tempus-dominus-widget button {\n color: #fff;\n background-color: #0d6efd;\n border-color: #0d6efd;\n display: inline-block;\n font-weight: 400;\n line-height: 1.5;\n text-align: center;\n text-decoration: none;\n vertical-align: middle;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n border-radius: 0.25rem;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.day,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.hour,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.minute,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.second,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=incrementHours],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=incrementMinutes],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=incrementSeconds],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=decrementHours],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=decrementMinutes],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=decrementSeconds],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=showHours],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=showMinutes],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=showSeconds],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=togglePeriod] {\n pointer-events: none;\n cursor: default;\n}\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.day:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.hour:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.minute:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.second:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=incrementHours]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=incrementMinutes]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=incrementSeconds]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=decrementHours]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=decrementMinutes]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=decrementSeconds]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=showHours]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=showMinutes]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=showSeconds]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=togglePeriod]:hover {\n background: none;\n}"]} \ No newline at end of file +{"version":3,"sources":["tempus-dominus.scss"],"names":[],"mappings":"AAAA;;EAEE;AACF;EACE,6BAA6B;EAC7B,qBAAqB;EACrB,sBAAsB;EACtB,qBAAqB;EACrB,uBAAuB;EACvB,2BAA2B;EAC3B,iCAAiC;EACjC,8BAA8B;EAC9B,oBAAoB;AACtB;;AAEA;EACE,gBAAgB;EAChB,YAAY;EACZ,YAAY;EACZ,kBAAkB;EAClB,aAAa;EACb,uBAAuB;EACvB,2BAA2B;EAC3B,aAAa;EACb,gHAAgH;AAClH;AACA;EACE,YAAY;AACd;AACA;EACE,wBAAwB;AAC1B;AACA;EACE,eAAe;AACjB;AACA;EACE,oBAAoB;AACtB;AACA;EACE,gBAAgB;EAChB,cAAc;EACd,mBAAmB;AACrB;AACA;EACE,aAAa;AACf;AACA;EACE,cAAc;AAChB;AACA;EACE,aAAa;AACf;AACA;EACE,SAAS;EACT,gBAAgB;EAChB,6BAA6B;AAC/B;AACA;EACE;IACE,WAAW;EACb;AACF;AACA;EACE;IACE,WAAW;EACb;AACF;AACA;EACE;IACE,WAAW;EACb;AACF;AACA;EACE,aAAa;AACf;AACA;EACE,cAAc;EACd,UAAU;AACZ;AACA;EACE,gBAAgB;AAClB;AACA;;;EAGE,WAAW;EACX,iBAAiB;EACjB,gBAAgB;EAChB,SAAS;AACX;AACA;EACE,YAAY;AACd;AACA;EACE,kBAAkB;EAClB,eAAe;EACf,YAAY;AACd;AACA;EACE,aAAa;EACb,4BAA4B;EAC5B,mBAAmB;EACnB,iBAAiB;AACnB;AACA;EACE,iBAAiB;EACjB,mBAAmB;AACrB;AACA;EACE,gBAAgB;EAChB,kBAAkB;AACpB;AACA;EACE,kBAAkB;AACpB;AACA;EACE,aAAa;EACb,sBAAsB;EACtB,oBAAoB;AACtB;AACA;EACE,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;EACvB,sBAAsB;EACtB,aAAa;AACf;AACA;EACE,mBAAmB;AACrB;AACA;EACE,aAAa;EACb,oCAAoC;EACpC,oBAAoB;EACpB,iCAAiC;AACnC;AACA;EACE,yBAAyB;EACzB,mBAAmB;EACnB,uBAAuB;EACvB,kBAAkB;AACpB;AACA;EACE,UAAU;EACV,WAAW;EACX,mBAAmB;EACnB,uBAAuB;EACvB,aAAa;EACb,gBAAgB;EAChB,iBAAiB;EACjB,0BAA0B;EAC1B,eAAe;AACjB;AACA;EACE,sCAAsC;AACxC;AACA;EACE,aAAa;EACb,4BAA4B;EAC5B,uCAAuC;AACzC;AACA;EACE,aAAa;EACb,8BAA8B;EAC9B,uCAAuC;AACzC;AACA;EACE,aAAa;EACb,uCAAuC;AACzC;AACA;EACE,UAAU;EACV,WAAW;EACX,mBAAmB;EACnB,uBAAuB;EACvB,aAAa;AACf;AACA;;EAEE,UAAU;EACV,WAAW;EACX,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;EACvB,sBAAsB;EACtB,aAAa;AACf;AACA;;EAEE,mBAAmB;AACrB;AACA;;EAEE,yBAAyB;EACzB,WAAW;EACX,yCAAyC;AAC3C;AACA;;EAEE,yBAAyB;AAC3B;AACA;;;EAGE,0BAA0B;AAC5B;AACA;;;EAGE,gBAAgB;EAChB,cAAc;EACd,mBAAmB;AACrB;AACA;;EAEE,kBAAkB;AACpB;AACA;;EAEE,WAAW;EACX,qBAAqB;EACrB,yBAAyB;EACzB,yBAAyB;EACzB,4BAA4B;EAC5B,oCAAoC;EACpC,kBAAkB;EAClB,WAAW;EACX,UAAU;AACZ;AACA;EACE,qBAAqB;AACvB;AACA;EACE,WAAW;EACX,yBAAyB;EACzB,qBAAqB;EACrB,qBAAqB;EACrB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,qBAAqB;EACrB,sBAAsB;EACtB,eAAe;EACf,yBAAyB;EACzB,sBAAsB;EACtB,iBAAiB;EACjB,yBAAyB;EACzB,eAAe;EACf,sBAAsB;EACtB,qIAAqI;AACvI;AACA;;;;;;;;;;;;;;EAcE,oBAAoB;EACpB,eAAe;AACjB;AACA;;;;;;;;;;;;;;EAcE,gBAAgB;AAClB","file":"tempus-dominus.css","sourcesContent":["/*\ntodo look at how bootstrap loops through their vars to make a --root section\n */\n.visually-hidden, .tempus-dominus-widget [data-action]::after {\n position: absolute !important;\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip: rect(0, 0, 0, 0) !important;\n white-space: nowrap !important;\n border: 0 !important;\n}\n\n.tempus-dominus-widget {\n list-style: none;\n padding: 4px;\n width: 19rem;\n border-radius: 4px;\n display: none;\n background-color: white;\n /*border: 1px solid black;*/\n z-index: 9999;\n box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);\n}\n.tempus-dominus-widget.calendarWeeks {\n width: 21rem;\n}\n.tempus-dominus-widget.calendarWeeks .date-container-days {\n grid-auto-columns: 12.5%;\n}\n.tempus-dominus-widget [data-action] {\n cursor: pointer;\n}\n.tempus-dominus-widget [data-action]::after {\n content: attr(title);\n}\n.tempus-dominus-widget [data-action].disabled, .tempus-dominus-widget [data-action].disabled:hover {\n background: none;\n color: #6c757d;\n cursor: not-allowed;\n}\n.tempus-dominus-widget .arrow {\n display: none;\n}\n.tempus-dominus-widget.show {\n display: block;\n}\n.tempus-dominus-widget .td-collapse:not(.show) {\n display: none;\n}\n.tempus-dominus-widget .td-collapsing {\n height: 0;\n overflow: hidden;\n transition: height 0.35s ease;\n}\n@media (min-width: 576px) {\n .tempus-dominus-widget.timepicker-sbs {\n width: 38em;\n }\n}\n@media (min-width: 768px) {\n .tempus-dominus-widget.timepicker-sbs {\n width: 38em;\n }\n}\n@media (min-width: 992px) {\n .tempus-dominus-widget.timepicker-sbs {\n width: 38em;\n }\n}\n.tempus-dominus-widget.timepicker-sbs .td-row {\n display: flex;\n}\n.tempus-dominus-widget.timepicker-sbs .td-row .td-half {\n flex: 0 0 auto;\n width: 50%;\n}\n.tempus-dominus-widget div[data-action]:active {\n box-shadow: none;\n}\n.tempus-dominus-widget .timepicker-hour,\n.tempus-dominus-widget .timepicker-minute,\n.tempus-dominus-widget .timepicker-second {\n width: 54px;\n font-weight: bold;\n font-size: 1.2em;\n margin: 0;\n}\n.tempus-dominus-widget button[data-action] {\n padding: 6px;\n}\n.tempus-dominus-widget .toggleMeridiem {\n text-align: center;\n /*width: 38px;*/\n height: 38px;\n}\n.tempus-dominus-widget .calendar-header {\n display: grid;\n grid-template-areas: \"a a a\";\n margin-bottom: 10px;\n font-weight: bold;\n}\n.tempus-dominus-widget .calendar-header .next {\n text-align: right;\n padding-right: 10px;\n}\n.tempus-dominus-widget .calendar-header .previous {\n text-align: left;\n padding-left: 10px;\n}\n.tempus-dominus-widget .calendar-header .picker-switch {\n text-align: center;\n}\n.tempus-dominus-widget .toolbar {\n display: grid;\n grid-auto-flow: column;\n grid-auto-rows: 40px;\n}\n.tempus-dominus-widget .toolbar div {\n border-radius: 999px;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n display: flex;\n}\n.tempus-dominus-widget .toolbar div:hover {\n background: #e9ecef;\n}\n.tempus-dominus-widget .date-container-days {\n display: grid;\n grid-template-areas: \"a a a a a a a\";\n grid-auto-rows: 40px;\n grid-auto-columns: 14.2857142857%;\n}\n.tempus-dominus-widget .date-container-days .dow {\n color: rgba(0, 0, 0, 0.5);\n align-items: center;\n justify-content: center;\n text-align: center;\n}\n.tempus-dominus-widget .date-container-days .cw {\n width: 90%;\n height: 90%;\n align-items: center;\n justify-content: center;\n display: flex;\n font-size: 0.8em;\n line-height: 20px;\n color: rgba(0, 0, 0, 0.38);\n cursor: default;\n}\n.tempus-dominus-widget.calendarWeeks .date-container-days {\n grid-template-areas: \"a a a a a a a a\";\n}\n.tempus-dominus-widget .date-container-decades, .tempus-dominus-widget .date-container-years, .tempus-dominus-widget .date-container-months {\n display: grid;\n grid-template-areas: \"a a a\";\n grid-auto-rows: calc((19rem - 8px) / 7);\n}\n.tempus-dominus-widget .time-container-hour, .tempus-dominus-widget .time-container-minute, .tempus-dominus-widget .time-container-second {\n display: grid;\n grid-template-areas: \"a a a a\";\n grid-auto-rows: calc((19rem - 8px) / 7);\n}\n.tempus-dominus-widget .time-container-clock {\n display: grid;\n grid-auto-rows: calc((19rem - 8px) / 7);\n}\n.tempus-dominus-widget .time-container-clock .no-highlight {\n width: 90%;\n height: 90%;\n align-items: center;\n justify-content: center;\n display: flex;\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight), .tempus-dominus-widget .date-container-years div:not(.no-highlight), .tempus-dominus-widget .date-container-months div:not(.no-highlight), .tempus-dominus-widget .date-container-days div:not(.no-highlight),\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight), .tempus-dominus-widget .time-container-hour div:not(.no-highlight), .tempus-dominus-widget .time-container-minute div:not(.no-highlight), .tempus-dominus-widget .time-container-second div:not(.no-highlight) {\n width: 90%;\n height: 90%;\n border-radius: 999px;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n display: flex;\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight):hover, .tempus-dominus-widget .date-container-years div:not(.no-highlight):hover, .tempus-dominus-widget .date-container-months div:not(.no-highlight):hover, .tempus-dominus-widget .date-container-days div:not(.no-highlight):hover,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight):hover, .tempus-dominus-widget .time-container-hour div:not(.no-highlight):hover, .tempus-dominus-widget .time-container-minute div:not(.no-highlight):hover, .tempus-dominus-widget .time-container-second div:not(.no-highlight):hover {\n background: #e9ecef;\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight).active, .tempus-dominus-widget .date-container-years div:not(.no-highlight).active, .tempus-dominus-widget .date-container-months div:not(.no-highlight).active, .tempus-dominus-widget .date-container-days div:not(.no-highlight).active,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).active, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).active, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).active, .tempus-dominus-widget .time-container-second div:not(.no-highlight).active {\n background-color: #0d6efd;\n color: #fff;\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight).active.today:before, .tempus-dominus-widget .date-container-years div:not(.no-highlight).active.today:before, .tempus-dominus-widget .date-container-months div:not(.no-highlight).active.today:before, .tempus-dominus-widget .date-container-days div:not(.no-highlight).active.today:before,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).active.today:before, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).active.today:before, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).active.today:before, .tempus-dominus-widget .time-container-second div:not(.no-highlight).active.today:before {\n border-bottom-color: #fff;\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight).old, .tempus-dominus-widget .date-container-decades div:not(.no-highlight).new, .tempus-dominus-widget .date-container-years div:not(.no-highlight).old, .tempus-dominus-widget .date-container-years div:not(.no-highlight).new, .tempus-dominus-widget .date-container-months div:not(.no-highlight).old, .tempus-dominus-widget .date-container-months div:not(.no-highlight).new, .tempus-dominus-widget .date-container-days div:not(.no-highlight).old, .tempus-dominus-widget .date-container-days div:not(.no-highlight).new,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).old,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).new, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).old, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).new, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).old, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).new, .tempus-dominus-widget .time-container-second div:not(.no-highlight).old, .tempus-dominus-widget .time-container-second div:not(.no-highlight).new {\n color: rgba(0, 0, 0, 0.38);\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight).disabled, .tempus-dominus-widget .date-container-decades div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .date-container-years div:not(.no-highlight).disabled, .tempus-dominus-widget .date-container-years div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .date-container-months div:not(.no-highlight).disabled, .tempus-dominus-widget .date-container-months div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .date-container-days div:not(.no-highlight).disabled, .tempus-dominus-widget .date-container-days div:not(.no-highlight).disabled:hover,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).disabled,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).disabled, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).disabled, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).disabled:hover, .tempus-dominus-widget .time-container-second div:not(.no-highlight).disabled, .tempus-dominus-widget .time-container-second div:not(.no-highlight).disabled:hover {\n background: none;\n color: #6c757d;\n cursor: not-allowed;\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight).today, .tempus-dominus-widget .date-container-years div:not(.no-highlight).today, .tempus-dominus-widget .date-container-months div:not(.no-highlight).today, .tempus-dominus-widget .date-container-days div:not(.no-highlight).today,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).today, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).today, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).today, .tempus-dominus-widget .time-container-second div:not(.no-highlight).today {\n position: relative;\n}\n.tempus-dominus-widget .date-container-decades div:not(.no-highlight).today:before, .tempus-dominus-widget .date-container-years div:not(.no-highlight).today:before, .tempus-dominus-widget .date-container-months div:not(.no-highlight).today:before, .tempus-dominus-widget .date-container-days div:not(.no-highlight).today:before,\n.tempus-dominus-widget .time-container-clock div:not(.no-highlight).today:before, .tempus-dominus-widget .time-container-hour div:not(.no-highlight).today:before, .tempus-dominus-widget .time-container-minute div:not(.no-highlight).today:before, .tempus-dominus-widget .time-container-second div:not(.no-highlight).today:before {\n content: \"\";\n display: inline-block;\n border: solid transparent;\n border-width: 0 0 7px 7px;\n border-bottom-color: #0d6efd;\n border-top-color: rgba(0, 0, 0, 0.2);\n position: absolute;\n bottom: 6px;\n right: 6px;\n}\n.tempus-dominus-widget .time-container {\n margin-bottom: 0.5rem;\n}\n.tempus-dominus-widget button {\n color: #fff;\n background-color: #0d6efd;\n border-color: #0d6efd;\n display: inline-block;\n font-weight: 400;\n line-height: 1.5;\n text-align: center;\n text-decoration: none;\n vertical-align: middle;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n padding: 0.375rem 0.75rem;\n font-size: 1rem;\n border-radius: 0.25rem;\n transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.day,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.hour,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.minute,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.second,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=incrementHours],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=incrementMinutes],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=incrementSeconds],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=decrementHours],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=decrementMinutes],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=decrementSeconds],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=showHours],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=showMinutes],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=showSeconds],\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=togglePeriod] {\n pointer-events: none;\n cursor: default;\n}\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.day:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.hour:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.minute:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td.second:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=incrementHours]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=incrementMinutes]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=incrementSeconds]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=decrementHours]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=decrementMinutes]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=decrementSeconds]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=showHours]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=showMinutes]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=showSeconds]:hover,\n.tempus-dominus-widget.tempus-dominus-widget-readonly table td [data-action=togglePeriod]:hover {\n background: none;\n}"]} \ No newline at end of file diff --git a/docs/6/examples/index.html b/docs/6/examples/index.html index d778848d8..791a73ec2 100644 --- a/docs/6/examples/index.html +++ b/docs/6/examples/index.html @@ -371,14 +371,7 @@

Simple Setup

diff --git a/docs/6/js/jQuery-provider.js b/docs/6/js/jQuery-provider.js index 349605690..fcbf9c4ef 100644 --- a/docs/6/js/jQuery-provider.js +++ b/docs/6/js/jQuery-provider.js @@ -1,6 +1,11 @@ /// /*global $ */ +/*! + * Tempus Dominus v6.0.0-alpha1.0.13 (https://getdatepicker.com/) + * Copyright 2013-2021 [object Object] + * Licensed under MIT (https://github.com/Eonasdan/tempus-dominus/blob/master/LICENSE) + */ tempusDominus.jQueryInterface = function (option, argument) { if (this.length === 1) { return tempusDominus.jQueryHandleThis(this, option, argument); diff --git a/docs/6/js/search.json b/docs/6/js/search.json index 02b045ca9..5bd6ae872 100644 --- a/docs/6/js/search.json +++ b/docs/6/js/search.json @@ -2,7 +2,7 @@ { "file": "change-log.html", "title": "Change Log", - "body": "version alpha new created a method set(value any index number from string date.set that tries to conver the value provided and then set or if not using multidate added esm output exposed unit datetimeformatoptions datetime class renamed toggleperiod togglemeridiem am/pm button cleaned up css bit got rid of popper arrow aligned picker start element bug fixes fixed dealing with input values/changes issue when calling hide widget hasn't been built shown yet meridiem thanks hkvstore merged pr fix hour selection time component grid clicks year display after selecting decade field had setting defaultdate option date object general returns which is an extended javascript no longer uses jquery momentjs bootstrap events now have interfaces configuration tooltip localization tooltip.prevmonth localization.previousmonth tooltip.prevyear localization.previousyear tooltip.prevdecade localization.previousdecade tooltip.prevcentury localization.previouscentury moved dayviewheaderformat localization.dayviewheaderformat takes intl month e.g long default locale removed usestrict timezone format display.inputformat collapse extraformats widgetparent widgetpositioning changed viewmode times days clock calendar allowmultidate multidateseparator multipledates multipledatesseparator following restrictions mindate maxdate disableddates enableddates daysofweekdisabled disabledhours enabledhours readonly disabledtimeintervals sidebyside calendarweeks toolbarplacement buttons icons inline keepopen array check for dateoptions on data hid allowing by looping through properties keybindings this might come back later ignorereadonly focusonshow styles tip all values are in namespace.css consts.ts file bootstrap-datetimepicker-widget tempus-dominus-widget tempusdominus-bootstrap-datetimepicker-widget-with-calendar-weeks tempus-dominus-with-calendar-weeks v input-group data-toggle=\"datetimepicker cursor type pointer datepicker date-container datepicker-decades date-container-decades datepicker-years date-container-years datepicker-months date-container-months datepicker-days date-container-days prev previous data-day data-value be consistent other views usetwentyfour timepicker time-container timepicker-hour time-container-hour timepicker-minute time-container-minute timepicker-second time-container-second saas called tempus-dominus.scss build has deleted as it's required isinvalid isvalid flipped boolean event emits undefined instead false being cleared plugin.name datetimepicker tempus-dominus root namespace td was rewrite taking some pending pull requests along it unfortunately i didn't do very good job at documenting those changes changlog v2-v can read here", + "body": "version alpha new cleaned up css a bit got rid of the popper arrow and aligned picker to start element breaking display.inputformat now takes function not an intl format by default will be executed that uses selected date(s based on components bug fixes merged fix for parsing issue from comparing constructor names thanks faatihi fixed doc input value real this time keepopen created method set(value any index number string date.set tries conver provided then set or if using multidate added esm output exposed unit datetimeformatoptions datetime class renamed toggleperiod togglemeridiem am/pm button dealing with values/changes when calling hide widget hasn't been built shown yet meridiem hkvstore pr hour selection component grid clicks year display after selecting decade field had setting defaultdate option date object general returns which is extended javascript no longer jquery momentjs bootstrap events have interfaces configuration tooltip localization tooltip.prevmonth localization.previousmonth tooltip.prevyear localization.previousyear tooltip.prevdecade localization.previousdecade tooltip.prevcentury localization.previouscentury moved dayviewheaderformat localization.dayviewheaderformat month e.g long locale removed usestrict timezone collapse extraformats widgetparent widgetpositioning changed viewmode times days clock calendar allowmultidate multidateseparator multipledates multipledatesseparator following restrictions mindate maxdate disableddates enableddates daysofweekdisabled disabledhours enabledhours readonly disabledtimeintervals sidebyside calendarweeks toolbarplacement buttons icons inline array check dateoptions data hid allowing looping through properties keybindings might come back later ignorereadonly focusonshow styles tip all values are in namespace.css consts.ts file bootstrap-datetimepicker-widget tempus-dominus-widget tempusdominus-bootstrap-datetimepicker-widget-with-calendar-weeks tempus-dominus-with-calendar-weeks v input-group data-toggle=\"datetimepicker cursor type pointer datepicker date-container datepicker-decades date-container-decades datepicker-years date-container-years datepicker-months date-container-months datepicker-days date-container-days prev previous data-day data-value consistent other views usetwentyfour timepicker time-container timepicker-hour time-container-hour timepicker-minute time-container-minute timepicker-second time-container-second saas called tempus-dominus.scss build has deleted as it's required isinvalid isvalid flipped boolean event emits undefined instead false being cleared plugin.name datetimepicker tempus-dominus root namespace td was rewrite taking some pending pull requests along it unfortunately i didn't do very good job at documenting those changes changlog v2-v can read here", "postDate": "07/20/2021", "updateDate": "07/20/2021", "excerpt": "An overview of changes between different version of tempus dominus\n ", @@ -20,7 +20,7 @@ { "file": "index.html", "title": "Examples", - "body": "version removes the need for an input field bootstrap jquery and momemntjs if you still check out examples minimum setup all is element to atach picker html javascript events span id='icon-only class='log-event style='display inline-block i class='fas fa-calendar fa-9x'>
russian localefromto
russian localefromto
russian localefromto= 12) + if (lastPicked.hours >= 12 && !this._context._options.display.components.useTwentyfourHour) hour += 12; lastPicked.hours = hour; this._context.dates._setValue(lastPicked, this._context.dates.lastPickedIndex); @@ -1363,6 +1366,7 @@ class OptionConverter { static _mergeOptions(providedOptions, mergeTo) { const newOptions = {}; let path = ''; + const ignoreProperties = ['inputParse', 'inputFormat']; const processKey = (key, value, providedType, defaultType) => { switch (key) { case 'defaultDate': { @@ -1475,6 +1479,7 @@ class OptionConverter { if (!keyOptions.includes(value)) Namespace.errorMessages.unexpectedOptionValue(path.substring(1), value, keyOptions); return value; + case 'inputParse': case 'inputFormat': return value; default: @@ -1531,7 +1536,7 @@ class OptionConverter { } path += `.${key}`; copyTo[key] = processKey(key, value, providedType, defaultType); - if (typeof defaultOptionValue !== 'object' || key === 'inputFormat') { + if (typeof defaultOptionValue !== 'object' || ignoreProperties.includes(key)) { path = path.substring(0, path.lastIndexOf(`.${key}`)); return; } @@ -1609,9 +1614,9 @@ class OptionConverter { * @private */ static _dateTypeCheck(d) { - if (d.constructor.name === 'DateTime') + if (d.constructor.name === DateTime.name) return d; - if (d.constructor.name === 'Date') { + if (d.constructor.name === Date.name) { return DateTime.convert(d); } if (typeof d === typeof '') { @@ -1660,12 +1665,12 @@ class OptionConverter { * @param optionName Provides text to error messages e.g. disabledDates */ static _dateConversion(d, optionName) { - if (typeof d === typeof '' && optionName !== 'input field') { + if (typeof d === typeof '' && optionName !== 'input') { Namespace.errorMessages.dateString(); } const converted = this._dateTypeCheck(d); if (!converted) { - Namespace.errorMessages.failedToParseDate(optionName, d); + Namespace.errorMessages.failedToParseDate(optionName, d, optionName === 'input'); } return converted; } @@ -1739,11 +1744,9 @@ class Dates { set(value, index, from = 'date.set') { if (!value) this._setValue(value, index); - const converted = OptionConverter._dateConversion(value, 'input field'); - if (converted !== undefined) + const converted = OptionConverter._dateConversion(value, from); + if (converted) this._setValue(converted, index); - else - Namespace.errorMessages.failedToParseDate(from, value, true); } /** * Returns true if the `targetDate` is part of the selected dates array. @@ -1817,10 +1820,10 @@ class Dates { const updateInput = () => { if (!this._context._input) return; - let newValue = (target === null || target === void 0 ? void 0 : target.format(this._context._options.display.inputFormat)) || ''; + let newValue = this._context._options.hooks.inputFormat(target); if (this._context._options.multipleDates) { newValue = this._dates - .map((d) => d.format(this._context._options.display.inputFormat)) + .map((d) => this._context._options.hooks.inputFormat(d)) .join(this._context._options.multipleDatesSeparator); } if (this._context._input.value != newValue) @@ -2395,12 +2398,14 @@ class Display { */ this._documentClickEvent = (e) => { var _a; + if (this._context._options.display.keepOpen || + this._context._options.debug || + window.debug) + return; if (this._isVisible && !e.composedPath().includes(this.widget) && // click inside the widget - !((_a = e.composedPath()) === null || _a === void 0 ? void 0 : _a.includes(this._context._element)) && // click on the element - (!this._context._options.display.keepOpen || - !this._context._options.debug || - !window.debug)) { + !((_a = e.composedPath()) === null || _a === void 0 ? void 0 : _a.includes(this._context._element)) // click on the element + ) { this.hide(); } }; @@ -2578,7 +2583,7 @@ class Display { this._context._currentViewMode = max; } this.widget - .querySelectorAll(`.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div`) + .querySelectorAll(`.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div:not(.${Namespace.css.clockContainer})`) .forEach((e) => (e.style.display = 'none')); const datePickerMode = DatePickerModes[this._context._currentViewMode]; let picker = this.widget.querySelector(`.${datePickerMode.className}`); @@ -2996,20 +3001,36 @@ class TempusDominus { * @private */ this._inputChangeEvent = () => { + const setViewDate = () => { + if (this.dates.lastPicked) + this._viewDate = this.dates.lastPicked; + }; const value = this._input.value; if (this._options.multipleDates) { try { const valueSplit = value.split(this._options.multipleDatesSeparator); for (let i = 0; i < valueSplit.length; i++) { - this.dates.set(valueSplit[i], i, 'input'); + if (this._options.hooks.inputParse) { + this.dates.set(this._options.hooks.inputParse(valueSplit[i]), i, 'input'); + } + else { + this.dates.set(valueSplit[i], i, 'input'); + } } + setViewDate(); } catch (_a) { console.warn('TD: Something went wrong trying to set the multidate values from the input field.'); } } else { - this.dates.set(value, 0, 'input'); + if (this._options.hooks.inputParse) { + this.dates.set(this._options.hooks.inputParse(value), 0, 'input'); + } + else { + this.dates.set(value, 0, 'input'); + } + setViewDate(); } }; /** @@ -3256,20 +3277,22 @@ class TempusDominus { this._currentViewMode = Math.max(DatePickerModes.findIndex((x) => x.name === config.display.viewMode), this._minViewModeNumber); } // defaults the input format based on the components enabled - if (config.display.inputFormat === undefined) { + if (config.hooks.inputFormat === undefined) { const components = config.display.components; - config.display.inputFormat = { - year: components.calendar && components.year ? 'numeric' : undefined, - month: components.calendar && components.month ? '2-digit' : undefined, - day: components.calendar && components.date ? '2-digit' : undefined, - hour: components.clock && components.hours - ? components.useTwentyfourHour - ? '2-digit' - : 'numeric' - : undefined, - minute: components.clock && components.minutes ? '2-digit' : undefined, - second: components.clock && components.seconds ? '2-digit' : undefined, - hour12: !components.useTwentyfourHour, + config.hooks.inputFormat = (date) => { + return date.format({ + year: components.calendar && components.year ? 'numeric' : undefined, + month: components.calendar && components.month ? '2-digit' : undefined, + day: components.calendar && components.date ? '2-digit' : undefined, + hour: components.clock && components.hours + ? components.useTwentyfourHour + ? '2-digit' + : 'numeric' + : undefined, + minute: components.clock && components.minutes ? '2-digit' : undefined, + second: components.clock && components.seconds ? '2-digit' : undefined, + hour12: !components.useTwentyfourHour, + }); }; } if ((_a = this._display) === null || _a === void 0 ? void 0 : _a.isVisible) { diff --git a/docs/6/js/tempus-dominus.esm.js.map b/docs/6/js/tempus-dominus.esm.js.map index a3de40706..c5bb3e41b 100644 --- a/docs/6/js/tempus-dominus.esm.js.map +++ b/docs/6/js/tempus-dominus.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"tempus-dominus.esm.js","sources":["../../src/js/datetime.ts","../../src/js/errors.ts","../../src/js/namespace.ts","../../src/js/conts.ts","../../src/js/display/collapse.ts","../../src/js/actions.ts","../../src/js/display/calendar/date-display.ts","../../src/js/display/calendar/month-display.ts","../../src/js/options.ts","../../src/js/dates.ts","../../src/js/display/calendar/year-display.ts","../../src/js/display/calendar/decade-display.ts","../../src/js/display/time/time-display.ts","../../src/js/display/time/hour-display.ts","../../src/js/display/time/minute-display.ts","../../src/js/display/time/second-display.ts","../../src/js/display/index.ts","../../src/js/validation.ts","../../src/js/tempus-dominus.ts"],"sourcesContent":["export enum Unit {\n seconds = 'seconds',\n minutes = 'minutes',\n hours = 'hours',\n date = 'date',\n month = 'month',\n year = 'year',\n}\n\nexport interface DateTimeFormatOptions extends Intl.DateTimeFormatOptions {\n timeStyle?: 'short' | 'medium' | 'long';\n dateStyle?: 'short' | 'medium' | 'long' | 'full';\n}\n\n/**\n * For the most part this object behaves exactly the same way\n * as the native Date object with a little extra spice.\n */\nexport class DateTime extends Date {\n /**\n * Used with Intl.DateTimeFormat\n */\n locale = 'default';\n\n /**\n * Chainable way to set the {@link locale}\n * @param value\n */\n setLocale(value: string): this {\n this.locale = value;\n return this;\n }\n\n /**\n * Converts a plain JS date object to a DateTime object.\n * Doing this allows access to format, etc.\n * @param date\n */\n static convert(date: Date): DateTime {\n if (!date) throw `A date is required`;\n return new DateTime(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n );\n }\n\n /**\n * Native date manipulations are not pure functions. This function creates a duplicate of the DateTime object.\n */\n get clone() {\n return new DateTime(\n this.year,\n this.month,\n this.date,\n this.hours,\n this.minutes,\n this.seconds,\n this.getMilliseconds()\n ).setLocale(this.locale);\n }\n\n /**\n * Sets the current date to the start of the {@link unit} provided\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).startOf('month')\n * would return April 1, 2021, 12:00:00.000 AM (midnight)\n * @param unit\n */\n startOf(unit: Unit | 'weekDay'): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n switch (unit) {\n case 'seconds':\n this.setMilliseconds(0);\n break;\n case 'minutes':\n this.setSeconds(0, 0);\n break;\n case 'hours':\n this.setMinutes(0, 0, 0);\n break;\n case 'date':\n this.setHours(0, 0, 0, 0);\n break;\n case 'weekDay':\n this.startOf(Unit.date);\n this.manipulate(0 - this.weekDay, Unit.date);\n break;\n case 'month':\n this.startOf(Unit.date);\n this.setDate(1);\n break;\n case 'year':\n this.startOf(Unit.date);\n this.setMonth(0, 1);\n break;\n }\n return this;\n }\n\n /**\n * Sets the current date to the end of the {@link unit} provided\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).endOf('month')\n * would return April 30, 2021, 11:59:59.999 PM\n * @param unit\n */\n endOf(unit: Unit | 'weekDay'): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n switch (unit) {\n case 'seconds':\n this.setMilliseconds(999);\n break;\n case 'minutes':\n this.setSeconds(59, 999);\n break;\n case 'hours':\n this.setMinutes(59, 59, 999);\n break;\n case 'date':\n this.setHours(23, 59, 59, 999);\n break;\n case 'weekDay':\n this.startOf(Unit.date);\n this.manipulate(6 - this.weekDay, Unit.date);\n break;\n case 'month':\n this.endOf(Unit.date);\n this.manipulate(1, Unit.month);\n this.setDate(0);\n break;\n case 'year':\n this.endOf(Unit.date);\n this.manipulate(1, Unit.year);\n this.setDate(0);\n break;\n }\n return this;\n }\n\n /**\n * Change a {@link unit} value. Value can be positive or negative\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).manipulate(1, 'month')\n * would return May 30, 2021, 11:45:32.984 AM\n * @param value A positive or negative number\n * @param unit\n */\n manipulate(value: number, unit: Unit): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n this[unit] += value;\n return this;\n }\n\n /**\n * Returns a string format.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat\n * for valid templates and locale objects\n * @param template An object. Uses browser defaults otherwise.\n * @param locale Can be a string or an array of strings. Uses browser defaults otherwise.\n */\n format(template: DateTimeFormatOptions, locale = this.locale): string {\n return new Intl.DateTimeFormat(locale, template).format(this);\n }\n\n /**\n * Return true if {@link compare} is before this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isBefore(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() < compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n return (\n this.clone.startOf(unit).valueOf() < compare.clone.startOf(unit).valueOf()\n );\n }\n\n /**\n * Return true if {@link compare} is after this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isAfter(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() > compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n return (\n this.clone.startOf(unit).valueOf() > compare.clone.startOf(unit).valueOf()\n );\n }\n\n /**\n * Return true if {@link compare} is same this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isSame(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() === compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n compare = DateTime.convert(compare);\n return (\n this.clone.startOf(unit).valueOf() === compare.startOf(unit).valueOf()\n );\n }\n\n /**\n * Check if this is between two other DateTimes, optionally looking at unit scale. The match is exclusive.\n * @param left\n * @param right\n * @param unit.\n * @param inclusivity. A [ indicates inclusion of a value. A ( indicates exclusion.\n * If the inclusivity parameter is used, both indicators must be passed.\n */\n isBetween(\n left: DateTime,\n right: DateTime,\n unit?: Unit,\n inclusivity: '()' | '[]' | '(]' | '[)' = '()'\n ): boolean {\n if (unit && this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n const leftInclusivity = inclusivity[0] === '(';\n const rightInclusivity = inclusivity[1] === ')';\n\n return (\n ((leftInclusivity\n ? this.isAfter(left, unit)\n : !this.isBefore(left, unit)) &&\n (rightInclusivity\n ? this.isBefore(right, unit)\n : !this.isAfter(right, unit))) ||\n ((leftInclusivity\n ? this.isBefore(left, unit)\n : !this.isAfter(left, unit)) &&\n (rightInclusivity\n ? this.isAfter(right, unit)\n : !this.isBefore(right, unit)))\n );\n }\n\n /**\n * Returns flattened object of the date. Does not include literals\n * @param locale\n * @param template\n */\n parts(\n locale = this.locale,\n template: any = { dateStyle: 'full', timeStyle: 'long' }\n ) {\n const parts = {};\n new Intl.DateTimeFormat(locale, template)\n .formatToParts(this)\n .filter((x) => x.type !== 'literal')\n .forEach((x) => (parts[x.type] = x.value));\n return parts;\n }\n\n /**\n * Shortcut to Date.getSeconds()\n */\n get seconds(): number {\n return this.getSeconds();\n }\n\n /**\n * Shortcut to Date.setSeconds()\n */\n set seconds(value: number) {\n this.setSeconds(value);\n }\n\n /**\n * Returns two digit hours\n */\n get secondsFormatted(): string {\n return this.seconds < 10 ? `0${this.seconds}` : `${this.seconds}`;\n }\n\n /**\n * Shortcut to Date.getMinutes()\n */\n get minutes(): number {\n return this.getMinutes();\n }\n\n /**\n * Shortcut to Date.setMinutes()\n */\n set minutes(value: number) {\n this.setMinutes(value);\n }\n\n /**\n * Returns two digit hours\n */\n get minutesFormatted(): string {\n return this.minutes < 10 ? `0${this.minutes}` : `${this.minutes}`;\n }\n\n /**\n * Shortcut to Date.getHours()\n */\n get hours(): number {\n return this.getHours();\n }\n\n /**\n * Shortcut to Date.setHours()\n */\n set hours(value: number) {\n this.setHours(value);\n }\n\n /**\n * Returns two digit hours\n */\n get hoursFormatted(): string {\n return this.hours < 10 ? `0${this.hours}` : `${this.hours}`;\n }\n\n /**\n * Returns two digit hours but in twelve hour mode e.g. 13 -> 1\n */\n get twelveHoursFormatted(): string {\n let hour = this.hours;\n if (hour > 12) hour = hour - 12;\n if (hour === 0) hour = 12;\n return hour < 10 ? `0${hour}` : `${hour}`;\n }\n\n /**\n * Get the meridiem of the date. E.g. AM or PM.\n * If the {@link locale} provides a \"dayPeriod\" then this will be returned,\n * otherwise it will return AM or PM.\n * @param locale\n */\n meridiem(locale: string = this.locale): string {\n return new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n hour12: true,\n } as any)\n .formatToParts(this)\n .find((p) => p.type === 'dayPeriod')?.value;\n }\n\n /**\n * Shortcut to Date.getDate()\n */\n get date(): number {\n return this.getDate();\n }\n\n /**\n * Shortcut to Date.setDate()\n */\n set date(value: number) {\n this.setDate(value);\n }\n\n /**\n * Return two digit date\n */\n get dateFormatted(): string {\n return this.date < 10 ? `0${this.date}` : `${this.date}`;\n }\n\n // https://github.com/you-dont-need/You-Dont-Need-Momentjs#week-of-year\n /**\n * Gets the week of the year\n */\n get week(): number {\n const startOfYear = new Date(this.year, 0, 1);\n startOfYear.setDate(\n startOfYear.getDate() + (1 - (startOfYear.getDay() % 7))\n );\n return Math.round((this.valueOf() - startOfYear.valueOf()) / 604800000) + 1;\n }\n\n /**\n * Shortcut to Date.getDay()\n */\n get weekDay(): number {\n return this.getDay();\n }\n\n /**\n * Shortcut to Date.getMonth()\n */\n get month(): number {\n return this.getMonth();\n }\n\n /**\n * Shortcut to Date.setMonth()\n */\n set month(value: number) {\n this.setMonth(value);\n }\n\n /**\n * Return two digit, human expected month. E.g. January = 1, December = 12\n */\n get monthFormatted(): string {\n return this.month + 1 < 10 ? `0${this.month}` : `${this.month}`;\n }\n\n /**\n * Shortcut to Date.getFullYear()\n */\n get year(): number {\n return this.getFullYear();\n }\n\n /**\n * Shortcut to Date.setFullYear()\n */\n set year(value: number) {\n this.setFullYear(value);\n }\n}\n","import Namespace from './namespace';\n\nexport class TdError extends Error {\n code: number;\n}\n\nexport class ErrorMessages {\n private base = 'TD:';\n\n //#region out to console\n\n /**\n * Throws an error indicating that a key in the options object is invalid.\n * @param optionName\n */\n unexpectedOption(optionName: string) {\n const error = new TdError(\n `${this.base} Unexpected option: ${optionName} does not match a known option.`\n );\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error indicating that one more keys in the options object is invalid.\n * @param optionName\n */\n unexpectedOptions(optionName: string[]) {\n const error = new TdError(`${this.base}: ${optionName.join(', ')}`);\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error when an option is provide an unsupported value.\n * For example a value of 'cheese' for toolbarPlacement which only supports\n * 'top', 'bottom', 'default'.\n * @param optionName\n * @param badValue\n * @param validOptions\n */\n unexpectedOptionValue(\n optionName: string,\n badValue: string,\n validOptions: string[]\n ) {\n const error = new TdError(\n `${\n this.base\n } Unexpected option value: ${optionName} does not accept a value of \"${badValue}\". Valid values are: ${validOptions.join(\n ', '\n )}`\n );\n error.code = 2;\n throw error;\n }\n\n /**\n * Throws an error when an option value is the wrong type.\n * For example a string value was provided to multipleDates which only\n * supports true or false.\n * @param optionName\n * @param badType\n * @param expectedType\n */\n typeMismatch(optionName: string, badType: string, expectedType: string) {\n const error = new TdError(\n `${this.base} Mismatch types: ${optionName} has a type of ${badType} instead of the required ${expectedType}`\n );\n error.code = 3;\n throw error;\n }\n\n /**\n * Throws an error when an option value is outside of the expected range.\n * For example restrictions.daysOfWeekDisabled excepts a value between 0 and 6.\n * @param optionName\n * @param lower\n * @param upper\n */\n numbersOutOfRage(optionName: string, lower: number, upper: number) {\n const error = new TdError(\n `${this.base} ${optionName} expected an array of number between ${lower} and ${upper}.`\n );\n error.code = 4;\n throw error;\n }\n\n /**\n * Throws an error when a value for a date options couldn't be parsed. Either\n * the option was an invalide string or an invalid Date object.\n * @param optionName\n * @param date\n * @param soft If true, logs a warning instead of an error.\n */\n failedToParseDate(optionName: string, date: any, soft = false) {\n const error = new TdError(\n `${this.base} Could not correctly parse \"${date}\" to a date for ${optionName}.`\n );\n error.code = 5;\n if (!soft) throw error;\n console.warn(error);\n }\n\n /**\n * Throws when an element to attach to was not provided in the constructor.\n */\n mustProvideElement() {\n const error = new TdError(`${this.base} No element was provided.`);\n error.code = 6;\n throw error;\n }\n\n /**\n * Throws if providing an array for the events to subscribe method doesn't have\n * the same number of callbacks. E.g., subscribe([1,2], [1])\n */\n subscribeMismatch() {\n const error = new TdError(\n `${this.base} The subscribed events does not match the number of callbacks`\n );\n error.code = 7;\n throw error;\n }\n\n /**\n * Throws if the configuration has conflicting rules e.g. minDate is after maxDate\n */\n conflictingConfiguration(message?: string) {\n const error = new TdError(\n `${this.base} A configuration value conflicts with another rule. ${message}`\n );\n error.code = 8;\n throw error;\n }\n\n /**\n * Logs a warning if a date option value is provided as a string, instead of\n * a date/datetime object.\n */\n dateString() {\n console.warn(\n `${this.base} Using a string for date options is not recommended unless you specify an ISO string.`\n );\n }\n\n //#endregion\n\n //#region used with notify.error\n\n /**\n * Used with an Error Event type if the user selects a date that\n * fails restriction validation.\n */\n failedToSetInvalidDate = 'Failed to set invalid date';\n\n /**\n * Used with an Error Event type when a user changes the value of the\n * input field directly, and does not provide a valid date.\n */\n failedToParseInput = 'Failed parse input field';\n\n //#endregion\n}\n","import { ErrorMessages } from './errors';\n// this is not the way I want this to stay but nested classes seemed to blown up once its compiled.\nconst NAME = 'tempus-dominus',\n version = '6.0.0-alpha1',\n dataKey = 'td';\n\n/**\n * Events\n */\nclass Events {\n key = `.${dataKey}`;\n\n /**\n * Change event. Fired when the user selects a date.\n * See also EventTypes.ChangeEvent\n */\n change = `change${this.key}`;\n\n /**\n * Emit when the view changes for example from month view to the year view.\n * See also EventTypes.ViewUpdateEvent\n */\n update = `update${this.key}`;\n\n /**\n * Emits when a selected date or value from the input field fails to meet the provided validation rules.\n * See also EventTypes.FailEvent\n */\n error = `error${this.key}`;\n\n /**\n * Show event\n * @event Events#show\n */\n show = `show${this.key}`;\n\n /**\n * Hide event\n * @event Events#hide\n */\n hide = `hide${this.key}`;\n\n // blur and focus are used in the jQuery provider but are otherwise unused.\n // keyup/down will be used later for keybinding options\n\n blur = `blur${this.key}`;\n focus = `focus${this.key}`;\n keyup = `keyup${this.key}`;\n keydown = `keydown${this.key}`;\n}\n\nclass Css {\n /**\n * The outer element for the widget.\n */\n widget = `${NAME}-widget`;\n\n /**\n * Hold the previous, next and switcher divs\n */\n calendarHeader = 'calendar-header';\n\n /**\n * The element for the action to change the calendar view. E.g. month -> year.\n */\n switch = 'picker-switch';\n\n /**\n * The elements for all of the toolbar options\n */\n toolbar = 'toolbar';\n\n /**\n * Disables the hover and rounding affect.\n */\n noHighlight = 'no-highlight';\n\n /**\n * Applied to the widget element when the side by side option is in use.\n */\n sideBySide = 'timepicker-sbs';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> July\n */\n previous = 'previous';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> September\n */\n next = 'next';\n\n /**\n * Applied to any action that would violate any restriction options. ALso applied\n * to an input field if the disabled function is called.\n */\n disabled = 'disabled';\n\n /**\n * Applied to any date that is less than requested view,\n * e.g. the last day of the previous month.\n */\n old = 'old';\n\n /**\n * Applied to any date that is greater than of requested view,\n * e.g. the last day of the previous month.\n */\n new = 'new';\n\n /**\n * Applied to any date that is currently selected.\n */\n active = 'active';\n\n //#region date element\n\n /**\n * The outer most element for the calendar view.\n */\n dateContainer = 'date-container';\n\n /**\n * The outer most element for the decades view.\n */\n decadesContainer = `${this.dateContainer}-decades`;\n\n /**\n * Applied to elements within the decades container, e.g. 2020, 2030\n */\n decade = 'decade';\n\n /**\n * The outer most element for the years view.\n */\n yearsContainer = `${this.dateContainer}-years`;\n\n /**\n * Applied to elements within the years container, e.g. 2021, 2021\n */\n year = 'year';\n\n /**\n * The outer most element for the month view.\n */\n monthsContainer = `${this.dateContainer}-months`;\n\n /**\n * Applied to elements within the month container, e.g. January, February\n */\n month = 'month';\n\n /**\n * The outer most element for the calendar view.\n */\n daysContainer = `${this.dateContainer}-days`;\n\n /**\n * Applied to elements within the day container, e.g. 1, 2..31\n */\n day = 'day';\n\n /**\n * If display.calendarWeeks is enabled, a column displaying the week of year\n * is shown. This class is applied to each cell in that column.\n */\n calendarWeeks = 'cw';\n\n /**\n * Applied to the first row of the calendar view, e.g. Sunday, Monday\n */\n dayOfTheWeek = 'dow';\n\n /**\n * Applied to the current date on the calendar view.\n */\n today = 'today';\n\n /**\n * Applied to the locale's weekend dates on the calendar view, e.g. Sunday, Saturday\n */\n weekend = 'weekend';\n\n //#endregion\n\n //#region time element\n\n /**\n * The outer most element for all time related elements.\n */\n timeContainer = 'time-container';\n\n /**\n * Applied the separator columns between time elements, e.g. hour *:* minute *:* second\n */\n separator = 'separator';\n\n /**\n * The outer most element for the clock view.\n */\n clockContainer = `${this.timeContainer}-clock`;\n\n /**\n * The outer most element for the hours selection view.\n */\n hourContainer = `${this.timeContainer}-hour`;\n\n /**\n * The outer most element for the minutes selection view.\n */\n minuteContainer = `${this.timeContainer}-minute`;\n\n /**\n * The outer most element for the seconds selection view.\n */\n secondContainer = `${this.timeContainer}-second`;\n\n /**\n * Applied to each element in the hours selection view.\n */\n hour = 'hour';\n\n /**\n * Applied to each element in the minutes selection view.\n */\n minute = 'minute';\n\n /**\n * Applied to each element in the seconds selection view.\n */\n second = 'second';\n\n /**\n * Applied AM/PM toggle button.\n */\n toggleMeridiem = 'toggleMeridiem';\n\n //#endregion\n\n //#region collapse\n\n /**\n * Applied the element of the current view mode, e.g. calendar or clock.\n */\n show = 'show';\n\n /**\n * Applied to the currently showing view mode during a transition\n * between calendar and clock views\n */\n collapsing = 'td-collapsing';\n\n /**\n * Applied to the currently hidden view mode.\n */\n collapse = 'td-collapse';\n\n //#endregion\n\n /**\n * Applied to the widget when the option display.inline is enabled.\n */\n inline = 'inline';\n}\n\nexport default class Namespace {\n static NAME = NAME;\n // noinspection JSUnusedGlobalSymbols\n static version = version;\n static dataKey = dataKey;\n\n static events = new Events();\n\n static css = new Css();\n\n static errorMessages = new ErrorMessages();\n}\n","import { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options from './options';\n\nconst DefaultOptions: Options = {\n restrictions: {\n minDate: undefined,\n maxDate: undefined,\n disabledDates: [],\n enabledDates: [],\n daysOfWeekDisabled: [],\n disabledTimeIntervals: [],\n disabledHours: [],\n enabledHours: [],\n },\n display: {\n icons: {\n type: 'icons',\n time: 'fas fa-clock',\n date: 'fas fa-calendar',\n up: 'fas fa-arrow-up',\n down: 'fas fa-arrow-down',\n previous: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n today: 'fas fa-calendar-check',\n clear: 'fas fa-trash',\n close: 'fas fa-times',\n },\n sideBySide: false,\n calendarWeeks: false,\n viewMode: 'calendar',\n toolbarPlacement: 'bottom',\n keepOpen: false,\n buttons: {\n today: false,\n clear: false,\n close: false,\n },\n components: {\n calendar: true,\n date: true,\n month: true,\n year: true,\n decades: true,\n clock: true,\n hours: true,\n minutes: true,\n seconds: false,\n useTwentyfourHour: false,\n },\n inputFormat: undefined,\n inline: false,\n },\n stepping: 1,\n useCurrent: true,\n defaultDate: undefined,\n localization: {\n today: 'Go to today',\n clear: 'Clear selection',\n close: 'Close the picker',\n selectMonth: 'Select Month',\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n selectYear: 'Select Year',\n previousYear: 'Previous Year',\n nextYear: 'Next Year',\n selectDecade: 'Select Decade',\n previousDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n previousCentury: 'Previous Century',\n nextCentury: 'Next Century',\n pickHour: 'Pick Hour',\n incrementHour: 'Increment Hour',\n decrementHour: 'Decrement Hour',\n pickMinute: 'Pick Minute',\n incrementMinute: 'Increment Minute',\n decrementMinute: 'Decrement Minute',\n pickSecond: 'Pick Second',\n incrementSecond: 'Increment Second',\n decrementSecond: 'Decrement Second',\n toggleMeridiem: 'Toggle Meridiem',\n selectTime: 'Select Time',\n selectDate: 'Select Date',\n dayViewHeaderFormat: 'long',\n locale: 'default',\n },\n keepInvalid: false,\n debug: false,\n allowInputToggle: false,\n viewDate: new DateTime(),\n multipleDates: false,\n multipleDatesSeparator: '; ',\n promptTimeOnDateChange: false,\n promptTimeOnDateChangeTransitionDelay: 200,\n};\n\nconst DatePickerModes: {\n name: string;\n className: string;\n unit: Unit;\n step: number;\n}[] = [\n {\n name: 'calendar',\n className: Namespace.css.daysContainer,\n unit: Unit.month,\n step: 1,\n },\n {\n name: 'months',\n className: Namespace.css.monthsContainer,\n unit: Unit.year,\n step: 1,\n },\n {\n name: 'years',\n className: Namespace.css.yearsContainer,\n unit: Unit.year,\n step: 10,\n },\n {\n name: 'decades',\n className: Namespace.css.decadesContainer,\n unit: Unit.year,\n step: 100,\n },\n];\n\nexport { DefaultOptions, DatePickerModes, Namespace };\n","import Namespace from '../namespace';\n\n/**\n * Provides a collapse functionality to the view changes\n */\nexport default class Collapse {\n private timeOut;\n\n /**\n * Flips the show/hide state of `target`\n * @param target html element to affect.\n */\n toggle(target: HTMLElement, callback = undefined) {\n if (target.classList.contains(Namespace.css.show)) {\n this.hide(target, callback);\n } else {\n this.show(target, callback);\n }\n }\n\n /**\n * If `target` is not already showing, then show after the animation.\n * @param target\n */\n show(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse, Namespace.css.show);\n target.style.height = '';\n this.timeOut = null;\n if (callback) callback();\n };\n\n target.style.height = '0';\n target.classList.remove(Namespace.css.collapse);\n target.classList.add(Namespace.css.collapsing);\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n target.style.height = `${target.scrollHeight}px`;\n }\n\n /**\n * If `target` is not already hidden, then hide after the animation.\n * @param target HTML Element\n */\n hide(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n !target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse);\n this.timeOut = null;\n };\n\n target.style.height = `${target.getBoundingClientRect()['height']}px`;\n\n const reflow = (element) => element.offsetHeight;\n\n reflow(target);\n\n target.classList.remove(Namespace.css.collapse, Namespace.css.show);\n target.classList.add(Namespace.css.collapsing);\n target.style.height = '';\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n }\n\n /**\n * Gets the transition duration from the `element` by getting css properties\n * `transition-duration` and `transition-delay`\n * @param element HTML Element\n */\n private getTransitionDurationFromElement = (element: HTMLElement) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } =\n window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) +\n Number.parseFloat(transitionDelay)) *\n 1000\n );\n };\n}\n","import { DatePickerModes } from './conts.js';\nimport { DateTime, Unit } from './datetime';\nimport { TempusDominus } from './tempus-dominus';\nimport Collapse from './display/collapse';\nimport Namespace from './namespace';\n\n/**\n *\n */\nexport default class Actions {\n private _context: TempusDominus;\n private collapse: Collapse;\n\n constructor(context: TempusDominus) {\n this._context = context;\n this.collapse = new Collapse();\n }\n\n /**\n * Performs the selected `action`. See ActionTypes\n * @param e This is normally a click event\n * @param action If not provided, then look for a [data-action]\n */\n do(e: any, action?: ActionTypes) {\n const currentTarget = e.currentTarget;\n if (currentTarget.classList.contains(Namespace.css.disabled)) return false;\n action = action || currentTarget.dataset.action;\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n /**\n * Common function to manipulate {@link lastPicked} by `unit`\n * @param unit\n * @param value Value to change by\n */\n const manipulateAndSet = (unit: Unit, value = 1) => {\n const newDate = lastPicked.manipulate(value, unit);\n if (this._context._validation.isValid(newDate, unit)) {\n this._context.dates._setValue(\n newDate,\n this._context.dates.lastPickedIndex\n );\n }\n };\n\n switch (action) {\n case ActionTypes.next:\n case ActionTypes.previous:\n const { unit, step } = DatePickerModes[this._context._currentViewMode];\n if (action === ActionTypes.next)\n this._context._viewDate.manipulate(step, unit);\n else this._context._viewDate.manipulate(step * -1, unit);\n this._context._viewUpdate(unit);\n\n this._context._display._showMode();\n break;\n case ActionTypes.pickerSwitch:\n this._context._display._showMode(1);\n this._context._viewUpdate(\n DatePickerModes[this._context._currentViewMode].unit\n );\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.selectMonth:\n case ActionTypes.selectYear:\n case ActionTypes.selectDecade:\n const value = +currentTarget.getAttribute('data-value');\n switch (action) {\n case ActionTypes.selectMonth:\n this._context._viewDate.month = value;\n this._context._viewUpdate(Unit.month);\n break;\n case ActionTypes.selectYear:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n case ActionTypes.selectDecade:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n }\n\n if (\n this._context._currentViewMode === this._context._minViewModeNumber\n ) {\n this._context.dates._setValue(\n this._context._viewDate,\n this._context.dates.lastPickedIndex\n );\n if (!this._context._options.display.inline) {\n this._context._display.hide();\n }\n } else {\n this._context._display._showMode(-1);\n }\n break;\n case ActionTypes.selectDay:\n const day = this._context._viewDate.clone;\n if (currentTarget.classList.contains(Namespace.css.old)) {\n day.manipulate(-1, Unit.month);\n }\n if (currentTarget.classList.contains(Namespace.css.new)) {\n day.manipulate(1, Unit.month);\n }\n\n day.date = +currentTarget.innerText;\n let index = 0;\n if (this._context._options.multipleDates) {\n index = this._context.dates.pickedIndex(day, Unit.date);\n if (index !== -1) {\n this._context.dates._setValue(null, index); //deselect multi-date\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex + 1\n );\n }\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex\n );\n }\n\n if (\n !this._context._display._hasTime &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline &&\n !this._context._options.multipleDates\n ) {\n this._context._display.hide();\n }\n break;\n case ActionTypes.selectHour:\n let hour = +currentTarget.getAttribute('data-value');\n if (lastPicked.hours >= 12) hour += 12;\n lastPicked.hours = hour;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.minutes &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectMinute:\n lastPicked.minutes = +currentTarget.innerText;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.seconds &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectSecond:\n lastPicked.seconds = +currentTarget.innerText;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.incrementHours:\n manipulateAndSet(Unit.hours);\n break;\n case ActionTypes.incrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping);\n break;\n case ActionTypes.incrementSeconds:\n manipulateAndSet(Unit.seconds);\n break;\n case ActionTypes.decrementHours:\n manipulateAndSet(Unit.hours, -1);\n break;\n case ActionTypes.decrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping * -1);\n break;\n case ActionTypes.decrementSeconds:\n manipulateAndSet(Unit.seconds, -1);\n break;\n case ActionTypes.toggleMeridiem:\n manipulateAndSet(\n Unit.hours,\n this._context.dates.lastPicked.hours >= 12 ? -12 : 12\n );\n break;\n case ActionTypes.togglePicker:\n this._context._display.widget\n .querySelectorAll(\n `.${Namespace.css.dateContainer}, .${Namespace.css.timeContainer}`\n )\n .forEach((htmlElement: HTMLElement) =>\n this.collapse.toggle(htmlElement)\n );\n if (\n currentTarget.getAttribute('title') ===\n this._context._options.localization.selectDate\n ) {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectTime\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.time\n ).outerHTML;\n\n this._context._display._updateCalendarHeader();\n } else {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectDate\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.date\n ).outerHTML;\n this.do(e, ActionTypes.showClock);\n this._context._display._update('clock');\n }\n break;\n case ActionTypes.showClock:\n case ActionTypes.showHours:\n case ActionTypes.showMinutes:\n case ActionTypes.showSeconds:\n this._context._display.widget\n .querySelectorAll(`.${Namespace.css.timeContainer} > div`)\n .forEach(\n (htmlElement: HTMLElement) => (htmlElement.style.display = 'none')\n );\n\n let classToUse = '';\n switch (action) {\n case ActionTypes.showClock:\n classToUse = Namespace.css.clockContainer;\n this._context._display._update('clock');\n break;\n case ActionTypes.showHours:\n classToUse = Namespace.css.hourContainer;\n this._context._display._update(Unit.hours);\n break;\n case ActionTypes.showMinutes:\n classToUse = Namespace.css.minuteContainer;\n this._context._display._update(Unit.minutes);\n break;\n case ActionTypes.showSeconds:\n classToUse = Namespace.css.secondContainer;\n this._context._display._update(Unit.seconds);\n break;\n }\n\n ((\n this._context._display.widget.getElementsByClassName(classToUse)[0]\n )).style.display = 'grid';\n break;\n case ActionTypes.clear:\n this._context.dates._setValue(null);\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.close:\n this._context._display.hide();\n break;\n case ActionTypes.today:\n const today = new DateTime().setLocale(\n this._context._options.localization.locale\n );\n this._context._viewDate = today;\n if (this._context._validation.isValid(today, Unit.date))\n this._context.dates._setValue(\n today,\n this._context.dates.lastPickedIndex\n );\n break;\n }\n }\n}\n\nexport enum ActionTypes {\n next = 'next',\n previous = 'previous',\n pickerSwitch = 'pickerSwitch',\n selectMonth = 'selectMonth',\n selectYear = 'selectYear',\n selectDecade = 'selectDecade',\n selectDay = 'selectDay',\n selectHour = 'selectHour',\n selectMinute = 'selectMinute',\n selectSecond = 'selectSecond',\n incrementHours = 'incrementHours',\n incrementMinutes = 'incrementMinutes',\n incrementSeconds = 'incrementSeconds',\n decrementHours = 'decrementHours',\n decrementMinutes = 'decrementMinutes',\n decrementSeconds = 'decrementSeconds',\n toggleMeridiem = 'toggleMeridiem',\n togglePicker = 'togglePicker',\n showClock = 'showClock',\n showHours = 'showHours',\n showMinutes = 'showMinutes',\n showSeconds = 'showSeconds',\n clear = 'clear',\n close = 'close',\n today = 'today',\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { DateTime, Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `date`\n */\nexport default class DateDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.daysContainer);\n\n container.append(...this._daysOfTheWeek());\n\n if (this._context._options.display.calendarWeeks) {\n const div = document.createElement('div');\n div.classList.add(Namespace.css.calendarWeeks, Namespace.css.noHighlight);\n container.appendChild(div);\n }\n\n for (let i = 0; i < 42; i++) {\n if (i !== 0 && i % 7 === 0) {\n if (this._context._options.display.calendarWeeks) {\n const div = document.createElement('div');\n div.classList.add(\n Namespace.css.calendarWeeks,\n Namespace.css.noHighlight\n );\n container.appendChild(div);\n }\n }\n\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectDay);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.daysContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.daysContainer,\n this._context._viewDate.format({\n month: this._context._options.localization.dayViewHeaderFormat,\n })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.month),\n Unit.month\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.month),\n Unit.month\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone\n .startOf(Unit.month)\n .startOf('weekDay')\n .manipulate(12, Unit.hours);\n\n container\n .querySelectorAll(\n `[data-action=\"${ActionTypes.selectDay}\"], .${Namespace.css.calendarWeeks}`\n )\n .forEach((containerClone: HTMLElement, index) => {\n if (\n this._context._options.display.calendarWeeks &&\n containerClone.classList.contains(Namespace.css.calendarWeeks)\n ) {\n if (containerClone.innerText === '#') return;\n containerClone.innerText = `${innerDate.week}`;\n return;\n }\n\n let classes = [];\n classes.push(Namespace.css.day);\n\n if (innerDate.isBefore(this._context._viewDate, Unit.month)) {\n classes.push(Namespace.css.old);\n }\n if (innerDate.isAfter(this._context._viewDate, Unit.month)) {\n classes.push(Namespace.css.new);\n }\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.date)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.date)) {\n classes.push(Namespace.css.disabled);\n }\n if (innerDate.isSame(new DateTime(), Unit.date)) {\n classes.push(Namespace.css.today);\n }\n if (innerDate.weekDay === 0 || innerDate.weekDay === 6) {\n classes.push(Namespace.css.weekend);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute(\n 'data-value',\n `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`\n );\n containerClone.innerText = `${innerDate.date}`;\n innerDate.manipulate(1, Unit.date);\n });\n }\n\n /***\n * Generates an html row that contains the days of the week.\n * @private\n */\n private _daysOfTheWeek(): HTMLElement[] {\n let innerDate = this._context._viewDate.clone\n .startOf('weekDay')\n .startOf(Unit.date);\n const row = [];\n document.createElement('div');\n\n if (this._context._options.display.calendarWeeks) {\n const htmlDivElement = document.createElement('div');\n htmlDivElement.classList.add(\n Namespace.css.calendarWeeks,\n Namespace.css.noHighlight\n );\n htmlDivElement.innerText = '#';\n row.push(htmlDivElement);\n }\n\n for (let i = 0; i < 7; i++) {\n const htmlDivElement = document.createElement('div');\n htmlDivElement.classList.add(\n Namespace.css.dayOfTheWeek,\n Namespace.css.noHighlight\n );\n htmlDivElement.innerText = innerDate.format({ weekday: 'short' });\n innerDate.manipulate(1, Unit.date);\n row.push(htmlDivElement);\n }\n\n return row;\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `month`\n */\nexport default class MonthDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.monthsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMonth);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.monthsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.monthsContainer,\n this._context._viewDate.format({ year: 'numeric' })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.year),\n Unit.year\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.year),\n Unit.year\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone.startOf(Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMonth}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.month);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.month)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.month)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${index}`);\n containerClone.innerText = `${innerDate.format({ month: 'short' })}`;\n innerDate.manipulate(1, Unit.month);\n });\n }\n}\n","import { DateTime, DateTimeFormatOptions } from './datetime';\nimport Namespace from './namespace';\nimport { DefaultOptions } from './conts';\n\nexport default interface Options {\n restrictions: {\n minDate: DateTime;\n maxDate: DateTime;\n enabledDates: DateTime[];\n disabledDates: DateTime[];\n enabledHours: number[];\n disabledHours: number[];\n disabledTimeIntervals: { from: DateTime; to: DateTime }[];\n daysOfWeekDisabled: number[];\n };\n display: {\n toolbarPlacement: 'top' | 'bottom';\n components: {\n calendar: boolean;\n date: boolean;\n month: boolean;\n year: boolean;\n decades: boolean;\n clock: boolean;\n hours: boolean;\n minutes: boolean;\n seconds: boolean;\n useTwentyfourHour: boolean;\n };\n buttons: { today: boolean; close: boolean; clear: boolean };\n calendarWeeks: boolean;\n icons: {\n date: string;\n next: string;\n previous: string;\n today: string;\n clear: string;\n time: string;\n up: string;\n type: 'icons' | 'sprites';\n down: string;\n close: string;\n };\n viewMode: 'clock' | 'calendar' | 'months' | 'years' | 'decades';\n sideBySide: boolean;\n inputFormat: DateTimeFormatOptions;\n inline: boolean;\n keepOpen: boolean;\n };\n stepping: number;\n useCurrent: boolean;\n defaultDate: DateTime;\n localization: {\n nextMonth: string;\n pickHour: string;\n incrementSecond: string;\n nextDecade: string;\n selectDecade: string;\n dayViewHeaderFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n decrementHour: string;\n selectDate: string;\n incrementHour: string;\n previousCentury: string;\n decrementSecond: string;\n today: string;\n previousMonth: string;\n selectYear: string;\n pickSecond: string;\n nextCentury: string;\n close: string;\n incrementMinute: string;\n selectTime: string;\n clear: string;\n toggleMeridiem: string;\n selectMonth: string;\n decrementMinute: string;\n pickMinute: string;\n nextYear: string;\n previousYear: string;\n previousDecade: string;\n locale: string;\n };\n keepInvalid: boolean;\n debug: boolean;\n allowInputToggle: boolean;\n viewDate: DateTime;\n multipleDates: boolean;\n multipleDatesSeparator: string;\n promptTimeOnDateChange: boolean;\n promptTimeOnDateChangeTransitionDelay: number;\n}\n\nexport class OptionConverter {\n static _mergeOptions(providedOptions: Options, mergeTo: Options): Options {\n const newOptions = {} as Options;\n let path = '';\n\n const processKey = (key, value, providedType, defaultType) => {\n switch (key) {\n case 'defaultDate': {\n const dateTime = this._dateConversion(value, 'defaultDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'defaultDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'viewDate': {\n const dateTime = this._dateConversion(value, 'viewDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'viewDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'minDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.minDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.minDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'maxDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.maxDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.maxDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'disabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.disabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.disabledHours',\n 0,\n 23\n );\n return value;\n case 'enabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.enabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.enabledHours',\n 0,\n 23\n );\n return value;\n case 'daysOfWeekDisabled':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.daysOfWeekDisabled',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 6).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.daysOfWeekDisabled',\n 0,\n 6\n );\n return value;\n case 'enabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.enabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.disabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledTimeIntervals':\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n key,\n providedType,\n 'array of { from: DateTime|Date, to: DateTime|Date }'\n );\n }\n const valueObject = value as { from: any; to: any }[];\n for (let i = 0; i < valueObject.length; i++) {\n Object.keys(valueObject[i]).forEach((vk) => {\n const subOptionName = `${key}[${i}].${vk}`;\n let d = valueObject[i][vk];\n const dateTime = this._dateConversion(d, subOptionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n subOptionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n valueObject[i][vk] = dateTime;\n });\n }\n return valueObject;\n case 'toolbarPlacement':\n case 'type':\n case 'viewMode':\n case 'dayViewHeaderFormat':\n const optionValues = {\n toolbarPlacement: ['top', 'bottom', 'default'],\n type: ['icons', 'sprites'],\n viewMode: ['clock', 'calendar', 'months', 'years', 'decades'],\n dayViewHeaderFormat: [\n 'numeric',\n '2-digit',\n 'long',\n 'short',\n 'narrow',\n ],\n };\n const keyOptions = optionValues[key];\n if (!keyOptions.includes(value))\n Namespace.errorMessages.unexpectedOptionValue(\n path.substring(1),\n value,\n keyOptions\n );\n\n return value;\n case 'inputFormat':\n return value;\n default:\n switch (defaultType) {\n case 'boolean':\n return value === 'true' || value === true;\n case 'number':\n return +value;\n case 'string':\n return value.toString();\n case 'object':\n return {};\n case 'function':\n return value;\n default:\n Namespace.errorMessages.typeMismatch(\n path.substring(1),\n providedType,\n defaultType\n );\n }\n }\n };\n\n /**\n * The spread operator caused sub keys to be missing after merging.\n * This is to fix that issue by using spread on the child objects first.\n * Also handles complex options like disabledDates\n * @param provided An option from new providedOptions\n * @param mergeOption Default option to compare types against\n * @param copyTo Destination object. This was add to prevent reference copies\n */\n const spread = (provided, mergeOption, copyTo) => {\n const unsupportedOptions = Object.keys(provided).filter(\n (x) => !Object.keys(mergeOption).includes(x)\n );\n if (unsupportedOptions.length > 0) {\n const flattenedOptions = OptionConverter._flattenDefaultOptions;\n\n const errors = unsupportedOptions.map((x) => {\n let error = `\"${path.substring(1)}.${x}\" in not a known option.`;\n let didYouMean = flattenedOptions.find((y) => y.includes(x));\n if (didYouMean) error += `Did you mean \"${didYouMean}\"?`;\n return error;\n });\n Namespace.errorMessages.unexpectedOptions(errors);\n }\n Object.keys(mergeOption).forEach((key) => {\n const defaultOptionValue = mergeOption[key];\n let providedType = typeof provided[key];\n let defaultType = typeof defaultOptionValue;\n let value = provided[key];\n if (!provided.hasOwnProperty(key)) {\n if (\n defaultType === 'undefined' ||\n (value?.length === 0 && Array.isArray(defaultOptionValue))\n ) {\n copyTo[key] = defaultOptionValue;\n return;\n }\n provided[key] = defaultOptionValue;\n value = provided[key];\n }\n path += `.${key}`;\n copyTo[key] = processKey(key, value, providedType, defaultType);\n\n if (typeof defaultOptionValue !== 'object' || key === 'inputFormat') {\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n return;\n }\n if (!Array.isArray(provided[key])) {\n spread(provided[key], defaultOptionValue, copyTo[key]);\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n }\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n });\n };\n spread(providedOptions, mergeTo, newOptions);\n\n return newOptions;\n }\n\n static _dataToOptions(element, options: Options): Options {\n const eData = element.dataset;\n if (\n !eData ||\n Object.keys(eData).length === 0 ||\n eData.constructor !== DOMStringMap\n )\n return options;\n let dataOptions = {} as Options;\n\n // because dataset returns camelCase including the 'td' key the option\n // key won't align\n const objectToNormalized = (object) => {\n const lowered = {};\n Object.keys(object).forEach((x) => {\n lowered[x.toLowerCase()] = x;\n });\n\n return lowered;\n };\n\n const rabbitHole = (\n split: string[],\n index: number,\n optionSubgroup: {},\n value: any\n ) => {\n // first round = display { ... }\n const normalizedOptions = objectToNormalized(optionSubgroup);\n\n const keyOption = normalizedOptions[split[index].toLowerCase()];\n const internalObject = {};\n\n if (keyOption === undefined) return internalObject;\n\n // if this is another object, continue down the rabbit hole\n if (optionSubgroup[keyOption].constructor === Object) {\n index++;\n internalObject[keyOption] = rabbitHole(\n split,\n index,\n optionSubgroup[keyOption],\n value\n );\n } else {\n internalObject[keyOption] = value;\n }\n return internalObject;\n };\n const optionsLower = objectToNormalized(options);\n\n Object.keys(eData)\n .filter((x) => x.startsWith(Namespace.dataKey))\n .map((x) => x.substring(2))\n .forEach((key) => {\n let keyOption = optionsLower[key.toLowerCase()];\n\n // dataset merges dashes to camelCase... yay\n // i.e. key = display_components_seconds\n if (key.includes('_')) {\n // [display, components, seconds]\n const split = key.split('_');\n // display\n keyOption = optionsLower[split[0].toLowerCase()];\n if (\n keyOption !== undefined &&\n options[keyOption].constructor === Object\n ) {\n dataOptions[keyOption] = rabbitHole(\n split,\n 1,\n options[keyOption],\n eData[`td${key}`]\n );\n }\n }\n // or key = multipleDate\n else if (keyOption !== undefined) {\n dataOptions[keyOption] = eData[`td${key}`];\n }\n });\n\n return this._mergeOptions(dataOptions, options);\n }\n\n /**\n * Attempts to prove `d` is a DateTime or Date or can be converted into one.\n * @param d If a string will attempt creating a date from it.\n * @private\n */\n static _dateTypeCheck(d: any): DateTime | null {\n if (d.constructor.name === 'DateTime') return d;\n if (d.constructor.name === 'Date') {\n return DateTime.convert(d);\n }\n if (typeof d === typeof '') {\n const dateTime = new DateTime(d);\n if (JSON.stringify(dateTime) === 'null') {\n return null;\n }\n return dateTime;\n }\n return null;\n }\n\n /**\n * Type checks that `value` is an array of Date or DateTime\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckDateArray(optionName: string, value, providedType: string) {\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of DateTime or Date'\n );\n }\n for (let i = 0; i < value.length; i++) {\n let d = value[i];\n const dateTime = this._dateConversion(d, optionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n value[i] = dateTime;\n }\n }\n\n /**\n * Type checks that `value` is an array of numbers\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckNumberArray(\n optionName: string,\n value,\n providedType: string\n ) {\n if (!Array.isArray(value) || value.find((x) => typeof x !== typeof 0)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of numbers'\n );\n }\n return;\n }\n\n /**\n * Attempts to convert `d` to a DateTime object\n * @param d value to convert\n * @param optionName Provides text to error messages e.g. disabledDates\n */\n static _dateConversion(d: any, optionName: string) {\n if (typeof d === typeof '' && optionName !== 'input field') {\n Namespace.errorMessages.dateString();\n }\n\n const converted = this._dateTypeCheck(d);\n\n if (!converted) {\n Namespace.errorMessages.failedToParseDate(optionName, d);\n }\n return converted;\n }\n\n private static _flatback: string[];\n\n private static get _flattenDefaultOptions(): string[] {\n if (this._flatback) return this._flatback;\n const deepKeys = (t, pre = []) =>\n Array.isArray(t)\n ? []\n : Object(t) === t\n ? Object.entries(t).flatMap(([k, v]) => deepKeys(v, [...pre, k]))\n : pre.join('.');\n\n this._flatback = deepKeys(DefaultOptions);\n\n return this._flatback;\n }\n\n /**\n * Some options conflict like min/max date. Verify that these kinds of options\n * are set correctly.\n * @param config\n */\n static _validateConflcits(config: Options) {\n if (config.restrictions.minDate && config.restrictions.maxDate) {\n if (config.restrictions.minDate.isAfter(config.restrictions.maxDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'minDate is after maxDate'\n );\n }\n\n if (config.restrictions.maxDate.isBefore(config.restrictions.minDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'maxDate is before minDate'\n );\n }\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport { ChangeEvent, FailEvent } from './event-types';\nimport { OptionConverter } from './options';\n\nexport default class Dates {\n private _dates: DateTime[] = [];\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Returns the array of selected dates\n */\n get picked(): DateTime[] {\n return this._dates;\n }\n\n /**\n * Returns the last picked value.\n */\n get lastPicked(): DateTime {\n return this._dates[this.lastPickedIndex];\n }\n\n /**\n * Returns the length of picked dates -1 or 0 if none are selected.\n */\n get lastPickedIndex(): number {\n if (this._dates.length === 0) return 0;\n return this._dates.length - 1;\n }\n\n /**\n * Adds a new DateTime to selected dates array\n * @param date\n */\n add(date: DateTime): void {\n this._dates.push(date);\n }\n\n /**\n * Tries to convert the provided value to a DateTime object.\n * If value is null|undefined then clear the value of the provided index (or 0).\n * @param value Value to convert or null|undefined\n * @param index When using multidates this is the index in the array\n * @param from Used in the warning message, useful for debugging.\n */\n set(value: any, index?: number, from: string = 'date.set') {\n if (!value) this._setValue(value, index);\n const converted = OptionConverter._dateConversion(value, 'input field');\n if (converted !== undefined) this._setValue(converted, index);\n else Namespace.errorMessages.failedToParseDate(from, value, true);\n }\n\n /**\n * Returns true if the `targetDate` is part of the selected dates array.\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n isPicked(targetDate: DateTime, unit?: Unit): boolean {\n if (!unit) return this._dates.find((x) => x === targetDate) !== undefined;\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return (\n this._dates\n .map((x) => x.format(format))\n .find((x) => x === innerDateFormatted) !== undefined\n );\n }\n\n /**\n * Returns the index at which `targetDate` is in the array.\n * This is used for updating or removing a date when multi-date is used\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n pickedIndex(targetDate: DateTime, unit?: Unit): number {\n if (!unit) return this._dates.indexOf(targetDate);\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return this._dates.map((x) => x.format(format)).indexOf(innerDateFormatted);\n }\n\n /**\n * Clears all selected dates.\n */\n clear() {\n this._context._unset = true;\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate: this.lastPicked,\n isClear: true,\n isValid: true,\n } as ChangeEvent);\n this._dates = [];\n }\n\n /**\n * Find the \"book end\" years given a `year` and a `factor`\n * @param factor e.g. 100 for decades\n * @param year e.g. 2021\n */\n static getStartEndYear(\n factor: number,\n year: number\n ): [number, number, number] {\n const step = factor / 10,\n startYear = Math.floor(year / factor) * factor,\n endYear = startYear + step * 9,\n focusValue = Math.floor(year / step) * step;\n return [startYear, endYear, focusValue];\n }\n\n /**\n * Do not use direectly. Attempts to either clear or set the `target` date at `index`.\n * If the `target` is null then the date will be cleared.\n * If multi-date is being used then it will be removed from the array.\n * If `target` is valid and multi-date is used then if `index` is\n * provided the date at that index will be replaced, otherwise it is appended.\n * @param target\n * @param index\n */\n _setValue(target?: DateTime, index?: number): void {\n const noIndex = typeof index === 'undefined',\n isClear = !target && noIndex;\n let oldDate = this._context._unset ? null : this._dates[index];\n if (!oldDate && !this._context._unset && noIndex && isClear) {\n oldDate = this.lastPicked;\n }\n\n if (target && oldDate?.isSame(target)) return;\n\n const updateInput = () => {\n if (!this._context._input) return;\n\n let newValue =\n target?.format(this._context._options.display.inputFormat) || '';\n if (this._context._options.multipleDates) {\n newValue = this._dates\n .map((d) => d.format(this._context._options.display.inputFormat))\n .join(this._context._options.multipleDatesSeparator);\n }\n if (this._context._input.value != newValue)\n this._context._input.value = newValue;\n };\n\n // case of calling setValue(null)\n if (!target) {\n if (\n !this._context._options.multipleDates ||\n this._dates.length === 1 ||\n isClear\n ) {\n this._context._unset = true;\n this._dates = [];\n } else {\n this._dates.splice(index, 1);\n }\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n\n updateInput();\n this._context._display._update('all');\n return;\n }\n\n index = index || 0;\n target = target.clone;\n\n // minute stepping is being used, force the minute to the closest value\n if (this._context._options.stepping !== 1) {\n target.minutes =\n Math.round(target.minutes / this._context._options.stepping) *\n this._context._options.stepping;\n target.seconds = 0;\n }\n\n if (this._context._validation.isValid(target)) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._unset = false;\n this._context._display._update('all');\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n return;\n }\n\n if (this._context._options.keepInvalid) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: false,\n } as ChangeEvent);\n }\n this._context._triggerEvent({\n type: Namespace.events.error,\n reason: Namespace.errorMessages.failedToSetInvalidDate,\n date: target,\n oldDate,\n } as FailEvent);\n }\n\n /**\n * Returns a format object based on the granularity of `unit`\n * @param unit\n */\n static getFormatByUnit(unit: Unit): object {\n switch (unit) {\n case 'date':\n return { dateStyle: 'short' };\n case 'month':\n return {\n month: 'numeric',\n year: 'numeric',\n };\n case 'year':\n return { year: 'numeric' };\n }\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { DateTime, Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\nimport Dates from '../../dates';\n\n/**\n * Creates and updates the grid for `year`\n */\nexport default class YearDisplay {\n private _context: TempusDominus;\n private _startYear: DateTime;\n private _endYear: DateTime;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.yearsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectYear);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update() {\n const [start, end] = Dates.getStartEndYear(\n 10,\n this._context._viewDate.year\n );\n this._startYear = this._context._viewDate.clone.manipulate(-1, Unit.year);\n this._endYear = this._context._viewDate.clone.manipulate(10, Unit.year);\n\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.yearsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.yearsContainer,\n `${this._startYear.year}-${this._endYear.year}`\n );\n\n this._context._validation.isValid(this._startYear, Unit.year)\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n this._context._validation.isValid(this._endYear, Unit.year)\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone\n .startOf(Unit.year)\n .manipulate(-1, Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectYear}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.year);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.year)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.year)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.year}`);\n containerClone.innerText = `${innerDate.year}`;\n\n innerDate.manipulate(1, Unit.year);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport Dates from '../../dates';\nimport { DateTime, Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class DecadeDisplay {\n private _context: TempusDominus;\n private _startDecade: DateTime;\n private _endDecade: DateTime;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker() {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.decadesContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectDecade);\n container.appendChild(div);\n }\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update() {\n const [start, end] = Dates.getStartEndYear(\n 100,\n this._context._viewDate.year\n );\n this._startDecade = this._context._viewDate.clone.startOf(Unit.year);\n this._startDecade.year = start;\n this._endDecade = this._context._viewDate.clone.startOf(Unit.year);\n this._endDecade.year = end;\n\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.decadesContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.decadesContainer,\n `${this._startDecade.year}-${this._endDecade.year}`\n );\n\n this._context._validation.isValid(this._startDecade, Unit.year)\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n this._context._validation.isValid(this._endDecade, Unit.year)\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n const pickedYears = this._context.dates.picked.map((x) => x.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectDecade}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n if (index === 0) {\n containerClone.classList.add(Namespace.css.old);\n if (this._startDecade.year - 10 < 0) {\n containerClone.textContent = ' ';\n previous.classList.add(Namespace.css.disabled);\n containerClone.classList.add(Namespace.css.disabled);\n containerClone.setAttribute('data-value', ``);\n return;\n } else {\n containerClone.innerText = `${this._startDecade.year - 10}`;\n containerClone.setAttribute(\n 'data-value',\n `${this._startDecade.year}`\n );\n return;\n }\n }\n\n let classes = [];\n classes.push(Namespace.css.decade);\n const startDecadeYear = this._startDecade.year;\n const endDecadeYear = this._startDecade.year + 9;\n\n if (\n !this._context._unset &&\n pickedYears.filter((x) => x >= startDecadeYear && x <= endDecadeYear)\n .length > 0\n ) {\n classes.push(Namespace.css.active);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute(\n 'data-value',\n `${this._startDecade.year}`\n );\n containerClone.innerText = `${this._startDecade.year}`;\n\n this._startDecade.manipulate(10, Unit.year);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates the clock display\n */\nexport default class TimeDisplay {\n private _context: TempusDominus;\n private _gridColumns = '';\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the clock display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.clockContainer);\n\n container.append(...this._grid());\n\n return container;\n }\n\n /**\n * Populates the various elements with in the clock display\n * like the current hour and if the manipulation icons are enabled.\n * @private\n */\n _update(): void {\n const timesDiv = (\n this._context._display.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0]\n );\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n timesDiv\n .querySelectorAll('.disabled')\n .forEach((element) => element.classList.remove(Namespace.css.disabled));\n\n if (this._context._options.display.components.hours) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.hours}]`\n ).innerText = this._context._options.display.components.useTwentyfourHour\n ? lastPicked.hoursFormatted\n : lastPicked.twelveHoursFormatted;\n }\n\n if (this._context._options.display.components.minutes) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.minutes}]`\n ).innerText = lastPicked.minutesFormatted;\n }\n\n if (this._context._options.display.components.seconds) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.seconds}]`\n ).innerText = lastPicked.secondsFormatted;\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n const toggle = timesDiv.querySelector(\n `[data-action=${ActionTypes.toggleMeridiem}]`\n );\n\n toggle.innerText = lastPicked.meridiem();\n\n if (\n !this._context._validation.isValid(\n lastPicked.clone.manipulate(\n lastPicked.hours >= 12 ? -12 : 12,\n Unit.hours\n )\n )\n ) {\n toggle.classList.add(Namespace.css.disabled);\n } else {\n toggle.classList.remove(Namespace.css.disabled);\n }\n }\n\n timesDiv.style.gridTemplateAreas = `\"${this._gridColumns}\"`;\n }\n\n /**\n * Creates the table for the clock display depending on what options are selected.\n * @private\n */\n private _grid(): HTMLElement[] {\n this._gridColumns = '';\n const top = [],\n middle = [],\n bottom = [],\n separator = document.createElement('div'),\n upIcon = this._context._display._iconTag(\n this._context._options.display.icons.up\n ),\n downIcon = this._context._display._iconTag(\n this._context._options.display.icons.down\n );\n\n separator.classList.add(Namespace.css.separator, Namespace.css.noHighlight);\n const separatorColon = separator.cloneNode(true);\n separatorColon.innerHTML = ':';\n\n const getSeparator = (colon = false): HTMLElement => {\n return colon\n ? separatorColon.cloneNode(true)\n : separator.cloneNode(true);\n };\n\n if (this._context._options.display.components.hours) {\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.incrementHours);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickHour\n );\n divElement.setAttribute('data-action', ActionTypes.showHours);\n divElement.setAttribute('data-time-component', Unit.hours);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.decrementHours);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n this._gridColumns += 'a';\n }\n\n if (this._context._options.display.components.minutes) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.hours) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.incrementMinutes);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickMinute\n );\n divElement.setAttribute('data-action', ActionTypes.showMinutes);\n divElement.setAttribute('data-time-component', Unit.minutes);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.decrementMinutes);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (this._context._options.display.components.seconds) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.minutes) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.incrementSeconds);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickSecond\n );\n divElement.setAttribute('data-action', ActionTypes.showSeconds);\n divElement.setAttribute('data-time-component', Unit.seconds);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.decrementSeconds);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n this._gridColumns += ' a';\n let divElement = getSeparator();\n top.push(divElement);\n\n let button = document.createElement('button');\n button.setAttribute(\n 'title',\n this._context._options.localization.toggleMeridiem\n );\n button.setAttribute('data-action', ActionTypes.toggleMeridiem);\n button.setAttribute('tabindex', '-1');\n button.classList.add(Namespace.css.toggleMeridiem);\n\n divElement = document.createElement('div');\n divElement.classList.add(Namespace.css.noHighlight);\n divElement.appendChild(button);\n middle.push(divElement);\n\n divElement = getSeparator();\n bottom.push(divElement);\n }\n\n this._gridColumns = this._gridColumns.trim();\n\n return [...top, ...middle, ...bottom];\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `hours`\n */\nexport default class HourDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.hourContainer);\n\n for (\n let i = 0;\n i <\n (this._context._options.display.components.useTwentyfourHour ? 24 : 12);\n i++\n ) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectHour);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.hourContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.date);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectHour}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.hour);\n\n if (!this._context._validation.isValid(innerDate, Unit.hours)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.hours}`);\n containerClone.innerText = this._context._options.display.components\n .useTwentyfourHour\n ? innerDate.hoursFormatted\n : innerDate.twelveHoursFormatted;\n innerDate.manipulate(1, Unit.hours);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `minutes`\n */\nexport default class MinuteDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.minuteContainer);\n\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n for (let i = 0; i < 60 / step; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMinute);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.minuteContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.hours);\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMinute}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.minute);\n\n if (!this._context._validation.isValid(innerDate, Unit.minutes)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.minutes}`);\n containerClone.innerText = innerDate.minutesFormatted;\n innerDate.manipulate(step, Unit.minutes);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class secondDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.secondContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectSecond);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.secondContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.minutes);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectSecond}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.second);\n\n if (!this._context._validation.isValid(innerDate, Unit.seconds)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.seconds}`);\n containerClone.innerText = innerDate.secondsFormatted;\n innerDate.manipulate(5, Unit.seconds);\n });\n }\n}\n","import DateDisplay from './calendar/date-display';\nimport MonthDisplay from './calendar/month-display';\nimport YearDisplay from './calendar/year-display';\nimport DecadeDisplay from './calendar/decade-display';\nimport TimeDisplay from './time/time-display';\nimport HourDisplay from './time/hour-display';\nimport MinuteDisplay from './time/minute-display';\nimport SecondDisplay from './time/second-display';\nimport { DateTime, Unit } from '../datetime';\nimport { DatePickerModes } from '../conts';\nimport { TempusDominus } from '../tempus-dominus';\nimport { ActionTypes } from '../actions';\nimport { createPopper } from '@popperjs/core';\nimport Namespace from '../namespace';\nimport { HideEvent } from '../event-types';\n\n/**\n * Main class for all things display related.\n */\nexport default class Display {\n private _context: TempusDominus;\n private _dateDisplay: DateDisplay;\n private _monthDisplay: MonthDisplay;\n private _yearDisplay: YearDisplay;\n private _decadeDisplay: DecadeDisplay;\n private _timeDisplay: TimeDisplay;\n private _widget: HTMLElement;\n private _hourDisplay: HourDisplay;\n private _minuteDisplay: MinuteDisplay;\n private _secondDisplay: SecondDisplay;\n private _popperInstance: any;\n private _isVisible = false;\n\n constructor(context: TempusDominus) {\n this._context = context;\n this._dateDisplay = new DateDisplay(context);\n this._monthDisplay = new MonthDisplay(context);\n this._yearDisplay = new YearDisplay(context);\n this._decadeDisplay = new DecadeDisplay(context);\n this._timeDisplay = new TimeDisplay(context);\n this._hourDisplay = new HourDisplay(context);\n this._minuteDisplay = new MinuteDisplay(context);\n this._secondDisplay = new SecondDisplay(context);\n\n this._widget = undefined;\n }\n\n /**\n * Returns the widget body or undefined\n * @private\n */\n get widget(): HTMLElement | undefined {\n return this._widget;\n }\n\n /**\n * Returns this visible state of the picker (shown)\n */\n get isVisible() {\n return this._isVisible;\n }\n\n /**\n * Updates the table for a particular unit. Used when an option as changed or\n * whenever the class list might need to be refreshed.\n * @param unit\n * @private\n */\n _update(unit: Unit | 'clock' | 'calendar' | 'all'): void {\n if (!this.widget) return;\n //todo do I want some kind of error catching or other guards here?\n switch (unit) {\n case Unit.seconds:\n this._secondDisplay._update();\n break;\n case Unit.minutes:\n this._minuteDisplay._update();\n break;\n case Unit.hours:\n this._hourDisplay._update();\n break;\n case Unit.date:\n this._dateDisplay._update();\n break;\n case Unit.month:\n this._monthDisplay._update();\n break;\n case Unit.year:\n this._yearDisplay._update();\n break;\n case 'clock':\n this._timeDisplay._update();\n this._update(Unit.hours);\n this._update(Unit.minutes);\n this._update(Unit.seconds);\n break;\n case 'calendar':\n this._update(Unit.date);\n this._update(Unit.year);\n this._update(Unit.month);\n this._decadeDisplay._update();\n this._updateCalendarHeader();\n break;\n case 'all':\n if (this._hasTime) {\n this._update('clock');\n }\n if (this._hasDate) {\n this._update('calendar');\n }\n }\n }\n\n /**\n * Shows the picker and creates a Popper instance if needed.\n * Add document click event to hide when clicking outside the picker.\n * @fires Events#show\n */\n show(): void {\n if (this.widget == undefined) {\n if (\n this._context._options.useCurrent &&\n !this._context._options.defaultDate &&\n !this._context._input?.value\n ) {\n //todo in the td4 branch a pr changed this to allow granularity\n const date = new DateTime().setLocale(\n this._context._options.localization.locale\n );\n if (!this._context._options.keepInvalid) {\n let tries = 0;\n let direction = 1;\n if (this._context._options.restrictions.maxDate?.isBefore(date)) {\n direction = -1;\n }\n while (!this._context._validation.isValid(date)) {\n date.manipulate(direction, Unit.date);\n if (tries > 31) break;\n tries++;\n }\n }\n this._context.dates._setValue(date);\n }\n\n if (this._context._options.defaultDate) {\n this._context.dates._setValue(this._context._options.defaultDate);\n }\n\n this._buildWidget();\n if (this._hasDate) {\n this._showMode();\n }\n\n if (!this._context._options.display.inline) {\n document.body.appendChild(this.widget);\n\n this._popperInstance = createPopper(\n this._context._element,\n this.widget,\n {\n modifiers: [\n /* {\n name: 'offset',\n options: {\n offset: [2, 8],\n },\n },*/\n { name: 'eventListeners', enabled: true },\n ],\n placement: 'bottom-start',\n }\n );\n } else {\n this._context._element.appendChild(this.widget);\n }\n\n if (this._context._options.display.viewMode == 'clock') {\n this._context._action.do(\n {\n currentTarget: this.widget.querySelector(\n `.${Namespace.css.timeContainer}`\n ),\n },\n ActionTypes.showClock\n );\n }\n\n this.widget\n .querySelectorAll('[data-action]')\n .forEach((element) =>\n element.addEventListener('click', this._actionsClickEvent)\n );\n\n // show the clock when using sideBySide\n if (this._context._options.display.sideBySide) {\n this._timeDisplay._update();\n (\n this.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0] as HTMLElement\n ).style.display = 'grid';\n }\n }\n\n this.widget.classList.add(Namespace.css.show);\n if (!this._context._options.display.inline) {\n this._popperInstance.update();\n document.addEventListener('click', this._documentClickEvent);\n }\n this._context._triggerEvent({ type: Namespace.events.show });\n this._isVisible = true;\n }\n\n /**\n * Changes the calendar view mode. E.g. month <-> year\n * @param direction -/+ number to move currentViewMode\n * @private\n */\n _showMode(direction?: number): void {\n if (!this.widget) {\n return;\n }\n if (direction) {\n const max = Math.max(\n this._context._minViewModeNumber,\n Math.min(3, this._context._currentViewMode + direction)\n );\n if (this._context._currentViewMode == max) return;\n this._context._currentViewMode = max;\n }\n\n this.widget\n .querySelectorAll(\n `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div`\n )\n .forEach((e: HTMLElement) => (e.style.display = 'none'));\n\n const datePickerMode = DatePickerModes[this._context._currentViewMode];\n let picker: HTMLElement = this.widget.querySelector(\n `.${datePickerMode.className}`\n );\n\n switch (datePickerMode.className) {\n case Namespace.css.decadesContainer:\n this._decadeDisplay._update();\n break;\n case Namespace.css.yearsContainer:\n this._yearDisplay._update();\n break;\n case Namespace.css.monthsContainer:\n this._monthDisplay._update();\n break;\n case Namespace.css.daysContainer:\n this._dateDisplay._update();\n break;\n }\n\n picker.style.display = 'grid';\n this._updateCalendarHeader();\n }\n\n _updateCalendarHeader() {\n const showing = [\n ...this.widget.querySelector(\n `.${Namespace.css.dateContainer} div[style*=\"display: grid\"]`\n ).classList,\n ].find((x) => x.startsWith(Namespace.css.dateContainer));\n\n const [previous, switcher, next] = this._context._display.widget\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switch (showing) {\n case Namespace.css.decadesContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousCentury\n );\n switcher.setAttribute('title', '');\n next.setAttribute(\n 'title',\n this._context._options.localization.nextCentury\n );\n break;\n case Namespace.css.yearsContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousDecade\n );\n switcher.setAttribute(\n 'title',\n this._context._options.localization.selectDecade\n );\n next.setAttribute(\n 'title',\n this._context._options.localization.nextDecade\n );\n break;\n case Namespace.css.monthsContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousYear\n );\n switcher.setAttribute(\n 'title',\n this._context._options.localization.selectYear\n );\n next.setAttribute(\n 'title',\n this._context._options.localization.nextYear\n );\n break;\n case Namespace.css.daysContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousMonth\n );\n switcher.setAttribute(\n 'title',\n this._context._options.localization.selectMonth\n );\n next.setAttribute(\n 'title',\n this._context._options.localization.nextMonth\n );\n switcher.innerText = this._context._viewDate.format({\n month: this._context._options.localization.dayViewHeaderFormat,\n });\n break;\n }\n switcher.innerText = switcher.getAttribute(showing);\n }\n\n /**\n * Hides the picker if needed.\n * Remove document click event to hide when clicking outside the picker.\n * @fires Events#hide\n */\n hide(): void {\n if (!this.widget || !this._isVisible) return;\n\n this.widget.classList.remove(Namespace.css.show);\n\n if (this._isVisible) {\n this._context._triggerEvent({\n type: Namespace.events.hide,\n date: this._context._unset\n ? null\n : this._context.dates.lastPicked\n ? this._context.dates.lastPicked.clone\n : void 0,\n } as HideEvent);\n this._isVisible = false;\n }\n\n document.removeEventListener('click', this._documentClickEvent);\n }\n\n /**\n * Toggles the picker's open state. Fires a show/hide event depending.\n */\n toggle() {\n return this._isVisible ? this.hide() : this.show();\n }\n\n /**\n * Removes document and data-action click listener and reset the widget\n * @private\n */\n _dispose() {\n document.removeEventListener('click', this._documentClickEvent);\n if (!this.widget) return;\n this.widget\n .querySelectorAll('[data-action]')\n .forEach((element) =>\n element.removeEventListener('click', this._actionsClickEvent)\n );\n this.widget.parentNode.removeChild(this.widget);\n this._widget = undefined;\n }\n\n /**\n * Builds the widgets html template.\n * @private\n */\n private _buildWidget(): HTMLElement {\n const template = document.createElement('div');\n template.classList.add(Namespace.css.widget);\n\n const dateView = document.createElement('div');\n dateView.classList.add(Namespace.css.dateContainer);\n dateView.append(\n this._headTemplate,\n this._decadeDisplay._picker,\n this._yearDisplay._picker,\n this._monthDisplay._picker,\n this._dateDisplay._picker\n );\n\n const timeView = document.createElement('div');\n timeView.classList.add(Namespace.css.timeContainer);\n timeView.appendChild(this._timeDisplay._picker);\n timeView.appendChild(this._hourDisplay._picker);\n timeView.appendChild(this._minuteDisplay._picker);\n timeView.appendChild(this._secondDisplay._picker);\n\n const toolbar = document.createElement('div');\n toolbar.classList.add(Namespace.css.toolbar);\n toolbar.append(...this._toolbar);\n\n if (this._context._options.display.inline) {\n template.classList.add(Namespace.css.inline);\n }\n\n if (this._context._options.display.calendarWeeks) {\n template.classList.add('calendarWeeks');\n }\n\n if (\n this._context._options.display.sideBySide &&\n this._hasDate &&\n this._hasTime\n ) {\n template.classList.add(Namespace.css.sideBySide);\n if (this._context._options.display.toolbarPlacement === 'top') {\n template.appendChild(toolbar);\n }\n const row = document.createElement('div');\n row.classList.add('td-row');\n dateView.classList.add('td-half');\n timeView.classList.add('td-half');\n\n row.appendChild(dateView);\n row.appendChild(timeView);\n template.appendChild(row);\n if (this._context._options.display.toolbarPlacement === 'bottom') {\n template.appendChild(toolbar);\n }\n this._widget = template;\n return;\n }\n\n if (this._context._options.display.toolbarPlacement === 'top') {\n template.appendChild(toolbar);\n }\n\n if (this._hasDate) {\n if (this._hasTime) {\n dateView.classList.add(Namespace.css.collapse);\n if (this._context._options.display.viewMode !== 'clock')\n dateView.classList.add(Namespace.css.show);\n }\n template.appendChild(dateView);\n }\n\n if (this._hasTime) {\n if (this._hasDate) {\n timeView.classList.add(Namespace.css.collapse);\n if (this._context._options.display.viewMode === 'clock')\n timeView.classList.add(Namespace.css.show);\n }\n template.appendChild(timeView);\n }\n\n if (this._context._options.display.toolbarPlacement === 'bottom') {\n template.appendChild(toolbar);\n }\n\n const arrow = document.createElement('div');\n arrow.classList.add('arrow');\n arrow.setAttribute('data-popper-arrow', '');\n template.appendChild(arrow);\n\n this._widget = template;\n }\n\n /**\n * Returns true if the hours, minutes, or seconds component is turned on\n */\n get _hasTime(): boolean {\n return (\n this._context._options.display.components.clock &&\n (this._context._options.display.components.hours ||\n this._context._options.display.components.minutes ||\n this._context._options.display.components.seconds)\n );\n }\n\n /**\n * Returns true if the year, month, or date component is turned on\n */\n get _hasDate(): boolean {\n return (\n this._context._options.display.components.calendar &&\n (this._context._options.display.components.year ||\n this._context._options.display.components.month ||\n this._context._options.display.components.date)\n );\n }\n\n /**\n * Get the toolbar html based on options like buttons.today\n * @private\n */\n get _toolbar(): HTMLElement[] {\n const toolbar = [];\n\n if (this._context._options.display.buttons.today) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.today);\n div.setAttribute('title', this._context._options.localization.today);\n\n div.appendChild(\n this._iconTag(this._context._options.display.icons.today)\n );\n toolbar.push(div);\n }\n if (\n !this._context._options.display.sideBySide &&\n this._hasDate &&\n this._hasTime\n ) {\n let title, icon;\n if (this._context._options.display.viewMode === 'clock') {\n title = this._context._options.localization.selectDate;\n icon = this._context._options.display.icons.date;\n } else {\n title = this._context._options.localization.selectTime;\n icon = this._context._options.display.icons.time;\n }\n\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.togglePicker);\n div.setAttribute('title', title);\n\n div.appendChild(this._iconTag(icon));\n toolbar.push(div);\n }\n if (this._context._options.display.buttons.clear) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.clear);\n div.setAttribute('title', this._context._options.localization.clear);\n\n div.appendChild(\n this._iconTag(this._context._options.display.icons.clear)\n );\n toolbar.push(div);\n }\n if (this._context._options.display.buttons.close) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.close);\n div.setAttribute('title', this._context._options.localization.close);\n\n div.appendChild(\n this._iconTag(this._context._options.display.icons.close)\n );\n toolbar.push(div);\n }\n\n return toolbar;\n }\n\n /***\n * Builds the base header template with next and previous icons\n * @private\n */\n get _headTemplate(): HTMLElement {\n const calendarHeader = document.createElement('div');\n calendarHeader.classList.add(Namespace.css.calendarHeader);\n\n const previous = document.createElement('div');\n previous.classList.add(Namespace.css.previous);\n previous.setAttribute('data-action', ActionTypes.previous);\n previous.appendChild(\n this._iconTag(this._context._options.display.icons.previous)\n );\n\n const switcher = document.createElement('div');\n switcher.classList.add(Namespace.css.switch);\n switcher.setAttribute('data-action', ActionTypes.pickerSwitch);\n\n const next = document.createElement('div');\n next.classList.add(Namespace.css.next);\n next.setAttribute('data-action', ActionTypes.next);\n next.appendChild(this._iconTag(this._context._options.display.icons.next));\n\n calendarHeader.append(previous, switcher, next);\n return calendarHeader;\n }\n\n /**\n * Builds an icon tag as either an ``\n * or with icons.type is `sprites` then an svg tag instead\n * @param iconClass\n * @private\n */\n _iconTag(iconClass: string): HTMLElement {\n if (this._context._options.display.icons.type === 'sprites') {\n const svg = document.createElement('svg');\n svg.innerHTML = ``;\n return svg;\n }\n const icon = document.createElement('i');\n DOMTokenList.prototype.add.apply(icon.classList, iconClass.split(' '));\n return icon;\n }\n\n /**\n * A document click event to hide the widget if click is outside\n * @private\n * @param e MouseEvent\n */\n private _documentClickEvent = (e: MouseEvent) => {\n if (\n this._isVisible &&\n !e.composedPath().includes(this.widget) && // click inside the widget\n !e.composedPath()?.includes(this._context._element) && // click on the element\n (!this._context._options.display.keepOpen ||\n !this._context._options.debug ||\n !(window as any).debug)\n ) {\n this.hide();\n }\n };\n\n /**\n * Click event for any action like selecting a date\n * @param e MouseEvent\n * @private\n */\n private _actionsClickEvent = (e: MouseEvent) => {\n this._context._action.do(e);\n };\n\n /**\n * Causes the widget to get rebuilt on next show. If the picker is already open\n * then hide and reshow it.\n * @private\n */\n _rebuild() {\n const wasVisible = this._isVisible;\n if (wasVisible) this.hide();\n this._dispose();\n if (wasVisible) {\n this.show();\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Dates from './dates';\n\n/**\n * Main class for date validation rules based on the options provided.\n */\nexport default class Validation {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Checks to see if the target date is valid based on the rules provided in the options.\n * Granularity can be provide to chek portions of the date instead of the whole.\n * @param targetDate\n * @param granularity\n */\n isValid(targetDate: DateTime, granularity?: Unit): boolean {\n if (\n this._context._options.restrictions.disabledDates.length > 0 &&\n this._isInDisabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledDates.length > 0 &&\n !this._isInEnabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.daysOfWeekDisabled?.length > 0 &&\n this._context._options.restrictions.daysOfWeekDisabled.indexOf(\n targetDate.weekDay\n ) !== -1\n ) {\n return false;\n }\n\n if (\n this._context._options.restrictions.minDate &&\n targetDate.isBefore(\n this._context._options.restrictions.minDate,\n granularity\n )\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.maxDate &&\n targetDate.isAfter(\n this._context._options.restrictions.maxDate,\n granularity\n )\n ) {\n return false;\n }\n\n if (\n granularity === Unit.hours ||\n granularity === Unit.minutes ||\n granularity === Unit.seconds\n ) {\n if (\n this._context._options.restrictions.disabledHours.length > 0 &&\n this._isInDisabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledHours.length > 0 &&\n !this._isInEnabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.disabledTimeIntervals.length > 0\n ) {\n for (\n let i = 0;\n i < this._context._options.restrictions.disabledTimeIntervals.length;\n i++\n ) {\n if (\n targetDate.isBetween(\n this._context._options.restrictions.disabledTimeIntervals[i].from,\n this._context._options.restrictions.disabledTimeIntervals[i].to\n )\n )\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Checks to see if the disabledDates option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInDisabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledDates ||\n this._context._options.restrictions.disabledDates.length === 0\n )\n return false;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.disabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the enabledDates option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInEnabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledDates ||\n this._context._options.restrictions.enabledDates.length === 0\n )\n return true;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.enabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the disabledHours option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInDisabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledHours ||\n this._context._options.restrictions.disabledHours.length === 0\n )\n return false;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.disabledHours.find(\n (x) => x === formattedDate\n );\n }\n\n /**\n * Checks to see if the enabledHours option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInEnabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledHours ||\n this._context._options.restrictions.enabledHours.length === 0\n )\n return true;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.enabledHours.find(\n (x) => x === formattedDate\n );\n }\n}\n","import Display from './display/index';\nimport Validation from './validation';\nimport Dates from './dates';\nimport Actions, { ActionTypes } from './actions';\nimport { DatePickerModes, DefaultOptions } from './conts';\nimport { DateTime, DateTimeFormatOptions, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options, { OptionConverter } from './options';\nimport {\n BaseEvent,\n ChangeEvent,\n ViewUpdateEvent,\n FailEvent,\n} from './event-types';\n\n/**\n * A robust and powerful date/time picker component.\n */\nclass TempusDominus {\n dates: Dates;\n\n _options: Options;\n _currentViewMode = 0;\n _subscribers: { [key: string]: ((event: any) => {})[] } = {};\n _element: HTMLElement;\n _input: HTMLInputElement;\n _unset: boolean;\n _minViewModeNumber = 0;\n _display: Display;\n _validation: Validation;\n _action: Actions;\n private _isDisabled = false;\n private _notifyChangeEventContext = 0;\n private _toggle: HTMLElement;\n private _currentPromptTimeTimeout: any;\n\n constructor(element: HTMLElement, options: Options = {} as Options) {\n if (!element) {\n Namespace.errorMessages.mustProvideElement;\n }\n this._element = element;\n this._options = this._initializeOptions(options, DefaultOptions, true);\n this._viewDate.setLocale(this._options.localization.locale);\n this._unset = true;\n\n this._display = new Display(this);\n this._validation = new Validation(this);\n this.dates = new Dates(this);\n this._action = new Actions(this);\n\n this._initializeInput();\n this._initializeToggle();\n\n if (this._options.display.inline) this._display.show();\n }\n\n _viewDate = new DateTime();\n\n get viewDate() {\n return this._viewDate;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Update the picker options. If `reset` is provide `options` will be merged with DefaultOptions instead.\n * @param options\n * @param reset\n * @public\n */\n updateOptions(options, reset = false): void {\n if (reset) this._options = this._initializeOptions(options, DefaultOptions);\n else this._options = this._initializeOptions(options, this._options);\n this._display._rebuild();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Toggles the picker open or closed. If the picker is disabled, nothing will happen.\n * @public\n */\n toggle(): void {\n if (this._isDisabled) return;\n this._display.toggle();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Shows the picker unless the picker is disabled.\n * @public\n */\n show(): void {\n if (this._isDisabled) return;\n this._display.show();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker unless the picker is disabled.\n * @public\n */\n hide(): void {\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Disables the picker and the target input field.\n * @public\n */\n disable(): void {\n this._isDisabled = true;\n // todo this might be undesired. If a dev disables the input field to\n // only allow using the picker, this will break that.\n this._input?.setAttribute('disabled', 'disabled');\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Enables the picker and the target input field.\n * @public\n */\n enable(): void {\n this._isDisabled = false;\n this._input?.removeAttribute('disabled');\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Clears all the selected dates\n * @public\n */\n clear(): void {\n this.dates.clear();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Allows for a direct subscription to picker events, without having to use addEventListener on the element.\n * @param eventTypes See Namespace.Events\n * @param callbacks Function to call when event is triggered\n * @public\n */\n subscribe(\n eventTypes: string | string[],\n callbacks: (event: any) => void | ((event: any) => void)[]\n ): { unsubscribe: void }[] {\n if (typeof eventTypes === 'string') {\n eventTypes = [eventTypes];\n }\n let callBackArray = [];\n if (!Array.isArray(callbacks)) {\n callBackArray = [callbacks];\n } else {\n callBackArray = callbacks;\n }\n\n if (eventTypes.length !== callBackArray.length) {\n Namespace.errorMessages.subscribeMismatch;\n }\n\n const returnArray = [];\n\n for (let i = 0; i < eventTypes.length; i++) {\n const eventType = eventTypes[i];\n if (!Array.isArray(this._subscribers[eventType])) {\n this._subscribers[eventType] = [];\n }\n\n this._subscribers[eventType].push(callBackArray[i]);\n\n returnArray.push({\n unsubscribe: this._unsubscribe.bind(\n this,\n eventType,\n this._subscribers[eventType].length - 1\n ),\n });\n\n if (eventTypes.length === 1) {\n return returnArray[0];\n }\n }\n\n return returnArray;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker and removes event listeners\n */\n dispose() {\n this._display.hide();\n // this will clear the document click event listener\n this._display._dispose();\n this._input?.removeEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input?.removeEventListener('click', this._toggleClickEvent);\n }\n this._toggle.removeEventListener('click', this._toggleClickEvent);\n this._subscribers = {};\n }\n\n /**\n * Triggers an event like ChangeEvent when the picker has updated the value\n * of a selected date.\n * @param event Accepts a BaseEvent object.\n * @private\n */\n _triggerEvent(event: BaseEvent) {\n // checking hasOwnProperty because the BasicEvent also falls through here otherwise\n if ((event as ChangeEvent) && event.hasOwnProperty('date')) {\n const { date, oldDate, isClear } = event as ChangeEvent;\n // this was to prevent a max call stack error\n // https://github.com/tempusdominus/core/commit/15a280507f5277b31b0b3319ab1edc7c19a000fb\n // todo see if this is still needed or if there's a cleaner way\n this._notifyChangeEventContext++;\n if (\n (date && oldDate && date.isSame(oldDate)) ||\n (!isClear && !date && !oldDate) ||\n this._notifyChangeEventContext > 1\n ) {\n this._notifyChangeEventContext = 0;\n return;\n }\n this._handleAfterChangeEvent(event as ChangeEvent);\n }\n\n this._element.dispatchEvent(\n new CustomEvent(event.type, { detail: event as any })\n );\n\n if ((window as any).jQuery) {\n const $ = (window as any).jQuery;\n $(this._element).trigger(event);\n }\n\n const publish = () => {\n // return if event is not subscribed\n if (!Array.isArray(this._subscribers[event.type])) {\n return;\n }\n\n // Trigger callback for each subscriber\n this._subscribers[event.type].forEach((callback) => {\n callback(event);\n });\n };\n\n publish();\n\n this._notifyChangeEventContext = 0;\n }\n\n /**\n * Fires a ViewUpdate event when, for example, the month view is changed.\n * @param {Unit} unit\n * @private\n */\n _viewUpdate(unit: Unit) {\n this._triggerEvent({\n type: Namespace.events.update,\n change: unit,\n viewDate: this._viewDate.clone,\n } as ViewUpdateEvent);\n }\n\n private _unsubscribe(eventName, index) {\n this._subscribers[eventName].splice(index, 1);\n }\n\n /**\n * Merges two Option objects together and validates options type\n * @param config new Options\n * @param mergeTo Options to merge into\n * @param includeDataset When true, the elements data-td attributes will be included in the\n * @private\n */\n private _initializeOptions(\n config: Options,\n mergeTo: Options,\n includeDataset = false\n ): Options {\n config = OptionConverter._mergeOptions(config, mergeTo);\n if (includeDataset)\n config = OptionConverter._dataToOptions(this._element, config);\n\n OptionConverter._validateConflcits(config);\n\n config.viewDate = config.viewDate.setLocale(config.localization.locale);\n\n if (!this._viewDate.isSame(config.viewDate)) {\n this._viewDate = config.viewDate;\n }\n\n /**\n * Sets the minimum view allowed by the picker. For example the case of only\n * allowing year and month to be selected but not date.\n */\n if (config.display.components.year) {\n this._minViewModeNumber = 2;\n }\n if (config.display.components.month) {\n this._minViewModeNumber = 1;\n }\n if (config.display.components.date) {\n this._minViewModeNumber = 0;\n }\n\n this._currentViewMode = Math.max(\n this._minViewModeNumber,\n this._currentViewMode\n );\n\n // Update view mode if needed\n if (\n DatePickerModes[this._currentViewMode].name !== config.display.viewMode\n ) {\n this._currentViewMode = Math.max(\n DatePickerModes.findIndex((x) => x.name === config.display.viewMode),\n this._minViewModeNumber\n );\n }\n\n // defaults the input format based on the components enabled\n if (config.display.inputFormat === undefined) {\n const components = config.display.components;\n config.display.inputFormat = {\n year: components.calendar && components.year ? 'numeric' : undefined,\n month: components.calendar && components.month ? '2-digit' : undefined,\n day: components.calendar && components.date ? '2-digit' : undefined,\n hour:\n components.clock && components.hours\n ? components.useTwentyfourHour\n ? '2-digit'\n : 'numeric'\n : undefined,\n minute: components.clock && components.minutes ? '2-digit' : undefined,\n second: components.clock && components.seconds ? '2-digit' : undefined,\n hour12: !components.useTwentyfourHour,\n };\n }\n\n if (this._display?.isVisible) {\n this._display._update('all');\n }\n\n return config;\n }\n\n /**\n * Checks if an input field is being used, attempts to locate one and sets an\n * event listener if found.\n * @private\n */\n private _initializeInput() {\n if (this._element.tagName == 'INPUT') {\n this._input = this._element as HTMLInputElement;\n } else {\n let query = this._element.dataset.tdTargetInput;\n if (query == undefined || query == 'nearest') {\n this._input = this._element.querySelector('input');\n } else {\n this._input = this._element.querySelector(query);\n }\n }\n\n if (!this._input) return;\n\n this._input.addEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input.addEventListener('click', this._toggleClickEvent);\n }\n\n if (this._input.value) {\n this._inputChangeEvent();\n }\n }\n\n /**\n * Attempts to locate a toggle for the picker and sets an event listener\n * @private\n */\n private _initializeToggle() {\n if (this._options.display.inline) return;\n let query = this._element.dataset.tdTargetToggle;\n if (query == 'nearest') {\n query = '[data-td-toggle=\"datetimepicker\"]';\n }\n this._toggle =\n query == undefined ? this._element : this._element.querySelector(query);\n this._toggle.addEventListener('click', this._toggleClickEvent);\n }\n\n /**\n * If the option is enabled this will render the clock view after a date pick.\n * @param e change event\n * @private\n */\n private _handleAfterChangeEvent(e: ChangeEvent) {\n if (\n // options is disabled\n !this._options.promptTimeOnDateChange ||\n this._options.display.inline ||\n this._options.display.sideBySide ||\n // time is disabled\n !this._display._hasTime ||\n // clock component is already showing\n this._display.widget\n ?.getElementsByClassName(Namespace.css.show)[0]\n .classList.contains(Namespace.css.timeContainer)\n )\n return;\n\n // First time ever. If useCurrent option is set to true (default), do nothing\n // because the first date is selected automatically.\n // or date didn't change (time did) or date changed because time did.\n if (\n (!e.oldDate && this._options.useCurrent) ||\n (e.oldDate && e.date?.isSame(e.oldDate))\n ) {\n return;\n }\n\n clearTimeout(this._currentPromptTimeTimeout);\n this._currentPromptTimeTimeout = setTimeout(() => {\n if (this._display.widget) {\n this._action.do(\n {\n currentTarget: this._display.widget.querySelector(\n `.${Namespace.css.switch} div`\n ),\n },\n ActionTypes.togglePicker\n );\n }\n }, this._options.promptTimeOnDateChangeTransitionDelay);\n }\n\n /**\n * Event for when the input field changes. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _inputChangeEvent = () => {\n const value = this._input.value;\n if (this._options.multipleDates) {\n try {\n const valueSplit = value.split(this._options.multipleDatesSeparator);\n for (let i = 0; i < valueSplit.length; i++) {\n this.dates.set(valueSplit[i], i, 'input');\n }\n } catch {\n console.warn(\n 'TD: Something went wrong trying to set the multidate values from the input field.'\n );\n }\n } else {\n this.dates.set(value, 0, 'input');\n }\n };\n\n /**\n * Event for when the toggle is clicked. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _toggleClickEvent = () => {\n this.toggle();\n };\n}\n\nexport {\n TempusDominus,\n Namespace,\n DefaultOptions,\n DateTime,\n Options,\n Unit,\n DateTimeFormatOptions,\n};\n"],"names":["SecondDisplay"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tempus-dominus.esm.js","sources":["../../src/js/datetime.ts","../../src/js/errors.ts","../../src/js/namespace.ts","../../src/js/conts.ts","../../src/js/display/collapse.ts","../../src/js/actions.ts","../../src/js/display/calendar/date-display.ts","../../src/js/display/calendar/month-display.ts","../../src/js/options.ts","../../src/js/dates.ts","../../src/js/display/calendar/year-display.ts","../../src/js/display/calendar/decade-display.ts","../../src/js/display/time/time-display.ts","../../src/js/display/time/hour-display.ts","../../src/js/display/time/minute-display.ts","../../src/js/display/time/second-display.ts","../../src/js/display/index.ts","../../src/js/validation.ts","../../src/js/tempus-dominus.ts"],"sourcesContent":["export enum Unit {\n seconds = 'seconds',\n minutes = 'minutes',\n hours = 'hours',\n date = 'date',\n month = 'month',\n year = 'year',\n}\n\nexport interface DateTimeFormatOptions extends Intl.DateTimeFormatOptions {\n timeStyle?: 'short' | 'medium' | 'long';\n dateStyle?: 'short' | 'medium' | 'long' | 'full';\n}\n\n/**\n * For the most part this object behaves exactly the same way\n * as the native Date object with a little extra spice.\n */\nexport class DateTime extends Date {\n /**\n * Used with Intl.DateTimeFormat\n */\n locale = 'default';\n\n /**\n * Chainable way to set the {@link locale}\n * @param value\n */\n setLocale(value: string): this {\n this.locale = value;\n return this;\n }\n\n /**\n * Converts a plain JS date object to a DateTime object.\n * Doing this allows access to format, etc.\n * @param date\n */\n static convert(date: Date): DateTime {\n if (!date) throw `A date is required`;\n return new DateTime(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n );\n }\n\n /**\n * Native date manipulations are not pure functions. This function creates a duplicate of the DateTime object.\n */\n get clone() {\n return new DateTime(\n this.year,\n this.month,\n this.date,\n this.hours,\n this.minutes,\n this.seconds,\n this.getMilliseconds()\n ).setLocale(this.locale);\n }\n\n /**\n * Sets the current date to the start of the {@link unit} provided\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).startOf('month')\n * would return April 1, 2021, 12:00:00.000 AM (midnight)\n * @param unit\n */\n startOf(unit: Unit | 'weekDay'): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n switch (unit) {\n case 'seconds':\n this.setMilliseconds(0);\n break;\n case 'minutes':\n this.setSeconds(0, 0);\n break;\n case 'hours':\n this.setMinutes(0, 0, 0);\n break;\n case 'date':\n this.setHours(0, 0, 0, 0);\n break;\n case 'weekDay':\n this.startOf(Unit.date);\n this.manipulate(0 - this.weekDay, Unit.date);\n break;\n case 'month':\n this.startOf(Unit.date);\n this.setDate(1);\n break;\n case 'year':\n this.startOf(Unit.date);\n this.setMonth(0, 1);\n break;\n }\n return this;\n }\n\n /**\n * Sets the current date to the end of the {@link unit} provided\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).endOf('month')\n * would return April 30, 2021, 11:59:59.999 PM\n * @param unit\n */\n endOf(unit: Unit | 'weekDay'): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n switch (unit) {\n case 'seconds':\n this.setMilliseconds(999);\n break;\n case 'minutes':\n this.setSeconds(59, 999);\n break;\n case 'hours':\n this.setMinutes(59, 59, 999);\n break;\n case 'date':\n this.setHours(23, 59, 59, 999);\n break;\n case 'weekDay':\n this.startOf(Unit.date);\n this.manipulate(6 - this.weekDay, Unit.date);\n break;\n case 'month':\n this.endOf(Unit.date);\n this.manipulate(1, Unit.month);\n this.setDate(0);\n break;\n case 'year':\n this.endOf(Unit.date);\n this.manipulate(1, Unit.year);\n this.setDate(0);\n break;\n }\n return this;\n }\n\n /**\n * Change a {@link unit} value. Value can be positive or negative\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).manipulate(1, 'month')\n * would return May 30, 2021, 11:45:32.984 AM\n * @param value A positive or negative number\n * @param unit\n */\n manipulate(value: number, unit: Unit): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n this[unit] += value;\n return this;\n }\n\n /**\n * Returns a string format.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat\n * for valid templates and locale objects\n * @param template An object. Uses browser defaults otherwise.\n * @param locale Can be a string or an array of strings. Uses browser defaults otherwise.\n */\n format(template: DateTimeFormatOptions, locale = this.locale): string {\n return new Intl.DateTimeFormat(locale, template).format(this);\n }\n\n /**\n * Return true if {@link compare} is before this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isBefore(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() < compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n return (\n this.clone.startOf(unit).valueOf() < compare.clone.startOf(unit).valueOf()\n );\n }\n\n /**\n * Return true if {@link compare} is after this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isAfter(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() > compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n return (\n this.clone.startOf(unit).valueOf() > compare.clone.startOf(unit).valueOf()\n );\n }\n\n /**\n * Return true if {@link compare} is same this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isSame(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() === compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n compare = DateTime.convert(compare);\n return (\n this.clone.startOf(unit).valueOf() === compare.startOf(unit).valueOf()\n );\n }\n\n /**\n * Check if this is between two other DateTimes, optionally looking at unit scale. The match is exclusive.\n * @param left\n * @param right\n * @param unit.\n * @param inclusivity. A [ indicates inclusion of a value. A ( indicates exclusion.\n * If the inclusivity parameter is used, both indicators must be passed.\n */\n isBetween(\n left: DateTime,\n right: DateTime,\n unit?: Unit,\n inclusivity: '()' | '[]' | '(]' | '[)' = '()'\n ): boolean {\n if (unit && this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n const leftInclusivity = inclusivity[0] === '(';\n const rightInclusivity = inclusivity[1] === ')';\n\n return (\n ((leftInclusivity\n ? this.isAfter(left, unit)\n : !this.isBefore(left, unit)) &&\n (rightInclusivity\n ? this.isBefore(right, unit)\n : !this.isAfter(right, unit))) ||\n ((leftInclusivity\n ? this.isBefore(left, unit)\n : !this.isAfter(left, unit)) &&\n (rightInclusivity\n ? this.isAfter(right, unit)\n : !this.isBefore(right, unit)))\n );\n }\n\n /**\n * Returns flattened object of the date. Does not include literals\n * @param locale\n * @param template\n */\n parts(\n locale = this.locale,\n template: any = { dateStyle: 'full', timeStyle: 'long' }\n ) {\n const parts = {};\n new Intl.DateTimeFormat(locale, template)\n .formatToParts(this)\n .filter((x) => x.type !== 'literal')\n .forEach((x) => (parts[x.type] = x.value));\n return parts;\n }\n\n /**\n * Shortcut to Date.getSeconds()\n */\n get seconds(): number {\n return this.getSeconds();\n }\n\n /**\n * Shortcut to Date.setSeconds()\n */\n set seconds(value: number) {\n this.setSeconds(value);\n }\n\n /**\n * Returns two digit hours\n */\n get secondsFormatted(): string {\n return this.seconds < 10 ? `0${this.seconds}` : `${this.seconds}`;\n }\n\n /**\n * Shortcut to Date.getMinutes()\n */\n get minutes(): number {\n return this.getMinutes();\n }\n\n /**\n * Shortcut to Date.setMinutes()\n */\n set minutes(value: number) {\n this.setMinutes(value);\n }\n\n /**\n * Returns two digit hours\n */\n get minutesFormatted(): string {\n return this.minutes < 10 ? `0${this.minutes}` : `${this.minutes}`;\n }\n\n /**\n * Shortcut to Date.getHours()\n */\n get hours(): number {\n return this.getHours();\n }\n\n /**\n * Shortcut to Date.setHours()\n */\n set hours(value: number) {\n this.setHours(value);\n }\n\n /**\n * Returns two digit hours\n */\n get hoursFormatted(): string {\n return this.hours < 10 ? `0${this.hours}` : `${this.hours}`;\n }\n\n /**\n * Returns two digit hours but in twelve hour mode e.g. 13 -> 1\n */\n get twelveHoursFormatted(): string {\n let hour = this.hours;\n if (hour > 12) hour = hour - 12;\n if (hour === 0) hour = 12;\n return hour < 10 ? `0${hour}` : `${hour}`;\n }\n\n /**\n * Get the meridiem of the date. E.g. AM or PM.\n * If the {@link locale} provides a \"dayPeriod\" then this will be returned,\n * otherwise it will return AM or PM.\n * @param locale\n */\n meridiem(locale: string = this.locale): string {\n return new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n hour12: true,\n } as any)\n .formatToParts(this)\n .find((p) => p.type === 'dayPeriod')?.value;\n }\n\n /**\n * Shortcut to Date.getDate()\n */\n get date(): number {\n return this.getDate();\n }\n\n /**\n * Shortcut to Date.setDate()\n */\n set date(value: number) {\n this.setDate(value);\n }\n\n /**\n * Return two digit date\n */\n get dateFormatted(): string {\n return this.date < 10 ? `0${this.date}` : `${this.date}`;\n }\n\n // https://github.com/you-dont-need/You-Dont-Need-Momentjs#week-of-year\n /**\n * Gets the week of the year\n */\n get week(): number {\n const startOfYear = new Date(this.year, 0, 1);\n startOfYear.setDate(\n startOfYear.getDate() + (1 - (startOfYear.getDay() % 7))\n );\n return Math.round((this.valueOf() - startOfYear.valueOf()) / 604800000) + 1;\n }\n\n /**\n * Shortcut to Date.getDay()\n */\n get weekDay(): number {\n return this.getDay();\n }\n\n /**\n * Shortcut to Date.getMonth()\n */\n get month(): number {\n return this.getMonth();\n }\n\n /**\n * Shortcut to Date.setMonth()\n */\n set month(value: number) {\n this.setMonth(value);\n }\n\n /**\n * Return two digit, human expected month. E.g. January = 1, December = 12\n */\n get monthFormatted(): string {\n return this.month + 1 < 10 ? `0${this.month}` : `${this.month}`;\n }\n\n /**\n * Shortcut to Date.getFullYear()\n */\n get year(): number {\n return this.getFullYear();\n }\n\n /**\n * Shortcut to Date.setFullYear()\n */\n set year(value: number) {\n this.setFullYear(value);\n }\n}\n","import Namespace from './namespace';\n\nexport class TdError extends Error {\n code: number;\n}\n\nexport class ErrorMessages {\n private base = 'TD:';\n\n //#region out to console\n\n /**\n * Throws an error indicating that a key in the options object is invalid.\n * @param optionName\n */\n unexpectedOption(optionName: string) {\n const error = new TdError(\n `${this.base} Unexpected option: ${optionName} does not match a known option.`\n );\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error indicating that one more keys in the options object is invalid.\n * @param optionName\n */\n unexpectedOptions(optionName: string[]) {\n const error = new TdError(`${this.base}: ${optionName.join(', ')}`);\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error when an option is provide an unsupported value.\n * For example a value of 'cheese' for toolbarPlacement which only supports\n * 'top', 'bottom', 'default'.\n * @param optionName\n * @param badValue\n * @param validOptions\n */\n unexpectedOptionValue(\n optionName: string,\n badValue: string,\n validOptions: string[]\n ) {\n const error = new TdError(\n `${\n this.base\n } Unexpected option value: ${optionName} does not accept a value of \"${badValue}\". Valid values are: ${validOptions.join(\n ', '\n )}`\n );\n error.code = 2;\n throw error;\n }\n\n /**\n * Throws an error when an option value is the wrong type.\n * For example a string value was provided to multipleDates which only\n * supports true or false.\n * @param optionName\n * @param badType\n * @param expectedType\n */\n typeMismatch(optionName: string, badType: string, expectedType: string) {\n const error = new TdError(\n `${this.base} Mismatch types: ${optionName} has a type of ${badType} instead of the required ${expectedType}`\n );\n error.code = 3;\n throw error;\n }\n\n /**\n * Throws an error when an option value is outside of the expected range.\n * For example restrictions.daysOfWeekDisabled excepts a value between 0 and 6.\n * @param optionName\n * @param lower\n * @param upper\n */\n numbersOutOfRage(optionName: string, lower: number, upper: number) {\n const error = new TdError(\n `${this.base} ${optionName} expected an array of number between ${lower} and ${upper}.`\n );\n error.code = 4;\n throw error;\n }\n\n /**\n * Throws an error when a value for a date options couldn't be parsed. Either\n * the option was an invalide string or an invalid Date object.\n * @param optionName\n * @param date\n * @param soft If true, logs a warning instead of an error.\n */\n failedToParseDate(optionName: string, date: any, soft = false) {\n const error = new TdError(\n `${this.base} Could not correctly parse \"${date}\" to a date for ${optionName}.`\n );\n error.code = 5;\n if (!soft) throw error;\n console.warn(error);\n }\n\n /**\n * Throws when an element to attach to was not provided in the constructor.\n */\n mustProvideElement() {\n const error = new TdError(`${this.base} No element was provided.`);\n error.code = 6;\n throw error;\n }\n\n /**\n * Throws if providing an array for the events to subscribe method doesn't have\n * the same number of callbacks. E.g., subscribe([1,2], [1])\n */\n subscribeMismatch() {\n const error = new TdError(\n `${this.base} The subscribed events does not match the number of callbacks`\n );\n error.code = 7;\n throw error;\n }\n\n /**\n * Throws if the configuration has conflicting rules e.g. minDate is after maxDate\n */\n conflictingConfiguration(message?: string) {\n const error = new TdError(\n `${this.base} A configuration value conflicts with another rule. ${message}`\n );\n error.code = 8;\n throw error;\n }\n\n /**\n * Logs a warning if a date option value is provided as a string, instead of\n * a date/datetime object.\n */\n dateString() {\n console.warn(\n `${this.base} Using a string for date options is not recommended unless you specify an ISO string.`\n );\n }\n\n //#endregion\n\n //#region used with notify.error\n\n /**\n * Used with an Error Event type if the user selects a date that\n * fails restriction validation.\n */\n failedToSetInvalidDate = 'Failed to set invalid date';\n\n /**\n * Used with an Error Event type when a user changes the value of the\n * input field directly, and does not provide a valid date.\n */\n failedToParseInput = 'Failed parse input field';\n\n //#endregion\n}\n","import { ErrorMessages } from './errors';\n// this is not the way I want this to stay but nested classes seemed to blown up once its compiled.\nconst NAME = 'tempus-dominus',\n version = '6.0.0-alpha1',\n dataKey = 'td';\n\n/**\n * Events\n */\nclass Events {\n key = `.${dataKey}`;\n\n /**\n * Change event. Fired when the user selects a date.\n * See also EventTypes.ChangeEvent\n */\n change = `change${this.key}`;\n\n /**\n * Emit when the view changes for example from month view to the year view.\n * See also EventTypes.ViewUpdateEvent\n */\n update = `update${this.key}`;\n\n /**\n * Emits when a selected date or value from the input field fails to meet the provided validation rules.\n * See also EventTypes.FailEvent\n */\n error = `error${this.key}`;\n\n /**\n * Show event\n * @event Events#show\n */\n show = `show${this.key}`;\n\n /**\n * Hide event\n * @event Events#hide\n */\n hide = `hide${this.key}`;\n\n // blur and focus are used in the jQuery provider but are otherwise unused.\n // keyup/down will be used later for keybinding options\n\n blur = `blur${this.key}`;\n focus = `focus${this.key}`;\n keyup = `keyup${this.key}`;\n keydown = `keydown${this.key}`;\n}\n\nclass Css {\n /**\n * The outer element for the widget.\n */\n widget = `${NAME}-widget`;\n\n /**\n * Hold the previous, next and switcher divs\n */\n calendarHeader = 'calendar-header';\n\n /**\n * The element for the action to change the calendar view. E.g. month -> year.\n */\n switch = 'picker-switch';\n\n /**\n * The elements for all of the toolbar options\n */\n toolbar = 'toolbar';\n\n /**\n * Disables the hover and rounding affect.\n */\n noHighlight = 'no-highlight';\n\n /**\n * Applied to the widget element when the side by side option is in use.\n */\n sideBySide = 'timepicker-sbs';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> July\n */\n previous = 'previous';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> September\n */\n next = 'next';\n\n /**\n * Applied to any action that would violate any restriction options. ALso applied\n * to an input field if the disabled function is called.\n */\n disabled = 'disabled';\n\n /**\n * Applied to any date that is less than requested view,\n * e.g. the last day of the previous month.\n */\n old = 'old';\n\n /**\n * Applied to any date that is greater than of requested view,\n * e.g. the last day of the previous month.\n */\n new = 'new';\n\n /**\n * Applied to any date that is currently selected.\n */\n active = 'active';\n\n //#region date element\n\n /**\n * The outer most element for the calendar view.\n */\n dateContainer = 'date-container';\n\n /**\n * The outer most element for the decades view.\n */\n decadesContainer = `${this.dateContainer}-decades`;\n\n /**\n * Applied to elements within the decades container, e.g. 2020, 2030\n */\n decade = 'decade';\n\n /**\n * The outer most element for the years view.\n */\n yearsContainer = `${this.dateContainer}-years`;\n\n /**\n * Applied to elements within the years container, e.g. 2021, 2021\n */\n year = 'year';\n\n /**\n * The outer most element for the month view.\n */\n monthsContainer = `${this.dateContainer}-months`;\n\n /**\n * Applied to elements within the month container, e.g. January, February\n */\n month = 'month';\n\n /**\n * The outer most element for the calendar view.\n */\n daysContainer = `${this.dateContainer}-days`;\n\n /**\n * Applied to elements within the day container, e.g. 1, 2..31\n */\n day = 'day';\n\n /**\n * If display.calendarWeeks is enabled, a column displaying the week of year\n * is shown. This class is applied to each cell in that column.\n */\n calendarWeeks = 'cw';\n\n /**\n * Applied to the first row of the calendar view, e.g. Sunday, Monday\n */\n dayOfTheWeek = 'dow';\n\n /**\n * Applied to the current date on the calendar view.\n */\n today = 'today';\n\n /**\n * Applied to the locale's weekend dates on the calendar view, e.g. Sunday, Saturday\n */\n weekend = 'weekend';\n\n //#endregion\n\n //#region time element\n\n /**\n * The outer most element for all time related elements.\n */\n timeContainer = 'time-container';\n\n /**\n * Applied the separator columns between time elements, e.g. hour *:* minute *:* second\n */\n separator = 'separator';\n\n /**\n * The outer most element for the clock view.\n */\n clockContainer = `${this.timeContainer}-clock`;\n\n /**\n * The outer most element for the hours selection view.\n */\n hourContainer = `${this.timeContainer}-hour`;\n\n /**\n * The outer most element for the minutes selection view.\n */\n minuteContainer = `${this.timeContainer}-minute`;\n\n /**\n * The outer most element for the seconds selection view.\n */\n secondContainer = `${this.timeContainer}-second`;\n\n /**\n * Applied to each element in the hours selection view.\n */\n hour = 'hour';\n\n /**\n * Applied to each element in the minutes selection view.\n */\n minute = 'minute';\n\n /**\n * Applied to each element in the seconds selection view.\n */\n second = 'second';\n\n /**\n * Applied AM/PM toggle button.\n */\n toggleMeridiem = 'toggleMeridiem';\n\n //#endregion\n\n //#region collapse\n\n /**\n * Applied the element of the current view mode, e.g. calendar or clock.\n */\n show = 'show';\n\n /**\n * Applied to the currently showing view mode during a transition\n * between calendar and clock views\n */\n collapsing = 'td-collapsing';\n\n /**\n * Applied to the currently hidden view mode.\n */\n collapse = 'td-collapse';\n\n //#endregion\n\n /**\n * Applied to the widget when the option display.inline is enabled.\n */\n inline = 'inline';\n}\n\nexport default class Namespace {\n static NAME = NAME;\n // noinspection JSUnusedGlobalSymbols\n static version = version;\n static dataKey = dataKey;\n\n static events = new Events();\n\n static css = new Css();\n\n static errorMessages = new ErrorMessages();\n}\n","import { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options from './options';\n\nconst DefaultOptions: Options = {\n restrictions: {\n minDate: undefined,\n maxDate: undefined,\n disabledDates: [],\n enabledDates: [],\n daysOfWeekDisabled: [],\n disabledTimeIntervals: [],\n disabledHours: [],\n enabledHours: [],\n },\n display: {\n icons: {\n type: 'icons',\n time: 'fas fa-clock',\n date: 'fas fa-calendar',\n up: 'fas fa-arrow-up',\n down: 'fas fa-arrow-down',\n previous: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n today: 'fas fa-calendar-check',\n clear: 'fas fa-trash',\n close: 'fas fa-times',\n },\n sideBySide: false,\n calendarWeeks: false,\n viewMode: 'calendar',\n toolbarPlacement: 'bottom',\n keepOpen: false,\n buttons: {\n today: false,\n clear: false,\n close: false,\n },\n components: {\n calendar: true,\n date: true,\n month: true,\n year: true,\n decades: true,\n clock: true,\n hours: true,\n minutes: true,\n seconds: false,\n useTwentyfourHour: false,\n },\n inline: false,\n },\n stepping: 1,\n useCurrent: true,\n defaultDate: undefined,\n localization: {\n today: 'Go to today',\n clear: 'Clear selection',\n close: 'Close the picker',\n selectMonth: 'Select Month',\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n selectYear: 'Select Year',\n previousYear: 'Previous Year',\n nextYear: 'Next Year',\n selectDecade: 'Select Decade',\n previousDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n previousCentury: 'Previous Century',\n nextCentury: 'Next Century',\n pickHour: 'Pick Hour',\n incrementHour: 'Increment Hour',\n decrementHour: 'Decrement Hour',\n pickMinute: 'Pick Minute',\n incrementMinute: 'Increment Minute',\n decrementMinute: 'Decrement Minute',\n pickSecond: 'Pick Second',\n incrementSecond: 'Increment Second',\n decrementSecond: 'Decrement Second',\n toggleMeridiem: 'Toggle Meridiem',\n selectTime: 'Select Time',\n selectDate: 'Select Date',\n dayViewHeaderFormat: 'long',\n locale: 'default',\n },\n keepInvalid: false,\n debug: false,\n allowInputToggle: false,\n viewDate: new DateTime(),\n multipleDates: false,\n multipleDatesSeparator: '; ',\n promptTimeOnDateChange: false,\n promptTimeOnDateChangeTransitionDelay: 200,\n hooks: {\n inputParse: undefined,\n inputFormat: undefined,\n },\n};\n\nconst DatePickerModes: {\n name: string;\n className: string;\n unit: Unit;\n step: number;\n}[] = [\n {\n name: 'calendar',\n className: Namespace.css.daysContainer,\n unit: Unit.month,\n step: 1,\n },\n {\n name: 'months',\n className: Namespace.css.monthsContainer,\n unit: Unit.year,\n step: 1,\n },\n {\n name: 'years',\n className: Namespace.css.yearsContainer,\n unit: Unit.year,\n step: 10,\n },\n {\n name: 'decades',\n className: Namespace.css.decadesContainer,\n unit: Unit.year,\n step: 100,\n },\n];\n\nexport { DefaultOptions, DatePickerModes, Namespace };\n","import Namespace from '../namespace';\n\n/**\n * Provides a collapse functionality to the view changes\n */\nexport default class Collapse {\n private timeOut;\n\n /**\n * Flips the show/hide state of `target`\n * @param target html element to affect.\n */\n toggle(target: HTMLElement, callback = undefined) {\n if (target.classList.contains(Namespace.css.show)) {\n this.hide(target, callback);\n } else {\n this.show(target, callback);\n }\n }\n\n /**\n * If `target` is not already showing, then show after the animation.\n * @param target\n */\n show(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse, Namespace.css.show);\n target.style.height = '';\n this.timeOut = null;\n if (callback) callback();\n };\n\n target.style.height = '0';\n target.classList.remove(Namespace.css.collapse);\n target.classList.add(Namespace.css.collapsing);\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n target.style.height = `${target.scrollHeight}px`;\n }\n\n /**\n * If `target` is not already hidden, then hide after the animation.\n * @param target HTML Element\n */\n hide(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n !target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse);\n this.timeOut = null;\n };\n\n target.style.height = `${target.getBoundingClientRect()['height']}px`;\n\n const reflow = (element) => element.offsetHeight;\n\n reflow(target);\n\n target.classList.remove(Namespace.css.collapse, Namespace.css.show);\n target.classList.add(Namespace.css.collapsing);\n target.style.height = '';\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n }\n\n /**\n * Gets the transition duration from the `element` by getting css properties\n * `transition-duration` and `transition-delay`\n * @param element HTML Element\n */\n private getTransitionDurationFromElement = (element: HTMLElement) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } =\n window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) +\n Number.parseFloat(transitionDelay)) *\n 1000\n );\n };\n}\n","import { DatePickerModes } from './conts.js';\r\nimport { DateTime, Unit } from './datetime';\r\nimport { TempusDominus } from './tempus-dominus';\r\nimport Collapse from './display/collapse';\r\nimport Namespace from './namespace';\r\n\r\n/**\r\n *\r\n */\r\nexport default class Actions {\r\n private _context: TempusDominus;\r\n private collapse: Collapse;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this.collapse = new Collapse();\r\n }\r\n\r\n /**\r\n * Performs the selected `action`. See ActionTypes\r\n * @param e This is normally a click event\r\n * @param action If not provided, then look for a [data-action]\r\n */\r\n do(e: any, action?: ActionTypes) {\r\n const currentTarget = e.currentTarget;\r\n if (currentTarget.classList.contains(Namespace.css.disabled)) return false;\r\n action = action || currentTarget.dataset.action;\r\n const lastPicked = (\r\n this._context.dates.lastPicked || this._context._viewDate\r\n ).clone;\r\n\r\n /**\r\n * Common function to manipulate {@link lastPicked} by `unit`\r\n * @param unit\r\n * @param value Value to change by\r\n */\r\n const manipulateAndSet = (unit: Unit, value = 1) => {\r\n const newDate = lastPicked.manipulate(value, unit);\r\n if (this._context._validation.isValid(newDate, unit)) {\r\n this._context.dates._setValue(\r\n newDate,\r\n this._context.dates.lastPickedIndex\r\n );\r\n }\r\n };\r\n\r\n switch (action) {\r\n case ActionTypes.next:\r\n case ActionTypes.previous:\r\n const { unit, step } = DatePickerModes[this._context._currentViewMode];\r\n if (action === ActionTypes.next)\r\n this._context._viewDate.manipulate(step, unit);\r\n else this._context._viewDate.manipulate(step * -1, unit);\r\n this._context._viewUpdate(unit);\r\n\r\n this._context._display._showMode();\r\n break;\r\n case ActionTypes.pickerSwitch:\r\n this._context._display._showMode(1);\r\n this._context._viewUpdate(\r\n DatePickerModes[this._context._currentViewMode].unit\r\n );\r\n this._context._display._updateCalendarHeader();\r\n break;\r\n case ActionTypes.selectMonth:\r\n case ActionTypes.selectYear:\r\n case ActionTypes.selectDecade:\r\n const value = +currentTarget.getAttribute('data-value');\r\n switch (action) {\r\n case ActionTypes.selectMonth:\r\n this._context._viewDate.month = value;\r\n this._context._viewUpdate(Unit.month);\r\n break;\r\n case ActionTypes.selectYear:\r\n this._context._viewDate.year = value;\r\n this._context._viewUpdate(Unit.year);\r\n break;\r\n case ActionTypes.selectDecade:\r\n this._context._viewDate.year = value;\r\n this._context._viewUpdate(Unit.year);\r\n break;\r\n }\r\n\r\n if (\r\n this._context._currentViewMode === this._context._minViewModeNumber\r\n ) {\r\n this._context.dates._setValue(\r\n this._context._viewDate,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (!this._context._options.display.inline) {\r\n this._context._display.hide();\r\n }\r\n } else {\r\n this._context._display._showMode(-1);\r\n }\r\n break;\r\n case ActionTypes.selectDay:\r\n const day = this._context._viewDate.clone;\r\n if (currentTarget.classList.contains(Namespace.css.old)) {\r\n day.manipulate(-1, Unit.month);\r\n }\r\n if (currentTarget.classList.contains(Namespace.css.new)) {\r\n day.manipulate(1, Unit.month);\r\n }\r\n\r\n day.date = +currentTarget.innerText;\r\n let index = 0;\r\n if (this._context._options.multipleDates) {\r\n index = this._context.dates.pickedIndex(day, Unit.date);\r\n if (index !== -1) {\r\n this._context.dates._setValue(null, index); //deselect multi-date\r\n } else {\r\n this._context.dates._setValue(\r\n day,\r\n this._context.dates.lastPickedIndex + 1\r\n );\r\n }\r\n } else {\r\n this._context.dates._setValue(\r\n day,\r\n this._context.dates.lastPickedIndex\r\n );\r\n }\r\n\r\n if (\r\n !this._context._display._hasTime &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline &&\r\n !this._context._options.multipleDates\r\n ) {\r\n this._context._display.hide();\r\n }\r\n break;\r\n case ActionTypes.selectHour:\r\n let hour = +currentTarget.getAttribute('data-value');\r\n if (lastPicked.hours >= 12 && !this._context._options.display.components.useTwentyfourHour) hour += 12;\r\n lastPicked.hours = hour;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.components.minutes &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.selectMinute:\r\n lastPicked.minutes = +currentTarget.innerText;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.components.seconds &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.selectSecond:\r\n lastPicked.seconds = +currentTarget.innerText;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.incrementHours:\r\n manipulateAndSet(Unit.hours);\r\n break;\r\n case ActionTypes.incrementMinutes:\r\n manipulateAndSet(Unit.minutes, this._context._options.stepping);\r\n break;\r\n case ActionTypes.incrementSeconds:\r\n manipulateAndSet(Unit.seconds);\r\n break;\r\n case ActionTypes.decrementHours:\r\n manipulateAndSet(Unit.hours, -1);\r\n break;\r\n case ActionTypes.decrementMinutes:\r\n manipulateAndSet(Unit.minutes, this._context._options.stepping * -1);\r\n break;\r\n case ActionTypes.decrementSeconds:\r\n manipulateAndSet(Unit.seconds, -1);\r\n break;\r\n case ActionTypes.toggleMeridiem:\r\n manipulateAndSet(\r\n Unit.hours,\r\n this._context.dates.lastPicked.hours >= 12 ? -12 : 12\r\n );\r\n break;\r\n case ActionTypes.togglePicker:\r\n this._context._display.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer}, .${Namespace.css.timeContainer}`\r\n )\r\n .forEach((htmlElement: HTMLElement) =>\r\n this.collapse.toggle(htmlElement)\r\n );\r\n if (\r\n currentTarget.getAttribute('title') ===\r\n this._context._options.localization.selectDate\r\n ) {\r\n currentTarget.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectTime\r\n );\r\n currentTarget.innerHTML = this._context._display._iconTag(\r\n this._context._options.display.icons.time\r\n ).outerHTML;\r\n\r\n this._context._display._updateCalendarHeader();\r\n } else {\r\n currentTarget.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDate\r\n );\r\n currentTarget.innerHTML = this._context._display._iconTag(\r\n this._context._options.display.icons.date\r\n ).outerHTML;\r\n this.do(e, ActionTypes.showClock);\r\n this._context._display._update('clock');\r\n }\r\n break;\r\n case ActionTypes.showClock:\r\n case ActionTypes.showHours:\r\n case ActionTypes.showMinutes:\r\n case ActionTypes.showSeconds:\r\n this._context._display.widget\r\n .querySelectorAll(`.${Namespace.css.timeContainer} > div`)\r\n .forEach(\r\n (htmlElement: HTMLElement) => (htmlElement.style.display = 'none')\r\n );\r\n\r\n let classToUse = '';\r\n switch (action) {\r\n case ActionTypes.showClock:\r\n classToUse = Namespace.css.clockContainer;\r\n this._context._display._update('clock');\r\n break;\r\n case ActionTypes.showHours:\r\n classToUse = Namespace.css.hourContainer;\r\n this._context._display._update(Unit.hours);\r\n break;\r\n case ActionTypes.showMinutes:\r\n classToUse = Namespace.css.minuteContainer;\r\n this._context._display._update(Unit.minutes);\r\n break;\r\n case ActionTypes.showSeconds:\r\n classToUse = Namespace.css.secondContainer;\r\n this._context._display._update(Unit.seconds);\r\n break;\r\n }\r\n\r\n ((\r\n this._context._display.widget.getElementsByClassName(classToUse)[0]\r\n )).style.display = 'grid';\r\n break;\r\n case ActionTypes.clear:\r\n this._context.dates._setValue(null);\r\n this._context._display._updateCalendarHeader();\r\n break;\r\n case ActionTypes.close:\r\n this._context._display.hide();\r\n break;\r\n case ActionTypes.today:\r\n const today = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n this._context._viewDate = today;\r\n if (this._context._validation.isValid(today, Unit.date))\r\n this._context.dates._setValue(\r\n today,\r\n this._context.dates.lastPickedIndex\r\n );\r\n break;\r\n }\r\n }\r\n}\r\n\r\nexport enum ActionTypes {\r\n next = 'next',\r\n previous = 'previous',\r\n pickerSwitch = 'pickerSwitch',\r\n selectMonth = 'selectMonth',\r\n selectYear = 'selectYear',\r\n selectDecade = 'selectDecade',\r\n selectDay = 'selectDay',\r\n selectHour = 'selectHour',\r\n selectMinute = 'selectMinute',\r\n selectSecond = 'selectSecond',\r\n incrementHours = 'incrementHours',\r\n incrementMinutes = 'incrementMinutes',\r\n incrementSeconds = 'incrementSeconds',\r\n decrementHours = 'decrementHours',\r\n decrementMinutes = 'decrementMinutes',\r\n decrementSeconds = 'decrementSeconds',\r\n toggleMeridiem = 'toggleMeridiem',\r\n togglePicker = 'togglePicker',\r\n showClock = 'showClock',\r\n showHours = 'showHours',\r\n showMinutes = 'showMinutes',\r\n showSeconds = 'showSeconds',\r\n clear = 'clear',\r\n close = 'close',\r\n today = 'today',\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { DateTime, Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `date`\n */\nexport default class DateDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.daysContainer);\n\n container.append(...this._daysOfTheWeek());\n\n if (this._context._options.display.calendarWeeks) {\n const div = document.createElement('div');\n div.classList.add(Namespace.css.calendarWeeks, Namespace.css.noHighlight);\n container.appendChild(div);\n }\n\n for (let i = 0; i < 42; i++) {\n if (i !== 0 && i % 7 === 0) {\n if (this._context._options.display.calendarWeeks) {\n const div = document.createElement('div');\n div.classList.add(\n Namespace.css.calendarWeeks,\n Namespace.css.noHighlight\n );\n container.appendChild(div);\n }\n }\n\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectDay);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.daysContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.daysContainer,\n this._context._viewDate.format({\n month: this._context._options.localization.dayViewHeaderFormat,\n })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.month),\n Unit.month\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.month),\n Unit.month\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone\n .startOf(Unit.month)\n .startOf('weekDay')\n .manipulate(12, Unit.hours);\n\n container\n .querySelectorAll(\n `[data-action=\"${ActionTypes.selectDay}\"], .${Namespace.css.calendarWeeks}`\n )\n .forEach((containerClone: HTMLElement, index) => {\n if (\n this._context._options.display.calendarWeeks &&\n containerClone.classList.contains(Namespace.css.calendarWeeks)\n ) {\n if (containerClone.innerText === '#') return;\n containerClone.innerText = `${innerDate.week}`;\n return;\n }\n\n let classes = [];\n classes.push(Namespace.css.day);\n\n if (innerDate.isBefore(this._context._viewDate, Unit.month)) {\n classes.push(Namespace.css.old);\n }\n if (innerDate.isAfter(this._context._viewDate, Unit.month)) {\n classes.push(Namespace.css.new);\n }\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.date)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.date)) {\n classes.push(Namespace.css.disabled);\n }\n if (innerDate.isSame(new DateTime(), Unit.date)) {\n classes.push(Namespace.css.today);\n }\n if (innerDate.weekDay === 0 || innerDate.weekDay === 6) {\n classes.push(Namespace.css.weekend);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute(\n 'data-value',\n `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`\n );\n containerClone.innerText = `${innerDate.date}`;\n innerDate.manipulate(1, Unit.date);\n });\n }\n\n /***\n * Generates an html row that contains the days of the week.\n * @private\n */\n private _daysOfTheWeek(): HTMLElement[] {\n let innerDate = this._context._viewDate.clone\n .startOf('weekDay')\n .startOf(Unit.date);\n const row = [];\n document.createElement('div');\n\n if (this._context._options.display.calendarWeeks) {\n const htmlDivElement = document.createElement('div');\n htmlDivElement.classList.add(\n Namespace.css.calendarWeeks,\n Namespace.css.noHighlight\n );\n htmlDivElement.innerText = '#';\n row.push(htmlDivElement);\n }\n\n for (let i = 0; i < 7; i++) {\n const htmlDivElement = document.createElement('div');\n htmlDivElement.classList.add(\n Namespace.css.dayOfTheWeek,\n Namespace.css.noHighlight\n );\n htmlDivElement.innerText = innerDate.format({ weekday: 'short' });\n innerDate.manipulate(1, Unit.date);\n row.push(htmlDivElement);\n }\n\n return row;\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `month`\n */\nexport default class MonthDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.monthsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMonth);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.monthsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.monthsContainer,\n this._context._viewDate.format({ year: 'numeric' })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.year),\n Unit.year\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.year),\n Unit.year\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone.startOf(Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMonth}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.month);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.month)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.month)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${index}`);\n containerClone.innerText = `${innerDate.format({ month: 'short' })}`;\n innerDate.manipulate(1, Unit.month);\n });\n }\n}\n","import { DateTime, DateTimeFormatOptions } from './datetime';\nimport Namespace from './namespace';\nimport { DefaultOptions } from './conts';\n\nexport default interface Options {\n restrictions: {\n minDate: DateTime;\n maxDate: DateTime;\n enabledDates: DateTime[];\n disabledDates: DateTime[];\n enabledHours: number[];\n disabledHours: number[];\n disabledTimeIntervals: { from: DateTime; to: DateTime }[];\n daysOfWeekDisabled: number[];\n };\n display: {\n toolbarPlacement: 'top' | 'bottom';\n components: {\n calendar: boolean;\n date: boolean;\n month: boolean;\n year: boolean;\n decades: boolean;\n clock: boolean;\n hours: boolean;\n minutes: boolean;\n seconds: boolean;\n useTwentyfourHour: boolean;\n };\n buttons: { today: boolean; close: boolean; clear: boolean };\n calendarWeeks: boolean;\n icons: {\n date: string;\n next: string;\n previous: string;\n today: string;\n clear: string;\n time: string;\n up: string;\n type: 'icons' | 'sprites';\n down: string;\n close: string;\n };\n viewMode: 'clock' | 'calendar' | 'months' | 'years' | 'decades';\n sideBySide: boolean;\n inline: boolean;\n keepOpen: boolean;\n };\n stepping: number;\n useCurrent: boolean;\n defaultDate: DateTime;\n localization: {\n nextMonth: string;\n pickHour: string;\n incrementSecond: string;\n nextDecade: string;\n selectDecade: string;\n dayViewHeaderFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n decrementHour: string;\n selectDate: string;\n incrementHour: string;\n previousCentury: string;\n decrementSecond: string;\n today: string;\n previousMonth: string;\n selectYear: string;\n pickSecond: string;\n nextCentury: string;\n close: string;\n incrementMinute: string;\n selectTime: string;\n clear: string;\n toggleMeridiem: string;\n selectMonth: string;\n decrementMinute: string;\n pickMinute: string;\n nextYear: string;\n previousYear: string;\n previousDecade: string;\n locale: string;\n };\n keepInvalid: boolean;\n debug: boolean;\n allowInputToggle: boolean;\n viewDate: DateTime;\n multipleDates: boolean;\n multipleDatesSeparator: string;\n promptTimeOnDateChange: boolean;\n promptTimeOnDateChangeTransitionDelay: number;\n hooks: {\n inputParse: (value: any) => DateTime;\n inputFormat: (date: DateTime) => string;\n };\n}\n\nexport class OptionConverter {\n static _mergeOptions(providedOptions: Options, mergeTo: Options): Options {\n const newOptions = {} as Options;\n let path = '';\n const ignoreProperties = ['inputParse', 'inputFormat'];\n\n const processKey = (key, value, providedType, defaultType) => {\n switch (key) {\n case 'defaultDate': {\n const dateTime = this._dateConversion(value, 'defaultDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'defaultDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'viewDate': {\n const dateTime = this._dateConversion(value, 'viewDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'viewDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'minDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.minDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.minDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'maxDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.maxDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.maxDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'disabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.disabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.disabledHours',\n 0,\n 23\n );\n return value;\n case 'enabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.enabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.enabledHours',\n 0,\n 23\n );\n return value;\n case 'daysOfWeekDisabled':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.daysOfWeekDisabled',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 6).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.daysOfWeekDisabled',\n 0,\n 6\n );\n return value;\n case 'enabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.enabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.disabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledTimeIntervals':\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n key,\n providedType,\n 'array of { from: DateTime|Date, to: DateTime|Date }'\n );\n }\n const valueObject = value as { from: any; to: any }[];\n for (let i = 0; i < valueObject.length; i++) {\n Object.keys(valueObject[i]).forEach((vk) => {\n const subOptionName = `${key}[${i}].${vk}`;\n let d = valueObject[i][vk];\n const dateTime = this._dateConversion(d, subOptionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n subOptionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n valueObject[i][vk] = dateTime;\n });\n }\n return valueObject;\n case 'toolbarPlacement':\n case 'type':\n case 'viewMode':\n case 'dayViewHeaderFormat':\n const optionValues = {\n toolbarPlacement: ['top', 'bottom', 'default'],\n type: ['icons', 'sprites'],\n viewMode: ['clock', 'calendar', 'months', 'years', 'decades'],\n dayViewHeaderFormat: [\n 'numeric',\n '2-digit',\n 'long',\n 'short',\n 'narrow',\n ],\n };\n const keyOptions = optionValues[key];\n if (!keyOptions.includes(value))\n Namespace.errorMessages.unexpectedOptionValue(\n path.substring(1),\n value,\n keyOptions\n );\n\n return value;\n case 'inputParse':\n case 'inputFormat':\n return value;\n default:\n switch (defaultType) {\n case 'boolean':\n return value === 'true' || value === true;\n case 'number':\n return +value;\n case 'string':\n return value.toString();\n case 'object':\n return {};\n case 'function':\n return value;\n default:\n Namespace.errorMessages.typeMismatch(\n path.substring(1),\n providedType,\n defaultType\n );\n }\n }\n };\n\n /**\n * The spread operator caused sub keys to be missing after merging.\n * This is to fix that issue by using spread on the child objects first.\n * Also handles complex options like disabledDates\n * @param provided An option from new providedOptions\n * @param mergeOption Default option to compare types against\n * @param copyTo Destination object. This was add to prevent reference copies\n */\n const spread = (provided, mergeOption, copyTo) => {\n const unsupportedOptions = Object.keys(provided).filter(\n (x) => !Object.keys(mergeOption).includes(x)\n );\n if (unsupportedOptions.length > 0) {\n const flattenedOptions = OptionConverter._flattenDefaultOptions;\n\n const errors = unsupportedOptions.map((x) => {\n let error = `\"${path.substring(1)}.${x}\" in not a known option.`;\n let didYouMean = flattenedOptions.find((y) => y.includes(x));\n if (didYouMean) error += `Did you mean \"${didYouMean}\"?`;\n return error;\n });\n Namespace.errorMessages.unexpectedOptions(errors);\n }\n Object.keys(mergeOption).forEach((key) => {\n const defaultOptionValue = mergeOption[key];\n let providedType = typeof provided[key];\n let defaultType = typeof defaultOptionValue;\n let value = provided[key];\n if (!provided.hasOwnProperty(key)) {\n if (\n defaultType === 'undefined' ||\n (value?.length === 0 && Array.isArray(defaultOptionValue))\n ) {\n copyTo[key] = defaultOptionValue;\n return;\n }\n provided[key] = defaultOptionValue;\n value = provided[key];\n }\n path += `.${key}`;\n copyTo[key] = processKey(key, value, providedType, defaultType);\n\n if (typeof defaultOptionValue !== 'object' || ignoreProperties.includes(key)) {\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n return;\n }\n if (!Array.isArray(provided[key])) {\n spread(provided[key], defaultOptionValue, copyTo[key]);\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n }\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n });\n };\n spread(providedOptions, mergeTo, newOptions);\n\n return newOptions;\n }\n\n static _dataToOptions(element, options: Options): Options {\n const eData = element.dataset;\n if (\n !eData ||\n Object.keys(eData).length === 0 ||\n eData.constructor !== DOMStringMap\n )\n return options;\n let dataOptions = {} as Options;\n\n // because dataset returns camelCase including the 'td' key the option\n // key won't align\n const objectToNormalized = (object) => {\n const lowered = {};\n Object.keys(object).forEach((x) => {\n lowered[x.toLowerCase()] = x;\n });\n\n return lowered;\n };\n\n const rabbitHole = (\n split: string[],\n index: number,\n optionSubgroup: {},\n value: any\n ) => {\n // first round = display { ... }\n const normalizedOptions = objectToNormalized(optionSubgroup);\n\n const keyOption = normalizedOptions[split[index].toLowerCase()];\n const internalObject = {};\n\n if (keyOption === undefined) return internalObject;\n\n // if this is another object, continue down the rabbit hole\n if (optionSubgroup[keyOption].constructor === Object) {\n index++;\n internalObject[keyOption] = rabbitHole(\n split,\n index,\n optionSubgroup[keyOption],\n value\n );\n } else {\n internalObject[keyOption] = value;\n }\n return internalObject;\n };\n const optionsLower = objectToNormalized(options);\n\n Object.keys(eData)\n .filter((x) => x.startsWith(Namespace.dataKey))\n .map((x) => x.substring(2))\n .forEach((key) => {\n let keyOption = optionsLower[key.toLowerCase()];\n\n // dataset merges dashes to camelCase... yay\n // i.e. key = display_components_seconds\n if (key.includes('_')) {\n // [display, components, seconds]\n const split = key.split('_');\n // display\n keyOption = optionsLower[split[0].toLowerCase()];\n if (\n keyOption !== undefined &&\n options[keyOption].constructor === Object\n ) {\n dataOptions[keyOption] = rabbitHole(\n split,\n 1,\n options[keyOption],\n eData[`td${key}`]\n );\n }\n }\n // or key = multipleDate\n else if (keyOption !== undefined) {\n dataOptions[keyOption] = eData[`td${key}`];\n }\n });\n\n return this._mergeOptions(dataOptions, options);\n }\n\n /**\n * Attempts to prove `d` is a DateTime or Date or can be converted into one.\n * @param d If a string will attempt creating a date from it.\n * @private\n */\n static _dateTypeCheck(d: any): DateTime | null {\n if (d.constructor.name === DateTime.name) return d;\n if (d.constructor.name === Date.name) {\n return DateTime.convert(d);\n }\n if (typeof d === typeof '') {\n const dateTime = new DateTime(d);\n if (JSON.stringify(dateTime) === 'null') {\n return null;\n }\n return dateTime;\n }\n return null;\n }\n\n /**\n * Type checks that `value` is an array of Date or DateTime\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckDateArray(optionName: string, value, providedType: string) {\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of DateTime or Date'\n );\n }\n for (let i = 0; i < value.length; i++) {\n let d = value[i];\n const dateTime = this._dateConversion(d, optionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n value[i] = dateTime;\n }\n }\n\n /**\n * Type checks that `value` is an array of numbers\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckNumberArray(\n optionName: string,\n value,\n providedType: string\n ) {\n if (!Array.isArray(value) || value.find((x) => typeof x !== typeof 0)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of numbers'\n );\n }\n return;\n }\n\n /**\n * Attempts to convert `d` to a DateTime object\n * @param d value to convert\n * @param optionName Provides text to error messages e.g. disabledDates\n */\n static _dateConversion(d: any, optionName: string) {\n if (typeof d === typeof '' && optionName !== 'input') {\n Namespace.errorMessages.dateString();\n }\n\n const converted = this._dateTypeCheck(d);\n\n if (!converted) {\n Namespace.errorMessages.failedToParseDate(\n optionName,\n d,\n optionName === 'input'\n );\n }\n return converted;\n }\n\n private static _flatback: string[];\n\n private static get _flattenDefaultOptions(): string[] {\n if (this._flatback) return this._flatback;\n const deepKeys = (t, pre = []) =>\n Array.isArray(t)\n ? []\n : Object(t) === t\n ? Object.entries(t).flatMap(([k, v]) => deepKeys(v, [...pre, k]))\n : pre.join('.');\n\n this._flatback = deepKeys(DefaultOptions);\n\n return this._flatback;\n }\n\n /**\n * Some options conflict like min/max date. Verify that these kinds of options\n * are set correctly.\n * @param config\n */\n static _validateConflcits(config: Options) {\n if (config.restrictions.minDate && config.restrictions.maxDate) {\n if (config.restrictions.minDate.isAfter(config.restrictions.maxDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'minDate is after maxDate'\n );\n }\n\n if (config.restrictions.maxDate.isBefore(config.restrictions.minDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'maxDate is before minDate'\n );\n }\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport { ChangeEvent, FailEvent } from './event-types';\nimport { OptionConverter } from './options';\n\nexport default class Dates {\n private _dates: DateTime[] = [];\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Returns the array of selected dates\n */\n get picked(): DateTime[] {\n return this._dates;\n }\n\n /**\n * Returns the last picked value.\n */\n get lastPicked(): DateTime {\n return this._dates[this.lastPickedIndex];\n }\n\n /**\n * Returns the length of picked dates -1 or 0 if none are selected.\n */\n get lastPickedIndex(): number {\n if (this._dates.length === 0) return 0;\n return this._dates.length - 1;\n }\n\n /**\n * Adds a new DateTime to selected dates array\n * @param date\n */\n add(date: DateTime): void {\n this._dates.push(date);\n }\n\n /**\n * Tries to convert the provided value to a DateTime object.\n * If value is null|undefined then clear the value of the provided index (or 0).\n * @param value Value to convert or null|undefined\n * @param index When using multidates this is the index in the array\n * @param from Used in the warning message, useful for debugging.\n */\n set(value: any, index?: number, from: string = 'date.set') {\n if (!value) this._setValue(value, index);\n const converted = OptionConverter._dateConversion(value, from);\n if (converted) this._setValue(converted, index);\n }\n\n /**\n * Returns true if the `targetDate` is part of the selected dates array.\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n isPicked(targetDate: DateTime, unit?: Unit): boolean {\n if (!unit) return this._dates.find((x) => x === targetDate) !== undefined;\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return (\n this._dates\n .map((x) => x.format(format))\n .find((x) => x === innerDateFormatted) !== undefined\n );\n }\n\n /**\n * Returns the index at which `targetDate` is in the array.\n * This is used for updating or removing a date when multi-date is used\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n pickedIndex(targetDate: DateTime, unit?: Unit): number {\n if (!unit) return this._dates.indexOf(targetDate);\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return this._dates.map((x) => x.format(format)).indexOf(innerDateFormatted);\n }\n\n /**\n * Clears all selected dates.\n */\n clear() {\n this._context._unset = true;\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate: this.lastPicked,\n isClear: true,\n isValid: true,\n } as ChangeEvent);\n this._dates = [];\n }\n\n /**\n * Find the \"book end\" years given a `year` and a `factor`\n * @param factor e.g. 100 for decades\n * @param year e.g. 2021\n */\n static getStartEndYear(\n factor: number,\n year: number\n ): [number, number, number] {\n const step = factor / 10,\n startYear = Math.floor(year / factor) * factor,\n endYear = startYear + step * 9,\n focusValue = Math.floor(year / step) * step;\n return [startYear, endYear, focusValue];\n }\n\n /**\n * Do not use direectly. Attempts to either clear or set the `target` date at `index`.\n * If the `target` is null then the date will be cleared.\n * If multi-date is being used then it will be removed from the array.\n * If `target` is valid and multi-date is used then if `index` is\n * provided the date at that index will be replaced, otherwise it is appended.\n * @param target\n * @param index\n */\n _setValue(target?: DateTime, index?: number): void {\n const noIndex = typeof index === 'undefined',\n isClear = !target && noIndex;\n let oldDate = this._context._unset ? null : this._dates[index];\n if (!oldDate && !this._context._unset && noIndex && isClear) {\n oldDate = this.lastPicked;\n }\n\n if (target && oldDate?.isSame(target)) return;\n\n const updateInput = () => {\n if (!this._context._input) return;\n\n let newValue = this._context._options.hooks.inputFormat(target);\n if (this._context._options.multipleDates) {\n newValue = this._dates\n .map((d) => this._context._options.hooks.inputFormat(d))\n .join(this._context._options.multipleDatesSeparator);\n }\n if (this._context._input.value != newValue)\n this._context._input.value = newValue;\n };\n\n // case of calling setValue(null)\n if (!target) {\n if (\n !this._context._options.multipleDates ||\n this._dates.length === 1 ||\n isClear\n ) {\n this._context._unset = true;\n this._dates = [];\n } else {\n this._dates.splice(index, 1);\n }\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n\n updateInput();\n this._context._display._update('all');\n return;\n }\n\n index = index || 0;\n target = target.clone;\n\n // minute stepping is being used, force the minute to the closest value\n if (this._context._options.stepping !== 1) {\n target.minutes =\n Math.round(target.minutes / this._context._options.stepping) *\n this._context._options.stepping;\n target.seconds = 0;\n }\n\n if (this._context._validation.isValid(target)) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._unset = false;\n this._context._display._update('all');\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n return;\n }\n\n if (this._context._options.keepInvalid) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: false,\n } as ChangeEvent);\n }\n this._context._triggerEvent({\n type: Namespace.events.error,\n reason: Namespace.errorMessages.failedToSetInvalidDate,\n date: target,\n oldDate,\n } as FailEvent);\n }\n\n /**\n * Returns a format object based on the granularity of `unit`\n * @param unit\n */\n static getFormatByUnit(unit: Unit): object {\n switch (unit) {\n case 'date':\n return { dateStyle: 'short' };\n case 'month':\n return {\n month: 'numeric',\n year: 'numeric',\n };\n case 'year':\n return { year: 'numeric' };\n }\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { DateTime, Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\nimport Dates from '../../dates';\n\n/**\n * Creates and updates the grid for `year`\n */\nexport default class YearDisplay {\n private _context: TempusDominus;\n private _startYear: DateTime;\n private _endYear: DateTime;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.yearsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectYear);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update() {\n const [start, end] = Dates.getStartEndYear(\n 10,\n this._context._viewDate.year\n );\n this._startYear = this._context._viewDate.clone.manipulate(-1, Unit.year);\n this._endYear = this._context._viewDate.clone.manipulate(10, Unit.year);\n\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.yearsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.yearsContainer,\n `${this._startYear.year}-${this._endYear.year}`\n );\n\n this._context._validation.isValid(this._startYear, Unit.year)\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n this._context._validation.isValid(this._endYear, Unit.year)\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone\n .startOf(Unit.year)\n .manipulate(-1, Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectYear}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.year);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.year)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.year)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.year}`);\n containerClone.innerText = `${innerDate.year}`;\n\n innerDate.manipulate(1, Unit.year);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport Dates from '../../dates';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `seconds`\r\n */\r\nexport default class DecadeDisplay {\r\n private _context: TempusDominus;\r\n private _startDecade: DateTime;\r\n private _endDecade: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker() {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.decadesContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDecade);\r\n container.appendChild(div);\r\n }\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 100,\r\n this._context._viewDate.year\r\n );\r\n this._startDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._startDecade.year = start;\r\n this._endDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._endDecade.year = end;\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.decadesContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.decadesContainer,\r\n `${this._startDecade.year}-${this._endDecade.year}`\r\n );\r\n\r\n this._context._validation.isValid(this._startDecade, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endDecade, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n const pickedYears = this._context.dates.picked.map((x) => x.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectDecade}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (index === 0) {\r\n containerClone.classList.add(Namespace.css.old);\r\n if (this._startDecade.year - 10 < 0) {\r\n containerClone.textContent = ' ';\r\n previous.classList.add(Namespace.css.disabled);\r\n containerClone.classList.add(Namespace.css.disabled);\r\n containerClone.setAttribute('data-value', ``);\r\n return;\r\n } else {\r\n containerClone.innerText = `${this._startDecade.year - 10}`;\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n return;\r\n }\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.decade);\r\n const startDecadeYear = this._startDecade.year;\r\n const endDecadeYear = this._startDecade.year + 9;\r\n\r\n if (\r\n !this._context._unset &&\r\n pickedYears.filter((x) => x >= startDecadeYear && x <= endDecadeYear)\r\n .length > 0\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n containerClone.innerText = `${this._startDecade.year}`;\r\n\r\n this._startDecade.manipulate(10, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates the clock display\n */\nexport default class TimeDisplay {\n private _context: TempusDominus;\n private _gridColumns = '';\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the clock display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.clockContainer);\n\n container.append(...this._grid());\n\n return container;\n }\n\n /**\n * Populates the various elements with in the clock display\n * like the current hour and if the manipulation icons are enabled.\n * @private\n */\n _update(): void {\n const timesDiv = (\n this._context._display.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0]\n );\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n timesDiv\n .querySelectorAll('.disabled')\n .forEach((element) => element.classList.remove(Namespace.css.disabled));\n\n if (this._context._options.display.components.hours) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.hours}]`\n ).innerText = this._context._options.display.components.useTwentyfourHour\n ? lastPicked.hoursFormatted\n : lastPicked.twelveHoursFormatted;\n }\n\n if (this._context._options.display.components.minutes) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.minutes}]`\n ).innerText = lastPicked.minutesFormatted;\n }\n\n if (this._context._options.display.components.seconds) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.seconds}]`\n ).innerText = lastPicked.secondsFormatted;\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n const toggle = timesDiv.querySelector(\n `[data-action=${ActionTypes.toggleMeridiem}]`\n );\n\n toggle.innerText = lastPicked.meridiem();\n\n if (\n !this._context._validation.isValid(\n lastPicked.clone.manipulate(\n lastPicked.hours >= 12 ? -12 : 12,\n Unit.hours\n )\n )\n ) {\n toggle.classList.add(Namespace.css.disabled);\n } else {\n toggle.classList.remove(Namespace.css.disabled);\n }\n }\n\n timesDiv.style.gridTemplateAreas = `\"${this._gridColumns}\"`;\n }\n\n /**\n * Creates the table for the clock display depending on what options are selected.\n * @private\n */\n private _grid(): HTMLElement[] {\n this._gridColumns = '';\n const top = [],\n middle = [],\n bottom = [],\n separator = document.createElement('div'),\n upIcon = this._context._display._iconTag(\n this._context._options.display.icons.up\n ),\n downIcon = this._context._display._iconTag(\n this._context._options.display.icons.down\n );\n\n separator.classList.add(Namespace.css.separator, Namespace.css.noHighlight);\n const separatorColon = separator.cloneNode(true);\n separatorColon.innerHTML = ':';\n\n const getSeparator = (colon = false): HTMLElement => {\n return colon\n ? separatorColon.cloneNode(true)\n : separator.cloneNode(true);\n };\n\n if (this._context._options.display.components.hours) {\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.incrementHours);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickHour\n );\n divElement.setAttribute('data-action', ActionTypes.showHours);\n divElement.setAttribute('data-time-component', Unit.hours);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.decrementHours);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n this._gridColumns += 'a';\n }\n\n if (this._context._options.display.components.minutes) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.hours) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.incrementMinutes);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickMinute\n );\n divElement.setAttribute('data-action', ActionTypes.showMinutes);\n divElement.setAttribute('data-time-component', Unit.minutes);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.decrementMinutes);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (this._context._options.display.components.seconds) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.minutes) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.incrementSeconds);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickSecond\n );\n divElement.setAttribute('data-action', ActionTypes.showSeconds);\n divElement.setAttribute('data-time-component', Unit.seconds);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.decrementSeconds);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n this._gridColumns += ' a';\n let divElement = getSeparator();\n top.push(divElement);\n\n let button = document.createElement('button');\n button.setAttribute(\n 'title',\n this._context._options.localization.toggleMeridiem\n );\n button.setAttribute('data-action', ActionTypes.toggleMeridiem);\n button.setAttribute('tabindex', '-1');\n button.classList.add(Namespace.css.toggleMeridiem);\n\n divElement = document.createElement('div');\n divElement.classList.add(Namespace.css.noHighlight);\n divElement.appendChild(button);\n middle.push(divElement);\n\n divElement = getSeparator();\n bottom.push(divElement);\n }\n\n this._gridColumns = this._gridColumns.trim();\n\n return [...top, ...middle, ...bottom];\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `hours`\n */\nexport default class HourDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.hourContainer);\n\n for (\n let i = 0;\n i <\n (this._context._options.display.components.useTwentyfourHour ? 24 : 12);\n i++\n ) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectHour);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.hourContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.date);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectHour}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.hour);\n\n if (!this._context._validation.isValid(innerDate, Unit.hours)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.hours}`);\n containerClone.innerText = this._context._options.display.components\n .useTwentyfourHour\n ? innerDate.hoursFormatted\n : innerDate.twelveHoursFormatted;\n innerDate.manipulate(1, Unit.hours);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `minutes`\n */\nexport default class MinuteDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.minuteContainer);\n\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n for (let i = 0; i < 60 / step; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMinute);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.minuteContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.hours);\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMinute}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.minute);\n\n if (!this._context._validation.isValid(innerDate, Unit.minutes)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.minutes}`);\n containerClone.innerText = innerDate.minutesFormatted;\n innerDate.manipulate(step, Unit.minutes);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class secondDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.secondContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectSecond);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.secondContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.minutes);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectSecond}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.second);\n\n if (!this._context._validation.isValid(innerDate, Unit.seconds)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.seconds}`);\n containerClone.innerText = innerDate.secondsFormatted;\n innerDate.manipulate(5, Unit.seconds);\n });\n }\n}\n","import DateDisplay from './calendar/date-display';\r\nimport MonthDisplay from './calendar/month-display';\r\nimport YearDisplay from './calendar/year-display';\r\nimport DecadeDisplay from './calendar/decade-display';\r\nimport TimeDisplay from './time/time-display';\r\nimport HourDisplay from './time/hour-display';\r\nimport MinuteDisplay from './time/minute-display';\r\nimport SecondDisplay from './time/second-display';\r\nimport { DateTime, Unit } from '../datetime';\r\nimport { DatePickerModes } from '../conts';\r\nimport { TempusDominus } from '../tempus-dominus';\r\nimport { ActionTypes } from '../actions';\r\nimport { createPopper } from '@popperjs/core';\r\nimport Namespace from '../namespace';\r\nimport { HideEvent } from '../event-types';\r\n\r\n/**\r\n * Main class for all things display related.\r\n */\r\nexport default class Display {\r\n private _context: TempusDominus;\r\n private _dateDisplay: DateDisplay;\r\n private _monthDisplay: MonthDisplay;\r\n private _yearDisplay: YearDisplay;\r\n private _decadeDisplay: DecadeDisplay;\r\n private _timeDisplay: TimeDisplay;\r\n private _widget: HTMLElement;\r\n private _hourDisplay: HourDisplay;\r\n private _minuteDisplay: MinuteDisplay;\r\n private _secondDisplay: SecondDisplay;\r\n private _popperInstance: any;\r\n private _isVisible = false;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this._dateDisplay = new DateDisplay(context);\r\n this._monthDisplay = new MonthDisplay(context);\r\n this._yearDisplay = new YearDisplay(context);\r\n this._decadeDisplay = new DecadeDisplay(context);\r\n this._timeDisplay = new TimeDisplay(context);\r\n this._hourDisplay = new HourDisplay(context);\r\n this._minuteDisplay = new MinuteDisplay(context);\r\n this._secondDisplay = new SecondDisplay(context);\r\n\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Returns the widget body or undefined\r\n * @private\r\n */\r\n get widget(): HTMLElement | undefined {\r\n return this._widget;\r\n }\r\n\r\n /**\r\n * Returns this visible state of the picker (shown)\r\n */\r\n get isVisible() {\r\n return this._isVisible;\r\n }\r\n\r\n /**\r\n * Updates the table for a particular unit. Used when an option as changed or\r\n * whenever the class list might need to be refreshed.\r\n * @param unit\r\n * @private\r\n */\r\n _update(unit: Unit | 'clock' | 'calendar' | 'all'): void {\r\n if (!this.widget) return;\r\n //todo do I want some kind of error catching or other guards here?\r\n switch (unit) {\r\n case Unit.seconds:\r\n this._secondDisplay._update();\r\n break;\r\n case Unit.minutes:\r\n this._minuteDisplay._update();\r\n break;\r\n case Unit.hours:\r\n this._hourDisplay._update();\r\n break;\r\n case Unit.date:\r\n this._dateDisplay._update();\r\n break;\r\n case Unit.month:\r\n this._monthDisplay._update();\r\n break;\r\n case Unit.year:\r\n this._yearDisplay._update();\r\n break;\r\n case 'clock':\r\n this._timeDisplay._update();\r\n this._update(Unit.hours);\r\n this._update(Unit.minutes);\r\n this._update(Unit.seconds);\r\n break;\r\n case 'calendar':\r\n this._update(Unit.date);\r\n this._update(Unit.year);\r\n this._update(Unit.month);\r\n this._decadeDisplay._update();\r\n this._updateCalendarHeader();\r\n break;\r\n case 'all':\r\n if (this._hasTime) {\r\n this._update('clock');\r\n }\r\n if (this._hasDate) {\r\n this._update('calendar');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Shows the picker and creates a Popper instance if needed.\r\n * Add document click event to hide when clicking outside the picker.\r\n * @fires Events#show\r\n */\r\n show(): void {\r\n if (this.widget == undefined) {\r\n if (\r\n this._context._options.useCurrent &&\r\n !this._context._options.defaultDate &&\r\n !this._context._input?.value\r\n ) {\r\n //todo in the td4 branch a pr changed this to allow granularity\r\n const date = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n if (!this._context._options.keepInvalid) {\r\n let tries = 0;\r\n let direction = 1;\r\n if (this._context._options.restrictions.maxDate?.isBefore(date)) {\r\n direction = -1;\r\n }\r\n while (!this._context._validation.isValid(date)) {\r\n date.manipulate(direction, Unit.date);\r\n if (tries > 31) break;\r\n tries++;\r\n }\r\n }\r\n this._context.dates._setValue(date);\r\n }\r\n\r\n if (this._context._options.defaultDate) {\r\n this._context.dates._setValue(this._context._options.defaultDate);\r\n }\r\n\r\n this._buildWidget();\r\n if (this._hasDate) {\r\n this._showMode();\r\n }\r\n\r\n if (!this._context._options.display.inline) {\r\n document.body.appendChild(this.widget);\r\n\r\n this._popperInstance = createPopper(\r\n this._context._element,\r\n this.widget,\r\n {\r\n modifiers: [\r\n /* {\r\n name: 'offset',\r\n options: {\r\n offset: [2, 8],\r\n },\r\n },*/\r\n { name: 'eventListeners', enabled: true },\r\n ],\r\n placement: 'bottom-start',\r\n }\r\n );\r\n } else {\r\n this._context._element.appendChild(this.widget);\r\n }\r\n\r\n if (this._context._options.display.viewMode == 'clock') {\r\n this._context._action.do(\r\n {\r\n currentTarget: this.widget.querySelector(\r\n `.${Namespace.css.timeContainer}`\r\n ),\r\n },\r\n ActionTypes.showClock\r\n );\r\n }\r\n\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.addEventListener('click', this._actionsClickEvent)\r\n );\r\n\r\n // show the clock when using sideBySide\r\n if (this._context._options.display.sideBySide) {\r\n this._timeDisplay._update();\r\n (\r\n this.widget.getElementsByClassName(\r\n Namespace.css.clockContainer\r\n )[0] as HTMLElement\r\n ).style.display = 'grid';\r\n }\r\n }\r\n\r\n this.widget.classList.add(Namespace.css.show);\r\n if (!this._context._options.display.inline) {\r\n this._popperInstance.update();\r\n document.addEventListener('click', this._documentClickEvent);\r\n }\r\n this._context._triggerEvent({ type: Namespace.events.show });\r\n this._isVisible = true;\r\n }\r\n\r\n /**\r\n * Changes the calendar view mode. E.g. month <-> year\r\n * @param direction -/+ number to move currentViewMode\r\n * @private\r\n */\r\n _showMode(direction?: number): void {\r\n if (!this.widget) {\r\n return;\r\n }\r\n if (direction) {\r\n const max = Math.max(\r\n this._context._minViewModeNumber,\r\n Math.min(3, this._context._currentViewMode + direction)\r\n );\r\n if (this._context._currentViewMode == max) return;\r\n this._context._currentViewMode = max;\r\n }\r\n\r\n this.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div:not(.${Namespace.css.clockContainer})`\r\n )\r\n .forEach((e: HTMLElement) => (e.style.display = 'none'));\r\n\r\n const datePickerMode = DatePickerModes[this._context._currentViewMode];\r\n let picker: HTMLElement = this.widget.querySelector(\r\n `.${datePickerMode.className}`\r\n );\r\n\r\n switch (datePickerMode.className) {\r\n case Namespace.css.decadesContainer:\r\n this._decadeDisplay._update();\r\n break;\r\n case Namespace.css.yearsContainer:\r\n this._yearDisplay._update();\r\n break;\r\n case Namespace.css.monthsContainer:\r\n this._monthDisplay._update();\r\n break;\r\n case Namespace.css.daysContainer:\r\n this._dateDisplay._update();\r\n break;\r\n }\r\n\r\n picker.style.display = 'grid';\r\n this._updateCalendarHeader();\r\n }\r\n\r\n _updateCalendarHeader() {\r\n const showing = [\r\n ...this.widget.querySelector(\r\n `.${Namespace.css.dateContainer} div[style*=\"display: grid\"]`\r\n ).classList,\r\n ].find((x) => x.startsWith(Namespace.css.dateContainer));\r\n\r\n const [previous, switcher, next] = this._context._display.widget\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switch (showing) {\r\n case Namespace.css.decadesContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousCentury\r\n );\r\n switcher.setAttribute('title', '');\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextCentury\r\n );\r\n break;\r\n case Namespace.css.yearsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousDecade\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDecade\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextDecade\r\n );\r\n break;\r\n case Namespace.css.monthsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousYear\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectYear\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextYear\r\n );\r\n break;\r\n case Namespace.css.daysContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousMonth\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectMonth\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextMonth\r\n );\r\n switcher.innerText = this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n });\r\n break;\r\n }\r\n switcher.innerText = switcher.getAttribute(showing);\r\n }\r\n\r\n /**\r\n * Hides the picker if needed.\r\n * Remove document click event to hide when clicking outside the picker.\r\n * @fires Events#hide\r\n */\r\n hide(): void {\r\n if (!this.widget || !this._isVisible) return;\r\n\r\n this.widget.classList.remove(Namespace.css.show);\r\n\r\n if (this._isVisible) {\r\n this._context._triggerEvent({\r\n type: Namespace.events.hide,\r\n date: this._context._unset\r\n ? null\r\n : this._context.dates.lastPicked\r\n ? this._context.dates.lastPicked.clone\r\n : void 0,\r\n } as HideEvent);\r\n this._isVisible = false;\r\n }\r\n\r\n document.removeEventListener('click', this._documentClickEvent);\r\n }\r\n\r\n /**\r\n * Toggles the picker's open state. Fires a show/hide event depending.\r\n */\r\n toggle() {\r\n return this._isVisible ? this.hide() : this.show();\r\n }\r\n\r\n /**\r\n * Removes document and data-action click listener and reset the widget\r\n * @private\r\n */\r\n _dispose() {\r\n document.removeEventListener('click', this._documentClickEvent);\r\n if (!this.widget) return;\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.removeEventListener('click', this._actionsClickEvent)\r\n );\r\n this.widget.parentNode.removeChild(this.widget);\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Builds the widgets html template.\r\n * @private\r\n */\r\n private _buildWidget(): HTMLElement {\r\n const template = document.createElement('div');\r\n template.classList.add(Namespace.css.widget);\r\n\r\n const dateView = document.createElement('div');\r\n dateView.classList.add(Namespace.css.dateContainer);\r\n dateView.append(\r\n this._headTemplate,\r\n this._decadeDisplay._picker,\r\n this._yearDisplay._picker,\r\n this._monthDisplay._picker,\r\n this._dateDisplay._picker\r\n );\r\n\r\n const timeView = document.createElement('div');\r\n timeView.classList.add(Namespace.css.timeContainer);\r\n timeView.appendChild(this._timeDisplay._picker);\r\n timeView.appendChild(this._hourDisplay._picker);\r\n timeView.appendChild(this._minuteDisplay._picker);\r\n timeView.appendChild(this._secondDisplay._picker);\r\n\r\n const toolbar = document.createElement('div');\r\n toolbar.classList.add(Namespace.css.toolbar);\r\n toolbar.append(...this._toolbar);\r\n\r\n if (this._context._options.display.inline) {\r\n template.classList.add(Namespace.css.inline);\r\n }\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n template.classList.add('calendarWeeks');\r\n }\r\n\r\n if (\r\n this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n template.classList.add(Namespace.css.sideBySide);\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n const row = document.createElement('div');\r\n row.classList.add('td-row');\r\n dateView.classList.add('td-half');\r\n timeView.classList.add('td-half');\r\n\r\n row.appendChild(dateView);\r\n row.appendChild(timeView);\r\n template.appendChild(row);\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n this._widget = template;\r\n return;\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n if (this._hasDate) {\r\n if (this._hasTime) {\r\n dateView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode !== 'clock')\r\n dateView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(dateView);\r\n }\r\n\r\n if (this._hasTime) {\r\n if (this._hasDate) {\r\n timeView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode === 'clock')\r\n timeView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(timeView);\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n const arrow = document.createElement('div');\r\n arrow.classList.add('arrow');\r\n arrow.setAttribute('data-popper-arrow', '');\r\n template.appendChild(arrow);\r\n\r\n this._widget = template;\r\n }\r\n\r\n /**\r\n * Returns true if the hours, minutes, or seconds component is turned on\r\n */\r\n get _hasTime(): boolean {\r\n return (\r\n this._context._options.display.components.clock &&\r\n (this._context._options.display.components.hours ||\r\n this._context._options.display.components.minutes ||\r\n this._context._options.display.components.seconds)\r\n );\r\n }\r\n\r\n /**\r\n * Returns true if the year, month, or date component is turned on\r\n */\r\n get _hasDate(): boolean {\r\n return (\r\n this._context._options.display.components.calendar &&\r\n (this._context._options.display.components.year ||\r\n this._context._options.display.components.month ||\r\n this._context._options.display.components.date)\r\n );\r\n }\r\n\r\n /**\r\n * Get the toolbar html based on options like buttons.today\r\n * @private\r\n */\r\n get _toolbar(): HTMLElement[] {\r\n const toolbar = [];\r\n\r\n if (this._context._options.display.buttons.today) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.today);\r\n div.setAttribute('title', this._context._options.localization.today);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.today)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (\r\n !this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n let title, icon;\r\n if (this._context._options.display.viewMode === 'clock') {\r\n title = this._context._options.localization.selectDate;\r\n icon = this._context._options.display.icons.date;\r\n } else {\r\n title = this._context._options.localization.selectTime;\r\n icon = this._context._options.display.icons.time;\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.togglePicker);\r\n div.setAttribute('title', title);\r\n\r\n div.appendChild(this._iconTag(icon));\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.clear) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.clear);\r\n div.setAttribute('title', this._context._options.localization.clear);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.clear)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.close) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.close);\r\n div.setAttribute('title', this._context._options.localization.close);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.close)\r\n );\r\n toolbar.push(div);\r\n }\r\n\r\n return toolbar;\r\n }\r\n\r\n /***\r\n * Builds the base header template with next and previous icons\r\n * @private\r\n */\r\n get _headTemplate(): HTMLElement {\r\n const calendarHeader = document.createElement('div');\r\n calendarHeader.classList.add(Namespace.css.calendarHeader);\r\n\r\n const previous = document.createElement('div');\r\n previous.classList.add(Namespace.css.previous);\r\n previous.setAttribute('data-action', ActionTypes.previous);\r\n previous.appendChild(\r\n this._iconTag(this._context._options.display.icons.previous)\r\n );\r\n\r\n const switcher = document.createElement('div');\r\n switcher.classList.add(Namespace.css.switch);\r\n switcher.setAttribute('data-action', ActionTypes.pickerSwitch);\r\n\r\n const next = document.createElement('div');\r\n next.classList.add(Namespace.css.next);\r\n next.setAttribute('data-action', ActionTypes.next);\r\n next.appendChild(this._iconTag(this._context._options.display.icons.next));\r\n\r\n calendarHeader.append(previous, switcher, next);\r\n return calendarHeader;\r\n }\r\n\r\n /**\r\n * Builds an icon tag as either an ``\r\n * or with icons.type is `sprites` then an svg tag instead\r\n * @param iconClass\r\n * @private\r\n */\r\n _iconTag(iconClass: string): HTMLElement {\r\n if (this._context._options.display.icons.type === 'sprites') {\r\n const svg = document.createElement('svg');\r\n svg.innerHTML = ``;\r\n return svg;\r\n }\r\n const icon = document.createElement('i');\r\n DOMTokenList.prototype.add.apply(icon.classList, iconClass.split(' '));\r\n return icon;\r\n }\r\n\r\n /**\r\n * A document click event to hide the widget if click is outside\r\n * @private\r\n * @param e MouseEvent\r\n */\r\n private _documentClickEvent = (e: MouseEvent) => {\r\n if (this._context._options.display.keepOpen ||\r\n this._context._options.debug ||\r\n (window as any).debug) return;\r\n\r\n if (\r\n this._isVisible &&\r\n !e.composedPath().includes(this.widget) && // click inside the widget\r\n !e.composedPath()?.includes(this._context._element) // click on the element\r\n ) {\r\n this.hide();\r\n }\r\n };\r\n\r\n /**\r\n * Click event for any action like selecting a date\r\n * @param e MouseEvent\r\n * @private\r\n */\r\n private _actionsClickEvent = (e: MouseEvent) => {\r\n this._context._action.do(e);\r\n };\r\n\r\n /**\r\n * Causes the widget to get rebuilt on next show. If the picker is already open\r\n * then hide and reshow it.\r\n * @private\r\n */\r\n _rebuild() {\r\n const wasVisible = this._isVisible;\r\n if (wasVisible) this.hide();\r\n this._dispose();\r\n if (wasVisible) {\r\n this.show();\r\n }\r\n }\r\n}\r\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Dates from './dates';\n\n/**\n * Main class for date validation rules based on the options provided.\n */\nexport default class Validation {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Checks to see if the target date is valid based on the rules provided in the options.\n * Granularity can be provide to chek portions of the date instead of the whole.\n * @param targetDate\n * @param granularity\n */\n isValid(targetDate: DateTime, granularity?: Unit): boolean {\n if (\n this._context._options.restrictions.disabledDates.length > 0 &&\n this._isInDisabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledDates.length > 0 &&\n !this._isInEnabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.daysOfWeekDisabled?.length > 0 &&\n this._context._options.restrictions.daysOfWeekDisabled.indexOf(\n targetDate.weekDay\n ) !== -1\n ) {\n return false;\n }\n\n if (\n this._context._options.restrictions.minDate &&\n targetDate.isBefore(\n this._context._options.restrictions.minDate,\n granularity\n )\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.maxDate &&\n targetDate.isAfter(\n this._context._options.restrictions.maxDate,\n granularity\n )\n ) {\n return false;\n }\n\n if (\n granularity === Unit.hours ||\n granularity === Unit.minutes ||\n granularity === Unit.seconds\n ) {\n if (\n this._context._options.restrictions.disabledHours.length > 0 &&\n this._isInDisabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledHours.length > 0 &&\n !this._isInEnabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.disabledTimeIntervals.length > 0\n ) {\n for (\n let i = 0;\n i < this._context._options.restrictions.disabledTimeIntervals.length;\n i++\n ) {\n if (\n targetDate.isBetween(\n this._context._options.restrictions.disabledTimeIntervals[i].from,\n this._context._options.restrictions.disabledTimeIntervals[i].to\n )\n )\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Checks to see if the disabledDates option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInDisabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledDates ||\n this._context._options.restrictions.disabledDates.length === 0\n )\n return false;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.disabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the enabledDates option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInEnabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledDates ||\n this._context._options.restrictions.enabledDates.length === 0\n )\n return true;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.enabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the disabledHours option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInDisabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledHours ||\n this._context._options.restrictions.disabledHours.length === 0\n )\n return false;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.disabledHours.find(\n (x) => x === formattedDate\n );\n }\n\n /**\n * Checks to see if the enabledHours option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInEnabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledHours ||\n this._context._options.restrictions.enabledHours.length === 0\n )\n return true;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.enabledHours.find(\n (x) => x === formattedDate\n );\n }\n}\n","import Display from './display/index';\nimport Validation from './validation';\nimport Dates from './dates';\nimport Actions, { ActionTypes } from './actions';\nimport { DatePickerModes, DefaultOptions } from './conts';\nimport { DateTime, DateTimeFormatOptions, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options, { OptionConverter } from './options';\nimport {\n BaseEvent,\n ChangeEvent,\n ViewUpdateEvent,\n FailEvent,\n} from './event-types';\n\n/**\n * A robust and powerful date/time picker component.\n */\nclass TempusDominus {\n dates: Dates;\n\n _options: Options;\n _currentViewMode = 0;\n _subscribers: { [key: string]: ((event: any) => {})[] } = {};\n _element: HTMLElement;\n _input: HTMLInputElement;\n _unset: boolean;\n _minViewModeNumber = 0;\n _display: Display;\n _validation: Validation;\n _action: Actions;\n private _isDisabled = false;\n private _notifyChangeEventContext = 0;\n private _toggle: HTMLElement;\n private _currentPromptTimeTimeout: any;\n\n constructor(element: HTMLElement, options: Options = {} as Options) {\n if (!element) {\n Namespace.errorMessages.mustProvideElement;\n }\n this._element = element;\n this._options = this._initializeOptions(options, DefaultOptions, true);\n this._viewDate.setLocale(this._options.localization.locale);\n this._unset = true;\n\n this._display = new Display(this);\n this._validation = new Validation(this);\n this.dates = new Dates(this);\n this._action = new Actions(this);\n\n this._initializeInput();\n this._initializeToggle();\n\n if (this._options.display.inline) this._display.show();\n }\n\n _viewDate = new DateTime();\n\n get viewDate() {\n return this._viewDate;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Update the picker options. If `reset` is provide `options` will be merged with DefaultOptions instead.\n * @param options\n * @param reset\n * @public\n */\n updateOptions(options, reset = false): void {\n if (reset) this._options = this._initializeOptions(options, DefaultOptions);\n else this._options = this._initializeOptions(options, this._options);\n this._display._rebuild();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Toggles the picker open or closed. If the picker is disabled, nothing will happen.\n * @public\n */\n toggle(): void {\n if (this._isDisabled) return;\n this._display.toggle();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Shows the picker unless the picker is disabled.\n * @public\n */\n show(): void {\n if (this._isDisabled) return;\n this._display.show();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker unless the picker is disabled.\n * @public\n */\n hide(): void {\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Disables the picker and the target input field.\n * @public\n */\n disable(): void {\n this._isDisabled = true;\n // todo this might be undesired. If a dev disables the input field to\n // only allow using the picker, this will break that.\n this._input?.setAttribute('disabled', 'disabled');\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Enables the picker and the target input field.\n * @public\n */\n enable(): void {\n this._isDisabled = false;\n this._input?.removeAttribute('disabled');\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Clears all the selected dates\n * @public\n */\n clear(): void {\n this.dates.clear();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Allows for a direct subscription to picker events, without having to use addEventListener on the element.\n * @param eventTypes See Namespace.Events\n * @param callbacks Function to call when event is triggered\n * @public\n */\n subscribe(\n eventTypes: string | string[],\n callbacks: (event: any) => void | ((event: any) => void)[]\n ): { unsubscribe: void }[] {\n if (typeof eventTypes === 'string') {\n eventTypes = [eventTypes];\n }\n let callBackArray = [];\n if (!Array.isArray(callbacks)) {\n callBackArray = [callbacks];\n } else {\n callBackArray = callbacks;\n }\n\n if (eventTypes.length !== callBackArray.length) {\n Namespace.errorMessages.subscribeMismatch;\n }\n\n const returnArray = [];\n\n for (let i = 0; i < eventTypes.length; i++) {\n const eventType = eventTypes[i];\n if (!Array.isArray(this._subscribers[eventType])) {\n this._subscribers[eventType] = [];\n }\n\n this._subscribers[eventType].push(callBackArray[i]);\n\n returnArray.push({\n unsubscribe: this._unsubscribe.bind(\n this,\n eventType,\n this._subscribers[eventType].length - 1\n ),\n });\n\n if (eventTypes.length === 1) {\n return returnArray[0];\n }\n }\n\n return returnArray;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker and removes event listeners\n */\n dispose() {\n this._display.hide();\n // this will clear the document click event listener\n this._display._dispose();\n this._input?.removeEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input?.removeEventListener('click', this._toggleClickEvent);\n }\n this._toggle.removeEventListener('click', this._toggleClickEvent);\n this._subscribers = {};\n }\n\n /**\n * Triggers an event like ChangeEvent when the picker has updated the value\n * of a selected date.\n * @param event Accepts a BaseEvent object.\n * @private\n */\n _triggerEvent(event: BaseEvent) {\n // checking hasOwnProperty because the BasicEvent also falls through here otherwise\n if ((event as ChangeEvent) && event.hasOwnProperty('date')) {\n const { date, oldDate, isClear } = event as ChangeEvent;\n // this was to prevent a max call stack error\n // https://github.com/tempusdominus/core/commit/15a280507f5277b31b0b3319ab1edc7c19a000fb\n // todo see if this is still needed or if there's a cleaner way\n this._notifyChangeEventContext++;\n if (\n (date && oldDate && date.isSame(oldDate)) ||\n (!isClear && !date && !oldDate) ||\n this._notifyChangeEventContext > 1\n ) {\n this._notifyChangeEventContext = 0;\n return;\n }\n this._handleAfterChangeEvent(event as ChangeEvent);\n }\n\n this._element.dispatchEvent(\n new CustomEvent(event.type, { detail: event as any })\n );\n\n if ((window as any).jQuery) {\n const $ = (window as any).jQuery;\n $(this._element).trigger(event);\n }\n\n const publish = () => {\n // return if event is not subscribed\n if (!Array.isArray(this._subscribers[event.type])) {\n return;\n }\n\n // Trigger callback for each subscriber\n this._subscribers[event.type].forEach((callback) => {\n callback(event);\n });\n };\n\n publish();\n\n this._notifyChangeEventContext = 0;\n }\n\n /**\n * Fires a ViewUpdate event when, for example, the month view is changed.\n * @param {Unit} unit\n * @private\n */\n _viewUpdate(unit: Unit) {\n this._triggerEvent({\n type: Namespace.events.update,\n change: unit,\n viewDate: this._viewDate.clone,\n } as ViewUpdateEvent);\n }\n\n private _unsubscribe(eventName, index) {\n this._subscribers[eventName].splice(index, 1);\n }\n\n /**\n * Merges two Option objects together and validates options type\n * @param config new Options\n * @param mergeTo Options to merge into\n * @param includeDataset When true, the elements data-td attributes will be included in the\n * @private\n */\n private _initializeOptions(\n config: Options,\n mergeTo: Options,\n includeDataset = false\n ): Options {\n config = OptionConverter._mergeOptions(config, mergeTo);\n if (includeDataset)\n config = OptionConverter._dataToOptions(this._element, config);\n\n OptionConverter._validateConflcits(config);\n\n config.viewDate = config.viewDate.setLocale(config.localization.locale);\n\n if (!this._viewDate.isSame(config.viewDate)) {\n this._viewDate = config.viewDate;\n }\n\n /**\n * Sets the minimum view allowed by the picker. For example the case of only\n * allowing year and month to be selected but not date.\n */\n if (config.display.components.year) {\n this._minViewModeNumber = 2;\n }\n if (config.display.components.month) {\n this._minViewModeNumber = 1;\n }\n if (config.display.components.date) {\n this._minViewModeNumber = 0;\n }\n\n this._currentViewMode = Math.max(\n this._minViewModeNumber,\n this._currentViewMode\n );\n\n // Update view mode if needed\n if (\n DatePickerModes[this._currentViewMode].name !== config.display.viewMode\n ) {\n this._currentViewMode = Math.max(\n DatePickerModes.findIndex((x) => x.name === config.display.viewMode),\n this._minViewModeNumber\n );\n }\n\n // defaults the input format based on the components enabled\n if (config.hooks.inputFormat === undefined) {\n const components = config.display.components;\n config.hooks.inputFormat = (date: DateTime) => {\n return date.format({\n year: components.calendar && components.year ? 'numeric' : undefined,\n month:\n components.calendar && components.month ? '2-digit' : undefined,\n day: components.calendar && components.date ? '2-digit' : undefined,\n hour:\n components.clock && components.hours\n ? components.useTwentyfourHour\n ? '2-digit'\n : 'numeric'\n : undefined,\n minute:\n components.clock && components.minutes ? '2-digit' : undefined,\n second:\n components.clock && components.seconds ? '2-digit' : undefined,\n hour12: !components.useTwentyfourHour,\n });\n };\n }\n\n if (this._display?.isVisible) {\n this._display._update('all');\n }\n\n return config;\n }\n\n /**\n * Checks if an input field is being used, attempts to locate one and sets an\n * event listener if found.\n * @private\n */\n private _initializeInput() {\n if (this._element.tagName == 'INPUT') {\n this._input = this._element as HTMLInputElement;\n } else {\n let query = this._element.dataset.tdTargetInput;\n if (query == undefined || query == 'nearest') {\n this._input = this._element.querySelector('input');\n } else {\n this._input = this._element.querySelector(query);\n }\n }\n\n if (!this._input) return;\n\n this._input.addEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input.addEventListener('click', this._toggleClickEvent);\n }\n\n if (this._input.value) {\n this._inputChangeEvent();\n }\n }\n\n /**\n * Attempts to locate a toggle for the picker and sets an event listener\n * @private\n */\n private _initializeToggle() {\n if (this._options.display.inline) return;\n let query = this._element.dataset.tdTargetToggle;\n if (query == 'nearest') {\n query = '[data-td-toggle=\"datetimepicker\"]';\n }\n this._toggle =\n query == undefined ? this._element : this._element.querySelector(query);\n this._toggle.addEventListener('click', this._toggleClickEvent);\n }\n\n /**\n * If the option is enabled this will render the clock view after a date pick.\n * @param e change event\n * @private\n */\n private _handleAfterChangeEvent(e: ChangeEvent) {\n if (\n // options is disabled\n !this._options.promptTimeOnDateChange ||\n this._options.display.inline ||\n this._options.display.sideBySide ||\n // time is disabled\n !this._display._hasTime ||\n // clock component is already showing\n this._display.widget\n ?.getElementsByClassName(Namespace.css.show)[0]\n .classList.contains(Namespace.css.timeContainer)\n )\n return;\n\n // First time ever. If useCurrent option is set to true (default), do nothing\n // because the first date is selected automatically.\n // or date didn't change (time did) or date changed because time did.\n if (\n (!e.oldDate && this._options.useCurrent) ||\n (e.oldDate && e.date?.isSame(e.oldDate))\n ) {\n return;\n }\n\n clearTimeout(this._currentPromptTimeTimeout);\n this._currentPromptTimeTimeout = setTimeout(() => {\n if (this._display.widget) {\n this._action.do(\n {\n currentTarget: this._display.widget.querySelector(\n `.${Namespace.css.switch} div`\n ),\n },\n ActionTypes.togglePicker\n );\n }\n }, this._options.promptTimeOnDateChangeTransitionDelay);\n }\n\n /**\n * Event for when the input field changes. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _inputChangeEvent = () => {\n const setViewDate = () => {\n if (this.dates.lastPicked) this._viewDate = this.dates.lastPicked;\n };\n\n const value = this._input.value;\n if (this._options.multipleDates) {\n try {\n const valueSplit = value.split(this._options.multipleDatesSeparator);\n for (let i = 0; i < valueSplit.length; i++) {\n if (this._options.hooks.inputParse) {\n this.dates.set(\n this._options.hooks.inputParse(valueSplit[i]),\n i,\n 'input'\n );\n } else {\n this.dates.set(valueSplit[i], i, 'input');\n }\n }\n setViewDate();\n } catch {\n console.warn(\n 'TD: Something went wrong trying to set the multidate values from the input field.'\n );\n }\n } else {\n if (this._options.hooks.inputParse) {\n this.dates.set(this._options.hooks.inputParse(value), 0, 'input');\n } else {\n this.dates.set(value, 0, 'input');\n }\n setViewDate();\n }\n };\n\n /**\n * Event for when the toggle is clicked. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _toggleClickEvent = () => {\n this.toggle();\n };\n}\n\nexport {\n TempusDominus,\n Namespace,\n DefaultOptions,\n DateTime,\n Options,\n Unit,\n DateTimeFormatOptions,\n};\n"],"names":["SecondDisplay"],"mappings":"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"} \ No newline at end of file diff --git a/docs/6/js/tempus-dominus.js b/docs/6/js/tempus-dominus.js index 448178c9e..3405567d6 100644 --- a/docs/6/js/tempus-dominus.js +++ b/docs/6/js/tempus-dominus.js @@ -7,7 +7,7 @@ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@popperjs/core')) : typeof define === 'function' && define.amd ? define(['exports', '@popperjs/core'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.tempusDominus = {}, global.Popper)); -}(this, (function (exports, core) { 'use strict'; +})(this, (function (exports, core) { 'use strict'; exports.Unit = void 0; (function (Unit) { @@ -769,7 +769,6 @@ seconds: false, useTwentyfourHour: false, }, - inputFormat: undefined, inline: false, }, stepping: 1, @@ -813,6 +812,10 @@ multipleDatesSeparator: '; ', promptTimeOnDateChange: false, promptTimeOnDateChangeTransitionDelay: 200, + hooks: { + inputParse: undefined, + inputFormat: undefined, + }, }; const DatePickerModes = [ { @@ -1033,7 +1036,7 @@ break; case ActionTypes.selectHour: let hour = +currentTarget.getAttribute('data-value'); - if (lastPicked.hours >= 12) + if (lastPicked.hours >= 12 && !this._context._options.display.components.useTwentyfourHour) hour += 12; lastPicked.hours = hour; this._context.dates._setValue(lastPicked, this._context.dates.lastPickedIndex); @@ -1367,6 +1370,7 @@ static _mergeOptions(providedOptions, mergeTo) { const newOptions = {}; let path = ''; + const ignoreProperties = ['inputParse', 'inputFormat']; const processKey = (key, value, providedType, defaultType) => { switch (key) { case 'defaultDate': { @@ -1479,6 +1483,7 @@ if (!keyOptions.includes(value)) Namespace.errorMessages.unexpectedOptionValue(path.substring(1), value, keyOptions); return value; + case 'inputParse': case 'inputFormat': return value; default: @@ -1535,7 +1540,7 @@ } path += `.${key}`; copyTo[key] = processKey(key, value, providedType, defaultType); - if (typeof defaultOptionValue !== 'object' || key === 'inputFormat') { + if (typeof defaultOptionValue !== 'object' || ignoreProperties.includes(key)) { path = path.substring(0, path.lastIndexOf(`.${key}`)); return; } @@ -1613,9 +1618,9 @@ * @private */ static _dateTypeCheck(d) { - if (d.constructor.name === 'DateTime') + if (d.constructor.name === DateTime.name) return d; - if (d.constructor.name === 'Date') { + if (d.constructor.name === Date.name) { return DateTime.convert(d); } if (typeof d === typeof '') { @@ -1664,12 +1669,12 @@ * @param optionName Provides text to error messages e.g. disabledDates */ static _dateConversion(d, optionName) { - if (typeof d === typeof '' && optionName !== 'input field') { + if (typeof d === typeof '' && optionName !== 'input') { Namespace.errorMessages.dateString(); } const converted = this._dateTypeCheck(d); if (!converted) { - Namespace.errorMessages.failedToParseDate(optionName, d); + Namespace.errorMessages.failedToParseDate(optionName, d, optionName === 'input'); } return converted; } @@ -1743,11 +1748,9 @@ set(value, index, from = 'date.set') { if (!value) this._setValue(value, index); - const converted = OptionConverter._dateConversion(value, 'input field'); - if (converted !== undefined) + const converted = OptionConverter._dateConversion(value, from); + if (converted) this._setValue(converted, index); - else - Namespace.errorMessages.failedToParseDate(from, value, true); } /** * Returns true if the `targetDate` is part of the selected dates array. @@ -1821,10 +1824,10 @@ const updateInput = () => { if (!this._context._input) return; - let newValue = (target === null || target === void 0 ? void 0 : target.format(this._context._options.display.inputFormat)) || ''; + let newValue = this._context._options.hooks.inputFormat(target); if (this._context._options.multipleDates) { newValue = this._dates - .map((d) => d.format(this._context._options.display.inputFormat)) + .map((d) => this._context._options.hooks.inputFormat(d)) .join(this._context._options.multipleDatesSeparator); } if (this._context._input.value != newValue) @@ -2399,12 +2402,14 @@ */ this._documentClickEvent = (e) => { var _a; + if (this._context._options.display.keepOpen || + this._context._options.debug || + window.debug) + return; if (this._isVisible && !e.composedPath().includes(this.widget) && // click inside the widget - !((_a = e.composedPath()) === null || _a === void 0 ? void 0 : _a.includes(this._context._element)) && // click on the element - (!this._context._options.display.keepOpen || - !this._context._options.debug || - !window.debug)) { + !((_a = e.composedPath()) === null || _a === void 0 ? void 0 : _a.includes(this._context._element)) // click on the element + ) { this.hide(); } }; @@ -2582,7 +2587,7 @@ this._context._currentViewMode = max; } this.widget - .querySelectorAll(`.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div`) + .querySelectorAll(`.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div:not(.${Namespace.css.clockContainer})`) .forEach((e) => (e.style.display = 'none')); const datePickerMode = DatePickerModes[this._context._currentViewMode]; let picker = this.widget.querySelector(`.${datePickerMode.className}`); @@ -3000,20 +3005,36 @@ * @private */ this._inputChangeEvent = () => { + const setViewDate = () => { + if (this.dates.lastPicked) + this._viewDate = this.dates.lastPicked; + }; const value = this._input.value; if (this._options.multipleDates) { try { const valueSplit = value.split(this._options.multipleDatesSeparator); for (let i = 0; i < valueSplit.length; i++) { - this.dates.set(valueSplit[i], i, 'input'); + if (this._options.hooks.inputParse) { + this.dates.set(this._options.hooks.inputParse(valueSplit[i]), i, 'input'); + } + else { + this.dates.set(valueSplit[i], i, 'input'); + } } + setViewDate(); } catch (_a) { console.warn('TD: Something went wrong trying to set the multidate values from the input field.'); } } else { - this.dates.set(value, 0, 'input'); + if (this._options.hooks.inputParse) { + this.dates.set(this._options.hooks.inputParse(value), 0, 'input'); + } + else { + this.dates.set(value, 0, 'input'); + } + setViewDate(); } }; /** @@ -3260,20 +3281,22 @@ this._currentViewMode = Math.max(DatePickerModes.findIndex((x) => x.name === config.display.viewMode), this._minViewModeNumber); } // defaults the input format based on the components enabled - if (config.display.inputFormat === undefined) { + if (config.hooks.inputFormat === undefined) { const components = config.display.components; - config.display.inputFormat = { - year: components.calendar && components.year ? 'numeric' : undefined, - month: components.calendar && components.month ? '2-digit' : undefined, - day: components.calendar && components.date ? '2-digit' : undefined, - hour: components.clock && components.hours - ? components.useTwentyfourHour - ? '2-digit' - : 'numeric' - : undefined, - minute: components.clock && components.minutes ? '2-digit' : undefined, - second: components.clock && components.seconds ? '2-digit' : undefined, - hour12: !components.useTwentyfourHour, + config.hooks.inputFormat = (date) => { + return date.format({ + year: components.calendar && components.year ? 'numeric' : undefined, + month: components.calendar && components.month ? '2-digit' : undefined, + day: components.calendar && components.date ? '2-digit' : undefined, + hour: components.clock && components.hours + ? components.useTwentyfourHour + ? '2-digit' + : 'numeric' + : undefined, + minute: components.clock && components.minutes ? '2-digit' : undefined, + second: components.clock && components.seconds ? '2-digit' : undefined, + hour12: !components.useTwentyfourHour, + }); }; } if ((_a = this._display) === null || _a === void 0 ? void 0 : _a.isVisible) { @@ -3367,5 +3390,5 @@ Object.defineProperty(exports, '__esModule', { value: true }); -}))); +})); //# sourceMappingURL=tempus-dominus.js.map diff --git a/docs/6/js/tempus-dominus.js.map b/docs/6/js/tempus-dominus.js.map index 41b033f68..a7d5bbe68 100644 --- a/docs/6/js/tempus-dominus.js.map +++ b/docs/6/js/tempus-dominus.js.map @@ -1 +1 @@ -{"version":3,"file":"tempus-dominus.js","sources":["../../src/js/datetime.ts","../../src/js/errors.ts","../../src/js/namespace.ts","../../src/js/conts.ts","../../src/js/display/collapse.ts","../../src/js/actions.ts","../../src/js/display/calendar/date-display.ts","../../src/js/display/calendar/month-display.ts","../../src/js/options.ts","../../src/js/dates.ts","../../src/js/display/calendar/year-display.ts","../../src/js/display/calendar/decade-display.ts","../../src/js/display/time/time-display.ts","../../src/js/display/time/hour-display.ts","../../src/js/display/time/minute-display.ts","../../src/js/display/time/second-display.ts","../../src/js/display/index.ts","../../src/js/validation.ts","../../src/js/tempus-dominus.ts"],"sourcesContent":["export enum Unit {\n seconds = 'seconds',\n minutes = 'minutes',\n hours = 'hours',\n date = 'date',\n month = 'month',\n year = 'year',\n}\n\nexport interface DateTimeFormatOptions extends Intl.DateTimeFormatOptions {\n timeStyle?: 'short' | 'medium' | 'long';\n dateStyle?: 'short' | 'medium' | 'long' | 'full';\n}\n\n/**\n * For the most part this object behaves exactly the same way\n * as the native Date object with a little extra spice.\n */\nexport class DateTime extends Date {\n /**\n * Used with Intl.DateTimeFormat\n */\n locale = 'default';\n\n /**\n * Chainable way to set the {@link locale}\n * @param value\n */\n setLocale(value: string): this {\n this.locale = value;\n return this;\n }\n\n /**\n * Converts a plain JS date object to a DateTime object.\n * Doing this allows access to format, etc.\n * @param date\n */\n static convert(date: Date): DateTime {\n if (!date) throw `A date is required`;\n return new DateTime(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n );\n }\n\n /**\n * Native date manipulations are not pure functions. This function creates a duplicate of the DateTime object.\n */\n get clone() {\n return new DateTime(\n this.year,\n this.month,\n this.date,\n this.hours,\n this.minutes,\n this.seconds,\n this.getMilliseconds()\n ).setLocale(this.locale);\n }\n\n /**\n * Sets the current date to the start of the {@link unit} provided\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).startOf('month')\n * would return April 1, 2021, 12:00:00.000 AM (midnight)\n * @param unit\n */\n startOf(unit: Unit | 'weekDay'): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n switch (unit) {\n case 'seconds':\n this.setMilliseconds(0);\n break;\n case 'minutes':\n this.setSeconds(0, 0);\n break;\n case 'hours':\n this.setMinutes(0, 0, 0);\n break;\n case 'date':\n this.setHours(0, 0, 0, 0);\n break;\n case 'weekDay':\n this.startOf(Unit.date);\n this.manipulate(0 - this.weekDay, Unit.date);\n break;\n case 'month':\n this.startOf(Unit.date);\n this.setDate(1);\n break;\n case 'year':\n this.startOf(Unit.date);\n this.setMonth(0, 1);\n break;\n }\n return this;\n }\n\n /**\n * Sets the current date to the end of the {@link unit} provided\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).endOf('month')\n * would return April 30, 2021, 11:59:59.999 PM\n * @param unit\n */\n endOf(unit: Unit | 'weekDay'): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n switch (unit) {\n case 'seconds':\n this.setMilliseconds(999);\n break;\n case 'minutes':\n this.setSeconds(59, 999);\n break;\n case 'hours':\n this.setMinutes(59, 59, 999);\n break;\n case 'date':\n this.setHours(23, 59, 59, 999);\n break;\n case 'weekDay':\n this.startOf(Unit.date);\n this.manipulate(6 - this.weekDay, Unit.date);\n break;\n case 'month':\n this.endOf(Unit.date);\n this.manipulate(1, Unit.month);\n this.setDate(0);\n break;\n case 'year':\n this.endOf(Unit.date);\n this.manipulate(1, Unit.year);\n this.setDate(0);\n break;\n }\n return this;\n }\n\n /**\n * Change a {@link unit} value. Value can be positive or negative\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).manipulate(1, 'month')\n * would return May 30, 2021, 11:45:32.984 AM\n * @param value A positive or negative number\n * @param unit\n */\n manipulate(value: number, unit: Unit): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n this[unit] += value;\n return this;\n }\n\n /**\n * Returns a string format.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat\n * for valid templates and locale objects\n * @param template An object. Uses browser defaults otherwise.\n * @param locale Can be a string or an array of strings. Uses browser defaults otherwise.\n */\n format(template: DateTimeFormatOptions, locale = this.locale): string {\n return new Intl.DateTimeFormat(locale, template).format(this);\n }\n\n /**\n * Return true if {@link compare} is before this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isBefore(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() < compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n return (\n this.clone.startOf(unit).valueOf() < compare.clone.startOf(unit).valueOf()\n );\n }\n\n /**\n * Return true if {@link compare} is after this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isAfter(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() > compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n return (\n this.clone.startOf(unit).valueOf() > compare.clone.startOf(unit).valueOf()\n );\n }\n\n /**\n * Return true if {@link compare} is same this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isSame(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() === compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n compare = DateTime.convert(compare);\n return (\n this.clone.startOf(unit).valueOf() === compare.startOf(unit).valueOf()\n );\n }\n\n /**\n * Check if this is between two other DateTimes, optionally looking at unit scale. The match is exclusive.\n * @param left\n * @param right\n * @param unit.\n * @param inclusivity. A [ indicates inclusion of a value. A ( indicates exclusion.\n * If the inclusivity parameter is used, both indicators must be passed.\n */\n isBetween(\n left: DateTime,\n right: DateTime,\n unit?: Unit,\n inclusivity: '()' | '[]' | '(]' | '[)' = '()'\n ): boolean {\n if (unit && this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n const leftInclusivity = inclusivity[0] === '(';\n const rightInclusivity = inclusivity[1] === ')';\n\n return (\n ((leftInclusivity\n ? this.isAfter(left, unit)\n : !this.isBefore(left, unit)) &&\n (rightInclusivity\n ? this.isBefore(right, unit)\n : !this.isAfter(right, unit))) ||\n ((leftInclusivity\n ? this.isBefore(left, unit)\n : !this.isAfter(left, unit)) &&\n (rightInclusivity\n ? this.isAfter(right, unit)\n : !this.isBefore(right, unit)))\n );\n }\n\n /**\n * Returns flattened object of the date. Does not include literals\n * @param locale\n * @param template\n */\n parts(\n locale = this.locale,\n template: any = { dateStyle: 'full', timeStyle: 'long' }\n ) {\n const parts = {};\n new Intl.DateTimeFormat(locale, template)\n .formatToParts(this)\n .filter((x) => x.type !== 'literal')\n .forEach((x) => (parts[x.type] = x.value));\n return parts;\n }\n\n /**\n * Shortcut to Date.getSeconds()\n */\n get seconds(): number {\n return this.getSeconds();\n }\n\n /**\n * Shortcut to Date.setSeconds()\n */\n set seconds(value: number) {\n this.setSeconds(value);\n }\n\n /**\n * Returns two digit hours\n */\n get secondsFormatted(): string {\n return this.seconds < 10 ? `0${this.seconds}` : `${this.seconds}`;\n }\n\n /**\n * Shortcut to Date.getMinutes()\n */\n get minutes(): number {\n return this.getMinutes();\n }\n\n /**\n * Shortcut to Date.setMinutes()\n */\n set minutes(value: number) {\n this.setMinutes(value);\n }\n\n /**\n * Returns two digit hours\n */\n get minutesFormatted(): string {\n return this.minutes < 10 ? `0${this.minutes}` : `${this.minutes}`;\n }\n\n /**\n * Shortcut to Date.getHours()\n */\n get hours(): number {\n return this.getHours();\n }\n\n /**\n * Shortcut to Date.setHours()\n */\n set hours(value: number) {\n this.setHours(value);\n }\n\n /**\n * Returns two digit hours\n */\n get hoursFormatted(): string {\n return this.hours < 10 ? `0${this.hours}` : `${this.hours}`;\n }\n\n /**\n * Returns two digit hours but in twelve hour mode e.g. 13 -> 1\n */\n get twelveHoursFormatted(): string {\n let hour = this.hours;\n if (hour > 12) hour = hour - 12;\n if (hour === 0) hour = 12;\n return hour < 10 ? `0${hour}` : `${hour}`;\n }\n\n /**\n * Get the meridiem of the date. E.g. AM or PM.\n * If the {@link locale} provides a \"dayPeriod\" then this will be returned,\n * otherwise it will return AM or PM.\n * @param locale\n */\n meridiem(locale: string = this.locale): string {\n return new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n hour12: true,\n } as any)\n .formatToParts(this)\n .find((p) => p.type === 'dayPeriod')?.value;\n }\n\n /**\n * Shortcut to Date.getDate()\n */\n get date(): number {\n return this.getDate();\n }\n\n /**\n * Shortcut to Date.setDate()\n */\n set date(value: number) {\n this.setDate(value);\n }\n\n /**\n * Return two digit date\n */\n get dateFormatted(): string {\n return this.date < 10 ? `0${this.date}` : `${this.date}`;\n }\n\n // https://github.com/you-dont-need/You-Dont-Need-Momentjs#week-of-year\n /**\n * Gets the week of the year\n */\n get week(): number {\n const startOfYear = new Date(this.year, 0, 1);\n startOfYear.setDate(\n startOfYear.getDate() + (1 - (startOfYear.getDay() % 7))\n );\n return Math.round((this.valueOf() - startOfYear.valueOf()) / 604800000) + 1;\n }\n\n /**\n * Shortcut to Date.getDay()\n */\n get weekDay(): number {\n return this.getDay();\n }\n\n /**\n * Shortcut to Date.getMonth()\n */\n get month(): number {\n return this.getMonth();\n }\n\n /**\n * Shortcut to Date.setMonth()\n */\n set month(value: number) {\n this.setMonth(value);\n }\n\n /**\n * Return two digit, human expected month. E.g. January = 1, December = 12\n */\n get monthFormatted(): string {\n return this.month + 1 < 10 ? `0${this.month}` : `${this.month}`;\n }\n\n /**\n * Shortcut to Date.getFullYear()\n */\n get year(): number {\n return this.getFullYear();\n }\n\n /**\n * Shortcut to Date.setFullYear()\n */\n set year(value: number) {\n this.setFullYear(value);\n }\n}\n","import Namespace from './namespace';\n\nexport class TdError extends Error {\n code: number;\n}\n\nexport class ErrorMessages {\n private base = 'TD:';\n\n //#region out to console\n\n /**\n * Throws an error indicating that a key in the options object is invalid.\n * @param optionName\n */\n unexpectedOption(optionName: string) {\n const error = new TdError(\n `${this.base} Unexpected option: ${optionName} does not match a known option.`\n );\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error indicating that one more keys in the options object is invalid.\n * @param optionName\n */\n unexpectedOptions(optionName: string[]) {\n const error = new TdError(`${this.base}: ${optionName.join(', ')}`);\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error when an option is provide an unsupported value.\n * For example a value of 'cheese' for toolbarPlacement which only supports\n * 'top', 'bottom', 'default'.\n * @param optionName\n * @param badValue\n * @param validOptions\n */\n unexpectedOptionValue(\n optionName: string,\n badValue: string,\n validOptions: string[]\n ) {\n const error = new TdError(\n `${\n this.base\n } Unexpected option value: ${optionName} does not accept a value of \"${badValue}\". Valid values are: ${validOptions.join(\n ', '\n )}`\n );\n error.code = 2;\n throw error;\n }\n\n /**\n * Throws an error when an option value is the wrong type.\n * For example a string value was provided to multipleDates which only\n * supports true or false.\n * @param optionName\n * @param badType\n * @param expectedType\n */\n typeMismatch(optionName: string, badType: string, expectedType: string) {\n const error = new TdError(\n `${this.base} Mismatch types: ${optionName} has a type of ${badType} instead of the required ${expectedType}`\n );\n error.code = 3;\n throw error;\n }\n\n /**\n * Throws an error when an option value is outside of the expected range.\n * For example restrictions.daysOfWeekDisabled excepts a value between 0 and 6.\n * @param optionName\n * @param lower\n * @param upper\n */\n numbersOutOfRage(optionName: string, lower: number, upper: number) {\n const error = new TdError(\n `${this.base} ${optionName} expected an array of number between ${lower} and ${upper}.`\n );\n error.code = 4;\n throw error;\n }\n\n /**\n * Throws an error when a value for a date options couldn't be parsed. Either\n * the option was an invalide string or an invalid Date object.\n * @param optionName\n * @param date\n * @param soft If true, logs a warning instead of an error.\n */\n failedToParseDate(optionName: string, date: any, soft = false) {\n const error = new TdError(\n `${this.base} Could not correctly parse \"${date}\" to a date for ${optionName}.`\n );\n error.code = 5;\n if (!soft) throw error;\n console.warn(error);\n }\n\n /**\n * Throws when an element to attach to was not provided in the constructor.\n */\n mustProvideElement() {\n const error = new TdError(`${this.base} No element was provided.`);\n error.code = 6;\n throw error;\n }\n\n /**\n * Throws if providing an array for the events to subscribe method doesn't have\n * the same number of callbacks. E.g., subscribe([1,2], [1])\n */\n subscribeMismatch() {\n const error = new TdError(\n `${this.base} The subscribed events does not match the number of callbacks`\n );\n error.code = 7;\n throw error;\n }\n\n /**\n * Throws if the configuration has conflicting rules e.g. minDate is after maxDate\n */\n conflictingConfiguration(message?: string) {\n const error = new TdError(\n `${this.base} A configuration value conflicts with another rule. ${message}`\n );\n error.code = 8;\n throw error;\n }\n\n /**\n * Logs a warning if a date option value is provided as a string, instead of\n * a date/datetime object.\n */\n dateString() {\n console.warn(\n `${this.base} Using a string for date options is not recommended unless you specify an ISO string.`\n );\n }\n\n //#endregion\n\n //#region used with notify.error\n\n /**\n * Used with an Error Event type if the user selects a date that\n * fails restriction validation.\n */\n failedToSetInvalidDate = 'Failed to set invalid date';\n\n /**\n * Used with an Error Event type when a user changes the value of the\n * input field directly, and does not provide a valid date.\n */\n failedToParseInput = 'Failed parse input field';\n\n //#endregion\n}\n","import { ErrorMessages } from './errors';\n// this is not the way I want this to stay but nested classes seemed to blown up once its compiled.\nconst NAME = 'tempus-dominus',\n version = '6.0.0-alpha1',\n dataKey = 'td';\n\n/**\n * Events\n */\nclass Events {\n key = `.${dataKey}`;\n\n /**\n * Change event. Fired when the user selects a date.\n * See also EventTypes.ChangeEvent\n */\n change = `change${this.key}`;\n\n /**\n * Emit when the view changes for example from month view to the year view.\n * See also EventTypes.ViewUpdateEvent\n */\n update = `update${this.key}`;\n\n /**\n * Emits when a selected date or value from the input field fails to meet the provided validation rules.\n * See also EventTypes.FailEvent\n */\n error = `error${this.key}`;\n\n /**\n * Show event\n * @event Events#show\n */\n show = `show${this.key}`;\n\n /**\n * Hide event\n * @event Events#hide\n */\n hide = `hide${this.key}`;\n\n // blur and focus are used in the jQuery provider but are otherwise unused.\n // keyup/down will be used later for keybinding options\n\n blur = `blur${this.key}`;\n focus = `focus${this.key}`;\n keyup = `keyup${this.key}`;\n keydown = `keydown${this.key}`;\n}\n\nclass Css {\n /**\n * The outer element for the widget.\n */\n widget = `${NAME}-widget`;\n\n /**\n * Hold the previous, next and switcher divs\n */\n calendarHeader = 'calendar-header';\n\n /**\n * The element for the action to change the calendar view. E.g. month -> year.\n */\n switch = 'picker-switch';\n\n /**\n * The elements for all of the toolbar options\n */\n toolbar = 'toolbar';\n\n /**\n * Disables the hover and rounding affect.\n */\n noHighlight = 'no-highlight';\n\n /**\n * Applied to the widget element when the side by side option is in use.\n */\n sideBySide = 'timepicker-sbs';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> July\n */\n previous = 'previous';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> September\n */\n next = 'next';\n\n /**\n * Applied to any action that would violate any restriction options. ALso applied\n * to an input field if the disabled function is called.\n */\n disabled = 'disabled';\n\n /**\n * Applied to any date that is less than requested view,\n * e.g. the last day of the previous month.\n */\n old = 'old';\n\n /**\n * Applied to any date that is greater than of requested view,\n * e.g. the last day of the previous month.\n */\n new = 'new';\n\n /**\n * Applied to any date that is currently selected.\n */\n active = 'active';\n\n //#region date element\n\n /**\n * The outer most element for the calendar view.\n */\n dateContainer = 'date-container';\n\n /**\n * The outer most element for the decades view.\n */\n decadesContainer = `${this.dateContainer}-decades`;\n\n /**\n * Applied to elements within the decades container, e.g. 2020, 2030\n */\n decade = 'decade';\n\n /**\n * The outer most element for the years view.\n */\n yearsContainer = `${this.dateContainer}-years`;\n\n /**\n * Applied to elements within the years container, e.g. 2021, 2021\n */\n year = 'year';\n\n /**\n * The outer most element for the month view.\n */\n monthsContainer = `${this.dateContainer}-months`;\n\n /**\n * Applied to elements within the month container, e.g. January, February\n */\n month = 'month';\n\n /**\n * The outer most element for the calendar view.\n */\n daysContainer = `${this.dateContainer}-days`;\n\n /**\n * Applied to elements within the day container, e.g. 1, 2..31\n */\n day = 'day';\n\n /**\n * If display.calendarWeeks is enabled, a column displaying the week of year\n * is shown. This class is applied to each cell in that column.\n */\n calendarWeeks = 'cw';\n\n /**\n * Applied to the first row of the calendar view, e.g. Sunday, Monday\n */\n dayOfTheWeek = 'dow';\n\n /**\n * Applied to the current date on the calendar view.\n */\n today = 'today';\n\n /**\n * Applied to the locale's weekend dates on the calendar view, e.g. Sunday, Saturday\n */\n weekend = 'weekend';\n\n //#endregion\n\n //#region time element\n\n /**\n * The outer most element for all time related elements.\n */\n timeContainer = 'time-container';\n\n /**\n * Applied the separator columns between time elements, e.g. hour *:* minute *:* second\n */\n separator = 'separator';\n\n /**\n * The outer most element for the clock view.\n */\n clockContainer = `${this.timeContainer}-clock`;\n\n /**\n * The outer most element for the hours selection view.\n */\n hourContainer = `${this.timeContainer}-hour`;\n\n /**\n * The outer most element for the minutes selection view.\n */\n minuteContainer = `${this.timeContainer}-minute`;\n\n /**\n * The outer most element for the seconds selection view.\n */\n secondContainer = `${this.timeContainer}-second`;\n\n /**\n * Applied to each element in the hours selection view.\n */\n hour = 'hour';\n\n /**\n * Applied to each element in the minutes selection view.\n */\n minute = 'minute';\n\n /**\n * Applied to each element in the seconds selection view.\n */\n second = 'second';\n\n /**\n * Applied AM/PM toggle button.\n */\n toggleMeridiem = 'toggleMeridiem';\n\n //#endregion\n\n //#region collapse\n\n /**\n * Applied the element of the current view mode, e.g. calendar or clock.\n */\n show = 'show';\n\n /**\n * Applied to the currently showing view mode during a transition\n * between calendar and clock views\n */\n collapsing = 'td-collapsing';\n\n /**\n * Applied to the currently hidden view mode.\n */\n collapse = 'td-collapse';\n\n //#endregion\n\n /**\n * Applied to the widget when the option display.inline is enabled.\n */\n inline = 'inline';\n}\n\nexport default class Namespace {\n static NAME = NAME;\n // noinspection JSUnusedGlobalSymbols\n static version = version;\n static dataKey = dataKey;\n\n static events = new Events();\n\n static css = new Css();\n\n static errorMessages = new ErrorMessages();\n}\n","import { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options from './options';\n\nconst DefaultOptions: Options = {\n restrictions: {\n minDate: undefined,\n maxDate: undefined,\n disabledDates: [],\n enabledDates: [],\n daysOfWeekDisabled: [],\n disabledTimeIntervals: [],\n disabledHours: [],\n enabledHours: [],\n },\n display: {\n icons: {\n type: 'icons',\n time: 'fas fa-clock',\n date: 'fas fa-calendar',\n up: 'fas fa-arrow-up',\n down: 'fas fa-arrow-down',\n previous: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n today: 'fas fa-calendar-check',\n clear: 'fas fa-trash',\n close: 'fas fa-times',\n },\n sideBySide: false,\n calendarWeeks: false,\n viewMode: 'calendar',\n toolbarPlacement: 'bottom',\n keepOpen: false,\n buttons: {\n today: false,\n clear: false,\n close: false,\n },\n components: {\n calendar: true,\n date: true,\n month: true,\n year: true,\n decades: true,\n clock: true,\n hours: true,\n minutes: true,\n seconds: false,\n useTwentyfourHour: false,\n },\n inputFormat: undefined,\n inline: false,\n },\n stepping: 1,\n useCurrent: true,\n defaultDate: undefined,\n localization: {\n today: 'Go to today',\n clear: 'Clear selection',\n close: 'Close the picker',\n selectMonth: 'Select Month',\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n selectYear: 'Select Year',\n previousYear: 'Previous Year',\n nextYear: 'Next Year',\n selectDecade: 'Select Decade',\n previousDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n previousCentury: 'Previous Century',\n nextCentury: 'Next Century',\n pickHour: 'Pick Hour',\n incrementHour: 'Increment Hour',\n decrementHour: 'Decrement Hour',\n pickMinute: 'Pick Minute',\n incrementMinute: 'Increment Minute',\n decrementMinute: 'Decrement Minute',\n pickSecond: 'Pick Second',\n incrementSecond: 'Increment Second',\n decrementSecond: 'Decrement Second',\n toggleMeridiem: 'Toggle Meridiem',\n selectTime: 'Select Time',\n selectDate: 'Select Date',\n dayViewHeaderFormat: 'long',\n locale: 'default',\n },\n keepInvalid: false,\n debug: false,\n allowInputToggle: false,\n viewDate: new DateTime(),\n multipleDates: false,\n multipleDatesSeparator: '; ',\n promptTimeOnDateChange: false,\n promptTimeOnDateChangeTransitionDelay: 200,\n};\n\nconst DatePickerModes: {\n name: string;\n className: string;\n unit: Unit;\n step: number;\n}[] = [\n {\n name: 'calendar',\n className: Namespace.css.daysContainer,\n unit: Unit.month,\n step: 1,\n },\n {\n name: 'months',\n className: Namespace.css.monthsContainer,\n unit: Unit.year,\n step: 1,\n },\n {\n name: 'years',\n className: Namespace.css.yearsContainer,\n unit: Unit.year,\n step: 10,\n },\n {\n name: 'decades',\n className: Namespace.css.decadesContainer,\n unit: Unit.year,\n step: 100,\n },\n];\n\nexport { DefaultOptions, DatePickerModes, Namespace };\n","import Namespace from '../namespace';\n\n/**\n * Provides a collapse functionality to the view changes\n */\nexport default class Collapse {\n private timeOut;\n\n /**\n * Flips the show/hide state of `target`\n * @param target html element to affect.\n */\n toggle(target: HTMLElement, callback = undefined) {\n if (target.classList.contains(Namespace.css.show)) {\n this.hide(target, callback);\n } else {\n this.show(target, callback);\n }\n }\n\n /**\n * If `target` is not already showing, then show after the animation.\n * @param target\n */\n show(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse, Namespace.css.show);\n target.style.height = '';\n this.timeOut = null;\n if (callback) callback();\n };\n\n target.style.height = '0';\n target.classList.remove(Namespace.css.collapse);\n target.classList.add(Namespace.css.collapsing);\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n target.style.height = `${target.scrollHeight}px`;\n }\n\n /**\n * If `target` is not already hidden, then hide after the animation.\n * @param target HTML Element\n */\n hide(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n !target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse);\n this.timeOut = null;\n };\n\n target.style.height = `${target.getBoundingClientRect()['height']}px`;\n\n const reflow = (element) => element.offsetHeight;\n\n reflow(target);\n\n target.classList.remove(Namespace.css.collapse, Namespace.css.show);\n target.classList.add(Namespace.css.collapsing);\n target.style.height = '';\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n }\n\n /**\n * Gets the transition duration from the `element` by getting css properties\n * `transition-duration` and `transition-delay`\n * @param element HTML Element\n */\n private getTransitionDurationFromElement = (element: HTMLElement) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } =\n window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) +\n Number.parseFloat(transitionDelay)) *\n 1000\n );\n };\n}\n","import { DatePickerModes } from './conts.js';\nimport { DateTime, Unit } from './datetime';\nimport { TempusDominus } from './tempus-dominus';\nimport Collapse from './display/collapse';\nimport Namespace from './namespace';\n\n/**\n *\n */\nexport default class Actions {\n private _context: TempusDominus;\n private collapse: Collapse;\n\n constructor(context: TempusDominus) {\n this._context = context;\n this.collapse = new Collapse();\n }\n\n /**\n * Performs the selected `action`. See ActionTypes\n * @param e This is normally a click event\n * @param action If not provided, then look for a [data-action]\n */\n do(e: any, action?: ActionTypes) {\n const currentTarget = e.currentTarget;\n if (currentTarget.classList.contains(Namespace.css.disabled)) return false;\n action = action || currentTarget.dataset.action;\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n /**\n * Common function to manipulate {@link lastPicked} by `unit`\n * @param unit\n * @param value Value to change by\n */\n const manipulateAndSet = (unit: Unit, value = 1) => {\n const newDate = lastPicked.manipulate(value, unit);\n if (this._context._validation.isValid(newDate, unit)) {\n this._context.dates._setValue(\n newDate,\n this._context.dates.lastPickedIndex\n );\n }\n };\n\n switch (action) {\n case ActionTypes.next:\n case ActionTypes.previous:\n const { unit, step } = DatePickerModes[this._context._currentViewMode];\n if (action === ActionTypes.next)\n this._context._viewDate.manipulate(step, unit);\n else this._context._viewDate.manipulate(step * -1, unit);\n this._context._viewUpdate(unit);\n\n this._context._display._showMode();\n break;\n case ActionTypes.pickerSwitch:\n this._context._display._showMode(1);\n this._context._viewUpdate(\n DatePickerModes[this._context._currentViewMode].unit\n );\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.selectMonth:\n case ActionTypes.selectYear:\n case ActionTypes.selectDecade:\n const value = +currentTarget.getAttribute('data-value');\n switch (action) {\n case ActionTypes.selectMonth:\n this._context._viewDate.month = value;\n this._context._viewUpdate(Unit.month);\n break;\n case ActionTypes.selectYear:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n case ActionTypes.selectDecade:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n }\n\n if (\n this._context._currentViewMode === this._context._minViewModeNumber\n ) {\n this._context.dates._setValue(\n this._context._viewDate,\n this._context.dates.lastPickedIndex\n );\n if (!this._context._options.display.inline) {\n this._context._display.hide();\n }\n } else {\n this._context._display._showMode(-1);\n }\n break;\n case ActionTypes.selectDay:\n const day = this._context._viewDate.clone;\n if (currentTarget.classList.contains(Namespace.css.old)) {\n day.manipulate(-1, Unit.month);\n }\n if (currentTarget.classList.contains(Namespace.css.new)) {\n day.manipulate(1, Unit.month);\n }\n\n day.date = +currentTarget.innerText;\n let index = 0;\n if (this._context._options.multipleDates) {\n index = this._context.dates.pickedIndex(day, Unit.date);\n if (index !== -1) {\n this._context.dates._setValue(null, index); //deselect multi-date\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex + 1\n );\n }\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex\n );\n }\n\n if (\n !this._context._display._hasTime &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline &&\n !this._context._options.multipleDates\n ) {\n this._context._display.hide();\n }\n break;\n case ActionTypes.selectHour:\n let hour = +currentTarget.getAttribute('data-value');\n if (lastPicked.hours >= 12) hour += 12;\n lastPicked.hours = hour;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.minutes &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectMinute:\n lastPicked.minutes = +currentTarget.innerText;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.seconds &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectSecond:\n lastPicked.seconds = +currentTarget.innerText;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.incrementHours:\n manipulateAndSet(Unit.hours);\n break;\n case ActionTypes.incrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping);\n break;\n case ActionTypes.incrementSeconds:\n manipulateAndSet(Unit.seconds);\n break;\n case ActionTypes.decrementHours:\n manipulateAndSet(Unit.hours, -1);\n break;\n case ActionTypes.decrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping * -1);\n break;\n case ActionTypes.decrementSeconds:\n manipulateAndSet(Unit.seconds, -1);\n break;\n case ActionTypes.toggleMeridiem:\n manipulateAndSet(\n Unit.hours,\n this._context.dates.lastPicked.hours >= 12 ? -12 : 12\n );\n break;\n case ActionTypes.togglePicker:\n this._context._display.widget\n .querySelectorAll(\n `.${Namespace.css.dateContainer}, .${Namespace.css.timeContainer}`\n )\n .forEach((htmlElement: HTMLElement) =>\n this.collapse.toggle(htmlElement)\n );\n if (\n currentTarget.getAttribute('title') ===\n this._context._options.localization.selectDate\n ) {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectTime\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.time\n ).outerHTML;\n\n this._context._display._updateCalendarHeader();\n } else {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectDate\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.date\n ).outerHTML;\n this.do(e, ActionTypes.showClock);\n this._context._display._update('clock');\n }\n break;\n case ActionTypes.showClock:\n case ActionTypes.showHours:\n case ActionTypes.showMinutes:\n case ActionTypes.showSeconds:\n this._context._display.widget\n .querySelectorAll(`.${Namespace.css.timeContainer} > div`)\n .forEach(\n (htmlElement: HTMLElement) => (htmlElement.style.display = 'none')\n );\n\n let classToUse = '';\n switch (action) {\n case ActionTypes.showClock:\n classToUse = Namespace.css.clockContainer;\n this._context._display._update('clock');\n break;\n case ActionTypes.showHours:\n classToUse = Namespace.css.hourContainer;\n this._context._display._update(Unit.hours);\n break;\n case ActionTypes.showMinutes:\n classToUse = Namespace.css.minuteContainer;\n this._context._display._update(Unit.minutes);\n break;\n case ActionTypes.showSeconds:\n classToUse = Namespace.css.secondContainer;\n this._context._display._update(Unit.seconds);\n break;\n }\n\n ((\n this._context._display.widget.getElementsByClassName(classToUse)[0]\n )).style.display = 'grid';\n break;\n case ActionTypes.clear:\n this._context.dates._setValue(null);\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.close:\n this._context._display.hide();\n break;\n case ActionTypes.today:\n const today = new DateTime().setLocale(\n this._context._options.localization.locale\n );\n this._context._viewDate = today;\n if (this._context._validation.isValid(today, Unit.date))\n this._context.dates._setValue(\n today,\n this._context.dates.lastPickedIndex\n );\n break;\n }\n }\n}\n\nexport enum ActionTypes {\n next = 'next',\n previous = 'previous',\n pickerSwitch = 'pickerSwitch',\n selectMonth = 'selectMonth',\n selectYear = 'selectYear',\n selectDecade = 'selectDecade',\n selectDay = 'selectDay',\n selectHour = 'selectHour',\n selectMinute = 'selectMinute',\n selectSecond = 'selectSecond',\n incrementHours = 'incrementHours',\n incrementMinutes = 'incrementMinutes',\n incrementSeconds = 'incrementSeconds',\n decrementHours = 'decrementHours',\n decrementMinutes = 'decrementMinutes',\n decrementSeconds = 'decrementSeconds',\n toggleMeridiem = 'toggleMeridiem',\n togglePicker = 'togglePicker',\n showClock = 'showClock',\n showHours = 'showHours',\n showMinutes = 'showMinutes',\n showSeconds = 'showSeconds',\n clear = 'clear',\n close = 'close',\n today = 'today',\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { DateTime, Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `date`\n */\nexport default class DateDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.daysContainer);\n\n container.append(...this._daysOfTheWeek());\n\n if (this._context._options.display.calendarWeeks) {\n const div = document.createElement('div');\n div.classList.add(Namespace.css.calendarWeeks, Namespace.css.noHighlight);\n container.appendChild(div);\n }\n\n for (let i = 0; i < 42; i++) {\n if (i !== 0 && i % 7 === 0) {\n if (this._context._options.display.calendarWeeks) {\n const div = document.createElement('div');\n div.classList.add(\n Namespace.css.calendarWeeks,\n Namespace.css.noHighlight\n );\n container.appendChild(div);\n }\n }\n\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectDay);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.daysContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.daysContainer,\n this._context._viewDate.format({\n month: this._context._options.localization.dayViewHeaderFormat,\n })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.month),\n Unit.month\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.month),\n Unit.month\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone\n .startOf(Unit.month)\n .startOf('weekDay')\n .manipulate(12, Unit.hours);\n\n container\n .querySelectorAll(\n `[data-action=\"${ActionTypes.selectDay}\"], .${Namespace.css.calendarWeeks}`\n )\n .forEach((containerClone: HTMLElement, index) => {\n if (\n this._context._options.display.calendarWeeks &&\n containerClone.classList.contains(Namespace.css.calendarWeeks)\n ) {\n if (containerClone.innerText === '#') return;\n containerClone.innerText = `${innerDate.week}`;\n return;\n }\n\n let classes = [];\n classes.push(Namespace.css.day);\n\n if (innerDate.isBefore(this._context._viewDate, Unit.month)) {\n classes.push(Namespace.css.old);\n }\n if (innerDate.isAfter(this._context._viewDate, Unit.month)) {\n classes.push(Namespace.css.new);\n }\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.date)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.date)) {\n classes.push(Namespace.css.disabled);\n }\n if (innerDate.isSame(new DateTime(), Unit.date)) {\n classes.push(Namespace.css.today);\n }\n if (innerDate.weekDay === 0 || innerDate.weekDay === 6) {\n classes.push(Namespace.css.weekend);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute(\n 'data-value',\n `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`\n );\n containerClone.innerText = `${innerDate.date}`;\n innerDate.manipulate(1, Unit.date);\n });\n }\n\n /***\n * Generates an html row that contains the days of the week.\n * @private\n */\n private _daysOfTheWeek(): HTMLElement[] {\n let innerDate = this._context._viewDate.clone\n .startOf('weekDay')\n .startOf(Unit.date);\n const row = [];\n document.createElement('div');\n\n if (this._context._options.display.calendarWeeks) {\n const htmlDivElement = document.createElement('div');\n htmlDivElement.classList.add(\n Namespace.css.calendarWeeks,\n Namespace.css.noHighlight\n );\n htmlDivElement.innerText = '#';\n row.push(htmlDivElement);\n }\n\n for (let i = 0; i < 7; i++) {\n const htmlDivElement = document.createElement('div');\n htmlDivElement.classList.add(\n Namespace.css.dayOfTheWeek,\n Namespace.css.noHighlight\n );\n htmlDivElement.innerText = innerDate.format({ weekday: 'short' });\n innerDate.manipulate(1, Unit.date);\n row.push(htmlDivElement);\n }\n\n return row;\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `month`\n */\nexport default class MonthDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.monthsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMonth);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.monthsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.monthsContainer,\n this._context._viewDate.format({ year: 'numeric' })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.year),\n Unit.year\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.year),\n Unit.year\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone.startOf(Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMonth}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.month);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.month)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.month)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${index}`);\n containerClone.innerText = `${innerDate.format({ month: 'short' })}`;\n innerDate.manipulate(1, Unit.month);\n });\n }\n}\n","import { DateTime, DateTimeFormatOptions } from './datetime';\nimport Namespace from './namespace';\nimport { DefaultOptions } from './conts';\n\nexport default interface Options {\n restrictions: {\n minDate: DateTime;\n maxDate: DateTime;\n enabledDates: DateTime[];\n disabledDates: DateTime[];\n enabledHours: number[];\n disabledHours: number[];\n disabledTimeIntervals: { from: DateTime; to: DateTime }[];\n daysOfWeekDisabled: number[];\n };\n display: {\n toolbarPlacement: 'top' | 'bottom';\n components: {\n calendar: boolean;\n date: boolean;\n month: boolean;\n year: boolean;\n decades: boolean;\n clock: boolean;\n hours: boolean;\n minutes: boolean;\n seconds: boolean;\n useTwentyfourHour: boolean;\n };\n buttons: { today: boolean; close: boolean; clear: boolean };\n calendarWeeks: boolean;\n icons: {\n date: string;\n next: string;\n previous: string;\n today: string;\n clear: string;\n time: string;\n up: string;\n type: 'icons' | 'sprites';\n down: string;\n close: string;\n };\n viewMode: 'clock' | 'calendar' | 'months' | 'years' | 'decades';\n sideBySide: boolean;\n inputFormat: DateTimeFormatOptions;\n inline: boolean;\n keepOpen: boolean;\n };\n stepping: number;\n useCurrent: boolean;\n defaultDate: DateTime;\n localization: {\n nextMonth: string;\n pickHour: string;\n incrementSecond: string;\n nextDecade: string;\n selectDecade: string;\n dayViewHeaderFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n decrementHour: string;\n selectDate: string;\n incrementHour: string;\n previousCentury: string;\n decrementSecond: string;\n today: string;\n previousMonth: string;\n selectYear: string;\n pickSecond: string;\n nextCentury: string;\n close: string;\n incrementMinute: string;\n selectTime: string;\n clear: string;\n toggleMeridiem: string;\n selectMonth: string;\n decrementMinute: string;\n pickMinute: string;\n nextYear: string;\n previousYear: string;\n previousDecade: string;\n locale: string;\n };\n keepInvalid: boolean;\n debug: boolean;\n allowInputToggle: boolean;\n viewDate: DateTime;\n multipleDates: boolean;\n multipleDatesSeparator: string;\n promptTimeOnDateChange: boolean;\n promptTimeOnDateChangeTransitionDelay: number;\n}\n\nexport class OptionConverter {\n static _mergeOptions(providedOptions: Options, mergeTo: Options): Options {\n const newOptions = {} as Options;\n let path = '';\n\n const processKey = (key, value, providedType, defaultType) => {\n switch (key) {\n case 'defaultDate': {\n const dateTime = this._dateConversion(value, 'defaultDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'defaultDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'viewDate': {\n const dateTime = this._dateConversion(value, 'viewDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'viewDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'minDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.minDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.minDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'maxDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.maxDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.maxDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'disabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.disabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.disabledHours',\n 0,\n 23\n );\n return value;\n case 'enabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.enabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.enabledHours',\n 0,\n 23\n );\n return value;\n case 'daysOfWeekDisabled':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.daysOfWeekDisabled',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 6).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.daysOfWeekDisabled',\n 0,\n 6\n );\n return value;\n case 'enabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.enabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.disabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledTimeIntervals':\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n key,\n providedType,\n 'array of { from: DateTime|Date, to: DateTime|Date }'\n );\n }\n const valueObject = value as { from: any; to: any }[];\n for (let i = 0; i < valueObject.length; i++) {\n Object.keys(valueObject[i]).forEach((vk) => {\n const subOptionName = `${key}[${i}].${vk}`;\n let d = valueObject[i][vk];\n const dateTime = this._dateConversion(d, subOptionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n subOptionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n valueObject[i][vk] = dateTime;\n });\n }\n return valueObject;\n case 'toolbarPlacement':\n case 'type':\n case 'viewMode':\n case 'dayViewHeaderFormat':\n const optionValues = {\n toolbarPlacement: ['top', 'bottom', 'default'],\n type: ['icons', 'sprites'],\n viewMode: ['clock', 'calendar', 'months', 'years', 'decades'],\n dayViewHeaderFormat: [\n 'numeric',\n '2-digit',\n 'long',\n 'short',\n 'narrow',\n ],\n };\n const keyOptions = optionValues[key];\n if (!keyOptions.includes(value))\n Namespace.errorMessages.unexpectedOptionValue(\n path.substring(1),\n value,\n keyOptions\n );\n\n return value;\n case 'inputFormat':\n return value;\n default:\n switch (defaultType) {\n case 'boolean':\n return value === 'true' || value === true;\n case 'number':\n return +value;\n case 'string':\n return value.toString();\n case 'object':\n return {};\n case 'function':\n return value;\n default:\n Namespace.errorMessages.typeMismatch(\n path.substring(1),\n providedType,\n defaultType\n );\n }\n }\n };\n\n /**\n * The spread operator caused sub keys to be missing after merging.\n * This is to fix that issue by using spread on the child objects first.\n * Also handles complex options like disabledDates\n * @param provided An option from new providedOptions\n * @param mergeOption Default option to compare types against\n * @param copyTo Destination object. This was add to prevent reference copies\n */\n const spread = (provided, mergeOption, copyTo) => {\n const unsupportedOptions = Object.keys(provided).filter(\n (x) => !Object.keys(mergeOption).includes(x)\n );\n if (unsupportedOptions.length > 0) {\n const flattenedOptions = OptionConverter._flattenDefaultOptions;\n\n const errors = unsupportedOptions.map((x) => {\n let error = `\"${path.substring(1)}.${x}\" in not a known option.`;\n let didYouMean = flattenedOptions.find((y) => y.includes(x));\n if (didYouMean) error += `Did you mean \"${didYouMean}\"?`;\n return error;\n });\n Namespace.errorMessages.unexpectedOptions(errors);\n }\n Object.keys(mergeOption).forEach((key) => {\n const defaultOptionValue = mergeOption[key];\n let providedType = typeof provided[key];\n let defaultType = typeof defaultOptionValue;\n let value = provided[key];\n if (!provided.hasOwnProperty(key)) {\n if (\n defaultType === 'undefined' ||\n (value?.length === 0 && Array.isArray(defaultOptionValue))\n ) {\n copyTo[key] = defaultOptionValue;\n return;\n }\n provided[key] = defaultOptionValue;\n value = provided[key];\n }\n path += `.${key}`;\n copyTo[key] = processKey(key, value, providedType, defaultType);\n\n if (typeof defaultOptionValue !== 'object' || key === 'inputFormat') {\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n return;\n }\n if (!Array.isArray(provided[key])) {\n spread(provided[key], defaultOptionValue, copyTo[key]);\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n }\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n });\n };\n spread(providedOptions, mergeTo, newOptions);\n\n return newOptions;\n }\n\n static _dataToOptions(element, options: Options): Options {\n const eData = element.dataset;\n if (\n !eData ||\n Object.keys(eData).length === 0 ||\n eData.constructor !== DOMStringMap\n )\n return options;\n let dataOptions = {} as Options;\n\n // because dataset returns camelCase including the 'td' key the option\n // key won't align\n const objectToNormalized = (object) => {\n const lowered = {};\n Object.keys(object).forEach((x) => {\n lowered[x.toLowerCase()] = x;\n });\n\n return lowered;\n };\n\n const rabbitHole = (\n split: string[],\n index: number,\n optionSubgroup: {},\n value: any\n ) => {\n // first round = display { ... }\n const normalizedOptions = objectToNormalized(optionSubgroup);\n\n const keyOption = normalizedOptions[split[index].toLowerCase()];\n const internalObject = {};\n\n if (keyOption === undefined) return internalObject;\n\n // if this is another object, continue down the rabbit hole\n if (optionSubgroup[keyOption].constructor === Object) {\n index++;\n internalObject[keyOption] = rabbitHole(\n split,\n index,\n optionSubgroup[keyOption],\n value\n );\n } else {\n internalObject[keyOption] = value;\n }\n return internalObject;\n };\n const optionsLower = objectToNormalized(options);\n\n Object.keys(eData)\n .filter((x) => x.startsWith(Namespace.dataKey))\n .map((x) => x.substring(2))\n .forEach((key) => {\n let keyOption = optionsLower[key.toLowerCase()];\n\n // dataset merges dashes to camelCase... yay\n // i.e. key = display_components_seconds\n if (key.includes('_')) {\n // [display, components, seconds]\n const split = key.split('_');\n // display\n keyOption = optionsLower[split[0].toLowerCase()];\n if (\n keyOption !== undefined &&\n options[keyOption].constructor === Object\n ) {\n dataOptions[keyOption] = rabbitHole(\n split,\n 1,\n options[keyOption],\n eData[`td${key}`]\n );\n }\n }\n // or key = multipleDate\n else if (keyOption !== undefined) {\n dataOptions[keyOption] = eData[`td${key}`];\n }\n });\n\n return this._mergeOptions(dataOptions, options);\n }\n\n /**\n * Attempts to prove `d` is a DateTime or Date or can be converted into one.\n * @param d If a string will attempt creating a date from it.\n * @private\n */\n static _dateTypeCheck(d: any): DateTime | null {\n if (d.constructor.name === 'DateTime') return d;\n if (d.constructor.name === 'Date') {\n return DateTime.convert(d);\n }\n if (typeof d === typeof '') {\n const dateTime = new DateTime(d);\n if (JSON.stringify(dateTime) === 'null') {\n return null;\n }\n return dateTime;\n }\n return null;\n }\n\n /**\n * Type checks that `value` is an array of Date or DateTime\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckDateArray(optionName: string, value, providedType: string) {\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of DateTime or Date'\n );\n }\n for (let i = 0; i < value.length; i++) {\n let d = value[i];\n const dateTime = this._dateConversion(d, optionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n value[i] = dateTime;\n }\n }\n\n /**\n * Type checks that `value` is an array of numbers\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckNumberArray(\n optionName: string,\n value,\n providedType: string\n ) {\n if (!Array.isArray(value) || value.find((x) => typeof x !== typeof 0)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of numbers'\n );\n }\n return;\n }\n\n /**\n * Attempts to convert `d` to a DateTime object\n * @param d value to convert\n * @param optionName Provides text to error messages e.g. disabledDates\n */\n static _dateConversion(d: any, optionName: string) {\n if (typeof d === typeof '' && optionName !== 'input field') {\n Namespace.errorMessages.dateString();\n }\n\n const converted = this._dateTypeCheck(d);\n\n if (!converted) {\n Namespace.errorMessages.failedToParseDate(optionName, d);\n }\n return converted;\n }\n\n private static _flatback: string[];\n\n private static get _flattenDefaultOptions(): string[] {\n if (this._flatback) return this._flatback;\n const deepKeys = (t, pre = []) =>\n Array.isArray(t)\n ? []\n : Object(t) === t\n ? Object.entries(t).flatMap(([k, v]) => deepKeys(v, [...pre, k]))\n : pre.join('.');\n\n this._flatback = deepKeys(DefaultOptions);\n\n return this._flatback;\n }\n\n /**\n * Some options conflict like min/max date. Verify that these kinds of options\n * are set correctly.\n * @param config\n */\n static _validateConflcits(config: Options) {\n if (config.restrictions.minDate && config.restrictions.maxDate) {\n if (config.restrictions.minDate.isAfter(config.restrictions.maxDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'minDate is after maxDate'\n );\n }\n\n if (config.restrictions.maxDate.isBefore(config.restrictions.minDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'maxDate is before minDate'\n );\n }\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport { ChangeEvent, FailEvent } from './event-types';\nimport { OptionConverter } from './options';\n\nexport default class Dates {\n private _dates: DateTime[] = [];\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Returns the array of selected dates\n */\n get picked(): DateTime[] {\n return this._dates;\n }\n\n /**\n * Returns the last picked value.\n */\n get lastPicked(): DateTime {\n return this._dates[this.lastPickedIndex];\n }\n\n /**\n * Returns the length of picked dates -1 or 0 if none are selected.\n */\n get lastPickedIndex(): number {\n if (this._dates.length === 0) return 0;\n return this._dates.length - 1;\n }\n\n /**\n * Adds a new DateTime to selected dates array\n * @param date\n */\n add(date: DateTime): void {\n this._dates.push(date);\n }\n\n /**\n * Tries to convert the provided value to a DateTime object.\n * If value is null|undefined then clear the value of the provided index (or 0).\n * @param value Value to convert or null|undefined\n * @param index When using multidates this is the index in the array\n * @param from Used in the warning message, useful for debugging.\n */\n set(value: any, index?: number, from: string = 'date.set') {\n if (!value) this._setValue(value, index);\n const converted = OptionConverter._dateConversion(value, 'input field');\n if (converted !== undefined) this._setValue(converted, index);\n else Namespace.errorMessages.failedToParseDate(from, value, true);\n }\n\n /**\n * Returns true if the `targetDate` is part of the selected dates array.\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n isPicked(targetDate: DateTime, unit?: Unit): boolean {\n if (!unit) return this._dates.find((x) => x === targetDate) !== undefined;\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return (\n this._dates\n .map((x) => x.format(format))\n .find((x) => x === innerDateFormatted) !== undefined\n );\n }\n\n /**\n * Returns the index at which `targetDate` is in the array.\n * This is used for updating or removing a date when multi-date is used\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n pickedIndex(targetDate: DateTime, unit?: Unit): number {\n if (!unit) return this._dates.indexOf(targetDate);\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return this._dates.map((x) => x.format(format)).indexOf(innerDateFormatted);\n }\n\n /**\n * Clears all selected dates.\n */\n clear() {\n this._context._unset = true;\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate: this.lastPicked,\n isClear: true,\n isValid: true,\n } as ChangeEvent);\n this._dates = [];\n }\n\n /**\n * Find the \"book end\" years given a `year` and a `factor`\n * @param factor e.g. 100 for decades\n * @param year e.g. 2021\n */\n static getStartEndYear(\n factor: number,\n year: number\n ): [number, number, number] {\n const step = factor / 10,\n startYear = Math.floor(year / factor) * factor,\n endYear = startYear + step * 9,\n focusValue = Math.floor(year / step) * step;\n return [startYear, endYear, focusValue];\n }\n\n /**\n * Do not use direectly. Attempts to either clear or set the `target` date at `index`.\n * If the `target` is null then the date will be cleared.\n * If multi-date is being used then it will be removed from the array.\n * If `target` is valid and multi-date is used then if `index` is\n * provided the date at that index will be replaced, otherwise it is appended.\n * @param target\n * @param index\n */\n _setValue(target?: DateTime, index?: number): void {\n const noIndex = typeof index === 'undefined',\n isClear = !target && noIndex;\n let oldDate = this._context._unset ? null : this._dates[index];\n if (!oldDate && !this._context._unset && noIndex && isClear) {\n oldDate = this.lastPicked;\n }\n\n if (target && oldDate?.isSame(target)) return;\n\n const updateInput = () => {\n if (!this._context._input) return;\n\n let newValue =\n target?.format(this._context._options.display.inputFormat) || '';\n if (this._context._options.multipleDates) {\n newValue = this._dates\n .map((d) => d.format(this._context._options.display.inputFormat))\n .join(this._context._options.multipleDatesSeparator);\n }\n if (this._context._input.value != newValue)\n this._context._input.value = newValue;\n };\n\n // case of calling setValue(null)\n if (!target) {\n if (\n !this._context._options.multipleDates ||\n this._dates.length === 1 ||\n isClear\n ) {\n this._context._unset = true;\n this._dates = [];\n } else {\n this._dates.splice(index, 1);\n }\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n\n updateInput();\n this._context._display._update('all');\n return;\n }\n\n index = index || 0;\n target = target.clone;\n\n // minute stepping is being used, force the minute to the closest value\n if (this._context._options.stepping !== 1) {\n target.minutes =\n Math.round(target.minutes / this._context._options.stepping) *\n this._context._options.stepping;\n target.seconds = 0;\n }\n\n if (this._context._validation.isValid(target)) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._unset = false;\n this._context._display._update('all');\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n return;\n }\n\n if (this._context._options.keepInvalid) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: false,\n } as ChangeEvent);\n }\n this._context._triggerEvent({\n type: Namespace.events.error,\n reason: Namespace.errorMessages.failedToSetInvalidDate,\n date: target,\n oldDate,\n } as FailEvent);\n }\n\n /**\n * Returns a format object based on the granularity of `unit`\n * @param unit\n */\n static getFormatByUnit(unit: Unit): object {\n switch (unit) {\n case 'date':\n return { dateStyle: 'short' };\n case 'month':\n return {\n month: 'numeric',\n year: 'numeric',\n };\n case 'year':\n return { year: 'numeric' };\n }\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { DateTime, Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\nimport Dates from '../../dates';\n\n/**\n * Creates and updates the grid for `year`\n */\nexport default class YearDisplay {\n private _context: TempusDominus;\n private _startYear: DateTime;\n private _endYear: DateTime;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.yearsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectYear);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update() {\n const [start, end] = Dates.getStartEndYear(\n 10,\n this._context._viewDate.year\n );\n this._startYear = this._context._viewDate.clone.manipulate(-1, Unit.year);\n this._endYear = this._context._viewDate.clone.manipulate(10, Unit.year);\n\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.yearsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.yearsContainer,\n `${this._startYear.year}-${this._endYear.year}`\n );\n\n this._context._validation.isValid(this._startYear, Unit.year)\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n this._context._validation.isValid(this._endYear, Unit.year)\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone\n .startOf(Unit.year)\n .manipulate(-1, Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectYear}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.year);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.year)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.year)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.year}`);\n containerClone.innerText = `${innerDate.year}`;\n\n innerDate.manipulate(1, Unit.year);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport Dates from '../../dates';\nimport { DateTime, Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class DecadeDisplay {\n private _context: TempusDominus;\n private _startDecade: DateTime;\n private _endDecade: DateTime;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker() {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.decadesContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectDecade);\n container.appendChild(div);\n }\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update() {\n const [start, end] = Dates.getStartEndYear(\n 100,\n this._context._viewDate.year\n );\n this._startDecade = this._context._viewDate.clone.startOf(Unit.year);\n this._startDecade.year = start;\n this._endDecade = this._context._viewDate.clone.startOf(Unit.year);\n this._endDecade.year = end;\n\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.decadesContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.decadesContainer,\n `${this._startDecade.year}-${this._endDecade.year}`\n );\n\n this._context._validation.isValid(this._startDecade, Unit.year)\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n this._context._validation.isValid(this._endDecade, Unit.year)\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n const pickedYears = this._context.dates.picked.map((x) => x.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectDecade}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n if (index === 0) {\n containerClone.classList.add(Namespace.css.old);\n if (this._startDecade.year - 10 < 0) {\n containerClone.textContent = ' ';\n previous.classList.add(Namespace.css.disabled);\n containerClone.classList.add(Namespace.css.disabled);\n containerClone.setAttribute('data-value', ``);\n return;\n } else {\n containerClone.innerText = `${this._startDecade.year - 10}`;\n containerClone.setAttribute(\n 'data-value',\n `${this._startDecade.year}`\n );\n return;\n }\n }\n\n let classes = [];\n classes.push(Namespace.css.decade);\n const startDecadeYear = this._startDecade.year;\n const endDecadeYear = this._startDecade.year + 9;\n\n if (\n !this._context._unset &&\n pickedYears.filter((x) => x >= startDecadeYear && x <= endDecadeYear)\n .length > 0\n ) {\n classes.push(Namespace.css.active);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute(\n 'data-value',\n `${this._startDecade.year}`\n );\n containerClone.innerText = `${this._startDecade.year}`;\n\n this._startDecade.manipulate(10, Unit.year);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates the clock display\n */\nexport default class TimeDisplay {\n private _context: TempusDominus;\n private _gridColumns = '';\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the clock display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.clockContainer);\n\n container.append(...this._grid());\n\n return container;\n }\n\n /**\n * Populates the various elements with in the clock display\n * like the current hour and if the manipulation icons are enabled.\n * @private\n */\n _update(): void {\n const timesDiv = (\n this._context._display.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0]\n );\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n timesDiv\n .querySelectorAll('.disabled')\n .forEach((element) => element.classList.remove(Namespace.css.disabled));\n\n if (this._context._options.display.components.hours) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.hours}]`\n ).innerText = this._context._options.display.components.useTwentyfourHour\n ? lastPicked.hoursFormatted\n : lastPicked.twelveHoursFormatted;\n }\n\n if (this._context._options.display.components.minutes) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.minutes}]`\n ).innerText = lastPicked.minutesFormatted;\n }\n\n if (this._context._options.display.components.seconds) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.seconds}]`\n ).innerText = lastPicked.secondsFormatted;\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n const toggle = timesDiv.querySelector(\n `[data-action=${ActionTypes.toggleMeridiem}]`\n );\n\n toggle.innerText = lastPicked.meridiem();\n\n if (\n !this._context._validation.isValid(\n lastPicked.clone.manipulate(\n lastPicked.hours >= 12 ? -12 : 12,\n Unit.hours\n )\n )\n ) {\n toggle.classList.add(Namespace.css.disabled);\n } else {\n toggle.classList.remove(Namespace.css.disabled);\n }\n }\n\n timesDiv.style.gridTemplateAreas = `\"${this._gridColumns}\"`;\n }\n\n /**\n * Creates the table for the clock display depending on what options are selected.\n * @private\n */\n private _grid(): HTMLElement[] {\n this._gridColumns = '';\n const top = [],\n middle = [],\n bottom = [],\n separator = document.createElement('div'),\n upIcon = this._context._display._iconTag(\n this._context._options.display.icons.up\n ),\n downIcon = this._context._display._iconTag(\n this._context._options.display.icons.down\n );\n\n separator.classList.add(Namespace.css.separator, Namespace.css.noHighlight);\n const separatorColon = separator.cloneNode(true);\n separatorColon.innerHTML = ':';\n\n const getSeparator = (colon = false): HTMLElement => {\n return colon\n ? separatorColon.cloneNode(true)\n : separator.cloneNode(true);\n };\n\n if (this._context._options.display.components.hours) {\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.incrementHours);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickHour\n );\n divElement.setAttribute('data-action', ActionTypes.showHours);\n divElement.setAttribute('data-time-component', Unit.hours);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.decrementHours);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n this._gridColumns += 'a';\n }\n\n if (this._context._options.display.components.minutes) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.hours) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.incrementMinutes);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickMinute\n );\n divElement.setAttribute('data-action', ActionTypes.showMinutes);\n divElement.setAttribute('data-time-component', Unit.minutes);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.decrementMinutes);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (this._context._options.display.components.seconds) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.minutes) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.incrementSeconds);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickSecond\n );\n divElement.setAttribute('data-action', ActionTypes.showSeconds);\n divElement.setAttribute('data-time-component', Unit.seconds);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.decrementSeconds);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n this._gridColumns += ' a';\n let divElement = getSeparator();\n top.push(divElement);\n\n let button = document.createElement('button');\n button.setAttribute(\n 'title',\n this._context._options.localization.toggleMeridiem\n );\n button.setAttribute('data-action', ActionTypes.toggleMeridiem);\n button.setAttribute('tabindex', '-1');\n button.classList.add(Namespace.css.toggleMeridiem);\n\n divElement = document.createElement('div');\n divElement.classList.add(Namespace.css.noHighlight);\n divElement.appendChild(button);\n middle.push(divElement);\n\n divElement = getSeparator();\n bottom.push(divElement);\n }\n\n this._gridColumns = this._gridColumns.trim();\n\n return [...top, ...middle, ...bottom];\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `hours`\n */\nexport default class HourDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.hourContainer);\n\n for (\n let i = 0;\n i <\n (this._context._options.display.components.useTwentyfourHour ? 24 : 12);\n i++\n ) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectHour);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.hourContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.date);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectHour}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.hour);\n\n if (!this._context._validation.isValid(innerDate, Unit.hours)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.hours}`);\n containerClone.innerText = this._context._options.display.components\n .useTwentyfourHour\n ? innerDate.hoursFormatted\n : innerDate.twelveHoursFormatted;\n innerDate.manipulate(1, Unit.hours);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `minutes`\n */\nexport default class MinuteDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.minuteContainer);\n\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n for (let i = 0; i < 60 / step; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMinute);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.minuteContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.hours);\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMinute}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.minute);\n\n if (!this._context._validation.isValid(innerDate, Unit.minutes)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.minutes}`);\n containerClone.innerText = innerDate.minutesFormatted;\n innerDate.manipulate(step, Unit.minutes);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class secondDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.secondContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectSecond);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.secondContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.minutes);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectSecond}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.second);\n\n if (!this._context._validation.isValid(innerDate, Unit.seconds)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.seconds}`);\n containerClone.innerText = innerDate.secondsFormatted;\n innerDate.manipulate(5, Unit.seconds);\n });\n }\n}\n","import DateDisplay from './calendar/date-display';\nimport MonthDisplay from './calendar/month-display';\nimport YearDisplay from './calendar/year-display';\nimport DecadeDisplay from './calendar/decade-display';\nimport TimeDisplay from './time/time-display';\nimport HourDisplay from './time/hour-display';\nimport MinuteDisplay from './time/minute-display';\nimport SecondDisplay from './time/second-display';\nimport { DateTime, Unit } from '../datetime';\nimport { DatePickerModes } from '../conts';\nimport { TempusDominus } from '../tempus-dominus';\nimport { ActionTypes } from '../actions';\nimport { createPopper } from '@popperjs/core';\nimport Namespace from '../namespace';\nimport { HideEvent } from '../event-types';\n\n/**\n * Main class for all things display related.\n */\nexport default class Display {\n private _context: TempusDominus;\n private _dateDisplay: DateDisplay;\n private _monthDisplay: MonthDisplay;\n private _yearDisplay: YearDisplay;\n private _decadeDisplay: DecadeDisplay;\n private _timeDisplay: TimeDisplay;\n private _widget: HTMLElement;\n private _hourDisplay: HourDisplay;\n private _minuteDisplay: MinuteDisplay;\n private _secondDisplay: SecondDisplay;\n private _popperInstance: any;\n private _isVisible = false;\n\n constructor(context: TempusDominus) {\n this._context = context;\n this._dateDisplay = new DateDisplay(context);\n this._monthDisplay = new MonthDisplay(context);\n this._yearDisplay = new YearDisplay(context);\n this._decadeDisplay = new DecadeDisplay(context);\n this._timeDisplay = new TimeDisplay(context);\n this._hourDisplay = new HourDisplay(context);\n this._minuteDisplay = new MinuteDisplay(context);\n this._secondDisplay = new SecondDisplay(context);\n\n this._widget = undefined;\n }\n\n /**\n * Returns the widget body or undefined\n * @private\n */\n get widget(): HTMLElement | undefined {\n return this._widget;\n }\n\n /**\n * Returns this visible state of the picker (shown)\n */\n get isVisible() {\n return this._isVisible;\n }\n\n /**\n * Updates the table for a particular unit. Used when an option as changed or\n * whenever the class list might need to be refreshed.\n * @param unit\n * @private\n */\n _update(unit: Unit | 'clock' | 'calendar' | 'all'): void {\n if (!this.widget) return;\n //todo do I want some kind of error catching or other guards here?\n switch (unit) {\n case Unit.seconds:\n this._secondDisplay._update();\n break;\n case Unit.minutes:\n this._minuteDisplay._update();\n break;\n case Unit.hours:\n this._hourDisplay._update();\n break;\n case Unit.date:\n this._dateDisplay._update();\n break;\n case Unit.month:\n this._monthDisplay._update();\n break;\n case Unit.year:\n this._yearDisplay._update();\n break;\n case 'clock':\n this._timeDisplay._update();\n this._update(Unit.hours);\n this._update(Unit.minutes);\n this._update(Unit.seconds);\n break;\n case 'calendar':\n this._update(Unit.date);\n this._update(Unit.year);\n this._update(Unit.month);\n this._decadeDisplay._update();\n this._updateCalendarHeader();\n break;\n case 'all':\n if (this._hasTime) {\n this._update('clock');\n }\n if (this._hasDate) {\n this._update('calendar');\n }\n }\n }\n\n /**\n * Shows the picker and creates a Popper instance if needed.\n * Add document click event to hide when clicking outside the picker.\n * @fires Events#show\n */\n show(): void {\n if (this.widget == undefined) {\n if (\n this._context._options.useCurrent &&\n !this._context._options.defaultDate &&\n !this._context._input?.value\n ) {\n //todo in the td4 branch a pr changed this to allow granularity\n const date = new DateTime().setLocale(\n this._context._options.localization.locale\n );\n if (!this._context._options.keepInvalid) {\n let tries = 0;\n let direction = 1;\n if (this._context._options.restrictions.maxDate?.isBefore(date)) {\n direction = -1;\n }\n while (!this._context._validation.isValid(date)) {\n date.manipulate(direction, Unit.date);\n if (tries > 31) break;\n tries++;\n }\n }\n this._context.dates._setValue(date);\n }\n\n if (this._context._options.defaultDate) {\n this._context.dates._setValue(this._context._options.defaultDate);\n }\n\n this._buildWidget();\n if (this._hasDate) {\n this._showMode();\n }\n\n if (!this._context._options.display.inline) {\n document.body.appendChild(this.widget);\n\n this._popperInstance = createPopper(\n this._context._element,\n this.widget,\n {\n modifiers: [\n /* {\n name: 'offset',\n options: {\n offset: [2, 8],\n },\n },*/\n { name: 'eventListeners', enabled: true },\n ],\n placement: 'bottom-start',\n }\n );\n } else {\n this._context._element.appendChild(this.widget);\n }\n\n if (this._context._options.display.viewMode == 'clock') {\n this._context._action.do(\n {\n currentTarget: this.widget.querySelector(\n `.${Namespace.css.timeContainer}`\n ),\n },\n ActionTypes.showClock\n );\n }\n\n this.widget\n .querySelectorAll('[data-action]')\n .forEach((element) =>\n element.addEventListener('click', this._actionsClickEvent)\n );\n\n // show the clock when using sideBySide\n if (this._context._options.display.sideBySide) {\n this._timeDisplay._update();\n (\n this.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0] as HTMLElement\n ).style.display = 'grid';\n }\n }\n\n this.widget.classList.add(Namespace.css.show);\n if (!this._context._options.display.inline) {\n this._popperInstance.update();\n document.addEventListener('click', this._documentClickEvent);\n }\n this._context._triggerEvent({ type: Namespace.events.show });\n this._isVisible = true;\n }\n\n /**\n * Changes the calendar view mode. E.g. month <-> year\n * @param direction -/+ number to move currentViewMode\n * @private\n */\n _showMode(direction?: number): void {\n if (!this.widget) {\n return;\n }\n if (direction) {\n const max = Math.max(\n this._context._minViewModeNumber,\n Math.min(3, this._context._currentViewMode + direction)\n );\n if (this._context._currentViewMode == max) return;\n this._context._currentViewMode = max;\n }\n\n this.widget\n .querySelectorAll(\n `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div`\n )\n .forEach((e: HTMLElement) => (e.style.display = 'none'));\n\n const datePickerMode = DatePickerModes[this._context._currentViewMode];\n let picker: HTMLElement = this.widget.querySelector(\n `.${datePickerMode.className}`\n );\n\n switch (datePickerMode.className) {\n case Namespace.css.decadesContainer:\n this._decadeDisplay._update();\n break;\n case Namespace.css.yearsContainer:\n this._yearDisplay._update();\n break;\n case Namespace.css.monthsContainer:\n this._monthDisplay._update();\n break;\n case Namespace.css.daysContainer:\n this._dateDisplay._update();\n break;\n }\n\n picker.style.display = 'grid';\n this._updateCalendarHeader();\n }\n\n _updateCalendarHeader() {\n const showing = [\n ...this.widget.querySelector(\n `.${Namespace.css.dateContainer} div[style*=\"display: grid\"]`\n ).classList,\n ].find((x) => x.startsWith(Namespace.css.dateContainer));\n\n const [previous, switcher, next] = this._context._display.widget\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switch (showing) {\n case Namespace.css.decadesContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousCentury\n );\n switcher.setAttribute('title', '');\n next.setAttribute(\n 'title',\n this._context._options.localization.nextCentury\n );\n break;\n case Namespace.css.yearsContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousDecade\n );\n switcher.setAttribute(\n 'title',\n this._context._options.localization.selectDecade\n );\n next.setAttribute(\n 'title',\n this._context._options.localization.nextDecade\n );\n break;\n case Namespace.css.monthsContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousYear\n );\n switcher.setAttribute(\n 'title',\n this._context._options.localization.selectYear\n );\n next.setAttribute(\n 'title',\n this._context._options.localization.nextYear\n );\n break;\n case Namespace.css.daysContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousMonth\n );\n switcher.setAttribute(\n 'title',\n this._context._options.localization.selectMonth\n );\n next.setAttribute(\n 'title',\n this._context._options.localization.nextMonth\n );\n switcher.innerText = this._context._viewDate.format({\n month: this._context._options.localization.dayViewHeaderFormat,\n });\n break;\n }\n switcher.innerText = switcher.getAttribute(showing);\n }\n\n /**\n * Hides the picker if needed.\n * Remove document click event to hide when clicking outside the picker.\n * @fires Events#hide\n */\n hide(): void {\n if (!this.widget || !this._isVisible) return;\n\n this.widget.classList.remove(Namespace.css.show);\n\n if (this._isVisible) {\n this._context._triggerEvent({\n type: Namespace.events.hide,\n date: this._context._unset\n ? null\n : this._context.dates.lastPicked\n ? this._context.dates.lastPicked.clone\n : void 0,\n } as HideEvent);\n this._isVisible = false;\n }\n\n document.removeEventListener('click', this._documentClickEvent);\n }\n\n /**\n * Toggles the picker's open state. Fires a show/hide event depending.\n */\n toggle() {\n return this._isVisible ? this.hide() : this.show();\n }\n\n /**\n * Removes document and data-action click listener and reset the widget\n * @private\n */\n _dispose() {\n document.removeEventListener('click', this._documentClickEvent);\n if (!this.widget) return;\n this.widget\n .querySelectorAll('[data-action]')\n .forEach((element) =>\n element.removeEventListener('click', this._actionsClickEvent)\n );\n this.widget.parentNode.removeChild(this.widget);\n this._widget = undefined;\n }\n\n /**\n * Builds the widgets html template.\n * @private\n */\n private _buildWidget(): HTMLElement {\n const template = document.createElement('div');\n template.classList.add(Namespace.css.widget);\n\n const dateView = document.createElement('div');\n dateView.classList.add(Namespace.css.dateContainer);\n dateView.append(\n this._headTemplate,\n this._decadeDisplay._picker,\n this._yearDisplay._picker,\n this._monthDisplay._picker,\n this._dateDisplay._picker\n );\n\n const timeView = document.createElement('div');\n timeView.classList.add(Namespace.css.timeContainer);\n timeView.appendChild(this._timeDisplay._picker);\n timeView.appendChild(this._hourDisplay._picker);\n timeView.appendChild(this._minuteDisplay._picker);\n timeView.appendChild(this._secondDisplay._picker);\n\n const toolbar = document.createElement('div');\n toolbar.classList.add(Namespace.css.toolbar);\n toolbar.append(...this._toolbar);\n\n if (this._context._options.display.inline) {\n template.classList.add(Namespace.css.inline);\n }\n\n if (this._context._options.display.calendarWeeks) {\n template.classList.add('calendarWeeks');\n }\n\n if (\n this._context._options.display.sideBySide &&\n this._hasDate &&\n this._hasTime\n ) {\n template.classList.add(Namespace.css.sideBySide);\n if (this._context._options.display.toolbarPlacement === 'top') {\n template.appendChild(toolbar);\n }\n const row = document.createElement('div');\n row.classList.add('td-row');\n dateView.classList.add('td-half');\n timeView.classList.add('td-half');\n\n row.appendChild(dateView);\n row.appendChild(timeView);\n template.appendChild(row);\n if (this._context._options.display.toolbarPlacement === 'bottom') {\n template.appendChild(toolbar);\n }\n this._widget = template;\n return;\n }\n\n if (this._context._options.display.toolbarPlacement === 'top') {\n template.appendChild(toolbar);\n }\n\n if (this._hasDate) {\n if (this._hasTime) {\n dateView.classList.add(Namespace.css.collapse);\n if (this._context._options.display.viewMode !== 'clock')\n dateView.classList.add(Namespace.css.show);\n }\n template.appendChild(dateView);\n }\n\n if (this._hasTime) {\n if (this._hasDate) {\n timeView.classList.add(Namespace.css.collapse);\n if (this._context._options.display.viewMode === 'clock')\n timeView.classList.add(Namespace.css.show);\n }\n template.appendChild(timeView);\n }\n\n if (this._context._options.display.toolbarPlacement === 'bottom') {\n template.appendChild(toolbar);\n }\n\n const arrow = document.createElement('div');\n arrow.classList.add('arrow');\n arrow.setAttribute('data-popper-arrow', '');\n template.appendChild(arrow);\n\n this._widget = template;\n }\n\n /**\n * Returns true if the hours, minutes, or seconds component is turned on\n */\n get _hasTime(): boolean {\n return (\n this._context._options.display.components.clock &&\n (this._context._options.display.components.hours ||\n this._context._options.display.components.minutes ||\n this._context._options.display.components.seconds)\n );\n }\n\n /**\n * Returns true if the year, month, or date component is turned on\n */\n get _hasDate(): boolean {\n return (\n this._context._options.display.components.calendar &&\n (this._context._options.display.components.year ||\n this._context._options.display.components.month ||\n this._context._options.display.components.date)\n );\n }\n\n /**\n * Get the toolbar html based on options like buttons.today\n * @private\n */\n get _toolbar(): HTMLElement[] {\n const toolbar = [];\n\n if (this._context._options.display.buttons.today) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.today);\n div.setAttribute('title', this._context._options.localization.today);\n\n div.appendChild(\n this._iconTag(this._context._options.display.icons.today)\n );\n toolbar.push(div);\n }\n if (\n !this._context._options.display.sideBySide &&\n this._hasDate &&\n this._hasTime\n ) {\n let title, icon;\n if (this._context._options.display.viewMode === 'clock') {\n title = this._context._options.localization.selectDate;\n icon = this._context._options.display.icons.date;\n } else {\n title = this._context._options.localization.selectTime;\n icon = this._context._options.display.icons.time;\n }\n\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.togglePicker);\n div.setAttribute('title', title);\n\n div.appendChild(this._iconTag(icon));\n toolbar.push(div);\n }\n if (this._context._options.display.buttons.clear) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.clear);\n div.setAttribute('title', this._context._options.localization.clear);\n\n div.appendChild(\n this._iconTag(this._context._options.display.icons.clear)\n );\n toolbar.push(div);\n }\n if (this._context._options.display.buttons.close) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.close);\n div.setAttribute('title', this._context._options.localization.close);\n\n div.appendChild(\n this._iconTag(this._context._options.display.icons.close)\n );\n toolbar.push(div);\n }\n\n return toolbar;\n }\n\n /***\n * Builds the base header template with next and previous icons\n * @private\n */\n get _headTemplate(): HTMLElement {\n const calendarHeader = document.createElement('div');\n calendarHeader.classList.add(Namespace.css.calendarHeader);\n\n const previous = document.createElement('div');\n previous.classList.add(Namespace.css.previous);\n previous.setAttribute('data-action', ActionTypes.previous);\n previous.appendChild(\n this._iconTag(this._context._options.display.icons.previous)\n );\n\n const switcher = document.createElement('div');\n switcher.classList.add(Namespace.css.switch);\n switcher.setAttribute('data-action', ActionTypes.pickerSwitch);\n\n const next = document.createElement('div');\n next.classList.add(Namespace.css.next);\n next.setAttribute('data-action', ActionTypes.next);\n next.appendChild(this._iconTag(this._context._options.display.icons.next));\n\n calendarHeader.append(previous, switcher, next);\n return calendarHeader;\n }\n\n /**\n * Builds an icon tag as either an ``\n * or with icons.type is `sprites` then an svg tag instead\n * @param iconClass\n * @private\n */\n _iconTag(iconClass: string): HTMLElement {\n if (this._context._options.display.icons.type === 'sprites') {\n const svg = document.createElement('svg');\n svg.innerHTML = ``;\n return svg;\n }\n const icon = document.createElement('i');\n DOMTokenList.prototype.add.apply(icon.classList, iconClass.split(' '));\n return icon;\n }\n\n /**\n * A document click event to hide the widget if click is outside\n * @private\n * @param e MouseEvent\n */\n private _documentClickEvent = (e: MouseEvent) => {\n if (\n this._isVisible &&\n !e.composedPath().includes(this.widget) && // click inside the widget\n !e.composedPath()?.includes(this._context._element) && // click on the element\n (!this._context._options.display.keepOpen ||\n !this._context._options.debug ||\n !(window as any).debug)\n ) {\n this.hide();\n }\n };\n\n /**\n * Click event for any action like selecting a date\n * @param e MouseEvent\n * @private\n */\n private _actionsClickEvent = (e: MouseEvent) => {\n this._context._action.do(e);\n };\n\n /**\n * Causes the widget to get rebuilt on next show. If the picker is already open\n * then hide and reshow it.\n * @private\n */\n _rebuild() {\n const wasVisible = this._isVisible;\n if (wasVisible) this.hide();\n this._dispose();\n if (wasVisible) {\n this.show();\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Dates from './dates';\n\n/**\n * Main class for date validation rules based on the options provided.\n */\nexport default class Validation {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Checks to see if the target date is valid based on the rules provided in the options.\n * Granularity can be provide to chek portions of the date instead of the whole.\n * @param targetDate\n * @param granularity\n */\n isValid(targetDate: DateTime, granularity?: Unit): boolean {\n if (\n this._context._options.restrictions.disabledDates.length > 0 &&\n this._isInDisabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledDates.length > 0 &&\n !this._isInEnabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.daysOfWeekDisabled?.length > 0 &&\n this._context._options.restrictions.daysOfWeekDisabled.indexOf(\n targetDate.weekDay\n ) !== -1\n ) {\n return false;\n }\n\n if (\n this._context._options.restrictions.minDate &&\n targetDate.isBefore(\n this._context._options.restrictions.minDate,\n granularity\n )\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.maxDate &&\n targetDate.isAfter(\n this._context._options.restrictions.maxDate,\n granularity\n )\n ) {\n return false;\n }\n\n if (\n granularity === Unit.hours ||\n granularity === Unit.minutes ||\n granularity === Unit.seconds\n ) {\n if (\n this._context._options.restrictions.disabledHours.length > 0 &&\n this._isInDisabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledHours.length > 0 &&\n !this._isInEnabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.disabledTimeIntervals.length > 0\n ) {\n for (\n let i = 0;\n i < this._context._options.restrictions.disabledTimeIntervals.length;\n i++\n ) {\n if (\n targetDate.isBetween(\n this._context._options.restrictions.disabledTimeIntervals[i].from,\n this._context._options.restrictions.disabledTimeIntervals[i].to\n )\n )\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Checks to see if the disabledDates option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInDisabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledDates ||\n this._context._options.restrictions.disabledDates.length === 0\n )\n return false;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.disabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the enabledDates option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInEnabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledDates ||\n this._context._options.restrictions.enabledDates.length === 0\n )\n return true;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.enabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the disabledHours option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInDisabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledHours ||\n this._context._options.restrictions.disabledHours.length === 0\n )\n return false;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.disabledHours.find(\n (x) => x === formattedDate\n );\n }\n\n /**\n * Checks to see if the enabledHours option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInEnabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledHours ||\n this._context._options.restrictions.enabledHours.length === 0\n )\n return true;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.enabledHours.find(\n (x) => x === formattedDate\n );\n }\n}\n","import Display from './display/index';\nimport Validation from './validation';\nimport Dates from './dates';\nimport Actions, { ActionTypes } from './actions';\nimport { DatePickerModes, DefaultOptions } from './conts';\nimport { DateTime, DateTimeFormatOptions, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options, { OptionConverter } from './options';\nimport {\n BaseEvent,\n ChangeEvent,\n ViewUpdateEvent,\n FailEvent,\n} from './event-types';\n\n/**\n * A robust and powerful date/time picker component.\n */\nclass TempusDominus {\n dates: Dates;\n\n _options: Options;\n _currentViewMode = 0;\n _subscribers: { [key: string]: ((event: any) => {})[] } = {};\n _element: HTMLElement;\n _input: HTMLInputElement;\n _unset: boolean;\n _minViewModeNumber = 0;\n _display: Display;\n _validation: Validation;\n _action: Actions;\n private _isDisabled = false;\n private _notifyChangeEventContext = 0;\n private _toggle: HTMLElement;\n private _currentPromptTimeTimeout: any;\n\n constructor(element: HTMLElement, options: Options = {} as Options) {\n if (!element) {\n Namespace.errorMessages.mustProvideElement;\n }\n this._element = element;\n this._options = this._initializeOptions(options, DefaultOptions, true);\n this._viewDate.setLocale(this._options.localization.locale);\n this._unset = true;\n\n this._display = new Display(this);\n this._validation = new Validation(this);\n this.dates = new Dates(this);\n this._action = new Actions(this);\n\n this._initializeInput();\n this._initializeToggle();\n\n if (this._options.display.inline) this._display.show();\n }\n\n _viewDate = new DateTime();\n\n get viewDate() {\n return this._viewDate;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Update the picker options. If `reset` is provide `options` will be merged with DefaultOptions instead.\n * @param options\n * @param reset\n * @public\n */\n updateOptions(options, reset = false): void {\n if (reset) this._options = this._initializeOptions(options, DefaultOptions);\n else this._options = this._initializeOptions(options, this._options);\n this._display._rebuild();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Toggles the picker open or closed. If the picker is disabled, nothing will happen.\n * @public\n */\n toggle(): void {\n if (this._isDisabled) return;\n this._display.toggle();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Shows the picker unless the picker is disabled.\n * @public\n */\n show(): void {\n if (this._isDisabled) return;\n this._display.show();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker unless the picker is disabled.\n * @public\n */\n hide(): void {\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Disables the picker and the target input field.\n * @public\n */\n disable(): void {\n this._isDisabled = true;\n // todo this might be undesired. If a dev disables the input field to\n // only allow using the picker, this will break that.\n this._input?.setAttribute('disabled', 'disabled');\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Enables the picker and the target input field.\n * @public\n */\n enable(): void {\n this._isDisabled = false;\n this._input?.removeAttribute('disabled');\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Clears all the selected dates\n * @public\n */\n clear(): void {\n this.dates.clear();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Allows for a direct subscription to picker events, without having to use addEventListener on the element.\n * @param eventTypes See Namespace.Events\n * @param callbacks Function to call when event is triggered\n * @public\n */\n subscribe(\n eventTypes: string | string[],\n callbacks: (event: any) => void | ((event: any) => void)[]\n ): { unsubscribe: void }[] {\n if (typeof eventTypes === 'string') {\n eventTypes = [eventTypes];\n }\n let callBackArray = [];\n if (!Array.isArray(callbacks)) {\n callBackArray = [callbacks];\n } else {\n callBackArray = callbacks;\n }\n\n if (eventTypes.length !== callBackArray.length) {\n Namespace.errorMessages.subscribeMismatch;\n }\n\n const returnArray = [];\n\n for (let i = 0; i < eventTypes.length; i++) {\n const eventType = eventTypes[i];\n if (!Array.isArray(this._subscribers[eventType])) {\n this._subscribers[eventType] = [];\n }\n\n this._subscribers[eventType].push(callBackArray[i]);\n\n returnArray.push({\n unsubscribe: this._unsubscribe.bind(\n this,\n eventType,\n this._subscribers[eventType].length - 1\n ),\n });\n\n if (eventTypes.length === 1) {\n return returnArray[0];\n }\n }\n\n return returnArray;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker and removes event listeners\n */\n dispose() {\n this._display.hide();\n // this will clear the document click event listener\n this._display._dispose();\n this._input?.removeEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input?.removeEventListener('click', this._toggleClickEvent);\n }\n this._toggle.removeEventListener('click', this._toggleClickEvent);\n this._subscribers = {};\n }\n\n /**\n * Triggers an event like ChangeEvent when the picker has updated the value\n * of a selected date.\n * @param event Accepts a BaseEvent object.\n * @private\n */\n _triggerEvent(event: BaseEvent) {\n // checking hasOwnProperty because the BasicEvent also falls through here otherwise\n if ((event as ChangeEvent) && event.hasOwnProperty('date')) {\n const { date, oldDate, isClear } = event as ChangeEvent;\n // this was to prevent a max call stack error\n // https://github.com/tempusdominus/core/commit/15a280507f5277b31b0b3319ab1edc7c19a000fb\n // todo see if this is still needed or if there's a cleaner way\n this._notifyChangeEventContext++;\n if (\n (date && oldDate && date.isSame(oldDate)) ||\n (!isClear && !date && !oldDate) ||\n this._notifyChangeEventContext > 1\n ) {\n this._notifyChangeEventContext = 0;\n return;\n }\n this._handleAfterChangeEvent(event as ChangeEvent);\n }\n\n this._element.dispatchEvent(\n new CustomEvent(event.type, { detail: event as any })\n );\n\n if ((window as any).jQuery) {\n const $ = (window as any).jQuery;\n $(this._element).trigger(event);\n }\n\n const publish = () => {\n // return if event is not subscribed\n if (!Array.isArray(this._subscribers[event.type])) {\n return;\n }\n\n // Trigger callback for each subscriber\n this._subscribers[event.type].forEach((callback) => {\n callback(event);\n });\n };\n\n publish();\n\n this._notifyChangeEventContext = 0;\n }\n\n /**\n * Fires a ViewUpdate event when, for example, the month view is changed.\n * @param {Unit} unit\n * @private\n */\n _viewUpdate(unit: Unit) {\n this._triggerEvent({\n type: Namespace.events.update,\n change: unit,\n viewDate: this._viewDate.clone,\n } as ViewUpdateEvent);\n }\n\n private _unsubscribe(eventName, index) {\n this._subscribers[eventName].splice(index, 1);\n }\n\n /**\n * Merges two Option objects together and validates options type\n * @param config new Options\n * @param mergeTo Options to merge into\n * @param includeDataset When true, the elements data-td attributes will be included in the\n * @private\n */\n private _initializeOptions(\n config: Options,\n mergeTo: Options,\n includeDataset = false\n ): Options {\n config = OptionConverter._mergeOptions(config, mergeTo);\n if (includeDataset)\n config = OptionConverter._dataToOptions(this._element, config);\n\n OptionConverter._validateConflcits(config);\n\n config.viewDate = config.viewDate.setLocale(config.localization.locale);\n\n if (!this._viewDate.isSame(config.viewDate)) {\n this._viewDate = config.viewDate;\n }\n\n /**\n * Sets the minimum view allowed by the picker. For example the case of only\n * allowing year and month to be selected but not date.\n */\n if (config.display.components.year) {\n this._minViewModeNumber = 2;\n }\n if (config.display.components.month) {\n this._minViewModeNumber = 1;\n }\n if (config.display.components.date) {\n this._minViewModeNumber = 0;\n }\n\n this._currentViewMode = Math.max(\n this._minViewModeNumber,\n this._currentViewMode\n );\n\n // Update view mode if needed\n if (\n DatePickerModes[this._currentViewMode].name !== config.display.viewMode\n ) {\n this._currentViewMode = Math.max(\n DatePickerModes.findIndex((x) => x.name === config.display.viewMode),\n this._minViewModeNumber\n );\n }\n\n // defaults the input format based on the components enabled\n if (config.display.inputFormat === undefined) {\n const components = config.display.components;\n config.display.inputFormat = {\n year: components.calendar && components.year ? 'numeric' : undefined,\n month: components.calendar && components.month ? '2-digit' : undefined,\n day: components.calendar && components.date ? '2-digit' : undefined,\n hour:\n components.clock && components.hours\n ? components.useTwentyfourHour\n ? '2-digit'\n : 'numeric'\n : undefined,\n minute: components.clock && components.minutes ? '2-digit' : undefined,\n second: components.clock && components.seconds ? '2-digit' : undefined,\n hour12: !components.useTwentyfourHour,\n };\n }\n\n if (this._display?.isVisible) {\n this._display._update('all');\n }\n\n return config;\n }\n\n /**\n * Checks if an input field is being used, attempts to locate one and sets an\n * event listener if found.\n * @private\n */\n private _initializeInput() {\n if (this._element.tagName == 'INPUT') {\n this._input = this._element as HTMLInputElement;\n } else {\n let query = this._element.dataset.tdTargetInput;\n if (query == undefined || query == 'nearest') {\n this._input = this._element.querySelector('input');\n } else {\n this._input = this._element.querySelector(query);\n }\n }\n\n if (!this._input) return;\n\n this._input.addEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input.addEventListener('click', this._toggleClickEvent);\n }\n\n if (this._input.value) {\n this._inputChangeEvent();\n }\n }\n\n /**\n * Attempts to locate a toggle for the picker and sets an event listener\n * @private\n */\n private _initializeToggle() {\n if (this._options.display.inline) return;\n let query = this._element.dataset.tdTargetToggle;\n if (query == 'nearest') {\n query = '[data-td-toggle=\"datetimepicker\"]';\n }\n this._toggle =\n query == undefined ? this._element : this._element.querySelector(query);\n this._toggle.addEventListener('click', this._toggleClickEvent);\n }\n\n /**\n * If the option is enabled this will render the clock view after a date pick.\n * @param e change event\n * @private\n */\n private _handleAfterChangeEvent(e: ChangeEvent) {\n if (\n // options is disabled\n !this._options.promptTimeOnDateChange ||\n this._options.display.inline ||\n this._options.display.sideBySide ||\n // time is disabled\n !this._display._hasTime ||\n // clock component is already showing\n this._display.widget\n ?.getElementsByClassName(Namespace.css.show)[0]\n .classList.contains(Namespace.css.timeContainer)\n )\n return;\n\n // First time ever. If useCurrent option is set to true (default), do nothing\n // because the first date is selected automatically.\n // or date didn't change (time did) or date changed because time did.\n if (\n (!e.oldDate && this._options.useCurrent) ||\n (e.oldDate && e.date?.isSame(e.oldDate))\n ) {\n return;\n }\n\n clearTimeout(this._currentPromptTimeTimeout);\n this._currentPromptTimeTimeout = setTimeout(() => {\n if (this._display.widget) {\n this._action.do(\n {\n currentTarget: this._display.widget.querySelector(\n `.${Namespace.css.switch} div`\n ),\n },\n ActionTypes.togglePicker\n );\n }\n }, this._options.promptTimeOnDateChangeTransitionDelay);\n }\n\n /**\n * Event for when the input field changes. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _inputChangeEvent = () => {\n const value = this._input.value;\n if (this._options.multipleDates) {\n try {\n const valueSplit = value.split(this._options.multipleDatesSeparator);\n for (let i = 0; i < valueSplit.length; i++) {\n this.dates.set(valueSplit[i], i, 'input');\n }\n } catch {\n console.warn(\n 'TD: Something went wrong trying to set the multidate values from the input field.'\n );\n }\n } else {\n this.dates.set(value, 0, 'input');\n }\n };\n\n /**\n * Event for when the toggle is clicked. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _toggleClickEvent = () => {\n this.toggle();\n };\n}\n\nexport {\n TempusDominus,\n Namespace,\n DefaultOptions,\n DateTime,\n Options,\n Unit,\n DateTimeFormatOptions,\n};\n"],"names":["Unit","SecondDisplay","createPopper"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tempus-dominus.js","sources":["../../src/js/datetime.ts","../../src/js/errors.ts","../../src/js/namespace.ts","../../src/js/conts.ts","../../src/js/display/collapse.ts","../../src/js/actions.ts","../../src/js/display/calendar/date-display.ts","../../src/js/display/calendar/month-display.ts","../../src/js/options.ts","../../src/js/dates.ts","../../src/js/display/calendar/year-display.ts","../../src/js/display/calendar/decade-display.ts","../../src/js/display/time/time-display.ts","../../src/js/display/time/hour-display.ts","../../src/js/display/time/minute-display.ts","../../src/js/display/time/second-display.ts","../../src/js/display/index.ts","../../src/js/validation.ts","../../src/js/tempus-dominus.ts"],"sourcesContent":["export enum Unit {\n seconds = 'seconds',\n minutes = 'minutes',\n hours = 'hours',\n date = 'date',\n month = 'month',\n year = 'year',\n}\n\nexport interface DateTimeFormatOptions extends Intl.DateTimeFormatOptions {\n timeStyle?: 'short' | 'medium' | 'long';\n dateStyle?: 'short' | 'medium' | 'long' | 'full';\n}\n\n/**\n * For the most part this object behaves exactly the same way\n * as the native Date object with a little extra spice.\n */\nexport class DateTime extends Date {\n /**\n * Used with Intl.DateTimeFormat\n */\n locale = 'default';\n\n /**\n * Chainable way to set the {@link locale}\n * @param value\n */\n setLocale(value: string): this {\n this.locale = value;\n return this;\n }\n\n /**\n * Converts a plain JS date object to a DateTime object.\n * Doing this allows access to format, etc.\n * @param date\n */\n static convert(date: Date): DateTime {\n if (!date) throw `A date is required`;\n return new DateTime(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n );\n }\n\n /**\n * Native date manipulations are not pure functions. This function creates a duplicate of the DateTime object.\n */\n get clone() {\n return new DateTime(\n this.year,\n this.month,\n this.date,\n this.hours,\n this.minutes,\n this.seconds,\n this.getMilliseconds()\n ).setLocale(this.locale);\n }\n\n /**\n * Sets the current date to the start of the {@link unit} provided\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).startOf('month')\n * would return April 1, 2021, 12:00:00.000 AM (midnight)\n * @param unit\n */\n startOf(unit: Unit | 'weekDay'): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n switch (unit) {\n case 'seconds':\n this.setMilliseconds(0);\n break;\n case 'minutes':\n this.setSeconds(0, 0);\n break;\n case 'hours':\n this.setMinutes(0, 0, 0);\n break;\n case 'date':\n this.setHours(0, 0, 0, 0);\n break;\n case 'weekDay':\n this.startOf(Unit.date);\n this.manipulate(0 - this.weekDay, Unit.date);\n break;\n case 'month':\n this.startOf(Unit.date);\n this.setDate(1);\n break;\n case 'year':\n this.startOf(Unit.date);\n this.setMonth(0, 1);\n break;\n }\n return this;\n }\n\n /**\n * Sets the current date to the end of the {@link unit} provided\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).endOf('month')\n * would return April 30, 2021, 11:59:59.999 PM\n * @param unit\n */\n endOf(unit: Unit | 'weekDay'): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n switch (unit) {\n case 'seconds':\n this.setMilliseconds(999);\n break;\n case 'minutes':\n this.setSeconds(59, 999);\n break;\n case 'hours':\n this.setMinutes(59, 59, 999);\n break;\n case 'date':\n this.setHours(23, 59, 59, 999);\n break;\n case 'weekDay':\n this.startOf(Unit.date);\n this.manipulate(6 - this.weekDay, Unit.date);\n break;\n case 'month':\n this.endOf(Unit.date);\n this.manipulate(1, Unit.month);\n this.setDate(0);\n break;\n case 'year':\n this.endOf(Unit.date);\n this.manipulate(1, Unit.year);\n this.setDate(0);\n break;\n }\n return this;\n }\n\n /**\n * Change a {@link unit} value. Value can be positive or negative\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).manipulate(1, 'month')\n * would return May 30, 2021, 11:45:32.984 AM\n * @param value A positive or negative number\n * @param unit\n */\n manipulate(value: number, unit: Unit): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n this[unit] += value;\n return this;\n }\n\n /**\n * Returns a string format.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat\n * for valid templates and locale objects\n * @param template An object. Uses browser defaults otherwise.\n * @param locale Can be a string or an array of strings. Uses browser defaults otherwise.\n */\n format(template: DateTimeFormatOptions, locale = this.locale): string {\n return new Intl.DateTimeFormat(locale, template).format(this);\n }\n\n /**\n * Return true if {@link compare} is before this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isBefore(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() < compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n return (\n this.clone.startOf(unit).valueOf() < compare.clone.startOf(unit).valueOf()\n );\n }\n\n /**\n * Return true if {@link compare} is after this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isAfter(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() > compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n return (\n this.clone.startOf(unit).valueOf() > compare.clone.startOf(unit).valueOf()\n );\n }\n\n /**\n * Return true if {@link compare} is same this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isSame(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() === compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n compare = DateTime.convert(compare);\n return (\n this.clone.startOf(unit).valueOf() === compare.startOf(unit).valueOf()\n );\n }\n\n /**\n * Check if this is between two other DateTimes, optionally looking at unit scale. The match is exclusive.\n * @param left\n * @param right\n * @param unit.\n * @param inclusivity. A [ indicates inclusion of a value. A ( indicates exclusion.\n * If the inclusivity parameter is used, both indicators must be passed.\n */\n isBetween(\n left: DateTime,\n right: DateTime,\n unit?: Unit,\n inclusivity: '()' | '[]' | '(]' | '[)' = '()'\n ): boolean {\n if (unit && this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n const leftInclusivity = inclusivity[0] === '(';\n const rightInclusivity = inclusivity[1] === ')';\n\n return (\n ((leftInclusivity\n ? this.isAfter(left, unit)\n : !this.isBefore(left, unit)) &&\n (rightInclusivity\n ? this.isBefore(right, unit)\n : !this.isAfter(right, unit))) ||\n ((leftInclusivity\n ? this.isBefore(left, unit)\n : !this.isAfter(left, unit)) &&\n (rightInclusivity\n ? this.isAfter(right, unit)\n : !this.isBefore(right, unit)))\n );\n }\n\n /**\n * Returns flattened object of the date. Does not include literals\n * @param locale\n * @param template\n */\n parts(\n locale = this.locale,\n template: any = { dateStyle: 'full', timeStyle: 'long' }\n ) {\n const parts = {};\n new Intl.DateTimeFormat(locale, template)\n .formatToParts(this)\n .filter((x) => x.type !== 'literal')\n .forEach((x) => (parts[x.type] = x.value));\n return parts;\n }\n\n /**\n * Shortcut to Date.getSeconds()\n */\n get seconds(): number {\n return this.getSeconds();\n }\n\n /**\n * Shortcut to Date.setSeconds()\n */\n set seconds(value: number) {\n this.setSeconds(value);\n }\n\n /**\n * Returns two digit hours\n */\n get secondsFormatted(): string {\n return this.seconds < 10 ? `0${this.seconds}` : `${this.seconds}`;\n }\n\n /**\n * Shortcut to Date.getMinutes()\n */\n get minutes(): number {\n return this.getMinutes();\n }\n\n /**\n * Shortcut to Date.setMinutes()\n */\n set minutes(value: number) {\n this.setMinutes(value);\n }\n\n /**\n * Returns two digit hours\n */\n get minutesFormatted(): string {\n return this.minutes < 10 ? `0${this.minutes}` : `${this.minutes}`;\n }\n\n /**\n * Shortcut to Date.getHours()\n */\n get hours(): number {\n return this.getHours();\n }\n\n /**\n * Shortcut to Date.setHours()\n */\n set hours(value: number) {\n this.setHours(value);\n }\n\n /**\n * Returns two digit hours\n */\n get hoursFormatted(): string {\n return this.hours < 10 ? `0${this.hours}` : `${this.hours}`;\n }\n\n /**\n * Returns two digit hours but in twelve hour mode e.g. 13 -> 1\n */\n get twelveHoursFormatted(): string {\n let hour = this.hours;\n if (hour > 12) hour = hour - 12;\n if (hour === 0) hour = 12;\n return hour < 10 ? `0${hour}` : `${hour}`;\n }\n\n /**\n * Get the meridiem of the date. E.g. AM or PM.\n * If the {@link locale} provides a \"dayPeriod\" then this will be returned,\n * otherwise it will return AM or PM.\n * @param locale\n */\n meridiem(locale: string = this.locale): string {\n return new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n hour12: true,\n } as any)\n .formatToParts(this)\n .find((p) => p.type === 'dayPeriod')?.value;\n }\n\n /**\n * Shortcut to Date.getDate()\n */\n get date(): number {\n return this.getDate();\n }\n\n /**\n * Shortcut to Date.setDate()\n */\n set date(value: number) {\n this.setDate(value);\n }\n\n /**\n * Return two digit date\n */\n get dateFormatted(): string {\n return this.date < 10 ? `0${this.date}` : `${this.date}`;\n }\n\n // https://github.com/you-dont-need/You-Dont-Need-Momentjs#week-of-year\n /**\n * Gets the week of the year\n */\n get week(): number {\n const startOfYear = new Date(this.year, 0, 1);\n startOfYear.setDate(\n startOfYear.getDate() + (1 - (startOfYear.getDay() % 7))\n );\n return Math.round((this.valueOf() - startOfYear.valueOf()) / 604800000) + 1;\n }\n\n /**\n * Shortcut to Date.getDay()\n */\n get weekDay(): number {\n return this.getDay();\n }\n\n /**\n * Shortcut to Date.getMonth()\n */\n get month(): number {\n return this.getMonth();\n }\n\n /**\n * Shortcut to Date.setMonth()\n */\n set month(value: number) {\n this.setMonth(value);\n }\n\n /**\n * Return two digit, human expected month. E.g. January = 1, December = 12\n */\n get monthFormatted(): string {\n return this.month + 1 < 10 ? `0${this.month}` : `${this.month}`;\n }\n\n /**\n * Shortcut to Date.getFullYear()\n */\n get year(): number {\n return this.getFullYear();\n }\n\n /**\n * Shortcut to Date.setFullYear()\n */\n set year(value: number) {\n this.setFullYear(value);\n }\n}\n","import Namespace from './namespace';\n\nexport class TdError extends Error {\n code: number;\n}\n\nexport class ErrorMessages {\n private base = 'TD:';\n\n //#region out to console\n\n /**\n * Throws an error indicating that a key in the options object is invalid.\n * @param optionName\n */\n unexpectedOption(optionName: string) {\n const error = new TdError(\n `${this.base} Unexpected option: ${optionName} does not match a known option.`\n );\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error indicating that one more keys in the options object is invalid.\n * @param optionName\n */\n unexpectedOptions(optionName: string[]) {\n const error = new TdError(`${this.base}: ${optionName.join(', ')}`);\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error when an option is provide an unsupported value.\n * For example a value of 'cheese' for toolbarPlacement which only supports\n * 'top', 'bottom', 'default'.\n * @param optionName\n * @param badValue\n * @param validOptions\n */\n unexpectedOptionValue(\n optionName: string,\n badValue: string,\n validOptions: string[]\n ) {\n const error = new TdError(\n `${\n this.base\n } Unexpected option value: ${optionName} does not accept a value of \"${badValue}\". Valid values are: ${validOptions.join(\n ', '\n )}`\n );\n error.code = 2;\n throw error;\n }\n\n /**\n * Throws an error when an option value is the wrong type.\n * For example a string value was provided to multipleDates which only\n * supports true or false.\n * @param optionName\n * @param badType\n * @param expectedType\n */\n typeMismatch(optionName: string, badType: string, expectedType: string) {\n const error = new TdError(\n `${this.base} Mismatch types: ${optionName} has a type of ${badType} instead of the required ${expectedType}`\n );\n error.code = 3;\n throw error;\n }\n\n /**\n * Throws an error when an option value is outside of the expected range.\n * For example restrictions.daysOfWeekDisabled excepts a value between 0 and 6.\n * @param optionName\n * @param lower\n * @param upper\n */\n numbersOutOfRage(optionName: string, lower: number, upper: number) {\n const error = new TdError(\n `${this.base} ${optionName} expected an array of number between ${lower} and ${upper}.`\n );\n error.code = 4;\n throw error;\n }\n\n /**\n * Throws an error when a value for a date options couldn't be parsed. Either\n * the option was an invalide string or an invalid Date object.\n * @param optionName\n * @param date\n * @param soft If true, logs a warning instead of an error.\n */\n failedToParseDate(optionName: string, date: any, soft = false) {\n const error = new TdError(\n `${this.base} Could not correctly parse \"${date}\" to a date for ${optionName}.`\n );\n error.code = 5;\n if (!soft) throw error;\n console.warn(error);\n }\n\n /**\n * Throws when an element to attach to was not provided in the constructor.\n */\n mustProvideElement() {\n const error = new TdError(`${this.base} No element was provided.`);\n error.code = 6;\n throw error;\n }\n\n /**\n * Throws if providing an array for the events to subscribe method doesn't have\n * the same number of callbacks. E.g., subscribe([1,2], [1])\n */\n subscribeMismatch() {\n const error = new TdError(\n `${this.base} The subscribed events does not match the number of callbacks`\n );\n error.code = 7;\n throw error;\n }\n\n /**\n * Throws if the configuration has conflicting rules e.g. minDate is after maxDate\n */\n conflictingConfiguration(message?: string) {\n const error = new TdError(\n `${this.base} A configuration value conflicts with another rule. ${message}`\n );\n error.code = 8;\n throw error;\n }\n\n /**\n * Logs a warning if a date option value is provided as a string, instead of\n * a date/datetime object.\n */\n dateString() {\n console.warn(\n `${this.base} Using a string for date options is not recommended unless you specify an ISO string.`\n );\n }\n\n //#endregion\n\n //#region used with notify.error\n\n /**\n * Used with an Error Event type if the user selects a date that\n * fails restriction validation.\n */\n failedToSetInvalidDate = 'Failed to set invalid date';\n\n /**\n * Used with an Error Event type when a user changes the value of the\n * input field directly, and does not provide a valid date.\n */\n failedToParseInput = 'Failed parse input field';\n\n //#endregion\n}\n","import { ErrorMessages } from './errors';\n// this is not the way I want this to stay but nested classes seemed to blown up once its compiled.\nconst NAME = 'tempus-dominus',\n version = '6.0.0-alpha1',\n dataKey = 'td';\n\n/**\n * Events\n */\nclass Events {\n key = `.${dataKey}`;\n\n /**\n * Change event. Fired when the user selects a date.\n * See also EventTypes.ChangeEvent\n */\n change = `change${this.key}`;\n\n /**\n * Emit when the view changes for example from month view to the year view.\n * See also EventTypes.ViewUpdateEvent\n */\n update = `update${this.key}`;\n\n /**\n * Emits when a selected date or value from the input field fails to meet the provided validation rules.\n * See also EventTypes.FailEvent\n */\n error = `error${this.key}`;\n\n /**\n * Show event\n * @event Events#show\n */\n show = `show${this.key}`;\n\n /**\n * Hide event\n * @event Events#hide\n */\n hide = `hide${this.key}`;\n\n // blur and focus are used in the jQuery provider but are otherwise unused.\n // keyup/down will be used later for keybinding options\n\n blur = `blur${this.key}`;\n focus = `focus${this.key}`;\n keyup = `keyup${this.key}`;\n keydown = `keydown${this.key}`;\n}\n\nclass Css {\n /**\n * The outer element for the widget.\n */\n widget = `${NAME}-widget`;\n\n /**\n * Hold the previous, next and switcher divs\n */\n calendarHeader = 'calendar-header';\n\n /**\n * The element for the action to change the calendar view. E.g. month -> year.\n */\n switch = 'picker-switch';\n\n /**\n * The elements for all of the toolbar options\n */\n toolbar = 'toolbar';\n\n /**\n * Disables the hover and rounding affect.\n */\n noHighlight = 'no-highlight';\n\n /**\n * Applied to the widget element when the side by side option is in use.\n */\n sideBySide = 'timepicker-sbs';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> July\n */\n previous = 'previous';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> September\n */\n next = 'next';\n\n /**\n * Applied to any action that would violate any restriction options. ALso applied\n * to an input field if the disabled function is called.\n */\n disabled = 'disabled';\n\n /**\n * Applied to any date that is less than requested view,\n * e.g. the last day of the previous month.\n */\n old = 'old';\n\n /**\n * Applied to any date that is greater than of requested view,\n * e.g. the last day of the previous month.\n */\n new = 'new';\n\n /**\n * Applied to any date that is currently selected.\n */\n active = 'active';\n\n //#region date element\n\n /**\n * The outer most element for the calendar view.\n */\n dateContainer = 'date-container';\n\n /**\n * The outer most element for the decades view.\n */\n decadesContainer = `${this.dateContainer}-decades`;\n\n /**\n * Applied to elements within the decades container, e.g. 2020, 2030\n */\n decade = 'decade';\n\n /**\n * The outer most element for the years view.\n */\n yearsContainer = `${this.dateContainer}-years`;\n\n /**\n * Applied to elements within the years container, e.g. 2021, 2021\n */\n year = 'year';\n\n /**\n * The outer most element for the month view.\n */\n monthsContainer = `${this.dateContainer}-months`;\n\n /**\n * Applied to elements within the month container, e.g. January, February\n */\n month = 'month';\n\n /**\n * The outer most element for the calendar view.\n */\n daysContainer = `${this.dateContainer}-days`;\n\n /**\n * Applied to elements within the day container, e.g. 1, 2..31\n */\n day = 'day';\n\n /**\n * If display.calendarWeeks is enabled, a column displaying the week of year\n * is shown. This class is applied to each cell in that column.\n */\n calendarWeeks = 'cw';\n\n /**\n * Applied to the first row of the calendar view, e.g. Sunday, Monday\n */\n dayOfTheWeek = 'dow';\n\n /**\n * Applied to the current date on the calendar view.\n */\n today = 'today';\n\n /**\n * Applied to the locale's weekend dates on the calendar view, e.g. Sunday, Saturday\n */\n weekend = 'weekend';\n\n //#endregion\n\n //#region time element\n\n /**\n * The outer most element for all time related elements.\n */\n timeContainer = 'time-container';\n\n /**\n * Applied the separator columns between time elements, e.g. hour *:* minute *:* second\n */\n separator = 'separator';\n\n /**\n * The outer most element for the clock view.\n */\n clockContainer = `${this.timeContainer}-clock`;\n\n /**\n * The outer most element for the hours selection view.\n */\n hourContainer = `${this.timeContainer}-hour`;\n\n /**\n * The outer most element for the minutes selection view.\n */\n minuteContainer = `${this.timeContainer}-minute`;\n\n /**\n * The outer most element for the seconds selection view.\n */\n secondContainer = `${this.timeContainer}-second`;\n\n /**\n * Applied to each element in the hours selection view.\n */\n hour = 'hour';\n\n /**\n * Applied to each element in the minutes selection view.\n */\n minute = 'minute';\n\n /**\n * Applied to each element in the seconds selection view.\n */\n second = 'second';\n\n /**\n * Applied AM/PM toggle button.\n */\n toggleMeridiem = 'toggleMeridiem';\n\n //#endregion\n\n //#region collapse\n\n /**\n * Applied the element of the current view mode, e.g. calendar or clock.\n */\n show = 'show';\n\n /**\n * Applied to the currently showing view mode during a transition\n * between calendar and clock views\n */\n collapsing = 'td-collapsing';\n\n /**\n * Applied to the currently hidden view mode.\n */\n collapse = 'td-collapse';\n\n //#endregion\n\n /**\n * Applied to the widget when the option display.inline is enabled.\n */\n inline = 'inline';\n}\n\nexport default class Namespace {\n static NAME = NAME;\n // noinspection JSUnusedGlobalSymbols\n static version = version;\n static dataKey = dataKey;\n\n static events = new Events();\n\n static css = new Css();\n\n static errorMessages = new ErrorMessages();\n}\n","import { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options from './options';\n\nconst DefaultOptions: Options = {\n restrictions: {\n minDate: undefined,\n maxDate: undefined,\n disabledDates: [],\n enabledDates: [],\n daysOfWeekDisabled: [],\n disabledTimeIntervals: [],\n disabledHours: [],\n enabledHours: [],\n },\n display: {\n icons: {\n type: 'icons',\n time: 'fas fa-clock',\n date: 'fas fa-calendar',\n up: 'fas fa-arrow-up',\n down: 'fas fa-arrow-down',\n previous: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n today: 'fas fa-calendar-check',\n clear: 'fas fa-trash',\n close: 'fas fa-times',\n },\n sideBySide: false,\n calendarWeeks: false,\n viewMode: 'calendar',\n toolbarPlacement: 'bottom',\n keepOpen: false,\n buttons: {\n today: false,\n clear: false,\n close: false,\n },\n components: {\n calendar: true,\n date: true,\n month: true,\n year: true,\n decades: true,\n clock: true,\n hours: true,\n minutes: true,\n seconds: false,\n useTwentyfourHour: false,\n },\n inline: false,\n },\n stepping: 1,\n useCurrent: true,\n defaultDate: undefined,\n localization: {\n today: 'Go to today',\n clear: 'Clear selection',\n close: 'Close the picker',\n selectMonth: 'Select Month',\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n selectYear: 'Select Year',\n previousYear: 'Previous Year',\n nextYear: 'Next Year',\n selectDecade: 'Select Decade',\n previousDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n previousCentury: 'Previous Century',\n nextCentury: 'Next Century',\n pickHour: 'Pick Hour',\n incrementHour: 'Increment Hour',\n decrementHour: 'Decrement Hour',\n pickMinute: 'Pick Minute',\n incrementMinute: 'Increment Minute',\n decrementMinute: 'Decrement Minute',\n pickSecond: 'Pick Second',\n incrementSecond: 'Increment Second',\n decrementSecond: 'Decrement Second',\n toggleMeridiem: 'Toggle Meridiem',\n selectTime: 'Select Time',\n selectDate: 'Select Date',\n dayViewHeaderFormat: 'long',\n locale: 'default',\n },\n keepInvalid: false,\n debug: false,\n allowInputToggle: false,\n viewDate: new DateTime(),\n multipleDates: false,\n multipleDatesSeparator: '; ',\n promptTimeOnDateChange: false,\n promptTimeOnDateChangeTransitionDelay: 200,\n hooks: {\n inputParse: undefined,\n inputFormat: undefined,\n },\n};\n\nconst DatePickerModes: {\n name: string;\n className: string;\n unit: Unit;\n step: number;\n}[] = [\n {\n name: 'calendar',\n className: Namespace.css.daysContainer,\n unit: Unit.month,\n step: 1,\n },\n {\n name: 'months',\n className: Namespace.css.monthsContainer,\n unit: Unit.year,\n step: 1,\n },\n {\n name: 'years',\n className: Namespace.css.yearsContainer,\n unit: Unit.year,\n step: 10,\n },\n {\n name: 'decades',\n className: Namespace.css.decadesContainer,\n unit: Unit.year,\n step: 100,\n },\n];\n\nexport { DefaultOptions, DatePickerModes, Namespace };\n","import Namespace from '../namespace';\n\n/**\n * Provides a collapse functionality to the view changes\n */\nexport default class Collapse {\n private timeOut;\n\n /**\n * Flips the show/hide state of `target`\n * @param target html element to affect.\n */\n toggle(target: HTMLElement, callback = undefined) {\n if (target.classList.contains(Namespace.css.show)) {\n this.hide(target, callback);\n } else {\n this.show(target, callback);\n }\n }\n\n /**\n * If `target` is not already showing, then show after the animation.\n * @param target\n */\n show(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse, Namespace.css.show);\n target.style.height = '';\n this.timeOut = null;\n if (callback) callback();\n };\n\n target.style.height = '0';\n target.classList.remove(Namespace.css.collapse);\n target.classList.add(Namespace.css.collapsing);\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n target.style.height = `${target.scrollHeight}px`;\n }\n\n /**\n * If `target` is not already hidden, then hide after the animation.\n * @param target HTML Element\n */\n hide(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n !target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse);\n this.timeOut = null;\n };\n\n target.style.height = `${target.getBoundingClientRect()['height']}px`;\n\n const reflow = (element) => element.offsetHeight;\n\n reflow(target);\n\n target.classList.remove(Namespace.css.collapse, Namespace.css.show);\n target.classList.add(Namespace.css.collapsing);\n target.style.height = '';\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n }\n\n /**\n * Gets the transition duration from the `element` by getting css properties\n * `transition-duration` and `transition-delay`\n * @param element HTML Element\n */\n private getTransitionDurationFromElement = (element: HTMLElement) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } =\n window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) +\n Number.parseFloat(transitionDelay)) *\n 1000\n );\n };\n}\n","import { DatePickerModes } from './conts.js';\r\nimport { DateTime, Unit } from './datetime';\r\nimport { TempusDominus } from './tempus-dominus';\r\nimport Collapse from './display/collapse';\r\nimport Namespace from './namespace';\r\n\r\n/**\r\n *\r\n */\r\nexport default class Actions {\r\n private _context: TempusDominus;\r\n private collapse: Collapse;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this.collapse = new Collapse();\r\n }\r\n\r\n /**\r\n * Performs the selected `action`. See ActionTypes\r\n * @param e This is normally a click event\r\n * @param action If not provided, then look for a [data-action]\r\n */\r\n do(e: any, action?: ActionTypes) {\r\n const currentTarget = e.currentTarget;\r\n if (currentTarget.classList.contains(Namespace.css.disabled)) return false;\r\n action = action || currentTarget.dataset.action;\r\n const lastPicked = (\r\n this._context.dates.lastPicked || this._context._viewDate\r\n ).clone;\r\n\r\n /**\r\n * Common function to manipulate {@link lastPicked} by `unit`\r\n * @param unit\r\n * @param value Value to change by\r\n */\r\n const manipulateAndSet = (unit: Unit, value = 1) => {\r\n const newDate = lastPicked.manipulate(value, unit);\r\n if (this._context._validation.isValid(newDate, unit)) {\r\n this._context.dates._setValue(\r\n newDate,\r\n this._context.dates.lastPickedIndex\r\n );\r\n }\r\n };\r\n\r\n switch (action) {\r\n case ActionTypes.next:\r\n case ActionTypes.previous:\r\n const { unit, step } = DatePickerModes[this._context._currentViewMode];\r\n if (action === ActionTypes.next)\r\n this._context._viewDate.manipulate(step, unit);\r\n else this._context._viewDate.manipulate(step * -1, unit);\r\n this._context._viewUpdate(unit);\r\n\r\n this._context._display._showMode();\r\n break;\r\n case ActionTypes.pickerSwitch:\r\n this._context._display._showMode(1);\r\n this._context._viewUpdate(\r\n DatePickerModes[this._context._currentViewMode].unit\r\n );\r\n this._context._display._updateCalendarHeader();\r\n break;\r\n case ActionTypes.selectMonth:\r\n case ActionTypes.selectYear:\r\n case ActionTypes.selectDecade:\r\n const value = +currentTarget.getAttribute('data-value');\r\n switch (action) {\r\n case ActionTypes.selectMonth:\r\n this._context._viewDate.month = value;\r\n this._context._viewUpdate(Unit.month);\r\n break;\r\n case ActionTypes.selectYear:\r\n this._context._viewDate.year = value;\r\n this._context._viewUpdate(Unit.year);\r\n break;\r\n case ActionTypes.selectDecade:\r\n this._context._viewDate.year = value;\r\n this._context._viewUpdate(Unit.year);\r\n break;\r\n }\r\n\r\n if (\r\n this._context._currentViewMode === this._context._minViewModeNumber\r\n ) {\r\n this._context.dates._setValue(\r\n this._context._viewDate,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (!this._context._options.display.inline) {\r\n this._context._display.hide();\r\n }\r\n } else {\r\n this._context._display._showMode(-1);\r\n }\r\n break;\r\n case ActionTypes.selectDay:\r\n const day = this._context._viewDate.clone;\r\n if (currentTarget.classList.contains(Namespace.css.old)) {\r\n day.manipulate(-1, Unit.month);\r\n }\r\n if (currentTarget.classList.contains(Namespace.css.new)) {\r\n day.manipulate(1, Unit.month);\r\n }\r\n\r\n day.date = +currentTarget.innerText;\r\n let index = 0;\r\n if (this._context._options.multipleDates) {\r\n index = this._context.dates.pickedIndex(day, Unit.date);\r\n if (index !== -1) {\r\n this._context.dates._setValue(null, index); //deselect multi-date\r\n } else {\r\n this._context.dates._setValue(\r\n day,\r\n this._context.dates.lastPickedIndex + 1\r\n );\r\n }\r\n } else {\r\n this._context.dates._setValue(\r\n day,\r\n this._context.dates.lastPickedIndex\r\n );\r\n }\r\n\r\n if (\r\n !this._context._display._hasTime &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline &&\r\n !this._context._options.multipleDates\r\n ) {\r\n this._context._display.hide();\r\n }\r\n break;\r\n case ActionTypes.selectHour:\r\n let hour = +currentTarget.getAttribute('data-value');\r\n if (lastPicked.hours >= 12 && !this._context._options.display.components.useTwentyfourHour) hour += 12;\r\n lastPicked.hours = hour;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.components.minutes &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.selectMinute:\r\n lastPicked.minutes = +currentTarget.innerText;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.components.seconds &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.selectSecond:\r\n lastPicked.seconds = +currentTarget.innerText;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.incrementHours:\r\n manipulateAndSet(Unit.hours);\r\n break;\r\n case ActionTypes.incrementMinutes:\r\n manipulateAndSet(Unit.minutes, this._context._options.stepping);\r\n break;\r\n case ActionTypes.incrementSeconds:\r\n manipulateAndSet(Unit.seconds);\r\n break;\r\n case ActionTypes.decrementHours:\r\n manipulateAndSet(Unit.hours, -1);\r\n break;\r\n case ActionTypes.decrementMinutes:\r\n manipulateAndSet(Unit.minutes, this._context._options.stepping * -1);\r\n break;\r\n case ActionTypes.decrementSeconds:\r\n manipulateAndSet(Unit.seconds, -1);\r\n break;\r\n case ActionTypes.toggleMeridiem:\r\n manipulateAndSet(\r\n Unit.hours,\r\n this._context.dates.lastPicked.hours >= 12 ? -12 : 12\r\n );\r\n break;\r\n case ActionTypes.togglePicker:\r\n this._context._display.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer}, .${Namespace.css.timeContainer}`\r\n )\r\n .forEach((htmlElement: HTMLElement) =>\r\n this.collapse.toggle(htmlElement)\r\n );\r\n if (\r\n currentTarget.getAttribute('title') ===\r\n this._context._options.localization.selectDate\r\n ) {\r\n currentTarget.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectTime\r\n );\r\n currentTarget.innerHTML = this._context._display._iconTag(\r\n this._context._options.display.icons.time\r\n ).outerHTML;\r\n\r\n this._context._display._updateCalendarHeader();\r\n } else {\r\n currentTarget.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDate\r\n );\r\n currentTarget.innerHTML = this._context._display._iconTag(\r\n this._context._options.display.icons.date\r\n ).outerHTML;\r\n this.do(e, ActionTypes.showClock);\r\n this._context._display._update('clock');\r\n }\r\n break;\r\n case ActionTypes.showClock:\r\n case ActionTypes.showHours:\r\n case ActionTypes.showMinutes:\r\n case ActionTypes.showSeconds:\r\n this._context._display.widget\r\n .querySelectorAll(`.${Namespace.css.timeContainer} > div`)\r\n .forEach(\r\n (htmlElement: HTMLElement) => (htmlElement.style.display = 'none')\r\n );\r\n\r\n let classToUse = '';\r\n switch (action) {\r\n case ActionTypes.showClock:\r\n classToUse = Namespace.css.clockContainer;\r\n this._context._display._update('clock');\r\n break;\r\n case ActionTypes.showHours:\r\n classToUse = Namespace.css.hourContainer;\r\n this._context._display._update(Unit.hours);\r\n break;\r\n case ActionTypes.showMinutes:\r\n classToUse = Namespace.css.minuteContainer;\r\n this._context._display._update(Unit.minutes);\r\n break;\r\n case ActionTypes.showSeconds:\r\n classToUse = Namespace.css.secondContainer;\r\n this._context._display._update(Unit.seconds);\r\n break;\r\n }\r\n\r\n ((\r\n this._context._display.widget.getElementsByClassName(classToUse)[0]\r\n )).style.display = 'grid';\r\n break;\r\n case ActionTypes.clear:\r\n this._context.dates._setValue(null);\r\n this._context._display._updateCalendarHeader();\r\n break;\r\n case ActionTypes.close:\r\n this._context._display.hide();\r\n break;\r\n case ActionTypes.today:\r\n const today = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n this._context._viewDate = today;\r\n if (this._context._validation.isValid(today, Unit.date))\r\n this._context.dates._setValue(\r\n today,\r\n this._context.dates.lastPickedIndex\r\n );\r\n break;\r\n }\r\n }\r\n}\r\n\r\nexport enum ActionTypes {\r\n next = 'next',\r\n previous = 'previous',\r\n pickerSwitch = 'pickerSwitch',\r\n selectMonth = 'selectMonth',\r\n selectYear = 'selectYear',\r\n selectDecade = 'selectDecade',\r\n selectDay = 'selectDay',\r\n selectHour = 'selectHour',\r\n selectMinute = 'selectMinute',\r\n selectSecond = 'selectSecond',\r\n incrementHours = 'incrementHours',\r\n incrementMinutes = 'incrementMinutes',\r\n incrementSeconds = 'incrementSeconds',\r\n decrementHours = 'decrementHours',\r\n decrementMinutes = 'decrementMinutes',\r\n decrementSeconds = 'decrementSeconds',\r\n toggleMeridiem = 'toggleMeridiem',\r\n togglePicker = 'togglePicker',\r\n showClock = 'showClock',\r\n showHours = 'showHours',\r\n showMinutes = 'showMinutes',\r\n showSeconds = 'showSeconds',\r\n clear = 'clear',\r\n close = 'close',\r\n today = 'today',\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { DateTime, Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `date`\n */\nexport default class DateDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.daysContainer);\n\n container.append(...this._daysOfTheWeek());\n\n if (this._context._options.display.calendarWeeks) {\n const div = document.createElement('div');\n div.classList.add(Namespace.css.calendarWeeks, Namespace.css.noHighlight);\n container.appendChild(div);\n }\n\n for (let i = 0; i < 42; i++) {\n if (i !== 0 && i % 7 === 0) {\n if (this._context._options.display.calendarWeeks) {\n const div = document.createElement('div');\n div.classList.add(\n Namespace.css.calendarWeeks,\n Namespace.css.noHighlight\n );\n container.appendChild(div);\n }\n }\n\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectDay);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.daysContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.daysContainer,\n this._context._viewDate.format({\n month: this._context._options.localization.dayViewHeaderFormat,\n })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.month),\n Unit.month\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.month),\n Unit.month\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone\n .startOf(Unit.month)\n .startOf('weekDay')\n .manipulate(12, Unit.hours);\n\n container\n .querySelectorAll(\n `[data-action=\"${ActionTypes.selectDay}\"], .${Namespace.css.calendarWeeks}`\n )\n .forEach((containerClone: HTMLElement, index) => {\n if (\n this._context._options.display.calendarWeeks &&\n containerClone.classList.contains(Namespace.css.calendarWeeks)\n ) {\n if (containerClone.innerText === '#') return;\n containerClone.innerText = `${innerDate.week}`;\n return;\n }\n\n let classes = [];\n classes.push(Namespace.css.day);\n\n if (innerDate.isBefore(this._context._viewDate, Unit.month)) {\n classes.push(Namespace.css.old);\n }\n if (innerDate.isAfter(this._context._viewDate, Unit.month)) {\n classes.push(Namespace.css.new);\n }\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.date)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.date)) {\n classes.push(Namespace.css.disabled);\n }\n if (innerDate.isSame(new DateTime(), Unit.date)) {\n classes.push(Namespace.css.today);\n }\n if (innerDate.weekDay === 0 || innerDate.weekDay === 6) {\n classes.push(Namespace.css.weekend);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute(\n 'data-value',\n `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`\n );\n containerClone.innerText = `${innerDate.date}`;\n innerDate.manipulate(1, Unit.date);\n });\n }\n\n /***\n * Generates an html row that contains the days of the week.\n * @private\n */\n private _daysOfTheWeek(): HTMLElement[] {\n let innerDate = this._context._viewDate.clone\n .startOf('weekDay')\n .startOf(Unit.date);\n const row = [];\n document.createElement('div');\n\n if (this._context._options.display.calendarWeeks) {\n const htmlDivElement = document.createElement('div');\n htmlDivElement.classList.add(\n Namespace.css.calendarWeeks,\n Namespace.css.noHighlight\n );\n htmlDivElement.innerText = '#';\n row.push(htmlDivElement);\n }\n\n for (let i = 0; i < 7; i++) {\n const htmlDivElement = document.createElement('div');\n htmlDivElement.classList.add(\n Namespace.css.dayOfTheWeek,\n Namespace.css.noHighlight\n );\n htmlDivElement.innerText = innerDate.format({ weekday: 'short' });\n innerDate.manipulate(1, Unit.date);\n row.push(htmlDivElement);\n }\n\n return row;\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `month`\n */\nexport default class MonthDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.monthsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMonth);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.monthsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.monthsContainer,\n this._context._viewDate.format({ year: 'numeric' })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.year),\n Unit.year\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.year),\n Unit.year\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone.startOf(Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMonth}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.month);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.month)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.month)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${index}`);\n containerClone.innerText = `${innerDate.format({ month: 'short' })}`;\n innerDate.manipulate(1, Unit.month);\n });\n }\n}\n","import { DateTime, DateTimeFormatOptions } from './datetime';\nimport Namespace from './namespace';\nimport { DefaultOptions } from './conts';\n\nexport default interface Options {\n restrictions: {\n minDate: DateTime;\n maxDate: DateTime;\n enabledDates: DateTime[];\n disabledDates: DateTime[];\n enabledHours: number[];\n disabledHours: number[];\n disabledTimeIntervals: { from: DateTime; to: DateTime }[];\n daysOfWeekDisabled: number[];\n };\n display: {\n toolbarPlacement: 'top' | 'bottom';\n components: {\n calendar: boolean;\n date: boolean;\n month: boolean;\n year: boolean;\n decades: boolean;\n clock: boolean;\n hours: boolean;\n minutes: boolean;\n seconds: boolean;\n useTwentyfourHour: boolean;\n };\n buttons: { today: boolean; close: boolean; clear: boolean };\n calendarWeeks: boolean;\n icons: {\n date: string;\n next: string;\n previous: string;\n today: string;\n clear: string;\n time: string;\n up: string;\n type: 'icons' | 'sprites';\n down: string;\n close: string;\n };\n viewMode: 'clock' | 'calendar' | 'months' | 'years' | 'decades';\n sideBySide: boolean;\n inline: boolean;\n keepOpen: boolean;\n };\n stepping: number;\n useCurrent: boolean;\n defaultDate: DateTime;\n localization: {\n nextMonth: string;\n pickHour: string;\n incrementSecond: string;\n nextDecade: string;\n selectDecade: string;\n dayViewHeaderFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n decrementHour: string;\n selectDate: string;\n incrementHour: string;\n previousCentury: string;\n decrementSecond: string;\n today: string;\n previousMonth: string;\n selectYear: string;\n pickSecond: string;\n nextCentury: string;\n close: string;\n incrementMinute: string;\n selectTime: string;\n clear: string;\n toggleMeridiem: string;\n selectMonth: string;\n decrementMinute: string;\n pickMinute: string;\n nextYear: string;\n previousYear: string;\n previousDecade: string;\n locale: string;\n };\n keepInvalid: boolean;\n debug: boolean;\n allowInputToggle: boolean;\n viewDate: DateTime;\n multipleDates: boolean;\n multipleDatesSeparator: string;\n promptTimeOnDateChange: boolean;\n promptTimeOnDateChangeTransitionDelay: number;\n hooks: {\n inputParse: (value: any) => DateTime;\n inputFormat: (date: DateTime) => string;\n };\n}\n\nexport class OptionConverter {\n static _mergeOptions(providedOptions: Options, mergeTo: Options): Options {\n const newOptions = {} as Options;\n let path = '';\n const ignoreProperties = ['inputParse', 'inputFormat'];\n\n const processKey = (key, value, providedType, defaultType) => {\n switch (key) {\n case 'defaultDate': {\n const dateTime = this._dateConversion(value, 'defaultDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'defaultDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'viewDate': {\n const dateTime = this._dateConversion(value, 'viewDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'viewDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'minDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.minDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.minDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'maxDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.maxDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.maxDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'disabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.disabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.disabledHours',\n 0,\n 23\n );\n return value;\n case 'enabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.enabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.enabledHours',\n 0,\n 23\n );\n return value;\n case 'daysOfWeekDisabled':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.daysOfWeekDisabled',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 6).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.daysOfWeekDisabled',\n 0,\n 6\n );\n return value;\n case 'enabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.enabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.disabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledTimeIntervals':\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n key,\n providedType,\n 'array of { from: DateTime|Date, to: DateTime|Date }'\n );\n }\n const valueObject = value as { from: any; to: any }[];\n for (let i = 0; i < valueObject.length; i++) {\n Object.keys(valueObject[i]).forEach((vk) => {\n const subOptionName = `${key}[${i}].${vk}`;\n let d = valueObject[i][vk];\n const dateTime = this._dateConversion(d, subOptionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n subOptionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n valueObject[i][vk] = dateTime;\n });\n }\n return valueObject;\n case 'toolbarPlacement':\n case 'type':\n case 'viewMode':\n case 'dayViewHeaderFormat':\n const optionValues = {\n toolbarPlacement: ['top', 'bottom', 'default'],\n type: ['icons', 'sprites'],\n viewMode: ['clock', 'calendar', 'months', 'years', 'decades'],\n dayViewHeaderFormat: [\n 'numeric',\n '2-digit',\n 'long',\n 'short',\n 'narrow',\n ],\n };\n const keyOptions = optionValues[key];\n if (!keyOptions.includes(value))\n Namespace.errorMessages.unexpectedOptionValue(\n path.substring(1),\n value,\n keyOptions\n );\n\n return value;\n case 'inputParse':\n case 'inputFormat':\n return value;\n default:\n switch (defaultType) {\n case 'boolean':\n return value === 'true' || value === true;\n case 'number':\n return +value;\n case 'string':\n return value.toString();\n case 'object':\n return {};\n case 'function':\n return value;\n default:\n Namespace.errorMessages.typeMismatch(\n path.substring(1),\n providedType,\n defaultType\n );\n }\n }\n };\n\n /**\n * The spread operator caused sub keys to be missing after merging.\n * This is to fix that issue by using spread on the child objects first.\n * Also handles complex options like disabledDates\n * @param provided An option from new providedOptions\n * @param mergeOption Default option to compare types against\n * @param copyTo Destination object. This was add to prevent reference copies\n */\n const spread = (provided, mergeOption, copyTo) => {\n const unsupportedOptions = Object.keys(provided).filter(\n (x) => !Object.keys(mergeOption).includes(x)\n );\n if (unsupportedOptions.length > 0) {\n const flattenedOptions = OptionConverter._flattenDefaultOptions;\n\n const errors = unsupportedOptions.map((x) => {\n let error = `\"${path.substring(1)}.${x}\" in not a known option.`;\n let didYouMean = flattenedOptions.find((y) => y.includes(x));\n if (didYouMean) error += `Did you mean \"${didYouMean}\"?`;\n return error;\n });\n Namespace.errorMessages.unexpectedOptions(errors);\n }\n Object.keys(mergeOption).forEach((key) => {\n const defaultOptionValue = mergeOption[key];\n let providedType = typeof provided[key];\n let defaultType = typeof defaultOptionValue;\n let value = provided[key];\n if (!provided.hasOwnProperty(key)) {\n if (\n defaultType === 'undefined' ||\n (value?.length === 0 && Array.isArray(defaultOptionValue))\n ) {\n copyTo[key] = defaultOptionValue;\n return;\n }\n provided[key] = defaultOptionValue;\n value = provided[key];\n }\n path += `.${key}`;\n copyTo[key] = processKey(key, value, providedType, defaultType);\n\n if (typeof defaultOptionValue !== 'object' || ignoreProperties.includes(key)) {\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n return;\n }\n if (!Array.isArray(provided[key])) {\n spread(provided[key], defaultOptionValue, copyTo[key]);\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n }\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n });\n };\n spread(providedOptions, mergeTo, newOptions);\n\n return newOptions;\n }\n\n static _dataToOptions(element, options: Options): Options {\n const eData = element.dataset;\n if (\n !eData ||\n Object.keys(eData).length === 0 ||\n eData.constructor !== DOMStringMap\n )\n return options;\n let dataOptions = {} as Options;\n\n // because dataset returns camelCase including the 'td' key the option\n // key won't align\n const objectToNormalized = (object) => {\n const lowered = {};\n Object.keys(object).forEach((x) => {\n lowered[x.toLowerCase()] = x;\n });\n\n return lowered;\n };\n\n const rabbitHole = (\n split: string[],\n index: number,\n optionSubgroup: {},\n value: any\n ) => {\n // first round = display { ... }\n const normalizedOptions = objectToNormalized(optionSubgroup);\n\n const keyOption = normalizedOptions[split[index].toLowerCase()];\n const internalObject = {};\n\n if (keyOption === undefined) return internalObject;\n\n // if this is another object, continue down the rabbit hole\n if (optionSubgroup[keyOption].constructor === Object) {\n index++;\n internalObject[keyOption] = rabbitHole(\n split,\n index,\n optionSubgroup[keyOption],\n value\n );\n } else {\n internalObject[keyOption] = value;\n }\n return internalObject;\n };\n const optionsLower = objectToNormalized(options);\n\n Object.keys(eData)\n .filter((x) => x.startsWith(Namespace.dataKey))\n .map((x) => x.substring(2))\n .forEach((key) => {\n let keyOption = optionsLower[key.toLowerCase()];\n\n // dataset merges dashes to camelCase... yay\n // i.e. key = display_components_seconds\n if (key.includes('_')) {\n // [display, components, seconds]\n const split = key.split('_');\n // display\n keyOption = optionsLower[split[0].toLowerCase()];\n if (\n keyOption !== undefined &&\n options[keyOption].constructor === Object\n ) {\n dataOptions[keyOption] = rabbitHole(\n split,\n 1,\n options[keyOption],\n eData[`td${key}`]\n );\n }\n }\n // or key = multipleDate\n else if (keyOption !== undefined) {\n dataOptions[keyOption] = eData[`td${key}`];\n }\n });\n\n return this._mergeOptions(dataOptions, options);\n }\n\n /**\n * Attempts to prove `d` is a DateTime or Date or can be converted into one.\n * @param d If a string will attempt creating a date from it.\n * @private\n */\n static _dateTypeCheck(d: any): DateTime | null {\n if (d.constructor.name === DateTime.name) return d;\n if (d.constructor.name === Date.name) {\n return DateTime.convert(d);\n }\n if (typeof d === typeof '') {\n const dateTime = new DateTime(d);\n if (JSON.stringify(dateTime) === 'null') {\n return null;\n }\n return dateTime;\n }\n return null;\n }\n\n /**\n * Type checks that `value` is an array of Date or DateTime\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckDateArray(optionName: string, value, providedType: string) {\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of DateTime or Date'\n );\n }\n for (let i = 0; i < value.length; i++) {\n let d = value[i];\n const dateTime = this._dateConversion(d, optionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n value[i] = dateTime;\n }\n }\n\n /**\n * Type checks that `value` is an array of numbers\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckNumberArray(\n optionName: string,\n value,\n providedType: string\n ) {\n if (!Array.isArray(value) || value.find((x) => typeof x !== typeof 0)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of numbers'\n );\n }\n return;\n }\n\n /**\n * Attempts to convert `d` to a DateTime object\n * @param d value to convert\n * @param optionName Provides text to error messages e.g. disabledDates\n */\n static _dateConversion(d: any, optionName: string) {\n if (typeof d === typeof '' && optionName !== 'input') {\n Namespace.errorMessages.dateString();\n }\n\n const converted = this._dateTypeCheck(d);\n\n if (!converted) {\n Namespace.errorMessages.failedToParseDate(\n optionName,\n d,\n optionName === 'input'\n );\n }\n return converted;\n }\n\n private static _flatback: string[];\n\n private static get _flattenDefaultOptions(): string[] {\n if (this._flatback) return this._flatback;\n const deepKeys = (t, pre = []) =>\n Array.isArray(t)\n ? []\n : Object(t) === t\n ? Object.entries(t).flatMap(([k, v]) => deepKeys(v, [...pre, k]))\n : pre.join('.');\n\n this._flatback = deepKeys(DefaultOptions);\n\n return this._flatback;\n }\n\n /**\n * Some options conflict like min/max date. Verify that these kinds of options\n * are set correctly.\n * @param config\n */\n static _validateConflcits(config: Options) {\n if (config.restrictions.minDate && config.restrictions.maxDate) {\n if (config.restrictions.minDate.isAfter(config.restrictions.maxDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'minDate is after maxDate'\n );\n }\n\n if (config.restrictions.maxDate.isBefore(config.restrictions.minDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'maxDate is before minDate'\n );\n }\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport { ChangeEvent, FailEvent } from './event-types';\nimport { OptionConverter } from './options';\n\nexport default class Dates {\n private _dates: DateTime[] = [];\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Returns the array of selected dates\n */\n get picked(): DateTime[] {\n return this._dates;\n }\n\n /**\n * Returns the last picked value.\n */\n get lastPicked(): DateTime {\n return this._dates[this.lastPickedIndex];\n }\n\n /**\n * Returns the length of picked dates -1 or 0 if none are selected.\n */\n get lastPickedIndex(): number {\n if (this._dates.length === 0) return 0;\n return this._dates.length - 1;\n }\n\n /**\n * Adds a new DateTime to selected dates array\n * @param date\n */\n add(date: DateTime): void {\n this._dates.push(date);\n }\n\n /**\n * Tries to convert the provided value to a DateTime object.\n * If value is null|undefined then clear the value of the provided index (or 0).\n * @param value Value to convert or null|undefined\n * @param index When using multidates this is the index in the array\n * @param from Used in the warning message, useful for debugging.\n */\n set(value: any, index?: number, from: string = 'date.set') {\n if (!value) this._setValue(value, index);\n const converted = OptionConverter._dateConversion(value, from);\n if (converted) this._setValue(converted, index);\n }\n\n /**\n * Returns true if the `targetDate` is part of the selected dates array.\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n isPicked(targetDate: DateTime, unit?: Unit): boolean {\n if (!unit) return this._dates.find((x) => x === targetDate) !== undefined;\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return (\n this._dates\n .map((x) => x.format(format))\n .find((x) => x === innerDateFormatted) !== undefined\n );\n }\n\n /**\n * Returns the index at which `targetDate` is in the array.\n * This is used for updating or removing a date when multi-date is used\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n pickedIndex(targetDate: DateTime, unit?: Unit): number {\n if (!unit) return this._dates.indexOf(targetDate);\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return this._dates.map((x) => x.format(format)).indexOf(innerDateFormatted);\n }\n\n /**\n * Clears all selected dates.\n */\n clear() {\n this._context._unset = true;\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate: this.lastPicked,\n isClear: true,\n isValid: true,\n } as ChangeEvent);\n this._dates = [];\n }\n\n /**\n * Find the \"book end\" years given a `year` and a `factor`\n * @param factor e.g. 100 for decades\n * @param year e.g. 2021\n */\n static getStartEndYear(\n factor: number,\n year: number\n ): [number, number, number] {\n const step = factor / 10,\n startYear = Math.floor(year / factor) * factor,\n endYear = startYear + step * 9,\n focusValue = Math.floor(year / step) * step;\n return [startYear, endYear, focusValue];\n }\n\n /**\n * Do not use direectly. Attempts to either clear or set the `target` date at `index`.\n * If the `target` is null then the date will be cleared.\n * If multi-date is being used then it will be removed from the array.\n * If `target` is valid and multi-date is used then if `index` is\n * provided the date at that index will be replaced, otherwise it is appended.\n * @param target\n * @param index\n */\n _setValue(target?: DateTime, index?: number): void {\n const noIndex = typeof index === 'undefined',\n isClear = !target && noIndex;\n let oldDate = this._context._unset ? null : this._dates[index];\n if (!oldDate && !this._context._unset && noIndex && isClear) {\n oldDate = this.lastPicked;\n }\n\n if (target && oldDate?.isSame(target)) return;\n\n const updateInput = () => {\n if (!this._context._input) return;\n\n let newValue = this._context._options.hooks.inputFormat(target);\n if (this._context._options.multipleDates) {\n newValue = this._dates\n .map((d) => this._context._options.hooks.inputFormat(d))\n .join(this._context._options.multipleDatesSeparator);\n }\n if (this._context._input.value != newValue)\n this._context._input.value = newValue;\n };\n\n // case of calling setValue(null)\n if (!target) {\n if (\n !this._context._options.multipleDates ||\n this._dates.length === 1 ||\n isClear\n ) {\n this._context._unset = true;\n this._dates = [];\n } else {\n this._dates.splice(index, 1);\n }\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n\n updateInput();\n this._context._display._update('all');\n return;\n }\n\n index = index || 0;\n target = target.clone;\n\n // minute stepping is being used, force the minute to the closest value\n if (this._context._options.stepping !== 1) {\n target.minutes =\n Math.round(target.minutes / this._context._options.stepping) *\n this._context._options.stepping;\n target.seconds = 0;\n }\n\n if (this._context._validation.isValid(target)) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._unset = false;\n this._context._display._update('all');\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n return;\n }\n\n if (this._context._options.keepInvalid) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: false,\n } as ChangeEvent);\n }\n this._context._triggerEvent({\n type: Namespace.events.error,\n reason: Namespace.errorMessages.failedToSetInvalidDate,\n date: target,\n oldDate,\n } as FailEvent);\n }\n\n /**\n * Returns a format object based on the granularity of `unit`\n * @param unit\n */\n static getFormatByUnit(unit: Unit): object {\n switch (unit) {\n case 'date':\n return { dateStyle: 'short' };\n case 'month':\n return {\n month: 'numeric',\n year: 'numeric',\n };\n case 'year':\n return { year: 'numeric' };\n }\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { DateTime, Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\nimport Dates from '../../dates';\n\n/**\n * Creates and updates the grid for `year`\n */\nexport default class YearDisplay {\n private _context: TempusDominus;\n private _startYear: DateTime;\n private _endYear: DateTime;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.yearsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectYear);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update() {\n const [start, end] = Dates.getStartEndYear(\n 10,\n this._context._viewDate.year\n );\n this._startYear = this._context._viewDate.clone.manipulate(-1, Unit.year);\n this._endYear = this._context._viewDate.clone.manipulate(10, Unit.year);\n\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.yearsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.yearsContainer,\n `${this._startYear.year}-${this._endYear.year}`\n );\n\n this._context._validation.isValid(this._startYear, Unit.year)\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n this._context._validation.isValid(this._endYear, Unit.year)\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone\n .startOf(Unit.year)\n .manipulate(-1, Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectYear}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.year);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.year)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.year)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.year}`);\n containerClone.innerText = `${innerDate.year}`;\n\n innerDate.manipulate(1, Unit.year);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport Dates from '../../dates';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `seconds`\r\n */\r\nexport default class DecadeDisplay {\r\n private _context: TempusDominus;\r\n private _startDecade: DateTime;\r\n private _endDecade: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker() {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.decadesContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDecade);\r\n container.appendChild(div);\r\n }\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 100,\r\n this._context._viewDate.year\r\n );\r\n this._startDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._startDecade.year = start;\r\n this._endDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._endDecade.year = end;\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.decadesContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.decadesContainer,\r\n `${this._startDecade.year}-${this._endDecade.year}`\r\n );\r\n\r\n this._context._validation.isValid(this._startDecade, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endDecade, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n const pickedYears = this._context.dates.picked.map((x) => x.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectDecade}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (index === 0) {\r\n containerClone.classList.add(Namespace.css.old);\r\n if (this._startDecade.year - 10 < 0) {\r\n containerClone.textContent = ' ';\r\n previous.classList.add(Namespace.css.disabled);\r\n containerClone.classList.add(Namespace.css.disabled);\r\n containerClone.setAttribute('data-value', ``);\r\n return;\r\n } else {\r\n containerClone.innerText = `${this._startDecade.year - 10}`;\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n return;\r\n }\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.decade);\r\n const startDecadeYear = this._startDecade.year;\r\n const endDecadeYear = this._startDecade.year + 9;\r\n\r\n if (\r\n !this._context._unset &&\r\n pickedYears.filter((x) => x >= startDecadeYear && x <= endDecadeYear)\r\n .length > 0\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n containerClone.innerText = `${this._startDecade.year}`;\r\n\r\n this._startDecade.manipulate(10, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates the clock display\n */\nexport default class TimeDisplay {\n private _context: TempusDominus;\n private _gridColumns = '';\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the clock display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.clockContainer);\n\n container.append(...this._grid());\n\n return container;\n }\n\n /**\n * Populates the various elements with in the clock display\n * like the current hour and if the manipulation icons are enabled.\n * @private\n */\n _update(): void {\n const timesDiv = (\n this._context._display.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0]\n );\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n timesDiv\n .querySelectorAll('.disabled')\n .forEach((element) => element.classList.remove(Namespace.css.disabled));\n\n if (this._context._options.display.components.hours) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.hours}]`\n ).innerText = this._context._options.display.components.useTwentyfourHour\n ? lastPicked.hoursFormatted\n : lastPicked.twelveHoursFormatted;\n }\n\n if (this._context._options.display.components.minutes) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.minutes}]`\n ).innerText = lastPicked.minutesFormatted;\n }\n\n if (this._context._options.display.components.seconds) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.seconds}]`\n ).innerText = lastPicked.secondsFormatted;\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n const toggle = timesDiv.querySelector(\n `[data-action=${ActionTypes.toggleMeridiem}]`\n );\n\n toggle.innerText = lastPicked.meridiem();\n\n if (\n !this._context._validation.isValid(\n lastPicked.clone.manipulate(\n lastPicked.hours >= 12 ? -12 : 12,\n Unit.hours\n )\n )\n ) {\n toggle.classList.add(Namespace.css.disabled);\n } else {\n toggle.classList.remove(Namespace.css.disabled);\n }\n }\n\n timesDiv.style.gridTemplateAreas = `\"${this._gridColumns}\"`;\n }\n\n /**\n * Creates the table for the clock display depending on what options are selected.\n * @private\n */\n private _grid(): HTMLElement[] {\n this._gridColumns = '';\n const top = [],\n middle = [],\n bottom = [],\n separator = document.createElement('div'),\n upIcon = this._context._display._iconTag(\n this._context._options.display.icons.up\n ),\n downIcon = this._context._display._iconTag(\n this._context._options.display.icons.down\n );\n\n separator.classList.add(Namespace.css.separator, Namespace.css.noHighlight);\n const separatorColon = separator.cloneNode(true);\n separatorColon.innerHTML = ':';\n\n const getSeparator = (colon = false): HTMLElement => {\n return colon\n ? separatorColon.cloneNode(true)\n : separator.cloneNode(true);\n };\n\n if (this._context._options.display.components.hours) {\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.incrementHours);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickHour\n );\n divElement.setAttribute('data-action', ActionTypes.showHours);\n divElement.setAttribute('data-time-component', Unit.hours);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.decrementHours);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n this._gridColumns += 'a';\n }\n\n if (this._context._options.display.components.minutes) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.hours) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.incrementMinutes);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickMinute\n );\n divElement.setAttribute('data-action', ActionTypes.showMinutes);\n divElement.setAttribute('data-time-component', Unit.minutes);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.decrementMinutes);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (this._context._options.display.components.seconds) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.minutes) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.incrementSeconds);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickSecond\n );\n divElement.setAttribute('data-action', ActionTypes.showSeconds);\n divElement.setAttribute('data-time-component', Unit.seconds);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.decrementSeconds);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n this._gridColumns += ' a';\n let divElement = getSeparator();\n top.push(divElement);\n\n let button = document.createElement('button');\n button.setAttribute(\n 'title',\n this._context._options.localization.toggleMeridiem\n );\n button.setAttribute('data-action', ActionTypes.toggleMeridiem);\n button.setAttribute('tabindex', '-1');\n button.classList.add(Namespace.css.toggleMeridiem);\n\n divElement = document.createElement('div');\n divElement.classList.add(Namespace.css.noHighlight);\n divElement.appendChild(button);\n middle.push(divElement);\n\n divElement = getSeparator();\n bottom.push(divElement);\n }\n\n this._gridColumns = this._gridColumns.trim();\n\n return [...top, ...middle, ...bottom];\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `hours`\n */\nexport default class HourDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.hourContainer);\n\n for (\n let i = 0;\n i <\n (this._context._options.display.components.useTwentyfourHour ? 24 : 12);\n i++\n ) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectHour);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.hourContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.date);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectHour}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.hour);\n\n if (!this._context._validation.isValid(innerDate, Unit.hours)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.hours}`);\n containerClone.innerText = this._context._options.display.components\n .useTwentyfourHour\n ? innerDate.hoursFormatted\n : innerDate.twelveHoursFormatted;\n innerDate.manipulate(1, Unit.hours);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `minutes`\n */\nexport default class MinuteDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.minuteContainer);\n\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n for (let i = 0; i < 60 / step; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMinute);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.minuteContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.hours);\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMinute}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.minute);\n\n if (!this._context._validation.isValid(innerDate, Unit.minutes)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.minutes}`);\n containerClone.innerText = innerDate.minutesFormatted;\n innerDate.manipulate(step, Unit.minutes);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class secondDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.secondContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectSecond);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.secondContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.minutes);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectSecond}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.second);\n\n if (!this._context._validation.isValid(innerDate, Unit.seconds)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.seconds}`);\n containerClone.innerText = innerDate.secondsFormatted;\n innerDate.manipulate(5, Unit.seconds);\n });\n }\n}\n","import DateDisplay from './calendar/date-display';\r\nimport MonthDisplay from './calendar/month-display';\r\nimport YearDisplay from './calendar/year-display';\r\nimport DecadeDisplay from './calendar/decade-display';\r\nimport TimeDisplay from './time/time-display';\r\nimport HourDisplay from './time/hour-display';\r\nimport MinuteDisplay from './time/minute-display';\r\nimport SecondDisplay from './time/second-display';\r\nimport { DateTime, Unit } from '../datetime';\r\nimport { DatePickerModes } from '../conts';\r\nimport { TempusDominus } from '../tempus-dominus';\r\nimport { ActionTypes } from '../actions';\r\nimport { createPopper } from '@popperjs/core';\r\nimport Namespace from '../namespace';\r\nimport { HideEvent } from '../event-types';\r\n\r\n/**\r\n * Main class for all things display related.\r\n */\r\nexport default class Display {\r\n private _context: TempusDominus;\r\n private _dateDisplay: DateDisplay;\r\n private _monthDisplay: MonthDisplay;\r\n private _yearDisplay: YearDisplay;\r\n private _decadeDisplay: DecadeDisplay;\r\n private _timeDisplay: TimeDisplay;\r\n private _widget: HTMLElement;\r\n private _hourDisplay: HourDisplay;\r\n private _minuteDisplay: MinuteDisplay;\r\n private _secondDisplay: SecondDisplay;\r\n private _popperInstance: any;\r\n private _isVisible = false;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this._dateDisplay = new DateDisplay(context);\r\n this._monthDisplay = new MonthDisplay(context);\r\n this._yearDisplay = new YearDisplay(context);\r\n this._decadeDisplay = new DecadeDisplay(context);\r\n this._timeDisplay = new TimeDisplay(context);\r\n this._hourDisplay = new HourDisplay(context);\r\n this._minuteDisplay = new MinuteDisplay(context);\r\n this._secondDisplay = new SecondDisplay(context);\r\n\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Returns the widget body or undefined\r\n * @private\r\n */\r\n get widget(): HTMLElement | undefined {\r\n return this._widget;\r\n }\r\n\r\n /**\r\n * Returns this visible state of the picker (shown)\r\n */\r\n get isVisible() {\r\n return this._isVisible;\r\n }\r\n\r\n /**\r\n * Updates the table for a particular unit. Used when an option as changed or\r\n * whenever the class list might need to be refreshed.\r\n * @param unit\r\n * @private\r\n */\r\n _update(unit: Unit | 'clock' | 'calendar' | 'all'): void {\r\n if (!this.widget) return;\r\n //todo do I want some kind of error catching or other guards here?\r\n switch (unit) {\r\n case Unit.seconds:\r\n this._secondDisplay._update();\r\n break;\r\n case Unit.minutes:\r\n this._minuteDisplay._update();\r\n break;\r\n case Unit.hours:\r\n this._hourDisplay._update();\r\n break;\r\n case Unit.date:\r\n this._dateDisplay._update();\r\n break;\r\n case Unit.month:\r\n this._monthDisplay._update();\r\n break;\r\n case Unit.year:\r\n this._yearDisplay._update();\r\n break;\r\n case 'clock':\r\n this._timeDisplay._update();\r\n this._update(Unit.hours);\r\n this._update(Unit.minutes);\r\n this._update(Unit.seconds);\r\n break;\r\n case 'calendar':\r\n this._update(Unit.date);\r\n this._update(Unit.year);\r\n this._update(Unit.month);\r\n this._decadeDisplay._update();\r\n this._updateCalendarHeader();\r\n break;\r\n case 'all':\r\n if (this._hasTime) {\r\n this._update('clock');\r\n }\r\n if (this._hasDate) {\r\n this._update('calendar');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Shows the picker and creates a Popper instance if needed.\r\n * Add document click event to hide when clicking outside the picker.\r\n * @fires Events#show\r\n */\r\n show(): void {\r\n if (this.widget == undefined) {\r\n if (\r\n this._context._options.useCurrent &&\r\n !this._context._options.defaultDate &&\r\n !this._context._input?.value\r\n ) {\r\n //todo in the td4 branch a pr changed this to allow granularity\r\n const date = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n if (!this._context._options.keepInvalid) {\r\n let tries = 0;\r\n let direction = 1;\r\n if (this._context._options.restrictions.maxDate?.isBefore(date)) {\r\n direction = -1;\r\n }\r\n while (!this._context._validation.isValid(date)) {\r\n date.manipulate(direction, Unit.date);\r\n if (tries > 31) break;\r\n tries++;\r\n }\r\n }\r\n this._context.dates._setValue(date);\r\n }\r\n\r\n if (this._context._options.defaultDate) {\r\n this._context.dates._setValue(this._context._options.defaultDate);\r\n }\r\n\r\n this._buildWidget();\r\n if (this._hasDate) {\r\n this._showMode();\r\n }\r\n\r\n if (!this._context._options.display.inline) {\r\n document.body.appendChild(this.widget);\r\n\r\n this._popperInstance = createPopper(\r\n this._context._element,\r\n this.widget,\r\n {\r\n modifiers: [\r\n /* {\r\n name: 'offset',\r\n options: {\r\n offset: [2, 8],\r\n },\r\n },*/\r\n { name: 'eventListeners', enabled: true },\r\n ],\r\n placement: 'bottom-start',\r\n }\r\n );\r\n } else {\r\n this._context._element.appendChild(this.widget);\r\n }\r\n\r\n if (this._context._options.display.viewMode == 'clock') {\r\n this._context._action.do(\r\n {\r\n currentTarget: this.widget.querySelector(\r\n `.${Namespace.css.timeContainer}`\r\n ),\r\n },\r\n ActionTypes.showClock\r\n );\r\n }\r\n\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.addEventListener('click', this._actionsClickEvent)\r\n );\r\n\r\n // show the clock when using sideBySide\r\n if (this._context._options.display.sideBySide) {\r\n this._timeDisplay._update();\r\n (\r\n this.widget.getElementsByClassName(\r\n Namespace.css.clockContainer\r\n )[0] as HTMLElement\r\n ).style.display = 'grid';\r\n }\r\n }\r\n\r\n this.widget.classList.add(Namespace.css.show);\r\n if (!this._context._options.display.inline) {\r\n this._popperInstance.update();\r\n document.addEventListener('click', this._documentClickEvent);\r\n }\r\n this._context._triggerEvent({ type: Namespace.events.show });\r\n this._isVisible = true;\r\n }\r\n\r\n /**\r\n * Changes the calendar view mode. E.g. month <-> year\r\n * @param direction -/+ number to move currentViewMode\r\n * @private\r\n */\r\n _showMode(direction?: number): void {\r\n if (!this.widget) {\r\n return;\r\n }\r\n if (direction) {\r\n const max = Math.max(\r\n this._context._minViewModeNumber,\r\n Math.min(3, this._context._currentViewMode + direction)\r\n );\r\n if (this._context._currentViewMode == max) return;\r\n this._context._currentViewMode = max;\r\n }\r\n\r\n this.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div:not(.${Namespace.css.clockContainer})`\r\n )\r\n .forEach((e: HTMLElement) => (e.style.display = 'none'));\r\n\r\n const datePickerMode = DatePickerModes[this._context._currentViewMode];\r\n let picker: HTMLElement = this.widget.querySelector(\r\n `.${datePickerMode.className}`\r\n );\r\n\r\n switch (datePickerMode.className) {\r\n case Namespace.css.decadesContainer:\r\n this._decadeDisplay._update();\r\n break;\r\n case Namespace.css.yearsContainer:\r\n this._yearDisplay._update();\r\n break;\r\n case Namespace.css.monthsContainer:\r\n this._monthDisplay._update();\r\n break;\r\n case Namespace.css.daysContainer:\r\n this._dateDisplay._update();\r\n break;\r\n }\r\n\r\n picker.style.display = 'grid';\r\n this._updateCalendarHeader();\r\n }\r\n\r\n _updateCalendarHeader() {\r\n const showing = [\r\n ...this.widget.querySelector(\r\n `.${Namespace.css.dateContainer} div[style*=\"display: grid\"]`\r\n ).classList,\r\n ].find((x) => x.startsWith(Namespace.css.dateContainer));\r\n\r\n const [previous, switcher, next] = this._context._display.widget\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switch (showing) {\r\n case Namespace.css.decadesContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousCentury\r\n );\r\n switcher.setAttribute('title', '');\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextCentury\r\n );\r\n break;\r\n case Namespace.css.yearsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousDecade\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDecade\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextDecade\r\n );\r\n break;\r\n case Namespace.css.monthsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousYear\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectYear\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextYear\r\n );\r\n break;\r\n case Namespace.css.daysContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousMonth\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectMonth\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextMonth\r\n );\r\n switcher.innerText = this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n });\r\n break;\r\n }\r\n switcher.innerText = switcher.getAttribute(showing);\r\n }\r\n\r\n /**\r\n * Hides the picker if needed.\r\n * Remove document click event to hide when clicking outside the picker.\r\n * @fires Events#hide\r\n */\r\n hide(): void {\r\n if (!this.widget || !this._isVisible) return;\r\n\r\n this.widget.classList.remove(Namespace.css.show);\r\n\r\n if (this._isVisible) {\r\n this._context._triggerEvent({\r\n type: Namespace.events.hide,\r\n date: this._context._unset\r\n ? null\r\n : this._context.dates.lastPicked\r\n ? this._context.dates.lastPicked.clone\r\n : void 0,\r\n } as HideEvent);\r\n this._isVisible = false;\r\n }\r\n\r\n document.removeEventListener('click', this._documentClickEvent);\r\n }\r\n\r\n /**\r\n * Toggles the picker's open state. Fires a show/hide event depending.\r\n */\r\n toggle() {\r\n return this._isVisible ? this.hide() : this.show();\r\n }\r\n\r\n /**\r\n * Removes document and data-action click listener and reset the widget\r\n * @private\r\n */\r\n _dispose() {\r\n document.removeEventListener('click', this._documentClickEvent);\r\n if (!this.widget) return;\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.removeEventListener('click', this._actionsClickEvent)\r\n );\r\n this.widget.parentNode.removeChild(this.widget);\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Builds the widgets html template.\r\n * @private\r\n */\r\n private _buildWidget(): HTMLElement {\r\n const template = document.createElement('div');\r\n template.classList.add(Namespace.css.widget);\r\n\r\n const dateView = document.createElement('div');\r\n dateView.classList.add(Namespace.css.dateContainer);\r\n dateView.append(\r\n this._headTemplate,\r\n this._decadeDisplay._picker,\r\n this._yearDisplay._picker,\r\n this._monthDisplay._picker,\r\n this._dateDisplay._picker\r\n );\r\n\r\n const timeView = document.createElement('div');\r\n timeView.classList.add(Namespace.css.timeContainer);\r\n timeView.appendChild(this._timeDisplay._picker);\r\n timeView.appendChild(this._hourDisplay._picker);\r\n timeView.appendChild(this._minuteDisplay._picker);\r\n timeView.appendChild(this._secondDisplay._picker);\r\n\r\n const toolbar = document.createElement('div');\r\n toolbar.classList.add(Namespace.css.toolbar);\r\n toolbar.append(...this._toolbar);\r\n\r\n if (this._context._options.display.inline) {\r\n template.classList.add(Namespace.css.inline);\r\n }\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n template.classList.add('calendarWeeks');\r\n }\r\n\r\n if (\r\n this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n template.classList.add(Namespace.css.sideBySide);\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n const row = document.createElement('div');\r\n row.classList.add('td-row');\r\n dateView.classList.add('td-half');\r\n timeView.classList.add('td-half');\r\n\r\n row.appendChild(dateView);\r\n row.appendChild(timeView);\r\n template.appendChild(row);\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n this._widget = template;\r\n return;\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n if (this._hasDate) {\r\n if (this._hasTime) {\r\n dateView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode !== 'clock')\r\n dateView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(dateView);\r\n }\r\n\r\n if (this._hasTime) {\r\n if (this._hasDate) {\r\n timeView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode === 'clock')\r\n timeView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(timeView);\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n const arrow = document.createElement('div');\r\n arrow.classList.add('arrow');\r\n arrow.setAttribute('data-popper-arrow', '');\r\n template.appendChild(arrow);\r\n\r\n this._widget = template;\r\n }\r\n\r\n /**\r\n * Returns true if the hours, minutes, or seconds component is turned on\r\n */\r\n get _hasTime(): boolean {\r\n return (\r\n this._context._options.display.components.clock &&\r\n (this._context._options.display.components.hours ||\r\n this._context._options.display.components.minutes ||\r\n this._context._options.display.components.seconds)\r\n );\r\n }\r\n\r\n /**\r\n * Returns true if the year, month, or date component is turned on\r\n */\r\n get _hasDate(): boolean {\r\n return (\r\n this._context._options.display.components.calendar &&\r\n (this._context._options.display.components.year ||\r\n this._context._options.display.components.month ||\r\n this._context._options.display.components.date)\r\n );\r\n }\r\n\r\n /**\r\n * Get the toolbar html based on options like buttons.today\r\n * @private\r\n */\r\n get _toolbar(): HTMLElement[] {\r\n const toolbar = [];\r\n\r\n if (this._context._options.display.buttons.today) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.today);\r\n div.setAttribute('title', this._context._options.localization.today);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.today)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (\r\n !this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n let title, icon;\r\n if (this._context._options.display.viewMode === 'clock') {\r\n title = this._context._options.localization.selectDate;\r\n icon = this._context._options.display.icons.date;\r\n } else {\r\n title = this._context._options.localization.selectTime;\r\n icon = this._context._options.display.icons.time;\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.togglePicker);\r\n div.setAttribute('title', title);\r\n\r\n div.appendChild(this._iconTag(icon));\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.clear) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.clear);\r\n div.setAttribute('title', this._context._options.localization.clear);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.clear)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.close) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.close);\r\n div.setAttribute('title', this._context._options.localization.close);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.close)\r\n );\r\n toolbar.push(div);\r\n }\r\n\r\n return toolbar;\r\n }\r\n\r\n /***\r\n * Builds the base header template with next and previous icons\r\n * @private\r\n */\r\n get _headTemplate(): HTMLElement {\r\n const calendarHeader = document.createElement('div');\r\n calendarHeader.classList.add(Namespace.css.calendarHeader);\r\n\r\n const previous = document.createElement('div');\r\n previous.classList.add(Namespace.css.previous);\r\n previous.setAttribute('data-action', ActionTypes.previous);\r\n previous.appendChild(\r\n this._iconTag(this._context._options.display.icons.previous)\r\n );\r\n\r\n const switcher = document.createElement('div');\r\n switcher.classList.add(Namespace.css.switch);\r\n switcher.setAttribute('data-action', ActionTypes.pickerSwitch);\r\n\r\n const next = document.createElement('div');\r\n next.classList.add(Namespace.css.next);\r\n next.setAttribute('data-action', ActionTypes.next);\r\n next.appendChild(this._iconTag(this._context._options.display.icons.next));\r\n\r\n calendarHeader.append(previous, switcher, next);\r\n return calendarHeader;\r\n }\r\n\r\n /**\r\n * Builds an icon tag as either an ``\r\n * or with icons.type is `sprites` then an svg tag instead\r\n * @param iconClass\r\n * @private\r\n */\r\n _iconTag(iconClass: string): HTMLElement {\r\n if (this._context._options.display.icons.type === 'sprites') {\r\n const svg = document.createElement('svg');\r\n svg.innerHTML = ``;\r\n return svg;\r\n }\r\n const icon = document.createElement('i');\r\n DOMTokenList.prototype.add.apply(icon.classList, iconClass.split(' '));\r\n return icon;\r\n }\r\n\r\n /**\r\n * A document click event to hide the widget if click is outside\r\n * @private\r\n * @param e MouseEvent\r\n */\r\n private _documentClickEvent = (e: MouseEvent) => {\r\n if (this._context._options.display.keepOpen ||\r\n this._context._options.debug ||\r\n (window as any).debug) return;\r\n\r\n if (\r\n this._isVisible &&\r\n !e.composedPath().includes(this.widget) && // click inside the widget\r\n !e.composedPath()?.includes(this._context._element) // click on the element\r\n ) {\r\n this.hide();\r\n }\r\n };\r\n\r\n /**\r\n * Click event for any action like selecting a date\r\n * @param e MouseEvent\r\n * @private\r\n */\r\n private _actionsClickEvent = (e: MouseEvent) => {\r\n this._context._action.do(e);\r\n };\r\n\r\n /**\r\n * Causes the widget to get rebuilt on next show. If the picker is already open\r\n * then hide and reshow it.\r\n * @private\r\n */\r\n _rebuild() {\r\n const wasVisible = this._isVisible;\r\n if (wasVisible) this.hide();\r\n this._dispose();\r\n if (wasVisible) {\r\n this.show();\r\n }\r\n }\r\n}\r\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Dates from './dates';\n\n/**\n * Main class for date validation rules based on the options provided.\n */\nexport default class Validation {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Checks to see if the target date is valid based on the rules provided in the options.\n * Granularity can be provide to chek portions of the date instead of the whole.\n * @param targetDate\n * @param granularity\n */\n isValid(targetDate: DateTime, granularity?: Unit): boolean {\n if (\n this._context._options.restrictions.disabledDates.length > 0 &&\n this._isInDisabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledDates.length > 0 &&\n !this._isInEnabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.daysOfWeekDisabled?.length > 0 &&\n this._context._options.restrictions.daysOfWeekDisabled.indexOf(\n targetDate.weekDay\n ) !== -1\n ) {\n return false;\n }\n\n if (\n this._context._options.restrictions.minDate &&\n targetDate.isBefore(\n this._context._options.restrictions.minDate,\n granularity\n )\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.maxDate &&\n targetDate.isAfter(\n this._context._options.restrictions.maxDate,\n granularity\n )\n ) {\n return false;\n }\n\n if (\n granularity === Unit.hours ||\n granularity === Unit.minutes ||\n granularity === Unit.seconds\n ) {\n if (\n this._context._options.restrictions.disabledHours.length > 0 &&\n this._isInDisabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledHours.length > 0 &&\n !this._isInEnabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.disabledTimeIntervals.length > 0\n ) {\n for (\n let i = 0;\n i < this._context._options.restrictions.disabledTimeIntervals.length;\n i++\n ) {\n if (\n targetDate.isBetween(\n this._context._options.restrictions.disabledTimeIntervals[i].from,\n this._context._options.restrictions.disabledTimeIntervals[i].to\n )\n )\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Checks to see if the disabledDates option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInDisabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledDates ||\n this._context._options.restrictions.disabledDates.length === 0\n )\n return false;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.disabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the enabledDates option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInEnabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledDates ||\n this._context._options.restrictions.enabledDates.length === 0\n )\n return true;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.enabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the disabledHours option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInDisabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledHours ||\n this._context._options.restrictions.disabledHours.length === 0\n )\n return false;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.disabledHours.find(\n (x) => x === formattedDate\n );\n }\n\n /**\n * Checks to see if the enabledHours option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInEnabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledHours ||\n this._context._options.restrictions.enabledHours.length === 0\n )\n return true;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.enabledHours.find(\n (x) => x === formattedDate\n );\n }\n}\n","import Display from './display/index';\nimport Validation from './validation';\nimport Dates from './dates';\nimport Actions, { ActionTypes } from './actions';\nimport { DatePickerModes, DefaultOptions } from './conts';\nimport { DateTime, DateTimeFormatOptions, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options, { OptionConverter } from './options';\nimport {\n BaseEvent,\n ChangeEvent,\n ViewUpdateEvent,\n FailEvent,\n} from './event-types';\n\n/**\n * A robust and powerful date/time picker component.\n */\nclass TempusDominus {\n dates: Dates;\n\n _options: Options;\n _currentViewMode = 0;\n _subscribers: { [key: string]: ((event: any) => {})[] } = {};\n _element: HTMLElement;\n _input: HTMLInputElement;\n _unset: boolean;\n _minViewModeNumber = 0;\n _display: Display;\n _validation: Validation;\n _action: Actions;\n private _isDisabled = false;\n private _notifyChangeEventContext = 0;\n private _toggle: HTMLElement;\n private _currentPromptTimeTimeout: any;\n\n constructor(element: HTMLElement, options: Options = {} as Options) {\n if (!element) {\n Namespace.errorMessages.mustProvideElement;\n }\n this._element = element;\n this._options = this._initializeOptions(options, DefaultOptions, true);\n this._viewDate.setLocale(this._options.localization.locale);\n this._unset = true;\n\n this._display = new Display(this);\n this._validation = new Validation(this);\n this.dates = new Dates(this);\n this._action = new Actions(this);\n\n this._initializeInput();\n this._initializeToggle();\n\n if (this._options.display.inline) this._display.show();\n }\n\n _viewDate = new DateTime();\n\n get viewDate() {\n return this._viewDate;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Update the picker options. If `reset` is provide `options` will be merged with DefaultOptions instead.\n * @param options\n * @param reset\n * @public\n */\n updateOptions(options, reset = false): void {\n if (reset) this._options = this._initializeOptions(options, DefaultOptions);\n else this._options = this._initializeOptions(options, this._options);\n this._display._rebuild();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Toggles the picker open or closed. If the picker is disabled, nothing will happen.\n * @public\n */\n toggle(): void {\n if (this._isDisabled) return;\n this._display.toggle();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Shows the picker unless the picker is disabled.\n * @public\n */\n show(): void {\n if (this._isDisabled) return;\n this._display.show();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker unless the picker is disabled.\n * @public\n */\n hide(): void {\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Disables the picker and the target input field.\n * @public\n */\n disable(): void {\n this._isDisabled = true;\n // todo this might be undesired. If a dev disables the input field to\n // only allow using the picker, this will break that.\n this._input?.setAttribute('disabled', 'disabled');\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Enables the picker and the target input field.\n * @public\n */\n enable(): void {\n this._isDisabled = false;\n this._input?.removeAttribute('disabled');\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Clears all the selected dates\n * @public\n */\n clear(): void {\n this.dates.clear();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Allows for a direct subscription to picker events, without having to use addEventListener on the element.\n * @param eventTypes See Namespace.Events\n * @param callbacks Function to call when event is triggered\n * @public\n */\n subscribe(\n eventTypes: string | string[],\n callbacks: (event: any) => void | ((event: any) => void)[]\n ): { unsubscribe: void }[] {\n if (typeof eventTypes === 'string') {\n eventTypes = [eventTypes];\n }\n let callBackArray = [];\n if (!Array.isArray(callbacks)) {\n callBackArray = [callbacks];\n } else {\n callBackArray = callbacks;\n }\n\n if (eventTypes.length !== callBackArray.length) {\n Namespace.errorMessages.subscribeMismatch;\n }\n\n const returnArray = [];\n\n for (let i = 0; i < eventTypes.length; i++) {\n const eventType = eventTypes[i];\n if (!Array.isArray(this._subscribers[eventType])) {\n this._subscribers[eventType] = [];\n }\n\n this._subscribers[eventType].push(callBackArray[i]);\n\n returnArray.push({\n unsubscribe: this._unsubscribe.bind(\n this,\n eventType,\n this._subscribers[eventType].length - 1\n ),\n });\n\n if (eventTypes.length === 1) {\n return returnArray[0];\n }\n }\n\n return returnArray;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker and removes event listeners\n */\n dispose() {\n this._display.hide();\n // this will clear the document click event listener\n this._display._dispose();\n this._input?.removeEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input?.removeEventListener('click', this._toggleClickEvent);\n }\n this._toggle.removeEventListener('click', this._toggleClickEvent);\n this._subscribers = {};\n }\n\n /**\n * Triggers an event like ChangeEvent when the picker has updated the value\n * of a selected date.\n * @param event Accepts a BaseEvent object.\n * @private\n */\n _triggerEvent(event: BaseEvent) {\n // checking hasOwnProperty because the BasicEvent also falls through here otherwise\n if ((event as ChangeEvent) && event.hasOwnProperty('date')) {\n const { date, oldDate, isClear } = event as ChangeEvent;\n // this was to prevent a max call stack error\n // https://github.com/tempusdominus/core/commit/15a280507f5277b31b0b3319ab1edc7c19a000fb\n // todo see if this is still needed or if there's a cleaner way\n this._notifyChangeEventContext++;\n if (\n (date && oldDate && date.isSame(oldDate)) ||\n (!isClear && !date && !oldDate) ||\n this._notifyChangeEventContext > 1\n ) {\n this._notifyChangeEventContext = 0;\n return;\n }\n this._handleAfterChangeEvent(event as ChangeEvent);\n }\n\n this._element.dispatchEvent(\n new CustomEvent(event.type, { detail: event as any })\n );\n\n if ((window as any).jQuery) {\n const $ = (window as any).jQuery;\n $(this._element).trigger(event);\n }\n\n const publish = () => {\n // return if event is not subscribed\n if (!Array.isArray(this._subscribers[event.type])) {\n return;\n }\n\n // Trigger callback for each subscriber\n this._subscribers[event.type].forEach((callback) => {\n callback(event);\n });\n };\n\n publish();\n\n this._notifyChangeEventContext = 0;\n }\n\n /**\n * Fires a ViewUpdate event when, for example, the month view is changed.\n * @param {Unit} unit\n * @private\n */\n _viewUpdate(unit: Unit) {\n this._triggerEvent({\n type: Namespace.events.update,\n change: unit,\n viewDate: this._viewDate.clone,\n } as ViewUpdateEvent);\n }\n\n private _unsubscribe(eventName, index) {\n this._subscribers[eventName].splice(index, 1);\n }\n\n /**\n * Merges two Option objects together and validates options type\n * @param config new Options\n * @param mergeTo Options to merge into\n * @param includeDataset When true, the elements data-td attributes will be included in the\n * @private\n */\n private _initializeOptions(\n config: Options,\n mergeTo: Options,\n includeDataset = false\n ): Options {\n config = OptionConverter._mergeOptions(config, mergeTo);\n if (includeDataset)\n config = OptionConverter._dataToOptions(this._element, config);\n\n OptionConverter._validateConflcits(config);\n\n config.viewDate = config.viewDate.setLocale(config.localization.locale);\n\n if (!this._viewDate.isSame(config.viewDate)) {\n this._viewDate = config.viewDate;\n }\n\n /**\n * Sets the minimum view allowed by the picker. For example the case of only\n * allowing year and month to be selected but not date.\n */\n if (config.display.components.year) {\n this._minViewModeNumber = 2;\n }\n if (config.display.components.month) {\n this._minViewModeNumber = 1;\n }\n if (config.display.components.date) {\n this._minViewModeNumber = 0;\n }\n\n this._currentViewMode = Math.max(\n this._minViewModeNumber,\n this._currentViewMode\n );\n\n // Update view mode if needed\n if (\n DatePickerModes[this._currentViewMode].name !== config.display.viewMode\n ) {\n this._currentViewMode = Math.max(\n DatePickerModes.findIndex((x) => x.name === config.display.viewMode),\n this._minViewModeNumber\n );\n }\n\n // defaults the input format based on the components enabled\n if (config.hooks.inputFormat === undefined) {\n const components = config.display.components;\n config.hooks.inputFormat = (date: DateTime) => {\n return date.format({\n year: components.calendar && components.year ? 'numeric' : undefined,\n month:\n components.calendar && components.month ? '2-digit' : undefined,\n day: components.calendar && components.date ? '2-digit' : undefined,\n hour:\n components.clock && components.hours\n ? components.useTwentyfourHour\n ? '2-digit'\n : 'numeric'\n : undefined,\n minute:\n components.clock && components.minutes ? '2-digit' : undefined,\n second:\n components.clock && components.seconds ? '2-digit' : undefined,\n hour12: !components.useTwentyfourHour,\n });\n };\n }\n\n if (this._display?.isVisible) {\n this._display._update('all');\n }\n\n return config;\n }\n\n /**\n * Checks if an input field is being used, attempts to locate one and sets an\n * event listener if found.\n * @private\n */\n private _initializeInput() {\n if (this._element.tagName == 'INPUT') {\n this._input = this._element as HTMLInputElement;\n } else {\n let query = this._element.dataset.tdTargetInput;\n if (query == undefined || query == 'nearest') {\n this._input = this._element.querySelector('input');\n } else {\n this._input = this._element.querySelector(query);\n }\n }\n\n if (!this._input) return;\n\n this._input.addEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input.addEventListener('click', this._toggleClickEvent);\n }\n\n if (this._input.value) {\n this._inputChangeEvent();\n }\n }\n\n /**\n * Attempts to locate a toggle for the picker and sets an event listener\n * @private\n */\n private _initializeToggle() {\n if (this._options.display.inline) return;\n let query = this._element.dataset.tdTargetToggle;\n if (query == 'nearest') {\n query = '[data-td-toggle=\"datetimepicker\"]';\n }\n this._toggle =\n query == undefined ? this._element : this._element.querySelector(query);\n this._toggle.addEventListener('click', this._toggleClickEvent);\n }\n\n /**\n * If the option is enabled this will render the clock view after a date pick.\n * @param e change event\n * @private\n */\n private _handleAfterChangeEvent(e: ChangeEvent) {\n if (\n // options is disabled\n !this._options.promptTimeOnDateChange ||\n this._options.display.inline ||\n this._options.display.sideBySide ||\n // time is disabled\n !this._display._hasTime ||\n // clock component is already showing\n this._display.widget\n ?.getElementsByClassName(Namespace.css.show)[0]\n .classList.contains(Namespace.css.timeContainer)\n )\n return;\n\n // First time ever. If useCurrent option is set to true (default), do nothing\n // because the first date is selected automatically.\n // or date didn't change (time did) or date changed because time did.\n if (\n (!e.oldDate && this._options.useCurrent) ||\n (e.oldDate && e.date?.isSame(e.oldDate))\n ) {\n return;\n }\n\n clearTimeout(this._currentPromptTimeTimeout);\n this._currentPromptTimeTimeout = setTimeout(() => {\n if (this._display.widget) {\n this._action.do(\n {\n currentTarget: this._display.widget.querySelector(\n `.${Namespace.css.switch} div`\n ),\n },\n ActionTypes.togglePicker\n );\n }\n }, this._options.promptTimeOnDateChangeTransitionDelay);\n }\n\n /**\n * Event for when the input field changes. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _inputChangeEvent = () => {\n const setViewDate = () => {\n if (this.dates.lastPicked) this._viewDate = this.dates.lastPicked;\n };\n\n const value = this._input.value;\n if (this._options.multipleDates) {\n try {\n const valueSplit = value.split(this._options.multipleDatesSeparator);\n for (let i = 0; i < valueSplit.length; i++) {\n if (this._options.hooks.inputParse) {\n this.dates.set(\n this._options.hooks.inputParse(valueSplit[i]),\n i,\n 'input'\n );\n } else {\n this.dates.set(valueSplit[i], i, 'input');\n }\n }\n setViewDate();\n } catch {\n console.warn(\n 'TD: Something went wrong trying to set the multidate values from the input field.'\n );\n }\n } else {\n if (this._options.hooks.inputParse) {\n this.dates.set(this._options.hooks.inputParse(value), 0, 'input');\n } else {\n this.dates.set(value, 0, 'input');\n }\n setViewDate();\n }\n };\n\n /**\n * Event for when the toggle is clicked. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _toggleClickEvent = () => {\n this.toggle();\n };\n}\n\nexport {\n TempusDominus,\n Namespace,\n DefaultOptions,\n DateTime,\n Options,\n Unit,\n DateTimeFormatOptions,\n};\n"],"names":["Unit","SecondDisplay","createPopper"],"mappings":"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"} \ No newline at end of file diff --git a/docs/6/options.html b/docs/6/options.html index e4478ba49..67c979cd1 100644 --- a/docs/6/options.html +++ b/docs/6/options.html @@ -595,20 +595,12 @@

sideBySide Displays the date and time pickers side by side.

- -

inputFormat

-

- Accepts: Defaults:
-

-

inline

- Accepts: object Defaults: undefined
- Takes an object of Intl.DateTimeFormat options. - Used to format selected values before updating the option input fields value. + Accepts: Defaults:boolean
+ Displays the picker in a inline div instead of a popup.

-

keepOpen

Accepts: true|false Defaults: false
@@ -616,8 +608,47 @@

keepOpenhooks +

- +
+
+

inputFormat +

+

+ Accepts: (date: DateTime) => string or undefined Defaults: + undefined
+ Takes a function that turns the selected date(s) into a string. If not provided, Intl formatting will be + used based on configured components. +

+

+ Whenever the picker attempts to set the input value from a selection, it will call this function. An example + that would set the value to an ISO string. Obviously, it's up to you how you want the results to be displayed. +

+

+inputFormat:(date) => { return date.toISOString() }
+
+        
+

inputParse +

+

+ Accepts: (value: any) => DateTime or undefined Defaults: + undefined
+ Takes a function that turns the input value into a DateTime object. If not provided, the internal parsing + method will be used. +

+

+ Whenever the input value changes, this function will be called. The most simple example is just to attempt to + parse the string. +

+

+inputParse: (value) => { return new tempusDominus.DateTime(value) }
+
+        
+

stepping diff --git a/docs/css/styles.min.css b/docs/css/styles.min.css index 3424fe883..a4fd82222 100644 --- a/docs/css/styles.min.css +++ b/docs/css/styles.min.css @@ -1,7 +1,7 @@ @charset "UTF-8"; @import "https://fonts.googleapis.com/css?family=Roboto:300,400,500,700,900"; /*! - * Bootstrap v5.1.0 (https://getbootstrap.com/) + * Bootstrap v5.1.2 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors * Copyright 2011-2021 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) @@ -47,7 +47,8 @@ --bs-dark-rgb: 33, 37, 41; --bs-white-rgb: 255, 255, 255; --bs-black-rgb: 0, 0, 0; - --bs-body-rgb: 33, 37, 41; + --bs-body-color-rgb: 33, 37, 41; + --bs-body-bg-rgb: 255, 255, 255; --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); @@ -659,16 +660,16 @@ progress { --bs-gutter-y: 0; display: flex; flex-wrap: wrap; - margin-top: calc(var(--bs-gutter-y) * -1); - margin-right: calc(var(--bs-gutter-x) * -.5); - margin-left: calc(var(--bs-gutter-x) * -.5); + margin-top: calc(-1 * var(--bs-gutter-y)); + margin-right: calc(-0.5 * var(--bs-gutter-x)); + margin-left: calc(-0.5 * var(--bs-gutter-x)); } .row > * { flex-shrink: 0; width: 100%; max-width: 100%; - padding-right: calc(var(--bs-gutter-x) * .5); - padding-left: calc(var(--bs-gutter-x) * .5); + padding-right: calc(var(--bs-gutter-x) * 0.5); + padding-left: calc(var(--bs-gutter-x) * 0.5); margin-top: var(--bs-gutter-y); } @@ -1972,8 +1973,8 @@ progress { .table > thead { vertical-align: bottom; } -.table > :not(:last-child) > :last-child > * { - border-bottom-color: currentColor; +.table > :not(:first-child) { + border-top: 2px solid currentColor; } .caption-top { @@ -1994,8 +1995,11 @@ progress { .table-borderless > :not(caption) > * > * { border-bottom-width: 0; } +.table-borderless > :not(:first-child) { + border-top-width: 0; +} -.table-striped > tbody > tr:nth-of-type(odd) { +.table-striped > tbody > tr:nth-of-type(odd) > * { --bs-table-accent-bg: var(--bs-table-striped-bg); color: var(--bs-table-striped-color); } @@ -2005,7 +2009,7 @@ progress { color: var(--bs-table-active-color); } -.table-hover > tbody > tr:hover { +.table-hover > tbody > tr:hover > * { --bs-table-accent-bg: var(--bs-table-hover-bg); color: var(--bs-table-hover-color); } @@ -2383,6 +2387,7 @@ textarea.form-control-lg { padding-bottom: 0.25rem; padding-left: 0.5rem; font-size: 0.875rem; + border-radius: 0.2rem; } .form-select-lg { @@ -2390,6 +2395,7 @@ textarea.form-control-lg { padding-bottom: 0.5rem; padding-left: 1rem; font-size: 1.25rem; + border-radius: 0.3rem; } .form-check { @@ -2889,6 +2895,7 @@ textarea.form-control-lg { .btn { display: inline-block; + align-self: center; font-weight: 400; line-height: 1.5; color: #212529; @@ -6352,15 +6359,15 @@ textarea.form-control-lg { } .ratio-4x3 { - --bs-aspect-ratio: calc(3 / 4 * 100%); + --bs-aspect-ratio: 75%; } .ratio-16x9 { - --bs-aspect-ratio: calc(9 / 16 * 100%); + --bs-aspect-ratio: 56.25%; } .ratio-21x9 { - --bs-aspect-ratio: calc(9 / 21 * 100%); + --bs-aspect-ratio: 42.8571428571%; } .fixed-top { @@ -7601,7 +7608,7 @@ textarea.form-control-lg { .text-body { --bs-text-opacity: 1; - color: rgba(var(--bs-body-rgb), var(--bs-text-opacity)) !important; + color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important; } .text-muted { @@ -7692,7 +7699,7 @@ textarea.form-control-lg { .bg-body { --bs-bg-opacity: 1; - background-color: rgba(var(--bs-body-rgb), var(--bs-bg-opacity)) !important; + background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important; } .bg-transparent { @@ -11237,7 +11244,7 @@ textarea.form-control-lg { font-weight: 600; } .bd-masthead .lead { - font-size: calc(1.275rem + .3vw); + font-size: calc(1.275rem + 0.3vw); font-weight: 400; color: #495057; } @@ -11323,7 +11330,7 @@ textarea.form-control-lg { } } .bd-lead { - font-size: calc(1.275rem + .3vw); + font-size: calc(1.275rem + 0.3vw); font-weight: 300; } diff --git a/docs/js/bundle.min.js b/docs/js/bundle.min.js index 460b1b4ec..be2120d4d 100644 --- a/docs/js/bundle.min.js +++ b/docs/js/bundle.min.js @@ -1,7 +1,7 @@ -function logger(e,t,...arguments){const i=document.createElement("div");switch(i.classList.add("alert"),t){case"log":i.classList.add("alert-primary");break;case"debug":i.classList.add("alert-secondary");break;case"info":i.classList.add("alert-info");break;case"warn":i.classList.add("alert-warning");break;case"error":i.classList.add("alert-danger")}const n=document.createElement("pre");n.innerHTML=arguments.join(" "),i.appendChild(n),e.appendChild(i)}document.addEventListener("DOMContentLoaded",(()=>{Array.from(document.getElementsByClassName("show-code")).forEach((e=>{e.addEventListener("click",(()=>{const t=e.closest("section").getElementsByClassName("code-blocks")[0];t.classList.toggle("d-block"),t.classList.toggle("d-none")}))}));const e=["change.td","update.td","error.td","show.td","hide.td","click.td"];document.querySelectorAll(".log-event").forEach((t=>{e.forEach((e=>{t.addEventListener(e,(i=>{logger(t.closest("section").getElementsByClassName("logger")[0],"log",`${t.getAttribute("id")} -> ${e}:`,JSON.stringify(i.detail,null,2))}))}))}));const t=document.getElementById("mainToc");if(t){const e=[...t.getElementsByTagName("a")].find((e=>e.href===window.location.href));e?.closest("div").parentElement.children[0].click(),e?.classList.add("active")}})),function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Popper={})}(this,(function(e){"use strict";function t(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function i(e){return e instanceof t(e).Element||e instanceof Element}function n(e){return e instanceof t(e).HTMLElement||e instanceof HTMLElement}function s(e){return"undefined"!=typeof ShadowRoot&&(e instanceof t(e).ShadowRoot||e instanceof ShadowRoot)}var o=Math.round;function r(e,t){void 0===t&&(t=!1);var i=e.getBoundingClientRect(),s=1,r=1;if(n(e)&&t){var a=e.offsetHeight,l=e.offsetWidth;l>0&&(s=i.width/l||1),a>0&&(r=i.height/a||1)}return{width:o(i.width/s),height:o(i.height/r),top:o(i.top/r),right:o(i.right/s),bottom:o(i.bottom/r),left:o(i.left/s),x:o(i.left/s),y:o(i.top/r)}}function a(e){var i=t(e);return{scrollLeft:i.pageXOffset,scrollTop:i.pageYOffset}}function l(e){return e?(e.nodeName||"").toLowerCase():null}function c(e){return((i(e)?e.ownerDocument:e.document)||window.document).documentElement}function h(e){return r(c(e)).left+a(e).scrollLeft}function d(e){return t(e).getComputedStyle(e)}function u(e){var t=d(e),i=t.overflow,n=t.overflowX,s=t.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function f(e,i,s){void 0===s&&(s=!1);var o,d,f=n(i),p=n(i)&&function(e){var t=e.getBoundingClientRect(),i=t.width/e.offsetWidth||1,n=t.height/e.offsetHeight||1;return 1!==i||1!==n}(i),m=c(i),g=r(e,p),_={scrollLeft:0,scrollTop:0},b={x:0,y:0};return(f||!f&&!s)&&(("body"!==l(i)||u(m))&&(_=(o=i)!==t(o)&&n(o)?{scrollLeft:(d=o).scrollLeft,scrollTop:d.scrollTop}:a(o)),n(i)?((b=r(i,!0)).x+=i.clientLeft,b.y+=i.clientTop):m&&(b.x=h(m))),{x:g.left+_.scrollLeft-b.x,y:g.top+_.scrollTop-b.y,width:g.width,height:g.height}}function p(e){var t=r(e),i=e.offsetWidth,n=e.offsetHeight;return Math.abs(t.width-i)<=1&&(i=t.width),Math.abs(t.height-n)<=1&&(n=t.height),{x:e.offsetLeft,y:e.offsetTop,width:i,height:n}}function m(e){return"html"===l(e)?e:e.assignedSlot||e.parentNode||(s(e)?e.host:null)||c(e)}function g(e){return["html","body","#document"].indexOf(l(e))>=0?e.ownerDocument.body:n(e)&&u(e)?e:g(m(e))}function _(e,i){var n;void 0===i&&(i=[]);var s=g(e),o=s===(null==(n=e.ownerDocument)?void 0:n.body),r=t(s),a=o?[r].concat(r.visualViewport||[],u(s)?s:[]):s,l=i.concat(a);return o?l:l.concat(_(m(a)))}function b(e){return["table","td","th"].indexOf(l(e))>=0}function v(e){return n(e)&&"fixed"!==d(e).position?e.offsetParent:null}function y(e){for(var i=t(e),s=v(e);s&&b(s)&&"static"===d(s).position;)s=v(s);return s&&("html"===l(s)||"body"===l(s)&&"static"===d(s).position)?i:s||function(e){var t=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&n(e)&&"fixed"===d(e).position)return null;for(var i=m(e);n(i)&&["html","body"].indexOf(l(i))<0;){var s=d(i);if("none"!==s.transform||"none"!==s.perspective||"paint"===s.contain||-1!==["transform","perspective"].indexOf(s.willChange)||t&&"filter"===s.willChange||t&&s.filter&&"none"!==s.filter)return i;i=i.parentNode}return null}(e)||i}var w="top",E="bottom",A="right",T="left",O="auto",C=[w,E,A,T],k="start",L="end",S="viewport",x="popper",D=C.reduce((function(e,t){return e.concat([t+"-"+k,t+"-"+L])}),[]),N=[].concat(C,[O]).reduce((function(e,t){return e.concat([t,t+"-"+k,t+"-"+L])}),[]),I=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function j(e){var t=new Map,i=new Set,n=[];function s(e){i.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!i.has(e)){var n=t.get(e);n&&s(n)}})),n.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){i.has(e.name)||s(e)})),n}function P(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),n=1;n=0&&n(e)?y(e):e;return i(s)?t.filter((function(e){return i(e)&&$(e,s)&&"body"!==l(e)})):[]}(e):[].concat(t),r=[].concat(o,[s]),a=r[0],c=r.reduce((function(t,i){var n=F(e,i);return t.top=q(n.top,t.top),t.right=R(n.right,t.right),t.bottom=R(n.bottom,t.bottom),t.left=q(n.left,t.left),t}),F(e,a));return c.width=c.right-c.left,c.height=c.bottom-c.top,c.x=c.left,c.y=c.top,c}function V(e){return e.split("-")[1]}function K(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function X(e){var t,i=e.reference,n=e.element,s=e.placement,o=s?B(s):null,r=s?V(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case w:t={x:a,y:i.y-n.height};break;case E:t={x:a,y:i.y+i.height};break;case A:t={x:i.x+i.width,y:l};break;case T:t={x:i.x-n.width,y:l};break;default:t={x:i.x,y:i.y}}var c=o?K(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case k:t[c]=t[c]-(i[h]/2-n[h]/2);break;case L:t[c]=t[c]+(i[h]/2-n[h]/2)}}return t}function Y(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function Q(e,t){return t.reduce((function(t,i){return t[i]=e,t}),{})}function G(e,t){void 0===t&&(t={});var n=t,s=n.placement,o=void 0===s?e.placement:s,a=n.boundary,l=void 0===a?"clippingParents":a,h=n.rootBoundary,d=void 0===h?S:h,u=n.elementContext,f=void 0===u?x:u,p=n.altBoundary,m=void 0!==p&&p,g=n.padding,_=void 0===g?0:g,b=Y("number"!=typeof _?_:Q(_,C)),v=f===x?"reference":x,y=e.rects.popper,T=e.elements[m?v:f],O=U(i(T)?T:T.contextElement||c(e.elements.popper),l,d),k=r(e.elements.reference),L=X({reference:k,element:y,strategy:"absolute",placement:o}),D=z(Object.assign({},y,L)),N=f===x?D:k,I={top:O.top-N.top+b.top,bottom:N.bottom-O.bottom+b.bottom,left:O.left-N.left+b.left,right:N.right-O.right+b.right},j=e.modifiersData.offset;if(f===x&&j){var P=j[o];Object.keys(I).forEach((function(e){var t=[A,E].indexOf(e)>=0?1:-1,i=[w,E].indexOf(e)>=0?"y":"x";I[e]+=P[i]*t}))}return I}var J="Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.",Z={placement:"bottom",modifiers:[],strategy:"absolute"};function ee(){for(var e=arguments.length,t=new Array(e),i=0;i100){console.error("Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.");break}if(!0!==l.reset){var o=l.orderedModifiers[s],r=o.fn,a=o.options,c=void 0===a?{}:a,d=o.name;"function"==typeof r&&(l=r({state:l,options:c,name:d,instance:u})||l)}else l.reset=!1,s=-1}}else console.error(J)}},update:(o=function(){return new Promise((function(e){u.forceUpdate(),e(l)}))},function(){return a||(a=new Promise((function(e){Promise.resolve().then((function(){a=void 0,e(o())}))}))),a}),destroy:function(){m(),h=!0}};if(!ee(e,t))return console.error(J),u;function m(){c.forEach((function(e){return e()})),c=[]}return u.setOptions(n).then((function(e){!h&&n.onFirstUpdate&&n.onFirstUpdate(e)})),u}}var ie={passive:!0};var ne={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var i=e.state,n=e.instance,s=e.options,o=s.scroll,r=void 0===o||o,a=s.resize,l=void 0===a||a,c=t(i.elements.popper),h=[].concat(i.scrollParents.reference,i.scrollParents.popper);return r&&h.forEach((function(e){e.addEventListener("scroll",n.update,ie)})),l&&c.addEventListener("resize",n.update,ie),function(){r&&h.forEach((function(e){e.removeEventListener("scroll",n.update,ie)})),l&&c.removeEventListener("resize",n.update,ie)}},data:{}};var se={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,i=e.name;t.modifiersData[i]=X({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},oe={top:"auto",right:"auto",bottom:"auto",left:"auto"};function re(e){var i,n=e.popper,s=e.popperRect,o=e.placement,r=e.variation,a=e.offsets,l=e.position,h=e.gpuAcceleration,u=e.adaptive,f=e.roundOffsets,p=!0===f?function(e){var t=e.x,i=e.y,n=window.devicePixelRatio||1;return{x:W(W(t*n)/n)||0,y:W(W(i*n)/n)||0}}(a):"function"==typeof f?f(a):a,m=p.x,g=void 0===m?0:m,_=p.y,b=void 0===_?0:_,v=a.hasOwnProperty("x"),O=a.hasOwnProperty("y"),C=T,k=w,S=window;if(u){var x=y(n),D="clientHeight",N="clientWidth";x===t(n)&&"static"!==d(x=c(n)).position&&"absolute"===l&&(D="scrollHeight",N="scrollWidth"),x=x,o!==w&&(o!==T&&o!==A||r!==L)||(k=E,b-=x[D]-s.height,b*=h?1:-1),o!==T&&(o!==w&&o!==E||r!==L)||(C=A,g-=x[N]-s.width,g*=h?1:-1)}var I,j=Object.assign({position:l},u&&oe);return h?Object.assign({},j,((I={})[k]=O?"0":"",I[C]=v?"0":"",I.transform=(S.devicePixelRatio||1)<=1?"translate("+g+"px, "+b+"px)":"translate3d("+g+"px, "+b+"px, 0)",I)):Object.assign({},j,((i={})[k]=O?b+"px":"",i[C]=v?g+"px":"",i.transform="",i))}var ae={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,i=e.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c=d(t.elements.popper).transitionProperty||"";r&&["transform","top","right","bottom","left"].some((function(e){return c.indexOf(e)>=0}))&&console.warn(["Popper: Detected CSS transitions on at least one of the following",'CSS properties: "transform", "top", "right", "bottom", "left".',"\n\n",'Disable the "computeStyles" modifier\'s `adaptive` option to allow',"for smooth transitions, or remove these properties from the CSS","transition declaration on the popper element if only transitioning","opacity or background-color for example.","\n\n","We recommend using the popper element as a wrapper around an inner","element that can have any CSS property transitioned for animations."].join(" "));var h={placement:B(t.placement),variation:V(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:s};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,re(Object.assign({},h,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:r,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,re(Object.assign({},h,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}};var le={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var i=t.styles[e]||{},s=t.attributes[e]||{},o=t.elements[e];n(o)&&l(o)&&(Object.assign(o.style,i),Object.keys(s).forEach((function(e){var t=s[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,i={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,i.popper),t.styles=i,t.elements.arrow&&Object.assign(t.elements.arrow.style,i.arrow),function(){Object.keys(t.elements).forEach((function(e){var s=t.elements[e],o=t.attributes[e]||{},r=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:i[e]).reduce((function(e,t){return e[t]="",e}),{});n(s)&&l(s)&&(Object.assign(s.style,r),Object.keys(o).forEach((function(e){s.removeAttribute(e)})))}))}},requires:["computeStyles"]};var ce={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,i=e.options,n=e.name,s=i.offset,o=void 0===s?[0,0]:s,r=N.reduce((function(e,i){return e[i]=function(e,t,i){var n=B(e),s=[T,w].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},t,{placement:e})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[T,A].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,t.rects,o),e}),{}),a=r[t.placement],l=a.x,c=a.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[n]=r}},he={left:"right",right:"left",bottom:"top",top:"bottom"};function de(e){return e.replace(/left|right|bottom|top/g,(function(e){return he[e]}))}var ue={start:"end",end:"start"};function fe(e){return e.replace(/start|end/g,(function(e){return ue[e]}))}function pe(e,t){void 0===t&&(t={});var i=t,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?N:l,h=V(n),d=h?a?D:D.filter((function(e){return V(e)===h})):C,u=d.filter((function(e){return c.indexOf(e)>=0}));0===u.length&&(u=d,console.error(["Popper: The `allowedAutoPlacements` option did not allow any","placements. Ensure the `placement` option matches the variation","of the allowed placements.",'For example, "auto" cannot be used to allow "bottom-start".','Use "auto-start" instead.'].join(" ")));var f=u.reduce((function(t,i){return t[i]=G(e,{placement:i,boundary:s,rootBoundary:o,padding:r})[B(i)],t}),{});return Object.keys(f).sort((function(e,t){return f[e]-f[t]}))}var me={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,i=e.options,n=e.name;if(!t.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=t.options.placement,_=B(g),b=l||(_===g||!p?[de(g)]:function(e){if(B(e)===O)return[];var t=de(e);return[fe(e),t,fe(t)]}(g)),v=[g].concat(b).reduce((function(e,i){return e.concat(B(i)===O?pe(t,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=t.rects.reference,C=t.rects.popper,L=new Map,S=!0,x=v[0],D=0;D=0,M=P?"width":"height",H=G(t,{placement:N,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),q=P?j?A:T:j?E:w;y[M]>C[M]&&(q=de(q));var R=de(q),W=[];if(o&&W.push(H[I]<=0),a&&W.push(H[q]<=0,H[R]<=0),W.every((function(e){return e}))){x=N,S=!1;break}L.set(N,W)}if(S)for(var $=function(e){var t=v.find((function(t){var i=L.get(t);if(i)return i.slice(0,e).every((function(e){return e}))}));if(t)return x=t,"break"},z=p?3:1;z>0;z--){if("break"===$(z))break}t.placement!==x&&(t.modifiersData[n]._skip=!0,t.placement=x,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function ge(e,t,i){return q(e,R(t,i))}var _e={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,i=e.options,n=e.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,m=i.tetherOffset,g=void 0===m?0:m,_=G(t,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),b=B(t.placement),v=V(t.placement),O=!v,C=K(b),L="x"===C?"y":"x",S=t.modifiersData.popperOffsets,x=t.rects.reference,D=t.rects.popper,N="function"==typeof g?g(Object.assign({},t.rects,{placement:t.placement})):g,I={x:0,y:0};if(S){if(o||a){var j="y"===C?w:T,P="y"===C?E:A,M="y"===C?"height":"width",H=S[C],W=S[C]+_[j],$=S[C]-_[P],z=f?-D[M]/2:0,F=v===k?x[M]:D[M],U=v===k?-D[M]:-x[M],X=t.elements.arrow,Y=f&&X?p(X):{width:0,height:0},Q=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},J=Q[j],Z=Q[P],ee=ge(0,x[M],Y[M]),te=O?x[M]/2-z-ee-J-N:F-ee-J-N,ie=O?-x[M]/2+z+ee+Z+N:U+ee+Z+N,ne=t.elements.arrow&&y(t.elements.arrow),se=ne?"y"===C?ne.clientTop||0:ne.clientLeft||0:0,oe=t.modifiersData.offset?t.modifiersData.offset[t.placement][C]:0,re=S[C]+te-oe-se,ae=S[C]+ie-oe;if(o){var le=ge(f?R(W,re):W,H,f?q($,ae):$);S[C]=le,I[C]=le-H}if(a){var ce="x"===C?w:T,he="x"===C?E:A,de=S[L],ue=de+_[ce],fe=de-_[he],pe=ge(f?R(ue,re):ue,de,f?q(fe,ae):fe);S[L]=pe,I[L]=pe-de}}t.modifiersData[n]=I}},requiresIfExists:["offset"]};var be={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,i=e.state,n=e.name,s=e.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=B(i.placement),l=K(a),c=[T,A].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(e,t){return Y("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:Q(e,C))}(s.padding,i),d=p(o),u="y"===l?w:T,f="y"===l?E:A,m=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],g=r[l]-i.rects.reference[l],_=y(o),b=_?"y"===l?_.clientHeight||0:_.clientWidth||0:0,v=m/2-g/2,O=h[u],k=b-d[c]-h[f],L=b/2-d[c]/2+v,S=ge(O,L,k),x=l;i.modifiersData[n]=((t={})[x]=S,t.centerOffset=S-L,t)}},effect:function(e){var t=e.state,i=e.options.element,s=void 0===i?"[data-popper-arrow]":i;null!=s&&("string"!=typeof s||(s=t.elements.popper.querySelector(s)))&&(n(s)||console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).',"To use an SVG arrow, wrap it in an HTMLElement that will be used as","the arrow."].join(" ")),$(t.elements.popper,s)?t.elements.arrow=s:console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper',"element."].join(" ")))},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ve(e,t,i){return void 0===i&&(i={x:0,y:0}),{top:e.top-t.height-i.y,right:e.right-t.width+i.x,bottom:e.bottom-t.height+i.y,left:e.left-t.width-i.x}}function ye(e){return[w,A,E,T].some((function(t){return e[t]>=0}))}var we={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,i=e.name,n=t.rects.reference,s=t.rects.popper,o=t.modifiersData.preventOverflow,r=G(t,{elementContext:"reference"}),a=G(t,{altBoundary:!0}),l=ve(r,n),c=ve(a,s,o),h=ye(l),d=ye(c);t.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},Ee=te({defaultModifiers:[ne,se,ae,le]}),Ae=[ne,se,ae,le,ce,me,_e,be,we],Te=te({defaultModifiers:Ae});e.applyStyles=le,e.arrow=be,e.computeStyles=ae,e.createPopper=Te,e.createPopperLite=Ee,e.defaultModifiers=Ae,e.detectOverflow=G,e.eventListeners=ne,e.flip=me,e.hide=we,e.offset=ce,e.popperGenerator=te,e.popperOffsets=se,e.preventOverflow=_e,Object.defineProperty(e,"__esModule",{value:!0})})), +function logger(e,t,...arguments){const i=document.createElement("div");switch(i.classList.add("alert"),t){case"log":i.classList.add("alert-primary");break;case"debug":i.classList.add("alert-secondary");break;case"info":i.classList.add("alert-info");break;case"warn":i.classList.add("alert-warning");break;case"error":i.classList.add("alert-danger")}const n=document.createElement("pre");n.innerHTML=arguments.join(" "),i.appendChild(n),e.appendChild(i)}document.addEventListener("DOMContentLoaded",(()=>{Array.from(document.getElementsByClassName("show-code")).forEach((e=>{e.addEventListener("click",(()=>{const t=e.closest("section").getElementsByClassName("code-blocks")[0];t.classList.toggle("d-block"),t.classList.toggle("d-none")}))}));const e=["change.td","update.td","error.td","show.td","hide.td","click.td"];document.querySelectorAll(".log-event").forEach((t=>{e.forEach((e=>{t.addEventListener(e,(i=>{logger(t.closest("section").getElementsByClassName("logger")[0],"log",`${t.getAttribute("id")} -> ${e}:`,JSON.stringify(i.detail,null,2))}))}))}));const t=document.getElementById("mainToc");if(t){const e=[...t.getElementsByTagName("a")].find((e=>e.href===window.location.href));e?.closest("div").parentElement.children[0].click(),e?.classList.add("active")}})),function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Popper={})}(this,(function(e){"use strict";function t(e,t){var i=e.getBoundingClientRect();return{width:i.width/1,height:i.height/1,top:i.top/1,right:i.right/1,bottom:i.bottom/1,left:i.left/1,x:i.left/1,y:i.top/1}}function i(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function n(e){var t=i(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function s(e){return e instanceof i(e).Element||e instanceof Element}function o(e){return e instanceof i(e).HTMLElement||e instanceof HTMLElement}function r(e){return"undefined"!=typeof ShadowRoot&&(e instanceof i(e).ShadowRoot||e instanceof ShadowRoot)}function a(e){return e?(e.nodeName||"").toLowerCase():null}function l(e){return((s(e)?e.ownerDocument:e.document)||window.document).documentElement}function c(e){return t(l(e)).left+n(e).scrollLeft}function h(e){return i(e).getComputedStyle(e)}function d(e){var t=h(e),i=t.overflow,n=t.overflowX,s=t.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function u(e,s,r){void 0===r&&(r=!1);var h=o(s);o(s)&&function(e){var t=e.getBoundingClientRect(),i=t.width/e.offsetWidth||1,n=t.height/e.offsetHeight||1}(s);var u,f,p=l(s),m=t(e),g={scrollLeft:0,scrollTop:0},_={x:0,y:0};return(h||!h&&!r)&&(("body"!==a(s)||d(p))&&(g=(u=s)!==i(u)&&o(u)?{scrollLeft:(f=u).scrollLeft,scrollTop:f.scrollTop}:n(u)),o(s)?((_=t(s)).x+=s.clientLeft,_.y+=s.clientTop):p&&(_.x=c(p))),{x:m.left+g.scrollLeft-_.x,y:m.top+g.scrollTop-_.y,width:m.width,height:m.height}}function f(e){var i=t(e),n=e.offsetWidth,s=e.offsetHeight;return Math.abs(i.width-n)<=1&&(n=i.width),Math.abs(i.height-s)<=1&&(s=i.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:s}}function p(e){return"html"===a(e)?e:e.assignedSlot||e.parentNode||(r(e)?e.host:null)||l(e)}function m(e){return["html","body","#document"].indexOf(a(e))>=0?e.ownerDocument.body:o(e)&&d(e)?e:m(p(e))}function g(e,t){var n;void 0===t&&(t=[]);var s=m(e),o=s===(null==(n=e.ownerDocument)?void 0:n.body),r=i(s),a=o?[r].concat(r.visualViewport||[],d(s)?s:[]):s,l=t.concat(a);return o?l:l.concat(g(p(a)))}function _(e){return["table","td","th"].indexOf(a(e))>=0}function b(e){return o(e)&&"fixed"!==h(e).position?e.offsetParent:null}function v(e){for(var t=i(e),n=b(e);n&&_(n)&&"static"===h(n).position;)n=b(n);return n&&("html"===a(n)||"body"===a(n)&&"static"===h(n).position)?t:n||function(e){var t=-1!==navigator.userAgent.toLowerCase().indexOf("firefox");if(-1!==navigator.userAgent.indexOf("Trident")&&o(e)&&"fixed"===h(e).position)return null;for(var i=p(e);o(i)&&["html","body"].indexOf(a(i))<0;){var n=h(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||t&&"filter"===n.willChange||t&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(e)||t}var y="top",w="bottom",E="right",A="left",T="auto",O=[y,w,E,A],C="start",k="end",L="viewport",S="popper",x=O.reduce((function(e,t){return e.concat([t+"-"+C,t+"-"+k])}),[]),D=[].concat(O,[T]).reduce((function(e,t){return e.concat([t,t+"-"+C,t+"-"+k])}),[]),N=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function I(e){var t=new Map,i=new Set,n=[];function s(e){i.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!i.has(e)){var n=t.get(e);n&&s(n)}})),n.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){i.has(e.name)||s(e)})),n}function P(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),n=1;n=0&&o(e)?v(e):e;return s(i)?t.filter((function(e){return s(e)&&$(e,i)&&"body"!==a(e)})):[]}(e):[].concat(t),r=[].concat(n,[i]),l=r[0],c=r.reduce((function(t,i){var n=z(e,i);return t.top=B(n.top,t.top),t.right=q(n.right,t.right),t.bottom=q(n.bottom,t.bottom),t.left=B(n.left,t.left),t}),z(e,l));return c.width=c.right-c.left,c.height=c.bottom-c.top,c.x=c.left,c.y=c.top,c}function U(e){return e.split("-")[1]}function V(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function K(e){var t,i=e.reference,n=e.element,s=e.placement,o=s?H(s):null,r=s?U(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case y:t={x:a,y:i.y-n.height};break;case w:t={x:a,y:i.y+i.height};break;case E:t={x:i.x+i.width,y:l};break;case A:t={x:i.x-n.width,y:l};break;default:t={x:i.x,y:i.y}}var c=o?V(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case C:t[c]=t[c]-(i[h]/2-n[h]/2);break;case k:t[c]=t[c]+(i[h]/2-n[h]/2)}}return t}function X(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function Y(e,t){return t.reduce((function(t,i){return t[i]=e,t}),{})}function Q(e,i){void 0===i&&(i={});var n=i,o=n.placement,r=void 0===o?e.placement:o,a=n.boundary,c=void 0===a?"clippingParents":a,h=n.rootBoundary,d=void 0===h?L:h,u=n.elementContext,f=void 0===u?S:u,p=n.altBoundary,m=void 0!==p&&p,g=n.padding,_=void 0===g?0:g,b=X("number"!=typeof _?_:Y(_,O)),v=f===S?"reference":S,A=e.rects.popper,T=e.elements[m?v:f],C=F(s(T)?T:T.contextElement||l(e.elements.popper),c,d),k=t(e.elements.reference),x=K({reference:k,element:A,strategy:"absolute",placement:r}),D=W(Object.assign({},A,x)),N=f===S?D:k,I={top:C.top-N.top+b.top,bottom:N.bottom-C.bottom+b.bottom,left:C.left-N.left+b.left,right:N.right-C.right+b.right},P=e.modifiersData.offset;if(f===S&&P){var j=P[r];Object.keys(I).forEach((function(e){var t=[E,w].indexOf(e)>=0?1:-1,i=[y,w].indexOf(e)>=0?"y":"x";I[e]+=j[i]*t}))}return I}var G="Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.",J={placement:"bottom",modifiers:[],strategy:"absolute"};function Z(){for(var e=arguments.length,t=new Array(e),i=0;i100){console.error("Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.");break}if(!0!==l.reset){var o=l.orderedModifiers[s],r=o.fn,a=o.options,c=void 0===a?{}:a,h=o.name;"function"==typeof r&&(l=r({state:l,options:c,name:h,instance:p})||l)}else l.reset=!1,s=-1}}else console.error(G)}},update:(o=function(){return new Promise((function(e){p.forceUpdate(),e(l)}))},function(){return a||(a=new Promise((function(e){Promise.resolve().then((function(){a=void 0,e(o())}))}))),a}),destroy:function(){m(),d=!0}};if(!Z(e,t))return console.error(G),p;function m(){c.forEach((function(e){return e()})),c=[]}return p.setOptions(i).then((function(e){!d&&i.onFirstUpdate&&i.onFirstUpdate(e)})),p}}var te={passive:!0};var ie={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,s=e.options,o=s.scroll,r=void 0===o||o,a=s.resize,l=void 0===a||a,c=i(t.elements.popper),h=[].concat(t.scrollParents.reference,t.scrollParents.popper);return r&&h.forEach((function(e){e.addEventListener("scroll",n.update,te)})),l&&c.addEventListener("resize",n.update,te),function(){r&&h.forEach((function(e){e.removeEventListener("scroll",n.update,te)})),l&&c.removeEventListener("resize",n.update,te)}},data:{}};var ne={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,i=e.name;t.modifiersData[i]=K({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},se={top:"auto",right:"auto",bottom:"auto",left:"auto"};function oe(e){var t,n=e.popper,s=e.popperRect,o=e.placement,r=e.variation,a=e.offsets,c=e.position,d=e.gpuAcceleration,u=e.adaptive,f=e.roundOffsets,p=!0===f?function(e){var t=e.x,i=e.y,n=window.devicePixelRatio||1;return{x:R(R(t*n)/n)||0,y:R(R(i*n)/n)||0}}(a):"function"==typeof f?f(a):a,m=p.x,g=void 0===m?0:m,_=p.y,b=void 0===_?0:_,T=a.hasOwnProperty("x"),O=a.hasOwnProperty("y"),C=A,L=y,S=window;if(u){var x=v(n),D="clientHeight",N="clientWidth";x===i(n)&&"static"!==h(x=l(n)).position&&"absolute"===c&&(D="scrollHeight",N="scrollWidth"),x=x,o!==y&&(o!==A&&o!==E||r!==k)||(L=w,b-=x[D]-s.height,b*=d?1:-1),o!==A&&(o!==y&&o!==w||r!==k)||(C=E,g-=x[N]-s.width,g*=d?1:-1)}var I,P=Object.assign({position:c},u&&se);return d?Object.assign({},P,((I={})[L]=O?"0":"",I[C]=T?"0":"",I.transform=(S.devicePixelRatio||1)<=1?"translate("+g+"px, "+b+"px)":"translate3d("+g+"px, "+b+"px, 0)",I)):Object.assign({},P,((t={})[L]=O?b+"px":"",t[C]=T?g+"px":"",t.transform="",t))}var re={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,i=e.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c=h(t.elements.popper).transitionProperty||"";r&&["transform","top","right","bottom","left"].some((function(e){return c.indexOf(e)>=0}))&&console.warn(["Popper: Detected CSS transitions on at least one of the following",'CSS properties: "transform", "top", "right", "bottom", "left".',"\n\n",'Disable the "computeStyles" modifier\'s `adaptive` option to allow',"for smooth transitions, or remove these properties from the CSS","transition declaration on the popper element if only transitioning","opacity or background-color for example.","\n\n","We recommend using the popper element as a wrapper around an inner","element that can have any CSS property transitioned for animations."].join(" "));var d={placement:H(t.placement),variation:U(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:s};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,oe(Object.assign({},d,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:r,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,oe(Object.assign({},d,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}};var ae={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var i=t.styles[e]||{},n=t.attributes[e]||{},s=t.elements[e];o(s)&&a(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(e){var t=n[e];!1===t?s.removeAttribute(e):s.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,i={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,i.popper),t.styles=i,t.elements.arrow&&Object.assign(t.elements.arrow.style,i.arrow),function(){Object.keys(t.elements).forEach((function(e){var n=t.elements[e],s=t.attributes[e]||{},r=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:i[e]).reduce((function(e,t){return e[t]="",e}),{});o(n)&&a(n)&&(Object.assign(n.style,r),Object.keys(s).forEach((function(e){n.removeAttribute(e)})))}))}},requires:["computeStyles"]};var le={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,i=e.options,n=e.name,s=i.offset,o=void 0===s?[0,0]:s,r=D.reduce((function(e,i){return e[i]=function(e,t,i){var n=H(e),s=[A,y].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},t,{placement:e})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[A,E].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,t.rects,o),e}),{}),a=r[t.placement],l=a.x,c=a.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[n]=r}},ce={left:"right",right:"left",bottom:"top",top:"bottom"};function he(e){return e.replace(/left|right|bottom|top/g,(function(e){return ce[e]}))}var de={start:"end",end:"start"};function ue(e){return e.replace(/start|end/g,(function(e){return de[e]}))}function fe(e,t){void 0===t&&(t={});var i=t,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?D:l,h=U(n),d=h?a?x:x.filter((function(e){return U(e)===h})):O,u=d.filter((function(e){return c.indexOf(e)>=0}));0===u.length&&(u=d,console.error(["Popper: The `allowedAutoPlacements` option did not allow any","placements. Ensure the `placement` option matches the variation","of the allowed placements.",'For example, "auto" cannot be used to allow "bottom-start".','Use "auto-start" instead.'].join(" ")));var f=u.reduce((function(t,i){return t[i]=Q(e,{placement:i,boundary:s,rootBoundary:o,padding:r})[H(i)],t}),{});return Object.keys(f).sort((function(e,t){return f[e]-f[t]}))}var pe={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,i=e.options,n=e.name;if(!t.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=t.options.placement,_=H(g),b=l||(_===g||!p?[he(g)]:function(e){if(H(e)===T)return[];var t=he(e);return[ue(e),t,ue(t)]}(g)),v=[g].concat(b).reduce((function(e,i){return e.concat(H(i)===T?fe(t,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),O=t.rects.reference,k=t.rects.popper,L=new Map,S=!0,x=v[0],D=0;D=0,M=j?"width":"height",B=Q(t,{placement:N,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),q=j?P?E:A:P?w:y;O[M]>k[M]&&(q=he(q));var R=he(q),$=[];if(o&&$.push(B[I]<=0),a&&$.push(B[q]<=0,B[R]<=0),$.every((function(e){return e}))){x=N,S=!1;break}L.set(N,$)}if(S)for(var W=function(e){var t=v.find((function(t){var i=L.get(t);if(i)return i.slice(0,e).every((function(e){return e}))}));if(t)return x=t,"break"},z=p?3:1;z>0;z--){if("break"===W(z))break}t.placement!==x&&(t.modifiersData[n]._skip=!0,t.placement=x,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function me(e,t,i){return B(e,q(t,i))}var ge={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,i=e.options,n=e.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,p=void 0===u||u,m=i.tetherOffset,g=void 0===m?0:m,_=Q(t,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),b=H(t.placement),T=U(t.placement),O=!T,k=V(b),L="x"===k?"y":"x",S=t.modifiersData.popperOffsets,x=t.rects.reference,D=t.rects.popper,N="function"==typeof g?g(Object.assign({},t.rects,{placement:t.placement})):g,I={x:0,y:0};if(S){if(o||a){var P="y"===k?y:A,j="y"===k?w:E,M="y"===k?"height":"width",R=S[k],$=S[k]+_[P],W=S[k]-_[j],z=p?-D[M]/2:0,F=T===C?x[M]:D[M],K=T===C?-D[M]:-x[M],X=t.elements.arrow,Y=p&&X?f(X):{width:0,height:0},G=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},J=G[P],Z=G[j],ee=me(0,x[M],Y[M]),te=O?x[M]/2-z-ee-J-N:F-ee-J-N,ie=O?-x[M]/2+z+ee+Z+N:K+ee+Z+N,ne=t.elements.arrow&&v(t.elements.arrow),se=ne?"y"===k?ne.clientTop||0:ne.clientLeft||0:0,oe=t.modifiersData.offset?t.modifiersData.offset[t.placement][k]:0,re=S[k]+te-oe-se,ae=S[k]+ie-oe;if(o){var le=me(p?q($,re):$,R,p?B(W,ae):W);S[k]=le,I[k]=le-R}if(a){var ce="x"===k?y:A,he="x"===k?w:E,de=S[L],ue=de+_[ce],fe=de-_[he],pe=me(p?q(ue,re):ue,de,p?B(fe,ae):fe);S[L]=pe,I[L]=pe-de}}t.modifiersData[n]=I}},requiresIfExists:["offset"]};var _e={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,i=e.state,n=e.name,s=e.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=H(i.placement),l=V(a),c=[A,E].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(e,t){return X("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:Y(e,O))}(s.padding,i),d=f(o),u="y"===l?y:A,p="y"===l?w:E,m=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],g=r[l]-i.rects.reference[l],_=v(o),b=_?"y"===l?_.clientHeight||0:_.clientWidth||0:0,T=m/2-g/2,C=h[u],k=b-d[c]-h[p],L=b/2-d[c]/2+T,S=me(C,L,k),x=l;i.modifiersData[n]=((t={})[x]=S,t.centerOffset=S-L,t)}},effect:function(e){var t=e.state,i=e.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=t.elements.popper.querySelector(n)))&&(o(n)||console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).',"To use an SVG arrow, wrap it in an HTMLElement that will be used as","the arrow."].join(" ")),$(t.elements.popper,n)?t.elements.arrow=n:console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper',"element."].join(" ")))},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function be(e,t,i){return void 0===i&&(i={x:0,y:0}),{top:e.top-t.height-i.y,right:e.right-t.width+i.x,bottom:e.bottom-t.height+i.y,left:e.left-t.width-i.x}}function ve(e){return[y,E,w,A].some((function(t){return e[t]>=0}))}var ye={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,i=e.name,n=t.rects.reference,s=t.rects.popper,o=t.modifiersData.preventOverflow,r=Q(t,{elementContext:"reference"}),a=Q(t,{altBoundary:!0}),l=be(r,n),c=be(a,s,o),h=ve(l),d=ve(c);t.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},we=ee({defaultModifiers:[ie,ne,re,ae]}),Ee=[ie,ne,re,ae,le,pe,ge,_e,ye],Ae=ee({defaultModifiers:Ee});e.applyStyles=ae,e.arrow=_e,e.computeStyles=re,e.createPopper=Ae,e.createPopperLite=we,e.defaultModifiers=Ee,e.detectOverflow=Q,e.eventListeners=ie,e.flip=pe,e.hide=ye,e.offset=le,e.popperGenerator=ee,e.popperOffsets=ne,e.preventOverflow=ge,Object.defineProperty(e,"__esModule",{value:!0})})), /*! - * Bootstrap v5.1.0 (https://getbootstrap.com/) + * Bootstrap v5.1.2 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ -function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).bootstrap=t(e.Popper)}(this,(function(e){"use strict";function t(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(i){if("default"!==i){var n=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(t,i,n.get?n:{enumerable:!0,get:function(){return e[i]}})}})),t.default=e,Object.freeze(t)}var i=t(e);const n="transitionend",s=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let i=e.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),t=i&&"#"!==i?i.trim():null}return t},o=e=>{const t=s(e);return t&&document.querySelector(t)?t:null},r=e=>{const t=s(e);return t?document.querySelector(t):null},a=e=>{e.dispatchEvent(new Event(n))},l=e=>!(!e||"object"!=typeof e)&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType),c=e=>l(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(e):null,h=(e,t,i)=>{Object.keys(i).forEach((n=>{const s=i[n],o=t[n],r=o&&l(o)?"element":null==(a=o)?`${a}`:{}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase();var a;if(!new RegExp(s).test(r))throw new TypeError(`${e.toUpperCase()}: Option "${n}" provided type "${r}" but expected type "${s}".`)}))},d=e=>!(!l(e)||0===e.getClientRects().length)&&"visible"===getComputedStyle(e).getPropertyValue("visibility"),u=e=>!e||e.nodeType!==Node.ELEMENT_NODE||(!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled"))),f=e=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?f(e.parentNode):null},p=()=>{},m=e=>{e.offsetHeight},g=()=>{const{jQuery:e}=window;return e&&!document.body.hasAttribute("data-bs-no-jquery")?e:null},_=[],b=()=>"rtl"===document.documentElement.dir,v=e=>{var t;t=()=>{const t=g();if(t){const i=e.NAME,n=t.fn[i];t.fn[i]=e.jQueryInterface,t.fn[i].Constructor=e,t.fn[i].noConflict=()=>(t.fn[i]=n,e.jQueryInterface)}},"loading"===document.readyState?(_.length||document.addEventListener("DOMContentLoaded",(()=>{_.forEach((e=>e()))})),_.push(t)):t()},y=e=>{"function"==typeof e&&e()},w=(e,t,i=!0)=>{if(!i)return void y(e);const s=(e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:i}=window.getComputedStyle(e);const n=Number.parseFloat(t),s=Number.parseFloat(i);return n||s?(t=t.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(i))):0})(t)+5;let o=!1;const r=({target:i})=>{i===t&&(o=!0,t.removeEventListener(n,r),y(e))};t.addEventListener(n,r),setTimeout((()=>{o||a(t)}),s)},E=(e,t,i,n)=>{let s=e.indexOf(t);if(-1===s)return e[!i&&n?e.length-1:0];const o=e.length;return s+=i?1:-1,n&&(s=(s+o)%o),e[Math.max(0,Math.min(s,o-1))]},A=/[^.]*(?=\..*)\.|.*/,T=/\..*/,O=/::\d+$/,C={};let k=1;const L={mouseenter:"mouseover",mouseleave:"mouseout"},S=/^(mouseenter|mouseleave)/i,x=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function D(e,t){return t&&`${t}::${k++}`||e.uidEvent||k++}function N(e){const t=D(e);return e.uidEvent=t,C[t]=C[t]||{},C[t]}function I(e,t,i=null){const n=Object.keys(e);for(let s=0,o=n.length;sfunction(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};n?n=e(n):i=e(i)}const[o,r,a]=j(t,i,n),l=N(e),c=l[a]||(l[a]={}),h=I(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=D(r,t.replace(A,"")),u=o?function(e,t,i){return function n(s){const o=e.querySelectorAll(t);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(let a=o.length;a--;)if(o[a]===r)return s.delegateTarget=r,n.oneOff&&B.off(e,s.type,t,i),i.apply(r,[s]);return null}}(e,i,n):function(e,t){return function i(n){return n.delegateTarget=e,i.oneOff&&B.off(e,n.type,t),t.apply(e,[n])}}(e,i);u.delegationSelector=o?i:null,u.originalHandler=r,u.oneOff=s,u.uidEvent=d,c[d]=u,e.addEventListener(a,u,o)}function M(e,t,i,n,s){const o=I(t[i],n,s);o&&(e.removeEventListener(i,o,Boolean(s)),delete t[i][o.uidEvent])}function H(e){return e=e.replace(T,""),L[e]||e}const B={on(e,t,i,n){P(e,t,i,n,!1)},one(e,t,i,n){P(e,t,i,n,!0)},off(e,t,i,n){if("string"!=typeof t||!e)return;const[s,o,r]=j(t,i,n),a=r!==t,l=N(e),c=t.startsWith(".");if(void 0!==o){if(!l||!l[r])return;return void M(e,l,r,o,s?i:null)}c&&Object.keys(l).forEach((i=>{!function(e,t,i,n){const s=t[i]||{};Object.keys(s).forEach((o=>{if(o.includes(n)){const n=s[o];M(e,t,i,n.originalHandler,n.delegationSelector)}}))}(e,l,i,t.slice(1))}));const h=l[r]||{};Object.keys(h).forEach((i=>{const n=i.replace(O,"");if(!a||t.includes(n)){const t=h[i];M(e,l,r,t.originalHandler,t.delegationSelector)}}))},trigger(e,t,i){if("string"!=typeof t||!e)return null;const n=g(),s=H(t),o=t!==s,r=x.has(s);let a,l=!0,c=!0,h=!1,d=null;return o&&n&&(a=n.Event(t,i),n(e).trigger(a),l=!a.isPropagationStopped(),c=!a.isImmediatePropagationStopped(),h=a.isDefaultPrevented()),r?(d=document.createEvent("HTMLEvents"),d.initEvent(s,l,!0)):d=new CustomEvent(t,{bubbles:l,cancelable:!0}),void 0!==i&&Object.keys(i).forEach((e=>{Object.defineProperty(d,e,{get:()=>i[e]})})),h&&d.preventDefault(),c&&e.dispatchEvent(d),d.defaultPrevented&&void 0!==a&&a.preventDefault(),d}},q=new Map;var R={set(e,t,i){q.has(e)||q.set(e,new Map);const n=q.get(e);n.has(t)||0===n.size?n.set(t,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(e,t)=>q.has(e)&&q.get(e).get(t)||null,remove(e,t){if(!q.has(e))return;const i=q.get(e);i.delete(t),0===i.size&&q.delete(e)}};class W{constructor(e){(e=c(e))&&(this._element=e,R.set(this._element,this.constructor.DATA_KEY,this))}dispose(){R.remove(this._element,this.constructor.DATA_KEY),B.off(this._element,this.constructor.EVENT_KEY),Object.getOwnPropertyNames(this).forEach((e=>{this[e]=null}))}_queueCallback(e,t,i=!0){w(e,t,i)}static getInstance(e){return R.get(c(e),this.DATA_KEY)}static getOrCreateInstance(e,t={}){return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return"5.1.0"}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}}const $=(e,t="hide")=>{const i=`click.dismiss${e.EVENT_KEY}`,n=e.NAME;B.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),u(this))return;const s=r(this)||this.closest(`.${n}`);e.getOrCreateInstance(s)[t]()}))};class z extends W{static get NAME(){return"alert"}close(){if(B.trigger(this._element,"close.bs.alert").defaultPrevented)return;this._element.classList.remove("show");const e=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,e)}_destroyElement(){this._element.remove(),B.trigger(this._element,"closed.bs.alert"),this.dispose()}static jQueryInterface(e){return this.each((function(){const t=z.getOrCreateInstance(this);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError(`No method named "${e}"`);t[e](this)}}))}}$(z,"close"),v(z);const F='[data-bs-toggle="button"]';class U extends W{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(e){return this.each((function(){const t=U.getOrCreateInstance(this);"toggle"===e&&t[e]()}))}}function V(e){return"true"===e||"false"!==e&&(e===Number(e).toString()?Number(e):""===e||"null"===e?null:e)}function K(e){return e.replace(/[A-Z]/g,(e=>`-${e.toLowerCase()}`))}B.on(document,"click.bs.button.data-api",F,(e=>{e.preventDefault();const t=e.target.closest(F);U.getOrCreateInstance(t).toggle()})),v(U);const X={setDataAttribute(e,t,i){e.setAttribute(`data-bs-${K(t)}`,i)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${K(t)}`)},getDataAttributes(e){if(!e)return{};const t={};return Object.keys(e.dataset).filter((e=>e.startsWith("bs"))).forEach((i=>{let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),t[n]=V(e.dataset[i])})),t},getDataAttribute:(e,t)=>V(e.getAttribute(`data-bs-${K(t)}`)),offset(e){const t=e.getBoundingClientRect();return{top:t.top+window.pageYOffset,left:t.left+window.pageXOffset}},position:e=>({top:e.offsetTop,left:e.offsetLeft})},Y={find:(e,t=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(t,e)),findOne:(e,t=document.documentElement)=>Element.prototype.querySelector.call(t,e),children:(e,t)=>[].concat(...e.children).filter((e=>e.matches(t))),parents(e,t){const i=[];let n=e.parentNode;for(;n&&n.nodeType===Node.ELEMENT_NODE&&3!==n.nodeType;)n.matches(t)&&i.push(n),n=n.parentNode;return i},prev(e,t){let i=e.previousElementSibling;for(;i;){if(i.matches(t))return[i];i=i.previousElementSibling}return[]},next(e,t){let i=e.nextElementSibling;for(;i;){if(i.matches(t))return[i];i=i.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((e=>`${e}:not([tabindex^="-"])`)).join(", ");return this.find(t,e).filter((e=>!u(e)&&d(e)))}},Q="carousel",G={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},J={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},Z="next",ee="prev",te="left",ie="right",ne={ArrowLeft:ie,ArrowRight:te},se="slid.bs.carousel",oe="active",re=".active.carousel-item",ae="touch";class le extends W{constructor(e,t){super(e),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(t),this._indicatorsElement=Y.findOne(".carousel-indicators",this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return G}static get NAME(){return Q}next(){this._slide(Z)}nextWhenVisible(){!document.hidden&&d(this._element)&&this.next()}prev(){this._slide(ee)}pause(e){e||(this._isPaused=!0),Y.findOne(".carousel-item-next, .carousel-item-prev",this._element)&&(a(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(e){e||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(e){this._activeElement=Y.findOne(re,this._element);const t=this._getItemIndex(this._activeElement);if(e>this._items.length-1||e<0)return;if(this._isSliding)return void B.one(this._element,se,(()=>this.to(e)));if(t===e)return this.pause(),void this.cycle();const i=e>t?Z:ee;this._slide(i,this._items[e])}_getConfig(e){return e={...G,...X.getDataAttributes(this._element),..."object"==typeof e?e:{}},h(Q,e,J),e}_handleSwipe(){const e=Math.abs(this.touchDeltaX);if(e<=40)return;const t=e/this.touchDeltaX;this.touchDeltaX=0,t&&this._slide(t>0?ie:te)}_addEventListeners(){this._config.keyboard&&B.on(this._element,"keydown.bs.carousel",(e=>this._keydown(e))),"hover"===this._config.pause&&(B.on(this._element,"mouseenter.bs.carousel",(e=>this.pause(e))),B.on(this._element,"mouseleave.bs.carousel",(e=>this.cycle(e)))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){const e=e=>{!this._pointerEvent||"pen"!==e.pointerType&&e.pointerType!==ae?this._pointerEvent||(this.touchStartX=e.touches[0].clientX):this.touchStartX=e.clientX},t=e=>{this.touchDeltaX=e.touches&&e.touches.length>1?0:e.touches[0].clientX-this.touchStartX},i=e=>{!this._pointerEvent||"pen"!==e.pointerType&&e.pointerType!==ae||(this.touchDeltaX=e.clientX-this.touchStartX),this._handleSwipe(),"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((e=>this.cycle(e)),500+this._config.interval))};Y.find(".carousel-item img",this._element).forEach((e=>{B.on(e,"dragstart.bs.carousel",(e=>e.preventDefault()))})),this._pointerEvent?(B.on(this._element,"pointerdown.bs.carousel",(t=>e(t))),B.on(this._element,"pointerup.bs.carousel",(e=>i(e))),this._element.classList.add("pointer-event")):(B.on(this._element,"touchstart.bs.carousel",(t=>e(t))),B.on(this._element,"touchmove.bs.carousel",(e=>t(e))),B.on(this._element,"touchend.bs.carousel",(e=>i(e))))}_keydown(e){if(/input|textarea/i.test(e.target.tagName))return;const t=ne[e.key];t&&(e.preventDefault(),this._slide(t))}_getItemIndex(e){return this._items=e&&e.parentNode?Y.find(".carousel-item",e.parentNode):[],this._items.indexOf(e)}_getItemByOrder(e,t){const i=e===Z;return E(this._items,t,i,this._config.wrap)}_triggerSlideEvent(e,t){const i=this._getItemIndex(e),n=this._getItemIndex(Y.findOne(re,this._element));return B.trigger(this._element,"slide.bs.carousel",{relatedTarget:e,direction:t,from:n,to:i})}_setActiveIndicatorElement(e){if(this._indicatorsElement){const t=Y.findOne(".active",this._indicatorsElement);t.classList.remove(oe),t.removeAttribute("aria-current");const i=Y.find("[data-bs-target]",this._indicatorsElement);for(let t=0;t{B.trigger(this._element,se,{relatedTarget:o,direction:d,from:s,to:r})};if(this._element.classList.contains("slide")){o.classList.add(h),m(o),n.classList.add(c),o.classList.add(c);const e=()=>{o.classList.remove(c,h),o.classList.add(oe),n.classList.remove(oe,h,c),this._isSliding=!1,setTimeout(u,0)};this._queueCallback(e,n,!0)}else n.classList.remove(oe),o.classList.add(oe),this._isSliding=!1,u();a&&this.cycle()}_directionToOrder(e){return[ie,te].includes(e)?b()?e===te?ee:Z:e===te?Z:ee:e}_orderToDirection(e){return[Z,ee].includes(e)?b()?e===ee?te:ie:e===ee?ie:te:e}static carouselInterface(e,t){const i=le.getOrCreateInstance(e,t);let{_config:n}=i;"object"==typeof t&&(n={...n,...t});const s="string"==typeof t?t:n.slide;if("number"==typeof t)i.to(t);else if("string"==typeof s){if(void 0===i[s])throw new TypeError(`No method named "${s}"`);i[s]()}else n.interval&&n.ride&&(i.pause(),i.cycle())}static jQueryInterface(e){return this.each((function(){le.carouselInterface(this,e)}))}static dataApiClickHandler(e){const t=r(this);if(!t||!t.classList.contains("carousel"))return;const i={...X.getDataAttributes(t),...X.getDataAttributes(this)},n=this.getAttribute("data-bs-slide-to");n&&(i.interval=!1),le.carouselInterface(t,i),n&&le.getInstance(t).to(n),e.preventDefault()}}B.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",le.dataApiClickHandler),B.on(window,"load.bs.carousel.data-api",(()=>{const e=Y.find('[data-bs-ride="carousel"]');for(let t=0,i=e.length;te===this._element));null!==n&&s.length&&(this._selector=n,this._triggerArray.push(t))}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return de}static get NAME(){return ce}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let e,t=[];if(this._config.parent){const e=Y.find(".collapse .collapse",this._config.parent);t=Y.find(".show, .collapsing",this._config.parent).filter((t=>!e.includes(t)))}const i=Y.findOne(this._selector);if(t.length){const n=t.find((e=>i!==e));if(e=n?be.getInstance(n):null,e&&e._isTransitioning)return}if(B.trigger(this._element,"show.bs.collapse").defaultPrevented)return;t.forEach((t=>{i!==t&&be.getOrCreateInstance(t,{toggle:!1}).hide(),e||R.set(t,he,null)}));const n=this._getDimension();this._element.classList.remove(pe),this._element.classList.add(me),this._element.style[n]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const s=`scroll${n[0].toUpperCase()+n.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(me),this._element.classList.add(pe,fe),this._element.style[n]="",B.trigger(this._element,"shown.bs.collapse")}),this._element,!0),this._element.style[n]=`${this._element[s]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(B.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,m(this._element),this._element.classList.add(me),this._element.classList.remove(pe,fe);const t=this._triggerArray.length;for(let e=0;e{this._isTransitioning=!1,this._element.classList.remove(me),this._element.classList.add(pe),B.trigger(this._element,"hidden.bs.collapse")}),this._element,!0)}_isShown(e=this._element){return e.classList.contains(fe)}_getConfig(e){return(e={...de,...X.getDataAttributes(this._element),...e}).toggle=Boolean(e.toggle),e.parent=c(e.parent),h(ce,e,ue),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const e=Y.find(".collapse .collapse",this._config.parent);Y.find(_e,this._config.parent).filter((t=>!e.includes(t))).forEach((e=>{const t=r(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}))}_addAriaAndCollapsedClass(e,t){e.length&&e.forEach((e=>{t?e.classList.remove(ge):e.classList.add(ge),e.setAttribute("aria-expanded",t)}))}static jQueryInterface(e){return this.each((function(){const t={};"string"==typeof e&&/show|hide/.test(e)&&(t.toggle=!1);const i=be.getOrCreateInstance(this,t);if("string"==typeof e){if(void 0===i[e])throw new TypeError(`No method named "${e}"`);i[e]()}}))}}B.on(document,"click.bs.collapse.data-api",_e,(function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();const t=o(this);Y.find(t).forEach((e=>{be.getOrCreateInstance(e,{toggle:!1}).toggle()}))})),v(be);const ve="dropdown",ye="Escape",we="Space",Ee="ArrowUp",Ae="ArrowDown",Te=new RegExp("ArrowUp|ArrowDown|Escape"),Oe="click.bs.dropdown.data-api",Ce="keydown.bs.dropdown.data-api",ke="show",Le='[data-bs-toggle="dropdown"]',Se=".dropdown-menu",xe=b()?"top-end":"top-start",De=b()?"top-start":"top-end",Ne=b()?"bottom-end":"bottom-start",Ie=b()?"bottom-start":"bottom-end",je=b()?"left-start":"right-start",Pe=b()?"right-start":"left-start",Me={offset:[0,2],boundary:"clippingParents",reference:"toggle",display:"dynamic",popperConfig:null,autoClose:!0},He={offset:"(array|string|function)",boundary:"(string|element)",reference:"(string|element|object)",display:"string",popperConfig:"(null|object|function)",autoClose:"(boolean|string)"};class Be extends W{constructor(e,t){super(e),this._popper=null,this._config=this._getConfig(t),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar()}static get Default(){return Me}static get DefaultType(){return He}static get NAME(){return ve}toggle(){return this._isShown()?this.hide():this.show()}show(){if(u(this._element)||this._isShown(this._menu))return;const e={relatedTarget:this._element};if(B.trigger(this._element,"show.bs.dropdown",e).defaultPrevented)return;const t=Be.getParentFromElement(this._element);this._inNavbar?X.setDataAttribute(this._menu,"popper","none"):this._createPopper(t),"ontouchstart"in document.documentElement&&!t.closest(".navbar-nav")&&[].concat(...document.body.children).forEach((e=>B.on(e,"mouseover",p))),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(ke),this._element.classList.add(ke),B.trigger(this._element,"shown.bs.dropdown",e)}hide(){if(u(this._element)||!this._isShown(this._menu))return;const e={relatedTarget:this._element};this._completeHide(e)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(e){B.trigger(this._element,"hide.bs.dropdown",e).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach((e=>B.off(e,"mouseover",p))),this._popper&&this._popper.destroy(),this._menu.classList.remove(ke),this._element.classList.remove(ke),this._element.setAttribute("aria-expanded","false"),X.removeDataAttribute(this._menu,"popper"),B.trigger(this._element,"hidden.bs.dropdown",e))}_getConfig(e){if(e={...this.constructor.Default,...X.getDataAttributes(this._element),...e},h(ve,e,this.constructor.DefaultType),"object"==typeof e.reference&&!l(e.reference)&&"function"!=typeof e.reference.getBoundingClientRect)throw new TypeError(`${ve.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return e}_createPopper(e){if(void 0===i)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;"parent"===this._config.reference?t=e:l(this._config.reference)?t=c(this._config.reference):"object"==typeof this._config.reference&&(t=this._config.reference);const n=this._getPopperConfig(),s=n.modifiers.find((e=>"applyStyles"===e.name&&!1===e.enabled));this._popper=i.createPopper(t,this._menu,n),s&&X.setDataAttribute(this._menu,"popper","static")}_isShown(e=this._element){return e.classList.contains(ke)}_getMenuElement(){return Y.next(this._element,Se)[0]}_getPlacement(){const e=this._element.parentNode;if(e.classList.contains("dropend"))return je;if(e.classList.contains("dropstart"))return Pe;const t="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return e.classList.contains("dropup")?t?De:xe:t?Ie:Ne}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map((e=>Number.parseInt(e,10))):"function"==typeof e?t=>e(t,this._element):e}_getPopperConfig(){const e={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return"static"===this._config.display&&(e.modifiers=[{name:"applyStyles",enabled:!1}]),{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_selectMenuItem({key:e,target:t}){const i=Y.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter(d);i.length&&E(i,t,e===Ae,!i.includes(t)).focus()}static jQueryInterface(e){return this.each((function(){const t=Be.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}static clearMenus(e){if(e&&(2===e.button||"keyup"===e.type&&"Tab"!==e.key))return;const t=Y.find(Le);for(let i=0,n=t.length;it+e)),this._setElementAttributes(qe,"paddingRight",(t=>t+e)),this._setElementAttributes(Re,"marginRight",(t=>t-e))}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(e,t,i){const n=this.getWidth();this._applyManipulationCallback(e,(e=>{if(e!==this._element&&window.innerWidth>e.clientWidth+n)return;this._saveInitialAttribute(e,t);const s=window.getComputedStyle(e)[t];e.style[t]=`${i(Number.parseFloat(s))}px`}))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"paddingRight"),this._resetElementAttributes(qe,"paddingRight"),this._resetElementAttributes(Re,"marginRight")}_saveInitialAttribute(e,t){const i=e.style[t];i&&X.setDataAttribute(e,t,i)}_resetElementAttributes(e,t){this._applyManipulationCallback(e,(e=>{const i=X.getDataAttribute(e,t);void 0===i?e.style.removeProperty(t):(X.removeDataAttribute(e,t),e.style[t]=i)}))}_applyManipulationCallback(e,t){l(e)?t(e):Y.find(e,this._element).forEach(t)}isOverflowing(){return this.getWidth()>0}}const $e={className:"modal-backdrop",isVisible:!0,isAnimated:!1,rootElement:"body",clickCallback:null},ze={className:"string",isVisible:"boolean",isAnimated:"boolean",rootElement:"(element|string)",clickCallback:"(function|null)"},Fe="backdrop",Ue="show",Ve="mousedown.bs.backdrop";class Ke{constructor(e){this._config=this._getConfig(e),this._isAppended=!1,this._element=null}show(e){this._config.isVisible?(this._append(),this._config.isAnimated&&m(this._getElement()),this._getElement().classList.add(Ue),this._emulateAnimation((()=>{y(e)}))):y(e)}hide(e){this._config.isVisible?(this._getElement().classList.remove(Ue),this._emulateAnimation((()=>{this.dispose(),y(e)}))):y(e)}_getElement(){if(!this._element){const e=document.createElement("div");e.className=this._config.className,this._config.isAnimated&&e.classList.add("fade"),this._element=e}return this._element}_getConfig(e){return(e={...$e,..."object"==typeof e?e:{}}).rootElement=c(e.rootElement),h(Fe,e,ze),e}_append(){this._isAppended||(this._config.rootElement.append(this._getElement()),B.on(this._getElement(),Ve,(()=>{y(this._config.clickCallback)})),this._isAppended=!0)}dispose(){this._isAppended&&(B.off(this._element,Ve),this._element.remove(),this._isAppended=!1)}_emulateAnimation(e){w(e,this._getElement(),this._config.isAnimated)}}const Xe={trapElement:null,autofocus:!0},Ye={trapElement:"element",autofocus:"boolean"},Qe=".bs.focustrap",Ge="backward";class Je{constructor(e){this._config=this._getConfig(e),this._isActive=!1,this._lastTabNavDirection=null}activate(){const{trapElement:e,autofocus:t}=this._config;this._isActive||(t&&e.focus(),B.off(document,Qe),B.on(document,"focusin.bs.focustrap",(e=>this._handleFocusin(e))),B.on(document,"keydown.tab.bs.focustrap",(e=>this._handleKeydown(e))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,B.off(document,Qe))}_handleFocusin(e){const{target:t}=e,{trapElement:i}=this._config;if(t===document||t===i||i.contains(t))return;const n=Y.focusableChildren(i);0===n.length?i.focus():this._lastTabNavDirection===Ge?n[n.length-1].focus():n[0].focus()}_handleKeydown(e){"Tab"===e.key&&(this._lastTabNavDirection=e.shiftKey?Ge:"forward")}_getConfig(e){return e={...Xe,..."object"==typeof e?e:{}},h("focustrap",e,Ye),e}}const Ze="modal",et=".bs.modal",tt="Escape",it={backdrop:!0,keyboard:!0,focus:!0},nt={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean"},st="hidden.bs.modal",ot="show.bs.modal",rt="resize.bs.modal",at="click.dismiss.bs.modal",lt="keydown.dismiss.bs.modal",ct="mousedown.dismiss.bs.modal",ht="modal-open",dt="show",ut="modal-static";class ft extends W{constructor(e,t){super(e),this._config=this._getConfig(t),this._dialog=Y.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollBar=new We}static get Default(){return it}static get NAME(){return Ze}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){if(this._isShown||this._isTransitioning)return;B.trigger(this._element,ot,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._isAnimated()&&(this._isTransitioning=!0),this._scrollBar.hide(),document.body.classList.add(ht),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),B.on(this._dialog,ct,(()=>{B.one(this._element,"mouseup.dismiss.bs.modal",(e=>{e.target===this._element&&(this._ignoreBackdropClick=!0)}))})),this._showBackdrop((()=>this._showElement(e))))}hide(){if(!this._isShown||this._isTransitioning)return;if(B.trigger(this._element,"hide.bs.modal").defaultPrevented)return;this._isShown=!1;const e=this._isAnimated();e&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),this._focustrap.deactivate(),this._element.classList.remove(dt),B.off(this._element,at),B.off(this._dialog,ct),this._queueCallback((()=>this._hideModal()),this._element,e)}dispose(){[window,this._dialog].forEach((e=>B.off(e,et))),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ke({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Je({trapElement:this._element})}_getConfig(e){return e={...it,...X.getDataAttributes(this._element),..."object"==typeof e?e:{}},h(Ze,e,nt),e}_showElement(e){const t=this._isAnimated(),i=Y.findOne(".modal-body",this._dialog);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,i&&(i.scrollTop=0),t&&m(this._element),this._element.classList.add(dt);this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,B.trigger(this._element,"shown.bs.modal",{relatedTarget:e})}),this._dialog,t)}_setEscapeEvent(){this._isShown?B.on(this._element,lt,(e=>{this._config.keyboard&&e.key===tt?(e.preventDefault(),this.hide()):this._config.keyboard||e.key!==tt||this._triggerBackdropTransition()})):B.off(this._element,lt)}_setResizeEvent(){this._isShown?B.on(window,rt,(()=>this._adjustDialog())):B.off(window,rt)}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(ht),this._resetAdjustments(),this._scrollBar.reset(),B.trigger(this._element,st)}))}_showBackdrop(e){B.on(this._element,at,(e=>{this._ignoreBackdropClick?this._ignoreBackdropClick=!1:e.target===e.currentTarget&&(!0===this._config.backdrop?this.hide():"static"===this._config.backdrop&&this._triggerBackdropTransition())})),this._backdrop.show(e)}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(B.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const{classList:e,scrollHeight:t,style:i}=this._element,n=t>document.documentElement.clientHeight;!n&&"hidden"===i.overflowY||e.contains(ut)||(n||(i.overflowY="hidden"),e.add(ut),this._queueCallback((()=>{e.remove(ut),n||this._queueCallback((()=>{i.overflowY=""}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const e=this._element.scrollHeight>document.documentElement.clientHeight,t=this._scrollBar.getWidth(),i=t>0;(!i&&e&&!b()||i&&!e&&b())&&(this._element.style.paddingLeft=`${t}px`),(i&&!e&&!b()||!i&&e&&b())&&(this._element.style.paddingRight=`${t}px`)}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(e,t){return this.each((function(){const i=ft.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===i[e])throw new TypeError(`No method named "${e}"`);i[e](t)}}))}}B.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(e){const t=r(this);["A","AREA"].includes(this.tagName)&&e.preventDefault(),B.one(t,ot,(e=>{e.defaultPrevented||B.one(t,st,(()=>{d(this)&&this.focus()}))}));ft.getOrCreateInstance(t).toggle(this)})),$(ft),v(ft);const pt="offcanvas",mt={backdrop:!0,keyboard:!0,scroll:!1},gt={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"},_t="show",bt=".offcanvas.show",vt="hidden.bs.offcanvas";class yt extends W{constructor(e,t){super(e),this._config=this._getConfig(t),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get NAME(){return pt}static get Default(){return mt}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){if(this._isShown)return;if(B.trigger(this._element,"show.bs.offcanvas",{relatedTarget:e}).defaultPrevented)return;this._isShown=!0,this._element.style.visibility="visible",this._backdrop.show(),this._config.scroll||(new We).hide(),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(_t);this._queueCallback((()=>{this._config.scroll||this._focustrap.activate(),B.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:e})}),this._element,!0)}hide(){if(!this._isShown)return;if(B.trigger(this._element,"hide.bs.offcanvas").defaultPrevented)return;this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.remove(_t),this._backdrop.hide();this._queueCallback((()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.scroll||(new We).reset(),B.trigger(this._element,vt)}),this._element,!0)}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_getConfig(e){return e={...mt,...X.getDataAttributes(this._element),..."object"==typeof e?e:{}},h(pt,e,gt),e}_initializeBackDrop(){return new Ke({className:"offcanvas-backdrop",isVisible:this._config.backdrop,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:()=>this.hide()})}_initializeFocusTrap(){return new Je({trapElement:this._element})}_addEventListeners(){B.on(this._element,"keydown.dismiss.bs.offcanvas",(e=>{this._config.keyboard&&"Escape"===e.key&&this.hide()}))}static jQueryInterface(e){return this.each((function(){const t=yt.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError(`No method named "${e}"`);t[e](this)}}))}}B.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(e){const t=r(this);if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),u(this))return;B.one(t,vt,(()=>{d(this)&&this.focus()}));const i=Y.findOne(bt);i&&i!==t&&yt.getInstance(i).hide();yt.getOrCreateInstance(t).toggle(this)})),B.on(window,"load.bs.offcanvas.data-api",(()=>Y.find(bt).forEach((e=>yt.getOrCreateInstance(e).show())))),$(yt),v(yt);const wt=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Et=/^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i,At=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,Tt=(e,t)=>{const i=e.nodeName.toLowerCase();if(t.includes(i))return!wt.has(i)||Boolean(Et.test(e.nodeValue)||At.test(e.nodeValue));const n=t.filter((e=>e instanceof RegExp));for(let e=0,t=n.length;e{Tt(e,a)||i.removeAttribute(e.nodeName)}))}return n.body.innerHTML}const kt="tooltip",Lt=new Set(["sanitize","allowList","sanitizeFn"]),St={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},xt={AUTO:"auto",TOP:"top",RIGHT:b()?"left":"right",BOTTOM:"bottom",LEFT:b()?"right":"left"},Dt={animation:!0,template:'',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:Ot,popperConfig:null},Nt={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},It="fade",jt="show",Pt="show",Mt="out",Ht=".modal",Bt="hide.bs.modal",qt="hover",Rt="focus";class Wt extends W{constructor(e,t){if(void 0===i)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(e),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this._config=this._getConfig(t),this.tip=null,this._setListeners()}static get Default(){return Dt}static get NAME(){return kt}static get Event(){return Nt}static get DefaultType(){return St}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(e){if(this._isEnabled)if(e){const t=this._initializeOnDelegatedTarget(e);t._activeTrigger.click=!t._activeTrigger.click,t._isWithActiveTrigger()?t._enter(null,t):t._leave(null,t)}else{if(this.getTipElement().classList.contains(jt))return void this._leave(null,this);this._enter(null,this)}}dispose(){clearTimeout(this._timeout),B.off(this._element.closest(Ht),Bt,this._hideModalHandler),this.tip&&this.tip.remove(),this._popper&&this._popper.destroy(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this.isWithContent()||!this._isEnabled)return;const e=B.trigger(this._element,this.constructor.Event.SHOW),t=f(this._element),n=null===t?this._element.ownerDocument.documentElement.contains(this._element):t.contains(this._element);if(e.defaultPrevented||!n)return;const s=this.getTipElement(),o=(e=>{do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e})(this.constructor.NAME);s.setAttribute("id",o),this._element.setAttribute("aria-describedby",o),this._config.animation&&s.classList.add(It);const r="function"==typeof this._config.placement?this._config.placement.call(this,s,this._element):this._config.placement,a=this._getAttachment(r);this._addAttachmentClass(a);const{container:l}=this._config;R.set(s,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(l.append(s),B.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=i.createPopper(this._element,s,this._getPopperConfig(a)),s.classList.add(jt);const c=this._resolvePossibleFunction(this._config.customClass);c&&s.classList.add(...c.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach((e=>{B.on(e,"mouseover",p)}));const h=this.tip.classList.contains(It);this._queueCallback((()=>{const e=this._hoverState;this._hoverState=null,B.trigger(this._element,this.constructor.Event.SHOWN),e===Mt&&this._leave(null,this)}),this.tip,h)}hide(){if(!this._popper)return;const e=this.getTipElement();if(B.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented)return;e.classList.remove(jt),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach((e=>B.off(e,"mouseover",p))),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1;const t=this.tip.classList.contains(It);this._queueCallback((()=>{this._isWithActiveTrigger()||(this._hoverState!==Pt&&e.remove(),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),B.trigger(this._element,this.constructor.Event.HIDDEN),this._popper&&(this._popper.destroy(),this._popper=null))}),this.tip,t),this._hoverState=""}update(){null!==this._popper&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;const e=document.createElement("div");e.innerHTML=this._config.template;const t=e.children[0];return this.setContent(t),t.classList.remove(It,jt),this.tip=t,this.tip}setContent(e){this._sanitizeAndSetContent(e,this.getTitle(),".tooltip-inner")}_sanitizeAndSetContent(e,t,i){const n=Y.findOne(i,e);t||!n?this.setElementContent(n,t):n.remove()}setElementContent(e,t){if(null!==e)return l(t)?(t=c(t),void(this._config.html?t.parentNode!==e&&(e.innerHTML="",e.append(t)):e.textContent=t.textContent)):void(this._config.html?(this._config.sanitize&&(t=Ct(t,this._config.allowList,this._config.sanitizeFn)),e.innerHTML=t):e.textContent=t)}getTitle(){const e=this._element.getAttribute("data-bs-original-title")||this._config.title;return this._resolvePossibleFunction(e)}updateAttachment(e){return"right"===e?"end":"left"===e?"start":e}_initializeOnDelegatedTarget(e,t){return t||this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map((e=>Number.parseInt(e,10))):"function"==typeof e?t=>e(t,this._element):e}_resolvePossibleFunction(e){return"function"==typeof e?e.call(this._element):e}_getPopperConfig(e){const t={placement:e,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:e=>this._handlePopperPlacementChange(e)}],onFirstUpdate:e=>{e.options.placement!==e.placement&&this._handlePopperPlacementChange(e)}};return{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_addAttachmentClass(e){this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(e)}`)}_getAttachment(e){return xt[e.toUpperCase()]}_setListeners(){this._config.trigger.split(" ").forEach((e=>{if("click"===e)B.on(this._element,this.constructor.Event.CLICK,this._config.selector,(e=>this.toggle(e)));else if("manual"!==e){const t=e===qt?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,i=e===qt?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;B.on(this._element,t,this._config.selector,(e=>this._enter(e))),B.on(this._element,i,this._config.selector,(e=>this._leave(e)))}})),this._hideModalHandler=()=>{this._element&&this.hide()},B.on(this._element.closest(Ht),Bt,this._hideModalHandler),this._config.selector?this._config={...this._config,trigger:"manual",selector:""}:this._fixTitle()}_fixTitle(){const e=this._element.getAttribute("title"),t=typeof this._element.getAttribute("data-bs-original-title");(e||"string"!==t)&&(this._element.setAttribute("data-bs-original-title",e||""),!e||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",e),this._element.setAttribute("title",""))}_enter(e,t){t=this._initializeOnDelegatedTarget(e,t),e&&(t._activeTrigger["focusin"===e.type?Rt:qt]=!0),t.getTipElement().classList.contains(jt)||t._hoverState===Pt?t._hoverState=Pt:(clearTimeout(t._timeout),t._hoverState=Pt,t._config.delay&&t._config.delay.show?t._timeout=setTimeout((()=>{t._hoverState===Pt&&t.show()}),t._config.delay.show):t.show())}_leave(e,t){t=this._initializeOnDelegatedTarget(e,t),e&&(t._activeTrigger["focusout"===e.type?Rt:qt]=t._element.contains(e.relatedTarget)),t._isWithActiveTrigger()||(clearTimeout(t._timeout),t._hoverState=Mt,t._config.delay&&t._config.delay.hide?t._timeout=setTimeout((()=>{t._hoverState===Mt&&t.hide()}),t._config.delay.hide):t.hide())}_isWithActiveTrigger(){for(const e in this._activeTrigger)if(this._activeTrigger[e])return!0;return!1}_getConfig(e){const t=X.getDataAttributes(this._element);return Object.keys(t).forEach((e=>{Lt.has(e)&&delete t[e]})),(e={...this.constructor.Default,...t,..."object"==typeof e&&e?e:{}}).container=!1===e.container?document.body:c(e.container),"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),h(kt,e,this.constructor.DefaultType),e.sanitize&&(e.template=Ct(e.template,e.allowList,e.sanitizeFn)),e}_getDelegateConfig(){const e={};for(const t in this._config)this.constructor.Default[t]!==this._config[t]&&(e[t]=this._config[t]);return e}_cleanTipClass(){const e=this.getTipElement(),t=new RegExp(`(^|\\s)${this._getBasicClassPrefix()}\\S+`,"g"),i=e.getAttribute("class").match(t);null!==i&&i.length>0&&i.map((e=>e.trim())).forEach((t=>e.classList.remove(t)))}_getBasicClassPrefix(){return"bs-tooltip"}_handlePopperPlacementChange(e){const{state:t}=e;t&&(this.tip=t.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(t.placement)))}static jQueryInterface(e){return this.each((function(){const t=Wt.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}v(Wt);const $t={...Wt.Default,placement:"right",offset:[0,8],trigger:"click",content:"",template:''},zt={...Wt.DefaultType,content:"(string|element|function)"},Ft={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"};class Ut extends Wt{static get Default(){return $t}static get NAME(){return"popover"}static get Event(){return Ft}static get DefaultType(){return zt}isWithContent(){return this.getTitle()||this._getContent()}setContent(e){this._sanitizeAndSetContent(e,this.getTitle(),".popover-header"),this._sanitizeAndSetContent(e,this._getContent(),".popover-body")}_getContent(){return this._resolvePossibleFunction(this._config.content)}_getBasicClassPrefix(){return"bs-popover"}static jQueryInterface(e){return this.each((function(){const t=Ut.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}v(Ut);const Vt="scrollspy",Kt=".bs.scrollspy",Xt={offset:10,method:"auto",target:""},Yt={offset:"number",method:"string",target:"(string|element)"},Qt="dropdown-item",Gt="active",Jt=".nav-link",Zt=".nav-link, .list-group-item, .dropdown-item",ei="position";class ti extends W{constructor(e,t){super(e),this._scrollElement="BODY"===this._element.tagName?window:this._element,this._config=this._getConfig(t),this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,B.on(this._scrollElement,"scroll.bs.scrollspy",(()=>this._process())),this.refresh(),this._process()}static get Default(){return Xt}static get NAME(){return Vt}refresh(){const e=this._scrollElement===this._scrollElement.window?"offset":ei,t="auto"===this._config.method?e:this._config.method,i=t===ei?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight();Y.find(Zt,this._config.target).map((e=>{const n=o(e),s=n?Y.findOne(n):null;if(s){const e=s.getBoundingClientRect();if(e.width||e.height)return[X[t](s).top+i,n]}return null})).filter((e=>e)).sort(((e,t)=>e[0]-t[0])).forEach((e=>{this._offsets.push(e[0]),this._targets.push(e[1])}))}dispose(){B.off(this._scrollElement,Kt),super.dispose()}_getConfig(e){return(e={...Xt,...X.getDataAttributes(this._element),..."object"==typeof e&&e?e:{}}).target=c(e.target)||document.documentElement,h(Vt,e,Yt),e}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){const e=this._getScrollTop()+this._config.offset,t=this._getScrollHeight(),i=this._config.offset+t-this._getOffsetHeight();if(this._scrollHeight!==t&&this.refresh(),e>=i){const e=this._targets[this._targets.length-1];this._activeTarget!==e&&this._activate(e)}else{if(this._activeTarget&&e0)return this._activeTarget=null,void this._clear();for(let t=this._offsets.length;t--;){this._activeTarget!==this._targets[t]&&e>=this._offsets[t]&&(void 0===this._offsets[t+1]||e`${t}[data-bs-target="${e}"],${t}[href="${e}"]`)),i=Y.findOne(t.join(","),this._config.target);i.classList.add(Gt),i.classList.contains(Qt)?Y.findOne(".dropdown-toggle",i.closest(".dropdown")).classList.add(Gt):Y.parents(i,".nav, .list-group").forEach((e=>{Y.prev(e,".nav-link, .list-group-item").forEach((e=>e.classList.add(Gt))),Y.prev(e,".nav-item").forEach((e=>{Y.children(e,Jt).forEach((e=>e.classList.add(Gt)))}))})),B.trigger(this._scrollElement,"activate.bs.scrollspy",{relatedTarget:e})}_clear(){Y.find(Zt,this._config.target).filter((e=>e.classList.contains(Gt))).forEach((e=>e.classList.remove(Gt)))}static jQueryInterface(e){return this.each((function(){const t=ti.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}B.on(window,"load.bs.scrollspy.data-api",(()=>{Y.find('[data-bs-spy="scroll"]').forEach((e=>new ti(e)))})),v(ti);const ii="active",ni="fade",si="show",oi=".active",ri=":scope > li > .active";class ai extends W{static get NAME(){return"tab"}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains(ii))return;let e;const t=r(this._element),i=this._element.closest(".nav, .list-group");if(i){const t="UL"===i.nodeName||"OL"===i.nodeName?ri:oi;e=Y.find(t,i),e=e[e.length-1]}const n=e?B.trigger(e,"hide.bs.tab",{relatedTarget:this._element}):null;if(B.trigger(this._element,"show.bs.tab",{relatedTarget:e}).defaultPrevented||null!==n&&n.defaultPrevented)return;this._activate(this._element,i);const s=()=>{B.trigger(e,"hidden.bs.tab",{relatedTarget:this._element}),B.trigger(this._element,"shown.bs.tab",{relatedTarget:e})};t?this._activate(t,t.parentNode,s):s()}_activate(e,t,i){const n=(!t||"UL"!==t.nodeName&&"OL"!==t.nodeName?Y.children(t,oi):Y.find(ri,t))[0],s=i&&n&&n.classList.contains(ni),o=()=>this._transitionComplete(e,n,i);n&&s?(n.classList.remove(si),this._queueCallback(o,e,!0)):o()}_transitionComplete(e,t,i){if(t){t.classList.remove(ii);const e=Y.findOne(":scope > .dropdown-menu .active",t.parentNode);e&&e.classList.remove(ii),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!1)}e.classList.add(ii),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!0),m(e),e.classList.contains(ni)&&e.classList.add(si);let n=e.parentNode;if(n&&"LI"===n.nodeName&&(n=n.parentNode),n&&n.classList.contains("dropdown-menu")){const t=e.closest(".dropdown");t&&Y.find(".dropdown-toggle",t).forEach((e=>e.classList.add(ii))),e.setAttribute("aria-expanded",!0)}i&&i()}static jQueryInterface(e){return this.each((function(){const t=ai.getOrCreateInstance(this);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}B.on(document,"click.bs.tab.data-api",'[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',(function(e){if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),u(this))return;ai.getOrCreateInstance(this).show()})),v(ai);const li="toast",ci="hide",hi="show",di="showing",ui={animation:"boolean",autohide:"boolean",delay:"number"},fi={animation:!0,autohide:!0,delay:5e3};class pi extends W{constructor(e,t){super(e),this._config=this._getConfig(t),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get DefaultType(){return ui}static get Default(){return fi}static get NAME(){return li}show(){if(B.trigger(this._element,"show.bs.toast").defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");this._element.classList.remove(ci),m(this._element),this._element.classList.add(hi),this._element.classList.add(di),this._queueCallback((()=>{this._element.classList.remove(di),B.trigger(this._element,"shown.bs.toast"),this._maybeScheduleHide()}),this._element,this._config.animation)}hide(){if(!this._element.classList.contains(hi))return;if(B.trigger(this._element,"hide.bs.toast").defaultPrevented)return;this._element.classList.add(di),this._queueCallback((()=>{this._element.classList.add(ci),this._element.classList.remove(di),this._element.classList.remove(hi),B.trigger(this._element,"hidden.bs.toast")}),this._element,this._config.animation)}dispose(){this._clearTimeout(),this._element.classList.contains(hi)&&this._element.classList.remove(hi),super.dispose()}_getConfig(e){return e={...fi,...X.getDataAttributes(this._element),..."object"==typeof e&&e?e:{}},h(li,e,this.constructor.DefaultType),e}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(e,t){switch(e.type){case"mouseover":case"mouseout":this._hasMouseInteraction=t;break;case"focusin":case"focusout":this._hasKeyboardInteraction=t}if(t)return void this._clearTimeout();const i=e.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){B.on(this._element,"mouseover.bs.toast",(e=>this._onInteraction(e,!0))),B.on(this._element,"mouseout.bs.toast",(e=>this._onInteraction(e,!1))),B.on(this._element,"focusin.bs.toast",(e=>this._onInteraction(e,!0))),B.on(this._element,"focusout.bs.toast",(e=>this._onInteraction(e,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(e){return this.each((function(){const t=pi.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e](this)}}))}}return $(pi),v(pi),{Alert:z,Button:U,Carousel:le,Collapse:be,Dropdown:Be,Modal:ft,Offcanvas:yt,Popover:Ut,ScrollSpy:ti,Tab:ai,Toast:pi,Tooltip:Wt}})); \ No newline at end of file +function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).bootstrap=t(e.Popper)}(this,(function(e){"use strict";function t(e){if(e&&e.__esModule)return e;const t=Object.create(null);if(e)for(const i in e)if("default"!==i){const n=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(t,i,n.get?n:{enumerable:!0,get:()=>e[i]})}return t.default=e,Object.freeze(t)}const i=t(e),n="transitionend",s=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let i=e.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),t=i&&"#"!==i?i.trim():null}return t},o=e=>{const t=s(e);return t&&document.querySelector(t)?t:null},r=e=>{const t=s(e);return t?document.querySelector(t):null},a=e=>{e.dispatchEvent(new Event(n))},l=e=>!(!e||"object"!=typeof e)&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType),c=e=>l(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(e):null,h=(e,t,i)=>{Object.keys(i).forEach((n=>{const s=i[n],o=t[n],r=o&&l(o)?"element":null==(a=o)?`${a}`:{}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase();var a;if(!new RegExp(s).test(r))throw new TypeError(`${e.toUpperCase()}: Option "${n}" provided type "${r}" but expected type "${s}".`)}))},d=e=>!(!l(e)||0===e.getClientRects().length)&&"visible"===getComputedStyle(e).getPropertyValue("visibility"),u=e=>!e||e.nodeType!==Node.ELEMENT_NODE||(!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled"))),f=e=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?f(e.parentNode):null},p=()=>{},m=e=>{e.offsetHeight},g=()=>{const{jQuery:e}=window;return e&&!document.body.hasAttribute("data-bs-no-jquery")?e:null},_=[],b=()=>"rtl"===document.documentElement.dir,v=e=>{var t;t=()=>{const t=g();if(t){const i=e.NAME,n=t.fn[i];t.fn[i]=e.jQueryInterface,t.fn[i].Constructor=e,t.fn[i].noConflict=()=>(t.fn[i]=n,e.jQueryInterface)}},"loading"===document.readyState?(_.length||document.addEventListener("DOMContentLoaded",(()=>{_.forEach((e=>e()))})),_.push(t)):t()},y=e=>{"function"==typeof e&&e()},w=(e,t,i=!0)=>{if(!i)return void y(e);const s=(e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:i}=window.getComputedStyle(e);const n=Number.parseFloat(t),s=Number.parseFloat(i);return n||s?(t=t.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(i))):0})(t)+5;let o=!1;const r=({target:i})=>{i===t&&(o=!0,t.removeEventListener(n,r),y(e))};t.addEventListener(n,r),setTimeout((()=>{o||a(t)}),s)},E=(e,t,i,n)=>{let s=e.indexOf(t);if(-1===s)return e[!i&&n?e.length-1:0];const o=e.length;return s+=i?1:-1,n&&(s=(s+o)%o),e[Math.max(0,Math.min(s,o-1))]},A=/[^.]*(?=\..*)\.|.*/,T=/\..*/,O=/::\d+$/,C={};let k=1;const L={mouseenter:"mouseover",mouseleave:"mouseout"},S=/^(mouseenter|mouseleave)/i,x=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function D(e,t){return t&&`${t}::${k++}`||e.uidEvent||k++}function N(e){const t=D(e);return e.uidEvent=t,C[t]=C[t]||{},C[t]}function I(e,t,i=null){const n=Object.keys(e);for(let s=0,o=n.length;sfunction(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};n?n=e(n):i=e(i)}const[o,r,a]=P(t,i,n),l=N(e),c=l[a]||(l[a]={}),h=I(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=D(r,t.replace(A,"")),u=o?function(e,t,i){return function n(s){const o=e.querySelectorAll(t);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(let a=o.length;a--;)if(o[a]===r)return s.delegateTarget=r,n.oneOff&&B.off(e,s.type,t,i),i.apply(r,[s]);return null}}(e,i,n):function(e,t){return function i(n){return n.delegateTarget=e,i.oneOff&&B.off(e,n.type,t),t.apply(e,[n])}}(e,i);u.delegationSelector=o?i:null,u.originalHandler=r,u.oneOff=s,u.uidEvent=d,c[d]=u,e.addEventListener(a,u,o)}function M(e,t,i,n,s){const o=I(t[i],n,s);o&&(e.removeEventListener(i,o,Boolean(s)),delete t[i][o.uidEvent])}function H(e){return e=e.replace(T,""),L[e]||e}const B={on(e,t,i,n){j(e,t,i,n,!1)},one(e,t,i,n){j(e,t,i,n,!0)},off(e,t,i,n){if("string"!=typeof t||!e)return;const[s,o,r]=P(t,i,n),a=r!==t,l=N(e),c=t.startsWith(".");if(void 0!==o){if(!l||!l[r])return;return void M(e,l,r,o,s?i:null)}c&&Object.keys(l).forEach((i=>{!function(e,t,i,n){const s=t[i]||{};Object.keys(s).forEach((o=>{if(o.includes(n)){const n=s[o];M(e,t,i,n.originalHandler,n.delegationSelector)}}))}(e,l,i,t.slice(1))}));const h=l[r]||{};Object.keys(h).forEach((i=>{const n=i.replace(O,"");if(!a||t.includes(n)){const t=h[i];M(e,l,r,t.originalHandler,t.delegationSelector)}}))},trigger(e,t,i){if("string"!=typeof t||!e)return null;const n=g(),s=H(t),o=t!==s,r=x.has(s);let a,l=!0,c=!0,h=!1,d=null;return o&&n&&(a=n.Event(t,i),n(e).trigger(a),l=!a.isPropagationStopped(),c=!a.isImmediatePropagationStopped(),h=a.isDefaultPrevented()),r?(d=document.createEvent("HTMLEvents"),d.initEvent(s,l,!0)):d=new CustomEvent(t,{bubbles:l,cancelable:!0}),void 0!==i&&Object.keys(i).forEach((e=>{Object.defineProperty(d,e,{get:()=>i[e]})})),h&&d.preventDefault(),c&&e.dispatchEvent(d),d.defaultPrevented&&void 0!==a&&a.preventDefault(),d}},q=new Map,R={set(e,t,i){q.has(e)||q.set(e,new Map);const n=q.get(e);n.has(t)||0===n.size?n.set(t,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(e,t)=>q.has(e)&&q.get(e).get(t)||null,remove(e,t){if(!q.has(e))return;const i=q.get(e);i.delete(t),0===i.size&&q.delete(e)}};class ${constructor(e){(e=c(e))&&(this._element=e,R.set(this._element,this.constructor.DATA_KEY,this))}dispose(){R.remove(this._element,this.constructor.DATA_KEY),B.off(this._element,this.constructor.EVENT_KEY),Object.getOwnPropertyNames(this).forEach((e=>{this[e]=null}))}_queueCallback(e,t,i=!0){w(e,t,i)}static getInstance(e){return R.get(c(e),this.DATA_KEY)}static getOrCreateInstance(e,t={}){return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return"5.1.2"}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}}const W=(e,t="hide")=>{const i=`click.dismiss${e.EVENT_KEY}`,n=e.NAME;B.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),u(this))return;const s=r(this)||this.closest(`.${n}`);e.getOrCreateInstance(s)[t]()}))};class z extends ${static get NAME(){return"alert"}close(){if(B.trigger(this._element,"close.bs.alert").defaultPrevented)return;this._element.classList.remove("show");const e=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,e)}_destroyElement(){this._element.remove(),B.trigger(this._element,"closed.bs.alert"),this.dispose()}static jQueryInterface(e){return this.each((function(){const t=z.getOrCreateInstance(this);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError(`No method named "${e}"`);t[e](this)}}))}}W(z,"close"),v(z);const F='[data-bs-toggle="button"]';class U extends ${static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(e){return this.each((function(){const t=U.getOrCreateInstance(this);"toggle"===e&&t[e]()}))}}function V(e){return"true"===e||"false"!==e&&(e===Number(e).toString()?Number(e):""===e||"null"===e?null:e)}function K(e){return e.replace(/[A-Z]/g,(e=>`-${e.toLowerCase()}`))}B.on(document,"click.bs.button.data-api",F,(e=>{e.preventDefault();const t=e.target.closest(F);U.getOrCreateInstance(t).toggle()})),v(U);const X={setDataAttribute(e,t,i){e.setAttribute(`data-bs-${K(t)}`,i)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${K(t)}`)},getDataAttributes(e){if(!e)return{};const t={};return Object.keys(e.dataset).filter((e=>e.startsWith("bs"))).forEach((i=>{let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),t[n]=V(e.dataset[i])})),t},getDataAttribute:(e,t)=>V(e.getAttribute(`data-bs-${K(t)}`)),offset(e){const t=e.getBoundingClientRect();return{top:t.top+window.pageYOffset,left:t.left+window.pageXOffset}},position:e=>({top:e.offsetTop,left:e.offsetLeft})},Y={find:(e,t=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(t,e)),findOne:(e,t=document.documentElement)=>Element.prototype.querySelector.call(t,e),children:(e,t)=>[].concat(...e.children).filter((e=>e.matches(t))),parents(e,t){const i=[];let n=e.parentNode;for(;n&&n.nodeType===Node.ELEMENT_NODE&&3!==n.nodeType;)n.matches(t)&&i.push(n),n=n.parentNode;return i},prev(e,t){let i=e.previousElementSibling;for(;i;){if(i.matches(t))return[i];i=i.previousElementSibling}return[]},next(e,t){let i=e.nextElementSibling;for(;i;){if(i.matches(t))return[i];i=i.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((e=>`${e}:not([tabindex^="-"])`)).join(", ");return this.find(t,e).filter((e=>!u(e)&&d(e)))}},Q="carousel",G={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},J={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},Z="next",ee="prev",te="left",ie="right",ne={ArrowLeft:ie,ArrowRight:te},se="slid.bs.carousel",oe="active",re=".active.carousel-item";class ae extends ${constructor(e,t){super(e),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(t),this._indicatorsElement=Y.findOne(".carousel-indicators",this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return G}static get NAME(){return Q}next(){this._slide(Z)}nextWhenVisible(){!document.hidden&&d(this._element)&&this.next()}prev(){this._slide(ee)}pause(e){e||(this._isPaused=!0),Y.findOne(".carousel-item-next, .carousel-item-prev",this._element)&&(a(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(e){e||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(e){this._activeElement=Y.findOne(re,this._element);const t=this._getItemIndex(this._activeElement);if(e>this._items.length-1||e<0)return;if(this._isSliding)return void B.one(this._element,se,(()=>this.to(e)));if(t===e)return this.pause(),void this.cycle();const i=e>t?Z:ee;this._slide(i,this._items[e])}_getConfig(e){return e={...G,...X.getDataAttributes(this._element),..."object"==typeof e?e:{}},h(Q,e,J),e}_handleSwipe(){const e=Math.abs(this.touchDeltaX);if(e<=40)return;const t=e/this.touchDeltaX;this.touchDeltaX=0,t&&this._slide(t>0?ie:te)}_addEventListeners(){this._config.keyboard&&B.on(this._element,"keydown.bs.carousel",(e=>this._keydown(e))),"hover"===this._config.pause&&(B.on(this._element,"mouseenter.bs.carousel",(e=>this.pause(e))),B.on(this._element,"mouseleave.bs.carousel",(e=>this.cycle(e)))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){const e=e=>this._pointerEvent&&("pen"===e.pointerType||"touch"===e.pointerType),t=t=>{e(t)?this.touchStartX=t.clientX:this._pointerEvent||(this.touchStartX=t.touches[0].clientX)},i=e=>{this.touchDeltaX=e.touches&&e.touches.length>1?0:e.touches[0].clientX-this.touchStartX},n=t=>{e(t)&&(this.touchDeltaX=t.clientX-this.touchStartX),this._handleSwipe(),"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((e=>this.cycle(e)),500+this._config.interval))};Y.find(".carousel-item img",this._element).forEach((e=>{B.on(e,"dragstart.bs.carousel",(e=>e.preventDefault()))})),this._pointerEvent?(B.on(this._element,"pointerdown.bs.carousel",(e=>t(e))),B.on(this._element,"pointerup.bs.carousel",(e=>n(e))),this._element.classList.add("pointer-event")):(B.on(this._element,"touchstart.bs.carousel",(e=>t(e))),B.on(this._element,"touchmove.bs.carousel",(e=>i(e))),B.on(this._element,"touchend.bs.carousel",(e=>n(e))))}_keydown(e){if(/input|textarea/i.test(e.target.tagName))return;const t=ne[e.key];t&&(e.preventDefault(),this._slide(t))}_getItemIndex(e){return this._items=e&&e.parentNode?Y.find(".carousel-item",e.parentNode):[],this._items.indexOf(e)}_getItemByOrder(e,t){const i=e===Z;return E(this._items,t,i,this._config.wrap)}_triggerSlideEvent(e,t){const i=this._getItemIndex(e),n=this._getItemIndex(Y.findOne(re,this._element));return B.trigger(this._element,"slide.bs.carousel",{relatedTarget:e,direction:t,from:n,to:i})}_setActiveIndicatorElement(e){if(this._indicatorsElement){const t=Y.findOne(".active",this._indicatorsElement);t.classList.remove(oe),t.removeAttribute("aria-current");const i=Y.find("[data-bs-target]",this._indicatorsElement);for(let t=0;t{B.trigger(this._element,se,{relatedTarget:o,direction:d,from:s,to:r})};if(this._element.classList.contains("slide")){o.classList.add(h),m(o),n.classList.add(c),o.classList.add(c);const e=()=>{o.classList.remove(c,h),o.classList.add(oe),n.classList.remove(oe,h,c),this._isSliding=!1,setTimeout(u,0)};this._queueCallback(e,n,!0)}else n.classList.remove(oe),o.classList.add(oe),this._isSliding=!1,u();a&&this.cycle()}_directionToOrder(e){return[ie,te].includes(e)?b()?e===te?ee:Z:e===te?Z:ee:e}_orderToDirection(e){return[Z,ee].includes(e)?b()?e===ee?te:ie:e===ee?ie:te:e}static carouselInterface(e,t){const i=ae.getOrCreateInstance(e,t);let{_config:n}=i;"object"==typeof t&&(n={...n,...t});const s="string"==typeof t?t:n.slide;if("number"==typeof t)i.to(t);else if("string"==typeof s){if(void 0===i[s])throw new TypeError(`No method named "${s}"`);i[s]()}else n.interval&&n.ride&&(i.pause(),i.cycle())}static jQueryInterface(e){return this.each((function(){ae.carouselInterface(this,e)}))}static dataApiClickHandler(e){const t=r(this);if(!t||!t.classList.contains("carousel"))return;const i={...X.getDataAttributes(t),...X.getDataAttributes(this)},n=this.getAttribute("data-bs-slide-to");n&&(i.interval=!1),ae.carouselInterface(t,i),n&&ae.getInstance(t).to(n),e.preventDefault()}}B.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",ae.dataApiClickHandler),B.on(window,"load.bs.carousel.data-api",(()=>{const e=Y.find('[data-bs-ride="carousel"]');for(let t=0,i=e.length;te===this._element));null!==n&&s.length&&(this._selector=n,this._triggerArray.push(t))}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return he}static get NAME(){return le}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let e,t=[];if(this._config.parent){const e=Y.find(ge,this._config.parent);t=Y.find(".collapse.show, .collapse.collapsing",this._config.parent).filter((t=>!e.includes(t)))}const i=Y.findOne(this._selector);if(t.length){const n=t.find((e=>i!==e));if(e=n?be.getInstance(n):null,e&&e._isTransitioning)return}if(B.trigger(this._element,"show.bs.collapse").defaultPrevented)return;t.forEach((t=>{i!==t&&be.getOrCreateInstance(t,{toggle:!1}).hide(),e||R.set(t,ce,null)}));const n=this._getDimension();this._element.classList.remove(fe),this._element.classList.add(pe),this._element.style[n]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const s=`scroll${n[0].toUpperCase()+n.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(pe),this._element.classList.add(fe,ue),this._element.style[n]="",B.trigger(this._element,"shown.bs.collapse")}),this._element,!0),this._element.style[n]=`${this._element[s]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(B.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,m(this._element),this._element.classList.add(pe),this._element.classList.remove(fe,ue);const t=this._triggerArray.length;for(let e=0;e{this._isTransitioning=!1,this._element.classList.remove(pe),this._element.classList.add(fe),B.trigger(this._element,"hidden.bs.collapse")}),this._element,!0)}_isShown(e=this._element){return e.classList.contains(ue)}_getConfig(e){return(e={...he,...X.getDataAttributes(this._element),...e}).toggle=Boolean(e.toggle),e.parent=c(e.parent),h(le,e,de),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const e=Y.find(ge,this._config.parent);Y.find(_e,this._config.parent).filter((t=>!e.includes(t))).forEach((e=>{const t=r(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}))}_addAriaAndCollapsedClass(e,t){e.length&&e.forEach((e=>{t?e.classList.remove(me):e.classList.add(me),e.setAttribute("aria-expanded",t)}))}static jQueryInterface(e){return this.each((function(){const t={};"string"==typeof e&&/show|hide/.test(e)&&(t.toggle=!1);const i=be.getOrCreateInstance(this,t);if("string"==typeof e){if(void 0===i[e])throw new TypeError(`No method named "${e}"`);i[e]()}}))}}B.on(document,"click.bs.collapse.data-api",_e,(function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();const t=o(this);Y.find(t).forEach((e=>{be.getOrCreateInstance(e,{toggle:!1}).toggle()}))})),v(be);const ve="dropdown",ye="Escape",we="Space",Ee="ArrowUp",Ae="ArrowDown",Te=new RegExp("ArrowUp|ArrowDown|Escape"),Oe="click.bs.dropdown.data-api",Ce="keydown.bs.dropdown.data-api",ke="show",Le='[data-bs-toggle="dropdown"]',Se=".dropdown-menu",xe=b()?"top-end":"top-start",De=b()?"top-start":"top-end",Ne=b()?"bottom-end":"bottom-start",Ie=b()?"bottom-start":"bottom-end",Pe=b()?"left-start":"right-start",je=b()?"right-start":"left-start",Me={offset:[0,2],boundary:"clippingParents",reference:"toggle",display:"dynamic",popperConfig:null,autoClose:!0},He={offset:"(array|string|function)",boundary:"(string|element)",reference:"(string|element|object)",display:"string",popperConfig:"(null|object|function)",autoClose:"(boolean|string)"};class Be extends ${constructor(e,t){super(e),this._popper=null,this._config=this._getConfig(t),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar()}static get Default(){return Me}static get DefaultType(){return He}static get NAME(){return ve}toggle(){return this._isShown()?this.hide():this.show()}show(){if(u(this._element)||this._isShown(this._menu))return;const e={relatedTarget:this._element};if(B.trigger(this._element,"show.bs.dropdown",e).defaultPrevented)return;const t=Be.getParentFromElement(this._element);this._inNavbar?X.setDataAttribute(this._menu,"popper","none"):this._createPopper(t),"ontouchstart"in document.documentElement&&!t.closest(".navbar-nav")&&[].concat(...document.body.children).forEach((e=>B.on(e,"mouseover",p))),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(ke),this._element.classList.add(ke),B.trigger(this._element,"shown.bs.dropdown",e)}hide(){if(u(this._element)||!this._isShown(this._menu))return;const e={relatedTarget:this._element};this._completeHide(e)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(e){B.trigger(this._element,"hide.bs.dropdown",e).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach((e=>B.off(e,"mouseover",p))),this._popper&&this._popper.destroy(),this._menu.classList.remove(ke),this._element.classList.remove(ke),this._element.setAttribute("aria-expanded","false"),X.removeDataAttribute(this._menu,"popper"),B.trigger(this._element,"hidden.bs.dropdown",e))}_getConfig(e){if(e={...this.constructor.Default,...X.getDataAttributes(this._element),...e},h(ve,e,this.constructor.DefaultType),"object"==typeof e.reference&&!l(e.reference)&&"function"!=typeof e.reference.getBoundingClientRect)throw new TypeError(`${ve.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return e}_createPopper(e){if(void 0===i)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;"parent"===this._config.reference?t=e:l(this._config.reference)?t=c(this._config.reference):"object"==typeof this._config.reference&&(t=this._config.reference);const n=this._getPopperConfig(),s=n.modifiers.find((e=>"applyStyles"===e.name&&!1===e.enabled));this._popper=i.createPopper(t,this._menu,n),s&&X.setDataAttribute(this._menu,"popper","static")}_isShown(e=this._element){return e.classList.contains(ke)}_getMenuElement(){return Y.next(this._element,Se)[0]}_getPlacement(){const e=this._element.parentNode;if(e.classList.contains("dropend"))return Pe;if(e.classList.contains("dropstart"))return je;const t="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return e.classList.contains("dropup")?t?De:xe:t?Ie:Ne}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map((e=>Number.parseInt(e,10))):"function"==typeof e?t=>e(t,this._element):e}_getPopperConfig(){const e={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return"static"===this._config.display&&(e.modifiers=[{name:"applyStyles",enabled:!1}]),{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_selectMenuItem({key:e,target:t}){const i=Y.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter(d);i.length&&E(i,t,e===Ae,!i.includes(t)).focus()}static jQueryInterface(e){return this.each((function(){const t=Be.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}static clearMenus(e){if(e&&(2===e.button||"keyup"===e.type&&"Tab"!==e.key))return;const t=Y.find(Le);for(let i=0,n=t.length;it+e)),this._setElementAttributes(qe,"paddingRight",(t=>t+e)),this._setElementAttributes(Re,"marginRight",(t=>t-e))}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(e,t,i){const n=this.getWidth();this._applyManipulationCallback(e,(e=>{if(e!==this._element&&window.innerWidth>e.clientWidth+n)return;this._saveInitialAttribute(e,t);const s=window.getComputedStyle(e)[t];e.style[t]=`${i(Number.parseFloat(s))}px`}))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,"paddingRight"),this._resetElementAttributes(qe,"paddingRight"),this._resetElementAttributes(Re,"marginRight")}_saveInitialAttribute(e,t){const i=e.style[t];i&&X.setDataAttribute(e,t,i)}_resetElementAttributes(e,t){this._applyManipulationCallback(e,(e=>{const i=X.getDataAttribute(e,t);void 0===i?e.style.removeProperty(t):(X.removeDataAttribute(e,t),e.style[t]=i)}))}_applyManipulationCallback(e,t){l(e)?t(e):Y.find(e,this._element).forEach(t)}isOverflowing(){return this.getWidth()>0}}const We={className:"modal-backdrop",isVisible:!0,isAnimated:!1,rootElement:"body",clickCallback:null},ze={className:"string",isVisible:"boolean",isAnimated:"boolean",rootElement:"(element|string)",clickCallback:"(function|null)"},Fe="backdrop",Ue="show",Ve="mousedown.bs.backdrop";class Ke{constructor(e){this._config=this._getConfig(e),this._isAppended=!1,this._element=null}show(e){this._config.isVisible?(this._append(),this._config.isAnimated&&m(this._getElement()),this._getElement().classList.add(Ue),this._emulateAnimation((()=>{y(e)}))):y(e)}hide(e){this._config.isVisible?(this._getElement().classList.remove(Ue),this._emulateAnimation((()=>{this.dispose(),y(e)}))):y(e)}_getElement(){if(!this._element){const e=document.createElement("div");e.className=this._config.className,this._config.isAnimated&&e.classList.add("fade"),this._element=e}return this._element}_getConfig(e){return(e={...We,..."object"==typeof e?e:{}}).rootElement=c(e.rootElement),h(Fe,e,ze),e}_append(){this._isAppended||(this._config.rootElement.append(this._getElement()),B.on(this._getElement(),Ve,(()=>{y(this._config.clickCallback)})),this._isAppended=!0)}dispose(){this._isAppended&&(B.off(this._element,Ve),this._element.remove(),this._isAppended=!1)}_emulateAnimation(e){w(e,this._getElement(),this._config.isAnimated)}}const Xe={trapElement:null,autofocus:!0},Ye={trapElement:"element",autofocus:"boolean"},Qe=".bs.focustrap",Ge="backward";class Je{constructor(e){this._config=this._getConfig(e),this._isActive=!1,this._lastTabNavDirection=null}activate(){const{trapElement:e,autofocus:t}=this._config;this._isActive||(t&&e.focus(),B.off(document,Qe),B.on(document,"focusin.bs.focustrap",(e=>this._handleFocusin(e))),B.on(document,"keydown.tab.bs.focustrap",(e=>this._handleKeydown(e))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,B.off(document,Qe))}_handleFocusin(e){const{target:t}=e,{trapElement:i}=this._config;if(t===document||t===i||i.contains(t))return;const n=Y.focusableChildren(i);0===n.length?i.focus():this._lastTabNavDirection===Ge?n[n.length-1].focus():n[0].focus()}_handleKeydown(e){"Tab"===e.key&&(this._lastTabNavDirection=e.shiftKey?Ge:"forward")}_getConfig(e){return e={...Xe,..."object"==typeof e?e:{}},h("focustrap",e,Ye),e}}const Ze="modal",et=".bs.modal",tt="Escape",it={backdrop:!0,keyboard:!0,focus:!0},nt={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean"},st="hidden.bs.modal",ot="show.bs.modal",rt="resize.bs.modal",at="click.dismiss.bs.modal",lt="keydown.dismiss.bs.modal",ct="mousedown.dismiss.bs.modal",ht="modal-open",dt="show",ut="modal-static";class ft extends ${constructor(e,t){super(e),this._config=this._getConfig(t),this._dialog=Y.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollBar=new $e}static get Default(){return it}static get NAME(){return Ze}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){if(this._isShown||this._isTransitioning)return;B.trigger(this._element,ot,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._isAnimated()&&(this._isTransitioning=!0),this._scrollBar.hide(),document.body.classList.add(ht),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),B.on(this._dialog,ct,(()=>{B.one(this._element,"mouseup.dismiss.bs.modal",(e=>{e.target===this._element&&(this._ignoreBackdropClick=!0)}))})),this._showBackdrop((()=>this._showElement(e))))}hide(){if(!this._isShown||this._isTransitioning)return;if(B.trigger(this._element,"hide.bs.modal").defaultPrevented)return;this._isShown=!1;const e=this._isAnimated();e&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),this._focustrap.deactivate(),this._element.classList.remove(dt),B.off(this._element,at),B.off(this._dialog,ct),this._queueCallback((()=>this._hideModal()),this._element,e)}dispose(){[window,this._dialog].forEach((e=>B.off(e,et))),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ke({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Je({trapElement:this._element})}_getConfig(e){return e={...it,...X.getDataAttributes(this._element),..."object"==typeof e?e:{}},h(Ze,e,nt),e}_showElement(e){const t=this._isAnimated(),i=Y.findOne(".modal-body",this._dialog);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,i&&(i.scrollTop=0),t&&m(this._element),this._element.classList.add(dt);this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,B.trigger(this._element,"shown.bs.modal",{relatedTarget:e})}),this._dialog,t)}_setEscapeEvent(){this._isShown?B.on(this._element,lt,(e=>{this._config.keyboard&&e.key===tt?(e.preventDefault(),this.hide()):this._config.keyboard||e.key!==tt||this._triggerBackdropTransition()})):B.off(this._element,lt)}_setResizeEvent(){this._isShown?B.on(window,rt,(()=>this._adjustDialog())):B.off(window,rt)}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(ht),this._resetAdjustments(),this._scrollBar.reset(),B.trigger(this._element,st)}))}_showBackdrop(e){B.on(this._element,at,(e=>{this._ignoreBackdropClick?this._ignoreBackdropClick=!1:e.target===e.currentTarget&&(!0===this._config.backdrop?this.hide():"static"===this._config.backdrop&&this._triggerBackdropTransition())})),this._backdrop.show(e)}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(B.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const{classList:e,scrollHeight:t,style:i}=this._element,n=t>document.documentElement.clientHeight;!n&&"hidden"===i.overflowY||e.contains(ut)||(n||(i.overflowY="hidden"),e.add(ut),this._queueCallback((()=>{e.remove(ut),n||this._queueCallback((()=>{i.overflowY=""}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const e=this._element.scrollHeight>document.documentElement.clientHeight,t=this._scrollBar.getWidth(),i=t>0;(!i&&e&&!b()||i&&!e&&b())&&(this._element.style.paddingLeft=`${t}px`),(i&&!e&&!b()||!i&&e&&b())&&(this._element.style.paddingRight=`${t}px`)}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(e,t){return this.each((function(){const i=ft.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===i[e])throw new TypeError(`No method named "${e}"`);i[e](t)}}))}}B.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(e){const t=r(this);["A","AREA"].includes(this.tagName)&&e.preventDefault(),B.one(t,ot,(e=>{e.defaultPrevented||B.one(t,st,(()=>{d(this)&&this.focus()}))}));const i=Y.findOne(".modal.show");i&&ft.getInstance(i).hide();ft.getOrCreateInstance(t).toggle(this)})),W(ft),v(ft);const pt="offcanvas",mt={backdrop:!0,keyboard:!0,scroll:!1},gt={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"},_t="show",bt=".offcanvas.show",vt="hidden.bs.offcanvas";class yt extends ${constructor(e,t){super(e),this._config=this._getConfig(t),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get NAME(){return pt}static get Default(){return mt}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){if(this._isShown)return;if(B.trigger(this._element,"show.bs.offcanvas",{relatedTarget:e}).defaultPrevented)return;this._isShown=!0,this._element.style.visibility="visible",this._backdrop.show(),this._config.scroll||(new $e).hide(),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(_t);this._queueCallback((()=>{this._config.scroll||this._focustrap.activate(),B.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:e})}),this._element,!0)}hide(){if(!this._isShown)return;if(B.trigger(this._element,"hide.bs.offcanvas").defaultPrevented)return;this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.remove(_t),this._backdrop.hide();this._queueCallback((()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.scroll||(new $e).reset(),B.trigger(this._element,vt)}),this._element,!0)}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_getConfig(e){return e={...mt,...X.getDataAttributes(this._element),..."object"==typeof e?e:{}},h(pt,e,gt),e}_initializeBackDrop(){return new Ke({className:"offcanvas-backdrop",isVisible:this._config.backdrop,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:()=>this.hide()})}_initializeFocusTrap(){return new Je({trapElement:this._element})}_addEventListeners(){B.on(this._element,"keydown.dismiss.bs.offcanvas",(e=>{this._config.keyboard&&"Escape"===e.key&&this.hide()}))}static jQueryInterface(e){return this.each((function(){const t=yt.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError(`No method named "${e}"`);t[e](this)}}))}}B.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(e){const t=r(this);if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),u(this))return;B.one(t,vt,(()=>{d(this)&&this.focus()}));const i=Y.findOne(bt);i&&i!==t&&yt.getInstance(i).hide();yt.getOrCreateInstance(t).toggle(this)})),B.on(window,"load.bs.offcanvas.data-api",(()=>Y.find(bt).forEach((e=>yt.getOrCreateInstance(e).show())))),W(yt),v(yt);const wt=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Et=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i,At=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,Tt=(e,t)=>{const i=e.nodeName.toLowerCase();if(t.includes(i))return!wt.has(i)||Boolean(Et.test(e.nodeValue)||At.test(e.nodeValue));const n=t.filter((e=>e instanceof RegExp));for(let e=0,t=n.length;e{Tt(e,r)||i.removeAttribute(e.nodeName)}))}return n.body.innerHTML}const kt="tooltip",Lt=new Set(["sanitize","allowList","sanitizeFn"]),St={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},xt={AUTO:"auto",TOP:"top",RIGHT:b()?"left":"right",BOTTOM:"bottom",LEFT:b()?"right":"left"},Dt={animation:!0,template:'',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:Ot,popperConfig:null},Nt={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},It="fade",Pt="show",jt="show",Mt="out",Ht=".tooltip-inner",Bt=".modal",qt="hide.bs.modal",Rt="hover",$t="focus";class Wt extends ${constructor(e,t){if(void 0===i)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(e),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this._config=this._getConfig(t),this.tip=null,this._setListeners()}static get Default(){return Dt}static get NAME(){return kt}static get Event(){return Nt}static get DefaultType(){return St}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(e){if(this._isEnabled)if(e){const t=this._initializeOnDelegatedTarget(e);t._activeTrigger.click=!t._activeTrigger.click,t._isWithActiveTrigger()?t._enter(null,t):t._leave(null,t)}else{if(this.getTipElement().classList.contains(Pt))return void this._leave(null,this);this._enter(null,this)}}dispose(){clearTimeout(this._timeout),B.off(this._element.closest(Bt),qt,this._hideModalHandler),this.tip&&this.tip.remove(),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this.isWithContent()||!this._isEnabled)return;const e=B.trigger(this._element,this.constructor.Event.SHOW),t=f(this._element),n=null===t?this._element.ownerDocument.documentElement.contains(this._element):t.contains(this._element);if(e.defaultPrevented||!n)return;"tooltip"===this.constructor.NAME&&this.tip&&this.getTitle()!==this.tip.querySelector(Ht).innerHTML&&(this._disposePopper(),this.tip.remove(),this.tip=null);const s=this.getTipElement(),o=(e=>{do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e})(this.constructor.NAME);s.setAttribute("id",o),this._element.setAttribute("aria-describedby",o),this._config.animation&&s.classList.add(It);const r="function"==typeof this._config.placement?this._config.placement.call(this,s,this._element):this._config.placement,a=this._getAttachment(r);this._addAttachmentClass(a);const{container:l}=this._config;R.set(s,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(l.append(s),B.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=i.createPopper(this._element,s,this._getPopperConfig(a)),s.classList.add(Pt);const c=this._resolvePossibleFunction(this._config.customClass);c&&s.classList.add(...c.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach((e=>{B.on(e,"mouseover",p)}));const h=this.tip.classList.contains(It);this._queueCallback((()=>{const e=this._hoverState;this._hoverState=null,B.trigger(this._element,this.constructor.Event.SHOWN),e===Mt&&this._leave(null,this)}),this.tip,h)}hide(){if(!this._popper)return;const e=this.getTipElement();if(B.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented)return;e.classList.remove(Pt),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach((e=>B.off(e,"mouseover",p))),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1;const t=this.tip.classList.contains(It);this._queueCallback((()=>{this._isWithActiveTrigger()||(this._hoverState!==jt&&e.remove(),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),B.trigger(this._element,this.constructor.Event.HIDDEN),this._disposePopper())}),this.tip,t),this._hoverState=""}update(){null!==this._popper&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;const e=document.createElement("div");e.innerHTML=this._config.template;const t=e.children[0];return this.setContent(t),t.classList.remove(It,Pt),this.tip=t,this.tip}setContent(e){this._sanitizeAndSetContent(e,this.getTitle(),Ht)}_sanitizeAndSetContent(e,t,i){const n=Y.findOne(i,e);t||!n?this.setElementContent(n,t):n.remove()}setElementContent(e,t){if(null!==e)return l(t)?(t=c(t),void(this._config.html?t.parentNode!==e&&(e.innerHTML="",e.append(t)):e.textContent=t.textContent)):void(this._config.html?(this._config.sanitize&&(t=Ct(t,this._config.allowList,this._config.sanitizeFn)),e.innerHTML=t):e.textContent=t)}getTitle(){const e=this._element.getAttribute("data-bs-original-title")||this._config.title;return this._resolvePossibleFunction(e)}updateAttachment(e){return"right"===e?"end":"left"===e?"start":e}_initializeOnDelegatedTarget(e,t){return t||this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map((e=>Number.parseInt(e,10))):"function"==typeof e?t=>e(t,this._element):e}_resolvePossibleFunction(e){return"function"==typeof e?e.call(this._element):e}_getPopperConfig(e){const t={placement:e,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:e=>this._handlePopperPlacementChange(e)}],onFirstUpdate:e=>{e.options.placement!==e.placement&&this._handlePopperPlacementChange(e)}};return{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_addAttachmentClass(e){this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(e)}`)}_getAttachment(e){return xt[e.toUpperCase()]}_setListeners(){this._config.trigger.split(" ").forEach((e=>{if("click"===e)B.on(this._element,this.constructor.Event.CLICK,this._config.selector,(e=>this.toggle(e)));else if("manual"!==e){const t=e===Rt?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,i=e===Rt?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;B.on(this._element,t,this._config.selector,(e=>this._enter(e))),B.on(this._element,i,this._config.selector,(e=>this._leave(e)))}})),this._hideModalHandler=()=>{this._element&&this.hide()},B.on(this._element.closest(Bt),qt,this._hideModalHandler),this._config.selector?this._config={...this._config,trigger:"manual",selector:""}:this._fixTitle()}_fixTitle(){const e=this._element.getAttribute("title"),t=typeof this._element.getAttribute("data-bs-original-title");(e||"string"!==t)&&(this._element.setAttribute("data-bs-original-title",e||""),!e||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",e),this._element.setAttribute("title",""))}_enter(e,t){t=this._initializeOnDelegatedTarget(e,t),e&&(t._activeTrigger["focusin"===e.type?$t:Rt]=!0),t.getTipElement().classList.contains(Pt)||t._hoverState===jt?t._hoverState=jt:(clearTimeout(t._timeout),t._hoverState=jt,t._config.delay&&t._config.delay.show?t._timeout=setTimeout((()=>{t._hoverState===jt&&t.show()}),t._config.delay.show):t.show())}_leave(e,t){t=this._initializeOnDelegatedTarget(e,t),e&&(t._activeTrigger["focusout"===e.type?$t:Rt]=t._element.contains(e.relatedTarget)),t._isWithActiveTrigger()||(clearTimeout(t._timeout),t._hoverState=Mt,t._config.delay&&t._config.delay.hide?t._timeout=setTimeout((()=>{t._hoverState===Mt&&t.hide()}),t._config.delay.hide):t.hide())}_isWithActiveTrigger(){for(const e in this._activeTrigger)if(this._activeTrigger[e])return!0;return!1}_getConfig(e){const t=X.getDataAttributes(this._element);return Object.keys(t).forEach((e=>{Lt.has(e)&&delete t[e]})),(e={...this.constructor.Default,...t,..."object"==typeof e&&e?e:{}}).container=!1===e.container?document.body:c(e.container),"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),h(kt,e,this.constructor.DefaultType),e.sanitize&&(e.template=Ct(e.template,e.allowList,e.sanitizeFn)),e}_getDelegateConfig(){const e={};for(const t in this._config)this.constructor.Default[t]!==this._config[t]&&(e[t]=this._config[t]);return e}_cleanTipClass(){const e=this.getTipElement(),t=new RegExp(`(^|\\s)${this._getBasicClassPrefix()}\\S+`,"g"),i=e.getAttribute("class").match(t);null!==i&&i.length>0&&i.map((e=>e.trim())).forEach((t=>e.classList.remove(t)))}_getBasicClassPrefix(){return"bs-tooltip"}_handlePopperPlacementChange(e){const{state:t}=e;t&&(this.tip=t.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(t.placement)))}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null)}static jQueryInterface(e){return this.each((function(){const t=Wt.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}v(Wt);const zt={...Wt.Default,placement:"right",offset:[0,8],trigger:"click",content:"",template:''},Ft={...Wt.DefaultType,content:"(string|element|function)"},Ut={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"};class Vt extends Wt{static get Default(){return zt}static get NAME(){return"popover"}static get Event(){return Ut}static get DefaultType(){return Ft}isWithContent(){return this.getTitle()||this._getContent()}setContent(e){this._sanitizeAndSetContent(e,this.getTitle(),".popover-header"),this._sanitizeAndSetContent(e,this._getContent(),".popover-body")}_getContent(){return this._resolvePossibleFunction(this._config.content)}_getBasicClassPrefix(){return"bs-popover"}static jQueryInterface(e){return this.each((function(){const t=Vt.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}v(Vt);const Kt="scrollspy",Xt=".bs.scrollspy",Yt={offset:10,method:"auto",target:""},Qt={offset:"number",method:"string",target:"(string|element)"},Gt="dropdown-item",Jt="active",Zt=".nav-link",ei=".nav-link, .list-group-item, .dropdown-item",ti="position";class ii extends ${constructor(e,t){super(e),this._scrollElement="BODY"===this._element.tagName?window:this._element,this._config=this._getConfig(t),this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,B.on(this._scrollElement,"scroll.bs.scrollspy",(()=>this._process())),this.refresh(),this._process()}static get Default(){return Yt}static get NAME(){return Kt}refresh(){const e=this._scrollElement===this._scrollElement.window?"offset":ti,t="auto"===this._config.method?e:this._config.method,i=t===ti?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight();Y.find(ei,this._config.target).map((e=>{const n=o(e),s=n?Y.findOne(n):null;if(s){const e=s.getBoundingClientRect();if(e.width||e.height)return[X[t](s).top+i,n]}return null})).filter((e=>e)).sort(((e,t)=>e[0]-t[0])).forEach((e=>{this._offsets.push(e[0]),this._targets.push(e[1])}))}dispose(){B.off(this._scrollElement,Xt),super.dispose()}_getConfig(e){return(e={...Yt,...X.getDataAttributes(this._element),..."object"==typeof e&&e?e:{}}).target=c(e.target)||document.documentElement,h(Kt,e,Qt),e}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){const e=this._getScrollTop()+this._config.offset,t=this._getScrollHeight(),i=this._config.offset+t-this._getOffsetHeight();if(this._scrollHeight!==t&&this.refresh(),e>=i){const e=this._targets[this._targets.length-1];this._activeTarget!==e&&this._activate(e)}else{if(this._activeTarget&&e0)return this._activeTarget=null,void this._clear();for(let t=this._offsets.length;t--;){this._activeTarget!==this._targets[t]&&e>=this._offsets[t]&&(void 0===this._offsets[t+1]||e`${t}[data-bs-target="${e}"],${t}[href="${e}"]`)),i=Y.findOne(t.join(","),this._config.target);i.classList.add(Jt),i.classList.contains(Gt)?Y.findOne(".dropdown-toggle",i.closest(".dropdown")).classList.add(Jt):Y.parents(i,".nav, .list-group").forEach((e=>{Y.prev(e,".nav-link, .list-group-item").forEach((e=>e.classList.add(Jt))),Y.prev(e,".nav-item").forEach((e=>{Y.children(e,Zt).forEach((e=>e.classList.add(Jt)))}))})),B.trigger(this._scrollElement,"activate.bs.scrollspy",{relatedTarget:e})}_clear(){Y.find(ei,this._config.target).filter((e=>e.classList.contains(Jt))).forEach((e=>e.classList.remove(Jt)))}static jQueryInterface(e){return this.each((function(){const t=ii.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}B.on(window,"load.bs.scrollspy.data-api",(()=>{Y.find('[data-bs-spy="scroll"]').forEach((e=>new ii(e)))})),v(ii);const ni="active",si="fade",oi="show",ri=".active",ai=":scope > li > .active";class li extends ${static get NAME(){return"tab"}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains(ni))return;let e;const t=r(this._element),i=this._element.closest(".nav, .list-group");if(i){const t="UL"===i.nodeName||"OL"===i.nodeName?ai:ri;e=Y.find(t,i),e=e[e.length-1]}const n=e?B.trigger(e,"hide.bs.tab",{relatedTarget:this._element}):null;if(B.trigger(this._element,"show.bs.tab",{relatedTarget:e}).defaultPrevented||null!==n&&n.defaultPrevented)return;this._activate(this._element,i);const s=()=>{B.trigger(e,"hidden.bs.tab",{relatedTarget:this._element}),B.trigger(this._element,"shown.bs.tab",{relatedTarget:e})};t?this._activate(t,t.parentNode,s):s()}_activate(e,t,i){const n=(!t||"UL"!==t.nodeName&&"OL"!==t.nodeName?Y.children(t,ri):Y.find(ai,t))[0],s=i&&n&&n.classList.contains(si),o=()=>this._transitionComplete(e,n,i);n&&s?(n.classList.remove(oi),this._queueCallback(o,e,!0)):o()}_transitionComplete(e,t,i){if(t){t.classList.remove(ni);const e=Y.findOne(":scope > .dropdown-menu .active",t.parentNode);e&&e.classList.remove(ni),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!1)}e.classList.add(ni),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!0),m(e),e.classList.contains(si)&&e.classList.add(oi);let n=e.parentNode;if(n&&"LI"===n.nodeName&&(n=n.parentNode),n&&n.classList.contains("dropdown-menu")){const t=e.closest(".dropdown");t&&Y.find(".dropdown-toggle",t).forEach((e=>e.classList.add(ni))),e.setAttribute("aria-expanded",!0)}i&&i()}static jQueryInterface(e){return this.each((function(){const t=li.getOrCreateInstance(this);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}B.on(document,"click.bs.tab.data-api",'[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',(function(e){if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),u(this))return;li.getOrCreateInstance(this).show()})),v(li);const ci="toast",hi="hide",di="show",ui="showing",fi={animation:"boolean",autohide:"boolean",delay:"number"},pi={animation:!0,autohide:!0,delay:5e3};class mi extends ${constructor(e,t){super(e),this._config=this._getConfig(t),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get DefaultType(){return fi}static get Default(){return pi}static get NAME(){return ci}show(){if(B.trigger(this._element,"show.bs.toast").defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");this._element.classList.remove(hi),m(this._element),this._element.classList.add(di),this._element.classList.add(ui),this._queueCallback((()=>{this._element.classList.remove(ui),B.trigger(this._element,"shown.bs.toast"),this._maybeScheduleHide()}),this._element,this._config.animation)}hide(){if(!this._element.classList.contains(di))return;if(B.trigger(this._element,"hide.bs.toast").defaultPrevented)return;this._element.classList.add(ui),this._queueCallback((()=>{this._element.classList.add(hi),this._element.classList.remove(ui),this._element.classList.remove(di),B.trigger(this._element,"hidden.bs.toast")}),this._element,this._config.animation)}dispose(){this._clearTimeout(),this._element.classList.contains(di)&&this._element.classList.remove(di),super.dispose()}_getConfig(e){return e={...pi,...X.getDataAttributes(this._element),..."object"==typeof e&&e?e:{}},h(ci,e,this.constructor.DefaultType),e}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(e,t){switch(e.type){case"mouseover":case"mouseout":this._hasMouseInteraction=t;break;case"focusin":case"focusout":this._hasKeyboardInteraction=t}if(t)return void this._clearTimeout();const i=e.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){B.on(this._element,"mouseover.bs.toast",(e=>this._onInteraction(e,!0))),B.on(this._element,"mouseout.bs.toast",(e=>this._onInteraction(e,!1))),B.on(this._element,"focusin.bs.toast",(e=>this._onInteraction(e,!0))),B.on(this._element,"focusout.bs.toast",(e=>this._onInteraction(e,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(e){return this.each((function(){const t=mi.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e](this)}}))}}W(mi),v(mi);return{Alert:z,Button:U,Carousel:ae,Collapse:be,Dropdown:Be,Modal:ft,Offcanvas:yt,Popover:Vt,ScrollSpy:ii,Tab:li,Toast:mi,Tooltip:Wt}})); \ No newline at end of file diff --git a/docs/sitemap.xml b/docs/sitemap.xml index 22ffbd0a3..431034d82 100644 --- a/docs/sitemap.xml +++ b/docs/sitemap.xml @@ -1,7 +1,7 @@ https://getdatepicker.com -2021-09-15T20:00:31.440Z +2021-10-07T01:10:14.273Z 1.00 @@ -21,6 +21,10 @@ 2021-07-08T04:00:00.000Z 0.80 +https://getdatepicker.com/docs/6/examples\test.html +2021-07-08T04:00:00.000Z +0.80 + https://getdatepicker.com/docs/6/functions.html 2021-07-08T04:00:00.000Z 0.80 diff --git a/package-lock.json b/package-lock.json index 6e673b719..13f921aa6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,27 +9,26 @@ "version": "6.0.0-alpha1.0.13", "license": "MIT", "devDependencies": { - "@popperjs/core": "^2.10.1", - "@rollup/plugin-node-resolve": "^13.0.4", + "@popperjs/core": "^2.10.2", + "@rollup/plugin-node-resolve": "^13.0.5", "@rollup/plugin-typescript": "^8.2.5", - "@types/node": "^16.7.10", - "bootstrap": "^5.1.0", + "@types/node": "^16.10.3", + "bootstrap": "^5.1.2", "browser-sync": "^2.27.5", "chokidar": "^3.5.1", - "clean-css": "^5.1.5", - "concurrently": "^6.2.1", + "clean-css": "^5.2.1", + "concurrently": "^6.3.0", "dropcss": "^1.0.16", "html-minifier-terser": "^5.1.1", "jsdom": "^17.0.0", "multiparty": "^4.2.2", - "prettier": "^2.3.2", - "rollup": "^2.56.3", - "rollup-plugin-delete": "^2.0.0", + "prettier": "^2.4.1", + "rollup": "^2.58.0", "rollup-plugin-postcss": "^4.0.1", - "sass": "^1.39.0", - "terser": "^5.7.2", + "sass": "^1.42.1", + "terser": "^5.9.0", "tslib": "^2.3.1", - "typescript": "~4.3.5" + "typescript": "~4.4.3" }, "funding": { "url": "https://ko-fi.com/eonasdan" @@ -38,133 +37,10 @@ "@popperjs/core": "^2.10.1" } }, - "node_modules/@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", - "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/@popperjs/core": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.1.tgz", - "integrity": "sha512-HnUhk1Sy9IuKrxEMdIRCxpIqPw6BFsbYSEUO9p/hNw5sMld/+3OLMWQP80F8/db9qsv3qUjs7ZR5bS/R+iinXw==", + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz", + "integrity": "sha512-IXf3XA7+XyN7CP9gGh/XB0UxVMlvARGEgGXLubFICsUMGz6Q+DU+i4gGlpOxTjKvXjkJDJC8YdqdKkDj9qZHEQ==", "dev": true, "funding": { "type": "opencollective", @@ -172,9 +48,9 @@ } }, "node_modules/@rollup/plugin-node-resolve": { - "version": "13.0.4", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.4.tgz", - "integrity": "sha512-eYq4TFy40O8hjeDs+sIxEH/jc9lyuI2k9DM557WN6rO5OpnC2qXMBNj4IKH1oHrnAazL49C5p0tgP0/VpqJ+/w==", + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.5.tgz", + "integrity": "sha512-mVaw6uxtvuGx/XCI4qBQXsDZJUfyx5vp39iE0J/7Hd6wDhEbjHr6aES7Nr9yWbuE0BY+oKp6N7Bq6jX5NCGNmQ==", "dev": true, "dependencies": { "@rollup/pluginutils": "^3.1.0", @@ -256,32 +132,10 @@ "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", "dev": true }, - "node_modules/@types/glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", - "dev": true, - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "node_modules/@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", - "dev": true - }, "node_modules/@types/node": { - "version": "16.7.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.7.10.tgz", - "integrity": "sha512-S63Dlv4zIPb8x6MMTgDq5WWRJQe56iBEY0O3SOFA9JrRienkOVDXSXBjjJw6HTNQYSE2JI6GMCR6LVbIMHJVvA==", - "dev": true - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "version": "16.10.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.3.tgz", + "integrity": "sha512-ho3Ruq+fFnBrZhUYI46n/bV2GjwzSkwuT4dTf0GkuNFmnb8nq4ny2z9JEVemFi6bdEJanHLlYfy9c6FN9B9McQ==", "dev": true }, "node_modules/abab": { @@ -382,19 +236,6 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/alphanum-sort": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", @@ -432,15 +273,6 @@ "node": ">= 8" } }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/arraybuffer.slice": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", @@ -544,16 +376,16 @@ "dev": true }, "node_modules/bootstrap": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.0.tgz", - "integrity": "sha512-bs74WNI9BgBo3cEovmdMHikSKoXnDgA6VQjJ7TyTotU6L7d41ZyCEEelPwkYEzsG/Zjv3ie9IE3EMAje0W9Xew==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.2.tgz", + "integrity": "sha512-me838a7TSEkldKyplkx21dqFm16+9NbH/rCj3Myo+h2cByyjckqV4m0OnS8QBsSDEoBv8R2jHqfulGQXpvM8Bw==", "dev": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/bootstrap" }, "peerDependencies": { - "@popperjs/core": "^2.9.3" + "@popperjs/core": "^2.10.2" } }, "node_modules/brace-expansion": { @@ -693,9 +525,9 @@ "dev": true }, "node_modules/buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, "node_modules/builtin-modules": { @@ -807,9 +639,9 @@ } }, "node_modules/clean-css": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.1.5.tgz", - "integrity": "sha512-9dr/cU/LjMpU57PXlSvDkVRh0rPxJBXiBtD0+SgYt8ahTCsXtfKjCkNYgIoTC6mBg8CFr5EKhW3DKCaGMUbUfQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.1.tgz", + "integrity": "sha512-ooQCa1/70oRfVdUUGjKpbHuxgMgm8BsDT5EBqBGvPxMoRoGXf4PNx5mMnkjzJ9Ptx4vvmDdha0QVh86QtYIk1g==", "dev": true, "dependencies": { "source-map": "~0.6.0" @@ -818,15 +650,6 @@ "node": ">= 10.0" } }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -941,15 +764,14 @@ } }, "node_modules/concurrently": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.2.1.tgz", - "integrity": "sha512-emgwhH+ezkuYKSHZQ+AkgEpoUZZlbpPVYCVv7YZx0r+T7fny1H03r2nYRebpi2DudHR4n1Rgbo2YTxKOxVJ4+g==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.3.0.tgz", + "integrity": "sha512-k4k1jQGHHKsfbqzkUszVf29qECBrkvBKkcPJEUDTyVR7tZd1G/JOfnst4g1sYbFvJ4UjHZisj1aWQR8yLKpGPw==", "dev": true, "dependencies": { "chalk": "^4.1.0", "date-fns": "^2.16.1", "lodash": "^4.17.21", - "read-pkg": "^5.2.0", "rxjs": "^6.6.3", "spawn-command": "^0.0.2-1", "supports-color": "^8.1.0", @@ -1364,25 +1186,6 @@ "node": ">=0.10.0" } }, - "node_modules/del": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/del/-/del-5.1.0.tgz", - "integrity": "sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==", - "dev": true, - "dependencies": { - "globby": "^10.0.1", - "graceful-fs": "^4.2.2", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.1", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -1419,18 +1222,6 @@ "node": ">= 0.8.0" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", @@ -1662,15 +1453,6 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -1767,37 +1549,12 @@ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "dev": true }, - "node_modules/fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -1893,12 +1650,6 @@ "universalify": "^0.1.0" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, "node_modules/fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", @@ -1937,26 +1688,6 @@ "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -1969,25 +1700,6 @@ "node": ">= 6" } }, - "node_modules/globby": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", - "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", - "dev": true, - "dependencies": { - "@types/glob": "^7.1.1", - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.0.3", - "glob": "^7.1.3", - "ignore": "^5.1.1", - "merge2": "^1.2.3", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/graceful-fs": { "version": "4.2.6", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", @@ -2033,15 +1745,6 @@ "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", "dev": true }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -2051,12 +1754,6 @@ "he": "bin/he" } }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, "node_modules/html-encoding-sniffer": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", @@ -2266,15 +1963,6 @@ "postcss": "^8.1.0" } }, - "node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/immutable": { "version": "3.8.2", "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", @@ -2308,31 +1996,12 @@ "node": ">=8" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/indexof": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", "dev": true }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -2348,12 +2017,6 @@ "node": ">=8" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -2429,24 +2092,6 @@ "lodash.isfinite": "^3.3.2" } }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", @@ -2474,12 +2119,6 @@ "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", "dev": true }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, "node_modules/jsdom": { "version": "17.0.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-17.0.0.tgz", @@ -2547,12 +2186,6 @@ } } }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, "node_modules/json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", @@ -2602,12 +2235,6 @@ "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", "dev": true }, - "node_modules/lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true - }, "node_modules/loader-utils": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", @@ -2733,15 +2360,6 @@ "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", "dev": true }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/micromatch": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", @@ -2898,18 +2516,6 @@ "integrity": "sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==", "dev": true }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -2961,15 +2567,6 @@ "node": ">= 0.8" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, "node_modules/openurl": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", @@ -3038,18 +2635,6 @@ "node": ">=8" } }, - "node_modules/p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/p-queue": { "version": "6.6.2", "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", @@ -3097,24 +2682,6 @@ "tslib": "^2.0.3" } }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/parse5": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", @@ -3161,30 +2728,12 @@ "node": ">=8" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -3791,9 +3340,9 @@ } }, "node_modules/prettier": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.2.tgz", - "integrity": "sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", + "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", "dev": true, "bin": { "prettier": "bin-prettier.js" @@ -3835,26 +3384,6 @@ "node": ">=0.6" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/random-bytes": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", @@ -3888,21 +3417,6 @@ "node": ">= 0.8" } }, - "node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", @@ -3974,35 +3488,10 @@ "ms": "2.0.0" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/rollup": { - "version": "2.56.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.56.3.tgz", - "integrity": "sha512-Au92NuznFklgQCUcV96iXlxUbHuB1vQMaH76DHl5M11TotjOHwqk9CwcrT78+Tnv4FN9uTBxq6p4EJoYkpyekg==", + "version": "2.58.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.58.0.tgz", + "integrity": "sha512-NOXpusKnaRpbS7ZVSzcEXqxcLDOagN6iFS8p45RkoiMqPHDLwJm758UF05KlMoCRbLBTZsPOIa887gZJ1AiXvw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -4014,18 +3503,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/rollup-plugin-delete": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-delete/-/rollup-plugin-delete-2.0.0.tgz", - "integrity": "sha512-/VpLMtDy+8wwRlDANuYmDa9ss/knGsAgrDhM+tEwB1npHwNu4DYNmDfUL55csse/GHs9Q+SMT/rw9uiaZ3pnzA==", - "dev": true, - "dependencies": { - "del": "^5.1.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/rollup-plugin-postcss": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/rollup-plugin-postcss/-/rollup-plugin-postcss-4.0.1.tgz", @@ -4120,29 +3597,6 @@ "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", "dev": true }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, "node_modules/rx": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", @@ -4180,9 +3634,9 @@ "dev": true }, "node_modules/sass": { - "version": "1.39.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.39.0.tgz", - "integrity": "sha512-F4o+RhJkNOIG0b6QudYU8c78ZADKZjKDk5cyrf8XTKWfrgbtyVVXImFstJrc+1pkQDCggyidIOytq6gS4gCCZg==", + "version": "1.42.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.42.1.tgz", + "integrity": "sha512-/zvGoN8B7dspKc5mC6HlaygyCBRvnyzzgD5khiaCfglWztY99cYoiTUksVx11NlnemrcfH5CEaCpsUKoW0cQqg==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0" @@ -4203,16 +3657,7 @@ "xmlchars": "^2.2.0" }, "engines": { - "node": ">=10" - } - }, - "node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" + "node": ">=10" } }, "node_modules/send": { @@ -4380,15 +3825,6 @@ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", "dev": true }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/socket.io": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.4.0.tgz", @@ -4491,9 +3927,9 @@ } }, "node_modules/source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "version": "0.5.20", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", + "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", "dev": true, "dependencies": { "buffer-from": "^1.0.0", @@ -4506,38 +3942,6 @@ "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=", "dev": true }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz", - "integrity": "sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==", - "dev": true - }, "node_modules/stable": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", @@ -4699,14 +4103,14 @@ "dev": true }, "node_modules/terser": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.2.tgz", - "integrity": "sha512-0Omye+RD4X7X69O0eql3lC4Heh/5iLj3ggxR/B5ketZLOtLiOqukUgjw3q4PDnNQbsrkKr3UMypqStQG3XKRvw==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", + "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", "dev": true, "dependencies": { "commander": "^2.20.0", "source-map": "~0.7.2", - "source-map-support": "~0.5.19" + "source-map-support": "~0.5.20" }, "bin": { "terser": "bin/terser" @@ -4820,19 +4224,10 @@ "node": ">= 0.8.0" } }, - "node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/typescript": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", - "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", + "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -4912,16 +4307,6 @@ "node": ">= 0.4.0" } }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, "node_modules/vendors": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", @@ -5052,12 +4437,6 @@ "node": ">=8" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, "node_modules/ws": { "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", @@ -5234,114 +4613,16 @@ } }, "dependencies": { - "@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.14.5" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", - "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", - "dev": true - }, - "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, "@popperjs/core": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.1.tgz", - "integrity": "sha512-HnUhk1Sy9IuKrxEMdIRCxpIqPw6BFsbYSEUO9p/hNw5sMld/+3OLMWQP80F8/db9qsv3qUjs7ZR5bS/R+iinXw==", + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz", + "integrity": "sha512-IXf3XA7+XyN7CP9gGh/XB0UxVMlvARGEgGXLubFICsUMGz6Q+DU+i4gGlpOxTjKvXjkJDJC8YdqdKkDj9qZHEQ==", "dev": true }, "@rollup/plugin-node-resolve": { - "version": "13.0.4", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.4.tgz", - "integrity": "sha512-eYq4TFy40O8hjeDs+sIxEH/jc9lyuI2k9DM557WN6rO5OpnC2qXMBNj4IKH1oHrnAazL49C5p0tgP0/VpqJ+/w==", + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.5.tgz", + "integrity": "sha512-mVaw6uxtvuGx/XCI4qBQXsDZJUfyx5vp39iE0J/7Hd6wDhEbjHr6aES7Nr9yWbuE0BY+oKp6N7Bq6jX5NCGNmQ==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", @@ -5402,32 +4683,10 @@ "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", "dev": true }, - "@types/glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", - "dev": true, - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", - "dev": true - }, "@types/node": { - "version": "16.7.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.7.10.tgz", - "integrity": "sha512-S63Dlv4zIPb8x6MMTgDq5WWRJQe56iBEY0O3SOFA9JrRienkOVDXSXBjjJw6HTNQYSE2JI6GMCR6LVbIMHJVvA==", - "dev": true - }, - "@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "version": "16.10.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.3.tgz", + "integrity": "sha512-ho3Ruq+fFnBrZhUYI46n/bV2GjwzSkwuT4dTf0GkuNFmnb8nq4ny2z9JEVemFi6bdEJanHLlYfy9c6FN9B9McQ==", "dev": true }, "abab": { @@ -5508,16 +4767,6 @@ } } }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, "alphanum-sort": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", @@ -5546,12 +4795,6 @@ "picomatch": "^2.0.4" } }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, "arraybuffer.slice": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", @@ -5640,9 +4883,9 @@ "dev": true }, "bootstrap": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.0.tgz", - "integrity": "sha512-bs74WNI9BgBo3cEovmdMHikSKoXnDgA6VQjJ7TyTotU6L7d41ZyCEEelPwkYEzsG/Zjv3ie9IE3EMAje0W9Xew==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.2.tgz", + "integrity": "sha512-me838a7TSEkldKyplkx21dqFm16+9NbH/rCj3Myo+h2cByyjckqV4m0OnS8QBsSDEoBv8R2jHqfulGQXpvM8Bw==", "dev": true, "requires": {} }, @@ -5761,9 +5004,9 @@ "dev": true }, "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, "builtin-modules": { @@ -5853,20 +5096,14 @@ } }, "clean-css": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.1.5.tgz", - "integrity": "sha512-9dr/cU/LjMpU57PXlSvDkVRh0rPxJBXiBtD0+SgYt8ahTCsXtfKjCkNYgIoTC6mBg8CFr5EKhW3DKCaGMUbUfQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.1.tgz", + "integrity": "sha512-ooQCa1/70oRfVdUUGjKpbHuxgMgm8BsDT5EBqBGvPxMoRoGXf4PNx5mMnkjzJ9Ptx4vvmDdha0QVh86QtYIk1g==", "dev": true, "requires": { "source-map": "~0.6.0" } }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, "cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -5971,15 +5208,14 @@ } }, "concurrently": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.2.1.tgz", - "integrity": "sha512-emgwhH+ezkuYKSHZQ+AkgEpoUZZlbpPVYCVv7YZx0r+T7fny1H03r2nYRebpi2DudHR4n1Rgbo2YTxKOxVJ4+g==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.3.0.tgz", + "integrity": "sha512-k4k1jQGHHKsfbqzkUszVf29qECBrkvBKkcPJEUDTyVR7tZd1G/JOfnst4g1sYbFvJ4UjHZisj1aWQR8yLKpGPw==", "dev": true, "requires": { "chalk": "^4.1.0", "date-fns": "^2.16.1", "lodash": "^4.17.21", - "read-pkg": "^5.2.0", "rxjs": "^6.6.3", "spawn-command": "^0.0.2-1", "supports-color": "^8.1.0", @@ -6287,22 +5523,6 @@ "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", "dev": true }, - "del": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/del/-/del-5.1.0.tgz", - "integrity": "sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==", - "dev": true, - "requires": { - "globby": "^10.0.1", - "graceful-fs": "^4.2.2", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.1", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "slash": "^3.0.0" - } - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -6327,15 +5547,6 @@ "integrity": "sha1-p2o+0YVb56ASu4rBbLgPPADcKPA=", "dev": true }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, "dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", @@ -6529,15 +5740,6 @@ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -6605,34 +5807,12 @@ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "dev": true }, - "fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -6712,12 +5892,6 @@ "universalify": "^0.1.0" } }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, "fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", @@ -6746,20 +5920,6 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, "glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -6769,22 +5929,6 @@ "is-glob": "^4.0.1" } }, - "globby": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", - "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.0.3", - "glob": "^7.1.3", - "ignore": "^5.1.1", - "merge2": "^1.2.3", - "slash": "^3.0.0" - } - }, "graceful-fs": { "version": "4.2.6", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", @@ -6824,24 +5968,12 @@ "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", "dev": true }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, "html-encoding-sniffer": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", @@ -7011,12 +6143,6 @@ "dev": true, "requires": {} }, - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - }, "immutable": { "version": "3.8.2", "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", @@ -7041,28 +6167,12 @@ "resolve-from": "^5.0.0" } }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, "indexof": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", "dev": true }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -7075,12 +6185,6 @@ "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", "dev": true }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -7141,18 +6245,6 @@ "lodash.isfinite": "^3.3.2" } }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, "is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", @@ -7177,12 +6269,6 @@ "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", "dev": true }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, "jsdom": { "version": "17.0.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-17.0.0.tgz", @@ -7227,12 +6313,6 @@ } } }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, "json5": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", @@ -7273,12 +6353,6 @@ "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", "dev": true }, - "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true - }, "loader-utils": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", @@ -7388,12 +6462,6 @@ "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", "dev": true }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, "micromatch": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", @@ -7519,18 +6587,6 @@ "integrity": "sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==", "dev": true }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -7567,15 +6623,6 @@ "ee-first": "1.1.1" } }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, "openurl": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", @@ -7629,15 +6676,6 @@ "p-limit": "^2.2.0" } }, - "p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, "p-queue": { "version": "6.6.2", "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", @@ -7673,18 +6711,6 @@ "tslib": "^2.0.3" } }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, "parse5": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", @@ -7725,24 +6751,12 @@ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, "picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -8125,9 +7139,9 @@ "dev": true }, "prettier": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.2.tgz", - "integrity": "sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", + "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", "dev": true }, "promise.series": { @@ -8154,12 +7168,6 @@ "integrity": "sha1-HPyyXBCpsrSDBT/zn138kjOQjP4=", "dev": true }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, "random-bytes": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", @@ -8184,18 +7192,6 @@ "unpipe": "1.0.0" } }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - } - }, "relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", @@ -8257,39 +7253,15 @@ } } }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, "rollup": { - "version": "2.56.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.56.3.tgz", - "integrity": "sha512-Au92NuznFklgQCUcV96iXlxUbHuB1vQMaH76DHl5M11TotjOHwqk9CwcrT78+Tnv4FN9uTBxq6p4EJoYkpyekg==", + "version": "2.58.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.58.0.tgz", + "integrity": "sha512-NOXpusKnaRpbS7ZVSzcEXqxcLDOagN6iFS8p45RkoiMqPHDLwJm758UF05KlMoCRbLBTZsPOIa887gZJ1AiXvw==", "dev": true, "requires": { "fsevents": "~2.3.2" } }, - "rollup-plugin-delete": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-delete/-/rollup-plugin-delete-2.0.0.tgz", - "integrity": "sha512-/VpLMtDy+8wwRlDANuYmDa9ss/knGsAgrDhM+tEwB1npHwNu4DYNmDfUL55csse/GHs9Q+SMT/rw9uiaZ3pnzA==", - "dev": true, - "requires": { - "del": "^5.1.0" - } - }, "rollup-plugin-postcss": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/rollup-plugin-postcss/-/rollup-plugin-postcss-4.0.1.tgz", @@ -8364,15 +7336,6 @@ } } }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, "rx": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", @@ -8407,9 +7370,9 @@ "dev": true }, "sass": { - "version": "1.39.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.39.0.tgz", - "integrity": "sha512-F4o+RhJkNOIG0b6QudYU8c78ZADKZjKDk5cyrf8XTKWfrgbtyVVXImFstJrc+1pkQDCggyidIOytq6gS4gCCZg==", + "version": "1.42.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.42.1.tgz", + "integrity": "sha512-/zvGoN8B7dspKc5mC6HlaygyCBRvnyzzgD5khiaCfglWztY99cYoiTUksVx11NlnemrcfH5CEaCpsUKoW0cQqg==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0" @@ -8424,12 +7387,6 @@ "xmlchars": "^2.2.0" } }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, "send": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", @@ -8578,12 +7535,6 @@ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", "dev": true }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, "socket.io": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.4.0.tgz", @@ -8682,9 +7633,9 @@ "peer": true }, "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "version": "0.5.20", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", + "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -8697,38 +7648,6 @@ "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=", "dev": true }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz", - "integrity": "sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==", - "dev": true - }, "stable": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", @@ -8852,14 +7771,14 @@ "dev": true }, "terser": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.2.tgz", - "integrity": "sha512-0Omye+RD4X7X69O0eql3lC4Heh/5iLj3ggxR/B5ketZLOtLiOqukUgjw3q4PDnNQbsrkKr3UMypqStQG3XKRvw==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", + "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", "dev": true, "requires": { "commander": "^2.20.0", "source-map": "~0.7.2", - "source-map-support": "~0.5.19" + "source-map-support": "~0.5.20" }, "dependencies": { "source-map": { @@ -8948,16 +7867,10 @@ "prelude-ls": "~1.1.2" } }, - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true - }, "typescript": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", - "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", + "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", "dev": true }, "ua-parser-js": { @@ -9005,16 +7918,6 @@ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", "dev": true }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, "vendors": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", @@ -9119,12 +8022,6 @@ } } }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, "ws": { "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", diff --git a/package.json b/package.json index e3ed48b89..6d5f58957 100644 --- a/package.json +++ b/package.json @@ -37,26 +37,26 @@ }, "description": "A robust and powerful date/time picker component. For usage, installation and demos see Project Site on GitHub", "devDependencies": { - "@popperjs/core": "^2.10.1", - "@rollup/plugin-node-resolve": "^13.0.4", + "@popperjs/core": "^2.10.2", + "@rollup/plugin-node-resolve": "^13.0.5", "@rollup/plugin-typescript": "^8.2.5", "rollup-plugin-postcss": "^4.0.1", - "@types/node": "^16.7.10", - "bootstrap": "^5.1.0", + "@types/node": "^16.10.3", + "bootstrap": "^5.1.2", "browser-sync": "^2.27.5", "chokidar": "^3.5.1", - "clean-css": "^5.1.5", - "concurrently": "^6.2.1", + "clean-css": "^5.2.1", + "concurrently": "^6.3.0", "dropcss": "^1.0.16", "html-minifier-terser": "^5.1.1", "jsdom": "^17.0.0", "multiparty": "^4.2.2", - "prettier": "^2.3.2", - "rollup": "^2.56.3", - "sass": "^1.39.0", - "terser": "^5.7.2", + "prettier": "^2.4.1", + "rollup": "^2.58.0", + "sass": "^1.42.1", + "terser": "^5.9.0", "tslib": "^2.3.1", - "typescript": "~4.3.5" + "typescript": "~4.4.3" }, "homepage": "https://getdatepicker.com/", "keywords": [ diff --git a/src/docs/partials/change-log.html b/src/docs/partials/change-log.html index 036e1516d..63d72a84b 100644 --- a/src/docs/partials/change-log.html +++ b/src/docs/partials/change-log.html @@ -1,5 +1,21 @@

Version 6

+
+

Version 6-alpha_

+

New

+
    +
  • Cleaned up css a bit. Got rid of the popper arrow and aligned the picker to the start of the element.
  • +
  • BREAKING display.inputFormat now takes a function, not an Intl format. It has also been moved to hooks.inputFormat By default a function will be executed that uses Intl to format the selected date(s) based on the selected components.
  • +
  • Added hooks.inputParse
  • +
+

Bug fixes

+
    +
  • Merged a fix for parsing issue from comparing constructor names. Thanks @faatihi #2408
  • +
  • Fixed doc issue
  • +
  • Fixed input value for real this time. #2387
  • +
  • Fixed keepOpen
  • +
+

Version 6-alpha1.0.13

New

diff --git a/src/docs/partials/examples/index.html b/src/docs/partials/examples/index.html index 28d47e111..9b43ebf7d 100644 --- a/src/docs/partials/examples/index.html +++ b/src/docs/partials/examples/index.html @@ -187,14 +187,7 @@

Simple Setup

diff --git a/src/docs/partials/examples/test.html b/src/docs/partials/examples/test.html new file mode 100644 index 000000000..3912031bf --- /dev/null +++ b/src/docs/partials/examples/test.html @@ -0,0 +1,1903 @@ + +
+

+ Version 6 removes the need for an input field, Bootstrap, jQuery and MomemntJs. +

+

+ If you still need jQuery, check out the jQuery examples. +

+
+
+

Minimum Setup

+ +

+ All you need is an element to atach the picker to. +

+ +
+ +
+
+
+           
+ <span
+   id='icon-only'
+   class='log-event'
+   style='display: inline-block'
+ >
+   <i class='fas fa-calendar fa-9x'></i>
+ </span>
+           
+         
+
+
+
+           
+ new tempusDominus.TempusDominus(document.getElementById('icon-only'));
+           
+         
+
+
+
+ Events will display as you manipulate the picker. +
+
+
+
+ +
+
+
+ + + +
+
+
+ +
+ +
+

Simple Setup

+ +

+ This is the simplest setup you can have with Bootstrap and Font Awesome 5. The picker defaults to FA 5 Solid + icons, however you can overwrite the defaults globally. +

+ +
+ +
+
+
+           
+ <div
+     class='input-group'
+     id='datetimepicker1'
+     data-td-target-input='nearest'
+     data-td-target-toggle='nearest'
+ >
+   <input
+     id='datetimepicker1Input'
+     type='text'
+     class='form-control'
+     data-td-target='#datetimepicker1'
+   />
+   <span
+     class='input-group-text'
+     data-td-target='#datetimepicker1'
+     data-td-toggle='datetimepicker'
+   >
+     <span class='fas fa-calendar'></span>
+   </span>
+ </div>
+           
+         
+
+
+
+           
+ new tempusDominus.TempusDominus(document.getElementById('datetimepicker1'));
+           
+         
+
+
+
+ Events will display as you manipulate the picker. +
+
+
+
+ +
+
+
+ +
+ + + + +
+
+
+
+ +
+ +
+

Using Locales

+ +

+ You can provide localization options to override the tooltips as well as the day/month display. +

+

+ You could also set this globally via tempusDominus.DefaultOptions.localization = { ... } or by + creating a variable e.g. const ru = { today:'Перейти сегодня' ... }; then provide the options as +

+
+         
+ new tempusDominus.TempusDominus(document.getElementById('datetimepicker2'), {
+   localization: ru
+ }
+         
+     
+ +
+ +
+
+
+           
+ <label for='datetimepicker2Input' class='form-label'>Russian locale</label>
+ <div
+   class='input-group log-event'
+   id='datetimepicker2'
+   data-td-target-input='nearest'
+   data-td-target-toggle='nearest'
+ >
+   <input
+     id='datetimepicker2Input'
+     type='text'
+     class='form-control'
+     data-td-target='#datetimepicker2'
+   />
+   <span
+     class='input-group-text'
+     data-td-target='#datetimepicker2'
+     data-td-toggle='datetimepicker'
+   >
+     <span class='fas fa-calendar'></span>
+   </span>
+ </div>
+           
+         
+
+
+
+           
+ new tempusDominus.TempusDominus(document.getElementById('datetimepicker2'), {
+     localization: {
+       today: "Перейти сегодня",
+       clear: 'Очистить выделение',
+       close: 'Закрыть сборщик',
+       selectMonth: 'Выбрать месяц',
+       previousMonth: "Предыдущий месяц",
+       nextMonth: "В следующем месяце",
+       selectYear: 'Выбрать год',
+       previousYear: 'Предыдущий год',
+       nextYear: 'В следующем году',
+       selectDecade: 'Выбрать десятилетие',
+       previousDecade: 'Предыдущее десятилетие',
+       nextDecade: 'Следующее десятилетие',
+       previousCentury: 'Предыдущий век',
+       nextCentury: 'Следующий век',
+       pickHour: "Выберите час",
+       incrementHour: 'Время увеличения',
+       decrementHour: 'Уменьшить час',
+       pickMinute: 'Выбрать минуту',
+       incrementMinute: 'Минута приращения',
+       decrementMinute: 'Уменьшить минуту',
+       pickSecond: 'Выбрать второй',
+       incrementSecond: 'Увеличение секунды',
+       decrementSecond: 'Уменьшение секунды',
+       toggleMeridiem: 'Переключить период',
+       selectTime: 'Выбрать время',
+       selectDate: 'Выбрать дату',
+       dayViewHeaderFormat: 'long',
+       locale: 'ru'
+     }
+ });
+           
+         
+
+
+
+ Events will display as you manipulate the picker. +
+
+
+
+ +
+
+
+ +
+ + + + +
+
+
+
+ +
+ +
+

Time Only

+ +

+ Version 6 no longer uses MomentJs so selecting the what to display is now done via the + display.components. +

+ +
+ +
+
+
+           
+ <div
+     class='input-group'
+     id='datetimepicker3'
+     data-td-target-input='nearest'
+     data-td-target-toggle='nearest'
+ >
+   <input
+     id='datetimepicker3Input'
+     type='text'
+     class='form-control'
+     data-td-target='#datetimepicker3'
+   />
+   <span
+     class='input-group-text'
+     data-td-target='#datetimepicker3'
+     data-td-toggle='datetimepicker'
+   >
+     <span class='fas fa-clock'></span>
+   </span>
+ </div>
+           
+         
+
+
+
+           
+ new tempusDominus.TempusDominus(document.getElementById('datetimepicker3'), {
+   display: {
+     viewMode: 'clock',
+     components: {
+       decades: false,
+       year: false,
+       month: false,
+       date: false,
+       hours: true,
+       minutes: true,
+       seconds: false
+     }
+   }
+ });
+           
+         
+
+
+
+ Events will display as you manipulate the picker. +
+
+
+
+ +
+
+
+ +
+ + + + +
+
+
+
+ +
+ +
+

Date Only

+ +

+ Version 6 no longer uses MomentJs so selecting the what to display is now done via the + display.components. +

+ +
+ +
+
+
+           
+ <div
+     class='input-group'
+     id='datetimepicker4'
+     data-td-target-input='nearest'
+     data-td-target-toggle='nearest'
+ >
+   <input
+     id='datetimepicker4Input'
+     type='text'
+     class='form-control'
+     data-td-target='#datetimepicker4'
+   />
+   <span
+     class='input-group-text'
+     data-td-target='#datetimepicker4'
+     data-td-toggle='datetimepicker'
+   >
+     <span class='fas fa-calendar'></span>
+   </span>
+ </div>
+           
+         
+
+
+
+           
+ new tempusDominus.TempusDominus(document.getElementById('datetimepicker4'), {
+   display: {
+     viewMode: 'clock',
+     components: {
+       decades: true,
+       year: true,
+       month: true,
+       date: true,
+       hours: false,
+       minutes: false,
+       seconds: false,
+     }
+   }
+ });
+           
+         
+
+
+
+ Events will display as you manipulate the picker. +
+
+
+
+ +
+
+
+ +
+ + + + +
+
+
+
+ +
+ +
+

Input Only

+ +

+ An input group and icon are not required for the picker to function, you can also simply use an input field. +

+ +
+ +
+
+
+           
+ <div
+     class='input-group'
+     id='datetimepicker5'
+     data-td-target-input='nearest'
+     data-td-target-toggle='nearest'
+ >
+   <input
+     id='datetimepicker5Input'
+     type='text'
+     class='form-control'
+     data-td-target='#datetimepicker5'
+   />
+   <span
+     class='input-group-text'
+     data-td-target='#datetimepicker5'
+     data-td-toggle='datetimepicker'
+   >
+     <span class='fas fa-calendar'></span>
+   </span>
+ </div>
+           
+         
+
+
+
+           
+ new tempusDominus.TempusDominus(document.getElementById('datetimepicker5'));
+           
+         
+
+
+
+ Events will display as you manipulate the picker. +
+
+
+
+ +
+
+
+ + +
+
+
+ +
+ +
+

Enabled/Disabled Dates

+ +

+ You can provide an array of dates to enable or dates to disable. +

+ +
+ +
+
+
+           
+ <div
+     class='input-group'
+     id='enabledDisabled'
+     data-td-target-input='nearest'
+     data-td-target-toggle='nearest'
+ >
+   <input
+     id='enabledDisabledInput'
+     type='text'
+     class='form-control'
+     data-td-target='#enabledDisabled'
+   />
+   <span
+     class='input-group-text'
+     data-td-target='#enabledDisabled'
+     data-td-toggle='datetimepicker'
+   >
+     <span class='fas fa-calendar'></span>
+   </span>
+ </div>
+           
+         
+
+
+
+           
+ const tomorrow = new Date();
+ tomorrow.setDate(tomorrow.getDate()+1);
+ new tempusDominus.TempusDominus(document.getElementById('enabledDisabled'), {
+   restrictions: {
+     disabledDates: [
+       tomorrow,
+       new tempusDominus.DateTime().manipulate(2, 'date')
+     ]
+   }
+ });
+           
+         
+
+
+
+ Events will display as you manipulate the picker. +
+
+
+
+ +
+
+
+ +
+ + + + +
+
+
+
+ +
+ +
+

Linked pickers

+ +

+ You can use event listeners or the subscribe method to link two pickers together. For example, a hotel stay booking. +

+ +
+ +
+
+
+           
+<div class='row'>
+	<div class='col-sm-6'>
+	  <label for='linkedPickers1Input' class='form-label'>From</label>
+	  <div
+		class='input-group log-event'
+		id='linkedPickers1'
+		data-td-target-input='nearest'
+		data-td-target-toggle='nearest'
+	  >
+		<input
+		  id='linkedPickers1Input'
+		  type='text'
+		  class='form-control'
+		  data-td-target='#linkedPickers1'
+		/>
+		<span
+		  class='input-group-text'
+		  data-td-target='#linkedPickers1'
+		  data-td-toggle='datetimepicker'
+		>
+		   <span class='fas fa-calendar'></span>
+		 </span>
+	  </div>
+	</div>
+	<div class='col-sm-6'>
+	  <label for='linkedPickers2Input' class='form-label'>To</label>
+	  <div
+		class='input-group log-event'
+		id='linkedPickers2'
+		data-td-target-input='nearest'
+		data-td-target-toggle='nearest'
+	  >
+		<input
+		  id='linkedPickers2Input'
+		  type='text'
+		  class='form-control'
+		  data-td-target='#linkedPickers2'
+		/>
+		<span
+		  class='input-group-text'
+		  data-td-target='#linkedPickers2'
+		  data-td-toggle='datetimepicker'
+		>
+		   <span class='fas fa-calendar'></span>
+		 </span>
+	  </div>
+	</div>
+</div>
+           
+         
+
+
+
+           
+const linkedPicker1Element = document.getElementById('linkedPickers1');
+const linked1 = new tempusDominus.TempusDominus(linkedPicker1Element);
+const linked2 = new tempusDominus.TempusDominus(document.getElementById('linkedPickers2'), {
+  useCurrent: false
+});
+
+//using event listeners
+linkedPicker1Element.addEventListener(tempusDominus.Namespace.events.change, (e) => {
+  linked2.updateOptions({
+    restrictions: {
+      minDate: e.detail.date
+    }
+  });
+});
+
+//using subscribe method
+const subscription = linked2.subscribe(tempusDominus.Namespace.events.change, (e) => {
+  linked1.updateOptions({
+    restrictions: {
+      maxDate: e.detail.date
+    }
+  });
+});
+
+// event listener can be unsubscribed to:
+// subscription.unsubscribe();
+           
+         
+
+
+
+ Events will display as you manipulate the picker. +
+
+
+
+ +
+
+
+ +
+ + + + +
+
+
+ +
+ + + + +
+
+
+
+ +
+ +
+

Custom Icons

+ +

+ You can change the icons from the Font Awesome default to another icon + set like Bootstrap's Icon +

+ +
+ +
+
+
+           
+ <div
+     class='input-group'
+     id='customIcons'
+     data-td-target-input='nearest'
+     data-td-target-toggle='nearest'
+ >
+   <input
+     id='customIconsInput'
+     type='text'
+     class='form-control'
+     data-td-target='#customIcons'
+   />
+   <span
+     class='input-group-text'
+     data-td-target='#customIcons'
+     data-td-toggle='datetimepicker'
+   >
+     <span class='bi bi-calendar'></span>
+   </span>
+ </div>
+           
+         
+
+
+
+           
+ new tempusDominus.TempusDominus(document.getElementById('customIcons'), {
+   display: {
+     icons: {
+       time: 'bi bi-clock',
+       date: 'bi bi-calendar',
+       up: 'bi bi-arrow-up',
+       down: 'bi bi-arrow-down',
+       previous: 'bi bi-chevron-left',
+       next: 'bi bi-chevron-right',
+       today: 'bi bi-calendar-check',
+       clear: 'bi bi-trash',
+       close: 'bi bi-x',
+     },
+     buttons: {
+       today: true,
+       clear: true,
+       close: true,
+     },
+   }
+ });
+           
+         
+
+
+
+ Events will display as you manipulate the picker. +
+
+
+
+ +
+
+
+ +
+ + + + +
+
+
+
+ +
+ +
+

View Mode

+ +

+ The view mode options allows you to show a different initial view. For example selecting a date of birth. +

+ +
+ +
+
+
+           
+ <div
+     class='input-group'
+     id='viewMode'
+     data-td-target-input='nearest'
+     data-td-target-toggle='nearest'
+ >
+   <input
+     id='viewModeInput'
+     type='text'
+     class='form-control'
+     data-td-target='#viewMode'
+   />
+   <span
+     class='input-group-text'
+     data-td-target='#viewMode'
+     data-td-toggle='datetimepicker'
+   >
+     <span class='fas fa-calendar'></span>
+   </span>
+ </div>
+           
+         
+
+
+
+           
+ new tempusDominus.TempusDominus(document.getElementById('viewMode'), {
+   display: {
+     viewMode: 'years'
+   }
+ });
+           
+         
+
+
+
+ Events will display as you manipulate the picker. +
+
+
+
+ +
+
+
+ +
+ + + + +
+
+
+
+ +
+
+

Minimum View

+ +

+ You can set the minimum view mode by turning off lower level components. If you only want your user to select + month and year, display.components.date: false. The display.components object also + provides convenience shortcuts. For instance if you don't want any of the time picker components to be available + simple set display.components.clock: false. Do be aware that display.components.clock + must be true (default) in order to display the time components regardless of display.components.hours|minutes|seconds + is true. The same applies for display.components.calendar +

+ +
+ +
+
+
+           
+ <div
+     class='input-group'
+     id='minViewMode'
+     data-td-target-input='nearest'
+     data-td-target-toggle='nearest'
+ >
+   <input
+     id='minViewModeInput'
+     type='text'
+     class='form-control'
+     data-td-target='#minViewMode'
+   />
+   <span
+     class='input-group-text'
+     data-td-target='#minViewMode'
+     data-td-toggle='datetimepicker'
+   >
+     <span class='fas fa-calendar'></span>
+   </span>
+ </div>
+           
+         
+
+
+
+           
+ new tempusDominus.TempusDominus(document.getElementById('minViewMode'), {
+   display: {
+     components: {
+       clock:false,
+       date: false,
+     }
+   }
+ });
+           
+         
+
+
+
+ Events will display as you manipulate the picker. +
+
+
+
+ +
+
+
+ +
+ + + + +
+
+
+
+ +
+ +
+

Disabled Days of the Week

+ +

+ This is the simplest setup you can have with Bootstrap and Font Awesome 5. The picker defaults to FA 5 Solid + icons, however you can overwrite the defaults globally. +

+ +
+ +
+
+
+           
+ <div
+     class='input-group'
+     id='disabledDow'
+     data-td-target-input='nearest'
+     data-td-target-toggle='nearest'
+ >
+   <input
+     id='disabledDowInput'
+     type='text'
+     class='form-control'
+     data-td-target='#disabledDow'
+   />
+   <span
+     class='input-group-text'
+     data-td-target='#disabledDow'
+     data-td-toggle='datetimepicker'
+   >
+     <span class='fas fa-calendar'></span>
+   </span>
+ </div>
+           
+         
+
+
+
+           
+ new tempusDominus.TempusDominus(document.getElementById('disabledDow'), {
+   restrictions: {
+     daysOfWeekDisabled: [0, 6]
+   }
+ });
+           
+         
+
+
+
+ Events will display as you manipulate the picker. +
+
+
+
+ +
+
+
+ +
+ + + + +
+
+
+
+ +
+ + +
+

Inline

+ +

+ You can also use the picker inline +

+ +
+ +
+
+
+           
+ <div
+   class='log-event'
+   id='inlinePicker'
+ >
+ </div>
+           
+         
+
+
+
+           
+ new tempusDominus.TempusDominus(document.getElementById('inlinePicker'), {
+   display: {
+     inline: true
+   }
+ });
+           
+         
+
+
+
+ Events will display as you manipulate the picker. +
+
+
+
+ +
+
+
+ +
+
+
+
+
+ +
+ + +
+

Multiple Dates

+ +

+ The picker allows for multiple dates to be selected. +

+ +
+ +
+
+
+           
+ <div
+     class='input-group'
+     id='multipleDate'
+     data-td-target-input='nearest'
+     data-td-target-toggle='nearest'
+ >
+   <input
+     id='multipleDateInput'
+     type='text'
+     class='form-control'
+     data-td-target='#multipleDate'
+   />
+   <span
+     class='input-group-text'
+     data-td-target='#multipleDate'
+     data-td-toggle='datetimepicker'
+   >
+     <span class='fas fa-calendar'></span>
+   </span>
+ </div>
+           
+         
+
+
+
+           
+ new tempusDominus.TempusDominus(document.getElementById('multipleDatePicker'), {
+   multipleDates: true
+ });
+           
+         
+
+
+
+ Events will display as you manipulate the picker. +
+
+
+
+ +
+
+
+ +
+ + + + +
+
+
+
+ +
+ +
+

Update options

+ +

+ You can provide a new set of options by calling updateOptions([newOptions]). This function also allows you to reset the options back to the default or merge the new options with the default instead of the existing uptions by passing true as the section parameter. +

+ +
+ +
+
+
+          
+<div
+    class='input-group'
+    id='settingOptions'
+    data-td-target-input='nearest'
+    data-td-target-toggle='nearest'
+>
+  <input
+    id='settingOptionsInput'
+    type='text'
+    class='form-control'
+    data-td-target='#settingOptions'
+  />
+  <span
+    class='input-group-text'
+    data-td-target='#settingOptions'
+    data-td-toggle='datetimepicker'
+  >
+    <span class='fas fa-calendar'></span>
+  </span>
+</div>
+          
+        
+
+
+
+          
+const changeOptionsButton = document.getElementById('changeOptions');
+const settingOptionsPicker = new tempusDominus.TempusDominus(document.getElementById('settingOptions'));
+
+let on = false
+changeOptionsButton.addEventListener('click', () => {
+  settingOptionsPicker.updateOptions({
+    restrictions: {
+      daysOfWeekDisabled: on ? [] : [0, 6]
+    }
+  });
+  on = !on;
+  changeOptionsButton.classList.toggle('btn-primary');
+  changeOptionsButton.classList.toggle('btn-secondary');
+});
+          
+        
+
+
+
+ Events will display as you manipulate the picker. +
+
+
+
+ +
+
+
+ +
+ + + + +
+
+
+
+
+ +
+
+
+ +
+ + +
+ + + Examples + 07/08/2021 + 07/08/2021 + How to use Tempus Dominus datetime picker + + datepicker, javascript, open source, tempus dominus, eonasdan + \ No newline at end of file diff --git a/src/docs/partials/options.html b/src/docs/partials/options.html index 40fbe846b..c5e7cf9e5 100644 --- a/src/docs/partials/options.html +++ b/src/docs/partials/options.html @@ -424,25 +424,13 @@

sideBySide Displays the date and time pickers side by side.

- -

inputFormat

-

- Accepts: Defaults:
-

-

inline

- Accepts: object Defaults: undefined
- Takes an object of Intl.DateTimeFormat options. - Used to format selected values before updating the option input fields value. + Accepts: Defaults:boolean
+ Displays the picker in a inline div instead of a popup.

-

keepOpen

@@ -451,8 +439,54 @@

keepOpenhooks +

- +
+
+

inputFormat +

+

+ Accepts: (date: DateTime) => string or undefined Defaults: + undefined
+ Takes a function that turns the selected date(s) into a string. If not provided, Intl formatting will be + used based on configured components. +

+

+ Whenever the picker attempts to set the input value from a selection, it will call this function. An example + that would set the value to an ISO string. Obviously, it's up to you how you want the results to be displayed. +

+
+
+inputFormat:(date) => { return date.toISOString() }
+
+        
+

inputParse +

+

+ Accepts: (value: any) => DateTime or undefined Defaults: + undefined
+ Takes a function that turns the input value into a DateTime object. If not provided, the internal parsing + method will be used. +

+

+ Whenever the input value changes, this function will be called. The most simple example is just to attempt to + parse the string. +

+
+
+inputParse: (value) => { return new tempusDominus.DateTime(value) }
+
+        
+

stepping diff --git a/src/js/conts.ts b/src/js/conts.ts index c29229619..dfbbea155 100644 --- a/src/js/conts.ts +++ b/src/js/conts.ts @@ -48,7 +48,6 @@ const DefaultOptions: Options = { seconds: false, useTwentyfourHour: false, }, - inputFormat: undefined, inline: false, }, stepping: 1, @@ -92,6 +91,10 @@ const DefaultOptions: Options = { multipleDatesSeparator: '; ', promptTimeOnDateChange: false, promptTimeOnDateChangeTransitionDelay: 200, + hooks: { + inputParse: undefined, + inputFormat: undefined, + }, }; const DatePickerModes: { diff --git a/src/js/dates.ts b/src/js/dates.ts index a6209aa20..065187040 100644 --- a/src/js/dates.ts +++ b/src/js/dates.ts @@ -51,9 +51,8 @@ export default class Dates { */ set(value: any, index?: number, from: string = 'date.set') { if (!value) this._setValue(value, index); - const converted = OptionConverter._dateConversion(value, 'input field'); - if (converted !== undefined) this._setValue(converted, index); - else Namespace.errorMessages.failedToParseDate(from, value, true); + const converted = OptionConverter._dateConversion(value, from); + if (converted) this._setValue(converted, index); } /** @@ -146,11 +145,10 @@ export default class Dates { const updateInput = () => { if (!this._context._input) return; - let newValue = - target?.format(this._context._options.display.inputFormat) || ''; + let newValue = this._context._options.hooks.inputFormat(target); if (this._context._options.multipleDates) { newValue = this._dates - .map((d) => d.format(this._context._options.display.inputFormat)) + .map((d) => this._context._options.hooks.inputFormat(d)) .join(this._context._options.multipleDatesSeparator); } if (this._context._input.value != newValue) diff --git a/src/js/display/index.ts b/src/js/display/index.ts index 88c62092a..af2e7974f 100644 --- a/src/js/display/index.ts +++ b/src/js/display/index.ts @@ -231,7 +231,7 @@ export default class Display { this.widget .querySelectorAll( - `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div` + `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div:not(.${Namespace.css.clockContainer})` ) .forEach((e: HTMLElement) => (e.style.display = 'none')); @@ -611,13 +611,14 @@ export default class Display { * @param e MouseEvent */ private _documentClickEvent = (e: MouseEvent) => { + if (this._context._options.display.keepOpen || + this._context._options.debug || + (window as any).debug) return; + if ( this._isVisible && !e.composedPath().includes(this.widget) && // click inside the widget - !e.composedPath()?.includes(this._context._element) && // click on the element - (!this._context._options.display.keepOpen || - !this._context._options.debug || - !(window as any).debug) + !e.composedPath()?.includes(this._context._element) // click on the element ) { this.hide(); } diff --git a/src/js/options.ts b/src/js/options.ts index fa4ce9408..a179a1d7b 100644 --- a/src/js/options.ts +++ b/src/js/options.ts @@ -43,7 +43,6 @@ export default interface Options { }; viewMode: 'clock' | 'calendar' | 'months' | 'years' | 'decades'; sideBySide: boolean; - inputFormat: DateTimeFormatOptions; inline: boolean; keepOpen: boolean; }; @@ -88,12 +87,17 @@ export default interface Options { multipleDatesSeparator: string; promptTimeOnDateChange: boolean; promptTimeOnDateChangeTransitionDelay: number; + hooks: { + inputParse: (value: any) => DateTime; + inputFormat: (date: DateTime) => string; + }; } export class OptionConverter { static _mergeOptions(providedOptions: Options, mergeTo: Options): Options { const newOptions = {} as Options; let path = ''; + const ignoreProperties = ['inputParse', 'inputFormat']; const processKey = (key, value, providedType, defaultType) => { switch (key) { @@ -268,6 +272,7 @@ export class OptionConverter { ); return value; + case 'inputParse': case 'inputFormat': return value; default: @@ -334,7 +339,7 @@ export class OptionConverter { path += `.${key}`; copyTo[key] = processKey(key, value, providedType, defaultType); - if (typeof defaultOptionValue !== 'object' || key === 'inputFormat') { + if (typeof defaultOptionValue !== 'object' || ignoreProperties.includes(key)) { path = path.substring(0, path.lastIndexOf(`.${key}`)); return; } @@ -510,14 +515,18 @@ export class OptionConverter { * @param optionName Provides text to error messages e.g. disabledDates */ static _dateConversion(d: any, optionName: string) { - if (typeof d === typeof '' && optionName !== 'input field') { + if (typeof d === typeof '' && optionName !== 'input') { Namespace.errorMessages.dateString(); } const converted = this._dateTypeCheck(d); if (!converted) { - Namespace.errorMessages.failedToParseDate(optionName, d); + Namespace.errorMessages.failedToParseDate( + optionName, + d, + optionName === 'input' + ); } return converted; } diff --git a/src/js/tempus-dominus.ts b/src/js/tempus-dominus.ts index aa65df7ef..a843c05a3 100644 --- a/src/js/tempus-dominus.ts +++ b/src/js/tempus-dominus.ts @@ -323,21 +323,26 @@ class TempusDominus { } // defaults the input format based on the components enabled - if (config.display.inputFormat === undefined) { + if (config.hooks.inputFormat === undefined) { const components = config.display.components; - config.display.inputFormat = { - year: components.calendar && components.year ? 'numeric' : undefined, - month: components.calendar && components.month ? '2-digit' : undefined, - day: components.calendar && components.date ? '2-digit' : undefined, - hour: - components.clock && components.hours - ? components.useTwentyfourHour - ? '2-digit' - : 'numeric' - : undefined, - minute: components.clock && components.minutes ? '2-digit' : undefined, - second: components.clock && components.seconds ? '2-digit' : undefined, - hour12: !components.useTwentyfourHour, + config.hooks.inputFormat = (date: DateTime) => { + return date.format({ + year: components.calendar && components.year ? 'numeric' : undefined, + month: + components.calendar && components.month ? '2-digit' : undefined, + day: components.calendar && components.date ? '2-digit' : undefined, + hour: + components.clock && components.hours + ? components.useTwentyfourHour + ? '2-digit' + : 'numeric' + : undefined, + minute: + components.clock && components.minutes ? '2-digit' : undefined, + second: + components.clock && components.seconds ? '2-digit' : undefined, + hour12: !components.useTwentyfourHour, + }); }; } @@ -443,20 +448,38 @@ class TempusDominus { * @private */ private _inputChangeEvent = () => { + const setViewDate = () => { + if (this.dates.lastPicked) this._viewDate = this.dates.lastPicked; + }; + const value = this._input.value; if (this._options.multipleDates) { try { const valueSplit = value.split(this._options.multipleDatesSeparator); for (let i = 0; i < valueSplit.length; i++) { - this.dates.set(valueSplit[i], i, 'input'); + if (this._options.hooks.inputParse) { + this.dates.set( + this._options.hooks.inputParse(valueSplit[i]), + i, + 'input' + ); + } else { + this.dates.set(valueSplit[i], i, 'input'); + } } + setViewDate(); } catch { console.warn( 'TD: Something went wrong trying to set the multidate values from the input field.' ); } } else { - this.dates.set(value, 0, 'input'); + if (this._options.hooks.inputParse) { + this.dates.set(this._options.hooks.inputParse(value), 0, 'input'); + } else { + this.dates.set(value, 0, 'input'); + } + setViewDate(); } }; diff --git a/types/options.d.ts b/types/options.d.ts index fcb719893..93bc53976 100644 --- a/types/options.d.ts +++ b/types/options.d.ts @@ -1,4 +1,4 @@ -import { DateTime, DateTimeFormatOptions } from './datetime'; +import { DateTime } from './datetime'; export default interface Options { restrictions: { minDate: DateTime; @@ -47,7 +47,6 @@ export default interface Options { }; viewMode: 'clock' | 'calendar' | 'months' | 'years' | 'decades'; sideBySide: boolean; - inputFormat: DateTimeFormatOptions; inline: boolean; keepOpen: boolean; }; @@ -92,6 +91,10 @@ export default interface Options { multipleDatesSeparator: string; promptTimeOnDateChange: boolean; promptTimeOnDateChangeTransitionDelay: number; + hooks: { + inputParse: (value: any) => DateTime; + inputFormat: (date: DateTime) => string; + }; } export declare class OptionConverter { static _mergeOptions(providedOptions: Options, mergeTo: Options): Options; From ee2d0a26d5f6770c100600e99ebed95850370570 Mon Sep 17 00:00:00 2001 From: Eonasdan Date: Thu, 7 Oct 2021 09:49:35 -0400 Subject: [PATCH 3/8] Update src/js/actions.ts Co-authored-by: Lukas Juhrich --- src/js/actions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/actions.ts b/src/js/actions.ts index befcdf480..eadf3358b 100644 --- a/src/js/actions.ts +++ b/src/js/actions.ts @@ -104,7 +104,7 @@ export default class Actions { day.manipulate(1, Unit.month); } - day.date = +currentTarget.getAttribute('data-day'); + day.date = +currentTarget.dataset.day; let index = 0; if (this._context._options.multipleDates) { index = this._context.dates.pickedIndex(day, Unit.date); From f985c76d5c879757e6eb83b1220a83a9ae6e1cce Mon Sep 17 00:00:00 2001 From: Eonasdan Date: Thu, 7 Oct 2021 09:49:41 -0400 Subject: [PATCH 4/8] Update src/js/actions.ts Co-authored-by: Lukas Juhrich --- src/js/actions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/actions.ts b/src/js/actions.ts index eadf3358b..cde4452df 100644 --- a/src/js/actions.ts +++ b/src/js/actions.ts @@ -152,7 +152,7 @@ export default class Actions { } break; case ActionTypes.selectMinute: - lastPicked.minutes = +currentTarget.getAttribute('data-value'); + lastPicked.minutes = +currentTarget.dataset.value; this._context.dates._setValue( lastPicked, this._context.dates.lastPickedIndex From 37919a2387d7aab8feff8b7df4cfa83dcfd84152 Mon Sep 17 00:00:00 2001 From: Eonasdan Date: Thu, 7 Oct 2021 12:03:40 -0400 Subject: [PATCH 5/8] updated docs, fixed attribute access --- dist/js/tempus-dominus.esm.js | 37 +++++++++++++---------------- dist/js/tempus-dominus.esm.js.map | 2 +- dist/js/tempus-dominus.js | 37 +++++++++++++---------------- dist/js/tempus-dominus.js.map | 2 +- docs/6/change-log.html | 4 +++- docs/6/js/search.json | 6 ++--- docs/6/js/tempus-dominus.esm.js | 37 +++++++++++++---------------- docs/6/js/tempus-dominus.esm.js.map | 2 +- docs/6/js/tempus-dominus.js | 37 +++++++++++++---------------- docs/6/js/tempus-dominus.js.map | 2 +- docs/6/migration.html | 8 +++++-- docs/6/options.html | 2 +- docs/sitemap.xml | 2 +- src/docs/partials/change-log.html | 1 + src/docs/partials/migration.html | 8 +++++-- src/docs/partials/options.html | 4 ++-- src/js/actions.ts | 10 +++++--- 17 files changed, 102 insertions(+), 99 deletions(-) diff --git a/dist/js/tempus-dominus.esm.js b/dist/js/tempus-dominus.esm.js index afe4b6984..22ba67012 100644 --- a/dist/js/tempus-dominus.esm.js +++ b/dist/js/tempus-dominus.esm.js @@ -244,7 +244,7 @@ class DateTime extends Date { * Returns two digit hours */ get secondsFormatted() { - return this.seconds < 10 ? `0${this.seconds}` : `${this.seconds}`; + return this.format({ second: "2-digit" }); } /** * Shortcut to Date.getMinutes() @@ -262,7 +262,7 @@ class DateTime extends Date { * Returns two digit hours */ get minutesFormatted() { - return this.minutes < 10 ? `0${this.minutes}` : `${this.minutes}`; + return this.format({ minute: "2-digit" }); } /** * Shortcut to Date.getHours() @@ -280,18 +280,13 @@ class DateTime extends Date { * Returns two digit hours */ get hoursFormatted() { - return this.hours < 10 ? `0${this.hours}` : `${this.hours}`; + return this.format({ hour: "2-digit" }); } /** * Returns two digit hours but in twelve hour mode e.g. 13 -> 1 */ get twelveHoursFormatted() { - let hour = this.hours; - if (hour > 12) - hour = hour - 12; - if (hour === 0) - hour = 12; - return hour < 10 ? `0${hour}` : `${hour}`; + return this.format({ hour12: true, hour: "2-digit" }); } /** * Get the meridiem of the date. E.g. AM or PM. @@ -976,7 +971,7 @@ class Actions { case ActionTypes.selectMonth: case ActionTypes.selectYear: case ActionTypes.selectDecade: - const value = +currentTarget.getAttribute('data-value'); + const value = +currentTarget.dataset.value; switch (action) { case ActionTypes.selectMonth: this._context._viewDate.month = value; @@ -1009,7 +1004,7 @@ class Actions { if (currentTarget.classList.contains(Namespace.css.new)) { day.manipulate(1, Unit.month); } - day.date = +currentTarget.innerText; + day.date = +currentTarget.dataset.day; let index = 0; if (this._context._options.multipleDates) { index = this._context.dates.pickedIndex(day, Unit.date); @@ -1031,8 +1026,9 @@ class Actions { } break; case ActionTypes.selectHour: - let hour = +currentTarget.getAttribute('data-value'); - if (lastPicked.hours >= 12 && !this._context._options.display.components.useTwentyfourHour) + let hour = +currentTarget.dataset.value; + if (lastPicked.hours >= 12 && + !this._context._options.display.components.useTwentyfourHour) hour += 12; lastPicked.hours = hour; this._context.dates._setValue(lastPicked, this._context.dates.lastPickedIndex); @@ -1047,7 +1043,7 @@ class Actions { } break; case ActionTypes.selectMinute: - lastPicked.minutes = +currentTarget.innerText; + lastPicked.minutes = +currentTarget.dataset.value; this._context.dates._setValue(lastPicked, this._context.dates.lastPickedIndex); if (this._context._options.display.components.useTwentyfourHour && !this._context._options.display.components.seconds && @@ -1272,7 +1268,8 @@ class DateDisplay { containerClone.classList.remove(...containerClone.classList); containerClone.classList.add(...classes); containerClone.setAttribute('data-value', `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`); - containerClone.innerText = `${innerDate.date}`; + containerClone.setAttribute('data-day', `${innerDate.date}`); + containerClone.innerText = innerDate.format({ day: "numeric" }); innerDate.manipulate(1, Unit.date); }); } @@ -1946,7 +1943,7 @@ class YearDisplay { const [previous, switcher, next] = container.parentElement .getElementsByClassName(Namespace.css.calendarHeader)[0] .getElementsByTagName('div'); - switcher.setAttribute(Namespace.css.yearsContainer, `${this._startYear.year}-${this._endYear.year}`); + switcher.setAttribute(Namespace.css.yearsContainer, `${this._startYear.format({ year: 'numeric' })}-${this._endYear.format({ year: 'numeric' })}`); this._context._validation.isValid(this._startYear, Unit.year) ? previous.classList.remove(Namespace.css.disabled) : previous.classList.add(Namespace.css.disabled); @@ -1971,7 +1968,7 @@ class YearDisplay { containerClone.classList.remove(...containerClone.classList); containerClone.classList.add(...classes); containerClone.setAttribute('data-value', `${innerDate.year}`); - containerClone.innerText = `${innerDate.year}`; + containerClone.innerText = innerDate.format({ year: "numeric" }); innerDate.manipulate(1, Unit.year); }); } @@ -2012,7 +2009,7 @@ class DecadeDisplay { const [previous, switcher, next] = container.parentElement .getElementsByClassName(Namespace.css.calendarHeader)[0] .getElementsByTagName('div'); - switcher.setAttribute(Namespace.css.decadesContainer, `${this._startDecade.year}-${this._endDecade.year}`); + switcher.setAttribute(Namespace.css.decadesContainer, `${this._startDecade.format({ year: 'numeric' })}-${this._endDecade.format({ year: 'numeric' })}`); this._context._validation.isValid(this._startDecade, Unit.year) ? previous.classList.remove(Namespace.css.disabled) : previous.classList.add(Namespace.css.disabled); @@ -2033,7 +2030,7 @@ class DecadeDisplay { return; } else { - containerClone.innerText = `${this._startDecade.year - 10}`; + containerClone.innerText = this._startDecade.clone.manipulate(-10, Unit.year).format({ year: 'numeric' }); containerClone.setAttribute('data-value', `${this._startDecade.year}`); return; } @@ -2050,7 +2047,7 @@ class DecadeDisplay { containerClone.classList.remove(...containerClone.classList); containerClone.classList.add(...classes); containerClone.setAttribute('data-value', `${this._startDecade.year}`); - containerClone.innerText = `${this._startDecade.year}`; + containerClone.innerText = `${this._startDecade.format({ year: 'numeric' })}`; this._startDecade.manipulate(10, Unit.year); }); } diff --git a/dist/js/tempus-dominus.esm.js.map b/dist/js/tempus-dominus.esm.js.map index c5bb3e41b..27a9b970b 100644 --- a/dist/js/tempus-dominus.esm.js.map +++ b/dist/js/tempus-dominus.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"tempus-dominus.esm.js","sources":["../../src/js/datetime.ts","../../src/js/errors.ts","../../src/js/namespace.ts","../../src/js/conts.ts","../../src/js/display/collapse.ts","../../src/js/actions.ts","../../src/js/display/calendar/date-display.ts","../../src/js/display/calendar/month-display.ts","../../src/js/options.ts","../../src/js/dates.ts","../../src/js/display/calendar/year-display.ts","../../src/js/display/calendar/decade-display.ts","../../src/js/display/time/time-display.ts","../../src/js/display/time/hour-display.ts","../../src/js/display/time/minute-display.ts","../../src/js/display/time/second-display.ts","../../src/js/display/index.ts","../../src/js/validation.ts","../../src/js/tempus-dominus.ts"],"sourcesContent":["export enum Unit {\n seconds = 'seconds',\n minutes = 'minutes',\n hours = 'hours',\n date = 'date',\n month = 'month',\n year = 'year',\n}\n\nexport interface DateTimeFormatOptions extends Intl.DateTimeFormatOptions {\n timeStyle?: 'short' | 'medium' | 'long';\n dateStyle?: 'short' | 'medium' | 'long' | 'full';\n}\n\n/**\n * For the most part this object behaves exactly the same way\n * as the native Date object with a little extra spice.\n */\nexport class DateTime extends Date {\n /**\n * Used with Intl.DateTimeFormat\n */\n locale = 'default';\n\n /**\n * Chainable way to set the {@link locale}\n * @param value\n */\n setLocale(value: string): this {\n this.locale = value;\n return this;\n }\n\n /**\n * Converts a plain JS date object to a DateTime object.\n * Doing this allows access to format, etc.\n * @param date\n */\n static convert(date: Date): DateTime {\n if (!date) throw `A date is required`;\n return new DateTime(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n );\n }\n\n /**\n * Native date manipulations are not pure functions. This function creates a duplicate of the DateTime object.\n */\n get clone() {\n return new DateTime(\n this.year,\n this.month,\n this.date,\n this.hours,\n this.minutes,\n this.seconds,\n this.getMilliseconds()\n ).setLocale(this.locale);\n }\n\n /**\n * Sets the current date to the start of the {@link unit} provided\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).startOf('month')\n * would return April 1, 2021, 12:00:00.000 AM (midnight)\n * @param unit\n */\n startOf(unit: Unit | 'weekDay'): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n switch (unit) {\n case 'seconds':\n this.setMilliseconds(0);\n break;\n case 'minutes':\n this.setSeconds(0, 0);\n break;\n case 'hours':\n this.setMinutes(0, 0, 0);\n break;\n case 'date':\n this.setHours(0, 0, 0, 0);\n break;\n case 'weekDay':\n this.startOf(Unit.date);\n this.manipulate(0 - this.weekDay, Unit.date);\n break;\n case 'month':\n this.startOf(Unit.date);\n this.setDate(1);\n break;\n case 'year':\n this.startOf(Unit.date);\n this.setMonth(0, 1);\n break;\n }\n return this;\n }\n\n /**\n * Sets the current date to the end of the {@link unit} provided\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).endOf('month')\n * would return April 30, 2021, 11:59:59.999 PM\n * @param unit\n */\n endOf(unit: Unit | 'weekDay'): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n switch (unit) {\n case 'seconds':\n this.setMilliseconds(999);\n break;\n case 'minutes':\n this.setSeconds(59, 999);\n break;\n case 'hours':\n this.setMinutes(59, 59, 999);\n break;\n case 'date':\n this.setHours(23, 59, 59, 999);\n break;\n case 'weekDay':\n this.startOf(Unit.date);\n this.manipulate(6 - this.weekDay, Unit.date);\n break;\n case 'month':\n this.endOf(Unit.date);\n this.manipulate(1, Unit.month);\n this.setDate(0);\n break;\n case 'year':\n this.endOf(Unit.date);\n this.manipulate(1, Unit.year);\n this.setDate(0);\n break;\n }\n return this;\n }\n\n /**\n * Change a {@link unit} value. Value can be positive or negative\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).manipulate(1, 'month')\n * would return May 30, 2021, 11:45:32.984 AM\n * @param value A positive or negative number\n * @param unit\n */\n manipulate(value: number, unit: Unit): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n this[unit] += value;\n return this;\n }\n\n /**\n * Returns a string format.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat\n * for valid templates and locale objects\n * @param template An object. Uses browser defaults otherwise.\n * @param locale Can be a string or an array of strings. Uses browser defaults otherwise.\n */\n format(template: DateTimeFormatOptions, locale = this.locale): string {\n return new Intl.DateTimeFormat(locale, template).format(this);\n }\n\n /**\n * Return true if {@link compare} is before this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isBefore(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() < compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n return (\n this.clone.startOf(unit).valueOf() < compare.clone.startOf(unit).valueOf()\n );\n }\n\n /**\n * Return true if {@link compare} is after this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isAfter(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() > compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n return (\n this.clone.startOf(unit).valueOf() > compare.clone.startOf(unit).valueOf()\n );\n }\n\n /**\n * Return true if {@link compare} is same this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isSame(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() === compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n compare = DateTime.convert(compare);\n return (\n this.clone.startOf(unit).valueOf() === compare.startOf(unit).valueOf()\n );\n }\n\n /**\n * Check if this is between two other DateTimes, optionally looking at unit scale. The match is exclusive.\n * @param left\n * @param right\n * @param unit.\n * @param inclusivity. A [ indicates inclusion of a value. A ( indicates exclusion.\n * If the inclusivity parameter is used, both indicators must be passed.\n */\n isBetween(\n left: DateTime,\n right: DateTime,\n unit?: Unit,\n inclusivity: '()' | '[]' | '(]' | '[)' = '()'\n ): boolean {\n if (unit && this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n const leftInclusivity = inclusivity[0] === '(';\n const rightInclusivity = inclusivity[1] === ')';\n\n return (\n ((leftInclusivity\n ? this.isAfter(left, unit)\n : !this.isBefore(left, unit)) &&\n (rightInclusivity\n ? this.isBefore(right, unit)\n : !this.isAfter(right, unit))) ||\n ((leftInclusivity\n ? this.isBefore(left, unit)\n : !this.isAfter(left, unit)) &&\n (rightInclusivity\n ? this.isAfter(right, unit)\n : !this.isBefore(right, unit)))\n );\n }\n\n /**\n * Returns flattened object of the date. Does not include literals\n * @param locale\n * @param template\n */\n parts(\n locale = this.locale,\n template: any = { dateStyle: 'full', timeStyle: 'long' }\n ) {\n const parts = {};\n new Intl.DateTimeFormat(locale, template)\n .formatToParts(this)\n .filter((x) => x.type !== 'literal')\n .forEach((x) => (parts[x.type] = x.value));\n return parts;\n }\n\n /**\n * Shortcut to Date.getSeconds()\n */\n get seconds(): number {\n return this.getSeconds();\n }\n\n /**\n * Shortcut to Date.setSeconds()\n */\n set seconds(value: number) {\n this.setSeconds(value);\n }\n\n /**\n * Returns two digit hours\n */\n get secondsFormatted(): string {\n return this.seconds < 10 ? `0${this.seconds}` : `${this.seconds}`;\n }\n\n /**\n * Shortcut to Date.getMinutes()\n */\n get minutes(): number {\n return this.getMinutes();\n }\n\n /**\n * Shortcut to Date.setMinutes()\n */\n set minutes(value: number) {\n this.setMinutes(value);\n }\n\n /**\n * Returns two digit hours\n */\n get minutesFormatted(): string {\n return this.minutes < 10 ? `0${this.minutes}` : `${this.minutes}`;\n }\n\n /**\n * Shortcut to Date.getHours()\n */\n get hours(): number {\n return this.getHours();\n }\n\n /**\n * Shortcut to Date.setHours()\n */\n set hours(value: number) {\n this.setHours(value);\n }\n\n /**\n * Returns two digit hours\n */\n get hoursFormatted(): string {\n return this.hours < 10 ? `0${this.hours}` : `${this.hours}`;\n }\n\n /**\n * Returns two digit hours but in twelve hour mode e.g. 13 -> 1\n */\n get twelveHoursFormatted(): string {\n let hour = this.hours;\n if (hour > 12) hour = hour - 12;\n if (hour === 0) hour = 12;\n return hour < 10 ? `0${hour}` : `${hour}`;\n }\n\n /**\n * Get the meridiem of the date. E.g. AM or PM.\n * If the {@link locale} provides a \"dayPeriod\" then this will be returned,\n * otherwise it will return AM or PM.\n * @param locale\n */\n meridiem(locale: string = this.locale): string {\n return new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n hour12: true,\n } as any)\n .formatToParts(this)\n .find((p) => p.type === 'dayPeriod')?.value;\n }\n\n /**\n * Shortcut to Date.getDate()\n */\n get date(): number {\n return this.getDate();\n }\n\n /**\n * Shortcut to Date.setDate()\n */\n set date(value: number) {\n this.setDate(value);\n }\n\n /**\n * Return two digit date\n */\n get dateFormatted(): string {\n return this.date < 10 ? `0${this.date}` : `${this.date}`;\n }\n\n // https://github.com/you-dont-need/You-Dont-Need-Momentjs#week-of-year\n /**\n * Gets the week of the year\n */\n get week(): number {\n const startOfYear = new Date(this.year, 0, 1);\n startOfYear.setDate(\n startOfYear.getDate() + (1 - (startOfYear.getDay() % 7))\n );\n return Math.round((this.valueOf() - startOfYear.valueOf()) / 604800000) + 1;\n }\n\n /**\n * Shortcut to Date.getDay()\n */\n get weekDay(): number {\n return this.getDay();\n }\n\n /**\n * Shortcut to Date.getMonth()\n */\n get month(): number {\n return this.getMonth();\n }\n\n /**\n * Shortcut to Date.setMonth()\n */\n set month(value: number) {\n this.setMonth(value);\n }\n\n /**\n * Return two digit, human expected month. E.g. January = 1, December = 12\n */\n get monthFormatted(): string {\n return this.month + 1 < 10 ? `0${this.month}` : `${this.month}`;\n }\n\n /**\n * Shortcut to Date.getFullYear()\n */\n get year(): number {\n return this.getFullYear();\n }\n\n /**\n * Shortcut to Date.setFullYear()\n */\n set year(value: number) {\n this.setFullYear(value);\n }\n}\n","import Namespace from './namespace';\n\nexport class TdError extends Error {\n code: number;\n}\n\nexport class ErrorMessages {\n private base = 'TD:';\n\n //#region out to console\n\n /**\n * Throws an error indicating that a key in the options object is invalid.\n * @param optionName\n */\n unexpectedOption(optionName: string) {\n const error = new TdError(\n `${this.base} Unexpected option: ${optionName} does not match a known option.`\n );\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error indicating that one more keys in the options object is invalid.\n * @param optionName\n */\n unexpectedOptions(optionName: string[]) {\n const error = new TdError(`${this.base}: ${optionName.join(', ')}`);\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error when an option is provide an unsupported value.\n * For example a value of 'cheese' for toolbarPlacement which only supports\n * 'top', 'bottom', 'default'.\n * @param optionName\n * @param badValue\n * @param validOptions\n */\n unexpectedOptionValue(\n optionName: string,\n badValue: string,\n validOptions: string[]\n ) {\n const error = new TdError(\n `${\n this.base\n } Unexpected option value: ${optionName} does not accept a value of \"${badValue}\". Valid values are: ${validOptions.join(\n ', '\n )}`\n );\n error.code = 2;\n throw error;\n }\n\n /**\n * Throws an error when an option value is the wrong type.\n * For example a string value was provided to multipleDates which only\n * supports true or false.\n * @param optionName\n * @param badType\n * @param expectedType\n */\n typeMismatch(optionName: string, badType: string, expectedType: string) {\n const error = new TdError(\n `${this.base} Mismatch types: ${optionName} has a type of ${badType} instead of the required ${expectedType}`\n );\n error.code = 3;\n throw error;\n }\n\n /**\n * Throws an error when an option value is outside of the expected range.\n * For example restrictions.daysOfWeekDisabled excepts a value between 0 and 6.\n * @param optionName\n * @param lower\n * @param upper\n */\n numbersOutOfRage(optionName: string, lower: number, upper: number) {\n const error = new TdError(\n `${this.base} ${optionName} expected an array of number between ${lower} and ${upper}.`\n );\n error.code = 4;\n throw error;\n }\n\n /**\n * Throws an error when a value for a date options couldn't be parsed. Either\n * the option was an invalide string or an invalid Date object.\n * @param optionName\n * @param date\n * @param soft If true, logs a warning instead of an error.\n */\n failedToParseDate(optionName: string, date: any, soft = false) {\n const error = new TdError(\n `${this.base} Could not correctly parse \"${date}\" to a date for ${optionName}.`\n );\n error.code = 5;\n if (!soft) throw error;\n console.warn(error);\n }\n\n /**\n * Throws when an element to attach to was not provided in the constructor.\n */\n mustProvideElement() {\n const error = new TdError(`${this.base} No element was provided.`);\n error.code = 6;\n throw error;\n }\n\n /**\n * Throws if providing an array for the events to subscribe method doesn't have\n * the same number of callbacks. E.g., subscribe([1,2], [1])\n */\n subscribeMismatch() {\n const error = new TdError(\n `${this.base} The subscribed events does not match the number of callbacks`\n );\n error.code = 7;\n throw error;\n }\n\n /**\n * Throws if the configuration has conflicting rules e.g. minDate is after maxDate\n */\n conflictingConfiguration(message?: string) {\n const error = new TdError(\n `${this.base} A configuration value conflicts with another rule. ${message}`\n );\n error.code = 8;\n throw error;\n }\n\n /**\n * Logs a warning if a date option value is provided as a string, instead of\n * a date/datetime object.\n */\n dateString() {\n console.warn(\n `${this.base} Using a string for date options is not recommended unless you specify an ISO string.`\n );\n }\n\n //#endregion\n\n //#region used with notify.error\n\n /**\n * Used with an Error Event type if the user selects a date that\n * fails restriction validation.\n */\n failedToSetInvalidDate = 'Failed to set invalid date';\n\n /**\n * Used with an Error Event type when a user changes the value of the\n * input field directly, and does not provide a valid date.\n */\n failedToParseInput = 'Failed parse input field';\n\n //#endregion\n}\n","import { ErrorMessages } from './errors';\n// this is not the way I want this to stay but nested classes seemed to blown up once its compiled.\nconst NAME = 'tempus-dominus',\n version = '6.0.0-alpha1',\n dataKey = 'td';\n\n/**\n * Events\n */\nclass Events {\n key = `.${dataKey}`;\n\n /**\n * Change event. Fired when the user selects a date.\n * See also EventTypes.ChangeEvent\n */\n change = `change${this.key}`;\n\n /**\n * Emit when the view changes for example from month view to the year view.\n * See also EventTypes.ViewUpdateEvent\n */\n update = `update${this.key}`;\n\n /**\n * Emits when a selected date or value from the input field fails to meet the provided validation rules.\n * See also EventTypes.FailEvent\n */\n error = `error${this.key}`;\n\n /**\n * Show event\n * @event Events#show\n */\n show = `show${this.key}`;\n\n /**\n * Hide event\n * @event Events#hide\n */\n hide = `hide${this.key}`;\n\n // blur and focus are used in the jQuery provider but are otherwise unused.\n // keyup/down will be used later for keybinding options\n\n blur = `blur${this.key}`;\n focus = `focus${this.key}`;\n keyup = `keyup${this.key}`;\n keydown = `keydown${this.key}`;\n}\n\nclass Css {\n /**\n * The outer element for the widget.\n */\n widget = `${NAME}-widget`;\n\n /**\n * Hold the previous, next and switcher divs\n */\n calendarHeader = 'calendar-header';\n\n /**\n * The element for the action to change the calendar view. E.g. month -> year.\n */\n switch = 'picker-switch';\n\n /**\n * The elements for all of the toolbar options\n */\n toolbar = 'toolbar';\n\n /**\n * Disables the hover and rounding affect.\n */\n noHighlight = 'no-highlight';\n\n /**\n * Applied to the widget element when the side by side option is in use.\n */\n sideBySide = 'timepicker-sbs';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> July\n */\n previous = 'previous';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> September\n */\n next = 'next';\n\n /**\n * Applied to any action that would violate any restriction options. ALso applied\n * to an input field if the disabled function is called.\n */\n disabled = 'disabled';\n\n /**\n * Applied to any date that is less than requested view,\n * e.g. the last day of the previous month.\n */\n old = 'old';\n\n /**\n * Applied to any date that is greater than of requested view,\n * e.g. the last day of the previous month.\n */\n new = 'new';\n\n /**\n * Applied to any date that is currently selected.\n */\n active = 'active';\n\n //#region date element\n\n /**\n * The outer most element for the calendar view.\n */\n dateContainer = 'date-container';\n\n /**\n * The outer most element for the decades view.\n */\n decadesContainer = `${this.dateContainer}-decades`;\n\n /**\n * Applied to elements within the decades container, e.g. 2020, 2030\n */\n decade = 'decade';\n\n /**\n * The outer most element for the years view.\n */\n yearsContainer = `${this.dateContainer}-years`;\n\n /**\n * Applied to elements within the years container, e.g. 2021, 2021\n */\n year = 'year';\n\n /**\n * The outer most element for the month view.\n */\n monthsContainer = `${this.dateContainer}-months`;\n\n /**\n * Applied to elements within the month container, e.g. January, February\n */\n month = 'month';\n\n /**\n * The outer most element for the calendar view.\n */\n daysContainer = `${this.dateContainer}-days`;\n\n /**\n * Applied to elements within the day container, e.g. 1, 2..31\n */\n day = 'day';\n\n /**\n * If display.calendarWeeks is enabled, a column displaying the week of year\n * is shown. This class is applied to each cell in that column.\n */\n calendarWeeks = 'cw';\n\n /**\n * Applied to the first row of the calendar view, e.g. Sunday, Monday\n */\n dayOfTheWeek = 'dow';\n\n /**\n * Applied to the current date on the calendar view.\n */\n today = 'today';\n\n /**\n * Applied to the locale's weekend dates on the calendar view, e.g. Sunday, Saturday\n */\n weekend = 'weekend';\n\n //#endregion\n\n //#region time element\n\n /**\n * The outer most element for all time related elements.\n */\n timeContainer = 'time-container';\n\n /**\n * Applied the separator columns between time elements, e.g. hour *:* minute *:* second\n */\n separator = 'separator';\n\n /**\n * The outer most element for the clock view.\n */\n clockContainer = `${this.timeContainer}-clock`;\n\n /**\n * The outer most element for the hours selection view.\n */\n hourContainer = `${this.timeContainer}-hour`;\n\n /**\n * The outer most element for the minutes selection view.\n */\n minuteContainer = `${this.timeContainer}-minute`;\n\n /**\n * The outer most element for the seconds selection view.\n */\n secondContainer = `${this.timeContainer}-second`;\n\n /**\n * Applied to each element in the hours selection view.\n */\n hour = 'hour';\n\n /**\n * Applied to each element in the minutes selection view.\n */\n minute = 'minute';\n\n /**\n * Applied to each element in the seconds selection view.\n */\n second = 'second';\n\n /**\n * Applied AM/PM toggle button.\n */\n toggleMeridiem = 'toggleMeridiem';\n\n //#endregion\n\n //#region collapse\n\n /**\n * Applied the element of the current view mode, e.g. calendar or clock.\n */\n show = 'show';\n\n /**\n * Applied to the currently showing view mode during a transition\n * between calendar and clock views\n */\n collapsing = 'td-collapsing';\n\n /**\n * Applied to the currently hidden view mode.\n */\n collapse = 'td-collapse';\n\n //#endregion\n\n /**\n * Applied to the widget when the option display.inline is enabled.\n */\n inline = 'inline';\n}\n\nexport default class Namespace {\n static NAME = NAME;\n // noinspection JSUnusedGlobalSymbols\n static version = version;\n static dataKey = dataKey;\n\n static events = new Events();\n\n static css = new Css();\n\n static errorMessages = new ErrorMessages();\n}\n","import { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options from './options';\n\nconst DefaultOptions: Options = {\n restrictions: {\n minDate: undefined,\n maxDate: undefined,\n disabledDates: [],\n enabledDates: [],\n daysOfWeekDisabled: [],\n disabledTimeIntervals: [],\n disabledHours: [],\n enabledHours: [],\n },\n display: {\n icons: {\n type: 'icons',\n time: 'fas fa-clock',\n date: 'fas fa-calendar',\n up: 'fas fa-arrow-up',\n down: 'fas fa-arrow-down',\n previous: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n today: 'fas fa-calendar-check',\n clear: 'fas fa-trash',\n close: 'fas fa-times',\n },\n sideBySide: false,\n calendarWeeks: false,\n viewMode: 'calendar',\n toolbarPlacement: 'bottom',\n keepOpen: false,\n buttons: {\n today: false,\n clear: false,\n close: false,\n },\n components: {\n calendar: true,\n date: true,\n month: true,\n year: true,\n decades: true,\n clock: true,\n hours: true,\n minutes: true,\n seconds: false,\n useTwentyfourHour: false,\n },\n inline: false,\n },\n stepping: 1,\n useCurrent: true,\n defaultDate: undefined,\n localization: {\n today: 'Go to today',\n clear: 'Clear selection',\n close: 'Close the picker',\n selectMonth: 'Select Month',\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n selectYear: 'Select Year',\n previousYear: 'Previous Year',\n nextYear: 'Next Year',\n selectDecade: 'Select Decade',\n previousDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n previousCentury: 'Previous Century',\n nextCentury: 'Next Century',\n pickHour: 'Pick Hour',\n incrementHour: 'Increment Hour',\n decrementHour: 'Decrement Hour',\n pickMinute: 'Pick Minute',\n incrementMinute: 'Increment Minute',\n decrementMinute: 'Decrement Minute',\n pickSecond: 'Pick Second',\n incrementSecond: 'Increment Second',\n decrementSecond: 'Decrement Second',\n toggleMeridiem: 'Toggle Meridiem',\n selectTime: 'Select Time',\n selectDate: 'Select Date',\n dayViewHeaderFormat: 'long',\n locale: 'default',\n },\n keepInvalid: false,\n debug: false,\n allowInputToggle: false,\n viewDate: new DateTime(),\n multipleDates: false,\n multipleDatesSeparator: '; ',\n promptTimeOnDateChange: false,\n promptTimeOnDateChangeTransitionDelay: 200,\n hooks: {\n inputParse: undefined,\n inputFormat: undefined,\n },\n};\n\nconst DatePickerModes: {\n name: string;\n className: string;\n unit: Unit;\n step: number;\n}[] = [\n {\n name: 'calendar',\n className: Namespace.css.daysContainer,\n unit: Unit.month,\n step: 1,\n },\n {\n name: 'months',\n className: Namespace.css.monthsContainer,\n unit: Unit.year,\n step: 1,\n },\n {\n name: 'years',\n className: Namespace.css.yearsContainer,\n unit: Unit.year,\n step: 10,\n },\n {\n name: 'decades',\n className: Namespace.css.decadesContainer,\n unit: Unit.year,\n step: 100,\n },\n];\n\nexport { DefaultOptions, DatePickerModes, Namespace };\n","import Namespace from '../namespace';\n\n/**\n * Provides a collapse functionality to the view changes\n */\nexport default class Collapse {\n private timeOut;\n\n /**\n * Flips the show/hide state of `target`\n * @param target html element to affect.\n */\n toggle(target: HTMLElement, callback = undefined) {\n if (target.classList.contains(Namespace.css.show)) {\n this.hide(target, callback);\n } else {\n this.show(target, callback);\n }\n }\n\n /**\n * If `target` is not already showing, then show after the animation.\n * @param target\n */\n show(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse, Namespace.css.show);\n target.style.height = '';\n this.timeOut = null;\n if (callback) callback();\n };\n\n target.style.height = '0';\n target.classList.remove(Namespace.css.collapse);\n target.classList.add(Namespace.css.collapsing);\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n target.style.height = `${target.scrollHeight}px`;\n }\n\n /**\n * If `target` is not already hidden, then hide after the animation.\n * @param target HTML Element\n */\n hide(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n !target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse);\n this.timeOut = null;\n };\n\n target.style.height = `${target.getBoundingClientRect()['height']}px`;\n\n const reflow = (element) => element.offsetHeight;\n\n reflow(target);\n\n target.classList.remove(Namespace.css.collapse, Namespace.css.show);\n target.classList.add(Namespace.css.collapsing);\n target.style.height = '';\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n }\n\n /**\n * Gets the transition duration from the `element` by getting css properties\n * `transition-duration` and `transition-delay`\n * @param element HTML Element\n */\n private getTransitionDurationFromElement = (element: HTMLElement) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } =\n window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) +\n Number.parseFloat(transitionDelay)) *\n 1000\n );\n };\n}\n","import { DatePickerModes } from './conts.js';\r\nimport { DateTime, Unit } from './datetime';\r\nimport { TempusDominus } from './tempus-dominus';\r\nimport Collapse from './display/collapse';\r\nimport Namespace from './namespace';\r\n\r\n/**\r\n *\r\n */\r\nexport default class Actions {\r\n private _context: TempusDominus;\r\n private collapse: Collapse;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this.collapse = new Collapse();\r\n }\r\n\r\n /**\r\n * Performs the selected `action`. See ActionTypes\r\n * @param e This is normally a click event\r\n * @param action If not provided, then look for a [data-action]\r\n */\r\n do(e: any, action?: ActionTypes) {\r\n const currentTarget = e.currentTarget;\r\n if (currentTarget.classList.contains(Namespace.css.disabled)) return false;\r\n action = action || currentTarget.dataset.action;\r\n const lastPicked = (\r\n this._context.dates.lastPicked || this._context._viewDate\r\n ).clone;\r\n\r\n /**\r\n * Common function to manipulate {@link lastPicked} by `unit`\r\n * @param unit\r\n * @param value Value to change by\r\n */\r\n const manipulateAndSet = (unit: Unit, value = 1) => {\r\n const newDate = lastPicked.manipulate(value, unit);\r\n if (this._context._validation.isValid(newDate, unit)) {\r\n this._context.dates._setValue(\r\n newDate,\r\n this._context.dates.lastPickedIndex\r\n );\r\n }\r\n };\r\n\r\n switch (action) {\r\n case ActionTypes.next:\r\n case ActionTypes.previous:\r\n const { unit, step } = DatePickerModes[this._context._currentViewMode];\r\n if (action === ActionTypes.next)\r\n this._context._viewDate.manipulate(step, unit);\r\n else this._context._viewDate.manipulate(step * -1, unit);\r\n this._context._viewUpdate(unit);\r\n\r\n this._context._display._showMode();\r\n break;\r\n case ActionTypes.pickerSwitch:\r\n this._context._display._showMode(1);\r\n this._context._viewUpdate(\r\n DatePickerModes[this._context._currentViewMode].unit\r\n );\r\n this._context._display._updateCalendarHeader();\r\n break;\r\n case ActionTypes.selectMonth:\r\n case ActionTypes.selectYear:\r\n case ActionTypes.selectDecade:\r\n const value = +currentTarget.getAttribute('data-value');\r\n switch (action) {\r\n case ActionTypes.selectMonth:\r\n this._context._viewDate.month = value;\r\n this._context._viewUpdate(Unit.month);\r\n break;\r\n case ActionTypes.selectYear:\r\n this._context._viewDate.year = value;\r\n this._context._viewUpdate(Unit.year);\r\n break;\r\n case ActionTypes.selectDecade:\r\n this._context._viewDate.year = value;\r\n this._context._viewUpdate(Unit.year);\r\n break;\r\n }\r\n\r\n if (\r\n this._context._currentViewMode === this._context._minViewModeNumber\r\n ) {\r\n this._context.dates._setValue(\r\n this._context._viewDate,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (!this._context._options.display.inline) {\r\n this._context._display.hide();\r\n }\r\n } else {\r\n this._context._display._showMode(-1);\r\n }\r\n break;\r\n case ActionTypes.selectDay:\r\n const day = this._context._viewDate.clone;\r\n if (currentTarget.classList.contains(Namespace.css.old)) {\r\n day.manipulate(-1, Unit.month);\r\n }\r\n if (currentTarget.classList.contains(Namespace.css.new)) {\r\n day.manipulate(1, Unit.month);\r\n }\r\n\r\n day.date = +currentTarget.innerText;\r\n let index = 0;\r\n if (this._context._options.multipleDates) {\r\n index = this._context.dates.pickedIndex(day, Unit.date);\r\n if (index !== -1) {\r\n this._context.dates._setValue(null, index); //deselect multi-date\r\n } else {\r\n this._context.dates._setValue(\r\n day,\r\n this._context.dates.lastPickedIndex + 1\r\n );\r\n }\r\n } else {\r\n this._context.dates._setValue(\r\n day,\r\n this._context.dates.lastPickedIndex\r\n );\r\n }\r\n\r\n if (\r\n !this._context._display._hasTime &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline &&\r\n !this._context._options.multipleDates\r\n ) {\r\n this._context._display.hide();\r\n }\r\n break;\r\n case ActionTypes.selectHour:\r\n let hour = +currentTarget.getAttribute('data-value');\r\n if (lastPicked.hours >= 12 && !this._context._options.display.components.useTwentyfourHour) hour += 12;\r\n lastPicked.hours = hour;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.components.minutes &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.selectMinute:\r\n lastPicked.minutes = +currentTarget.innerText;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.components.seconds &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.selectSecond:\r\n lastPicked.seconds = +currentTarget.innerText;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.incrementHours:\r\n manipulateAndSet(Unit.hours);\r\n break;\r\n case ActionTypes.incrementMinutes:\r\n manipulateAndSet(Unit.minutes, this._context._options.stepping);\r\n break;\r\n case ActionTypes.incrementSeconds:\r\n manipulateAndSet(Unit.seconds);\r\n break;\r\n case ActionTypes.decrementHours:\r\n manipulateAndSet(Unit.hours, -1);\r\n break;\r\n case ActionTypes.decrementMinutes:\r\n manipulateAndSet(Unit.minutes, this._context._options.stepping * -1);\r\n break;\r\n case ActionTypes.decrementSeconds:\r\n manipulateAndSet(Unit.seconds, -1);\r\n break;\r\n case ActionTypes.toggleMeridiem:\r\n manipulateAndSet(\r\n Unit.hours,\r\n this._context.dates.lastPicked.hours >= 12 ? -12 : 12\r\n );\r\n break;\r\n case ActionTypes.togglePicker:\r\n this._context._display.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer}, .${Namespace.css.timeContainer}`\r\n )\r\n .forEach((htmlElement: HTMLElement) =>\r\n this.collapse.toggle(htmlElement)\r\n );\r\n if (\r\n currentTarget.getAttribute('title') ===\r\n this._context._options.localization.selectDate\r\n ) {\r\n currentTarget.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectTime\r\n );\r\n currentTarget.innerHTML = this._context._display._iconTag(\r\n this._context._options.display.icons.time\r\n ).outerHTML;\r\n\r\n this._context._display._updateCalendarHeader();\r\n } else {\r\n currentTarget.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDate\r\n );\r\n currentTarget.innerHTML = this._context._display._iconTag(\r\n this._context._options.display.icons.date\r\n ).outerHTML;\r\n this.do(e, ActionTypes.showClock);\r\n this._context._display._update('clock');\r\n }\r\n break;\r\n case ActionTypes.showClock:\r\n case ActionTypes.showHours:\r\n case ActionTypes.showMinutes:\r\n case ActionTypes.showSeconds:\r\n this._context._display.widget\r\n .querySelectorAll(`.${Namespace.css.timeContainer} > div`)\r\n .forEach(\r\n (htmlElement: HTMLElement) => (htmlElement.style.display = 'none')\r\n );\r\n\r\n let classToUse = '';\r\n switch (action) {\r\n case ActionTypes.showClock:\r\n classToUse = Namespace.css.clockContainer;\r\n this._context._display._update('clock');\r\n break;\r\n case ActionTypes.showHours:\r\n classToUse = Namespace.css.hourContainer;\r\n this._context._display._update(Unit.hours);\r\n break;\r\n case ActionTypes.showMinutes:\r\n classToUse = Namespace.css.minuteContainer;\r\n this._context._display._update(Unit.minutes);\r\n break;\r\n case ActionTypes.showSeconds:\r\n classToUse = Namespace.css.secondContainer;\r\n this._context._display._update(Unit.seconds);\r\n break;\r\n }\r\n\r\n ((\r\n this._context._display.widget.getElementsByClassName(classToUse)[0]\r\n )).style.display = 'grid';\r\n break;\r\n case ActionTypes.clear:\r\n this._context.dates._setValue(null);\r\n this._context._display._updateCalendarHeader();\r\n break;\r\n case ActionTypes.close:\r\n this._context._display.hide();\r\n break;\r\n case ActionTypes.today:\r\n const today = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n this._context._viewDate = today;\r\n if (this._context._validation.isValid(today, Unit.date))\r\n this._context.dates._setValue(\r\n today,\r\n this._context.dates.lastPickedIndex\r\n );\r\n break;\r\n }\r\n }\r\n}\r\n\r\nexport enum ActionTypes {\r\n next = 'next',\r\n previous = 'previous',\r\n pickerSwitch = 'pickerSwitch',\r\n selectMonth = 'selectMonth',\r\n selectYear = 'selectYear',\r\n selectDecade = 'selectDecade',\r\n selectDay = 'selectDay',\r\n selectHour = 'selectHour',\r\n selectMinute = 'selectMinute',\r\n selectSecond = 'selectSecond',\r\n incrementHours = 'incrementHours',\r\n incrementMinutes = 'incrementMinutes',\r\n incrementSeconds = 'incrementSeconds',\r\n decrementHours = 'decrementHours',\r\n decrementMinutes = 'decrementMinutes',\r\n decrementSeconds = 'decrementSeconds',\r\n toggleMeridiem = 'toggleMeridiem',\r\n togglePicker = 'togglePicker',\r\n showClock = 'showClock',\r\n showHours = 'showHours',\r\n showMinutes = 'showMinutes',\r\n showSeconds = 'showSeconds',\r\n clear = 'clear',\r\n close = 'close',\r\n today = 'today',\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { DateTime, Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `date`\n */\nexport default class DateDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.daysContainer);\n\n container.append(...this._daysOfTheWeek());\n\n if (this._context._options.display.calendarWeeks) {\n const div = document.createElement('div');\n div.classList.add(Namespace.css.calendarWeeks, Namespace.css.noHighlight);\n container.appendChild(div);\n }\n\n for (let i = 0; i < 42; i++) {\n if (i !== 0 && i % 7 === 0) {\n if (this._context._options.display.calendarWeeks) {\n const div = document.createElement('div');\n div.classList.add(\n Namespace.css.calendarWeeks,\n Namespace.css.noHighlight\n );\n container.appendChild(div);\n }\n }\n\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectDay);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.daysContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.daysContainer,\n this._context._viewDate.format({\n month: this._context._options.localization.dayViewHeaderFormat,\n })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.month),\n Unit.month\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.month),\n Unit.month\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone\n .startOf(Unit.month)\n .startOf('weekDay')\n .manipulate(12, Unit.hours);\n\n container\n .querySelectorAll(\n `[data-action=\"${ActionTypes.selectDay}\"], .${Namespace.css.calendarWeeks}`\n )\n .forEach((containerClone: HTMLElement, index) => {\n if (\n this._context._options.display.calendarWeeks &&\n containerClone.classList.contains(Namespace.css.calendarWeeks)\n ) {\n if (containerClone.innerText === '#') return;\n containerClone.innerText = `${innerDate.week}`;\n return;\n }\n\n let classes = [];\n classes.push(Namespace.css.day);\n\n if (innerDate.isBefore(this._context._viewDate, Unit.month)) {\n classes.push(Namespace.css.old);\n }\n if (innerDate.isAfter(this._context._viewDate, Unit.month)) {\n classes.push(Namespace.css.new);\n }\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.date)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.date)) {\n classes.push(Namespace.css.disabled);\n }\n if (innerDate.isSame(new DateTime(), Unit.date)) {\n classes.push(Namespace.css.today);\n }\n if (innerDate.weekDay === 0 || innerDate.weekDay === 6) {\n classes.push(Namespace.css.weekend);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute(\n 'data-value',\n `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`\n );\n containerClone.innerText = `${innerDate.date}`;\n innerDate.manipulate(1, Unit.date);\n });\n }\n\n /***\n * Generates an html row that contains the days of the week.\n * @private\n */\n private _daysOfTheWeek(): HTMLElement[] {\n let innerDate = this._context._viewDate.clone\n .startOf('weekDay')\n .startOf(Unit.date);\n const row = [];\n document.createElement('div');\n\n if (this._context._options.display.calendarWeeks) {\n const htmlDivElement = document.createElement('div');\n htmlDivElement.classList.add(\n Namespace.css.calendarWeeks,\n Namespace.css.noHighlight\n );\n htmlDivElement.innerText = '#';\n row.push(htmlDivElement);\n }\n\n for (let i = 0; i < 7; i++) {\n const htmlDivElement = document.createElement('div');\n htmlDivElement.classList.add(\n Namespace.css.dayOfTheWeek,\n Namespace.css.noHighlight\n );\n htmlDivElement.innerText = innerDate.format({ weekday: 'short' });\n innerDate.manipulate(1, Unit.date);\n row.push(htmlDivElement);\n }\n\n return row;\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `month`\n */\nexport default class MonthDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.monthsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMonth);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.monthsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.monthsContainer,\n this._context._viewDate.format({ year: 'numeric' })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.year),\n Unit.year\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.year),\n Unit.year\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone.startOf(Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMonth}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.month);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.month)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.month)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${index}`);\n containerClone.innerText = `${innerDate.format({ month: 'short' })}`;\n innerDate.manipulate(1, Unit.month);\n });\n }\n}\n","import { DateTime, DateTimeFormatOptions } from './datetime';\nimport Namespace from './namespace';\nimport { DefaultOptions } from './conts';\n\nexport default interface Options {\n restrictions: {\n minDate: DateTime;\n maxDate: DateTime;\n enabledDates: DateTime[];\n disabledDates: DateTime[];\n enabledHours: number[];\n disabledHours: number[];\n disabledTimeIntervals: { from: DateTime; to: DateTime }[];\n daysOfWeekDisabled: number[];\n };\n display: {\n toolbarPlacement: 'top' | 'bottom';\n components: {\n calendar: boolean;\n date: boolean;\n month: boolean;\n year: boolean;\n decades: boolean;\n clock: boolean;\n hours: boolean;\n minutes: boolean;\n seconds: boolean;\n useTwentyfourHour: boolean;\n };\n buttons: { today: boolean; close: boolean; clear: boolean };\n calendarWeeks: boolean;\n icons: {\n date: string;\n next: string;\n previous: string;\n today: string;\n clear: string;\n time: string;\n up: string;\n type: 'icons' | 'sprites';\n down: string;\n close: string;\n };\n viewMode: 'clock' | 'calendar' | 'months' | 'years' | 'decades';\n sideBySide: boolean;\n inline: boolean;\n keepOpen: boolean;\n };\n stepping: number;\n useCurrent: boolean;\n defaultDate: DateTime;\n localization: {\n nextMonth: string;\n pickHour: string;\n incrementSecond: string;\n nextDecade: string;\n selectDecade: string;\n dayViewHeaderFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n decrementHour: string;\n selectDate: string;\n incrementHour: string;\n previousCentury: string;\n decrementSecond: string;\n today: string;\n previousMonth: string;\n selectYear: string;\n pickSecond: string;\n nextCentury: string;\n close: string;\n incrementMinute: string;\n selectTime: string;\n clear: string;\n toggleMeridiem: string;\n selectMonth: string;\n decrementMinute: string;\n pickMinute: string;\n nextYear: string;\n previousYear: string;\n previousDecade: string;\n locale: string;\n };\n keepInvalid: boolean;\n debug: boolean;\n allowInputToggle: boolean;\n viewDate: DateTime;\n multipleDates: boolean;\n multipleDatesSeparator: string;\n promptTimeOnDateChange: boolean;\n promptTimeOnDateChangeTransitionDelay: number;\n hooks: {\n inputParse: (value: any) => DateTime;\n inputFormat: (date: DateTime) => string;\n };\n}\n\nexport class OptionConverter {\n static _mergeOptions(providedOptions: Options, mergeTo: Options): Options {\n const newOptions = {} as Options;\n let path = '';\n const ignoreProperties = ['inputParse', 'inputFormat'];\n\n const processKey = (key, value, providedType, defaultType) => {\n switch (key) {\n case 'defaultDate': {\n const dateTime = this._dateConversion(value, 'defaultDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'defaultDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'viewDate': {\n const dateTime = this._dateConversion(value, 'viewDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'viewDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'minDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.minDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.minDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'maxDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.maxDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.maxDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'disabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.disabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.disabledHours',\n 0,\n 23\n );\n return value;\n case 'enabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.enabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.enabledHours',\n 0,\n 23\n );\n return value;\n case 'daysOfWeekDisabled':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.daysOfWeekDisabled',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 6).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.daysOfWeekDisabled',\n 0,\n 6\n );\n return value;\n case 'enabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.enabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.disabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledTimeIntervals':\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n key,\n providedType,\n 'array of { from: DateTime|Date, to: DateTime|Date }'\n );\n }\n const valueObject = value as { from: any; to: any }[];\n for (let i = 0; i < valueObject.length; i++) {\n Object.keys(valueObject[i]).forEach((vk) => {\n const subOptionName = `${key}[${i}].${vk}`;\n let d = valueObject[i][vk];\n const dateTime = this._dateConversion(d, subOptionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n subOptionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n valueObject[i][vk] = dateTime;\n });\n }\n return valueObject;\n case 'toolbarPlacement':\n case 'type':\n case 'viewMode':\n case 'dayViewHeaderFormat':\n const optionValues = {\n toolbarPlacement: ['top', 'bottom', 'default'],\n type: ['icons', 'sprites'],\n viewMode: ['clock', 'calendar', 'months', 'years', 'decades'],\n dayViewHeaderFormat: [\n 'numeric',\n '2-digit',\n 'long',\n 'short',\n 'narrow',\n ],\n };\n const keyOptions = optionValues[key];\n if (!keyOptions.includes(value))\n Namespace.errorMessages.unexpectedOptionValue(\n path.substring(1),\n value,\n keyOptions\n );\n\n return value;\n case 'inputParse':\n case 'inputFormat':\n return value;\n default:\n switch (defaultType) {\n case 'boolean':\n return value === 'true' || value === true;\n case 'number':\n return +value;\n case 'string':\n return value.toString();\n case 'object':\n return {};\n case 'function':\n return value;\n default:\n Namespace.errorMessages.typeMismatch(\n path.substring(1),\n providedType,\n defaultType\n );\n }\n }\n };\n\n /**\n * The spread operator caused sub keys to be missing after merging.\n * This is to fix that issue by using spread on the child objects first.\n * Also handles complex options like disabledDates\n * @param provided An option from new providedOptions\n * @param mergeOption Default option to compare types against\n * @param copyTo Destination object. This was add to prevent reference copies\n */\n const spread = (provided, mergeOption, copyTo) => {\n const unsupportedOptions = Object.keys(provided).filter(\n (x) => !Object.keys(mergeOption).includes(x)\n );\n if (unsupportedOptions.length > 0) {\n const flattenedOptions = OptionConverter._flattenDefaultOptions;\n\n const errors = unsupportedOptions.map((x) => {\n let error = `\"${path.substring(1)}.${x}\" in not a known option.`;\n let didYouMean = flattenedOptions.find((y) => y.includes(x));\n if (didYouMean) error += `Did you mean \"${didYouMean}\"?`;\n return error;\n });\n Namespace.errorMessages.unexpectedOptions(errors);\n }\n Object.keys(mergeOption).forEach((key) => {\n const defaultOptionValue = mergeOption[key];\n let providedType = typeof provided[key];\n let defaultType = typeof defaultOptionValue;\n let value = provided[key];\n if (!provided.hasOwnProperty(key)) {\n if (\n defaultType === 'undefined' ||\n (value?.length === 0 && Array.isArray(defaultOptionValue))\n ) {\n copyTo[key] = defaultOptionValue;\n return;\n }\n provided[key] = defaultOptionValue;\n value = provided[key];\n }\n path += `.${key}`;\n copyTo[key] = processKey(key, value, providedType, defaultType);\n\n if (typeof defaultOptionValue !== 'object' || ignoreProperties.includes(key)) {\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n return;\n }\n if (!Array.isArray(provided[key])) {\n spread(provided[key], defaultOptionValue, copyTo[key]);\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n }\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n });\n };\n spread(providedOptions, mergeTo, newOptions);\n\n return newOptions;\n }\n\n static _dataToOptions(element, options: Options): Options {\n const eData = element.dataset;\n if (\n !eData ||\n Object.keys(eData).length === 0 ||\n eData.constructor !== DOMStringMap\n )\n return options;\n let dataOptions = {} as Options;\n\n // because dataset returns camelCase including the 'td' key the option\n // key won't align\n const objectToNormalized = (object) => {\n const lowered = {};\n Object.keys(object).forEach((x) => {\n lowered[x.toLowerCase()] = x;\n });\n\n return lowered;\n };\n\n const rabbitHole = (\n split: string[],\n index: number,\n optionSubgroup: {},\n value: any\n ) => {\n // first round = display { ... }\n const normalizedOptions = objectToNormalized(optionSubgroup);\n\n const keyOption = normalizedOptions[split[index].toLowerCase()];\n const internalObject = {};\n\n if (keyOption === undefined) return internalObject;\n\n // if this is another object, continue down the rabbit hole\n if (optionSubgroup[keyOption].constructor === Object) {\n index++;\n internalObject[keyOption] = rabbitHole(\n split,\n index,\n optionSubgroup[keyOption],\n value\n );\n } else {\n internalObject[keyOption] = value;\n }\n return internalObject;\n };\n const optionsLower = objectToNormalized(options);\n\n Object.keys(eData)\n .filter((x) => x.startsWith(Namespace.dataKey))\n .map((x) => x.substring(2))\n .forEach((key) => {\n let keyOption = optionsLower[key.toLowerCase()];\n\n // dataset merges dashes to camelCase... yay\n // i.e. key = display_components_seconds\n if (key.includes('_')) {\n // [display, components, seconds]\n const split = key.split('_');\n // display\n keyOption = optionsLower[split[0].toLowerCase()];\n if (\n keyOption !== undefined &&\n options[keyOption].constructor === Object\n ) {\n dataOptions[keyOption] = rabbitHole(\n split,\n 1,\n options[keyOption],\n eData[`td${key}`]\n );\n }\n }\n // or key = multipleDate\n else if (keyOption !== undefined) {\n dataOptions[keyOption] = eData[`td${key}`];\n }\n });\n\n return this._mergeOptions(dataOptions, options);\n }\n\n /**\n * Attempts to prove `d` is a DateTime or Date or can be converted into one.\n * @param d If a string will attempt creating a date from it.\n * @private\n */\n static _dateTypeCheck(d: any): DateTime | null {\n if (d.constructor.name === DateTime.name) return d;\n if (d.constructor.name === Date.name) {\n return DateTime.convert(d);\n }\n if (typeof d === typeof '') {\n const dateTime = new DateTime(d);\n if (JSON.stringify(dateTime) === 'null') {\n return null;\n }\n return dateTime;\n }\n return null;\n }\n\n /**\n * Type checks that `value` is an array of Date or DateTime\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckDateArray(optionName: string, value, providedType: string) {\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of DateTime or Date'\n );\n }\n for (let i = 0; i < value.length; i++) {\n let d = value[i];\n const dateTime = this._dateConversion(d, optionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n value[i] = dateTime;\n }\n }\n\n /**\n * Type checks that `value` is an array of numbers\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckNumberArray(\n optionName: string,\n value,\n providedType: string\n ) {\n if (!Array.isArray(value) || value.find((x) => typeof x !== typeof 0)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of numbers'\n );\n }\n return;\n }\n\n /**\n * Attempts to convert `d` to a DateTime object\n * @param d value to convert\n * @param optionName Provides text to error messages e.g. disabledDates\n */\n static _dateConversion(d: any, optionName: string) {\n if (typeof d === typeof '' && optionName !== 'input') {\n Namespace.errorMessages.dateString();\n }\n\n const converted = this._dateTypeCheck(d);\n\n if (!converted) {\n Namespace.errorMessages.failedToParseDate(\n optionName,\n d,\n optionName === 'input'\n );\n }\n return converted;\n }\n\n private static _flatback: string[];\n\n private static get _flattenDefaultOptions(): string[] {\n if (this._flatback) return this._flatback;\n const deepKeys = (t, pre = []) =>\n Array.isArray(t)\n ? []\n : Object(t) === t\n ? Object.entries(t).flatMap(([k, v]) => deepKeys(v, [...pre, k]))\n : pre.join('.');\n\n this._flatback = deepKeys(DefaultOptions);\n\n return this._flatback;\n }\n\n /**\n * Some options conflict like min/max date. Verify that these kinds of options\n * are set correctly.\n * @param config\n */\n static _validateConflcits(config: Options) {\n if (config.restrictions.minDate && config.restrictions.maxDate) {\n if (config.restrictions.minDate.isAfter(config.restrictions.maxDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'minDate is after maxDate'\n );\n }\n\n if (config.restrictions.maxDate.isBefore(config.restrictions.minDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'maxDate is before minDate'\n );\n }\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport { ChangeEvent, FailEvent } from './event-types';\nimport { OptionConverter } from './options';\n\nexport default class Dates {\n private _dates: DateTime[] = [];\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Returns the array of selected dates\n */\n get picked(): DateTime[] {\n return this._dates;\n }\n\n /**\n * Returns the last picked value.\n */\n get lastPicked(): DateTime {\n return this._dates[this.lastPickedIndex];\n }\n\n /**\n * Returns the length of picked dates -1 or 0 if none are selected.\n */\n get lastPickedIndex(): number {\n if (this._dates.length === 0) return 0;\n return this._dates.length - 1;\n }\n\n /**\n * Adds a new DateTime to selected dates array\n * @param date\n */\n add(date: DateTime): void {\n this._dates.push(date);\n }\n\n /**\n * Tries to convert the provided value to a DateTime object.\n * If value is null|undefined then clear the value of the provided index (or 0).\n * @param value Value to convert or null|undefined\n * @param index When using multidates this is the index in the array\n * @param from Used in the warning message, useful for debugging.\n */\n set(value: any, index?: number, from: string = 'date.set') {\n if (!value) this._setValue(value, index);\n const converted = OptionConverter._dateConversion(value, from);\n if (converted) this._setValue(converted, index);\n }\n\n /**\n * Returns true if the `targetDate` is part of the selected dates array.\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n isPicked(targetDate: DateTime, unit?: Unit): boolean {\n if (!unit) return this._dates.find((x) => x === targetDate) !== undefined;\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return (\n this._dates\n .map((x) => x.format(format))\n .find((x) => x === innerDateFormatted) !== undefined\n );\n }\n\n /**\n * Returns the index at which `targetDate` is in the array.\n * This is used for updating or removing a date when multi-date is used\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n pickedIndex(targetDate: DateTime, unit?: Unit): number {\n if (!unit) return this._dates.indexOf(targetDate);\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return this._dates.map((x) => x.format(format)).indexOf(innerDateFormatted);\n }\n\n /**\n * Clears all selected dates.\n */\n clear() {\n this._context._unset = true;\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate: this.lastPicked,\n isClear: true,\n isValid: true,\n } as ChangeEvent);\n this._dates = [];\n }\n\n /**\n * Find the \"book end\" years given a `year` and a `factor`\n * @param factor e.g. 100 for decades\n * @param year e.g. 2021\n */\n static getStartEndYear(\n factor: number,\n year: number\n ): [number, number, number] {\n const step = factor / 10,\n startYear = Math.floor(year / factor) * factor,\n endYear = startYear + step * 9,\n focusValue = Math.floor(year / step) * step;\n return [startYear, endYear, focusValue];\n }\n\n /**\n * Do not use direectly. Attempts to either clear or set the `target` date at `index`.\n * If the `target` is null then the date will be cleared.\n * If multi-date is being used then it will be removed from the array.\n * If `target` is valid and multi-date is used then if `index` is\n * provided the date at that index will be replaced, otherwise it is appended.\n * @param target\n * @param index\n */\n _setValue(target?: DateTime, index?: number): void {\n const noIndex = typeof index === 'undefined',\n isClear = !target && noIndex;\n let oldDate = this._context._unset ? null : this._dates[index];\n if (!oldDate && !this._context._unset && noIndex && isClear) {\n oldDate = this.lastPicked;\n }\n\n if (target && oldDate?.isSame(target)) return;\n\n const updateInput = () => {\n if (!this._context._input) return;\n\n let newValue = this._context._options.hooks.inputFormat(target);\n if (this._context._options.multipleDates) {\n newValue = this._dates\n .map((d) => this._context._options.hooks.inputFormat(d))\n .join(this._context._options.multipleDatesSeparator);\n }\n if (this._context._input.value != newValue)\n this._context._input.value = newValue;\n };\n\n // case of calling setValue(null)\n if (!target) {\n if (\n !this._context._options.multipleDates ||\n this._dates.length === 1 ||\n isClear\n ) {\n this._context._unset = true;\n this._dates = [];\n } else {\n this._dates.splice(index, 1);\n }\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n\n updateInput();\n this._context._display._update('all');\n return;\n }\n\n index = index || 0;\n target = target.clone;\n\n // minute stepping is being used, force the minute to the closest value\n if (this._context._options.stepping !== 1) {\n target.minutes =\n Math.round(target.minutes / this._context._options.stepping) *\n this._context._options.stepping;\n target.seconds = 0;\n }\n\n if (this._context._validation.isValid(target)) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._unset = false;\n this._context._display._update('all');\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n return;\n }\n\n if (this._context._options.keepInvalid) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: false,\n } as ChangeEvent);\n }\n this._context._triggerEvent({\n type: Namespace.events.error,\n reason: Namespace.errorMessages.failedToSetInvalidDate,\n date: target,\n oldDate,\n } as FailEvent);\n }\n\n /**\n * Returns a format object based on the granularity of `unit`\n * @param unit\n */\n static getFormatByUnit(unit: Unit): object {\n switch (unit) {\n case 'date':\n return { dateStyle: 'short' };\n case 'month':\n return {\n month: 'numeric',\n year: 'numeric',\n };\n case 'year':\n return { year: 'numeric' };\n }\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { DateTime, Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\nimport Dates from '../../dates';\n\n/**\n * Creates and updates the grid for `year`\n */\nexport default class YearDisplay {\n private _context: TempusDominus;\n private _startYear: DateTime;\n private _endYear: DateTime;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.yearsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectYear);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update() {\n const [start, end] = Dates.getStartEndYear(\n 10,\n this._context._viewDate.year\n );\n this._startYear = this._context._viewDate.clone.manipulate(-1, Unit.year);\n this._endYear = this._context._viewDate.clone.manipulate(10, Unit.year);\n\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.yearsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.yearsContainer,\n `${this._startYear.year}-${this._endYear.year}`\n );\n\n this._context._validation.isValid(this._startYear, Unit.year)\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n this._context._validation.isValid(this._endYear, Unit.year)\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone\n .startOf(Unit.year)\n .manipulate(-1, Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectYear}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.year);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.year)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.year)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.year}`);\n containerClone.innerText = `${innerDate.year}`;\n\n innerDate.manipulate(1, Unit.year);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport Dates from '../../dates';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `seconds`\r\n */\r\nexport default class DecadeDisplay {\r\n private _context: TempusDominus;\r\n private _startDecade: DateTime;\r\n private _endDecade: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker() {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.decadesContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDecade);\r\n container.appendChild(div);\r\n }\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 100,\r\n this._context._viewDate.year\r\n );\r\n this._startDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._startDecade.year = start;\r\n this._endDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._endDecade.year = end;\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.decadesContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.decadesContainer,\r\n `${this._startDecade.year}-${this._endDecade.year}`\r\n );\r\n\r\n this._context._validation.isValid(this._startDecade, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endDecade, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n const pickedYears = this._context.dates.picked.map((x) => x.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectDecade}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (index === 0) {\r\n containerClone.classList.add(Namespace.css.old);\r\n if (this._startDecade.year - 10 < 0) {\r\n containerClone.textContent = ' ';\r\n previous.classList.add(Namespace.css.disabled);\r\n containerClone.classList.add(Namespace.css.disabled);\r\n containerClone.setAttribute('data-value', ``);\r\n return;\r\n } else {\r\n containerClone.innerText = `${this._startDecade.year - 10}`;\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n return;\r\n }\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.decade);\r\n const startDecadeYear = this._startDecade.year;\r\n const endDecadeYear = this._startDecade.year + 9;\r\n\r\n if (\r\n !this._context._unset &&\r\n pickedYears.filter((x) => x >= startDecadeYear && x <= endDecadeYear)\r\n .length > 0\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n containerClone.innerText = `${this._startDecade.year}`;\r\n\r\n this._startDecade.manipulate(10, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates the clock display\n */\nexport default class TimeDisplay {\n private _context: TempusDominus;\n private _gridColumns = '';\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the clock display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.clockContainer);\n\n container.append(...this._grid());\n\n return container;\n }\n\n /**\n * Populates the various elements with in the clock display\n * like the current hour and if the manipulation icons are enabled.\n * @private\n */\n _update(): void {\n const timesDiv = (\n this._context._display.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0]\n );\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n timesDiv\n .querySelectorAll('.disabled')\n .forEach((element) => element.classList.remove(Namespace.css.disabled));\n\n if (this._context._options.display.components.hours) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.hours}]`\n ).innerText = this._context._options.display.components.useTwentyfourHour\n ? lastPicked.hoursFormatted\n : lastPicked.twelveHoursFormatted;\n }\n\n if (this._context._options.display.components.minutes) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.minutes}]`\n ).innerText = lastPicked.minutesFormatted;\n }\n\n if (this._context._options.display.components.seconds) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.seconds}]`\n ).innerText = lastPicked.secondsFormatted;\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n const toggle = timesDiv.querySelector(\n `[data-action=${ActionTypes.toggleMeridiem}]`\n );\n\n toggle.innerText = lastPicked.meridiem();\n\n if (\n !this._context._validation.isValid(\n lastPicked.clone.manipulate(\n lastPicked.hours >= 12 ? -12 : 12,\n Unit.hours\n )\n )\n ) {\n toggle.classList.add(Namespace.css.disabled);\n } else {\n toggle.classList.remove(Namespace.css.disabled);\n }\n }\n\n timesDiv.style.gridTemplateAreas = `\"${this._gridColumns}\"`;\n }\n\n /**\n * Creates the table for the clock display depending on what options are selected.\n * @private\n */\n private _grid(): HTMLElement[] {\n this._gridColumns = '';\n const top = [],\n middle = [],\n bottom = [],\n separator = document.createElement('div'),\n upIcon = this._context._display._iconTag(\n this._context._options.display.icons.up\n ),\n downIcon = this._context._display._iconTag(\n this._context._options.display.icons.down\n );\n\n separator.classList.add(Namespace.css.separator, Namespace.css.noHighlight);\n const separatorColon = separator.cloneNode(true);\n separatorColon.innerHTML = ':';\n\n const getSeparator = (colon = false): HTMLElement => {\n return colon\n ? separatorColon.cloneNode(true)\n : separator.cloneNode(true);\n };\n\n if (this._context._options.display.components.hours) {\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.incrementHours);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickHour\n );\n divElement.setAttribute('data-action', ActionTypes.showHours);\n divElement.setAttribute('data-time-component', Unit.hours);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.decrementHours);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n this._gridColumns += 'a';\n }\n\n if (this._context._options.display.components.minutes) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.hours) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.incrementMinutes);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickMinute\n );\n divElement.setAttribute('data-action', ActionTypes.showMinutes);\n divElement.setAttribute('data-time-component', Unit.minutes);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.decrementMinutes);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (this._context._options.display.components.seconds) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.minutes) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.incrementSeconds);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickSecond\n );\n divElement.setAttribute('data-action', ActionTypes.showSeconds);\n divElement.setAttribute('data-time-component', Unit.seconds);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.decrementSeconds);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n this._gridColumns += ' a';\n let divElement = getSeparator();\n top.push(divElement);\n\n let button = document.createElement('button');\n button.setAttribute(\n 'title',\n this._context._options.localization.toggleMeridiem\n );\n button.setAttribute('data-action', ActionTypes.toggleMeridiem);\n button.setAttribute('tabindex', '-1');\n button.classList.add(Namespace.css.toggleMeridiem);\n\n divElement = document.createElement('div');\n divElement.classList.add(Namespace.css.noHighlight);\n divElement.appendChild(button);\n middle.push(divElement);\n\n divElement = getSeparator();\n bottom.push(divElement);\n }\n\n this._gridColumns = this._gridColumns.trim();\n\n return [...top, ...middle, ...bottom];\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `hours`\n */\nexport default class HourDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.hourContainer);\n\n for (\n let i = 0;\n i <\n (this._context._options.display.components.useTwentyfourHour ? 24 : 12);\n i++\n ) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectHour);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.hourContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.date);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectHour}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.hour);\n\n if (!this._context._validation.isValid(innerDate, Unit.hours)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.hours}`);\n containerClone.innerText = this._context._options.display.components\n .useTwentyfourHour\n ? innerDate.hoursFormatted\n : innerDate.twelveHoursFormatted;\n innerDate.manipulate(1, Unit.hours);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `minutes`\n */\nexport default class MinuteDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.minuteContainer);\n\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n for (let i = 0; i < 60 / step; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMinute);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.minuteContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.hours);\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMinute}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.minute);\n\n if (!this._context._validation.isValid(innerDate, Unit.minutes)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.minutes}`);\n containerClone.innerText = innerDate.minutesFormatted;\n innerDate.manipulate(step, Unit.minutes);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class secondDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.secondContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectSecond);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.secondContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.minutes);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectSecond}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.second);\n\n if (!this._context._validation.isValid(innerDate, Unit.seconds)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.seconds}`);\n containerClone.innerText = innerDate.secondsFormatted;\n innerDate.manipulate(5, Unit.seconds);\n });\n }\n}\n","import DateDisplay from './calendar/date-display';\r\nimport MonthDisplay from './calendar/month-display';\r\nimport YearDisplay from './calendar/year-display';\r\nimport DecadeDisplay from './calendar/decade-display';\r\nimport TimeDisplay from './time/time-display';\r\nimport HourDisplay from './time/hour-display';\r\nimport MinuteDisplay from './time/minute-display';\r\nimport SecondDisplay from './time/second-display';\r\nimport { DateTime, Unit } from '../datetime';\r\nimport { DatePickerModes } from '../conts';\r\nimport { TempusDominus } from '../tempus-dominus';\r\nimport { ActionTypes } from '../actions';\r\nimport { createPopper } from '@popperjs/core';\r\nimport Namespace from '../namespace';\r\nimport { HideEvent } from '../event-types';\r\n\r\n/**\r\n * Main class for all things display related.\r\n */\r\nexport default class Display {\r\n private _context: TempusDominus;\r\n private _dateDisplay: DateDisplay;\r\n private _monthDisplay: MonthDisplay;\r\n private _yearDisplay: YearDisplay;\r\n private _decadeDisplay: DecadeDisplay;\r\n private _timeDisplay: TimeDisplay;\r\n private _widget: HTMLElement;\r\n private _hourDisplay: HourDisplay;\r\n private _minuteDisplay: MinuteDisplay;\r\n private _secondDisplay: SecondDisplay;\r\n private _popperInstance: any;\r\n private _isVisible = false;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this._dateDisplay = new DateDisplay(context);\r\n this._monthDisplay = new MonthDisplay(context);\r\n this._yearDisplay = new YearDisplay(context);\r\n this._decadeDisplay = new DecadeDisplay(context);\r\n this._timeDisplay = new TimeDisplay(context);\r\n this._hourDisplay = new HourDisplay(context);\r\n this._minuteDisplay = new MinuteDisplay(context);\r\n this._secondDisplay = new SecondDisplay(context);\r\n\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Returns the widget body or undefined\r\n * @private\r\n */\r\n get widget(): HTMLElement | undefined {\r\n return this._widget;\r\n }\r\n\r\n /**\r\n * Returns this visible state of the picker (shown)\r\n */\r\n get isVisible() {\r\n return this._isVisible;\r\n }\r\n\r\n /**\r\n * Updates the table for a particular unit. Used when an option as changed or\r\n * whenever the class list might need to be refreshed.\r\n * @param unit\r\n * @private\r\n */\r\n _update(unit: Unit | 'clock' | 'calendar' | 'all'): void {\r\n if (!this.widget) return;\r\n //todo do I want some kind of error catching or other guards here?\r\n switch (unit) {\r\n case Unit.seconds:\r\n this._secondDisplay._update();\r\n break;\r\n case Unit.minutes:\r\n this._minuteDisplay._update();\r\n break;\r\n case Unit.hours:\r\n this._hourDisplay._update();\r\n break;\r\n case Unit.date:\r\n this._dateDisplay._update();\r\n break;\r\n case Unit.month:\r\n this._monthDisplay._update();\r\n break;\r\n case Unit.year:\r\n this._yearDisplay._update();\r\n break;\r\n case 'clock':\r\n this._timeDisplay._update();\r\n this._update(Unit.hours);\r\n this._update(Unit.minutes);\r\n this._update(Unit.seconds);\r\n break;\r\n case 'calendar':\r\n this._update(Unit.date);\r\n this._update(Unit.year);\r\n this._update(Unit.month);\r\n this._decadeDisplay._update();\r\n this._updateCalendarHeader();\r\n break;\r\n case 'all':\r\n if (this._hasTime) {\r\n this._update('clock');\r\n }\r\n if (this._hasDate) {\r\n this._update('calendar');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Shows the picker and creates a Popper instance if needed.\r\n * Add document click event to hide when clicking outside the picker.\r\n * @fires Events#show\r\n */\r\n show(): void {\r\n if (this.widget == undefined) {\r\n if (\r\n this._context._options.useCurrent &&\r\n !this._context._options.defaultDate &&\r\n !this._context._input?.value\r\n ) {\r\n //todo in the td4 branch a pr changed this to allow granularity\r\n const date = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n if (!this._context._options.keepInvalid) {\r\n let tries = 0;\r\n let direction = 1;\r\n if (this._context._options.restrictions.maxDate?.isBefore(date)) {\r\n direction = -1;\r\n }\r\n while (!this._context._validation.isValid(date)) {\r\n date.manipulate(direction, Unit.date);\r\n if (tries > 31) break;\r\n tries++;\r\n }\r\n }\r\n this._context.dates._setValue(date);\r\n }\r\n\r\n if (this._context._options.defaultDate) {\r\n this._context.dates._setValue(this._context._options.defaultDate);\r\n }\r\n\r\n this._buildWidget();\r\n if (this._hasDate) {\r\n this._showMode();\r\n }\r\n\r\n if (!this._context._options.display.inline) {\r\n document.body.appendChild(this.widget);\r\n\r\n this._popperInstance = createPopper(\r\n this._context._element,\r\n this.widget,\r\n {\r\n modifiers: [\r\n /* {\r\n name: 'offset',\r\n options: {\r\n offset: [2, 8],\r\n },\r\n },*/\r\n { name: 'eventListeners', enabled: true },\r\n ],\r\n placement: 'bottom-start',\r\n }\r\n );\r\n } else {\r\n this._context._element.appendChild(this.widget);\r\n }\r\n\r\n if (this._context._options.display.viewMode == 'clock') {\r\n this._context._action.do(\r\n {\r\n currentTarget: this.widget.querySelector(\r\n `.${Namespace.css.timeContainer}`\r\n ),\r\n },\r\n ActionTypes.showClock\r\n );\r\n }\r\n\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.addEventListener('click', this._actionsClickEvent)\r\n );\r\n\r\n // show the clock when using sideBySide\r\n if (this._context._options.display.sideBySide) {\r\n this._timeDisplay._update();\r\n (\r\n this.widget.getElementsByClassName(\r\n Namespace.css.clockContainer\r\n )[0] as HTMLElement\r\n ).style.display = 'grid';\r\n }\r\n }\r\n\r\n this.widget.classList.add(Namespace.css.show);\r\n if (!this._context._options.display.inline) {\r\n this._popperInstance.update();\r\n document.addEventListener('click', this._documentClickEvent);\r\n }\r\n this._context._triggerEvent({ type: Namespace.events.show });\r\n this._isVisible = true;\r\n }\r\n\r\n /**\r\n * Changes the calendar view mode. E.g. month <-> year\r\n * @param direction -/+ number to move currentViewMode\r\n * @private\r\n */\r\n _showMode(direction?: number): void {\r\n if (!this.widget) {\r\n return;\r\n }\r\n if (direction) {\r\n const max = Math.max(\r\n this._context._minViewModeNumber,\r\n Math.min(3, this._context._currentViewMode + direction)\r\n );\r\n if (this._context._currentViewMode == max) return;\r\n this._context._currentViewMode = max;\r\n }\r\n\r\n this.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div:not(.${Namespace.css.clockContainer})`\r\n )\r\n .forEach((e: HTMLElement) => (e.style.display = 'none'));\r\n\r\n const datePickerMode = DatePickerModes[this._context._currentViewMode];\r\n let picker: HTMLElement = this.widget.querySelector(\r\n `.${datePickerMode.className}`\r\n );\r\n\r\n switch (datePickerMode.className) {\r\n case Namespace.css.decadesContainer:\r\n this._decadeDisplay._update();\r\n break;\r\n case Namespace.css.yearsContainer:\r\n this._yearDisplay._update();\r\n break;\r\n case Namespace.css.monthsContainer:\r\n this._monthDisplay._update();\r\n break;\r\n case Namespace.css.daysContainer:\r\n this._dateDisplay._update();\r\n break;\r\n }\r\n\r\n picker.style.display = 'grid';\r\n this._updateCalendarHeader();\r\n }\r\n\r\n _updateCalendarHeader() {\r\n const showing = [\r\n ...this.widget.querySelector(\r\n `.${Namespace.css.dateContainer} div[style*=\"display: grid\"]`\r\n ).classList,\r\n ].find((x) => x.startsWith(Namespace.css.dateContainer));\r\n\r\n const [previous, switcher, next] = this._context._display.widget\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switch (showing) {\r\n case Namespace.css.decadesContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousCentury\r\n );\r\n switcher.setAttribute('title', '');\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextCentury\r\n );\r\n break;\r\n case Namespace.css.yearsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousDecade\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDecade\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextDecade\r\n );\r\n break;\r\n case Namespace.css.monthsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousYear\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectYear\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextYear\r\n );\r\n break;\r\n case Namespace.css.daysContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousMonth\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectMonth\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextMonth\r\n );\r\n switcher.innerText = this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n });\r\n break;\r\n }\r\n switcher.innerText = switcher.getAttribute(showing);\r\n }\r\n\r\n /**\r\n * Hides the picker if needed.\r\n * Remove document click event to hide when clicking outside the picker.\r\n * @fires Events#hide\r\n */\r\n hide(): void {\r\n if (!this.widget || !this._isVisible) return;\r\n\r\n this.widget.classList.remove(Namespace.css.show);\r\n\r\n if (this._isVisible) {\r\n this._context._triggerEvent({\r\n type: Namespace.events.hide,\r\n date: this._context._unset\r\n ? null\r\n : this._context.dates.lastPicked\r\n ? this._context.dates.lastPicked.clone\r\n : void 0,\r\n } as HideEvent);\r\n this._isVisible = false;\r\n }\r\n\r\n document.removeEventListener('click', this._documentClickEvent);\r\n }\r\n\r\n /**\r\n * Toggles the picker's open state. Fires a show/hide event depending.\r\n */\r\n toggle() {\r\n return this._isVisible ? this.hide() : this.show();\r\n }\r\n\r\n /**\r\n * Removes document and data-action click listener and reset the widget\r\n * @private\r\n */\r\n _dispose() {\r\n document.removeEventListener('click', this._documentClickEvent);\r\n if (!this.widget) return;\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.removeEventListener('click', this._actionsClickEvent)\r\n );\r\n this.widget.parentNode.removeChild(this.widget);\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Builds the widgets html template.\r\n * @private\r\n */\r\n private _buildWidget(): HTMLElement {\r\n const template = document.createElement('div');\r\n template.classList.add(Namespace.css.widget);\r\n\r\n const dateView = document.createElement('div');\r\n dateView.classList.add(Namespace.css.dateContainer);\r\n dateView.append(\r\n this._headTemplate,\r\n this._decadeDisplay._picker,\r\n this._yearDisplay._picker,\r\n this._monthDisplay._picker,\r\n this._dateDisplay._picker\r\n );\r\n\r\n const timeView = document.createElement('div');\r\n timeView.classList.add(Namespace.css.timeContainer);\r\n timeView.appendChild(this._timeDisplay._picker);\r\n timeView.appendChild(this._hourDisplay._picker);\r\n timeView.appendChild(this._minuteDisplay._picker);\r\n timeView.appendChild(this._secondDisplay._picker);\r\n\r\n const toolbar = document.createElement('div');\r\n toolbar.classList.add(Namespace.css.toolbar);\r\n toolbar.append(...this._toolbar);\r\n\r\n if (this._context._options.display.inline) {\r\n template.classList.add(Namespace.css.inline);\r\n }\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n template.classList.add('calendarWeeks');\r\n }\r\n\r\n if (\r\n this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n template.classList.add(Namespace.css.sideBySide);\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n const row = document.createElement('div');\r\n row.classList.add('td-row');\r\n dateView.classList.add('td-half');\r\n timeView.classList.add('td-half');\r\n\r\n row.appendChild(dateView);\r\n row.appendChild(timeView);\r\n template.appendChild(row);\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n this._widget = template;\r\n return;\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n if (this._hasDate) {\r\n if (this._hasTime) {\r\n dateView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode !== 'clock')\r\n dateView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(dateView);\r\n }\r\n\r\n if (this._hasTime) {\r\n if (this._hasDate) {\r\n timeView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode === 'clock')\r\n timeView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(timeView);\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n const arrow = document.createElement('div');\r\n arrow.classList.add('arrow');\r\n arrow.setAttribute('data-popper-arrow', '');\r\n template.appendChild(arrow);\r\n\r\n this._widget = template;\r\n }\r\n\r\n /**\r\n * Returns true if the hours, minutes, or seconds component is turned on\r\n */\r\n get _hasTime(): boolean {\r\n return (\r\n this._context._options.display.components.clock &&\r\n (this._context._options.display.components.hours ||\r\n this._context._options.display.components.minutes ||\r\n this._context._options.display.components.seconds)\r\n );\r\n }\r\n\r\n /**\r\n * Returns true if the year, month, or date component is turned on\r\n */\r\n get _hasDate(): boolean {\r\n return (\r\n this._context._options.display.components.calendar &&\r\n (this._context._options.display.components.year ||\r\n this._context._options.display.components.month ||\r\n this._context._options.display.components.date)\r\n );\r\n }\r\n\r\n /**\r\n * Get the toolbar html based on options like buttons.today\r\n * @private\r\n */\r\n get _toolbar(): HTMLElement[] {\r\n const toolbar = [];\r\n\r\n if (this._context._options.display.buttons.today) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.today);\r\n div.setAttribute('title', this._context._options.localization.today);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.today)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (\r\n !this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n let title, icon;\r\n if (this._context._options.display.viewMode === 'clock') {\r\n title = this._context._options.localization.selectDate;\r\n icon = this._context._options.display.icons.date;\r\n } else {\r\n title = this._context._options.localization.selectTime;\r\n icon = this._context._options.display.icons.time;\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.togglePicker);\r\n div.setAttribute('title', title);\r\n\r\n div.appendChild(this._iconTag(icon));\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.clear) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.clear);\r\n div.setAttribute('title', this._context._options.localization.clear);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.clear)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.close) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.close);\r\n div.setAttribute('title', this._context._options.localization.close);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.close)\r\n );\r\n toolbar.push(div);\r\n }\r\n\r\n return toolbar;\r\n }\r\n\r\n /***\r\n * Builds the base header template with next and previous icons\r\n * @private\r\n */\r\n get _headTemplate(): HTMLElement {\r\n const calendarHeader = document.createElement('div');\r\n calendarHeader.classList.add(Namespace.css.calendarHeader);\r\n\r\n const previous = document.createElement('div');\r\n previous.classList.add(Namespace.css.previous);\r\n previous.setAttribute('data-action', ActionTypes.previous);\r\n previous.appendChild(\r\n this._iconTag(this._context._options.display.icons.previous)\r\n );\r\n\r\n const switcher = document.createElement('div');\r\n switcher.classList.add(Namespace.css.switch);\r\n switcher.setAttribute('data-action', ActionTypes.pickerSwitch);\r\n\r\n const next = document.createElement('div');\r\n next.classList.add(Namespace.css.next);\r\n next.setAttribute('data-action', ActionTypes.next);\r\n next.appendChild(this._iconTag(this._context._options.display.icons.next));\r\n\r\n calendarHeader.append(previous, switcher, next);\r\n return calendarHeader;\r\n }\r\n\r\n /**\r\n * Builds an icon tag as either an ``\r\n * or with icons.type is `sprites` then an svg tag instead\r\n * @param iconClass\r\n * @private\r\n */\r\n _iconTag(iconClass: string): HTMLElement {\r\n if (this._context._options.display.icons.type === 'sprites') {\r\n const svg = document.createElement('svg');\r\n svg.innerHTML = ``;\r\n return svg;\r\n }\r\n const icon = document.createElement('i');\r\n DOMTokenList.prototype.add.apply(icon.classList, iconClass.split(' '));\r\n return icon;\r\n }\r\n\r\n /**\r\n * A document click event to hide the widget if click is outside\r\n * @private\r\n * @param e MouseEvent\r\n */\r\n private _documentClickEvent = (e: MouseEvent) => {\r\n if (this._context._options.display.keepOpen ||\r\n this._context._options.debug ||\r\n (window as any).debug) return;\r\n\r\n if (\r\n this._isVisible &&\r\n !e.composedPath().includes(this.widget) && // click inside the widget\r\n !e.composedPath()?.includes(this._context._element) // click on the element\r\n ) {\r\n this.hide();\r\n }\r\n };\r\n\r\n /**\r\n * Click event for any action like selecting a date\r\n * @param e MouseEvent\r\n * @private\r\n */\r\n private _actionsClickEvent = (e: MouseEvent) => {\r\n this._context._action.do(e);\r\n };\r\n\r\n /**\r\n * Causes the widget to get rebuilt on next show. If the picker is already open\r\n * then hide and reshow it.\r\n * @private\r\n */\r\n _rebuild() {\r\n const wasVisible = this._isVisible;\r\n if (wasVisible) this.hide();\r\n this._dispose();\r\n if (wasVisible) {\r\n this.show();\r\n }\r\n }\r\n}\r\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Dates from './dates';\n\n/**\n * Main class for date validation rules based on the options provided.\n */\nexport default class Validation {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Checks to see if the target date is valid based on the rules provided in the options.\n * Granularity can be provide to chek portions of the date instead of the whole.\n * @param targetDate\n * @param granularity\n */\n isValid(targetDate: DateTime, granularity?: Unit): boolean {\n if (\n this._context._options.restrictions.disabledDates.length > 0 &&\n this._isInDisabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledDates.length > 0 &&\n !this._isInEnabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.daysOfWeekDisabled?.length > 0 &&\n this._context._options.restrictions.daysOfWeekDisabled.indexOf(\n targetDate.weekDay\n ) !== -1\n ) {\n return false;\n }\n\n if (\n this._context._options.restrictions.minDate &&\n targetDate.isBefore(\n this._context._options.restrictions.minDate,\n granularity\n )\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.maxDate &&\n targetDate.isAfter(\n this._context._options.restrictions.maxDate,\n granularity\n )\n ) {\n return false;\n }\n\n if (\n granularity === Unit.hours ||\n granularity === Unit.minutes ||\n granularity === Unit.seconds\n ) {\n if (\n this._context._options.restrictions.disabledHours.length > 0 &&\n this._isInDisabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledHours.length > 0 &&\n !this._isInEnabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.disabledTimeIntervals.length > 0\n ) {\n for (\n let i = 0;\n i < this._context._options.restrictions.disabledTimeIntervals.length;\n i++\n ) {\n if (\n targetDate.isBetween(\n this._context._options.restrictions.disabledTimeIntervals[i].from,\n this._context._options.restrictions.disabledTimeIntervals[i].to\n )\n )\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Checks to see if the disabledDates option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInDisabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledDates ||\n this._context._options.restrictions.disabledDates.length === 0\n )\n return false;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.disabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the enabledDates option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInEnabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledDates ||\n this._context._options.restrictions.enabledDates.length === 0\n )\n return true;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.enabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the disabledHours option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInDisabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledHours ||\n this._context._options.restrictions.disabledHours.length === 0\n )\n return false;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.disabledHours.find(\n (x) => x === formattedDate\n );\n }\n\n /**\n * Checks to see if the enabledHours option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInEnabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledHours ||\n this._context._options.restrictions.enabledHours.length === 0\n )\n return true;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.enabledHours.find(\n (x) => x === formattedDate\n );\n }\n}\n","import Display from './display/index';\nimport Validation from './validation';\nimport Dates from './dates';\nimport Actions, { ActionTypes } from './actions';\nimport { DatePickerModes, DefaultOptions } from './conts';\nimport { DateTime, DateTimeFormatOptions, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options, { OptionConverter } from './options';\nimport {\n BaseEvent,\n ChangeEvent,\n ViewUpdateEvent,\n FailEvent,\n} from './event-types';\n\n/**\n * A robust and powerful date/time picker component.\n */\nclass TempusDominus {\n dates: Dates;\n\n _options: Options;\n _currentViewMode = 0;\n _subscribers: { [key: string]: ((event: any) => {})[] } = {};\n _element: HTMLElement;\n _input: HTMLInputElement;\n _unset: boolean;\n _minViewModeNumber = 0;\n _display: Display;\n _validation: Validation;\n _action: Actions;\n private _isDisabled = false;\n private _notifyChangeEventContext = 0;\n private _toggle: HTMLElement;\n private _currentPromptTimeTimeout: any;\n\n constructor(element: HTMLElement, options: Options = {} as Options) {\n if (!element) {\n Namespace.errorMessages.mustProvideElement;\n }\n this._element = element;\n this._options = this._initializeOptions(options, DefaultOptions, true);\n this._viewDate.setLocale(this._options.localization.locale);\n this._unset = true;\n\n this._display = new Display(this);\n this._validation = new Validation(this);\n this.dates = new Dates(this);\n this._action = new Actions(this);\n\n this._initializeInput();\n this._initializeToggle();\n\n if (this._options.display.inline) this._display.show();\n }\n\n _viewDate = new DateTime();\n\n get viewDate() {\n return this._viewDate;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Update the picker options. If `reset` is provide `options` will be merged with DefaultOptions instead.\n * @param options\n * @param reset\n * @public\n */\n updateOptions(options, reset = false): void {\n if (reset) this._options = this._initializeOptions(options, DefaultOptions);\n else this._options = this._initializeOptions(options, this._options);\n this._display._rebuild();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Toggles the picker open or closed. If the picker is disabled, nothing will happen.\n * @public\n */\n toggle(): void {\n if (this._isDisabled) return;\n this._display.toggle();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Shows the picker unless the picker is disabled.\n * @public\n */\n show(): void {\n if (this._isDisabled) return;\n this._display.show();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker unless the picker is disabled.\n * @public\n */\n hide(): void {\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Disables the picker and the target input field.\n * @public\n */\n disable(): void {\n this._isDisabled = true;\n // todo this might be undesired. If a dev disables the input field to\n // only allow using the picker, this will break that.\n this._input?.setAttribute('disabled', 'disabled');\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Enables the picker and the target input field.\n * @public\n */\n enable(): void {\n this._isDisabled = false;\n this._input?.removeAttribute('disabled');\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Clears all the selected dates\n * @public\n */\n clear(): void {\n this.dates.clear();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Allows for a direct subscription to picker events, without having to use addEventListener on the element.\n * @param eventTypes See Namespace.Events\n * @param callbacks Function to call when event is triggered\n * @public\n */\n subscribe(\n eventTypes: string | string[],\n callbacks: (event: any) => void | ((event: any) => void)[]\n ): { unsubscribe: void }[] {\n if (typeof eventTypes === 'string') {\n eventTypes = [eventTypes];\n }\n let callBackArray = [];\n if (!Array.isArray(callbacks)) {\n callBackArray = [callbacks];\n } else {\n callBackArray = callbacks;\n }\n\n if (eventTypes.length !== callBackArray.length) {\n Namespace.errorMessages.subscribeMismatch;\n }\n\n const returnArray = [];\n\n for (let i = 0; i < eventTypes.length; i++) {\n const eventType = eventTypes[i];\n if (!Array.isArray(this._subscribers[eventType])) {\n this._subscribers[eventType] = [];\n }\n\n this._subscribers[eventType].push(callBackArray[i]);\n\n returnArray.push({\n unsubscribe: this._unsubscribe.bind(\n this,\n eventType,\n this._subscribers[eventType].length - 1\n ),\n });\n\n if (eventTypes.length === 1) {\n return returnArray[0];\n }\n }\n\n return returnArray;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker and removes event listeners\n */\n dispose() {\n this._display.hide();\n // this will clear the document click event listener\n this._display._dispose();\n this._input?.removeEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input?.removeEventListener('click', this._toggleClickEvent);\n }\n this._toggle.removeEventListener('click', this._toggleClickEvent);\n this._subscribers = {};\n }\n\n /**\n * Triggers an event like ChangeEvent when the picker has updated the value\n * of a selected date.\n * @param event Accepts a BaseEvent object.\n * @private\n */\n _triggerEvent(event: BaseEvent) {\n // checking hasOwnProperty because the BasicEvent also falls through here otherwise\n if ((event as ChangeEvent) && event.hasOwnProperty('date')) {\n const { date, oldDate, isClear } = event as ChangeEvent;\n // this was to prevent a max call stack error\n // https://github.com/tempusdominus/core/commit/15a280507f5277b31b0b3319ab1edc7c19a000fb\n // todo see if this is still needed or if there's a cleaner way\n this._notifyChangeEventContext++;\n if (\n (date && oldDate && date.isSame(oldDate)) ||\n (!isClear && !date && !oldDate) ||\n this._notifyChangeEventContext > 1\n ) {\n this._notifyChangeEventContext = 0;\n return;\n }\n this._handleAfterChangeEvent(event as ChangeEvent);\n }\n\n this._element.dispatchEvent(\n new CustomEvent(event.type, { detail: event as any })\n );\n\n if ((window as any).jQuery) {\n const $ = (window as any).jQuery;\n $(this._element).trigger(event);\n }\n\n const publish = () => {\n // return if event is not subscribed\n if (!Array.isArray(this._subscribers[event.type])) {\n return;\n }\n\n // Trigger callback for each subscriber\n this._subscribers[event.type].forEach((callback) => {\n callback(event);\n });\n };\n\n publish();\n\n this._notifyChangeEventContext = 0;\n }\n\n /**\n * Fires a ViewUpdate event when, for example, the month view is changed.\n * @param {Unit} unit\n * @private\n */\n _viewUpdate(unit: Unit) {\n this._triggerEvent({\n type: Namespace.events.update,\n change: unit,\n viewDate: this._viewDate.clone,\n } as ViewUpdateEvent);\n }\n\n private _unsubscribe(eventName, index) {\n this._subscribers[eventName].splice(index, 1);\n }\n\n /**\n * Merges two Option objects together and validates options type\n * @param config new Options\n * @param mergeTo Options to merge into\n * @param includeDataset When true, the elements data-td attributes will be included in the\n * @private\n */\n private _initializeOptions(\n config: Options,\n mergeTo: Options,\n includeDataset = false\n ): Options {\n config = OptionConverter._mergeOptions(config, mergeTo);\n if (includeDataset)\n config = OptionConverter._dataToOptions(this._element, config);\n\n OptionConverter._validateConflcits(config);\n\n config.viewDate = config.viewDate.setLocale(config.localization.locale);\n\n if (!this._viewDate.isSame(config.viewDate)) {\n this._viewDate = config.viewDate;\n }\n\n /**\n * Sets the minimum view allowed by the picker. For example the case of only\n * allowing year and month to be selected but not date.\n */\n if (config.display.components.year) {\n this._minViewModeNumber = 2;\n }\n if (config.display.components.month) {\n this._minViewModeNumber = 1;\n }\n if (config.display.components.date) {\n this._minViewModeNumber = 0;\n }\n\n this._currentViewMode = Math.max(\n this._minViewModeNumber,\n this._currentViewMode\n );\n\n // Update view mode if needed\n if (\n DatePickerModes[this._currentViewMode].name !== config.display.viewMode\n ) {\n this._currentViewMode = Math.max(\n DatePickerModes.findIndex((x) => x.name === config.display.viewMode),\n this._minViewModeNumber\n );\n }\n\n // defaults the input format based on the components enabled\n if (config.hooks.inputFormat === undefined) {\n const components = config.display.components;\n config.hooks.inputFormat = (date: DateTime) => {\n return date.format({\n year: components.calendar && components.year ? 'numeric' : undefined,\n month:\n components.calendar && components.month ? '2-digit' : undefined,\n day: components.calendar && components.date ? '2-digit' : undefined,\n hour:\n components.clock && components.hours\n ? components.useTwentyfourHour\n ? '2-digit'\n : 'numeric'\n : undefined,\n minute:\n components.clock && components.minutes ? '2-digit' : undefined,\n second:\n components.clock && components.seconds ? '2-digit' : undefined,\n hour12: !components.useTwentyfourHour,\n });\n };\n }\n\n if (this._display?.isVisible) {\n this._display._update('all');\n }\n\n return config;\n }\n\n /**\n * Checks if an input field is being used, attempts to locate one and sets an\n * event listener if found.\n * @private\n */\n private _initializeInput() {\n if (this._element.tagName == 'INPUT') {\n this._input = this._element as HTMLInputElement;\n } else {\n let query = this._element.dataset.tdTargetInput;\n if (query == undefined || query == 'nearest') {\n this._input = this._element.querySelector('input');\n } else {\n this._input = this._element.querySelector(query);\n }\n }\n\n if (!this._input) return;\n\n this._input.addEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input.addEventListener('click', this._toggleClickEvent);\n }\n\n if (this._input.value) {\n this._inputChangeEvent();\n }\n }\n\n /**\n * Attempts to locate a toggle for the picker and sets an event listener\n * @private\n */\n private _initializeToggle() {\n if (this._options.display.inline) return;\n let query = this._element.dataset.tdTargetToggle;\n if (query == 'nearest') {\n query = '[data-td-toggle=\"datetimepicker\"]';\n }\n this._toggle =\n query == undefined ? this._element : this._element.querySelector(query);\n this._toggle.addEventListener('click', this._toggleClickEvent);\n }\n\n /**\n * If the option is enabled this will render the clock view after a date pick.\n * @param e change event\n * @private\n */\n private _handleAfterChangeEvent(e: ChangeEvent) {\n if (\n // options is disabled\n !this._options.promptTimeOnDateChange ||\n this._options.display.inline ||\n this._options.display.sideBySide ||\n // time is disabled\n !this._display._hasTime ||\n // clock component is already showing\n this._display.widget\n ?.getElementsByClassName(Namespace.css.show)[0]\n .classList.contains(Namespace.css.timeContainer)\n )\n return;\n\n // First time ever. If useCurrent option is set to true (default), do nothing\n // because the first date is selected automatically.\n // or date didn't change (time did) or date changed because time did.\n if (\n (!e.oldDate && this._options.useCurrent) ||\n (e.oldDate && e.date?.isSame(e.oldDate))\n ) {\n return;\n }\n\n clearTimeout(this._currentPromptTimeTimeout);\n this._currentPromptTimeTimeout = setTimeout(() => {\n if (this._display.widget) {\n this._action.do(\n {\n currentTarget: this._display.widget.querySelector(\n `.${Namespace.css.switch} div`\n ),\n },\n ActionTypes.togglePicker\n );\n }\n }, this._options.promptTimeOnDateChangeTransitionDelay);\n }\n\n /**\n * Event for when the input field changes. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _inputChangeEvent = () => {\n const setViewDate = () => {\n if (this.dates.lastPicked) this._viewDate = this.dates.lastPicked;\n };\n\n const value = this._input.value;\n if (this._options.multipleDates) {\n try {\n const valueSplit = value.split(this._options.multipleDatesSeparator);\n for (let i = 0; i < valueSplit.length; i++) {\n if (this._options.hooks.inputParse) {\n this.dates.set(\n this._options.hooks.inputParse(valueSplit[i]),\n i,\n 'input'\n );\n } else {\n this.dates.set(valueSplit[i], i, 'input');\n }\n }\n setViewDate();\n } catch {\n console.warn(\n 'TD: Something went wrong trying to set the multidate values from the input field.'\n );\n }\n } else {\n if (this._options.hooks.inputParse) {\n this.dates.set(this._options.hooks.inputParse(value), 0, 'input');\n } else {\n this.dates.set(value, 0, 'input');\n }\n setViewDate();\n }\n };\n\n /**\n * Event for when the toggle is clicked. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _toggleClickEvent = () => {\n this.toggle();\n };\n}\n\nexport {\n TempusDominus,\n Namespace,\n DefaultOptions,\n DateTime,\n Options,\n Unit,\n DateTimeFormatOptions,\n};\n"],"names":["SecondDisplay"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tempus-dominus.esm.js","sources":["../../src/js/datetime.ts","../../src/js/errors.ts","../../src/js/namespace.ts","../../src/js/conts.ts","../../src/js/display/collapse.ts","../../src/js/actions.ts","../../src/js/display/calendar/date-display.ts","../../src/js/display/calendar/month-display.ts","../../src/js/options.ts","../../src/js/dates.ts","../../src/js/display/calendar/year-display.ts","../../src/js/display/calendar/decade-display.ts","../../src/js/display/time/time-display.ts","../../src/js/display/time/hour-display.ts","../../src/js/display/time/minute-display.ts","../../src/js/display/time/second-display.ts","../../src/js/display/index.ts","../../src/js/validation.ts","../../src/js/tempus-dominus.ts"],"sourcesContent":["export enum Unit {\r\n seconds = 'seconds',\r\n minutes = 'minutes',\r\n hours = 'hours',\r\n date = 'date',\r\n month = 'month',\r\n year = 'year',\r\n}\r\n\r\nexport interface DateTimeFormatOptions extends Intl.DateTimeFormatOptions {\r\n timeStyle?: 'short' | 'medium' | 'long';\r\n dateStyle?: 'short' | 'medium' | 'long' | 'full';\r\n}\r\n\r\n/**\r\n * For the most part this object behaves exactly the same way\r\n * as the native Date object with a little extra spice.\r\n */\r\nexport class DateTime extends Date {\r\n /**\r\n * Used with Intl.DateTimeFormat\r\n */\r\n locale = 'default';\r\n\r\n /**\r\n * Chainable way to set the {@link locale}\r\n * @param value\r\n */\r\n setLocale(value: string): this {\r\n this.locale = value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Converts a plain JS date object to a DateTime object.\r\n * Doing this allows access to format, etc.\r\n * @param date\r\n */\r\n static convert(date: Date): DateTime {\r\n if (!date) throw `A date is required`;\r\n return new DateTime(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate(),\r\n date.getHours(),\r\n date.getMinutes(),\r\n date.getSeconds(),\r\n date.getMilliseconds()\r\n );\r\n }\r\n\r\n /**\r\n * Native date manipulations are not pure functions. This function creates a duplicate of the DateTime object.\r\n */\r\n get clone() {\r\n return new DateTime(\r\n this.year,\r\n this.month,\r\n this.date,\r\n this.hours,\r\n this.minutes,\r\n this.seconds,\r\n this.getMilliseconds()\r\n ).setLocale(this.locale);\r\n }\r\n\r\n /**\r\n * Sets the current date to the start of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).startOf('month')\r\n * would return April 1, 2021, 12:00:00.000 AM (midnight)\r\n * @param unit\r\n */\r\n startOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(0);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(0, 0);\r\n break;\r\n case 'hours':\r\n this.setMinutes(0, 0, 0);\r\n break;\r\n case 'date':\r\n this.setHours(0, 0, 0, 0);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(0 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.startOf(Unit.date);\r\n this.setDate(1);\r\n break;\r\n case 'year':\r\n this.startOf(Unit.date);\r\n this.setMonth(0, 1);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the current date to the end of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).endOf('month')\r\n * would return April 30, 2021, 11:59:59.999 PM\r\n * @param unit\r\n */\r\n endOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(999);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(59, 999);\r\n break;\r\n case 'hours':\r\n this.setMinutes(59, 59, 999);\r\n break;\r\n case 'date':\r\n this.setHours(23, 59, 59, 999);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(6 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.month);\r\n this.setDate(0);\r\n break;\r\n case 'year':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.year);\r\n this.setDate(0);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Change a {@link unit} value. Value can be positive or negative\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).manipulate(1, 'month')\r\n * would return May 30, 2021, 11:45:32.984 AM\r\n * @param value A positive or negative number\r\n * @param unit\r\n */\r\n manipulate(value: number, unit: Unit): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n this[unit] += value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns a string format.\r\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat\r\n * for valid templates and locale objects\r\n * @param template An object. Uses browser defaults otherwise.\r\n * @param locale Can be a string or an array of strings. Uses browser defaults otherwise.\r\n */\r\n format(template: DateTimeFormatOptions, locale = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, template).format(this);\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is before this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isBefore(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() < compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() < compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is after this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isAfter(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() > compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() > compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is same this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isSame(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() === compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n compare = DateTime.convert(compare);\r\n return (\r\n this.clone.startOf(unit).valueOf() === compare.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Check if this is between two other DateTimes, optionally looking at unit scale. The match is exclusive.\r\n * @param left\r\n * @param right\r\n * @param unit.\r\n * @param inclusivity. A [ indicates inclusion of a value. A ( indicates exclusion.\r\n * If the inclusivity parameter is used, both indicators must be passed.\r\n */\r\n isBetween(\r\n left: DateTime,\r\n right: DateTime,\r\n unit?: Unit,\r\n inclusivity: '()' | '[]' | '(]' | '[)' = '()'\r\n ): boolean {\r\n if (unit && this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n const leftInclusivity = inclusivity[0] === '(';\r\n const rightInclusivity = inclusivity[1] === ')';\r\n\r\n return (\r\n ((leftInclusivity\r\n ? this.isAfter(left, unit)\r\n : !this.isBefore(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isBefore(right, unit)\r\n : !this.isAfter(right, unit))) ||\r\n ((leftInclusivity\r\n ? this.isBefore(left, unit)\r\n : !this.isAfter(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isAfter(right, unit)\r\n : !this.isBefore(right, unit)))\r\n );\r\n }\r\n\r\n /**\r\n * Returns flattened object of the date. Does not include literals\r\n * @param locale\r\n * @param template\r\n */\r\n parts(\r\n locale = this.locale,\r\n template: any = { dateStyle: 'full', timeStyle: 'long' }\r\n ) {\r\n const parts = {};\r\n new Intl.DateTimeFormat(locale, template)\r\n .formatToParts(this)\r\n .filter((x) => x.type !== 'literal')\r\n .forEach((x) => (parts[x.type] = x.value));\r\n return parts;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getSeconds()\r\n */\r\n get seconds(): number {\r\n return this.getSeconds();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setSeconds()\r\n */\r\n set seconds(value: number) {\r\n this.setSeconds(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get secondsFormatted(): string {\r\n return this.format({ second: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMinutes()\r\n */\r\n get minutes(): number {\r\n return this.getMinutes();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMinutes()\r\n */\r\n set minutes(value: number) {\r\n this.setMinutes(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get minutesFormatted(): string {\r\n return this.format({ minute: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getHours()\r\n */\r\n get hours(): number {\r\n return this.getHours();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setHours()\r\n */\r\n set hours(value: number) {\r\n this.setHours(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get hoursFormatted(): string {\r\n return this.format({ hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Returns two digit hours but in twelve hour mode e.g. 13 -> 1\r\n */\r\n get twelveHoursFormatted(): string {\r\n return this.format({ hour12: true, hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Get the meridiem of the date. E.g. AM or PM.\r\n * If the {@link locale} provides a \"dayPeriod\" then this will be returned,\r\n * otherwise it will return AM or PM.\r\n * @param locale\r\n */\r\n meridiem(locale: string = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, {\r\n hour: 'numeric',\r\n hour12: true,\r\n } as any)\r\n .formatToParts(this)\r\n .find((p) => p.type === 'dayPeriod')?.value;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDate()\r\n */\r\n get date(): number {\r\n return this.getDate();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setDate()\r\n */\r\n set date(value: number) {\r\n this.setDate(value);\r\n }\r\n\r\n /**\r\n * Return two digit date\r\n */\r\n get dateFormatted(): string {\r\n return this.date < 10 ? `0${this.date}` : `${this.date}`;\r\n }\r\n\r\n // https://github.com/you-dont-need/You-Dont-Need-Momentjs#week-of-year\r\n /**\r\n * Gets the week of the year\r\n */\r\n get week(): number {\r\n const startOfYear = new Date(this.year, 0, 1);\r\n startOfYear.setDate(\r\n startOfYear.getDate() + (1 - (startOfYear.getDay() % 7))\r\n );\r\n return Math.round((this.valueOf() - startOfYear.valueOf()) / 604800000) + 1;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDay()\r\n */\r\n get weekDay(): number {\r\n return this.getDay();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMonth()\r\n */\r\n get month(): number {\r\n return this.getMonth();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMonth()\r\n */\r\n set month(value: number) {\r\n this.setMonth(value);\r\n }\r\n\r\n /**\r\n * Return two digit, human expected month. E.g. January = 1, December = 12\r\n */\r\n get monthFormatted(): string {\r\n return this.month + 1 < 10 ? `0${this.month}` : `${this.month}`;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getFullYear()\r\n */\r\n get year(): number {\r\n return this.getFullYear();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setFullYear()\r\n */\r\n set year(value: number) {\r\n this.setFullYear(value);\r\n }\r\n}\r\n","import Namespace from './namespace';\n\nexport class TdError extends Error {\n code: number;\n}\n\nexport class ErrorMessages {\n private base = 'TD:';\n\n //#region out to console\n\n /**\n * Throws an error indicating that a key in the options object is invalid.\n * @param optionName\n */\n unexpectedOption(optionName: string) {\n const error = new TdError(\n `${this.base} Unexpected option: ${optionName} does not match a known option.`\n );\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error indicating that one more keys in the options object is invalid.\n * @param optionName\n */\n unexpectedOptions(optionName: string[]) {\n const error = new TdError(`${this.base}: ${optionName.join(', ')}`);\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error when an option is provide an unsupported value.\n * For example a value of 'cheese' for toolbarPlacement which only supports\n * 'top', 'bottom', 'default'.\n * @param optionName\n * @param badValue\n * @param validOptions\n */\n unexpectedOptionValue(\n optionName: string,\n badValue: string,\n validOptions: string[]\n ) {\n const error = new TdError(\n `${\n this.base\n } Unexpected option value: ${optionName} does not accept a value of \"${badValue}\". Valid values are: ${validOptions.join(\n ', '\n )}`\n );\n error.code = 2;\n throw error;\n }\n\n /**\n * Throws an error when an option value is the wrong type.\n * For example a string value was provided to multipleDates which only\n * supports true or false.\n * @param optionName\n * @param badType\n * @param expectedType\n */\n typeMismatch(optionName: string, badType: string, expectedType: string) {\n const error = new TdError(\n `${this.base} Mismatch types: ${optionName} has a type of ${badType} instead of the required ${expectedType}`\n );\n error.code = 3;\n throw error;\n }\n\n /**\n * Throws an error when an option value is outside of the expected range.\n * For example restrictions.daysOfWeekDisabled excepts a value between 0 and 6.\n * @param optionName\n * @param lower\n * @param upper\n */\n numbersOutOfRage(optionName: string, lower: number, upper: number) {\n const error = new TdError(\n `${this.base} ${optionName} expected an array of number between ${lower} and ${upper}.`\n );\n error.code = 4;\n throw error;\n }\n\n /**\n * Throws an error when a value for a date options couldn't be parsed. Either\n * the option was an invalide string or an invalid Date object.\n * @param optionName\n * @param date\n * @param soft If true, logs a warning instead of an error.\n */\n failedToParseDate(optionName: string, date: any, soft = false) {\n const error = new TdError(\n `${this.base} Could not correctly parse \"${date}\" to a date for ${optionName}.`\n );\n error.code = 5;\n if (!soft) throw error;\n console.warn(error);\n }\n\n /**\n * Throws when an element to attach to was not provided in the constructor.\n */\n mustProvideElement() {\n const error = new TdError(`${this.base} No element was provided.`);\n error.code = 6;\n throw error;\n }\n\n /**\n * Throws if providing an array for the events to subscribe method doesn't have\n * the same number of callbacks. E.g., subscribe([1,2], [1])\n */\n subscribeMismatch() {\n const error = new TdError(\n `${this.base} The subscribed events does not match the number of callbacks`\n );\n error.code = 7;\n throw error;\n }\n\n /**\n * Throws if the configuration has conflicting rules e.g. minDate is after maxDate\n */\n conflictingConfiguration(message?: string) {\n const error = new TdError(\n `${this.base} A configuration value conflicts with another rule. ${message}`\n );\n error.code = 8;\n throw error;\n }\n\n /**\n * Logs a warning if a date option value is provided as a string, instead of\n * a date/datetime object.\n */\n dateString() {\n console.warn(\n `${this.base} Using a string for date options is not recommended unless you specify an ISO string.`\n );\n }\n\n //#endregion\n\n //#region used with notify.error\n\n /**\n * Used with an Error Event type if the user selects a date that\n * fails restriction validation.\n */\n failedToSetInvalidDate = 'Failed to set invalid date';\n\n /**\n * Used with an Error Event type when a user changes the value of the\n * input field directly, and does not provide a valid date.\n */\n failedToParseInput = 'Failed parse input field';\n\n //#endregion\n}\n","import { ErrorMessages } from './errors';\n// this is not the way I want this to stay but nested classes seemed to blown up once its compiled.\nconst NAME = 'tempus-dominus',\n version = '6.0.0-alpha1',\n dataKey = 'td';\n\n/**\n * Events\n */\nclass Events {\n key = `.${dataKey}`;\n\n /**\n * Change event. Fired when the user selects a date.\n * See also EventTypes.ChangeEvent\n */\n change = `change${this.key}`;\n\n /**\n * Emit when the view changes for example from month view to the year view.\n * See also EventTypes.ViewUpdateEvent\n */\n update = `update${this.key}`;\n\n /**\n * Emits when a selected date or value from the input field fails to meet the provided validation rules.\n * See also EventTypes.FailEvent\n */\n error = `error${this.key}`;\n\n /**\n * Show event\n * @event Events#show\n */\n show = `show${this.key}`;\n\n /**\n * Hide event\n * @event Events#hide\n */\n hide = `hide${this.key}`;\n\n // blur and focus are used in the jQuery provider but are otherwise unused.\n // keyup/down will be used later for keybinding options\n\n blur = `blur${this.key}`;\n focus = `focus${this.key}`;\n keyup = `keyup${this.key}`;\n keydown = `keydown${this.key}`;\n}\n\nclass Css {\n /**\n * The outer element for the widget.\n */\n widget = `${NAME}-widget`;\n\n /**\n * Hold the previous, next and switcher divs\n */\n calendarHeader = 'calendar-header';\n\n /**\n * The element for the action to change the calendar view. E.g. month -> year.\n */\n switch = 'picker-switch';\n\n /**\n * The elements for all of the toolbar options\n */\n toolbar = 'toolbar';\n\n /**\n * Disables the hover and rounding affect.\n */\n noHighlight = 'no-highlight';\n\n /**\n * Applied to the widget element when the side by side option is in use.\n */\n sideBySide = 'timepicker-sbs';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> July\n */\n previous = 'previous';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> September\n */\n next = 'next';\n\n /**\n * Applied to any action that would violate any restriction options. ALso applied\n * to an input field if the disabled function is called.\n */\n disabled = 'disabled';\n\n /**\n * Applied to any date that is less than requested view,\n * e.g. the last day of the previous month.\n */\n old = 'old';\n\n /**\n * Applied to any date that is greater than of requested view,\n * e.g. the last day of the previous month.\n */\n new = 'new';\n\n /**\n * Applied to any date that is currently selected.\n */\n active = 'active';\n\n //#region date element\n\n /**\n * The outer most element for the calendar view.\n */\n dateContainer = 'date-container';\n\n /**\n * The outer most element for the decades view.\n */\n decadesContainer = `${this.dateContainer}-decades`;\n\n /**\n * Applied to elements within the decades container, e.g. 2020, 2030\n */\n decade = 'decade';\n\n /**\n * The outer most element for the years view.\n */\n yearsContainer = `${this.dateContainer}-years`;\n\n /**\n * Applied to elements within the years container, e.g. 2021, 2021\n */\n year = 'year';\n\n /**\n * The outer most element for the month view.\n */\n monthsContainer = `${this.dateContainer}-months`;\n\n /**\n * Applied to elements within the month container, e.g. January, February\n */\n month = 'month';\n\n /**\n * The outer most element for the calendar view.\n */\n daysContainer = `${this.dateContainer}-days`;\n\n /**\n * Applied to elements within the day container, e.g. 1, 2..31\n */\n day = 'day';\n\n /**\n * If display.calendarWeeks is enabled, a column displaying the week of year\n * is shown. This class is applied to each cell in that column.\n */\n calendarWeeks = 'cw';\n\n /**\n * Applied to the first row of the calendar view, e.g. Sunday, Monday\n */\n dayOfTheWeek = 'dow';\n\n /**\n * Applied to the current date on the calendar view.\n */\n today = 'today';\n\n /**\n * Applied to the locale's weekend dates on the calendar view, e.g. Sunday, Saturday\n */\n weekend = 'weekend';\n\n //#endregion\n\n //#region time element\n\n /**\n * The outer most element for all time related elements.\n */\n timeContainer = 'time-container';\n\n /**\n * Applied the separator columns between time elements, e.g. hour *:* minute *:* second\n */\n separator = 'separator';\n\n /**\n * The outer most element for the clock view.\n */\n clockContainer = `${this.timeContainer}-clock`;\n\n /**\n * The outer most element for the hours selection view.\n */\n hourContainer = `${this.timeContainer}-hour`;\n\n /**\n * The outer most element for the minutes selection view.\n */\n minuteContainer = `${this.timeContainer}-minute`;\n\n /**\n * The outer most element for the seconds selection view.\n */\n secondContainer = `${this.timeContainer}-second`;\n\n /**\n * Applied to each element in the hours selection view.\n */\n hour = 'hour';\n\n /**\n * Applied to each element in the minutes selection view.\n */\n minute = 'minute';\n\n /**\n * Applied to each element in the seconds selection view.\n */\n second = 'second';\n\n /**\n * Applied AM/PM toggle button.\n */\n toggleMeridiem = 'toggleMeridiem';\n\n //#endregion\n\n //#region collapse\n\n /**\n * Applied the element of the current view mode, e.g. calendar or clock.\n */\n show = 'show';\n\n /**\n * Applied to the currently showing view mode during a transition\n * between calendar and clock views\n */\n collapsing = 'td-collapsing';\n\n /**\n * Applied to the currently hidden view mode.\n */\n collapse = 'td-collapse';\n\n //#endregion\n\n /**\n * Applied to the widget when the option display.inline is enabled.\n */\n inline = 'inline';\n}\n\nexport default class Namespace {\n static NAME = NAME;\n // noinspection JSUnusedGlobalSymbols\n static version = version;\n static dataKey = dataKey;\n\n static events = new Events();\n\n static css = new Css();\n\n static errorMessages = new ErrorMessages();\n}\n","import { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options from './options';\n\nconst DefaultOptions: Options = {\n restrictions: {\n minDate: undefined,\n maxDate: undefined,\n disabledDates: [],\n enabledDates: [],\n daysOfWeekDisabled: [],\n disabledTimeIntervals: [],\n disabledHours: [],\n enabledHours: [],\n },\n display: {\n icons: {\n type: 'icons',\n time: 'fas fa-clock',\n date: 'fas fa-calendar',\n up: 'fas fa-arrow-up',\n down: 'fas fa-arrow-down',\n previous: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n today: 'fas fa-calendar-check',\n clear: 'fas fa-trash',\n close: 'fas fa-times',\n },\n sideBySide: false,\n calendarWeeks: false,\n viewMode: 'calendar',\n toolbarPlacement: 'bottom',\n keepOpen: false,\n buttons: {\n today: false,\n clear: false,\n close: false,\n },\n components: {\n calendar: true,\n date: true,\n month: true,\n year: true,\n decades: true,\n clock: true,\n hours: true,\n minutes: true,\n seconds: false,\n useTwentyfourHour: false,\n },\n inline: false,\n },\n stepping: 1,\n useCurrent: true,\n defaultDate: undefined,\n localization: {\n today: 'Go to today',\n clear: 'Clear selection',\n close: 'Close the picker',\n selectMonth: 'Select Month',\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n selectYear: 'Select Year',\n previousYear: 'Previous Year',\n nextYear: 'Next Year',\n selectDecade: 'Select Decade',\n previousDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n previousCentury: 'Previous Century',\n nextCentury: 'Next Century',\n pickHour: 'Pick Hour',\n incrementHour: 'Increment Hour',\n decrementHour: 'Decrement Hour',\n pickMinute: 'Pick Minute',\n incrementMinute: 'Increment Minute',\n decrementMinute: 'Decrement Minute',\n pickSecond: 'Pick Second',\n incrementSecond: 'Increment Second',\n decrementSecond: 'Decrement Second',\n toggleMeridiem: 'Toggle Meridiem',\n selectTime: 'Select Time',\n selectDate: 'Select Date',\n dayViewHeaderFormat: 'long',\n locale: 'default',\n },\n keepInvalid: false,\n debug: false,\n allowInputToggle: false,\n viewDate: new DateTime(),\n multipleDates: false,\n multipleDatesSeparator: '; ',\n promptTimeOnDateChange: false,\n promptTimeOnDateChangeTransitionDelay: 200,\n hooks: {\n inputParse: undefined,\n inputFormat: undefined,\n },\n};\n\nconst DatePickerModes: {\n name: string;\n className: string;\n unit: Unit;\n step: number;\n}[] = [\n {\n name: 'calendar',\n className: Namespace.css.daysContainer,\n unit: Unit.month,\n step: 1,\n },\n {\n name: 'months',\n className: Namespace.css.monthsContainer,\n unit: Unit.year,\n step: 1,\n },\n {\n name: 'years',\n className: Namespace.css.yearsContainer,\n unit: Unit.year,\n step: 10,\n },\n {\n name: 'decades',\n className: Namespace.css.decadesContainer,\n unit: Unit.year,\n step: 100,\n },\n];\n\nexport { DefaultOptions, DatePickerModes, Namespace };\n","import Namespace from '../namespace';\n\n/**\n * Provides a collapse functionality to the view changes\n */\nexport default class Collapse {\n private timeOut;\n\n /**\n * Flips the show/hide state of `target`\n * @param target html element to affect.\n */\n toggle(target: HTMLElement, callback = undefined) {\n if (target.classList.contains(Namespace.css.show)) {\n this.hide(target, callback);\n } else {\n this.show(target, callback);\n }\n }\n\n /**\n * If `target` is not already showing, then show after the animation.\n * @param target\n */\n show(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse, Namespace.css.show);\n target.style.height = '';\n this.timeOut = null;\n if (callback) callback();\n };\n\n target.style.height = '0';\n target.classList.remove(Namespace.css.collapse);\n target.classList.add(Namespace.css.collapsing);\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n target.style.height = `${target.scrollHeight}px`;\n }\n\n /**\n * If `target` is not already hidden, then hide after the animation.\n * @param target HTML Element\n */\n hide(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n !target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse);\n this.timeOut = null;\n };\n\n target.style.height = `${target.getBoundingClientRect()['height']}px`;\n\n const reflow = (element) => element.offsetHeight;\n\n reflow(target);\n\n target.classList.remove(Namespace.css.collapse, Namespace.css.show);\n target.classList.add(Namespace.css.collapsing);\n target.style.height = '';\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n }\n\n /**\n * Gets the transition duration from the `element` by getting css properties\n * `transition-duration` and `transition-delay`\n * @param element HTML Element\n */\n private getTransitionDurationFromElement = (element: HTMLElement) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } =\n window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) +\n Number.parseFloat(transitionDelay)) *\n 1000\n );\n };\n}\n","import { DatePickerModes } from './conts.js';\nimport { DateTime, Unit } from './datetime';\nimport { TempusDominus } from './tempus-dominus';\nimport Collapse from './display/collapse';\nimport Namespace from './namespace';\n\n/**\n *\n */\nexport default class Actions {\n private _context: TempusDominus;\n private collapse: Collapse;\n\n constructor(context: TempusDominus) {\n this._context = context;\n this.collapse = new Collapse();\n }\n\n /**\n * Performs the selected `action`. See ActionTypes\n * @param e This is normally a click event\n * @param action If not provided, then look for a [data-action]\n */\n do(e: any, action?: ActionTypes) {\n const currentTarget = e.currentTarget;\n if (currentTarget.classList.contains(Namespace.css.disabled)) return false;\n action = action || currentTarget.dataset.action;\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n /**\n * Common function to manipulate {@link lastPicked} by `unit`\n * @param unit\n * @param value Value to change by\n */\n const manipulateAndSet = (unit: Unit, value = 1) => {\n const newDate = lastPicked.manipulate(value, unit);\n if (this._context._validation.isValid(newDate, unit)) {\n this._context.dates._setValue(\n newDate,\n this._context.dates.lastPickedIndex\n );\n }\n };\n\n switch (action) {\n case ActionTypes.next:\n case ActionTypes.previous:\n const { unit, step } = DatePickerModes[this._context._currentViewMode];\n if (action === ActionTypes.next)\n this._context._viewDate.manipulate(step, unit);\n else this._context._viewDate.manipulate(step * -1, unit);\n this._context._viewUpdate(unit);\n\n this._context._display._showMode();\n break;\n case ActionTypes.pickerSwitch:\n this._context._display._showMode(1);\n this._context._viewUpdate(\n DatePickerModes[this._context._currentViewMode].unit\n );\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.selectMonth:\n case ActionTypes.selectYear:\n case ActionTypes.selectDecade:\n const value = +currentTarget.dataset.value;\n switch (action) {\n case ActionTypes.selectMonth:\n this._context._viewDate.month = value;\n this._context._viewUpdate(Unit.month);\n break;\n case ActionTypes.selectYear:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n case ActionTypes.selectDecade:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n }\n\n if (\n this._context._currentViewMode === this._context._minViewModeNumber\n ) {\n this._context.dates._setValue(\n this._context._viewDate,\n this._context.dates.lastPickedIndex\n );\n if (!this._context._options.display.inline) {\n this._context._display.hide();\n }\n } else {\n this._context._display._showMode(-1);\n }\n break;\n case ActionTypes.selectDay:\n const day = this._context._viewDate.clone;\n if (currentTarget.classList.contains(Namespace.css.old)) {\n day.manipulate(-1, Unit.month);\n }\n if (currentTarget.classList.contains(Namespace.css.new)) {\n day.manipulate(1, Unit.month);\n }\n\n day.date = +currentTarget.dataset.day;\n let index = 0;\n if (this._context._options.multipleDates) {\n index = this._context.dates.pickedIndex(day, Unit.date);\n if (index !== -1) {\n this._context.dates._setValue(null, index); //deselect multi-date\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex + 1\n );\n }\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex\n );\n }\n\n if (\n !this._context._display._hasTime &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline &&\n !this._context._options.multipleDates\n ) {\n this._context._display.hide();\n }\n break;\n case ActionTypes.selectHour:\n let hour = +currentTarget.dataset.value;\n if (\n lastPicked.hours >= 12 &&\n !this._context._options.display.components.useTwentyfourHour\n )\n hour += 12;\n lastPicked.hours = hour;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.minutes &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectMinute:\n lastPicked.minutes = +currentTarget.dataset.value;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.seconds &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectSecond:\n lastPicked.seconds = +currentTarget.innerText;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.incrementHours:\n manipulateAndSet(Unit.hours);\n break;\n case ActionTypes.incrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping);\n break;\n case ActionTypes.incrementSeconds:\n manipulateAndSet(Unit.seconds);\n break;\n case ActionTypes.decrementHours:\n manipulateAndSet(Unit.hours, -1);\n break;\n case ActionTypes.decrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping * -1);\n break;\n case ActionTypes.decrementSeconds:\n manipulateAndSet(Unit.seconds, -1);\n break;\n case ActionTypes.toggleMeridiem:\n manipulateAndSet(\n Unit.hours,\n this._context.dates.lastPicked.hours >= 12 ? -12 : 12\n );\n break;\n case ActionTypes.togglePicker:\n this._context._display.widget\n .querySelectorAll(\n `.${Namespace.css.dateContainer}, .${Namespace.css.timeContainer}`\n )\n .forEach((htmlElement: HTMLElement) =>\n this.collapse.toggle(htmlElement)\n );\n if (\n currentTarget.getAttribute('title') ===\n this._context._options.localization.selectDate\n ) {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectTime\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.time\n ).outerHTML;\n\n this._context._display._updateCalendarHeader();\n } else {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectDate\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.date\n ).outerHTML;\n this.do(e, ActionTypes.showClock);\n this._context._display._update('clock');\n }\n break;\n case ActionTypes.showClock:\n case ActionTypes.showHours:\n case ActionTypes.showMinutes:\n case ActionTypes.showSeconds:\n this._context._display.widget\n .querySelectorAll(`.${Namespace.css.timeContainer} > div`)\n .forEach(\n (htmlElement: HTMLElement) => (htmlElement.style.display = 'none')\n );\n\n let classToUse = '';\n switch (action) {\n case ActionTypes.showClock:\n classToUse = Namespace.css.clockContainer;\n this._context._display._update('clock');\n break;\n case ActionTypes.showHours:\n classToUse = Namespace.css.hourContainer;\n this._context._display._update(Unit.hours);\n break;\n case ActionTypes.showMinutes:\n classToUse = Namespace.css.minuteContainer;\n this._context._display._update(Unit.minutes);\n break;\n case ActionTypes.showSeconds:\n classToUse = Namespace.css.secondContainer;\n this._context._display._update(Unit.seconds);\n break;\n }\n\n ((\n this._context._display.widget.getElementsByClassName(classToUse)[0]\n )).style.display = 'grid';\n break;\n case ActionTypes.clear:\n this._context.dates._setValue(null);\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.close:\n this._context._display.hide();\n break;\n case ActionTypes.today:\n const today = new DateTime().setLocale(\n this._context._options.localization.locale\n );\n this._context._viewDate = today;\n if (this._context._validation.isValid(today, Unit.date))\n this._context.dates._setValue(\n today,\n this._context.dates.lastPickedIndex\n );\n break;\n }\n }\n}\n\nexport enum ActionTypes {\n next = 'next',\n previous = 'previous',\n pickerSwitch = 'pickerSwitch',\n selectMonth = 'selectMonth',\n selectYear = 'selectYear',\n selectDecade = 'selectDecade',\n selectDay = 'selectDay',\n selectHour = 'selectHour',\n selectMinute = 'selectMinute',\n selectSecond = 'selectSecond',\n incrementHours = 'incrementHours',\n incrementMinutes = 'incrementMinutes',\n incrementSeconds = 'incrementSeconds',\n decrementHours = 'decrementHours',\n decrementMinutes = 'decrementMinutes',\n decrementSeconds = 'decrementSeconds',\n toggleMeridiem = 'toggleMeridiem',\n togglePicker = 'togglePicker',\n showClock = 'showClock',\n showHours = 'showHours',\n showMinutes = 'showMinutes',\n showSeconds = 'showSeconds',\n clear = 'clear',\n close = 'close',\n today = 'today',\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `date`\r\n */\r\nexport default class DateDisplay {\r\n private _context: TempusDominus;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.daysContainer);\r\n\r\n container.append(...this._daysOfTheWeek());\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(Namespace.css.calendarWeeks, Namespace.css.noHighlight);\r\n container.appendChild(div);\r\n }\r\n\r\n for (let i = 0; i < 42; i++) {\r\n if (i !== 0 && i % 7 === 0) {\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n container.appendChild(div);\r\n }\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDay);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update(): void {\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.daysContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.daysContainer,\r\n this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n })\r\n );\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(-1, Unit.month),\r\n Unit.month\r\n )\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(1, Unit.month),\r\n Unit.month\r\n )\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.month)\r\n .startOf('weekDay')\r\n .manipulate(12, Unit.hours);\r\n\r\n container\r\n .querySelectorAll(\r\n `[data-action=\"${ActionTypes.selectDay}\"], .${Namespace.css.calendarWeeks}`\r\n )\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (\r\n this._context._options.display.calendarWeeks &&\r\n containerClone.classList.contains(Namespace.css.calendarWeeks)\r\n ) {\r\n if (containerClone.innerText === '#') return;\r\n containerClone.innerText = `${innerDate.week}`;\r\n return;\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.day);\r\n\r\n if (innerDate.isBefore(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.old);\r\n }\r\n if (innerDate.isAfter(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.new);\r\n }\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.date)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.date)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n if (innerDate.isSame(new DateTime(), Unit.date)) {\r\n classes.push(Namespace.css.today);\r\n }\r\n if (innerDate.weekDay === 0 || innerDate.weekDay === 6) {\r\n classes.push(Namespace.css.weekend);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`\r\n );\r\n containerClone.setAttribute(\r\n 'data-day',\r\n `${innerDate.date}`\r\n );\r\n containerClone.innerText = innerDate.format({ day: \"numeric\" });\r\n innerDate.manipulate(1, Unit.date);\r\n });\r\n }\r\n\r\n /***\r\n * Generates an html row that contains the days of the week.\r\n * @private\r\n */\r\n private _daysOfTheWeek(): HTMLElement[] {\r\n let innerDate = this._context._viewDate.clone\r\n .startOf('weekDay')\r\n .startOf(Unit.date);\r\n const row = [];\r\n document.createElement('div');\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = '#';\r\n row.push(htmlDivElement);\r\n }\r\n\r\n for (let i = 0; i < 7; i++) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.dayOfTheWeek,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = innerDate.format({ weekday: 'short' });\r\n innerDate.manipulate(1, Unit.date);\r\n row.push(htmlDivElement);\r\n }\r\n\r\n return row;\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `month`\n */\nexport default class MonthDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.monthsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMonth);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.monthsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.monthsContainer,\n this._context._viewDate.format({ year: 'numeric' })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.year),\n Unit.year\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.year),\n Unit.year\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone.startOf(Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMonth}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.month);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.month)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.month)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${index}`);\n containerClone.innerText = `${innerDate.format({ month: 'short' })}`;\n innerDate.manipulate(1, Unit.month);\n });\n }\n}\n","import { DateTime, DateTimeFormatOptions } from './datetime';\nimport Namespace from './namespace';\nimport { DefaultOptions } from './conts';\n\nexport default interface Options {\n restrictions: {\n minDate: DateTime;\n maxDate: DateTime;\n enabledDates: DateTime[];\n disabledDates: DateTime[];\n enabledHours: number[];\n disabledHours: number[];\n disabledTimeIntervals: { from: DateTime; to: DateTime }[];\n daysOfWeekDisabled: number[];\n };\n display: {\n toolbarPlacement: 'top' | 'bottom';\n components: {\n calendar: boolean;\n date: boolean;\n month: boolean;\n year: boolean;\n decades: boolean;\n clock: boolean;\n hours: boolean;\n minutes: boolean;\n seconds: boolean;\n useTwentyfourHour: boolean;\n };\n buttons: { today: boolean; close: boolean; clear: boolean };\n calendarWeeks: boolean;\n icons: {\n date: string;\n next: string;\n previous: string;\n today: string;\n clear: string;\n time: string;\n up: string;\n type: 'icons' | 'sprites';\n down: string;\n close: string;\n };\n viewMode: 'clock' | 'calendar' | 'months' | 'years' | 'decades';\n sideBySide: boolean;\n inline: boolean;\n keepOpen: boolean;\n };\n stepping: number;\n useCurrent: boolean;\n defaultDate: DateTime;\n localization: {\n nextMonth: string;\n pickHour: string;\n incrementSecond: string;\n nextDecade: string;\n selectDecade: string;\n dayViewHeaderFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n decrementHour: string;\n selectDate: string;\n incrementHour: string;\n previousCentury: string;\n decrementSecond: string;\n today: string;\n previousMonth: string;\n selectYear: string;\n pickSecond: string;\n nextCentury: string;\n close: string;\n incrementMinute: string;\n selectTime: string;\n clear: string;\n toggleMeridiem: string;\n selectMonth: string;\n decrementMinute: string;\n pickMinute: string;\n nextYear: string;\n previousYear: string;\n previousDecade: string;\n locale: string;\n };\n keepInvalid: boolean;\n debug: boolean;\n allowInputToggle: boolean;\n viewDate: DateTime;\n multipleDates: boolean;\n multipleDatesSeparator: string;\n promptTimeOnDateChange: boolean;\n promptTimeOnDateChangeTransitionDelay: number;\n hooks: {\n inputParse: (value: any) => DateTime;\n inputFormat: (date: DateTime) => string;\n };\n}\n\nexport class OptionConverter {\n static _mergeOptions(providedOptions: Options, mergeTo: Options): Options {\n const newOptions = {} as Options;\n let path = '';\n const ignoreProperties = ['inputParse', 'inputFormat'];\n\n const processKey = (key, value, providedType, defaultType) => {\n switch (key) {\n case 'defaultDate': {\n const dateTime = this._dateConversion(value, 'defaultDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'defaultDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'viewDate': {\n const dateTime = this._dateConversion(value, 'viewDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'viewDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'minDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.minDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.minDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'maxDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.maxDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.maxDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'disabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.disabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.disabledHours',\n 0,\n 23\n );\n return value;\n case 'enabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.enabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.enabledHours',\n 0,\n 23\n );\n return value;\n case 'daysOfWeekDisabled':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.daysOfWeekDisabled',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 6).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.daysOfWeekDisabled',\n 0,\n 6\n );\n return value;\n case 'enabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.enabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.disabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledTimeIntervals':\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n key,\n providedType,\n 'array of { from: DateTime|Date, to: DateTime|Date }'\n );\n }\n const valueObject = value as { from: any; to: any }[];\n for (let i = 0; i < valueObject.length; i++) {\n Object.keys(valueObject[i]).forEach((vk) => {\n const subOptionName = `${key}[${i}].${vk}`;\n let d = valueObject[i][vk];\n const dateTime = this._dateConversion(d, subOptionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n subOptionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n valueObject[i][vk] = dateTime;\n });\n }\n return valueObject;\n case 'toolbarPlacement':\n case 'type':\n case 'viewMode':\n case 'dayViewHeaderFormat':\n const optionValues = {\n toolbarPlacement: ['top', 'bottom', 'default'],\n type: ['icons', 'sprites'],\n viewMode: ['clock', 'calendar', 'months', 'years', 'decades'],\n dayViewHeaderFormat: [\n 'numeric',\n '2-digit',\n 'long',\n 'short',\n 'narrow',\n ],\n };\n const keyOptions = optionValues[key];\n if (!keyOptions.includes(value))\n Namespace.errorMessages.unexpectedOptionValue(\n path.substring(1),\n value,\n keyOptions\n );\n\n return value;\n case 'inputParse':\n case 'inputFormat':\n return value;\n default:\n switch (defaultType) {\n case 'boolean':\n return value === 'true' || value === true;\n case 'number':\n return +value;\n case 'string':\n return value.toString();\n case 'object':\n return {};\n case 'function':\n return value;\n default:\n Namespace.errorMessages.typeMismatch(\n path.substring(1),\n providedType,\n defaultType\n );\n }\n }\n };\n\n /**\n * The spread operator caused sub keys to be missing after merging.\n * This is to fix that issue by using spread on the child objects first.\n * Also handles complex options like disabledDates\n * @param provided An option from new providedOptions\n * @param mergeOption Default option to compare types against\n * @param copyTo Destination object. This was add to prevent reference copies\n */\n const spread = (provided, mergeOption, copyTo) => {\n const unsupportedOptions = Object.keys(provided).filter(\n (x) => !Object.keys(mergeOption).includes(x)\n );\n if (unsupportedOptions.length > 0) {\n const flattenedOptions = OptionConverter._flattenDefaultOptions;\n\n const errors = unsupportedOptions.map((x) => {\n let error = `\"${path.substring(1)}.${x}\" in not a known option.`;\n let didYouMean = flattenedOptions.find((y) => y.includes(x));\n if (didYouMean) error += `Did you mean \"${didYouMean}\"?`;\n return error;\n });\n Namespace.errorMessages.unexpectedOptions(errors);\n }\n Object.keys(mergeOption).forEach((key) => {\n const defaultOptionValue = mergeOption[key];\n let providedType = typeof provided[key];\n let defaultType = typeof defaultOptionValue;\n let value = provided[key];\n if (!provided.hasOwnProperty(key)) {\n if (\n defaultType === 'undefined' ||\n (value?.length === 0 && Array.isArray(defaultOptionValue))\n ) {\n copyTo[key] = defaultOptionValue;\n return;\n }\n provided[key] = defaultOptionValue;\n value = provided[key];\n }\n path += `.${key}`;\n copyTo[key] = processKey(key, value, providedType, defaultType);\n\n if (typeof defaultOptionValue !== 'object' || ignoreProperties.includes(key)) {\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n return;\n }\n if (!Array.isArray(provided[key])) {\n spread(provided[key], defaultOptionValue, copyTo[key]);\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n }\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n });\n };\n spread(providedOptions, mergeTo, newOptions);\n\n return newOptions;\n }\n\n static _dataToOptions(element, options: Options): Options {\n const eData = element.dataset;\n if (\n !eData ||\n Object.keys(eData).length === 0 ||\n eData.constructor !== DOMStringMap\n )\n return options;\n let dataOptions = {} as Options;\n\n // because dataset returns camelCase including the 'td' key the option\n // key won't align\n const objectToNormalized = (object) => {\n const lowered = {};\n Object.keys(object).forEach((x) => {\n lowered[x.toLowerCase()] = x;\n });\n\n return lowered;\n };\n\n const rabbitHole = (\n split: string[],\n index: number,\n optionSubgroup: {},\n value: any\n ) => {\n // first round = display { ... }\n const normalizedOptions = objectToNormalized(optionSubgroup);\n\n const keyOption = normalizedOptions[split[index].toLowerCase()];\n const internalObject = {};\n\n if (keyOption === undefined) return internalObject;\n\n // if this is another object, continue down the rabbit hole\n if (optionSubgroup[keyOption].constructor === Object) {\n index++;\n internalObject[keyOption] = rabbitHole(\n split,\n index,\n optionSubgroup[keyOption],\n value\n );\n } else {\n internalObject[keyOption] = value;\n }\n return internalObject;\n };\n const optionsLower = objectToNormalized(options);\n\n Object.keys(eData)\n .filter((x) => x.startsWith(Namespace.dataKey))\n .map((x) => x.substring(2))\n .forEach((key) => {\n let keyOption = optionsLower[key.toLowerCase()];\n\n // dataset merges dashes to camelCase... yay\n // i.e. key = display_components_seconds\n if (key.includes('_')) {\n // [display, components, seconds]\n const split = key.split('_');\n // display\n keyOption = optionsLower[split[0].toLowerCase()];\n if (\n keyOption !== undefined &&\n options[keyOption].constructor === Object\n ) {\n dataOptions[keyOption] = rabbitHole(\n split,\n 1,\n options[keyOption],\n eData[`td${key}`]\n );\n }\n }\n // or key = multipleDate\n else if (keyOption !== undefined) {\n dataOptions[keyOption] = eData[`td${key}`];\n }\n });\n\n return this._mergeOptions(dataOptions, options);\n }\n\n /**\n * Attempts to prove `d` is a DateTime or Date or can be converted into one.\n * @param d If a string will attempt creating a date from it.\n * @private\n */\n static _dateTypeCheck(d: any): DateTime | null {\n if (d.constructor.name === DateTime.name) return d;\n if (d.constructor.name === Date.name) {\n return DateTime.convert(d);\n }\n if (typeof d === typeof '') {\n const dateTime = new DateTime(d);\n if (JSON.stringify(dateTime) === 'null') {\n return null;\n }\n return dateTime;\n }\n return null;\n }\n\n /**\n * Type checks that `value` is an array of Date or DateTime\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckDateArray(optionName: string, value, providedType: string) {\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of DateTime or Date'\n );\n }\n for (let i = 0; i < value.length; i++) {\n let d = value[i];\n const dateTime = this._dateConversion(d, optionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n value[i] = dateTime;\n }\n }\n\n /**\n * Type checks that `value` is an array of numbers\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckNumberArray(\n optionName: string,\n value,\n providedType: string\n ) {\n if (!Array.isArray(value) || value.find((x) => typeof x !== typeof 0)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of numbers'\n );\n }\n return;\n }\n\n /**\n * Attempts to convert `d` to a DateTime object\n * @param d value to convert\n * @param optionName Provides text to error messages e.g. disabledDates\n */\n static _dateConversion(d: any, optionName: string) {\n if (typeof d === typeof '' && optionName !== 'input') {\n Namespace.errorMessages.dateString();\n }\n\n const converted = this._dateTypeCheck(d);\n\n if (!converted) {\n Namespace.errorMessages.failedToParseDate(\n optionName,\n d,\n optionName === 'input'\n );\n }\n return converted;\n }\n\n private static _flatback: string[];\n\n private static get _flattenDefaultOptions(): string[] {\n if (this._flatback) return this._flatback;\n const deepKeys = (t, pre = []) =>\n Array.isArray(t)\n ? []\n : Object(t) === t\n ? Object.entries(t).flatMap(([k, v]) => deepKeys(v, [...pre, k]))\n : pre.join('.');\n\n this._flatback = deepKeys(DefaultOptions);\n\n return this._flatback;\n }\n\n /**\n * Some options conflict like min/max date. Verify that these kinds of options\n * are set correctly.\n * @param config\n */\n static _validateConflcits(config: Options) {\n if (config.restrictions.minDate && config.restrictions.maxDate) {\n if (config.restrictions.minDate.isAfter(config.restrictions.maxDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'minDate is after maxDate'\n );\n }\n\n if (config.restrictions.maxDate.isBefore(config.restrictions.minDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'maxDate is before minDate'\n );\n }\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport { ChangeEvent, FailEvent } from './event-types';\nimport { OptionConverter } from './options';\n\nexport default class Dates {\n private _dates: DateTime[] = [];\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Returns the array of selected dates\n */\n get picked(): DateTime[] {\n return this._dates;\n }\n\n /**\n * Returns the last picked value.\n */\n get lastPicked(): DateTime {\n return this._dates[this.lastPickedIndex];\n }\n\n /**\n * Returns the length of picked dates -1 or 0 if none are selected.\n */\n get lastPickedIndex(): number {\n if (this._dates.length === 0) return 0;\n return this._dates.length - 1;\n }\n\n /**\n * Adds a new DateTime to selected dates array\n * @param date\n */\n add(date: DateTime): void {\n this._dates.push(date);\n }\n\n /**\n * Tries to convert the provided value to a DateTime object.\n * If value is null|undefined then clear the value of the provided index (or 0).\n * @param value Value to convert or null|undefined\n * @param index When using multidates this is the index in the array\n * @param from Used in the warning message, useful for debugging.\n */\n set(value: any, index?: number, from: string = 'date.set') {\n if (!value) this._setValue(value, index);\n const converted = OptionConverter._dateConversion(value, from);\n if (converted) this._setValue(converted, index);\n }\n\n /**\n * Returns true if the `targetDate` is part of the selected dates array.\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n isPicked(targetDate: DateTime, unit?: Unit): boolean {\n if (!unit) return this._dates.find((x) => x === targetDate) !== undefined;\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return (\n this._dates\n .map((x) => x.format(format))\n .find((x) => x === innerDateFormatted) !== undefined\n );\n }\n\n /**\n * Returns the index at which `targetDate` is in the array.\n * This is used for updating or removing a date when multi-date is used\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n pickedIndex(targetDate: DateTime, unit?: Unit): number {\n if (!unit) return this._dates.indexOf(targetDate);\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return this._dates.map((x) => x.format(format)).indexOf(innerDateFormatted);\n }\n\n /**\n * Clears all selected dates.\n */\n clear() {\n this._context._unset = true;\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate: this.lastPicked,\n isClear: true,\n isValid: true,\n } as ChangeEvent);\n this._dates = [];\n }\n\n /**\n * Find the \"book end\" years given a `year` and a `factor`\n * @param factor e.g. 100 for decades\n * @param year e.g. 2021\n */\n static getStartEndYear(\n factor: number,\n year: number\n ): [number, number, number] {\n const step = factor / 10,\n startYear = Math.floor(year / factor) * factor,\n endYear = startYear + step * 9,\n focusValue = Math.floor(year / step) * step;\n return [startYear, endYear, focusValue];\n }\n\n /**\n * Do not use direectly. Attempts to either clear or set the `target` date at `index`.\n * If the `target` is null then the date will be cleared.\n * If multi-date is being used then it will be removed from the array.\n * If `target` is valid and multi-date is used then if `index` is\n * provided the date at that index will be replaced, otherwise it is appended.\n * @param target\n * @param index\n */\n _setValue(target?: DateTime, index?: number): void {\n const noIndex = typeof index === 'undefined',\n isClear = !target && noIndex;\n let oldDate = this._context._unset ? null : this._dates[index];\n if (!oldDate && !this._context._unset && noIndex && isClear) {\n oldDate = this.lastPicked;\n }\n\n if (target && oldDate?.isSame(target)) return;\n\n const updateInput = () => {\n if (!this._context._input) return;\n\n let newValue = this._context._options.hooks.inputFormat(target);\n if (this._context._options.multipleDates) {\n newValue = this._dates\n .map((d) => this._context._options.hooks.inputFormat(d))\n .join(this._context._options.multipleDatesSeparator);\n }\n if (this._context._input.value != newValue)\n this._context._input.value = newValue;\n };\n\n // case of calling setValue(null)\n if (!target) {\n if (\n !this._context._options.multipleDates ||\n this._dates.length === 1 ||\n isClear\n ) {\n this._context._unset = true;\n this._dates = [];\n } else {\n this._dates.splice(index, 1);\n }\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n\n updateInput();\n this._context._display._update('all');\n return;\n }\n\n index = index || 0;\n target = target.clone;\n\n // minute stepping is being used, force the minute to the closest value\n if (this._context._options.stepping !== 1) {\n target.minutes =\n Math.round(target.minutes / this._context._options.stepping) *\n this._context._options.stepping;\n target.seconds = 0;\n }\n\n if (this._context._validation.isValid(target)) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._unset = false;\n this._context._display._update('all');\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n return;\n }\n\n if (this._context._options.keepInvalid) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: false,\n } as ChangeEvent);\n }\n this._context._triggerEvent({\n type: Namespace.events.error,\n reason: Namespace.errorMessages.failedToSetInvalidDate,\n date: target,\n oldDate,\n } as FailEvent);\n }\n\n /**\n * Returns a format object based on the granularity of `unit`\n * @param unit\n */\n static getFormatByUnit(unit: Unit): object {\n switch (unit) {\n case 'date':\n return { dateStyle: 'short' };\n case 'month':\n return {\n month: 'numeric',\n year: 'numeric',\n };\n case 'year':\n return { year: 'numeric' };\n }\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\nimport Dates from '../../dates';\r\n\r\n/**\r\n * Creates and updates the grid for `year`\r\n */\r\nexport default class YearDisplay {\r\n private _context: TempusDominus;\r\n private _startYear: DateTime;\r\n private _endYear: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.yearsContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectYear);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 10,\r\n this._context._viewDate.year\r\n );\r\n this._startYear = this._context._viewDate.clone.manipulate(-1, Unit.year);\r\n this._endYear = this._context._viewDate.clone.manipulate(10, Unit.year);\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.yearsContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.yearsContainer,\r\n `${this._startYear.format({ year: 'numeric' })}-${this._endYear.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startYear, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endYear, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.year)\r\n .manipulate(-1, Unit.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectYear}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n let classes = [];\r\n classes.push(Namespace.css.year);\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.year)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.year)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute('data-value', `${innerDate.year}`);\r\n containerClone.innerText = innerDate.format({ year: \"numeric\" });\r\n\r\n innerDate.manipulate(1, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport Dates from '../../dates';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `seconds`\r\n */\r\nexport default class DecadeDisplay {\r\n private _context: TempusDominus;\r\n private _startDecade: DateTime;\r\n private _endDecade: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker() {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.decadesContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDecade);\r\n container.appendChild(div);\r\n }\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 100,\r\n this._context._viewDate.year\r\n );\r\n this._startDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._startDecade.year = start;\r\n this._endDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._endDecade.year = end;\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.decadesContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.decadesContainer,\r\n `${this._startDecade.format({ year: 'numeric' })}-${this._endDecade.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startDecade, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endDecade, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n const pickedYears = this._context.dates.picked.map((x) => x.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectDecade}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (index === 0) {\r\n containerClone.classList.add(Namespace.css.old);\r\n if (this._startDecade.year - 10 < 0) {\r\n containerClone.textContent = ' ';\r\n previous.classList.add(Namespace.css.disabled);\r\n containerClone.classList.add(Namespace.css.disabled);\r\n containerClone.setAttribute('data-value', ``);\r\n return;\r\n } else {\r\n containerClone.innerText = this._startDecade.clone.manipulate(-10, Unit.year).format({ year: 'numeric' });\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n return;\r\n }\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.decade);\r\n const startDecadeYear = this._startDecade.year;\r\n const endDecadeYear = this._startDecade.year + 9;\r\n\r\n if (\r\n !this._context._unset &&\r\n pickedYears.filter((x) => x >= startDecadeYear && x <= endDecadeYear)\r\n .length > 0\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n containerClone.innerText = `${this._startDecade.format({ year: 'numeric' })}`;\r\n\r\n this._startDecade.manipulate(10, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates the clock display\n */\nexport default class TimeDisplay {\n private _context: TempusDominus;\n private _gridColumns = '';\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the clock display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.clockContainer);\n\n container.append(...this._grid());\n\n return container;\n }\n\n /**\n * Populates the various elements with in the clock display\n * like the current hour and if the manipulation icons are enabled.\n * @private\n */\n _update(): void {\n const timesDiv = (\n this._context._display.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0]\n );\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n timesDiv\n .querySelectorAll('.disabled')\n .forEach((element) => element.classList.remove(Namespace.css.disabled));\n\n if (this._context._options.display.components.hours) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.hours}]`\n ).innerText = this._context._options.display.components.useTwentyfourHour\n ? lastPicked.hoursFormatted\n : lastPicked.twelveHoursFormatted;\n }\n\n if (this._context._options.display.components.minutes) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.minutes}]`\n ).innerText = lastPicked.minutesFormatted;\n }\n\n if (this._context._options.display.components.seconds) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.seconds}]`\n ).innerText = lastPicked.secondsFormatted;\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n const toggle = timesDiv.querySelector(\n `[data-action=${ActionTypes.toggleMeridiem}]`\n );\n\n toggle.innerText = lastPicked.meridiem();\n\n if (\n !this._context._validation.isValid(\n lastPicked.clone.manipulate(\n lastPicked.hours >= 12 ? -12 : 12,\n Unit.hours\n )\n )\n ) {\n toggle.classList.add(Namespace.css.disabled);\n } else {\n toggle.classList.remove(Namespace.css.disabled);\n }\n }\n\n timesDiv.style.gridTemplateAreas = `\"${this._gridColumns}\"`;\n }\n\n /**\n * Creates the table for the clock display depending on what options are selected.\n * @private\n */\n private _grid(): HTMLElement[] {\n this._gridColumns = '';\n const top = [],\n middle = [],\n bottom = [],\n separator = document.createElement('div'),\n upIcon = this._context._display._iconTag(\n this._context._options.display.icons.up\n ),\n downIcon = this._context._display._iconTag(\n this._context._options.display.icons.down\n );\n\n separator.classList.add(Namespace.css.separator, Namespace.css.noHighlight);\n const separatorColon = separator.cloneNode(true);\n separatorColon.innerHTML = ':';\n\n const getSeparator = (colon = false): HTMLElement => {\n return colon\n ? separatorColon.cloneNode(true)\n : separator.cloneNode(true);\n };\n\n if (this._context._options.display.components.hours) {\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.incrementHours);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickHour\n );\n divElement.setAttribute('data-action', ActionTypes.showHours);\n divElement.setAttribute('data-time-component', Unit.hours);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.decrementHours);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n this._gridColumns += 'a';\n }\n\n if (this._context._options.display.components.minutes) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.hours) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.incrementMinutes);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickMinute\n );\n divElement.setAttribute('data-action', ActionTypes.showMinutes);\n divElement.setAttribute('data-time-component', Unit.minutes);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.decrementMinutes);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (this._context._options.display.components.seconds) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.minutes) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.incrementSeconds);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickSecond\n );\n divElement.setAttribute('data-action', ActionTypes.showSeconds);\n divElement.setAttribute('data-time-component', Unit.seconds);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.decrementSeconds);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n this._gridColumns += ' a';\n let divElement = getSeparator();\n top.push(divElement);\n\n let button = document.createElement('button');\n button.setAttribute(\n 'title',\n this._context._options.localization.toggleMeridiem\n );\n button.setAttribute('data-action', ActionTypes.toggleMeridiem);\n button.setAttribute('tabindex', '-1');\n button.classList.add(Namespace.css.toggleMeridiem);\n\n divElement = document.createElement('div');\n divElement.classList.add(Namespace.css.noHighlight);\n divElement.appendChild(button);\n middle.push(divElement);\n\n divElement = getSeparator();\n bottom.push(divElement);\n }\n\n this._gridColumns = this._gridColumns.trim();\n\n return [...top, ...middle, ...bottom];\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `hours`\n */\nexport default class HourDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.hourContainer);\n\n for (\n let i = 0;\n i <\n (this._context._options.display.components.useTwentyfourHour ? 24 : 12);\n i++\n ) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectHour);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.hourContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.date);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectHour}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.hour);\n\n if (!this._context._validation.isValid(innerDate, Unit.hours)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.hours}`);\n containerClone.innerText = this._context._options.display.components\n .useTwentyfourHour\n ? innerDate.hoursFormatted\n : innerDate.twelveHoursFormatted;\n innerDate.manipulate(1, Unit.hours);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `minutes`\n */\nexport default class MinuteDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.minuteContainer);\n\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n for (let i = 0; i < 60 / step; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMinute);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.minuteContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.hours);\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMinute}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.minute);\n\n if (!this._context._validation.isValid(innerDate, Unit.minutes)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.minutes}`);\n containerClone.innerText = innerDate.minutesFormatted;\n innerDate.manipulate(step, Unit.minutes);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class secondDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.secondContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectSecond);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.secondContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.minutes);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectSecond}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.second);\n\n if (!this._context._validation.isValid(innerDate, Unit.seconds)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.seconds}`);\n containerClone.innerText = innerDate.secondsFormatted;\n innerDate.manipulate(5, Unit.seconds);\n });\n }\n}\n","import DateDisplay from './calendar/date-display';\r\nimport MonthDisplay from './calendar/month-display';\r\nimport YearDisplay from './calendar/year-display';\r\nimport DecadeDisplay from './calendar/decade-display';\r\nimport TimeDisplay from './time/time-display';\r\nimport HourDisplay from './time/hour-display';\r\nimport MinuteDisplay from './time/minute-display';\r\nimport SecondDisplay from './time/second-display';\r\nimport { DateTime, Unit } from '../datetime';\r\nimport { DatePickerModes } from '../conts';\r\nimport { TempusDominus } from '../tempus-dominus';\r\nimport { ActionTypes } from '../actions';\r\nimport { createPopper } from '@popperjs/core';\r\nimport Namespace from '../namespace';\r\nimport { HideEvent } from '../event-types';\r\n\r\n/**\r\n * Main class for all things display related.\r\n */\r\nexport default class Display {\r\n private _context: TempusDominus;\r\n private _dateDisplay: DateDisplay;\r\n private _monthDisplay: MonthDisplay;\r\n private _yearDisplay: YearDisplay;\r\n private _decadeDisplay: DecadeDisplay;\r\n private _timeDisplay: TimeDisplay;\r\n private _widget: HTMLElement;\r\n private _hourDisplay: HourDisplay;\r\n private _minuteDisplay: MinuteDisplay;\r\n private _secondDisplay: SecondDisplay;\r\n private _popperInstance: any;\r\n private _isVisible = false;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this._dateDisplay = new DateDisplay(context);\r\n this._monthDisplay = new MonthDisplay(context);\r\n this._yearDisplay = new YearDisplay(context);\r\n this._decadeDisplay = new DecadeDisplay(context);\r\n this._timeDisplay = new TimeDisplay(context);\r\n this._hourDisplay = new HourDisplay(context);\r\n this._minuteDisplay = new MinuteDisplay(context);\r\n this._secondDisplay = new SecondDisplay(context);\r\n\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Returns the widget body or undefined\r\n * @private\r\n */\r\n get widget(): HTMLElement | undefined {\r\n return this._widget;\r\n }\r\n\r\n /**\r\n * Returns this visible state of the picker (shown)\r\n */\r\n get isVisible() {\r\n return this._isVisible;\r\n }\r\n\r\n /**\r\n * Updates the table for a particular unit. Used when an option as changed or\r\n * whenever the class list might need to be refreshed.\r\n * @param unit\r\n * @private\r\n */\r\n _update(unit: Unit | 'clock' | 'calendar' | 'all'): void {\r\n if (!this.widget) return;\r\n //todo do I want some kind of error catching or other guards here?\r\n switch (unit) {\r\n case Unit.seconds:\r\n this._secondDisplay._update();\r\n break;\r\n case Unit.minutes:\r\n this._minuteDisplay._update();\r\n break;\r\n case Unit.hours:\r\n this._hourDisplay._update();\r\n break;\r\n case Unit.date:\r\n this._dateDisplay._update();\r\n break;\r\n case Unit.month:\r\n this._monthDisplay._update();\r\n break;\r\n case Unit.year:\r\n this._yearDisplay._update();\r\n break;\r\n case 'clock':\r\n this._timeDisplay._update();\r\n this._update(Unit.hours);\r\n this._update(Unit.minutes);\r\n this._update(Unit.seconds);\r\n break;\r\n case 'calendar':\r\n this._update(Unit.date);\r\n this._update(Unit.year);\r\n this._update(Unit.month);\r\n this._decadeDisplay._update();\r\n this._updateCalendarHeader();\r\n break;\r\n case 'all':\r\n if (this._hasTime) {\r\n this._update('clock');\r\n }\r\n if (this._hasDate) {\r\n this._update('calendar');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Shows the picker and creates a Popper instance if needed.\r\n * Add document click event to hide when clicking outside the picker.\r\n * @fires Events#show\r\n */\r\n show(): void {\r\n if (this.widget == undefined) {\r\n if (\r\n this._context._options.useCurrent &&\r\n !this._context._options.defaultDate &&\r\n !this._context._input?.value\r\n ) {\r\n //todo in the td4 branch a pr changed this to allow granularity\r\n const date = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n if (!this._context._options.keepInvalid) {\r\n let tries = 0;\r\n let direction = 1;\r\n if (this._context._options.restrictions.maxDate?.isBefore(date)) {\r\n direction = -1;\r\n }\r\n while (!this._context._validation.isValid(date)) {\r\n date.manipulate(direction, Unit.date);\r\n if (tries > 31) break;\r\n tries++;\r\n }\r\n }\r\n this._context.dates._setValue(date);\r\n }\r\n\r\n if (this._context._options.defaultDate) {\r\n this._context.dates._setValue(this._context._options.defaultDate);\r\n }\r\n\r\n this._buildWidget();\r\n if (this._hasDate) {\r\n this._showMode();\r\n }\r\n\r\n if (!this._context._options.display.inline) {\r\n document.body.appendChild(this.widget);\r\n\r\n this._popperInstance = createPopper(\r\n this._context._element,\r\n this.widget,\r\n {\r\n modifiers: [\r\n /* {\r\n name: 'offset',\r\n options: {\r\n offset: [2, 8],\r\n },\r\n },*/\r\n { name: 'eventListeners', enabled: true },\r\n ],\r\n placement: 'bottom-start',\r\n }\r\n );\r\n } else {\r\n this._context._element.appendChild(this.widget);\r\n }\r\n\r\n if (this._context._options.display.viewMode == 'clock') {\r\n this._context._action.do(\r\n {\r\n currentTarget: this.widget.querySelector(\r\n `.${Namespace.css.timeContainer}`\r\n ),\r\n },\r\n ActionTypes.showClock\r\n );\r\n }\r\n\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.addEventListener('click', this._actionsClickEvent)\r\n );\r\n\r\n // show the clock when using sideBySide\r\n if (this._context._options.display.sideBySide) {\r\n this._timeDisplay._update();\r\n (\r\n this.widget.getElementsByClassName(\r\n Namespace.css.clockContainer\r\n )[0] as HTMLElement\r\n ).style.display = 'grid';\r\n }\r\n }\r\n\r\n this.widget.classList.add(Namespace.css.show);\r\n if (!this._context._options.display.inline) {\r\n this._popperInstance.update();\r\n document.addEventListener('click', this._documentClickEvent);\r\n }\r\n this._context._triggerEvent({ type: Namespace.events.show });\r\n this._isVisible = true;\r\n }\r\n\r\n /**\r\n * Changes the calendar view mode. E.g. month <-> year\r\n * @param direction -/+ number to move currentViewMode\r\n * @private\r\n */\r\n _showMode(direction?: number): void {\r\n if (!this.widget) {\r\n return;\r\n }\r\n if (direction) {\r\n const max = Math.max(\r\n this._context._minViewModeNumber,\r\n Math.min(3, this._context._currentViewMode + direction)\r\n );\r\n if (this._context._currentViewMode == max) return;\r\n this._context._currentViewMode = max;\r\n }\r\n\r\n this.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div:not(.${Namespace.css.clockContainer})`\r\n )\r\n .forEach((e: HTMLElement) => (e.style.display = 'none'));\r\n\r\n const datePickerMode = DatePickerModes[this._context._currentViewMode];\r\n let picker: HTMLElement = this.widget.querySelector(\r\n `.${datePickerMode.className}`\r\n );\r\n\r\n switch (datePickerMode.className) {\r\n case Namespace.css.decadesContainer:\r\n this._decadeDisplay._update();\r\n break;\r\n case Namespace.css.yearsContainer:\r\n this._yearDisplay._update();\r\n break;\r\n case Namespace.css.monthsContainer:\r\n this._monthDisplay._update();\r\n break;\r\n case Namespace.css.daysContainer:\r\n this._dateDisplay._update();\r\n break;\r\n }\r\n\r\n picker.style.display = 'grid';\r\n this._updateCalendarHeader();\r\n }\r\n\r\n _updateCalendarHeader() {\r\n const showing = [\r\n ...this.widget.querySelector(\r\n `.${Namespace.css.dateContainer} div[style*=\"display: grid\"]`\r\n ).classList,\r\n ].find((x) => x.startsWith(Namespace.css.dateContainer));\r\n\r\n const [previous, switcher, next] = this._context._display.widget\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switch (showing) {\r\n case Namespace.css.decadesContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousCentury\r\n );\r\n switcher.setAttribute('title', '');\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextCentury\r\n );\r\n break;\r\n case Namespace.css.yearsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousDecade\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDecade\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextDecade\r\n );\r\n break;\r\n case Namespace.css.monthsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousYear\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectYear\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextYear\r\n );\r\n break;\r\n case Namespace.css.daysContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousMonth\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectMonth\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextMonth\r\n );\r\n switcher.innerText = this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n });\r\n break;\r\n }\r\n switcher.innerText = switcher.getAttribute(showing);\r\n }\r\n\r\n /**\r\n * Hides the picker if needed.\r\n * Remove document click event to hide when clicking outside the picker.\r\n * @fires Events#hide\r\n */\r\n hide(): void {\r\n if (!this.widget || !this._isVisible) return;\r\n\r\n this.widget.classList.remove(Namespace.css.show);\r\n\r\n if (this._isVisible) {\r\n this._context._triggerEvent({\r\n type: Namespace.events.hide,\r\n date: this._context._unset\r\n ? null\r\n : this._context.dates.lastPicked\r\n ? this._context.dates.lastPicked.clone\r\n : void 0,\r\n } as HideEvent);\r\n this._isVisible = false;\r\n }\r\n\r\n document.removeEventListener('click', this._documentClickEvent);\r\n }\r\n\r\n /**\r\n * Toggles the picker's open state. Fires a show/hide event depending.\r\n */\r\n toggle() {\r\n return this._isVisible ? this.hide() : this.show();\r\n }\r\n\r\n /**\r\n * Removes document and data-action click listener and reset the widget\r\n * @private\r\n */\r\n _dispose() {\r\n document.removeEventListener('click', this._documentClickEvent);\r\n if (!this.widget) return;\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.removeEventListener('click', this._actionsClickEvent)\r\n );\r\n this.widget.parentNode.removeChild(this.widget);\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Builds the widgets html template.\r\n * @private\r\n */\r\n private _buildWidget(): HTMLElement {\r\n const template = document.createElement('div');\r\n template.classList.add(Namespace.css.widget);\r\n\r\n const dateView = document.createElement('div');\r\n dateView.classList.add(Namespace.css.dateContainer);\r\n dateView.append(\r\n this._headTemplate,\r\n this._decadeDisplay._picker,\r\n this._yearDisplay._picker,\r\n this._monthDisplay._picker,\r\n this._dateDisplay._picker\r\n );\r\n\r\n const timeView = document.createElement('div');\r\n timeView.classList.add(Namespace.css.timeContainer);\r\n timeView.appendChild(this._timeDisplay._picker);\r\n timeView.appendChild(this._hourDisplay._picker);\r\n timeView.appendChild(this._minuteDisplay._picker);\r\n timeView.appendChild(this._secondDisplay._picker);\r\n\r\n const toolbar = document.createElement('div');\r\n toolbar.classList.add(Namespace.css.toolbar);\r\n toolbar.append(...this._toolbar);\r\n\r\n if (this._context._options.display.inline) {\r\n template.classList.add(Namespace.css.inline);\r\n }\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n template.classList.add('calendarWeeks');\r\n }\r\n\r\n if (\r\n this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n template.classList.add(Namespace.css.sideBySide);\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n const row = document.createElement('div');\r\n row.classList.add('td-row');\r\n dateView.classList.add('td-half');\r\n timeView.classList.add('td-half');\r\n\r\n row.appendChild(dateView);\r\n row.appendChild(timeView);\r\n template.appendChild(row);\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n this._widget = template;\r\n return;\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n if (this._hasDate) {\r\n if (this._hasTime) {\r\n dateView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode !== 'clock')\r\n dateView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(dateView);\r\n }\r\n\r\n if (this._hasTime) {\r\n if (this._hasDate) {\r\n timeView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode === 'clock')\r\n timeView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(timeView);\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n const arrow = document.createElement('div');\r\n arrow.classList.add('arrow');\r\n arrow.setAttribute('data-popper-arrow', '');\r\n template.appendChild(arrow);\r\n\r\n this._widget = template;\r\n }\r\n\r\n /**\r\n * Returns true if the hours, minutes, or seconds component is turned on\r\n */\r\n get _hasTime(): boolean {\r\n return (\r\n this._context._options.display.components.clock &&\r\n (this._context._options.display.components.hours ||\r\n this._context._options.display.components.minutes ||\r\n this._context._options.display.components.seconds)\r\n );\r\n }\r\n\r\n /**\r\n * Returns true if the year, month, or date component is turned on\r\n */\r\n get _hasDate(): boolean {\r\n return (\r\n this._context._options.display.components.calendar &&\r\n (this._context._options.display.components.year ||\r\n this._context._options.display.components.month ||\r\n this._context._options.display.components.date)\r\n );\r\n }\r\n\r\n /**\r\n * Get the toolbar html based on options like buttons.today\r\n * @private\r\n */\r\n get _toolbar(): HTMLElement[] {\r\n const toolbar = [];\r\n\r\n if (this._context._options.display.buttons.today) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.today);\r\n div.setAttribute('title', this._context._options.localization.today);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.today)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (\r\n !this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n let title, icon;\r\n if (this._context._options.display.viewMode === 'clock') {\r\n title = this._context._options.localization.selectDate;\r\n icon = this._context._options.display.icons.date;\r\n } else {\r\n title = this._context._options.localization.selectTime;\r\n icon = this._context._options.display.icons.time;\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.togglePicker);\r\n div.setAttribute('title', title);\r\n\r\n div.appendChild(this._iconTag(icon));\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.clear) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.clear);\r\n div.setAttribute('title', this._context._options.localization.clear);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.clear)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.close) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.close);\r\n div.setAttribute('title', this._context._options.localization.close);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.close)\r\n );\r\n toolbar.push(div);\r\n }\r\n\r\n return toolbar;\r\n }\r\n\r\n /***\r\n * Builds the base header template with next and previous icons\r\n * @private\r\n */\r\n get _headTemplate(): HTMLElement {\r\n const calendarHeader = document.createElement('div');\r\n calendarHeader.classList.add(Namespace.css.calendarHeader);\r\n\r\n const previous = document.createElement('div');\r\n previous.classList.add(Namespace.css.previous);\r\n previous.setAttribute('data-action', ActionTypes.previous);\r\n previous.appendChild(\r\n this._iconTag(this._context._options.display.icons.previous)\r\n );\r\n\r\n const switcher = document.createElement('div');\r\n switcher.classList.add(Namespace.css.switch);\r\n switcher.setAttribute('data-action', ActionTypes.pickerSwitch);\r\n\r\n const next = document.createElement('div');\r\n next.classList.add(Namespace.css.next);\r\n next.setAttribute('data-action', ActionTypes.next);\r\n next.appendChild(this._iconTag(this._context._options.display.icons.next));\r\n\r\n calendarHeader.append(previous, switcher, next);\r\n return calendarHeader;\r\n }\r\n\r\n /**\r\n * Builds an icon tag as either an ``\r\n * or with icons.type is `sprites` then an svg tag instead\r\n * @param iconClass\r\n * @private\r\n */\r\n _iconTag(iconClass: string): HTMLElement {\r\n if (this._context._options.display.icons.type === 'sprites') {\r\n const svg = document.createElement('svg');\r\n svg.innerHTML = ``;\r\n return svg;\r\n }\r\n const icon = document.createElement('i');\r\n DOMTokenList.prototype.add.apply(icon.classList, iconClass.split(' '));\r\n return icon;\r\n }\r\n\r\n /**\r\n * A document click event to hide the widget if click is outside\r\n * @private\r\n * @param e MouseEvent\r\n */\r\n private _documentClickEvent = (e: MouseEvent) => {\r\n if (this._context._options.display.keepOpen ||\r\n this._context._options.debug ||\r\n (window as any).debug) return;\r\n\r\n if (\r\n this._isVisible &&\r\n !e.composedPath().includes(this.widget) && // click inside the widget\r\n !e.composedPath()?.includes(this._context._element) // click on the element\r\n ) {\r\n this.hide();\r\n }\r\n };\r\n\r\n /**\r\n * Click event for any action like selecting a date\r\n * @param e MouseEvent\r\n * @private\r\n */\r\n private _actionsClickEvent = (e: MouseEvent) => {\r\n this._context._action.do(e);\r\n };\r\n\r\n /**\r\n * Causes the widget to get rebuilt on next show. If the picker is already open\r\n * then hide and reshow it.\r\n * @private\r\n */\r\n _rebuild() {\r\n const wasVisible = this._isVisible;\r\n if (wasVisible) this.hide();\r\n this._dispose();\r\n if (wasVisible) {\r\n this.show();\r\n }\r\n }\r\n}\r\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Dates from './dates';\n\n/**\n * Main class for date validation rules based on the options provided.\n */\nexport default class Validation {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Checks to see if the target date is valid based on the rules provided in the options.\n * Granularity can be provide to chek portions of the date instead of the whole.\n * @param targetDate\n * @param granularity\n */\n isValid(targetDate: DateTime, granularity?: Unit): boolean {\n if (\n this._context._options.restrictions.disabledDates.length > 0 &&\n this._isInDisabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledDates.length > 0 &&\n !this._isInEnabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.daysOfWeekDisabled?.length > 0 &&\n this._context._options.restrictions.daysOfWeekDisabled.indexOf(\n targetDate.weekDay\n ) !== -1\n ) {\n return false;\n }\n\n if (\n this._context._options.restrictions.minDate &&\n targetDate.isBefore(\n this._context._options.restrictions.minDate,\n granularity\n )\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.maxDate &&\n targetDate.isAfter(\n this._context._options.restrictions.maxDate,\n granularity\n )\n ) {\n return false;\n }\n\n if (\n granularity === Unit.hours ||\n granularity === Unit.minutes ||\n granularity === Unit.seconds\n ) {\n if (\n this._context._options.restrictions.disabledHours.length > 0 &&\n this._isInDisabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledHours.length > 0 &&\n !this._isInEnabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.disabledTimeIntervals.length > 0\n ) {\n for (\n let i = 0;\n i < this._context._options.restrictions.disabledTimeIntervals.length;\n i++\n ) {\n if (\n targetDate.isBetween(\n this._context._options.restrictions.disabledTimeIntervals[i].from,\n this._context._options.restrictions.disabledTimeIntervals[i].to\n )\n )\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Checks to see if the disabledDates option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInDisabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledDates ||\n this._context._options.restrictions.disabledDates.length === 0\n )\n return false;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.disabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the enabledDates option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInEnabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledDates ||\n this._context._options.restrictions.enabledDates.length === 0\n )\n return true;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.enabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the disabledHours option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInDisabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledHours ||\n this._context._options.restrictions.disabledHours.length === 0\n )\n return false;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.disabledHours.find(\n (x) => x === formattedDate\n );\n }\n\n /**\n * Checks to see if the enabledHours option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInEnabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledHours ||\n this._context._options.restrictions.enabledHours.length === 0\n )\n return true;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.enabledHours.find(\n (x) => x === formattedDate\n );\n }\n}\n","import Display from './display/index';\nimport Validation from './validation';\nimport Dates from './dates';\nimport Actions, { ActionTypes } from './actions';\nimport { DatePickerModes, DefaultOptions } from './conts';\nimport { DateTime, DateTimeFormatOptions, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options, { OptionConverter } from './options';\nimport {\n BaseEvent,\n ChangeEvent,\n ViewUpdateEvent,\n FailEvent,\n} from './event-types';\n\n/**\n * A robust and powerful date/time picker component.\n */\nclass TempusDominus {\n dates: Dates;\n\n _options: Options;\n _currentViewMode = 0;\n _subscribers: { [key: string]: ((event: any) => {})[] } = {};\n _element: HTMLElement;\n _input: HTMLInputElement;\n _unset: boolean;\n _minViewModeNumber = 0;\n _display: Display;\n _validation: Validation;\n _action: Actions;\n private _isDisabled = false;\n private _notifyChangeEventContext = 0;\n private _toggle: HTMLElement;\n private _currentPromptTimeTimeout: any;\n\n constructor(element: HTMLElement, options: Options = {} as Options) {\n if (!element) {\n Namespace.errorMessages.mustProvideElement;\n }\n this._element = element;\n this._options = this._initializeOptions(options, DefaultOptions, true);\n this._viewDate.setLocale(this._options.localization.locale);\n this._unset = true;\n\n this._display = new Display(this);\n this._validation = new Validation(this);\n this.dates = new Dates(this);\n this._action = new Actions(this);\n\n this._initializeInput();\n this._initializeToggle();\n\n if (this._options.display.inline) this._display.show();\n }\n\n _viewDate = new DateTime();\n\n get viewDate() {\n return this._viewDate;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Update the picker options. If `reset` is provide `options` will be merged with DefaultOptions instead.\n * @param options\n * @param reset\n * @public\n */\n updateOptions(options, reset = false): void {\n if (reset) this._options = this._initializeOptions(options, DefaultOptions);\n else this._options = this._initializeOptions(options, this._options);\n this._display._rebuild();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Toggles the picker open or closed. If the picker is disabled, nothing will happen.\n * @public\n */\n toggle(): void {\n if (this._isDisabled) return;\n this._display.toggle();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Shows the picker unless the picker is disabled.\n * @public\n */\n show(): void {\n if (this._isDisabled) return;\n this._display.show();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker unless the picker is disabled.\n * @public\n */\n hide(): void {\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Disables the picker and the target input field.\n * @public\n */\n disable(): void {\n this._isDisabled = true;\n // todo this might be undesired. If a dev disables the input field to\n // only allow using the picker, this will break that.\n this._input?.setAttribute('disabled', 'disabled');\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Enables the picker and the target input field.\n * @public\n */\n enable(): void {\n this._isDisabled = false;\n this._input?.removeAttribute('disabled');\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Clears all the selected dates\n * @public\n */\n clear(): void {\n this.dates.clear();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Allows for a direct subscription to picker events, without having to use addEventListener on the element.\n * @param eventTypes See Namespace.Events\n * @param callbacks Function to call when event is triggered\n * @public\n */\n subscribe(\n eventTypes: string | string[],\n callbacks: (event: any) => void | ((event: any) => void)[]\n ): { unsubscribe: void }[] {\n if (typeof eventTypes === 'string') {\n eventTypes = [eventTypes];\n }\n let callBackArray = [];\n if (!Array.isArray(callbacks)) {\n callBackArray = [callbacks];\n } else {\n callBackArray = callbacks;\n }\n\n if (eventTypes.length !== callBackArray.length) {\n Namespace.errorMessages.subscribeMismatch;\n }\n\n const returnArray = [];\n\n for (let i = 0; i < eventTypes.length; i++) {\n const eventType = eventTypes[i];\n if (!Array.isArray(this._subscribers[eventType])) {\n this._subscribers[eventType] = [];\n }\n\n this._subscribers[eventType].push(callBackArray[i]);\n\n returnArray.push({\n unsubscribe: this._unsubscribe.bind(\n this,\n eventType,\n this._subscribers[eventType].length - 1\n ),\n });\n\n if (eventTypes.length === 1) {\n return returnArray[0];\n }\n }\n\n return returnArray;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker and removes event listeners\n */\n dispose() {\n this._display.hide();\n // this will clear the document click event listener\n this._display._dispose();\n this._input?.removeEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input?.removeEventListener('click', this._toggleClickEvent);\n }\n this._toggle.removeEventListener('click', this._toggleClickEvent);\n this._subscribers = {};\n }\n\n /**\n * Triggers an event like ChangeEvent when the picker has updated the value\n * of a selected date.\n * @param event Accepts a BaseEvent object.\n * @private\n */\n _triggerEvent(event: BaseEvent) {\n // checking hasOwnProperty because the BasicEvent also falls through here otherwise\n if ((event as ChangeEvent) && event.hasOwnProperty('date')) {\n const { date, oldDate, isClear } = event as ChangeEvent;\n // this was to prevent a max call stack error\n // https://github.com/tempusdominus/core/commit/15a280507f5277b31b0b3319ab1edc7c19a000fb\n // todo see if this is still needed or if there's a cleaner way\n this._notifyChangeEventContext++;\n if (\n (date && oldDate && date.isSame(oldDate)) ||\n (!isClear && !date && !oldDate) ||\n this._notifyChangeEventContext > 1\n ) {\n this._notifyChangeEventContext = 0;\n return;\n }\n this._handleAfterChangeEvent(event as ChangeEvent);\n }\n\n this._element.dispatchEvent(\n new CustomEvent(event.type, { detail: event as any })\n );\n\n if ((window as any).jQuery) {\n const $ = (window as any).jQuery;\n $(this._element).trigger(event);\n }\n\n const publish = () => {\n // return if event is not subscribed\n if (!Array.isArray(this._subscribers[event.type])) {\n return;\n }\n\n // Trigger callback for each subscriber\n this._subscribers[event.type].forEach((callback) => {\n callback(event);\n });\n };\n\n publish();\n\n this._notifyChangeEventContext = 0;\n }\n\n /**\n * Fires a ViewUpdate event when, for example, the month view is changed.\n * @param {Unit} unit\n * @private\n */\n _viewUpdate(unit: Unit) {\n this._triggerEvent({\n type: Namespace.events.update,\n change: unit,\n viewDate: this._viewDate.clone,\n } as ViewUpdateEvent);\n }\n\n private _unsubscribe(eventName, index) {\n this._subscribers[eventName].splice(index, 1);\n }\n\n /**\n * Merges two Option objects together and validates options type\n * @param config new Options\n * @param mergeTo Options to merge into\n * @param includeDataset When true, the elements data-td attributes will be included in the\n * @private\n */\n private _initializeOptions(\n config: Options,\n mergeTo: Options,\n includeDataset = false\n ): Options {\n config = OptionConverter._mergeOptions(config, mergeTo);\n if (includeDataset)\n config = OptionConverter._dataToOptions(this._element, config);\n\n OptionConverter._validateConflcits(config);\n\n config.viewDate = config.viewDate.setLocale(config.localization.locale);\n\n if (!this._viewDate.isSame(config.viewDate)) {\n this._viewDate = config.viewDate;\n }\n\n /**\n * Sets the minimum view allowed by the picker. For example the case of only\n * allowing year and month to be selected but not date.\n */\n if (config.display.components.year) {\n this._minViewModeNumber = 2;\n }\n if (config.display.components.month) {\n this._minViewModeNumber = 1;\n }\n if (config.display.components.date) {\n this._minViewModeNumber = 0;\n }\n\n this._currentViewMode = Math.max(\n this._minViewModeNumber,\n this._currentViewMode\n );\n\n // Update view mode if needed\n if (\n DatePickerModes[this._currentViewMode].name !== config.display.viewMode\n ) {\n this._currentViewMode = Math.max(\n DatePickerModes.findIndex((x) => x.name === config.display.viewMode),\n this._minViewModeNumber\n );\n }\n\n // defaults the input format based on the components enabled\n if (config.hooks.inputFormat === undefined) {\n const components = config.display.components;\n config.hooks.inputFormat = (date: DateTime) => {\n return date.format({\n year: components.calendar && components.year ? 'numeric' : undefined,\n month:\n components.calendar && components.month ? '2-digit' : undefined,\n day: components.calendar && components.date ? '2-digit' : undefined,\n hour:\n components.clock && components.hours\n ? components.useTwentyfourHour\n ? '2-digit'\n : 'numeric'\n : undefined,\n minute:\n components.clock && components.minutes ? '2-digit' : undefined,\n second:\n components.clock && components.seconds ? '2-digit' : undefined,\n hour12: !components.useTwentyfourHour,\n });\n };\n }\n\n if (this._display?.isVisible) {\n this._display._update('all');\n }\n\n return config;\n }\n\n /**\n * Checks if an input field is being used, attempts to locate one and sets an\n * event listener if found.\n * @private\n */\n private _initializeInput() {\n if (this._element.tagName == 'INPUT') {\n this._input = this._element as HTMLInputElement;\n } else {\n let query = this._element.dataset.tdTargetInput;\n if (query == undefined || query == 'nearest') {\n this._input = this._element.querySelector('input');\n } else {\n this._input = this._element.querySelector(query);\n }\n }\n\n if (!this._input) return;\n\n this._input.addEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input.addEventListener('click', this._toggleClickEvent);\n }\n\n if (this._input.value) {\n this._inputChangeEvent();\n }\n }\n\n /**\n * Attempts to locate a toggle for the picker and sets an event listener\n * @private\n */\n private _initializeToggle() {\n if (this._options.display.inline) return;\n let query = this._element.dataset.tdTargetToggle;\n if (query == 'nearest') {\n query = '[data-td-toggle=\"datetimepicker\"]';\n }\n this._toggle =\n query == undefined ? this._element : this._element.querySelector(query);\n this._toggle.addEventListener('click', this._toggleClickEvent);\n }\n\n /**\n * If the option is enabled this will render the clock view after a date pick.\n * @param e change event\n * @private\n */\n private _handleAfterChangeEvent(e: ChangeEvent) {\n if (\n // options is disabled\n !this._options.promptTimeOnDateChange ||\n this._options.display.inline ||\n this._options.display.sideBySide ||\n // time is disabled\n !this._display._hasTime ||\n // clock component is already showing\n this._display.widget\n ?.getElementsByClassName(Namespace.css.show)[0]\n .classList.contains(Namespace.css.timeContainer)\n )\n return;\n\n // First time ever. If useCurrent option is set to true (default), do nothing\n // because the first date is selected automatically.\n // or date didn't change (time did) or date changed because time did.\n if (\n (!e.oldDate && this._options.useCurrent) ||\n (e.oldDate && e.date?.isSame(e.oldDate))\n ) {\n return;\n }\n\n clearTimeout(this._currentPromptTimeTimeout);\n this._currentPromptTimeTimeout = setTimeout(() => {\n if (this._display.widget) {\n this._action.do(\n {\n currentTarget: this._display.widget.querySelector(\n `.${Namespace.css.switch} div`\n ),\n },\n ActionTypes.togglePicker\n );\n }\n }, this._options.promptTimeOnDateChangeTransitionDelay);\n }\n\n /**\n * Event for when the input field changes. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _inputChangeEvent = () => {\n const setViewDate = () => {\n if (this.dates.lastPicked) this._viewDate = this.dates.lastPicked;\n };\n\n const value = this._input.value;\n if (this._options.multipleDates) {\n try {\n const valueSplit = value.split(this._options.multipleDatesSeparator);\n for (let i = 0; i < valueSplit.length; i++) {\n if (this._options.hooks.inputParse) {\n this.dates.set(\n this._options.hooks.inputParse(valueSplit[i]),\n i,\n 'input'\n );\n } else {\n this.dates.set(valueSplit[i], i, 'input');\n }\n }\n setViewDate();\n } catch {\n console.warn(\n 'TD: Something went wrong trying to set the multidate values from the input field.'\n );\n }\n } else {\n if (this._options.hooks.inputParse) {\n this.dates.set(this._options.hooks.inputParse(value), 0, 'input');\n } else {\n this.dates.set(value, 0, 'input');\n }\n setViewDate();\n }\n };\n\n /**\n * Event for when the toggle is clicked. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _toggleClickEvent = () => {\n this.toggle();\n };\n}\n\nexport {\n TempusDominus,\n Namespace,\n DefaultOptions,\n DateTime,\n Options,\n Unit,\n DateTimeFormatOptions,\n};\n"],"names":["SecondDisplay"],"mappings":"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"} \ No newline at end of file diff --git a/dist/js/tempus-dominus.js b/dist/js/tempus-dominus.js index 3405567d6..828cb7567 100644 --- a/dist/js/tempus-dominus.js +++ b/dist/js/tempus-dominus.js @@ -248,7 +248,7 @@ * Returns two digit hours */ get secondsFormatted() { - return this.seconds < 10 ? `0${this.seconds}` : `${this.seconds}`; + return this.format({ second: "2-digit" }); } /** * Shortcut to Date.getMinutes() @@ -266,7 +266,7 @@ * Returns two digit hours */ get minutesFormatted() { - return this.minutes < 10 ? `0${this.minutes}` : `${this.minutes}`; + return this.format({ minute: "2-digit" }); } /** * Shortcut to Date.getHours() @@ -284,18 +284,13 @@ * Returns two digit hours */ get hoursFormatted() { - return this.hours < 10 ? `0${this.hours}` : `${this.hours}`; + return this.format({ hour: "2-digit" }); } /** * Returns two digit hours but in twelve hour mode e.g. 13 -> 1 */ get twelveHoursFormatted() { - let hour = this.hours; - if (hour > 12) - hour = hour - 12; - if (hour === 0) - hour = 12; - return hour < 10 ? `0${hour}` : `${hour}`; + return this.format({ hour12: true, hour: "2-digit" }); } /** * Get the meridiem of the date. E.g. AM or PM. @@ -980,7 +975,7 @@ case ActionTypes.selectMonth: case ActionTypes.selectYear: case ActionTypes.selectDecade: - const value = +currentTarget.getAttribute('data-value'); + const value = +currentTarget.dataset.value; switch (action) { case ActionTypes.selectMonth: this._context._viewDate.month = value; @@ -1013,7 +1008,7 @@ if (currentTarget.classList.contains(Namespace.css.new)) { day.manipulate(1, exports.Unit.month); } - day.date = +currentTarget.innerText; + day.date = +currentTarget.dataset.day; let index = 0; if (this._context._options.multipleDates) { index = this._context.dates.pickedIndex(day, exports.Unit.date); @@ -1035,8 +1030,9 @@ } break; case ActionTypes.selectHour: - let hour = +currentTarget.getAttribute('data-value'); - if (lastPicked.hours >= 12 && !this._context._options.display.components.useTwentyfourHour) + let hour = +currentTarget.dataset.value; + if (lastPicked.hours >= 12 && + !this._context._options.display.components.useTwentyfourHour) hour += 12; lastPicked.hours = hour; this._context.dates._setValue(lastPicked, this._context.dates.lastPickedIndex); @@ -1051,7 +1047,7 @@ } break; case ActionTypes.selectMinute: - lastPicked.minutes = +currentTarget.innerText; + lastPicked.minutes = +currentTarget.dataset.value; this._context.dates._setValue(lastPicked, this._context.dates.lastPickedIndex); if (this._context._options.display.components.useTwentyfourHour && !this._context._options.display.components.seconds && @@ -1276,7 +1272,8 @@ containerClone.classList.remove(...containerClone.classList); containerClone.classList.add(...classes); containerClone.setAttribute('data-value', `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`); - containerClone.innerText = `${innerDate.date}`; + containerClone.setAttribute('data-day', `${innerDate.date}`); + containerClone.innerText = innerDate.format({ day: "numeric" }); innerDate.manipulate(1, exports.Unit.date); }); } @@ -1950,7 +1947,7 @@ const [previous, switcher, next] = container.parentElement .getElementsByClassName(Namespace.css.calendarHeader)[0] .getElementsByTagName('div'); - switcher.setAttribute(Namespace.css.yearsContainer, `${this._startYear.year}-${this._endYear.year}`); + switcher.setAttribute(Namespace.css.yearsContainer, `${this._startYear.format({ year: 'numeric' })}-${this._endYear.format({ year: 'numeric' })}`); this._context._validation.isValid(this._startYear, exports.Unit.year) ? previous.classList.remove(Namespace.css.disabled) : previous.classList.add(Namespace.css.disabled); @@ -1975,7 +1972,7 @@ containerClone.classList.remove(...containerClone.classList); containerClone.classList.add(...classes); containerClone.setAttribute('data-value', `${innerDate.year}`); - containerClone.innerText = `${innerDate.year}`; + containerClone.innerText = innerDate.format({ year: "numeric" }); innerDate.manipulate(1, exports.Unit.year); }); } @@ -2016,7 +2013,7 @@ const [previous, switcher, next] = container.parentElement .getElementsByClassName(Namespace.css.calendarHeader)[0] .getElementsByTagName('div'); - switcher.setAttribute(Namespace.css.decadesContainer, `${this._startDecade.year}-${this._endDecade.year}`); + switcher.setAttribute(Namespace.css.decadesContainer, `${this._startDecade.format({ year: 'numeric' })}-${this._endDecade.format({ year: 'numeric' })}`); this._context._validation.isValid(this._startDecade, exports.Unit.year) ? previous.classList.remove(Namespace.css.disabled) : previous.classList.add(Namespace.css.disabled); @@ -2037,7 +2034,7 @@ return; } else { - containerClone.innerText = `${this._startDecade.year - 10}`; + containerClone.innerText = this._startDecade.clone.manipulate(-10, exports.Unit.year).format({ year: 'numeric' }); containerClone.setAttribute('data-value', `${this._startDecade.year}`); return; } @@ -2054,7 +2051,7 @@ containerClone.classList.remove(...containerClone.classList); containerClone.classList.add(...classes); containerClone.setAttribute('data-value', `${this._startDecade.year}`); - containerClone.innerText = `${this._startDecade.year}`; + containerClone.innerText = `${this._startDecade.format({ year: 'numeric' })}`; this._startDecade.manipulate(10, exports.Unit.year); }); } diff --git a/dist/js/tempus-dominus.js.map b/dist/js/tempus-dominus.js.map index a7d5bbe68..1d8e3abe1 100644 --- a/dist/js/tempus-dominus.js.map +++ b/dist/js/tempus-dominus.js.map @@ -1 +1 @@ -{"version":3,"file":"tempus-dominus.js","sources":["../../src/js/datetime.ts","../../src/js/errors.ts","../../src/js/namespace.ts","../../src/js/conts.ts","../../src/js/display/collapse.ts","../../src/js/actions.ts","../../src/js/display/calendar/date-display.ts","../../src/js/display/calendar/month-display.ts","../../src/js/options.ts","../../src/js/dates.ts","../../src/js/display/calendar/year-display.ts","../../src/js/display/calendar/decade-display.ts","../../src/js/display/time/time-display.ts","../../src/js/display/time/hour-display.ts","../../src/js/display/time/minute-display.ts","../../src/js/display/time/second-display.ts","../../src/js/display/index.ts","../../src/js/validation.ts","../../src/js/tempus-dominus.ts"],"sourcesContent":["export enum Unit {\n seconds = 'seconds',\n minutes = 'minutes',\n hours = 'hours',\n date = 'date',\n month = 'month',\n year = 'year',\n}\n\nexport interface DateTimeFormatOptions extends Intl.DateTimeFormatOptions {\n timeStyle?: 'short' | 'medium' | 'long';\n dateStyle?: 'short' | 'medium' | 'long' | 'full';\n}\n\n/**\n * For the most part this object behaves exactly the same way\n * as the native Date object with a little extra spice.\n */\nexport class DateTime extends Date {\n /**\n * Used with Intl.DateTimeFormat\n */\n locale = 'default';\n\n /**\n * Chainable way to set the {@link locale}\n * @param value\n */\n setLocale(value: string): this {\n this.locale = value;\n return this;\n }\n\n /**\n * Converts a plain JS date object to a DateTime object.\n * Doing this allows access to format, etc.\n * @param date\n */\n static convert(date: Date): DateTime {\n if (!date) throw `A date is required`;\n return new DateTime(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n );\n }\n\n /**\n * Native date manipulations are not pure functions. This function creates a duplicate of the DateTime object.\n */\n get clone() {\n return new DateTime(\n this.year,\n this.month,\n this.date,\n this.hours,\n this.minutes,\n this.seconds,\n this.getMilliseconds()\n ).setLocale(this.locale);\n }\n\n /**\n * Sets the current date to the start of the {@link unit} provided\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).startOf('month')\n * would return April 1, 2021, 12:00:00.000 AM (midnight)\n * @param unit\n */\n startOf(unit: Unit | 'weekDay'): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n switch (unit) {\n case 'seconds':\n this.setMilliseconds(0);\n break;\n case 'minutes':\n this.setSeconds(0, 0);\n break;\n case 'hours':\n this.setMinutes(0, 0, 0);\n break;\n case 'date':\n this.setHours(0, 0, 0, 0);\n break;\n case 'weekDay':\n this.startOf(Unit.date);\n this.manipulate(0 - this.weekDay, Unit.date);\n break;\n case 'month':\n this.startOf(Unit.date);\n this.setDate(1);\n break;\n case 'year':\n this.startOf(Unit.date);\n this.setMonth(0, 1);\n break;\n }\n return this;\n }\n\n /**\n * Sets the current date to the end of the {@link unit} provided\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).endOf('month')\n * would return April 30, 2021, 11:59:59.999 PM\n * @param unit\n */\n endOf(unit: Unit | 'weekDay'): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n switch (unit) {\n case 'seconds':\n this.setMilliseconds(999);\n break;\n case 'minutes':\n this.setSeconds(59, 999);\n break;\n case 'hours':\n this.setMinutes(59, 59, 999);\n break;\n case 'date':\n this.setHours(23, 59, 59, 999);\n break;\n case 'weekDay':\n this.startOf(Unit.date);\n this.manipulate(6 - this.weekDay, Unit.date);\n break;\n case 'month':\n this.endOf(Unit.date);\n this.manipulate(1, Unit.month);\n this.setDate(0);\n break;\n case 'year':\n this.endOf(Unit.date);\n this.manipulate(1, Unit.year);\n this.setDate(0);\n break;\n }\n return this;\n }\n\n /**\n * Change a {@link unit} value. Value can be positive or negative\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).manipulate(1, 'month')\n * would return May 30, 2021, 11:45:32.984 AM\n * @param value A positive or negative number\n * @param unit\n */\n manipulate(value: number, unit: Unit): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n this[unit] += value;\n return this;\n }\n\n /**\n * Returns a string format.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat\n * for valid templates and locale objects\n * @param template An object. Uses browser defaults otherwise.\n * @param locale Can be a string or an array of strings. Uses browser defaults otherwise.\n */\n format(template: DateTimeFormatOptions, locale = this.locale): string {\n return new Intl.DateTimeFormat(locale, template).format(this);\n }\n\n /**\n * Return true if {@link compare} is before this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isBefore(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() < compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n return (\n this.clone.startOf(unit).valueOf() < compare.clone.startOf(unit).valueOf()\n );\n }\n\n /**\n * Return true if {@link compare} is after this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isAfter(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() > compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n return (\n this.clone.startOf(unit).valueOf() > compare.clone.startOf(unit).valueOf()\n );\n }\n\n /**\n * Return true if {@link compare} is same this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isSame(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() === compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n compare = DateTime.convert(compare);\n return (\n this.clone.startOf(unit).valueOf() === compare.startOf(unit).valueOf()\n );\n }\n\n /**\n * Check if this is between two other DateTimes, optionally looking at unit scale. The match is exclusive.\n * @param left\n * @param right\n * @param unit.\n * @param inclusivity. A [ indicates inclusion of a value. A ( indicates exclusion.\n * If the inclusivity parameter is used, both indicators must be passed.\n */\n isBetween(\n left: DateTime,\n right: DateTime,\n unit?: Unit,\n inclusivity: '()' | '[]' | '(]' | '[)' = '()'\n ): boolean {\n if (unit && this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n const leftInclusivity = inclusivity[0] === '(';\n const rightInclusivity = inclusivity[1] === ')';\n\n return (\n ((leftInclusivity\n ? this.isAfter(left, unit)\n : !this.isBefore(left, unit)) &&\n (rightInclusivity\n ? this.isBefore(right, unit)\n : !this.isAfter(right, unit))) ||\n ((leftInclusivity\n ? this.isBefore(left, unit)\n : !this.isAfter(left, unit)) &&\n (rightInclusivity\n ? this.isAfter(right, unit)\n : !this.isBefore(right, unit)))\n );\n }\n\n /**\n * Returns flattened object of the date. Does not include literals\n * @param locale\n * @param template\n */\n parts(\n locale = this.locale,\n template: any = { dateStyle: 'full', timeStyle: 'long' }\n ) {\n const parts = {};\n new Intl.DateTimeFormat(locale, template)\n .formatToParts(this)\n .filter((x) => x.type !== 'literal')\n .forEach((x) => (parts[x.type] = x.value));\n return parts;\n }\n\n /**\n * Shortcut to Date.getSeconds()\n */\n get seconds(): number {\n return this.getSeconds();\n }\n\n /**\n * Shortcut to Date.setSeconds()\n */\n set seconds(value: number) {\n this.setSeconds(value);\n }\n\n /**\n * Returns two digit hours\n */\n get secondsFormatted(): string {\n return this.seconds < 10 ? `0${this.seconds}` : `${this.seconds}`;\n }\n\n /**\n * Shortcut to Date.getMinutes()\n */\n get minutes(): number {\n return this.getMinutes();\n }\n\n /**\n * Shortcut to Date.setMinutes()\n */\n set minutes(value: number) {\n this.setMinutes(value);\n }\n\n /**\n * Returns two digit hours\n */\n get minutesFormatted(): string {\n return this.minutes < 10 ? `0${this.minutes}` : `${this.minutes}`;\n }\n\n /**\n * Shortcut to Date.getHours()\n */\n get hours(): number {\n return this.getHours();\n }\n\n /**\n * Shortcut to Date.setHours()\n */\n set hours(value: number) {\n this.setHours(value);\n }\n\n /**\n * Returns two digit hours\n */\n get hoursFormatted(): string {\n return this.hours < 10 ? `0${this.hours}` : `${this.hours}`;\n }\n\n /**\n * Returns two digit hours but in twelve hour mode e.g. 13 -> 1\n */\n get twelveHoursFormatted(): string {\n let hour = this.hours;\n if (hour > 12) hour = hour - 12;\n if (hour === 0) hour = 12;\n return hour < 10 ? `0${hour}` : `${hour}`;\n }\n\n /**\n * Get the meridiem of the date. E.g. AM or PM.\n * If the {@link locale} provides a \"dayPeriod\" then this will be returned,\n * otherwise it will return AM or PM.\n * @param locale\n */\n meridiem(locale: string = this.locale): string {\n return new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n hour12: true,\n } as any)\n .formatToParts(this)\n .find((p) => p.type === 'dayPeriod')?.value;\n }\n\n /**\n * Shortcut to Date.getDate()\n */\n get date(): number {\n return this.getDate();\n }\n\n /**\n * Shortcut to Date.setDate()\n */\n set date(value: number) {\n this.setDate(value);\n }\n\n /**\n * Return two digit date\n */\n get dateFormatted(): string {\n return this.date < 10 ? `0${this.date}` : `${this.date}`;\n }\n\n // https://github.com/you-dont-need/You-Dont-Need-Momentjs#week-of-year\n /**\n * Gets the week of the year\n */\n get week(): number {\n const startOfYear = new Date(this.year, 0, 1);\n startOfYear.setDate(\n startOfYear.getDate() + (1 - (startOfYear.getDay() % 7))\n );\n return Math.round((this.valueOf() - startOfYear.valueOf()) / 604800000) + 1;\n }\n\n /**\n * Shortcut to Date.getDay()\n */\n get weekDay(): number {\n return this.getDay();\n }\n\n /**\n * Shortcut to Date.getMonth()\n */\n get month(): number {\n return this.getMonth();\n }\n\n /**\n * Shortcut to Date.setMonth()\n */\n set month(value: number) {\n this.setMonth(value);\n }\n\n /**\n * Return two digit, human expected month. E.g. January = 1, December = 12\n */\n get monthFormatted(): string {\n return this.month + 1 < 10 ? `0${this.month}` : `${this.month}`;\n }\n\n /**\n * Shortcut to Date.getFullYear()\n */\n get year(): number {\n return this.getFullYear();\n }\n\n /**\n * Shortcut to Date.setFullYear()\n */\n set year(value: number) {\n this.setFullYear(value);\n }\n}\n","import Namespace from './namespace';\n\nexport class TdError extends Error {\n code: number;\n}\n\nexport class ErrorMessages {\n private base = 'TD:';\n\n //#region out to console\n\n /**\n * Throws an error indicating that a key in the options object is invalid.\n * @param optionName\n */\n unexpectedOption(optionName: string) {\n const error = new TdError(\n `${this.base} Unexpected option: ${optionName} does not match a known option.`\n );\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error indicating that one more keys in the options object is invalid.\n * @param optionName\n */\n unexpectedOptions(optionName: string[]) {\n const error = new TdError(`${this.base}: ${optionName.join(', ')}`);\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error when an option is provide an unsupported value.\n * For example a value of 'cheese' for toolbarPlacement which only supports\n * 'top', 'bottom', 'default'.\n * @param optionName\n * @param badValue\n * @param validOptions\n */\n unexpectedOptionValue(\n optionName: string,\n badValue: string,\n validOptions: string[]\n ) {\n const error = new TdError(\n `${\n this.base\n } Unexpected option value: ${optionName} does not accept a value of \"${badValue}\". Valid values are: ${validOptions.join(\n ', '\n )}`\n );\n error.code = 2;\n throw error;\n }\n\n /**\n * Throws an error when an option value is the wrong type.\n * For example a string value was provided to multipleDates which only\n * supports true or false.\n * @param optionName\n * @param badType\n * @param expectedType\n */\n typeMismatch(optionName: string, badType: string, expectedType: string) {\n const error = new TdError(\n `${this.base} Mismatch types: ${optionName} has a type of ${badType} instead of the required ${expectedType}`\n );\n error.code = 3;\n throw error;\n }\n\n /**\n * Throws an error when an option value is outside of the expected range.\n * For example restrictions.daysOfWeekDisabled excepts a value between 0 and 6.\n * @param optionName\n * @param lower\n * @param upper\n */\n numbersOutOfRage(optionName: string, lower: number, upper: number) {\n const error = new TdError(\n `${this.base} ${optionName} expected an array of number between ${lower} and ${upper}.`\n );\n error.code = 4;\n throw error;\n }\n\n /**\n * Throws an error when a value for a date options couldn't be parsed. Either\n * the option was an invalide string or an invalid Date object.\n * @param optionName\n * @param date\n * @param soft If true, logs a warning instead of an error.\n */\n failedToParseDate(optionName: string, date: any, soft = false) {\n const error = new TdError(\n `${this.base} Could not correctly parse \"${date}\" to a date for ${optionName}.`\n );\n error.code = 5;\n if (!soft) throw error;\n console.warn(error);\n }\n\n /**\n * Throws when an element to attach to was not provided in the constructor.\n */\n mustProvideElement() {\n const error = new TdError(`${this.base} No element was provided.`);\n error.code = 6;\n throw error;\n }\n\n /**\n * Throws if providing an array for the events to subscribe method doesn't have\n * the same number of callbacks. E.g., subscribe([1,2], [1])\n */\n subscribeMismatch() {\n const error = new TdError(\n `${this.base} The subscribed events does not match the number of callbacks`\n );\n error.code = 7;\n throw error;\n }\n\n /**\n * Throws if the configuration has conflicting rules e.g. minDate is after maxDate\n */\n conflictingConfiguration(message?: string) {\n const error = new TdError(\n `${this.base} A configuration value conflicts with another rule. ${message}`\n );\n error.code = 8;\n throw error;\n }\n\n /**\n * Logs a warning if a date option value is provided as a string, instead of\n * a date/datetime object.\n */\n dateString() {\n console.warn(\n `${this.base} Using a string for date options is not recommended unless you specify an ISO string.`\n );\n }\n\n //#endregion\n\n //#region used with notify.error\n\n /**\n * Used with an Error Event type if the user selects a date that\n * fails restriction validation.\n */\n failedToSetInvalidDate = 'Failed to set invalid date';\n\n /**\n * Used with an Error Event type when a user changes the value of the\n * input field directly, and does not provide a valid date.\n */\n failedToParseInput = 'Failed parse input field';\n\n //#endregion\n}\n","import { ErrorMessages } from './errors';\n// this is not the way I want this to stay but nested classes seemed to blown up once its compiled.\nconst NAME = 'tempus-dominus',\n version = '6.0.0-alpha1',\n dataKey = 'td';\n\n/**\n * Events\n */\nclass Events {\n key = `.${dataKey}`;\n\n /**\n * Change event. Fired when the user selects a date.\n * See also EventTypes.ChangeEvent\n */\n change = `change${this.key}`;\n\n /**\n * Emit when the view changes for example from month view to the year view.\n * See also EventTypes.ViewUpdateEvent\n */\n update = `update${this.key}`;\n\n /**\n * Emits when a selected date or value from the input field fails to meet the provided validation rules.\n * See also EventTypes.FailEvent\n */\n error = `error${this.key}`;\n\n /**\n * Show event\n * @event Events#show\n */\n show = `show${this.key}`;\n\n /**\n * Hide event\n * @event Events#hide\n */\n hide = `hide${this.key}`;\n\n // blur and focus are used in the jQuery provider but are otherwise unused.\n // keyup/down will be used later for keybinding options\n\n blur = `blur${this.key}`;\n focus = `focus${this.key}`;\n keyup = `keyup${this.key}`;\n keydown = `keydown${this.key}`;\n}\n\nclass Css {\n /**\n * The outer element for the widget.\n */\n widget = `${NAME}-widget`;\n\n /**\n * Hold the previous, next and switcher divs\n */\n calendarHeader = 'calendar-header';\n\n /**\n * The element for the action to change the calendar view. E.g. month -> year.\n */\n switch = 'picker-switch';\n\n /**\n * The elements for all of the toolbar options\n */\n toolbar = 'toolbar';\n\n /**\n * Disables the hover and rounding affect.\n */\n noHighlight = 'no-highlight';\n\n /**\n * Applied to the widget element when the side by side option is in use.\n */\n sideBySide = 'timepicker-sbs';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> July\n */\n previous = 'previous';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> September\n */\n next = 'next';\n\n /**\n * Applied to any action that would violate any restriction options. ALso applied\n * to an input field if the disabled function is called.\n */\n disabled = 'disabled';\n\n /**\n * Applied to any date that is less than requested view,\n * e.g. the last day of the previous month.\n */\n old = 'old';\n\n /**\n * Applied to any date that is greater than of requested view,\n * e.g. the last day of the previous month.\n */\n new = 'new';\n\n /**\n * Applied to any date that is currently selected.\n */\n active = 'active';\n\n //#region date element\n\n /**\n * The outer most element for the calendar view.\n */\n dateContainer = 'date-container';\n\n /**\n * The outer most element for the decades view.\n */\n decadesContainer = `${this.dateContainer}-decades`;\n\n /**\n * Applied to elements within the decades container, e.g. 2020, 2030\n */\n decade = 'decade';\n\n /**\n * The outer most element for the years view.\n */\n yearsContainer = `${this.dateContainer}-years`;\n\n /**\n * Applied to elements within the years container, e.g. 2021, 2021\n */\n year = 'year';\n\n /**\n * The outer most element for the month view.\n */\n monthsContainer = `${this.dateContainer}-months`;\n\n /**\n * Applied to elements within the month container, e.g. January, February\n */\n month = 'month';\n\n /**\n * The outer most element for the calendar view.\n */\n daysContainer = `${this.dateContainer}-days`;\n\n /**\n * Applied to elements within the day container, e.g. 1, 2..31\n */\n day = 'day';\n\n /**\n * If display.calendarWeeks is enabled, a column displaying the week of year\n * is shown. This class is applied to each cell in that column.\n */\n calendarWeeks = 'cw';\n\n /**\n * Applied to the first row of the calendar view, e.g. Sunday, Monday\n */\n dayOfTheWeek = 'dow';\n\n /**\n * Applied to the current date on the calendar view.\n */\n today = 'today';\n\n /**\n * Applied to the locale's weekend dates on the calendar view, e.g. Sunday, Saturday\n */\n weekend = 'weekend';\n\n //#endregion\n\n //#region time element\n\n /**\n * The outer most element for all time related elements.\n */\n timeContainer = 'time-container';\n\n /**\n * Applied the separator columns between time elements, e.g. hour *:* minute *:* second\n */\n separator = 'separator';\n\n /**\n * The outer most element for the clock view.\n */\n clockContainer = `${this.timeContainer}-clock`;\n\n /**\n * The outer most element for the hours selection view.\n */\n hourContainer = `${this.timeContainer}-hour`;\n\n /**\n * The outer most element for the minutes selection view.\n */\n minuteContainer = `${this.timeContainer}-minute`;\n\n /**\n * The outer most element for the seconds selection view.\n */\n secondContainer = `${this.timeContainer}-second`;\n\n /**\n * Applied to each element in the hours selection view.\n */\n hour = 'hour';\n\n /**\n * Applied to each element in the minutes selection view.\n */\n minute = 'minute';\n\n /**\n * Applied to each element in the seconds selection view.\n */\n second = 'second';\n\n /**\n * Applied AM/PM toggle button.\n */\n toggleMeridiem = 'toggleMeridiem';\n\n //#endregion\n\n //#region collapse\n\n /**\n * Applied the element of the current view mode, e.g. calendar or clock.\n */\n show = 'show';\n\n /**\n * Applied to the currently showing view mode during a transition\n * between calendar and clock views\n */\n collapsing = 'td-collapsing';\n\n /**\n * Applied to the currently hidden view mode.\n */\n collapse = 'td-collapse';\n\n //#endregion\n\n /**\n * Applied to the widget when the option display.inline is enabled.\n */\n inline = 'inline';\n}\n\nexport default class Namespace {\n static NAME = NAME;\n // noinspection JSUnusedGlobalSymbols\n static version = version;\n static dataKey = dataKey;\n\n static events = new Events();\n\n static css = new Css();\n\n static errorMessages = new ErrorMessages();\n}\n","import { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options from './options';\n\nconst DefaultOptions: Options = {\n restrictions: {\n minDate: undefined,\n maxDate: undefined,\n disabledDates: [],\n enabledDates: [],\n daysOfWeekDisabled: [],\n disabledTimeIntervals: [],\n disabledHours: [],\n enabledHours: [],\n },\n display: {\n icons: {\n type: 'icons',\n time: 'fas fa-clock',\n date: 'fas fa-calendar',\n up: 'fas fa-arrow-up',\n down: 'fas fa-arrow-down',\n previous: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n today: 'fas fa-calendar-check',\n clear: 'fas fa-trash',\n close: 'fas fa-times',\n },\n sideBySide: false,\n calendarWeeks: false,\n viewMode: 'calendar',\n toolbarPlacement: 'bottom',\n keepOpen: false,\n buttons: {\n today: false,\n clear: false,\n close: false,\n },\n components: {\n calendar: true,\n date: true,\n month: true,\n year: true,\n decades: true,\n clock: true,\n hours: true,\n minutes: true,\n seconds: false,\n useTwentyfourHour: false,\n },\n inline: false,\n },\n stepping: 1,\n useCurrent: true,\n defaultDate: undefined,\n localization: {\n today: 'Go to today',\n clear: 'Clear selection',\n close: 'Close the picker',\n selectMonth: 'Select Month',\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n selectYear: 'Select Year',\n previousYear: 'Previous Year',\n nextYear: 'Next Year',\n selectDecade: 'Select Decade',\n previousDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n previousCentury: 'Previous Century',\n nextCentury: 'Next Century',\n pickHour: 'Pick Hour',\n incrementHour: 'Increment Hour',\n decrementHour: 'Decrement Hour',\n pickMinute: 'Pick Minute',\n incrementMinute: 'Increment Minute',\n decrementMinute: 'Decrement Minute',\n pickSecond: 'Pick Second',\n incrementSecond: 'Increment Second',\n decrementSecond: 'Decrement Second',\n toggleMeridiem: 'Toggle Meridiem',\n selectTime: 'Select Time',\n selectDate: 'Select Date',\n dayViewHeaderFormat: 'long',\n locale: 'default',\n },\n keepInvalid: false,\n debug: false,\n allowInputToggle: false,\n viewDate: new DateTime(),\n multipleDates: false,\n multipleDatesSeparator: '; ',\n promptTimeOnDateChange: false,\n promptTimeOnDateChangeTransitionDelay: 200,\n hooks: {\n inputParse: undefined,\n inputFormat: undefined,\n },\n};\n\nconst DatePickerModes: {\n name: string;\n className: string;\n unit: Unit;\n step: number;\n}[] = [\n {\n name: 'calendar',\n className: Namespace.css.daysContainer,\n unit: Unit.month,\n step: 1,\n },\n {\n name: 'months',\n className: Namespace.css.monthsContainer,\n unit: Unit.year,\n step: 1,\n },\n {\n name: 'years',\n className: Namespace.css.yearsContainer,\n unit: Unit.year,\n step: 10,\n },\n {\n name: 'decades',\n className: Namespace.css.decadesContainer,\n unit: Unit.year,\n step: 100,\n },\n];\n\nexport { DefaultOptions, DatePickerModes, Namespace };\n","import Namespace from '../namespace';\n\n/**\n * Provides a collapse functionality to the view changes\n */\nexport default class Collapse {\n private timeOut;\n\n /**\n * Flips the show/hide state of `target`\n * @param target html element to affect.\n */\n toggle(target: HTMLElement, callback = undefined) {\n if (target.classList.contains(Namespace.css.show)) {\n this.hide(target, callback);\n } else {\n this.show(target, callback);\n }\n }\n\n /**\n * If `target` is not already showing, then show after the animation.\n * @param target\n */\n show(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse, Namespace.css.show);\n target.style.height = '';\n this.timeOut = null;\n if (callback) callback();\n };\n\n target.style.height = '0';\n target.classList.remove(Namespace.css.collapse);\n target.classList.add(Namespace.css.collapsing);\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n target.style.height = `${target.scrollHeight}px`;\n }\n\n /**\n * If `target` is not already hidden, then hide after the animation.\n * @param target HTML Element\n */\n hide(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n !target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse);\n this.timeOut = null;\n };\n\n target.style.height = `${target.getBoundingClientRect()['height']}px`;\n\n const reflow = (element) => element.offsetHeight;\n\n reflow(target);\n\n target.classList.remove(Namespace.css.collapse, Namespace.css.show);\n target.classList.add(Namespace.css.collapsing);\n target.style.height = '';\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n }\n\n /**\n * Gets the transition duration from the `element` by getting css properties\n * `transition-duration` and `transition-delay`\n * @param element HTML Element\n */\n private getTransitionDurationFromElement = (element: HTMLElement) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } =\n window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) +\n Number.parseFloat(transitionDelay)) *\n 1000\n );\n };\n}\n","import { DatePickerModes } from './conts.js';\r\nimport { DateTime, Unit } from './datetime';\r\nimport { TempusDominus } from './tempus-dominus';\r\nimport Collapse from './display/collapse';\r\nimport Namespace from './namespace';\r\n\r\n/**\r\n *\r\n */\r\nexport default class Actions {\r\n private _context: TempusDominus;\r\n private collapse: Collapse;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this.collapse = new Collapse();\r\n }\r\n\r\n /**\r\n * Performs the selected `action`. See ActionTypes\r\n * @param e This is normally a click event\r\n * @param action If not provided, then look for a [data-action]\r\n */\r\n do(e: any, action?: ActionTypes) {\r\n const currentTarget = e.currentTarget;\r\n if (currentTarget.classList.contains(Namespace.css.disabled)) return false;\r\n action = action || currentTarget.dataset.action;\r\n const lastPicked = (\r\n this._context.dates.lastPicked || this._context._viewDate\r\n ).clone;\r\n\r\n /**\r\n * Common function to manipulate {@link lastPicked} by `unit`\r\n * @param unit\r\n * @param value Value to change by\r\n */\r\n const manipulateAndSet = (unit: Unit, value = 1) => {\r\n const newDate = lastPicked.manipulate(value, unit);\r\n if (this._context._validation.isValid(newDate, unit)) {\r\n this._context.dates._setValue(\r\n newDate,\r\n this._context.dates.lastPickedIndex\r\n );\r\n }\r\n };\r\n\r\n switch (action) {\r\n case ActionTypes.next:\r\n case ActionTypes.previous:\r\n const { unit, step } = DatePickerModes[this._context._currentViewMode];\r\n if (action === ActionTypes.next)\r\n this._context._viewDate.manipulate(step, unit);\r\n else this._context._viewDate.manipulate(step * -1, unit);\r\n this._context._viewUpdate(unit);\r\n\r\n this._context._display._showMode();\r\n break;\r\n case ActionTypes.pickerSwitch:\r\n this._context._display._showMode(1);\r\n this._context._viewUpdate(\r\n DatePickerModes[this._context._currentViewMode].unit\r\n );\r\n this._context._display._updateCalendarHeader();\r\n break;\r\n case ActionTypes.selectMonth:\r\n case ActionTypes.selectYear:\r\n case ActionTypes.selectDecade:\r\n const value = +currentTarget.getAttribute('data-value');\r\n switch (action) {\r\n case ActionTypes.selectMonth:\r\n this._context._viewDate.month = value;\r\n this._context._viewUpdate(Unit.month);\r\n break;\r\n case ActionTypes.selectYear:\r\n this._context._viewDate.year = value;\r\n this._context._viewUpdate(Unit.year);\r\n break;\r\n case ActionTypes.selectDecade:\r\n this._context._viewDate.year = value;\r\n this._context._viewUpdate(Unit.year);\r\n break;\r\n }\r\n\r\n if (\r\n this._context._currentViewMode === this._context._minViewModeNumber\r\n ) {\r\n this._context.dates._setValue(\r\n this._context._viewDate,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (!this._context._options.display.inline) {\r\n this._context._display.hide();\r\n }\r\n } else {\r\n this._context._display._showMode(-1);\r\n }\r\n break;\r\n case ActionTypes.selectDay:\r\n const day = this._context._viewDate.clone;\r\n if (currentTarget.classList.contains(Namespace.css.old)) {\r\n day.manipulate(-1, Unit.month);\r\n }\r\n if (currentTarget.classList.contains(Namespace.css.new)) {\r\n day.manipulate(1, Unit.month);\r\n }\r\n\r\n day.date = +currentTarget.innerText;\r\n let index = 0;\r\n if (this._context._options.multipleDates) {\r\n index = this._context.dates.pickedIndex(day, Unit.date);\r\n if (index !== -1) {\r\n this._context.dates._setValue(null, index); //deselect multi-date\r\n } else {\r\n this._context.dates._setValue(\r\n day,\r\n this._context.dates.lastPickedIndex + 1\r\n );\r\n }\r\n } else {\r\n this._context.dates._setValue(\r\n day,\r\n this._context.dates.lastPickedIndex\r\n );\r\n }\r\n\r\n if (\r\n !this._context._display._hasTime &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline &&\r\n !this._context._options.multipleDates\r\n ) {\r\n this._context._display.hide();\r\n }\r\n break;\r\n case ActionTypes.selectHour:\r\n let hour = +currentTarget.getAttribute('data-value');\r\n if (lastPicked.hours >= 12 && !this._context._options.display.components.useTwentyfourHour) hour += 12;\r\n lastPicked.hours = hour;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.components.minutes &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.selectMinute:\r\n lastPicked.minutes = +currentTarget.innerText;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.components.seconds &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.selectSecond:\r\n lastPicked.seconds = +currentTarget.innerText;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.incrementHours:\r\n manipulateAndSet(Unit.hours);\r\n break;\r\n case ActionTypes.incrementMinutes:\r\n manipulateAndSet(Unit.minutes, this._context._options.stepping);\r\n break;\r\n case ActionTypes.incrementSeconds:\r\n manipulateAndSet(Unit.seconds);\r\n break;\r\n case ActionTypes.decrementHours:\r\n manipulateAndSet(Unit.hours, -1);\r\n break;\r\n case ActionTypes.decrementMinutes:\r\n manipulateAndSet(Unit.minutes, this._context._options.stepping * -1);\r\n break;\r\n case ActionTypes.decrementSeconds:\r\n manipulateAndSet(Unit.seconds, -1);\r\n break;\r\n case ActionTypes.toggleMeridiem:\r\n manipulateAndSet(\r\n Unit.hours,\r\n this._context.dates.lastPicked.hours >= 12 ? -12 : 12\r\n );\r\n break;\r\n case ActionTypes.togglePicker:\r\n this._context._display.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer}, .${Namespace.css.timeContainer}`\r\n )\r\n .forEach((htmlElement: HTMLElement) =>\r\n this.collapse.toggle(htmlElement)\r\n );\r\n if (\r\n currentTarget.getAttribute('title') ===\r\n this._context._options.localization.selectDate\r\n ) {\r\n currentTarget.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectTime\r\n );\r\n currentTarget.innerHTML = this._context._display._iconTag(\r\n this._context._options.display.icons.time\r\n ).outerHTML;\r\n\r\n this._context._display._updateCalendarHeader();\r\n } else {\r\n currentTarget.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDate\r\n );\r\n currentTarget.innerHTML = this._context._display._iconTag(\r\n this._context._options.display.icons.date\r\n ).outerHTML;\r\n this.do(e, ActionTypes.showClock);\r\n this._context._display._update('clock');\r\n }\r\n break;\r\n case ActionTypes.showClock:\r\n case ActionTypes.showHours:\r\n case ActionTypes.showMinutes:\r\n case ActionTypes.showSeconds:\r\n this._context._display.widget\r\n .querySelectorAll(`.${Namespace.css.timeContainer} > div`)\r\n .forEach(\r\n (htmlElement: HTMLElement) => (htmlElement.style.display = 'none')\r\n );\r\n\r\n let classToUse = '';\r\n switch (action) {\r\n case ActionTypes.showClock:\r\n classToUse = Namespace.css.clockContainer;\r\n this._context._display._update('clock');\r\n break;\r\n case ActionTypes.showHours:\r\n classToUse = Namespace.css.hourContainer;\r\n this._context._display._update(Unit.hours);\r\n break;\r\n case ActionTypes.showMinutes:\r\n classToUse = Namespace.css.minuteContainer;\r\n this._context._display._update(Unit.minutes);\r\n break;\r\n case ActionTypes.showSeconds:\r\n classToUse = Namespace.css.secondContainer;\r\n this._context._display._update(Unit.seconds);\r\n break;\r\n }\r\n\r\n ((\r\n this._context._display.widget.getElementsByClassName(classToUse)[0]\r\n )).style.display = 'grid';\r\n break;\r\n case ActionTypes.clear:\r\n this._context.dates._setValue(null);\r\n this._context._display._updateCalendarHeader();\r\n break;\r\n case ActionTypes.close:\r\n this._context._display.hide();\r\n break;\r\n case ActionTypes.today:\r\n const today = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n this._context._viewDate = today;\r\n if (this._context._validation.isValid(today, Unit.date))\r\n this._context.dates._setValue(\r\n today,\r\n this._context.dates.lastPickedIndex\r\n );\r\n break;\r\n }\r\n }\r\n}\r\n\r\nexport enum ActionTypes {\r\n next = 'next',\r\n previous = 'previous',\r\n pickerSwitch = 'pickerSwitch',\r\n selectMonth = 'selectMonth',\r\n selectYear = 'selectYear',\r\n selectDecade = 'selectDecade',\r\n selectDay = 'selectDay',\r\n selectHour = 'selectHour',\r\n selectMinute = 'selectMinute',\r\n selectSecond = 'selectSecond',\r\n incrementHours = 'incrementHours',\r\n incrementMinutes = 'incrementMinutes',\r\n incrementSeconds = 'incrementSeconds',\r\n decrementHours = 'decrementHours',\r\n decrementMinutes = 'decrementMinutes',\r\n decrementSeconds = 'decrementSeconds',\r\n toggleMeridiem = 'toggleMeridiem',\r\n togglePicker = 'togglePicker',\r\n showClock = 'showClock',\r\n showHours = 'showHours',\r\n showMinutes = 'showMinutes',\r\n showSeconds = 'showSeconds',\r\n clear = 'clear',\r\n close = 'close',\r\n today = 'today',\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { DateTime, Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `date`\n */\nexport default class DateDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.daysContainer);\n\n container.append(...this._daysOfTheWeek());\n\n if (this._context._options.display.calendarWeeks) {\n const div = document.createElement('div');\n div.classList.add(Namespace.css.calendarWeeks, Namespace.css.noHighlight);\n container.appendChild(div);\n }\n\n for (let i = 0; i < 42; i++) {\n if (i !== 0 && i % 7 === 0) {\n if (this._context._options.display.calendarWeeks) {\n const div = document.createElement('div');\n div.classList.add(\n Namespace.css.calendarWeeks,\n Namespace.css.noHighlight\n );\n container.appendChild(div);\n }\n }\n\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectDay);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.daysContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.daysContainer,\n this._context._viewDate.format({\n month: this._context._options.localization.dayViewHeaderFormat,\n })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.month),\n Unit.month\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.month),\n Unit.month\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone\n .startOf(Unit.month)\n .startOf('weekDay')\n .manipulate(12, Unit.hours);\n\n container\n .querySelectorAll(\n `[data-action=\"${ActionTypes.selectDay}\"], .${Namespace.css.calendarWeeks}`\n )\n .forEach((containerClone: HTMLElement, index) => {\n if (\n this._context._options.display.calendarWeeks &&\n containerClone.classList.contains(Namespace.css.calendarWeeks)\n ) {\n if (containerClone.innerText === '#') return;\n containerClone.innerText = `${innerDate.week}`;\n return;\n }\n\n let classes = [];\n classes.push(Namespace.css.day);\n\n if (innerDate.isBefore(this._context._viewDate, Unit.month)) {\n classes.push(Namespace.css.old);\n }\n if (innerDate.isAfter(this._context._viewDate, Unit.month)) {\n classes.push(Namespace.css.new);\n }\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.date)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.date)) {\n classes.push(Namespace.css.disabled);\n }\n if (innerDate.isSame(new DateTime(), Unit.date)) {\n classes.push(Namespace.css.today);\n }\n if (innerDate.weekDay === 0 || innerDate.weekDay === 6) {\n classes.push(Namespace.css.weekend);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute(\n 'data-value',\n `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`\n );\n containerClone.innerText = `${innerDate.date}`;\n innerDate.manipulate(1, Unit.date);\n });\n }\n\n /***\n * Generates an html row that contains the days of the week.\n * @private\n */\n private _daysOfTheWeek(): HTMLElement[] {\n let innerDate = this._context._viewDate.clone\n .startOf('weekDay')\n .startOf(Unit.date);\n const row = [];\n document.createElement('div');\n\n if (this._context._options.display.calendarWeeks) {\n const htmlDivElement = document.createElement('div');\n htmlDivElement.classList.add(\n Namespace.css.calendarWeeks,\n Namespace.css.noHighlight\n );\n htmlDivElement.innerText = '#';\n row.push(htmlDivElement);\n }\n\n for (let i = 0; i < 7; i++) {\n const htmlDivElement = document.createElement('div');\n htmlDivElement.classList.add(\n Namespace.css.dayOfTheWeek,\n Namespace.css.noHighlight\n );\n htmlDivElement.innerText = innerDate.format({ weekday: 'short' });\n innerDate.manipulate(1, Unit.date);\n row.push(htmlDivElement);\n }\n\n return row;\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `month`\n */\nexport default class MonthDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.monthsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMonth);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.monthsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.monthsContainer,\n this._context._viewDate.format({ year: 'numeric' })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.year),\n Unit.year\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.year),\n Unit.year\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone.startOf(Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMonth}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.month);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.month)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.month)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${index}`);\n containerClone.innerText = `${innerDate.format({ month: 'short' })}`;\n innerDate.manipulate(1, Unit.month);\n });\n }\n}\n","import { DateTime, DateTimeFormatOptions } from './datetime';\nimport Namespace from './namespace';\nimport { DefaultOptions } from './conts';\n\nexport default interface Options {\n restrictions: {\n minDate: DateTime;\n maxDate: DateTime;\n enabledDates: DateTime[];\n disabledDates: DateTime[];\n enabledHours: number[];\n disabledHours: number[];\n disabledTimeIntervals: { from: DateTime; to: DateTime }[];\n daysOfWeekDisabled: number[];\n };\n display: {\n toolbarPlacement: 'top' | 'bottom';\n components: {\n calendar: boolean;\n date: boolean;\n month: boolean;\n year: boolean;\n decades: boolean;\n clock: boolean;\n hours: boolean;\n minutes: boolean;\n seconds: boolean;\n useTwentyfourHour: boolean;\n };\n buttons: { today: boolean; close: boolean; clear: boolean };\n calendarWeeks: boolean;\n icons: {\n date: string;\n next: string;\n previous: string;\n today: string;\n clear: string;\n time: string;\n up: string;\n type: 'icons' | 'sprites';\n down: string;\n close: string;\n };\n viewMode: 'clock' | 'calendar' | 'months' | 'years' | 'decades';\n sideBySide: boolean;\n inline: boolean;\n keepOpen: boolean;\n };\n stepping: number;\n useCurrent: boolean;\n defaultDate: DateTime;\n localization: {\n nextMonth: string;\n pickHour: string;\n incrementSecond: string;\n nextDecade: string;\n selectDecade: string;\n dayViewHeaderFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n decrementHour: string;\n selectDate: string;\n incrementHour: string;\n previousCentury: string;\n decrementSecond: string;\n today: string;\n previousMonth: string;\n selectYear: string;\n pickSecond: string;\n nextCentury: string;\n close: string;\n incrementMinute: string;\n selectTime: string;\n clear: string;\n toggleMeridiem: string;\n selectMonth: string;\n decrementMinute: string;\n pickMinute: string;\n nextYear: string;\n previousYear: string;\n previousDecade: string;\n locale: string;\n };\n keepInvalid: boolean;\n debug: boolean;\n allowInputToggle: boolean;\n viewDate: DateTime;\n multipleDates: boolean;\n multipleDatesSeparator: string;\n promptTimeOnDateChange: boolean;\n promptTimeOnDateChangeTransitionDelay: number;\n hooks: {\n inputParse: (value: any) => DateTime;\n inputFormat: (date: DateTime) => string;\n };\n}\n\nexport class OptionConverter {\n static _mergeOptions(providedOptions: Options, mergeTo: Options): Options {\n const newOptions = {} as Options;\n let path = '';\n const ignoreProperties = ['inputParse', 'inputFormat'];\n\n const processKey = (key, value, providedType, defaultType) => {\n switch (key) {\n case 'defaultDate': {\n const dateTime = this._dateConversion(value, 'defaultDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'defaultDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'viewDate': {\n const dateTime = this._dateConversion(value, 'viewDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'viewDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'minDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.minDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.minDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'maxDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.maxDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.maxDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'disabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.disabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.disabledHours',\n 0,\n 23\n );\n return value;\n case 'enabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.enabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.enabledHours',\n 0,\n 23\n );\n return value;\n case 'daysOfWeekDisabled':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.daysOfWeekDisabled',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 6).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.daysOfWeekDisabled',\n 0,\n 6\n );\n return value;\n case 'enabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.enabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.disabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledTimeIntervals':\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n key,\n providedType,\n 'array of { from: DateTime|Date, to: DateTime|Date }'\n );\n }\n const valueObject = value as { from: any; to: any }[];\n for (let i = 0; i < valueObject.length; i++) {\n Object.keys(valueObject[i]).forEach((vk) => {\n const subOptionName = `${key}[${i}].${vk}`;\n let d = valueObject[i][vk];\n const dateTime = this._dateConversion(d, subOptionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n subOptionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n valueObject[i][vk] = dateTime;\n });\n }\n return valueObject;\n case 'toolbarPlacement':\n case 'type':\n case 'viewMode':\n case 'dayViewHeaderFormat':\n const optionValues = {\n toolbarPlacement: ['top', 'bottom', 'default'],\n type: ['icons', 'sprites'],\n viewMode: ['clock', 'calendar', 'months', 'years', 'decades'],\n dayViewHeaderFormat: [\n 'numeric',\n '2-digit',\n 'long',\n 'short',\n 'narrow',\n ],\n };\n const keyOptions = optionValues[key];\n if (!keyOptions.includes(value))\n Namespace.errorMessages.unexpectedOptionValue(\n path.substring(1),\n value,\n keyOptions\n );\n\n return value;\n case 'inputParse':\n case 'inputFormat':\n return value;\n default:\n switch (defaultType) {\n case 'boolean':\n return value === 'true' || value === true;\n case 'number':\n return +value;\n case 'string':\n return value.toString();\n case 'object':\n return {};\n case 'function':\n return value;\n default:\n Namespace.errorMessages.typeMismatch(\n path.substring(1),\n providedType,\n defaultType\n );\n }\n }\n };\n\n /**\n * The spread operator caused sub keys to be missing after merging.\n * This is to fix that issue by using spread on the child objects first.\n * Also handles complex options like disabledDates\n * @param provided An option from new providedOptions\n * @param mergeOption Default option to compare types against\n * @param copyTo Destination object. This was add to prevent reference copies\n */\n const spread = (provided, mergeOption, copyTo) => {\n const unsupportedOptions = Object.keys(provided).filter(\n (x) => !Object.keys(mergeOption).includes(x)\n );\n if (unsupportedOptions.length > 0) {\n const flattenedOptions = OptionConverter._flattenDefaultOptions;\n\n const errors = unsupportedOptions.map((x) => {\n let error = `\"${path.substring(1)}.${x}\" in not a known option.`;\n let didYouMean = flattenedOptions.find((y) => y.includes(x));\n if (didYouMean) error += `Did you mean \"${didYouMean}\"?`;\n return error;\n });\n Namespace.errorMessages.unexpectedOptions(errors);\n }\n Object.keys(mergeOption).forEach((key) => {\n const defaultOptionValue = mergeOption[key];\n let providedType = typeof provided[key];\n let defaultType = typeof defaultOptionValue;\n let value = provided[key];\n if (!provided.hasOwnProperty(key)) {\n if (\n defaultType === 'undefined' ||\n (value?.length === 0 && Array.isArray(defaultOptionValue))\n ) {\n copyTo[key] = defaultOptionValue;\n return;\n }\n provided[key] = defaultOptionValue;\n value = provided[key];\n }\n path += `.${key}`;\n copyTo[key] = processKey(key, value, providedType, defaultType);\n\n if (typeof defaultOptionValue !== 'object' || ignoreProperties.includes(key)) {\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n return;\n }\n if (!Array.isArray(provided[key])) {\n spread(provided[key], defaultOptionValue, copyTo[key]);\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n }\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n });\n };\n spread(providedOptions, mergeTo, newOptions);\n\n return newOptions;\n }\n\n static _dataToOptions(element, options: Options): Options {\n const eData = element.dataset;\n if (\n !eData ||\n Object.keys(eData).length === 0 ||\n eData.constructor !== DOMStringMap\n )\n return options;\n let dataOptions = {} as Options;\n\n // because dataset returns camelCase including the 'td' key the option\n // key won't align\n const objectToNormalized = (object) => {\n const lowered = {};\n Object.keys(object).forEach((x) => {\n lowered[x.toLowerCase()] = x;\n });\n\n return lowered;\n };\n\n const rabbitHole = (\n split: string[],\n index: number,\n optionSubgroup: {},\n value: any\n ) => {\n // first round = display { ... }\n const normalizedOptions = objectToNormalized(optionSubgroup);\n\n const keyOption = normalizedOptions[split[index].toLowerCase()];\n const internalObject = {};\n\n if (keyOption === undefined) return internalObject;\n\n // if this is another object, continue down the rabbit hole\n if (optionSubgroup[keyOption].constructor === Object) {\n index++;\n internalObject[keyOption] = rabbitHole(\n split,\n index,\n optionSubgroup[keyOption],\n value\n );\n } else {\n internalObject[keyOption] = value;\n }\n return internalObject;\n };\n const optionsLower = objectToNormalized(options);\n\n Object.keys(eData)\n .filter((x) => x.startsWith(Namespace.dataKey))\n .map((x) => x.substring(2))\n .forEach((key) => {\n let keyOption = optionsLower[key.toLowerCase()];\n\n // dataset merges dashes to camelCase... yay\n // i.e. key = display_components_seconds\n if (key.includes('_')) {\n // [display, components, seconds]\n const split = key.split('_');\n // display\n keyOption = optionsLower[split[0].toLowerCase()];\n if (\n keyOption !== undefined &&\n options[keyOption].constructor === Object\n ) {\n dataOptions[keyOption] = rabbitHole(\n split,\n 1,\n options[keyOption],\n eData[`td${key}`]\n );\n }\n }\n // or key = multipleDate\n else if (keyOption !== undefined) {\n dataOptions[keyOption] = eData[`td${key}`];\n }\n });\n\n return this._mergeOptions(dataOptions, options);\n }\n\n /**\n * Attempts to prove `d` is a DateTime or Date or can be converted into one.\n * @param d If a string will attempt creating a date from it.\n * @private\n */\n static _dateTypeCheck(d: any): DateTime | null {\n if (d.constructor.name === DateTime.name) return d;\n if (d.constructor.name === Date.name) {\n return DateTime.convert(d);\n }\n if (typeof d === typeof '') {\n const dateTime = new DateTime(d);\n if (JSON.stringify(dateTime) === 'null') {\n return null;\n }\n return dateTime;\n }\n return null;\n }\n\n /**\n * Type checks that `value` is an array of Date or DateTime\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckDateArray(optionName: string, value, providedType: string) {\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of DateTime or Date'\n );\n }\n for (let i = 0; i < value.length; i++) {\n let d = value[i];\n const dateTime = this._dateConversion(d, optionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n value[i] = dateTime;\n }\n }\n\n /**\n * Type checks that `value` is an array of numbers\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckNumberArray(\n optionName: string,\n value,\n providedType: string\n ) {\n if (!Array.isArray(value) || value.find((x) => typeof x !== typeof 0)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of numbers'\n );\n }\n return;\n }\n\n /**\n * Attempts to convert `d` to a DateTime object\n * @param d value to convert\n * @param optionName Provides text to error messages e.g. disabledDates\n */\n static _dateConversion(d: any, optionName: string) {\n if (typeof d === typeof '' && optionName !== 'input') {\n Namespace.errorMessages.dateString();\n }\n\n const converted = this._dateTypeCheck(d);\n\n if (!converted) {\n Namespace.errorMessages.failedToParseDate(\n optionName,\n d,\n optionName === 'input'\n );\n }\n return converted;\n }\n\n private static _flatback: string[];\n\n private static get _flattenDefaultOptions(): string[] {\n if (this._flatback) return this._flatback;\n const deepKeys = (t, pre = []) =>\n Array.isArray(t)\n ? []\n : Object(t) === t\n ? Object.entries(t).flatMap(([k, v]) => deepKeys(v, [...pre, k]))\n : pre.join('.');\n\n this._flatback = deepKeys(DefaultOptions);\n\n return this._flatback;\n }\n\n /**\n * Some options conflict like min/max date. Verify that these kinds of options\n * are set correctly.\n * @param config\n */\n static _validateConflcits(config: Options) {\n if (config.restrictions.minDate && config.restrictions.maxDate) {\n if (config.restrictions.minDate.isAfter(config.restrictions.maxDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'minDate is after maxDate'\n );\n }\n\n if (config.restrictions.maxDate.isBefore(config.restrictions.minDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'maxDate is before minDate'\n );\n }\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport { ChangeEvent, FailEvent } from './event-types';\nimport { OptionConverter } from './options';\n\nexport default class Dates {\n private _dates: DateTime[] = [];\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Returns the array of selected dates\n */\n get picked(): DateTime[] {\n return this._dates;\n }\n\n /**\n * Returns the last picked value.\n */\n get lastPicked(): DateTime {\n return this._dates[this.lastPickedIndex];\n }\n\n /**\n * Returns the length of picked dates -1 or 0 if none are selected.\n */\n get lastPickedIndex(): number {\n if (this._dates.length === 0) return 0;\n return this._dates.length - 1;\n }\n\n /**\n * Adds a new DateTime to selected dates array\n * @param date\n */\n add(date: DateTime): void {\n this._dates.push(date);\n }\n\n /**\n * Tries to convert the provided value to a DateTime object.\n * If value is null|undefined then clear the value of the provided index (or 0).\n * @param value Value to convert or null|undefined\n * @param index When using multidates this is the index in the array\n * @param from Used in the warning message, useful for debugging.\n */\n set(value: any, index?: number, from: string = 'date.set') {\n if (!value) this._setValue(value, index);\n const converted = OptionConverter._dateConversion(value, from);\n if (converted) this._setValue(converted, index);\n }\n\n /**\n * Returns true if the `targetDate` is part of the selected dates array.\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n isPicked(targetDate: DateTime, unit?: Unit): boolean {\n if (!unit) return this._dates.find((x) => x === targetDate) !== undefined;\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return (\n this._dates\n .map((x) => x.format(format))\n .find((x) => x === innerDateFormatted) !== undefined\n );\n }\n\n /**\n * Returns the index at which `targetDate` is in the array.\n * This is used for updating or removing a date when multi-date is used\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n pickedIndex(targetDate: DateTime, unit?: Unit): number {\n if (!unit) return this._dates.indexOf(targetDate);\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return this._dates.map((x) => x.format(format)).indexOf(innerDateFormatted);\n }\n\n /**\n * Clears all selected dates.\n */\n clear() {\n this._context._unset = true;\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate: this.lastPicked,\n isClear: true,\n isValid: true,\n } as ChangeEvent);\n this._dates = [];\n }\n\n /**\n * Find the \"book end\" years given a `year` and a `factor`\n * @param factor e.g. 100 for decades\n * @param year e.g. 2021\n */\n static getStartEndYear(\n factor: number,\n year: number\n ): [number, number, number] {\n const step = factor / 10,\n startYear = Math.floor(year / factor) * factor,\n endYear = startYear + step * 9,\n focusValue = Math.floor(year / step) * step;\n return [startYear, endYear, focusValue];\n }\n\n /**\n * Do not use direectly. Attempts to either clear or set the `target` date at `index`.\n * If the `target` is null then the date will be cleared.\n * If multi-date is being used then it will be removed from the array.\n * If `target` is valid and multi-date is used then if `index` is\n * provided the date at that index will be replaced, otherwise it is appended.\n * @param target\n * @param index\n */\n _setValue(target?: DateTime, index?: number): void {\n const noIndex = typeof index === 'undefined',\n isClear = !target && noIndex;\n let oldDate = this._context._unset ? null : this._dates[index];\n if (!oldDate && !this._context._unset && noIndex && isClear) {\n oldDate = this.lastPicked;\n }\n\n if (target && oldDate?.isSame(target)) return;\n\n const updateInput = () => {\n if (!this._context._input) return;\n\n let newValue = this._context._options.hooks.inputFormat(target);\n if (this._context._options.multipleDates) {\n newValue = this._dates\n .map((d) => this._context._options.hooks.inputFormat(d))\n .join(this._context._options.multipleDatesSeparator);\n }\n if (this._context._input.value != newValue)\n this._context._input.value = newValue;\n };\n\n // case of calling setValue(null)\n if (!target) {\n if (\n !this._context._options.multipleDates ||\n this._dates.length === 1 ||\n isClear\n ) {\n this._context._unset = true;\n this._dates = [];\n } else {\n this._dates.splice(index, 1);\n }\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n\n updateInput();\n this._context._display._update('all');\n return;\n }\n\n index = index || 0;\n target = target.clone;\n\n // minute stepping is being used, force the minute to the closest value\n if (this._context._options.stepping !== 1) {\n target.minutes =\n Math.round(target.minutes / this._context._options.stepping) *\n this._context._options.stepping;\n target.seconds = 0;\n }\n\n if (this._context._validation.isValid(target)) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._unset = false;\n this._context._display._update('all');\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n return;\n }\n\n if (this._context._options.keepInvalid) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: false,\n } as ChangeEvent);\n }\n this._context._triggerEvent({\n type: Namespace.events.error,\n reason: Namespace.errorMessages.failedToSetInvalidDate,\n date: target,\n oldDate,\n } as FailEvent);\n }\n\n /**\n * Returns a format object based on the granularity of `unit`\n * @param unit\n */\n static getFormatByUnit(unit: Unit): object {\n switch (unit) {\n case 'date':\n return { dateStyle: 'short' };\n case 'month':\n return {\n month: 'numeric',\n year: 'numeric',\n };\n case 'year':\n return { year: 'numeric' };\n }\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { DateTime, Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\nimport Dates from '../../dates';\n\n/**\n * Creates and updates the grid for `year`\n */\nexport default class YearDisplay {\n private _context: TempusDominus;\n private _startYear: DateTime;\n private _endYear: DateTime;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.yearsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectYear);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update() {\n const [start, end] = Dates.getStartEndYear(\n 10,\n this._context._viewDate.year\n );\n this._startYear = this._context._viewDate.clone.manipulate(-1, Unit.year);\n this._endYear = this._context._viewDate.clone.manipulate(10, Unit.year);\n\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.yearsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.yearsContainer,\n `${this._startYear.year}-${this._endYear.year}`\n );\n\n this._context._validation.isValid(this._startYear, Unit.year)\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n this._context._validation.isValid(this._endYear, Unit.year)\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone\n .startOf(Unit.year)\n .manipulate(-1, Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectYear}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.year);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.year)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.year)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.year}`);\n containerClone.innerText = `${innerDate.year}`;\n\n innerDate.manipulate(1, Unit.year);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport Dates from '../../dates';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `seconds`\r\n */\r\nexport default class DecadeDisplay {\r\n private _context: TempusDominus;\r\n private _startDecade: DateTime;\r\n private _endDecade: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker() {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.decadesContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDecade);\r\n container.appendChild(div);\r\n }\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 100,\r\n this._context._viewDate.year\r\n );\r\n this._startDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._startDecade.year = start;\r\n this._endDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._endDecade.year = end;\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.decadesContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.decadesContainer,\r\n `${this._startDecade.year}-${this._endDecade.year}`\r\n );\r\n\r\n this._context._validation.isValid(this._startDecade, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endDecade, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n const pickedYears = this._context.dates.picked.map((x) => x.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectDecade}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (index === 0) {\r\n containerClone.classList.add(Namespace.css.old);\r\n if (this._startDecade.year - 10 < 0) {\r\n containerClone.textContent = ' ';\r\n previous.classList.add(Namespace.css.disabled);\r\n containerClone.classList.add(Namespace.css.disabled);\r\n containerClone.setAttribute('data-value', ``);\r\n return;\r\n } else {\r\n containerClone.innerText = `${this._startDecade.year - 10}`;\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n return;\r\n }\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.decade);\r\n const startDecadeYear = this._startDecade.year;\r\n const endDecadeYear = this._startDecade.year + 9;\r\n\r\n if (\r\n !this._context._unset &&\r\n pickedYears.filter((x) => x >= startDecadeYear && x <= endDecadeYear)\r\n .length > 0\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n containerClone.innerText = `${this._startDecade.year}`;\r\n\r\n this._startDecade.manipulate(10, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates the clock display\n */\nexport default class TimeDisplay {\n private _context: TempusDominus;\n private _gridColumns = '';\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the clock display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.clockContainer);\n\n container.append(...this._grid());\n\n return container;\n }\n\n /**\n * Populates the various elements with in the clock display\n * like the current hour and if the manipulation icons are enabled.\n * @private\n */\n _update(): void {\n const timesDiv = (\n this._context._display.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0]\n );\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n timesDiv\n .querySelectorAll('.disabled')\n .forEach((element) => element.classList.remove(Namespace.css.disabled));\n\n if (this._context._options.display.components.hours) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.hours}]`\n ).innerText = this._context._options.display.components.useTwentyfourHour\n ? lastPicked.hoursFormatted\n : lastPicked.twelveHoursFormatted;\n }\n\n if (this._context._options.display.components.minutes) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.minutes}]`\n ).innerText = lastPicked.minutesFormatted;\n }\n\n if (this._context._options.display.components.seconds) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.seconds}]`\n ).innerText = lastPicked.secondsFormatted;\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n const toggle = timesDiv.querySelector(\n `[data-action=${ActionTypes.toggleMeridiem}]`\n );\n\n toggle.innerText = lastPicked.meridiem();\n\n if (\n !this._context._validation.isValid(\n lastPicked.clone.manipulate(\n lastPicked.hours >= 12 ? -12 : 12,\n Unit.hours\n )\n )\n ) {\n toggle.classList.add(Namespace.css.disabled);\n } else {\n toggle.classList.remove(Namespace.css.disabled);\n }\n }\n\n timesDiv.style.gridTemplateAreas = `\"${this._gridColumns}\"`;\n }\n\n /**\n * Creates the table for the clock display depending on what options are selected.\n * @private\n */\n private _grid(): HTMLElement[] {\n this._gridColumns = '';\n const top = [],\n middle = [],\n bottom = [],\n separator = document.createElement('div'),\n upIcon = this._context._display._iconTag(\n this._context._options.display.icons.up\n ),\n downIcon = this._context._display._iconTag(\n this._context._options.display.icons.down\n );\n\n separator.classList.add(Namespace.css.separator, Namespace.css.noHighlight);\n const separatorColon = separator.cloneNode(true);\n separatorColon.innerHTML = ':';\n\n const getSeparator = (colon = false): HTMLElement => {\n return colon\n ? separatorColon.cloneNode(true)\n : separator.cloneNode(true);\n };\n\n if (this._context._options.display.components.hours) {\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.incrementHours);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickHour\n );\n divElement.setAttribute('data-action', ActionTypes.showHours);\n divElement.setAttribute('data-time-component', Unit.hours);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.decrementHours);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n this._gridColumns += 'a';\n }\n\n if (this._context._options.display.components.minutes) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.hours) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.incrementMinutes);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickMinute\n );\n divElement.setAttribute('data-action', ActionTypes.showMinutes);\n divElement.setAttribute('data-time-component', Unit.minutes);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.decrementMinutes);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (this._context._options.display.components.seconds) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.minutes) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.incrementSeconds);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickSecond\n );\n divElement.setAttribute('data-action', ActionTypes.showSeconds);\n divElement.setAttribute('data-time-component', Unit.seconds);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.decrementSeconds);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n this._gridColumns += ' a';\n let divElement = getSeparator();\n top.push(divElement);\n\n let button = document.createElement('button');\n button.setAttribute(\n 'title',\n this._context._options.localization.toggleMeridiem\n );\n button.setAttribute('data-action', ActionTypes.toggleMeridiem);\n button.setAttribute('tabindex', '-1');\n button.classList.add(Namespace.css.toggleMeridiem);\n\n divElement = document.createElement('div');\n divElement.classList.add(Namespace.css.noHighlight);\n divElement.appendChild(button);\n middle.push(divElement);\n\n divElement = getSeparator();\n bottom.push(divElement);\n }\n\n this._gridColumns = this._gridColumns.trim();\n\n return [...top, ...middle, ...bottom];\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `hours`\n */\nexport default class HourDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.hourContainer);\n\n for (\n let i = 0;\n i <\n (this._context._options.display.components.useTwentyfourHour ? 24 : 12);\n i++\n ) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectHour);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.hourContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.date);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectHour}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.hour);\n\n if (!this._context._validation.isValid(innerDate, Unit.hours)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.hours}`);\n containerClone.innerText = this._context._options.display.components\n .useTwentyfourHour\n ? innerDate.hoursFormatted\n : innerDate.twelveHoursFormatted;\n innerDate.manipulate(1, Unit.hours);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `minutes`\n */\nexport default class MinuteDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.minuteContainer);\n\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n for (let i = 0; i < 60 / step; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMinute);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.minuteContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.hours);\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMinute}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.minute);\n\n if (!this._context._validation.isValid(innerDate, Unit.minutes)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.minutes}`);\n containerClone.innerText = innerDate.minutesFormatted;\n innerDate.manipulate(step, Unit.minutes);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class secondDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.secondContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectSecond);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.secondContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.minutes);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectSecond}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.second);\n\n if (!this._context._validation.isValid(innerDate, Unit.seconds)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.seconds}`);\n containerClone.innerText = innerDate.secondsFormatted;\n innerDate.manipulate(5, Unit.seconds);\n });\n }\n}\n","import DateDisplay from './calendar/date-display';\r\nimport MonthDisplay from './calendar/month-display';\r\nimport YearDisplay from './calendar/year-display';\r\nimport DecadeDisplay from './calendar/decade-display';\r\nimport TimeDisplay from './time/time-display';\r\nimport HourDisplay from './time/hour-display';\r\nimport MinuteDisplay from './time/minute-display';\r\nimport SecondDisplay from './time/second-display';\r\nimport { DateTime, Unit } from '../datetime';\r\nimport { DatePickerModes } from '../conts';\r\nimport { TempusDominus } from '../tempus-dominus';\r\nimport { ActionTypes } from '../actions';\r\nimport { createPopper } from '@popperjs/core';\r\nimport Namespace from '../namespace';\r\nimport { HideEvent } from '../event-types';\r\n\r\n/**\r\n * Main class for all things display related.\r\n */\r\nexport default class Display {\r\n private _context: TempusDominus;\r\n private _dateDisplay: DateDisplay;\r\n private _monthDisplay: MonthDisplay;\r\n private _yearDisplay: YearDisplay;\r\n private _decadeDisplay: DecadeDisplay;\r\n private _timeDisplay: TimeDisplay;\r\n private _widget: HTMLElement;\r\n private _hourDisplay: HourDisplay;\r\n private _minuteDisplay: MinuteDisplay;\r\n private _secondDisplay: SecondDisplay;\r\n private _popperInstance: any;\r\n private _isVisible = false;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this._dateDisplay = new DateDisplay(context);\r\n this._monthDisplay = new MonthDisplay(context);\r\n this._yearDisplay = new YearDisplay(context);\r\n this._decadeDisplay = new DecadeDisplay(context);\r\n this._timeDisplay = new TimeDisplay(context);\r\n this._hourDisplay = new HourDisplay(context);\r\n this._minuteDisplay = new MinuteDisplay(context);\r\n this._secondDisplay = new SecondDisplay(context);\r\n\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Returns the widget body or undefined\r\n * @private\r\n */\r\n get widget(): HTMLElement | undefined {\r\n return this._widget;\r\n }\r\n\r\n /**\r\n * Returns this visible state of the picker (shown)\r\n */\r\n get isVisible() {\r\n return this._isVisible;\r\n }\r\n\r\n /**\r\n * Updates the table for a particular unit. Used when an option as changed or\r\n * whenever the class list might need to be refreshed.\r\n * @param unit\r\n * @private\r\n */\r\n _update(unit: Unit | 'clock' | 'calendar' | 'all'): void {\r\n if (!this.widget) return;\r\n //todo do I want some kind of error catching or other guards here?\r\n switch (unit) {\r\n case Unit.seconds:\r\n this._secondDisplay._update();\r\n break;\r\n case Unit.minutes:\r\n this._minuteDisplay._update();\r\n break;\r\n case Unit.hours:\r\n this._hourDisplay._update();\r\n break;\r\n case Unit.date:\r\n this._dateDisplay._update();\r\n break;\r\n case Unit.month:\r\n this._monthDisplay._update();\r\n break;\r\n case Unit.year:\r\n this._yearDisplay._update();\r\n break;\r\n case 'clock':\r\n this._timeDisplay._update();\r\n this._update(Unit.hours);\r\n this._update(Unit.minutes);\r\n this._update(Unit.seconds);\r\n break;\r\n case 'calendar':\r\n this._update(Unit.date);\r\n this._update(Unit.year);\r\n this._update(Unit.month);\r\n this._decadeDisplay._update();\r\n this._updateCalendarHeader();\r\n break;\r\n case 'all':\r\n if (this._hasTime) {\r\n this._update('clock');\r\n }\r\n if (this._hasDate) {\r\n this._update('calendar');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Shows the picker and creates a Popper instance if needed.\r\n * Add document click event to hide when clicking outside the picker.\r\n * @fires Events#show\r\n */\r\n show(): void {\r\n if (this.widget == undefined) {\r\n if (\r\n this._context._options.useCurrent &&\r\n !this._context._options.defaultDate &&\r\n !this._context._input?.value\r\n ) {\r\n //todo in the td4 branch a pr changed this to allow granularity\r\n const date = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n if (!this._context._options.keepInvalid) {\r\n let tries = 0;\r\n let direction = 1;\r\n if (this._context._options.restrictions.maxDate?.isBefore(date)) {\r\n direction = -1;\r\n }\r\n while (!this._context._validation.isValid(date)) {\r\n date.manipulate(direction, Unit.date);\r\n if (tries > 31) break;\r\n tries++;\r\n }\r\n }\r\n this._context.dates._setValue(date);\r\n }\r\n\r\n if (this._context._options.defaultDate) {\r\n this._context.dates._setValue(this._context._options.defaultDate);\r\n }\r\n\r\n this._buildWidget();\r\n if (this._hasDate) {\r\n this._showMode();\r\n }\r\n\r\n if (!this._context._options.display.inline) {\r\n document.body.appendChild(this.widget);\r\n\r\n this._popperInstance = createPopper(\r\n this._context._element,\r\n this.widget,\r\n {\r\n modifiers: [\r\n /* {\r\n name: 'offset',\r\n options: {\r\n offset: [2, 8],\r\n },\r\n },*/\r\n { name: 'eventListeners', enabled: true },\r\n ],\r\n placement: 'bottom-start',\r\n }\r\n );\r\n } else {\r\n this._context._element.appendChild(this.widget);\r\n }\r\n\r\n if (this._context._options.display.viewMode == 'clock') {\r\n this._context._action.do(\r\n {\r\n currentTarget: this.widget.querySelector(\r\n `.${Namespace.css.timeContainer}`\r\n ),\r\n },\r\n ActionTypes.showClock\r\n );\r\n }\r\n\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.addEventListener('click', this._actionsClickEvent)\r\n );\r\n\r\n // show the clock when using sideBySide\r\n if (this._context._options.display.sideBySide) {\r\n this._timeDisplay._update();\r\n (\r\n this.widget.getElementsByClassName(\r\n Namespace.css.clockContainer\r\n )[0] as HTMLElement\r\n ).style.display = 'grid';\r\n }\r\n }\r\n\r\n this.widget.classList.add(Namespace.css.show);\r\n if (!this._context._options.display.inline) {\r\n this._popperInstance.update();\r\n document.addEventListener('click', this._documentClickEvent);\r\n }\r\n this._context._triggerEvent({ type: Namespace.events.show });\r\n this._isVisible = true;\r\n }\r\n\r\n /**\r\n * Changes the calendar view mode. E.g. month <-> year\r\n * @param direction -/+ number to move currentViewMode\r\n * @private\r\n */\r\n _showMode(direction?: number): void {\r\n if (!this.widget) {\r\n return;\r\n }\r\n if (direction) {\r\n const max = Math.max(\r\n this._context._minViewModeNumber,\r\n Math.min(3, this._context._currentViewMode + direction)\r\n );\r\n if (this._context._currentViewMode == max) return;\r\n this._context._currentViewMode = max;\r\n }\r\n\r\n this.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div:not(.${Namespace.css.clockContainer})`\r\n )\r\n .forEach((e: HTMLElement) => (e.style.display = 'none'));\r\n\r\n const datePickerMode = DatePickerModes[this._context._currentViewMode];\r\n let picker: HTMLElement = this.widget.querySelector(\r\n `.${datePickerMode.className}`\r\n );\r\n\r\n switch (datePickerMode.className) {\r\n case Namespace.css.decadesContainer:\r\n this._decadeDisplay._update();\r\n break;\r\n case Namespace.css.yearsContainer:\r\n this._yearDisplay._update();\r\n break;\r\n case Namespace.css.monthsContainer:\r\n this._monthDisplay._update();\r\n break;\r\n case Namespace.css.daysContainer:\r\n this._dateDisplay._update();\r\n break;\r\n }\r\n\r\n picker.style.display = 'grid';\r\n this._updateCalendarHeader();\r\n }\r\n\r\n _updateCalendarHeader() {\r\n const showing = [\r\n ...this.widget.querySelector(\r\n `.${Namespace.css.dateContainer} div[style*=\"display: grid\"]`\r\n ).classList,\r\n ].find((x) => x.startsWith(Namespace.css.dateContainer));\r\n\r\n const [previous, switcher, next] = this._context._display.widget\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switch (showing) {\r\n case Namespace.css.decadesContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousCentury\r\n );\r\n switcher.setAttribute('title', '');\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextCentury\r\n );\r\n break;\r\n case Namespace.css.yearsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousDecade\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDecade\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextDecade\r\n );\r\n break;\r\n case Namespace.css.monthsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousYear\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectYear\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextYear\r\n );\r\n break;\r\n case Namespace.css.daysContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousMonth\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectMonth\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextMonth\r\n );\r\n switcher.innerText = this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n });\r\n break;\r\n }\r\n switcher.innerText = switcher.getAttribute(showing);\r\n }\r\n\r\n /**\r\n * Hides the picker if needed.\r\n * Remove document click event to hide when clicking outside the picker.\r\n * @fires Events#hide\r\n */\r\n hide(): void {\r\n if (!this.widget || !this._isVisible) return;\r\n\r\n this.widget.classList.remove(Namespace.css.show);\r\n\r\n if (this._isVisible) {\r\n this._context._triggerEvent({\r\n type: Namespace.events.hide,\r\n date: this._context._unset\r\n ? null\r\n : this._context.dates.lastPicked\r\n ? this._context.dates.lastPicked.clone\r\n : void 0,\r\n } as HideEvent);\r\n this._isVisible = false;\r\n }\r\n\r\n document.removeEventListener('click', this._documentClickEvent);\r\n }\r\n\r\n /**\r\n * Toggles the picker's open state. Fires a show/hide event depending.\r\n */\r\n toggle() {\r\n return this._isVisible ? this.hide() : this.show();\r\n }\r\n\r\n /**\r\n * Removes document and data-action click listener and reset the widget\r\n * @private\r\n */\r\n _dispose() {\r\n document.removeEventListener('click', this._documentClickEvent);\r\n if (!this.widget) return;\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.removeEventListener('click', this._actionsClickEvent)\r\n );\r\n this.widget.parentNode.removeChild(this.widget);\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Builds the widgets html template.\r\n * @private\r\n */\r\n private _buildWidget(): HTMLElement {\r\n const template = document.createElement('div');\r\n template.classList.add(Namespace.css.widget);\r\n\r\n const dateView = document.createElement('div');\r\n dateView.classList.add(Namespace.css.dateContainer);\r\n dateView.append(\r\n this._headTemplate,\r\n this._decadeDisplay._picker,\r\n this._yearDisplay._picker,\r\n this._monthDisplay._picker,\r\n this._dateDisplay._picker\r\n );\r\n\r\n const timeView = document.createElement('div');\r\n timeView.classList.add(Namespace.css.timeContainer);\r\n timeView.appendChild(this._timeDisplay._picker);\r\n timeView.appendChild(this._hourDisplay._picker);\r\n timeView.appendChild(this._minuteDisplay._picker);\r\n timeView.appendChild(this._secondDisplay._picker);\r\n\r\n const toolbar = document.createElement('div');\r\n toolbar.classList.add(Namespace.css.toolbar);\r\n toolbar.append(...this._toolbar);\r\n\r\n if (this._context._options.display.inline) {\r\n template.classList.add(Namespace.css.inline);\r\n }\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n template.classList.add('calendarWeeks');\r\n }\r\n\r\n if (\r\n this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n template.classList.add(Namespace.css.sideBySide);\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n const row = document.createElement('div');\r\n row.classList.add('td-row');\r\n dateView.classList.add('td-half');\r\n timeView.classList.add('td-half');\r\n\r\n row.appendChild(dateView);\r\n row.appendChild(timeView);\r\n template.appendChild(row);\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n this._widget = template;\r\n return;\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n if (this._hasDate) {\r\n if (this._hasTime) {\r\n dateView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode !== 'clock')\r\n dateView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(dateView);\r\n }\r\n\r\n if (this._hasTime) {\r\n if (this._hasDate) {\r\n timeView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode === 'clock')\r\n timeView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(timeView);\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n const arrow = document.createElement('div');\r\n arrow.classList.add('arrow');\r\n arrow.setAttribute('data-popper-arrow', '');\r\n template.appendChild(arrow);\r\n\r\n this._widget = template;\r\n }\r\n\r\n /**\r\n * Returns true if the hours, minutes, or seconds component is turned on\r\n */\r\n get _hasTime(): boolean {\r\n return (\r\n this._context._options.display.components.clock &&\r\n (this._context._options.display.components.hours ||\r\n this._context._options.display.components.minutes ||\r\n this._context._options.display.components.seconds)\r\n );\r\n }\r\n\r\n /**\r\n * Returns true if the year, month, or date component is turned on\r\n */\r\n get _hasDate(): boolean {\r\n return (\r\n this._context._options.display.components.calendar &&\r\n (this._context._options.display.components.year ||\r\n this._context._options.display.components.month ||\r\n this._context._options.display.components.date)\r\n );\r\n }\r\n\r\n /**\r\n * Get the toolbar html based on options like buttons.today\r\n * @private\r\n */\r\n get _toolbar(): HTMLElement[] {\r\n const toolbar = [];\r\n\r\n if (this._context._options.display.buttons.today) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.today);\r\n div.setAttribute('title', this._context._options.localization.today);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.today)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (\r\n !this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n let title, icon;\r\n if (this._context._options.display.viewMode === 'clock') {\r\n title = this._context._options.localization.selectDate;\r\n icon = this._context._options.display.icons.date;\r\n } else {\r\n title = this._context._options.localization.selectTime;\r\n icon = this._context._options.display.icons.time;\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.togglePicker);\r\n div.setAttribute('title', title);\r\n\r\n div.appendChild(this._iconTag(icon));\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.clear) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.clear);\r\n div.setAttribute('title', this._context._options.localization.clear);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.clear)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.close) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.close);\r\n div.setAttribute('title', this._context._options.localization.close);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.close)\r\n );\r\n toolbar.push(div);\r\n }\r\n\r\n return toolbar;\r\n }\r\n\r\n /***\r\n * Builds the base header template with next and previous icons\r\n * @private\r\n */\r\n get _headTemplate(): HTMLElement {\r\n const calendarHeader = document.createElement('div');\r\n calendarHeader.classList.add(Namespace.css.calendarHeader);\r\n\r\n const previous = document.createElement('div');\r\n previous.classList.add(Namespace.css.previous);\r\n previous.setAttribute('data-action', ActionTypes.previous);\r\n previous.appendChild(\r\n this._iconTag(this._context._options.display.icons.previous)\r\n );\r\n\r\n const switcher = document.createElement('div');\r\n switcher.classList.add(Namespace.css.switch);\r\n switcher.setAttribute('data-action', ActionTypes.pickerSwitch);\r\n\r\n const next = document.createElement('div');\r\n next.classList.add(Namespace.css.next);\r\n next.setAttribute('data-action', ActionTypes.next);\r\n next.appendChild(this._iconTag(this._context._options.display.icons.next));\r\n\r\n calendarHeader.append(previous, switcher, next);\r\n return calendarHeader;\r\n }\r\n\r\n /**\r\n * Builds an icon tag as either an ``\r\n * or with icons.type is `sprites` then an svg tag instead\r\n * @param iconClass\r\n * @private\r\n */\r\n _iconTag(iconClass: string): HTMLElement {\r\n if (this._context._options.display.icons.type === 'sprites') {\r\n const svg = document.createElement('svg');\r\n svg.innerHTML = ``;\r\n return svg;\r\n }\r\n const icon = document.createElement('i');\r\n DOMTokenList.prototype.add.apply(icon.classList, iconClass.split(' '));\r\n return icon;\r\n }\r\n\r\n /**\r\n * A document click event to hide the widget if click is outside\r\n * @private\r\n * @param e MouseEvent\r\n */\r\n private _documentClickEvent = (e: MouseEvent) => {\r\n if (this._context._options.display.keepOpen ||\r\n this._context._options.debug ||\r\n (window as any).debug) return;\r\n\r\n if (\r\n this._isVisible &&\r\n !e.composedPath().includes(this.widget) && // click inside the widget\r\n !e.composedPath()?.includes(this._context._element) // click on the element\r\n ) {\r\n this.hide();\r\n }\r\n };\r\n\r\n /**\r\n * Click event for any action like selecting a date\r\n * @param e MouseEvent\r\n * @private\r\n */\r\n private _actionsClickEvent = (e: MouseEvent) => {\r\n this._context._action.do(e);\r\n };\r\n\r\n /**\r\n * Causes the widget to get rebuilt on next show. If the picker is already open\r\n * then hide and reshow it.\r\n * @private\r\n */\r\n _rebuild() {\r\n const wasVisible = this._isVisible;\r\n if (wasVisible) this.hide();\r\n this._dispose();\r\n if (wasVisible) {\r\n this.show();\r\n }\r\n }\r\n}\r\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Dates from './dates';\n\n/**\n * Main class for date validation rules based on the options provided.\n */\nexport default class Validation {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Checks to see if the target date is valid based on the rules provided in the options.\n * Granularity can be provide to chek portions of the date instead of the whole.\n * @param targetDate\n * @param granularity\n */\n isValid(targetDate: DateTime, granularity?: Unit): boolean {\n if (\n this._context._options.restrictions.disabledDates.length > 0 &&\n this._isInDisabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledDates.length > 0 &&\n !this._isInEnabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.daysOfWeekDisabled?.length > 0 &&\n this._context._options.restrictions.daysOfWeekDisabled.indexOf(\n targetDate.weekDay\n ) !== -1\n ) {\n return false;\n }\n\n if (\n this._context._options.restrictions.minDate &&\n targetDate.isBefore(\n this._context._options.restrictions.minDate,\n granularity\n )\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.maxDate &&\n targetDate.isAfter(\n this._context._options.restrictions.maxDate,\n granularity\n )\n ) {\n return false;\n }\n\n if (\n granularity === Unit.hours ||\n granularity === Unit.minutes ||\n granularity === Unit.seconds\n ) {\n if (\n this._context._options.restrictions.disabledHours.length > 0 &&\n this._isInDisabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledHours.length > 0 &&\n !this._isInEnabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.disabledTimeIntervals.length > 0\n ) {\n for (\n let i = 0;\n i < this._context._options.restrictions.disabledTimeIntervals.length;\n i++\n ) {\n if (\n targetDate.isBetween(\n this._context._options.restrictions.disabledTimeIntervals[i].from,\n this._context._options.restrictions.disabledTimeIntervals[i].to\n )\n )\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Checks to see if the disabledDates option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInDisabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledDates ||\n this._context._options.restrictions.disabledDates.length === 0\n )\n return false;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.disabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the enabledDates option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInEnabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledDates ||\n this._context._options.restrictions.enabledDates.length === 0\n )\n return true;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.enabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the disabledHours option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInDisabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledHours ||\n this._context._options.restrictions.disabledHours.length === 0\n )\n return false;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.disabledHours.find(\n (x) => x === formattedDate\n );\n }\n\n /**\n * Checks to see if the enabledHours option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInEnabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledHours ||\n this._context._options.restrictions.enabledHours.length === 0\n )\n return true;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.enabledHours.find(\n (x) => x === formattedDate\n );\n }\n}\n","import Display from './display/index';\nimport Validation from './validation';\nimport Dates from './dates';\nimport Actions, { ActionTypes } from './actions';\nimport { DatePickerModes, DefaultOptions } from './conts';\nimport { DateTime, DateTimeFormatOptions, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options, { OptionConverter } from './options';\nimport {\n BaseEvent,\n ChangeEvent,\n ViewUpdateEvent,\n FailEvent,\n} from './event-types';\n\n/**\n * A robust and powerful date/time picker component.\n */\nclass TempusDominus {\n dates: Dates;\n\n _options: Options;\n _currentViewMode = 0;\n _subscribers: { [key: string]: ((event: any) => {})[] } = {};\n _element: HTMLElement;\n _input: HTMLInputElement;\n _unset: boolean;\n _minViewModeNumber = 0;\n _display: Display;\n _validation: Validation;\n _action: Actions;\n private _isDisabled = false;\n private _notifyChangeEventContext = 0;\n private _toggle: HTMLElement;\n private _currentPromptTimeTimeout: any;\n\n constructor(element: HTMLElement, options: Options = {} as Options) {\n if (!element) {\n Namespace.errorMessages.mustProvideElement;\n }\n this._element = element;\n this._options = this._initializeOptions(options, DefaultOptions, true);\n this._viewDate.setLocale(this._options.localization.locale);\n this._unset = true;\n\n this._display = new Display(this);\n this._validation = new Validation(this);\n this.dates = new Dates(this);\n this._action = new Actions(this);\n\n this._initializeInput();\n this._initializeToggle();\n\n if (this._options.display.inline) this._display.show();\n }\n\n _viewDate = new DateTime();\n\n get viewDate() {\n return this._viewDate;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Update the picker options. If `reset` is provide `options` will be merged with DefaultOptions instead.\n * @param options\n * @param reset\n * @public\n */\n updateOptions(options, reset = false): void {\n if (reset) this._options = this._initializeOptions(options, DefaultOptions);\n else this._options = this._initializeOptions(options, this._options);\n this._display._rebuild();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Toggles the picker open or closed. If the picker is disabled, nothing will happen.\n * @public\n */\n toggle(): void {\n if (this._isDisabled) return;\n this._display.toggle();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Shows the picker unless the picker is disabled.\n * @public\n */\n show(): void {\n if (this._isDisabled) return;\n this._display.show();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker unless the picker is disabled.\n * @public\n */\n hide(): void {\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Disables the picker and the target input field.\n * @public\n */\n disable(): void {\n this._isDisabled = true;\n // todo this might be undesired. If a dev disables the input field to\n // only allow using the picker, this will break that.\n this._input?.setAttribute('disabled', 'disabled');\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Enables the picker and the target input field.\n * @public\n */\n enable(): void {\n this._isDisabled = false;\n this._input?.removeAttribute('disabled');\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Clears all the selected dates\n * @public\n */\n clear(): void {\n this.dates.clear();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Allows for a direct subscription to picker events, without having to use addEventListener on the element.\n * @param eventTypes See Namespace.Events\n * @param callbacks Function to call when event is triggered\n * @public\n */\n subscribe(\n eventTypes: string | string[],\n callbacks: (event: any) => void | ((event: any) => void)[]\n ): { unsubscribe: void }[] {\n if (typeof eventTypes === 'string') {\n eventTypes = [eventTypes];\n }\n let callBackArray = [];\n if (!Array.isArray(callbacks)) {\n callBackArray = [callbacks];\n } else {\n callBackArray = callbacks;\n }\n\n if (eventTypes.length !== callBackArray.length) {\n Namespace.errorMessages.subscribeMismatch;\n }\n\n const returnArray = [];\n\n for (let i = 0; i < eventTypes.length; i++) {\n const eventType = eventTypes[i];\n if (!Array.isArray(this._subscribers[eventType])) {\n this._subscribers[eventType] = [];\n }\n\n this._subscribers[eventType].push(callBackArray[i]);\n\n returnArray.push({\n unsubscribe: this._unsubscribe.bind(\n this,\n eventType,\n this._subscribers[eventType].length - 1\n ),\n });\n\n if (eventTypes.length === 1) {\n return returnArray[0];\n }\n }\n\n return returnArray;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker and removes event listeners\n */\n dispose() {\n this._display.hide();\n // this will clear the document click event listener\n this._display._dispose();\n this._input?.removeEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input?.removeEventListener('click', this._toggleClickEvent);\n }\n this._toggle.removeEventListener('click', this._toggleClickEvent);\n this._subscribers = {};\n }\n\n /**\n * Triggers an event like ChangeEvent when the picker has updated the value\n * of a selected date.\n * @param event Accepts a BaseEvent object.\n * @private\n */\n _triggerEvent(event: BaseEvent) {\n // checking hasOwnProperty because the BasicEvent also falls through here otherwise\n if ((event as ChangeEvent) && event.hasOwnProperty('date')) {\n const { date, oldDate, isClear } = event as ChangeEvent;\n // this was to prevent a max call stack error\n // https://github.com/tempusdominus/core/commit/15a280507f5277b31b0b3319ab1edc7c19a000fb\n // todo see if this is still needed or if there's a cleaner way\n this._notifyChangeEventContext++;\n if (\n (date && oldDate && date.isSame(oldDate)) ||\n (!isClear && !date && !oldDate) ||\n this._notifyChangeEventContext > 1\n ) {\n this._notifyChangeEventContext = 0;\n return;\n }\n this._handleAfterChangeEvent(event as ChangeEvent);\n }\n\n this._element.dispatchEvent(\n new CustomEvent(event.type, { detail: event as any })\n );\n\n if ((window as any).jQuery) {\n const $ = (window as any).jQuery;\n $(this._element).trigger(event);\n }\n\n const publish = () => {\n // return if event is not subscribed\n if (!Array.isArray(this._subscribers[event.type])) {\n return;\n }\n\n // Trigger callback for each subscriber\n this._subscribers[event.type].forEach((callback) => {\n callback(event);\n });\n };\n\n publish();\n\n this._notifyChangeEventContext = 0;\n }\n\n /**\n * Fires a ViewUpdate event when, for example, the month view is changed.\n * @param {Unit} unit\n * @private\n */\n _viewUpdate(unit: Unit) {\n this._triggerEvent({\n type: Namespace.events.update,\n change: unit,\n viewDate: this._viewDate.clone,\n } as ViewUpdateEvent);\n }\n\n private _unsubscribe(eventName, index) {\n this._subscribers[eventName].splice(index, 1);\n }\n\n /**\n * Merges two Option objects together and validates options type\n * @param config new Options\n * @param mergeTo Options to merge into\n * @param includeDataset When true, the elements data-td attributes will be included in the\n * @private\n */\n private _initializeOptions(\n config: Options,\n mergeTo: Options,\n includeDataset = false\n ): Options {\n config = OptionConverter._mergeOptions(config, mergeTo);\n if (includeDataset)\n config = OptionConverter._dataToOptions(this._element, config);\n\n OptionConverter._validateConflcits(config);\n\n config.viewDate = config.viewDate.setLocale(config.localization.locale);\n\n if (!this._viewDate.isSame(config.viewDate)) {\n this._viewDate = config.viewDate;\n }\n\n /**\n * Sets the minimum view allowed by the picker. For example the case of only\n * allowing year and month to be selected but not date.\n */\n if (config.display.components.year) {\n this._minViewModeNumber = 2;\n }\n if (config.display.components.month) {\n this._minViewModeNumber = 1;\n }\n if (config.display.components.date) {\n this._minViewModeNumber = 0;\n }\n\n this._currentViewMode = Math.max(\n this._minViewModeNumber,\n this._currentViewMode\n );\n\n // Update view mode if needed\n if (\n DatePickerModes[this._currentViewMode].name !== config.display.viewMode\n ) {\n this._currentViewMode = Math.max(\n DatePickerModes.findIndex((x) => x.name === config.display.viewMode),\n this._minViewModeNumber\n );\n }\n\n // defaults the input format based on the components enabled\n if (config.hooks.inputFormat === undefined) {\n const components = config.display.components;\n config.hooks.inputFormat = (date: DateTime) => {\n return date.format({\n year: components.calendar && components.year ? 'numeric' : undefined,\n month:\n components.calendar && components.month ? '2-digit' : undefined,\n day: components.calendar && components.date ? '2-digit' : undefined,\n hour:\n components.clock && components.hours\n ? components.useTwentyfourHour\n ? '2-digit'\n : 'numeric'\n : undefined,\n minute:\n components.clock && components.minutes ? '2-digit' : undefined,\n second:\n components.clock && components.seconds ? '2-digit' : undefined,\n hour12: !components.useTwentyfourHour,\n });\n };\n }\n\n if (this._display?.isVisible) {\n this._display._update('all');\n }\n\n return config;\n }\n\n /**\n * Checks if an input field is being used, attempts to locate one and sets an\n * event listener if found.\n * @private\n */\n private _initializeInput() {\n if (this._element.tagName == 'INPUT') {\n this._input = this._element as HTMLInputElement;\n } else {\n let query = this._element.dataset.tdTargetInput;\n if (query == undefined || query == 'nearest') {\n this._input = this._element.querySelector('input');\n } else {\n this._input = this._element.querySelector(query);\n }\n }\n\n if (!this._input) return;\n\n this._input.addEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input.addEventListener('click', this._toggleClickEvent);\n }\n\n if (this._input.value) {\n this._inputChangeEvent();\n }\n }\n\n /**\n * Attempts to locate a toggle for the picker and sets an event listener\n * @private\n */\n private _initializeToggle() {\n if (this._options.display.inline) return;\n let query = this._element.dataset.tdTargetToggle;\n if (query == 'nearest') {\n query = '[data-td-toggle=\"datetimepicker\"]';\n }\n this._toggle =\n query == undefined ? this._element : this._element.querySelector(query);\n this._toggle.addEventListener('click', this._toggleClickEvent);\n }\n\n /**\n * If the option is enabled this will render the clock view after a date pick.\n * @param e change event\n * @private\n */\n private _handleAfterChangeEvent(e: ChangeEvent) {\n if (\n // options is disabled\n !this._options.promptTimeOnDateChange ||\n this._options.display.inline ||\n this._options.display.sideBySide ||\n // time is disabled\n !this._display._hasTime ||\n // clock component is already showing\n this._display.widget\n ?.getElementsByClassName(Namespace.css.show)[0]\n .classList.contains(Namespace.css.timeContainer)\n )\n return;\n\n // First time ever. If useCurrent option is set to true (default), do nothing\n // because the first date is selected automatically.\n // or date didn't change (time did) or date changed because time did.\n if (\n (!e.oldDate && this._options.useCurrent) ||\n (e.oldDate && e.date?.isSame(e.oldDate))\n ) {\n return;\n }\n\n clearTimeout(this._currentPromptTimeTimeout);\n this._currentPromptTimeTimeout = setTimeout(() => {\n if (this._display.widget) {\n this._action.do(\n {\n currentTarget: this._display.widget.querySelector(\n `.${Namespace.css.switch} div`\n ),\n },\n ActionTypes.togglePicker\n );\n }\n }, this._options.promptTimeOnDateChangeTransitionDelay);\n }\n\n /**\n * Event for when the input field changes. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _inputChangeEvent = () => {\n const setViewDate = () => {\n if (this.dates.lastPicked) this._viewDate = this.dates.lastPicked;\n };\n\n const value = this._input.value;\n if (this._options.multipleDates) {\n try {\n const valueSplit = value.split(this._options.multipleDatesSeparator);\n for (let i = 0; i < valueSplit.length; i++) {\n if (this._options.hooks.inputParse) {\n this.dates.set(\n this._options.hooks.inputParse(valueSplit[i]),\n i,\n 'input'\n );\n } else {\n this.dates.set(valueSplit[i], i, 'input');\n }\n }\n setViewDate();\n } catch {\n console.warn(\n 'TD: Something went wrong trying to set the multidate values from the input field.'\n );\n }\n } else {\n if (this._options.hooks.inputParse) {\n this.dates.set(this._options.hooks.inputParse(value), 0, 'input');\n } else {\n this.dates.set(value, 0, 'input');\n }\n setViewDate();\n }\n };\n\n /**\n * Event for when the toggle is clicked. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _toggleClickEvent = () => {\n this.toggle();\n };\n}\n\nexport {\n TempusDominus,\n Namespace,\n DefaultOptions,\n DateTime,\n Options,\n Unit,\n DateTimeFormatOptions,\n};\n"],"names":["Unit","SecondDisplay","createPopper"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tempus-dominus.js","sources":["../../src/js/datetime.ts","../../src/js/errors.ts","../../src/js/namespace.ts","../../src/js/conts.ts","../../src/js/display/collapse.ts","../../src/js/actions.ts","../../src/js/display/calendar/date-display.ts","../../src/js/display/calendar/month-display.ts","../../src/js/options.ts","../../src/js/dates.ts","../../src/js/display/calendar/year-display.ts","../../src/js/display/calendar/decade-display.ts","../../src/js/display/time/time-display.ts","../../src/js/display/time/hour-display.ts","../../src/js/display/time/minute-display.ts","../../src/js/display/time/second-display.ts","../../src/js/display/index.ts","../../src/js/validation.ts","../../src/js/tempus-dominus.ts"],"sourcesContent":["export enum Unit {\r\n seconds = 'seconds',\r\n minutes = 'minutes',\r\n hours = 'hours',\r\n date = 'date',\r\n month = 'month',\r\n year = 'year',\r\n}\r\n\r\nexport interface DateTimeFormatOptions extends Intl.DateTimeFormatOptions {\r\n timeStyle?: 'short' | 'medium' | 'long';\r\n dateStyle?: 'short' | 'medium' | 'long' | 'full';\r\n}\r\n\r\n/**\r\n * For the most part this object behaves exactly the same way\r\n * as the native Date object with a little extra spice.\r\n */\r\nexport class DateTime extends Date {\r\n /**\r\n * Used with Intl.DateTimeFormat\r\n */\r\n locale = 'default';\r\n\r\n /**\r\n * Chainable way to set the {@link locale}\r\n * @param value\r\n */\r\n setLocale(value: string): this {\r\n this.locale = value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Converts a plain JS date object to a DateTime object.\r\n * Doing this allows access to format, etc.\r\n * @param date\r\n */\r\n static convert(date: Date): DateTime {\r\n if (!date) throw `A date is required`;\r\n return new DateTime(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate(),\r\n date.getHours(),\r\n date.getMinutes(),\r\n date.getSeconds(),\r\n date.getMilliseconds()\r\n );\r\n }\r\n\r\n /**\r\n * Native date manipulations are not pure functions. This function creates a duplicate of the DateTime object.\r\n */\r\n get clone() {\r\n return new DateTime(\r\n this.year,\r\n this.month,\r\n this.date,\r\n this.hours,\r\n this.minutes,\r\n this.seconds,\r\n this.getMilliseconds()\r\n ).setLocale(this.locale);\r\n }\r\n\r\n /**\r\n * Sets the current date to the start of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).startOf('month')\r\n * would return April 1, 2021, 12:00:00.000 AM (midnight)\r\n * @param unit\r\n */\r\n startOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(0);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(0, 0);\r\n break;\r\n case 'hours':\r\n this.setMinutes(0, 0, 0);\r\n break;\r\n case 'date':\r\n this.setHours(0, 0, 0, 0);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(0 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.startOf(Unit.date);\r\n this.setDate(1);\r\n break;\r\n case 'year':\r\n this.startOf(Unit.date);\r\n this.setMonth(0, 1);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the current date to the end of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).endOf('month')\r\n * would return April 30, 2021, 11:59:59.999 PM\r\n * @param unit\r\n */\r\n endOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(999);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(59, 999);\r\n break;\r\n case 'hours':\r\n this.setMinutes(59, 59, 999);\r\n break;\r\n case 'date':\r\n this.setHours(23, 59, 59, 999);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(6 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.month);\r\n this.setDate(0);\r\n break;\r\n case 'year':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.year);\r\n this.setDate(0);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Change a {@link unit} value. Value can be positive or negative\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).manipulate(1, 'month')\r\n * would return May 30, 2021, 11:45:32.984 AM\r\n * @param value A positive or negative number\r\n * @param unit\r\n */\r\n manipulate(value: number, unit: Unit): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n this[unit] += value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns a string format.\r\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat\r\n * for valid templates and locale objects\r\n * @param template An object. Uses browser defaults otherwise.\r\n * @param locale Can be a string or an array of strings. Uses browser defaults otherwise.\r\n */\r\n format(template: DateTimeFormatOptions, locale = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, template).format(this);\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is before this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isBefore(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() < compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() < compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is after this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isAfter(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() > compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() > compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is same this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isSame(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() === compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n compare = DateTime.convert(compare);\r\n return (\r\n this.clone.startOf(unit).valueOf() === compare.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Check if this is between two other DateTimes, optionally looking at unit scale. The match is exclusive.\r\n * @param left\r\n * @param right\r\n * @param unit.\r\n * @param inclusivity. A [ indicates inclusion of a value. A ( indicates exclusion.\r\n * If the inclusivity parameter is used, both indicators must be passed.\r\n */\r\n isBetween(\r\n left: DateTime,\r\n right: DateTime,\r\n unit?: Unit,\r\n inclusivity: '()' | '[]' | '(]' | '[)' = '()'\r\n ): boolean {\r\n if (unit && this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n const leftInclusivity = inclusivity[0] === '(';\r\n const rightInclusivity = inclusivity[1] === ')';\r\n\r\n return (\r\n ((leftInclusivity\r\n ? this.isAfter(left, unit)\r\n : !this.isBefore(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isBefore(right, unit)\r\n : !this.isAfter(right, unit))) ||\r\n ((leftInclusivity\r\n ? this.isBefore(left, unit)\r\n : !this.isAfter(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isAfter(right, unit)\r\n : !this.isBefore(right, unit)))\r\n );\r\n }\r\n\r\n /**\r\n * Returns flattened object of the date. Does not include literals\r\n * @param locale\r\n * @param template\r\n */\r\n parts(\r\n locale = this.locale,\r\n template: any = { dateStyle: 'full', timeStyle: 'long' }\r\n ) {\r\n const parts = {};\r\n new Intl.DateTimeFormat(locale, template)\r\n .formatToParts(this)\r\n .filter((x) => x.type !== 'literal')\r\n .forEach((x) => (parts[x.type] = x.value));\r\n return parts;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getSeconds()\r\n */\r\n get seconds(): number {\r\n return this.getSeconds();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setSeconds()\r\n */\r\n set seconds(value: number) {\r\n this.setSeconds(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get secondsFormatted(): string {\r\n return this.format({ second: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMinutes()\r\n */\r\n get minutes(): number {\r\n return this.getMinutes();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMinutes()\r\n */\r\n set minutes(value: number) {\r\n this.setMinutes(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get minutesFormatted(): string {\r\n return this.format({ minute: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getHours()\r\n */\r\n get hours(): number {\r\n return this.getHours();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setHours()\r\n */\r\n set hours(value: number) {\r\n this.setHours(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get hoursFormatted(): string {\r\n return this.format({ hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Returns two digit hours but in twelve hour mode e.g. 13 -> 1\r\n */\r\n get twelveHoursFormatted(): string {\r\n return this.format({ hour12: true, hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Get the meridiem of the date. E.g. AM or PM.\r\n * If the {@link locale} provides a \"dayPeriod\" then this will be returned,\r\n * otherwise it will return AM or PM.\r\n * @param locale\r\n */\r\n meridiem(locale: string = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, {\r\n hour: 'numeric',\r\n hour12: true,\r\n } as any)\r\n .formatToParts(this)\r\n .find((p) => p.type === 'dayPeriod')?.value;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDate()\r\n */\r\n get date(): number {\r\n return this.getDate();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setDate()\r\n */\r\n set date(value: number) {\r\n this.setDate(value);\r\n }\r\n\r\n /**\r\n * Return two digit date\r\n */\r\n get dateFormatted(): string {\r\n return this.date < 10 ? `0${this.date}` : `${this.date}`;\r\n }\r\n\r\n // https://github.com/you-dont-need/You-Dont-Need-Momentjs#week-of-year\r\n /**\r\n * Gets the week of the year\r\n */\r\n get week(): number {\r\n const startOfYear = new Date(this.year, 0, 1);\r\n startOfYear.setDate(\r\n startOfYear.getDate() + (1 - (startOfYear.getDay() % 7))\r\n );\r\n return Math.round((this.valueOf() - startOfYear.valueOf()) / 604800000) + 1;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDay()\r\n */\r\n get weekDay(): number {\r\n return this.getDay();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMonth()\r\n */\r\n get month(): number {\r\n return this.getMonth();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMonth()\r\n */\r\n set month(value: number) {\r\n this.setMonth(value);\r\n }\r\n\r\n /**\r\n * Return two digit, human expected month. E.g. January = 1, December = 12\r\n */\r\n get monthFormatted(): string {\r\n return this.month + 1 < 10 ? `0${this.month}` : `${this.month}`;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getFullYear()\r\n */\r\n get year(): number {\r\n return this.getFullYear();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setFullYear()\r\n */\r\n set year(value: number) {\r\n this.setFullYear(value);\r\n }\r\n}\r\n","import Namespace from './namespace';\n\nexport class TdError extends Error {\n code: number;\n}\n\nexport class ErrorMessages {\n private base = 'TD:';\n\n //#region out to console\n\n /**\n * Throws an error indicating that a key in the options object is invalid.\n * @param optionName\n */\n unexpectedOption(optionName: string) {\n const error = new TdError(\n `${this.base} Unexpected option: ${optionName} does not match a known option.`\n );\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error indicating that one more keys in the options object is invalid.\n * @param optionName\n */\n unexpectedOptions(optionName: string[]) {\n const error = new TdError(`${this.base}: ${optionName.join(', ')}`);\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error when an option is provide an unsupported value.\n * For example a value of 'cheese' for toolbarPlacement which only supports\n * 'top', 'bottom', 'default'.\n * @param optionName\n * @param badValue\n * @param validOptions\n */\n unexpectedOptionValue(\n optionName: string,\n badValue: string,\n validOptions: string[]\n ) {\n const error = new TdError(\n `${\n this.base\n } Unexpected option value: ${optionName} does not accept a value of \"${badValue}\". Valid values are: ${validOptions.join(\n ', '\n )}`\n );\n error.code = 2;\n throw error;\n }\n\n /**\n * Throws an error when an option value is the wrong type.\n * For example a string value was provided to multipleDates which only\n * supports true or false.\n * @param optionName\n * @param badType\n * @param expectedType\n */\n typeMismatch(optionName: string, badType: string, expectedType: string) {\n const error = new TdError(\n `${this.base} Mismatch types: ${optionName} has a type of ${badType} instead of the required ${expectedType}`\n );\n error.code = 3;\n throw error;\n }\n\n /**\n * Throws an error when an option value is outside of the expected range.\n * For example restrictions.daysOfWeekDisabled excepts a value between 0 and 6.\n * @param optionName\n * @param lower\n * @param upper\n */\n numbersOutOfRage(optionName: string, lower: number, upper: number) {\n const error = new TdError(\n `${this.base} ${optionName} expected an array of number between ${lower} and ${upper}.`\n );\n error.code = 4;\n throw error;\n }\n\n /**\n * Throws an error when a value for a date options couldn't be parsed. Either\n * the option was an invalide string or an invalid Date object.\n * @param optionName\n * @param date\n * @param soft If true, logs a warning instead of an error.\n */\n failedToParseDate(optionName: string, date: any, soft = false) {\n const error = new TdError(\n `${this.base} Could not correctly parse \"${date}\" to a date for ${optionName}.`\n );\n error.code = 5;\n if (!soft) throw error;\n console.warn(error);\n }\n\n /**\n * Throws when an element to attach to was not provided in the constructor.\n */\n mustProvideElement() {\n const error = new TdError(`${this.base} No element was provided.`);\n error.code = 6;\n throw error;\n }\n\n /**\n * Throws if providing an array for the events to subscribe method doesn't have\n * the same number of callbacks. E.g., subscribe([1,2], [1])\n */\n subscribeMismatch() {\n const error = new TdError(\n `${this.base} The subscribed events does not match the number of callbacks`\n );\n error.code = 7;\n throw error;\n }\n\n /**\n * Throws if the configuration has conflicting rules e.g. minDate is after maxDate\n */\n conflictingConfiguration(message?: string) {\n const error = new TdError(\n `${this.base} A configuration value conflicts with another rule. ${message}`\n );\n error.code = 8;\n throw error;\n }\n\n /**\n * Logs a warning if a date option value is provided as a string, instead of\n * a date/datetime object.\n */\n dateString() {\n console.warn(\n `${this.base} Using a string for date options is not recommended unless you specify an ISO string.`\n );\n }\n\n //#endregion\n\n //#region used with notify.error\n\n /**\n * Used with an Error Event type if the user selects a date that\n * fails restriction validation.\n */\n failedToSetInvalidDate = 'Failed to set invalid date';\n\n /**\n * Used with an Error Event type when a user changes the value of the\n * input field directly, and does not provide a valid date.\n */\n failedToParseInput = 'Failed parse input field';\n\n //#endregion\n}\n","import { ErrorMessages } from './errors';\n// this is not the way I want this to stay but nested classes seemed to blown up once its compiled.\nconst NAME = 'tempus-dominus',\n version = '6.0.0-alpha1',\n dataKey = 'td';\n\n/**\n * Events\n */\nclass Events {\n key = `.${dataKey}`;\n\n /**\n * Change event. Fired when the user selects a date.\n * See also EventTypes.ChangeEvent\n */\n change = `change${this.key}`;\n\n /**\n * Emit when the view changes for example from month view to the year view.\n * See also EventTypes.ViewUpdateEvent\n */\n update = `update${this.key}`;\n\n /**\n * Emits when a selected date or value from the input field fails to meet the provided validation rules.\n * See also EventTypes.FailEvent\n */\n error = `error${this.key}`;\n\n /**\n * Show event\n * @event Events#show\n */\n show = `show${this.key}`;\n\n /**\n * Hide event\n * @event Events#hide\n */\n hide = `hide${this.key}`;\n\n // blur and focus are used in the jQuery provider but are otherwise unused.\n // keyup/down will be used later for keybinding options\n\n blur = `blur${this.key}`;\n focus = `focus${this.key}`;\n keyup = `keyup${this.key}`;\n keydown = `keydown${this.key}`;\n}\n\nclass Css {\n /**\n * The outer element for the widget.\n */\n widget = `${NAME}-widget`;\n\n /**\n * Hold the previous, next and switcher divs\n */\n calendarHeader = 'calendar-header';\n\n /**\n * The element for the action to change the calendar view. E.g. month -> year.\n */\n switch = 'picker-switch';\n\n /**\n * The elements for all of the toolbar options\n */\n toolbar = 'toolbar';\n\n /**\n * Disables the hover and rounding affect.\n */\n noHighlight = 'no-highlight';\n\n /**\n * Applied to the widget element when the side by side option is in use.\n */\n sideBySide = 'timepicker-sbs';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> July\n */\n previous = 'previous';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> September\n */\n next = 'next';\n\n /**\n * Applied to any action that would violate any restriction options. ALso applied\n * to an input field if the disabled function is called.\n */\n disabled = 'disabled';\n\n /**\n * Applied to any date that is less than requested view,\n * e.g. the last day of the previous month.\n */\n old = 'old';\n\n /**\n * Applied to any date that is greater than of requested view,\n * e.g. the last day of the previous month.\n */\n new = 'new';\n\n /**\n * Applied to any date that is currently selected.\n */\n active = 'active';\n\n //#region date element\n\n /**\n * The outer most element for the calendar view.\n */\n dateContainer = 'date-container';\n\n /**\n * The outer most element for the decades view.\n */\n decadesContainer = `${this.dateContainer}-decades`;\n\n /**\n * Applied to elements within the decades container, e.g. 2020, 2030\n */\n decade = 'decade';\n\n /**\n * The outer most element for the years view.\n */\n yearsContainer = `${this.dateContainer}-years`;\n\n /**\n * Applied to elements within the years container, e.g. 2021, 2021\n */\n year = 'year';\n\n /**\n * The outer most element for the month view.\n */\n monthsContainer = `${this.dateContainer}-months`;\n\n /**\n * Applied to elements within the month container, e.g. January, February\n */\n month = 'month';\n\n /**\n * The outer most element for the calendar view.\n */\n daysContainer = `${this.dateContainer}-days`;\n\n /**\n * Applied to elements within the day container, e.g. 1, 2..31\n */\n day = 'day';\n\n /**\n * If display.calendarWeeks is enabled, a column displaying the week of year\n * is shown. This class is applied to each cell in that column.\n */\n calendarWeeks = 'cw';\n\n /**\n * Applied to the first row of the calendar view, e.g. Sunday, Monday\n */\n dayOfTheWeek = 'dow';\n\n /**\n * Applied to the current date on the calendar view.\n */\n today = 'today';\n\n /**\n * Applied to the locale's weekend dates on the calendar view, e.g. Sunday, Saturday\n */\n weekend = 'weekend';\n\n //#endregion\n\n //#region time element\n\n /**\n * The outer most element for all time related elements.\n */\n timeContainer = 'time-container';\n\n /**\n * Applied the separator columns between time elements, e.g. hour *:* minute *:* second\n */\n separator = 'separator';\n\n /**\n * The outer most element for the clock view.\n */\n clockContainer = `${this.timeContainer}-clock`;\n\n /**\n * The outer most element for the hours selection view.\n */\n hourContainer = `${this.timeContainer}-hour`;\n\n /**\n * The outer most element for the minutes selection view.\n */\n minuteContainer = `${this.timeContainer}-minute`;\n\n /**\n * The outer most element for the seconds selection view.\n */\n secondContainer = `${this.timeContainer}-second`;\n\n /**\n * Applied to each element in the hours selection view.\n */\n hour = 'hour';\n\n /**\n * Applied to each element in the minutes selection view.\n */\n minute = 'minute';\n\n /**\n * Applied to each element in the seconds selection view.\n */\n second = 'second';\n\n /**\n * Applied AM/PM toggle button.\n */\n toggleMeridiem = 'toggleMeridiem';\n\n //#endregion\n\n //#region collapse\n\n /**\n * Applied the element of the current view mode, e.g. calendar or clock.\n */\n show = 'show';\n\n /**\n * Applied to the currently showing view mode during a transition\n * between calendar and clock views\n */\n collapsing = 'td-collapsing';\n\n /**\n * Applied to the currently hidden view mode.\n */\n collapse = 'td-collapse';\n\n //#endregion\n\n /**\n * Applied to the widget when the option display.inline is enabled.\n */\n inline = 'inline';\n}\n\nexport default class Namespace {\n static NAME = NAME;\n // noinspection JSUnusedGlobalSymbols\n static version = version;\n static dataKey = dataKey;\n\n static events = new Events();\n\n static css = new Css();\n\n static errorMessages = new ErrorMessages();\n}\n","import { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options from './options';\n\nconst DefaultOptions: Options = {\n restrictions: {\n minDate: undefined,\n maxDate: undefined,\n disabledDates: [],\n enabledDates: [],\n daysOfWeekDisabled: [],\n disabledTimeIntervals: [],\n disabledHours: [],\n enabledHours: [],\n },\n display: {\n icons: {\n type: 'icons',\n time: 'fas fa-clock',\n date: 'fas fa-calendar',\n up: 'fas fa-arrow-up',\n down: 'fas fa-arrow-down',\n previous: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n today: 'fas fa-calendar-check',\n clear: 'fas fa-trash',\n close: 'fas fa-times',\n },\n sideBySide: false,\n calendarWeeks: false,\n viewMode: 'calendar',\n toolbarPlacement: 'bottom',\n keepOpen: false,\n buttons: {\n today: false,\n clear: false,\n close: false,\n },\n components: {\n calendar: true,\n date: true,\n month: true,\n year: true,\n decades: true,\n clock: true,\n hours: true,\n minutes: true,\n seconds: false,\n useTwentyfourHour: false,\n },\n inline: false,\n },\n stepping: 1,\n useCurrent: true,\n defaultDate: undefined,\n localization: {\n today: 'Go to today',\n clear: 'Clear selection',\n close: 'Close the picker',\n selectMonth: 'Select Month',\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n selectYear: 'Select Year',\n previousYear: 'Previous Year',\n nextYear: 'Next Year',\n selectDecade: 'Select Decade',\n previousDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n previousCentury: 'Previous Century',\n nextCentury: 'Next Century',\n pickHour: 'Pick Hour',\n incrementHour: 'Increment Hour',\n decrementHour: 'Decrement Hour',\n pickMinute: 'Pick Minute',\n incrementMinute: 'Increment Minute',\n decrementMinute: 'Decrement Minute',\n pickSecond: 'Pick Second',\n incrementSecond: 'Increment Second',\n decrementSecond: 'Decrement Second',\n toggleMeridiem: 'Toggle Meridiem',\n selectTime: 'Select Time',\n selectDate: 'Select Date',\n dayViewHeaderFormat: 'long',\n locale: 'default',\n },\n keepInvalid: false,\n debug: false,\n allowInputToggle: false,\n viewDate: new DateTime(),\n multipleDates: false,\n multipleDatesSeparator: '; ',\n promptTimeOnDateChange: false,\n promptTimeOnDateChangeTransitionDelay: 200,\n hooks: {\n inputParse: undefined,\n inputFormat: undefined,\n },\n};\n\nconst DatePickerModes: {\n name: string;\n className: string;\n unit: Unit;\n step: number;\n}[] = [\n {\n name: 'calendar',\n className: Namespace.css.daysContainer,\n unit: Unit.month,\n step: 1,\n },\n {\n name: 'months',\n className: Namespace.css.monthsContainer,\n unit: Unit.year,\n step: 1,\n },\n {\n name: 'years',\n className: Namespace.css.yearsContainer,\n unit: Unit.year,\n step: 10,\n },\n {\n name: 'decades',\n className: Namespace.css.decadesContainer,\n unit: Unit.year,\n step: 100,\n },\n];\n\nexport { DefaultOptions, DatePickerModes, Namespace };\n","import Namespace from '../namespace';\n\n/**\n * Provides a collapse functionality to the view changes\n */\nexport default class Collapse {\n private timeOut;\n\n /**\n * Flips the show/hide state of `target`\n * @param target html element to affect.\n */\n toggle(target: HTMLElement, callback = undefined) {\n if (target.classList.contains(Namespace.css.show)) {\n this.hide(target, callback);\n } else {\n this.show(target, callback);\n }\n }\n\n /**\n * If `target` is not already showing, then show after the animation.\n * @param target\n */\n show(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse, Namespace.css.show);\n target.style.height = '';\n this.timeOut = null;\n if (callback) callback();\n };\n\n target.style.height = '0';\n target.classList.remove(Namespace.css.collapse);\n target.classList.add(Namespace.css.collapsing);\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n target.style.height = `${target.scrollHeight}px`;\n }\n\n /**\n * If `target` is not already hidden, then hide after the animation.\n * @param target HTML Element\n */\n hide(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n !target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse);\n this.timeOut = null;\n };\n\n target.style.height = `${target.getBoundingClientRect()['height']}px`;\n\n const reflow = (element) => element.offsetHeight;\n\n reflow(target);\n\n target.classList.remove(Namespace.css.collapse, Namespace.css.show);\n target.classList.add(Namespace.css.collapsing);\n target.style.height = '';\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n }\n\n /**\n * Gets the transition duration from the `element` by getting css properties\n * `transition-duration` and `transition-delay`\n * @param element HTML Element\n */\n private getTransitionDurationFromElement = (element: HTMLElement) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } =\n window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) +\n Number.parseFloat(transitionDelay)) *\n 1000\n );\n };\n}\n","import { DatePickerModes } from './conts.js';\nimport { DateTime, Unit } from './datetime';\nimport { TempusDominus } from './tempus-dominus';\nimport Collapse from './display/collapse';\nimport Namespace from './namespace';\n\n/**\n *\n */\nexport default class Actions {\n private _context: TempusDominus;\n private collapse: Collapse;\n\n constructor(context: TempusDominus) {\n this._context = context;\n this.collapse = new Collapse();\n }\n\n /**\n * Performs the selected `action`. See ActionTypes\n * @param e This is normally a click event\n * @param action If not provided, then look for a [data-action]\n */\n do(e: any, action?: ActionTypes) {\n const currentTarget = e.currentTarget;\n if (currentTarget.classList.contains(Namespace.css.disabled)) return false;\n action = action || currentTarget.dataset.action;\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n /**\n * Common function to manipulate {@link lastPicked} by `unit`\n * @param unit\n * @param value Value to change by\n */\n const manipulateAndSet = (unit: Unit, value = 1) => {\n const newDate = lastPicked.manipulate(value, unit);\n if (this._context._validation.isValid(newDate, unit)) {\n this._context.dates._setValue(\n newDate,\n this._context.dates.lastPickedIndex\n );\n }\n };\n\n switch (action) {\n case ActionTypes.next:\n case ActionTypes.previous:\n const { unit, step } = DatePickerModes[this._context._currentViewMode];\n if (action === ActionTypes.next)\n this._context._viewDate.manipulate(step, unit);\n else this._context._viewDate.manipulate(step * -1, unit);\n this._context._viewUpdate(unit);\n\n this._context._display._showMode();\n break;\n case ActionTypes.pickerSwitch:\n this._context._display._showMode(1);\n this._context._viewUpdate(\n DatePickerModes[this._context._currentViewMode].unit\n );\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.selectMonth:\n case ActionTypes.selectYear:\n case ActionTypes.selectDecade:\n const value = +currentTarget.dataset.value;\n switch (action) {\n case ActionTypes.selectMonth:\n this._context._viewDate.month = value;\n this._context._viewUpdate(Unit.month);\n break;\n case ActionTypes.selectYear:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n case ActionTypes.selectDecade:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n }\n\n if (\n this._context._currentViewMode === this._context._minViewModeNumber\n ) {\n this._context.dates._setValue(\n this._context._viewDate,\n this._context.dates.lastPickedIndex\n );\n if (!this._context._options.display.inline) {\n this._context._display.hide();\n }\n } else {\n this._context._display._showMode(-1);\n }\n break;\n case ActionTypes.selectDay:\n const day = this._context._viewDate.clone;\n if (currentTarget.classList.contains(Namespace.css.old)) {\n day.manipulate(-1, Unit.month);\n }\n if (currentTarget.classList.contains(Namespace.css.new)) {\n day.manipulate(1, Unit.month);\n }\n\n day.date = +currentTarget.dataset.day;\n let index = 0;\n if (this._context._options.multipleDates) {\n index = this._context.dates.pickedIndex(day, Unit.date);\n if (index !== -1) {\n this._context.dates._setValue(null, index); //deselect multi-date\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex + 1\n );\n }\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex\n );\n }\n\n if (\n !this._context._display._hasTime &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline &&\n !this._context._options.multipleDates\n ) {\n this._context._display.hide();\n }\n break;\n case ActionTypes.selectHour:\n let hour = +currentTarget.dataset.value;\n if (\n lastPicked.hours >= 12 &&\n !this._context._options.display.components.useTwentyfourHour\n )\n hour += 12;\n lastPicked.hours = hour;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.minutes &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectMinute:\n lastPicked.minutes = +currentTarget.dataset.value;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.seconds &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectSecond:\n lastPicked.seconds = +currentTarget.innerText;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.incrementHours:\n manipulateAndSet(Unit.hours);\n break;\n case ActionTypes.incrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping);\n break;\n case ActionTypes.incrementSeconds:\n manipulateAndSet(Unit.seconds);\n break;\n case ActionTypes.decrementHours:\n manipulateAndSet(Unit.hours, -1);\n break;\n case ActionTypes.decrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping * -1);\n break;\n case ActionTypes.decrementSeconds:\n manipulateAndSet(Unit.seconds, -1);\n break;\n case ActionTypes.toggleMeridiem:\n manipulateAndSet(\n Unit.hours,\n this._context.dates.lastPicked.hours >= 12 ? -12 : 12\n );\n break;\n case ActionTypes.togglePicker:\n this._context._display.widget\n .querySelectorAll(\n `.${Namespace.css.dateContainer}, .${Namespace.css.timeContainer}`\n )\n .forEach((htmlElement: HTMLElement) =>\n this.collapse.toggle(htmlElement)\n );\n if (\n currentTarget.getAttribute('title') ===\n this._context._options.localization.selectDate\n ) {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectTime\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.time\n ).outerHTML;\n\n this._context._display._updateCalendarHeader();\n } else {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectDate\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.date\n ).outerHTML;\n this.do(e, ActionTypes.showClock);\n this._context._display._update('clock');\n }\n break;\n case ActionTypes.showClock:\n case ActionTypes.showHours:\n case ActionTypes.showMinutes:\n case ActionTypes.showSeconds:\n this._context._display.widget\n .querySelectorAll(`.${Namespace.css.timeContainer} > div`)\n .forEach(\n (htmlElement: HTMLElement) => (htmlElement.style.display = 'none')\n );\n\n let classToUse = '';\n switch (action) {\n case ActionTypes.showClock:\n classToUse = Namespace.css.clockContainer;\n this._context._display._update('clock');\n break;\n case ActionTypes.showHours:\n classToUse = Namespace.css.hourContainer;\n this._context._display._update(Unit.hours);\n break;\n case ActionTypes.showMinutes:\n classToUse = Namespace.css.minuteContainer;\n this._context._display._update(Unit.minutes);\n break;\n case ActionTypes.showSeconds:\n classToUse = Namespace.css.secondContainer;\n this._context._display._update(Unit.seconds);\n break;\n }\n\n ((\n this._context._display.widget.getElementsByClassName(classToUse)[0]\n )).style.display = 'grid';\n break;\n case ActionTypes.clear:\n this._context.dates._setValue(null);\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.close:\n this._context._display.hide();\n break;\n case ActionTypes.today:\n const today = new DateTime().setLocale(\n this._context._options.localization.locale\n );\n this._context._viewDate = today;\n if (this._context._validation.isValid(today, Unit.date))\n this._context.dates._setValue(\n today,\n this._context.dates.lastPickedIndex\n );\n break;\n }\n }\n}\n\nexport enum ActionTypes {\n next = 'next',\n previous = 'previous',\n pickerSwitch = 'pickerSwitch',\n selectMonth = 'selectMonth',\n selectYear = 'selectYear',\n selectDecade = 'selectDecade',\n selectDay = 'selectDay',\n selectHour = 'selectHour',\n selectMinute = 'selectMinute',\n selectSecond = 'selectSecond',\n incrementHours = 'incrementHours',\n incrementMinutes = 'incrementMinutes',\n incrementSeconds = 'incrementSeconds',\n decrementHours = 'decrementHours',\n decrementMinutes = 'decrementMinutes',\n decrementSeconds = 'decrementSeconds',\n toggleMeridiem = 'toggleMeridiem',\n togglePicker = 'togglePicker',\n showClock = 'showClock',\n showHours = 'showHours',\n showMinutes = 'showMinutes',\n showSeconds = 'showSeconds',\n clear = 'clear',\n close = 'close',\n today = 'today',\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `date`\r\n */\r\nexport default class DateDisplay {\r\n private _context: TempusDominus;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.daysContainer);\r\n\r\n container.append(...this._daysOfTheWeek());\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(Namespace.css.calendarWeeks, Namespace.css.noHighlight);\r\n container.appendChild(div);\r\n }\r\n\r\n for (let i = 0; i < 42; i++) {\r\n if (i !== 0 && i % 7 === 0) {\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n container.appendChild(div);\r\n }\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDay);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update(): void {\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.daysContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.daysContainer,\r\n this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n })\r\n );\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(-1, Unit.month),\r\n Unit.month\r\n )\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(1, Unit.month),\r\n Unit.month\r\n )\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.month)\r\n .startOf('weekDay')\r\n .manipulate(12, Unit.hours);\r\n\r\n container\r\n .querySelectorAll(\r\n `[data-action=\"${ActionTypes.selectDay}\"], .${Namespace.css.calendarWeeks}`\r\n )\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (\r\n this._context._options.display.calendarWeeks &&\r\n containerClone.classList.contains(Namespace.css.calendarWeeks)\r\n ) {\r\n if (containerClone.innerText === '#') return;\r\n containerClone.innerText = `${innerDate.week}`;\r\n return;\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.day);\r\n\r\n if (innerDate.isBefore(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.old);\r\n }\r\n if (innerDate.isAfter(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.new);\r\n }\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.date)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.date)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n if (innerDate.isSame(new DateTime(), Unit.date)) {\r\n classes.push(Namespace.css.today);\r\n }\r\n if (innerDate.weekDay === 0 || innerDate.weekDay === 6) {\r\n classes.push(Namespace.css.weekend);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`\r\n );\r\n containerClone.setAttribute(\r\n 'data-day',\r\n `${innerDate.date}`\r\n );\r\n containerClone.innerText = innerDate.format({ day: \"numeric\" });\r\n innerDate.manipulate(1, Unit.date);\r\n });\r\n }\r\n\r\n /***\r\n * Generates an html row that contains the days of the week.\r\n * @private\r\n */\r\n private _daysOfTheWeek(): HTMLElement[] {\r\n let innerDate = this._context._viewDate.clone\r\n .startOf('weekDay')\r\n .startOf(Unit.date);\r\n const row = [];\r\n document.createElement('div');\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = '#';\r\n row.push(htmlDivElement);\r\n }\r\n\r\n for (let i = 0; i < 7; i++) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.dayOfTheWeek,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = innerDate.format({ weekday: 'short' });\r\n innerDate.manipulate(1, Unit.date);\r\n row.push(htmlDivElement);\r\n }\r\n\r\n return row;\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `month`\n */\nexport default class MonthDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.monthsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMonth);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.monthsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.monthsContainer,\n this._context._viewDate.format({ year: 'numeric' })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.year),\n Unit.year\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.year),\n Unit.year\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone.startOf(Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMonth}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.month);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.month)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.month)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${index}`);\n containerClone.innerText = `${innerDate.format({ month: 'short' })}`;\n innerDate.manipulate(1, Unit.month);\n });\n }\n}\n","import { DateTime, DateTimeFormatOptions } from './datetime';\nimport Namespace from './namespace';\nimport { DefaultOptions } from './conts';\n\nexport default interface Options {\n restrictions: {\n minDate: DateTime;\n maxDate: DateTime;\n enabledDates: DateTime[];\n disabledDates: DateTime[];\n enabledHours: number[];\n disabledHours: number[];\n disabledTimeIntervals: { from: DateTime; to: DateTime }[];\n daysOfWeekDisabled: number[];\n };\n display: {\n toolbarPlacement: 'top' | 'bottom';\n components: {\n calendar: boolean;\n date: boolean;\n month: boolean;\n year: boolean;\n decades: boolean;\n clock: boolean;\n hours: boolean;\n minutes: boolean;\n seconds: boolean;\n useTwentyfourHour: boolean;\n };\n buttons: { today: boolean; close: boolean; clear: boolean };\n calendarWeeks: boolean;\n icons: {\n date: string;\n next: string;\n previous: string;\n today: string;\n clear: string;\n time: string;\n up: string;\n type: 'icons' | 'sprites';\n down: string;\n close: string;\n };\n viewMode: 'clock' | 'calendar' | 'months' | 'years' | 'decades';\n sideBySide: boolean;\n inline: boolean;\n keepOpen: boolean;\n };\n stepping: number;\n useCurrent: boolean;\n defaultDate: DateTime;\n localization: {\n nextMonth: string;\n pickHour: string;\n incrementSecond: string;\n nextDecade: string;\n selectDecade: string;\n dayViewHeaderFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n decrementHour: string;\n selectDate: string;\n incrementHour: string;\n previousCentury: string;\n decrementSecond: string;\n today: string;\n previousMonth: string;\n selectYear: string;\n pickSecond: string;\n nextCentury: string;\n close: string;\n incrementMinute: string;\n selectTime: string;\n clear: string;\n toggleMeridiem: string;\n selectMonth: string;\n decrementMinute: string;\n pickMinute: string;\n nextYear: string;\n previousYear: string;\n previousDecade: string;\n locale: string;\n };\n keepInvalid: boolean;\n debug: boolean;\n allowInputToggle: boolean;\n viewDate: DateTime;\n multipleDates: boolean;\n multipleDatesSeparator: string;\n promptTimeOnDateChange: boolean;\n promptTimeOnDateChangeTransitionDelay: number;\n hooks: {\n inputParse: (value: any) => DateTime;\n inputFormat: (date: DateTime) => string;\n };\n}\n\nexport class OptionConverter {\n static _mergeOptions(providedOptions: Options, mergeTo: Options): Options {\n const newOptions = {} as Options;\n let path = '';\n const ignoreProperties = ['inputParse', 'inputFormat'];\n\n const processKey = (key, value, providedType, defaultType) => {\n switch (key) {\n case 'defaultDate': {\n const dateTime = this._dateConversion(value, 'defaultDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'defaultDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'viewDate': {\n const dateTime = this._dateConversion(value, 'viewDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'viewDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'minDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.minDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.minDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'maxDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.maxDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.maxDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'disabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.disabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.disabledHours',\n 0,\n 23\n );\n return value;\n case 'enabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.enabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.enabledHours',\n 0,\n 23\n );\n return value;\n case 'daysOfWeekDisabled':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.daysOfWeekDisabled',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 6).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.daysOfWeekDisabled',\n 0,\n 6\n );\n return value;\n case 'enabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.enabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.disabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledTimeIntervals':\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n key,\n providedType,\n 'array of { from: DateTime|Date, to: DateTime|Date }'\n );\n }\n const valueObject = value as { from: any; to: any }[];\n for (let i = 0; i < valueObject.length; i++) {\n Object.keys(valueObject[i]).forEach((vk) => {\n const subOptionName = `${key}[${i}].${vk}`;\n let d = valueObject[i][vk];\n const dateTime = this._dateConversion(d, subOptionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n subOptionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n valueObject[i][vk] = dateTime;\n });\n }\n return valueObject;\n case 'toolbarPlacement':\n case 'type':\n case 'viewMode':\n case 'dayViewHeaderFormat':\n const optionValues = {\n toolbarPlacement: ['top', 'bottom', 'default'],\n type: ['icons', 'sprites'],\n viewMode: ['clock', 'calendar', 'months', 'years', 'decades'],\n dayViewHeaderFormat: [\n 'numeric',\n '2-digit',\n 'long',\n 'short',\n 'narrow',\n ],\n };\n const keyOptions = optionValues[key];\n if (!keyOptions.includes(value))\n Namespace.errorMessages.unexpectedOptionValue(\n path.substring(1),\n value,\n keyOptions\n );\n\n return value;\n case 'inputParse':\n case 'inputFormat':\n return value;\n default:\n switch (defaultType) {\n case 'boolean':\n return value === 'true' || value === true;\n case 'number':\n return +value;\n case 'string':\n return value.toString();\n case 'object':\n return {};\n case 'function':\n return value;\n default:\n Namespace.errorMessages.typeMismatch(\n path.substring(1),\n providedType,\n defaultType\n );\n }\n }\n };\n\n /**\n * The spread operator caused sub keys to be missing after merging.\n * This is to fix that issue by using spread on the child objects first.\n * Also handles complex options like disabledDates\n * @param provided An option from new providedOptions\n * @param mergeOption Default option to compare types against\n * @param copyTo Destination object. This was add to prevent reference copies\n */\n const spread = (provided, mergeOption, copyTo) => {\n const unsupportedOptions = Object.keys(provided).filter(\n (x) => !Object.keys(mergeOption).includes(x)\n );\n if (unsupportedOptions.length > 0) {\n const flattenedOptions = OptionConverter._flattenDefaultOptions;\n\n const errors = unsupportedOptions.map((x) => {\n let error = `\"${path.substring(1)}.${x}\" in not a known option.`;\n let didYouMean = flattenedOptions.find((y) => y.includes(x));\n if (didYouMean) error += `Did you mean \"${didYouMean}\"?`;\n return error;\n });\n Namespace.errorMessages.unexpectedOptions(errors);\n }\n Object.keys(mergeOption).forEach((key) => {\n const defaultOptionValue = mergeOption[key];\n let providedType = typeof provided[key];\n let defaultType = typeof defaultOptionValue;\n let value = provided[key];\n if (!provided.hasOwnProperty(key)) {\n if (\n defaultType === 'undefined' ||\n (value?.length === 0 && Array.isArray(defaultOptionValue))\n ) {\n copyTo[key] = defaultOptionValue;\n return;\n }\n provided[key] = defaultOptionValue;\n value = provided[key];\n }\n path += `.${key}`;\n copyTo[key] = processKey(key, value, providedType, defaultType);\n\n if (typeof defaultOptionValue !== 'object' || ignoreProperties.includes(key)) {\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n return;\n }\n if (!Array.isArray(provided[key])) {\n spread(provided[key], defaultOptionValue, copyTo[key]);\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n }\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n });\n };\n spread(providedOptions, mergeTo, newOptions);\n\n return newOptions;\n }\n\n static _dataToOptions(element, options: Options): Options {\n const eData = element.dataset;\n if (\n !eData ||\n Object.keys(eData).length === 0 ||\n eData.constructor !== DOMStringMap\n )\n return options;\n let dataOptions = {} as Options;\n\n // because dataset returns camelCase including the 'td' key the option\n // key won't align\n const objectToNormalized = (object) => {\n const lowered = {};\n Object.keys(object).forEach((x) => {\n lowered[x.toLowerCase()] = x;\n });\n\n return lowered;\n };\n\n const rabbitHole = (\n split: string[],\n index: number,\n optionSubgroup: {},\n value: any\n ) => {\n // first round = display { ... }\n const normalizedOptions = objectToNormalized(optionSubgroup);\n\n const keyOption = normalizedOptions[split[index].toLowerCase()];\n const internalObject = {};\n\n if (keyOption === undefined) return internalObject;\n\n // if this is another object, continue down the rabbit hole\n if (optionSubgroup[keyOption].constructor === Object) {\n index++;\n internalObject[keyOption] = rabbitHole(\n split,\n index,\n optionSubgroup[keyOption],\n value\n );\n } else {\n internalObject[keyOption] = value;\n }\n return internalObject;\n };\n const optionsLower = objectToNormalized(options);\n\n Object.keys(eData)\n .filter((x) => x.startsWith(Namespace.dataKey))\n .map((x) => x.substring(2))\n .forEach((key) => {\n let keyOption = optionsLower[key.toLowerCase()];\n\n // dataset merges dashes to camelCase... yay\n // i.e. key = display_components_seconds\n if (key.includes('_')) {\n // [display, components, seconds]\n const split = key.split('_');\n // display\n keyOption = optionsLower[split[0].toLowerCase()];\n if (\n keyOption !== undefined &&\n options[keyOption].constructor === Object\n ) {\n dataOptions[keyOption] = rabbitHole(\n split,\n 1,\n options[keyOption],\n eData[`td${key}`]\n );\n }\n }\n // or key = multipleDate\n else if (keyOption !== undefined) {\n dataOptions[keyOption] = eData[`td${key}`];\n }\n });\n\n return this._mergeOptions(dataOptions, options);\n }\n\n /**\n * Attempts to prove `d` is a DateTime or Date or can be converted into one.\n * @param d If a string will attempt creating a date from it.\n * @private\n */\n static _dateTypeCheck(d: any): DateTime | null {\n if (d.constructor.name === DateTime.name) return d;\n if (d.constructor.name === Date.name) {\n return DateTime.convert(d);\n }\n if (typeof d === typeof '') {\n const dateTime = new DateTime(d);\n if (JSON.stringify(dateTime) === 'null') {\n return null;\n }\n return dateTime;\n }\n return null;\n }\n\n /**\n * Type checks that `value` is an array of Date or DateTime\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckDateArray(optionName: string, value, providedType: string) {\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of DateTime or Date'\n );\n }\n for (let i = 0; i < value.length; i++) {\n let d = value[i];\n const dateTime = this._dateConversion(d, optionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n value[i] = dateTime;\n }\n }\n\n /**\n * Type checks that `value` is an array of numbers\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckNumberArray(\n optionName: string,\n value,\n providedType: string\n ) {\n if (!Array.isArray(value) || value.find((x) => typeof x !== typeof 0)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of numbers'\n );\n }\n return;\n }\n\n /**\n * Attempts to convert `d` to a DateTime object\n * @param d value to convert\n * @param optionName Provides text to error messages e.g. disabledDates\n */\n static _dateConversion(d: any, optionName: string) {\n if (typeof d === typeof '' && optionName !== 'input') {\n Namespace.errorMessages.dateString();\n }\n\n const converted = this._dateTypeCheck(d);\n\n if (!converted) {\n Namespace.errorMessages.failedToParseDate(\n optionName,\n d,\n optionName === 'input'\n );\n }\n return converted;\n }\n\n private static _flatback: string[];\n\n private static get _flattenDefaultOptions(): string[] {\n if (this._flatback) return this._flatback;\n const deepKeys = (t, pre = []) =>\n Array.isArray(t)\n ? []\n : Object(t) === t\n ? Object.entries(t).flatMap(([k, v]) => deepKeys(v, [...pre, k]))\n : pre.join('.');\n\n this._flatback = deepKeys(DefaultOptions);\n\n return this._flatback;\n }\n\n /**\n * Some options conflict like min/max date. Verify that these kinds of options\n * are set correctly.\n * @param config\n */\n static _validateConflcits(config: Options) {\n if (config.restrictions.minDate && config.restrictions.maxDate) {\n if (config.restrictions.minDate.isAfter(config.restrictions.maxDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'minDate is after maxDate'\n );\n }\n\n if (config.restrictions.maxDate.isBefore(config.restrictions.minDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'maxDate is before minDate'\n );\n }\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport { ChangeEvent, FailEvent } from './event-types';\nimport { OptionConverter } from './options';\n\nexport default class Dates {\n private _dates: DateTime[] = [];\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Returns the array of selected dates\n */\n get picked(): DateTime[] {\n return this._dates;\n }\n\n /**\n * Returns the last picked value.\n */\n get lastPicked(): DateTime {\n return this._dates[this.lastPickedIndex];\n }\n\n /**\n * Returns the length of picked dates -1 or 0 if none are selected.\n */\n get lastPickedIndex(): number {\n if (this._dates.length === 0) return 0;\n return this._dates.length - 1;\n }\n\n /**\n * Adds a new DateTime to selected dates array\n * @param date\n */\n add(date: DateTime): void {\n this._dates.push(date);\n }\n\n /**\n * Tries to convert the provided value to a DateTime object.\n * If value is null|undefined then clear the value of the provided index (or 0).\n * @param value Value to convert or null|undefined\n * @param index When using multidates this is the index in the array\n * @param from Used in the warning message, useful for debugging.\n */\n set(value: any, index?: number, from: string = 'date.set') {\n if (!value) this._setValue(value, index);\n const converted = OptionConverter._dateConversion(value, from);\n if (converted) this._setValue(converted, index);\n }\n\n /**\n * Returns true if the `targetDate` is part of the selected dates array.\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n isPicked(targetDate: DateTime, unit?: Unit): boolean {\n if (!unit) return this._dates.find((x) => x === targetDate) !== undefined;\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return (\n this._dates\n .map((x) => x.format(format))\n .find((x) => x === innerDateFormatted) !== undefined\n );\n }\n\n /**\n * Returns the index at which `targetDate` is in the array.\n * This is used for updating or removing a date when multi-date is used\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n pickedIndex(targetDate: DateTime, unit?: Unit): number {\n if (!unit) return this._dates.indexOf(targetDate);\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return this._dates.map((x) => x.format(format)).indexOf(innerDateFormatted);\n }\n\n /**\n * Clears all selected dates.\n */\n clear() {\n this._context._unset = true;\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate: this.lastPicked,\n isClear: true,\n isValid: true,\n } as ChangeEvent);\n this._dates = [];\n }\n\n /**\n * Find the \"book end\" years given a `year` and a `factor`\n * @param factor e.g. 100 for decades\n * @param year e.g. 2021\n */\n static getStartEndYear(\n factor: number,\n year: number\n ): [number, number, number] {\n const step = factor / 10,\n startYear = Math.floor(year / factor) * factor,\n endYear = startYear + step * 9,\n focusValue = Math.floor(year / step) * step;\n return [startYear, endYear, focusValue];\n }\n\n /**\n * Do not use direectly. Attempts to either clear or set the `target` date at `index`.\n * If the `target` is null then the date will be cleared.\n * If multi-date is being used then it will be removed from the array.\n * If `target` is valid and multi-date is used then if `index` is\n * provided the date at that index will be replaced, otherwise it is appended.\n * @param target\n * @param index\n */\n _setValue(target?: DateTime, index?: number): void {\n const noIndex = typeof index === 'undefined',\n isClear = !target && noIndex;\n let oldDate = this._context._unset ? null : this._dates[index];\n if (!oldDate && !this._context._unset && noIndex && isClear) {\n oldDate = this.lastPicked;\n }\n\n if (target && oldDate?.isSame(target)) return;\n\n const updateInput = () => {\n if (!this._context._input) return;\n\n let newValue = this._context._options.hooks.inputFormat(target);\n if (this._context._options.multipleDates) {\n newValue = this._dates\n .map((d) => this._context._options.hooks.inputFormat(d))\n .join(this._context._options.multipleDatesSeparator);\n }\n if (this._context._input.value != newValue)\n this._context._input.value = newValue;\n };\n\n // case of calling setValue(null)\n if (!target) {\n if (\n !this._context._options.multipleDates ||\n this._dates.length === 1 ||\n isClear\n ) {\n this._context._unset = true;\n this._dates = [];\n } else {\n this._dates.splice(index, 1);\n }\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n\n updateInput();\n this._context._display._update('all');\n return;\n }\n\n index = index || 0;\n target = target.clone;\n\n // minute stepping is being used, force the minute to the closest value\n if (this._context._options.stepping !== 1) {\n target.minutes =\n Math.round(target.minutes / this._context._options.stepping) *\n this._context._options.stepping;\n target.seconds = 0;\n }\n\n if (this._context._validation.isValid(target)) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._unset = false;\n this._context._display._update('all');\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n return;\n }\n\n if (this._context._options.keepInvalid) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: false,\n } as ChangeEvent);\n }\n this._context._triggerEvent({\n type: Namespace.events.error,\n reason: Namespace.errorMessages.failedToSetInvalidDate,\n date: target,\n oldDate,\n } as FailEvent);\n }\n\n /**\n * Returns a format object based on the granularity of `unit`\n * @param unit\n */\n static getFormatByUnit(unit: Unit): object {\n switch (unit) {\n case 'date':\n return { dateStyle: 'short' };\n case 'month':\n return {\n month: 'numeric',\n year: 'numeric',\n };\n case 'year':\n return { year: 'numeric' };\n }\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\nimport Dates from '../../dates';\r\n\r\n/**\r\n * Creates and updates the grid for `year`\r\n */\r\nexport default class YearDisplay {\r\n private _context: TempusDominus;\r\n private _startYear: DateTime;\r\n private _endYear: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.yearsContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectYear);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 10,\r\n this._context._viewDate.year\r\n );\r\n this._startYear = this._context._viewDate.clone.manipulate(-1, Unit.year);\r\n this._endYear = this._context._viewDate.clone.manipulate(10, Unit.year);\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.yearsContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.yearsContainer,\r\n `${this._startYear.format({ year: 'numeric' })}-${this._endYear.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startYear, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endYear, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.year)\r\n .manipulate(-1, Unit.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectYear}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n let classes = [];\r\n classes.push(Namespace.css.year);\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.year)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.year)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute('data-value', `${innerDate.year}`);\r\n containerClone.innerText = innerDate.format({ year: \"numeric\" });\r\n\r\n innerDate.manipulate(1, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport Dates from '../../dates';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `seconds`\r\n */\r\nexport default class DecadeDisplay {\r\n private _context: TempusDominus;\r\n private _startDecade: DateTime;\r\n private _endDecade: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker() {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.decadesContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDecade);\r\n container.appendChild(div);\r\n }\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 100,\r\n this._context._viewDate.year\r\n );\r\n this._startDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._startDecade.year = start;\r\n this._endDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._endDecade.year = end;\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.decadesContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.decadesContainer,\r\n `${this._startDecade.format({ year: 'numeric' })}-${this._endDecade.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startDecade, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endDecade, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n const pickedYears = this._context.dates.picked.map((x) => x.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectDecade}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (index === 0) {\r\n containerClone.classList.add(Namespace.css.old);\r\n if (this._startDecade.year - 10 < 0) {\r\n containerClone.textContent = ' ';\r\n previous.classList.add(Namespace.css.disabled);\r\n containerClone.classList.add(Namespace.css.disabled);\r\n containerClone.setAttribute('data-value', ``);\r\n return;\r\n } else {\r\n containerClone.innerText = this._startDecade.clone.manipulate(-10, Unit.year).format({ year: 'numeric' });\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n return;\r\n }\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.decade);\r\n const startDecadeYear = this._startDecade.year;\r\n const endDecadeYear = this._startDecade.year + 9;\r\n\r\n if (\r\n !this._context._unset &&\r\n pickedYears.filter((x) => x >= startDecadeYear && x <= endDecadeYear)\r\n .length > 0\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n containerClone.innerText = `${this._startDecade.format({ year: 'numeric' })}`;\r\n\r\n this._startDecade.manipulate(10, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates the clock display\n */\nexport default class TimeDisplay {\n private _context: TempusDominus;\n private _gridColumns = '';\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the clock display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.clockContainer);\n\n container.append(...this._grid());\n\n return container;\n }\n\n /**\n * Populates the various elements with in the clock display\n * like the current hour and if the manipulation icons are enabled.\n * @private\n */\n _update(): void {\n const timesDiv = (\n this._context._display.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0]\n );\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n timesDiv\n .querySelectorAll('.disabled')\n .forEach((element) => element.classList.remove(Namespace.css.disabled));\n\n if (this._context._options.display.components.hours) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.hours}]`\n ).innerText = this._context._options.display.components.useTwentyfourHour\n ? lastPicked.hoursFormatted\n : lastPicked.twelveHoursFormatted;\n }\n\n if (this._context._options.display.components.minutes) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.minutes}]`\n ).innerText = lastPicked.minutesFormatted;\n }\n\n if (this._context._options.display.components.seconds) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.seconds}]`\n ).innerText = lastPicked.secondsFormatted;\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n const toggle = timesDiv.querySelector(\n `[data-action=${ActionTypes.toggleMeridiem}]`\n );\n\n toggle.innerText = lastPicked.meridiem();\n\n if (\n !this._context._validation.isValid(\n lastPicked.clone.manipulate(\n lastPicked.hours >= 12 ? -12 : 12,\n Unit.hours\n )\n )\n ) {\n toggle.classList.add(Namespace.css.disabled);\n } else {\n toggle.classList.remove(Namespace.css.disabled);\n }\n }\n\n timesDiv.style.gridTemplateAreas = `\"${this._gridColumns}\"`;\n }\n\n /**\n * Creates the table for the clock display depending on what options are selected.\n * @private\n */\n private _grid(): HTMLElement[] {\n this._gridColumns = '';\n const top = [],\n middle = [],\n bottom = [],\n separator = document.createElement('div'),\n upIcon = this._context._display._iconTag(\n this._context._options.display.icons.up\n ),\n downIcon = this._context._display._iconTag(\n this._context._options.display.icons.down\n );\n\n separator.classList.add(Namespace.css.separator, Namespace.css.noHighlight);\n const separatorColon = separator.cloneNode(true);\n separatorColon.innerHTML = ':';\n\n const getSeparator = (colon = false): HTMLElement => {\n return colon\n ? separatorColon.cloneNode(true)\n : separator.cloneNode(true);\n };\n\n if (this._context._options.display.components.hours) {\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.incrementHours);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickHour\n );\n divElement.setAttribute('data-action', ActionTypes.showHours);\n divElement.setAttribute('data-time-component', Unit.hours);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.decrementHours);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n this._gridColumns += 'a';\n }\n\n if (this._context._options.display.components.minutes) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.hours) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.incrementMinutes);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickMinute\n );\n divElement.setAttribute('data-action', ActionTypes.showMinutes);\n divElement.setAttribute('data-time-component', Unit.minutes);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.decrementMinutes);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (this._context._options.display.components.seconds) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.minutes) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.incrementSeconds);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickSecond\n );\n divElement.setAttribute('data-action', ActionTypes.showSeconds);\n divElement.setAttribute('data-time-component', Unit.seconds);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.decrementSeconds);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n this._gridColumns += ' a';\n let divElement = getSeparator();\n top.push(divElement);\n\n let button = document.createElement('button');\n button.setAttribute(\n 'title',\n this._context._options.localization.toggleMeridiem\n );\n button.setAttribute('data-action', ActionTypes.toggleMeridiem);\n button.setAttribute('tabindex', '-1');\n button.classList.add(Namespace.css.toggleMeridiem);\n\n divElement = document.createElement('div');\n divElement.classList.add(Namespace.css.noHighlight);\n divElement.appendChild(button);\n middle.push(divElement);\n\n divElement = getSeparator();\n bottom.push(divElement);\n }\n\n this._gridColumns = this._gridColumns.trim();\n\n return [...top, ...middle, ...bottom];\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `hours`\n */\nexport default class HourDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.hourContainer);\n\n for (\n let i = 0;\n i <\n (this._context._options.display.components.useTwentyfourHour ? 24 : 12);\n i++\n ) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectHour);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.hourContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.date);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectHour}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.hour);\n\n if (!this._context._validation.isValid(innerDate, Unit.hours)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.hours}`);\n containerClone.innerText = this._context._options.display.components\n .useTwentyfourHour\n ? innerDate.hoursFormatted\n : innerDate.twelveHoursFormatted;\n innerDate.manipulate(1, Unit.hours);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `minutes`\n */\nexport default class MinuteDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.minuteContainer);\n\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n for (let i = 0; i < 60 / step; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMinute);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.minuteContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.hours);\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMinute}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.minute);\n\n if (!this._context._validation.isValid(innerDate, Unit.minutes)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.minutes}`);\n containerClone.innerText = innerDate.minutesFormatted;\n innerDate.manipulate(step, Unit.minutes);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class secondDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.secondContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectSecond);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.secondContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.minutes);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectSecond}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.second);\n\n if (!this._context._validation.isValid(innerDate, Unit.seconds)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.seconds}`);\n containerClone.innerText = innerDate.secondsFormatted;\n innerDate.manipulate(5, Unit.seconds);\n });\n }\n}\n","import DateDisplay from './calendar/date-display';\r\nimport MonthDisplay from './calendar/month-display';\r\nimport YearDisplay from './calendar/year-display';\r\nimport DecadeDisplay from './calendar/decade-display';\r\nimport TimeDisplay from './time/time-display';\r\nimport HourDisplay from './time/hour-display';\r\nimport MinuteDisplay from './time/minute-display';\r\nimport SecondDisplay from './time/second-display';\r\nimport { DateTime, Unit } from '../datetime';\r\nimport { DatePickerModes } from '../conts';\r\nimport { TempusDominus } from '../tempus-dominus';\r\nimport { ActionTypes } from '../actions';\r\nimport { createPopper } from '@popperjs/core';\r\nimport Namespace from '../namespace';\r\nimport { HideEvent } from '../event-types';\r\n\r\n/**\r\n * Main class for all things display related.\r\n */\r\nexport default class Display {\r\n private _context: TempusDominus;\r\n private _dateDisplay: DateDisplay;\r\n private _monthDisplay: MonthDisplay;\r\n private _yearDisplay: YearDisplay;\r\n private _decadeDisplay: DecadeDisplay;\r\n private _timeDisplay: TimeDisplay;\r\n private _widget: HTMLElement;\r\n private _hourDisplay: HourDisplay;\r\n private _minuteDisplay: MinuteDisplay;\r\n private _secondDisplay: SecondDisplay;\r\n private _popperInstance: any;\r\n private _isVisible = false;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this._dateDisplay = new DateDisplay(context);\r\n this._monthDisplay = new MonthDisplay(context);\r\n this._yearDisplay = new YearDisplay(context);\r\n this._decadeDisplay = new DecadeDisplay(context);\r\n this._timeDisplay = new TimeDisplay(context);\r\n this._hourDisplay = new HourDisplay(context);\r\n this._minuteDisplay = new MinuteDisplay(context);\r\n this._secondDisplay = new SecondDisplay(context);\r\n\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Returns the widget body or undefined\r\n * @private\r\n */\r\n get widget(): HTMLElement | undefined {\r\n return this._widget;\r\n }\r\n\r\n /**\r\n * Returns this visible state of the picker (shown)\r\n */\r\n get isVisible() {\r\n return this._isVisible;\r\n }\r\n\r\n /**\r\n * Updates the table for a particular unit. Used when an option as changed or\r\n * whenever the class list might need to be refreshed.\r\n * @param unit\r\n * @private\r\n */\r\n _update(unit: Unit | 'clock' | 'calendar' | 'all'): void {\r\n if (!this.widget) return;\r\n //todo do I want some kind of error catching or other guards here?\r\n switch (unit) {\r\n case Unit.seconds:\r\n this._secondDisplay._update();\r\n break;\r\n case Unit.minutes:\r\n this._minuteDisplay._update();\r\n break;\r\n case Unit.hours:\r\n this._hourDisplay._update();\r\n break;\r\n case Unit.date:\r\n this._dateDisplay._update();\r\n break;\r\n case Unit.month:\r\n this._monthDisplay._update();\r\n break;\r\n case Unit.year:\r\n this._yearDisplay._update();\r\n break;\r\n case 'clock':\r\n this._timeDisplay._update();\r\n this._update(Unit.hours);\r\n this._update(Unit.minutes);\r\n this._update(Unit.seconds);\r\n break;\r\n case 'calendar':\r\n this._update(Unit.date);\r\n this._update(Unit.year);\r\n this._update(Unit.month);\r\n this._decadeDisplay._update();\r\n this._updateCalendarHeader();\r\n break;\r\n case 'all':\r\n if (this._hasTime) {\r\n this._update('clock');\r\n }\r\n if (this._hasDate) {\r\n this._update('calendar');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Shows the picker and creates a Popper instance if needed.\r\n * Add document click event to hide when clicking outside the picker.\r\n * @fires Events#show\r\n */\r\n show(): void {\r\n if (this.widget == undefined) {\r\n if (\r\n this._context._options.useCurrent &&\r\n !this._context._options.defaultDate &&\r\n !this._context._input?.value\r\n ) {\r\n //todo in the td4 branch a pr changed this to allow granularity\r\n const date = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n if (!this._context._options.keepInvalid) {\r\n let tries = 0;\r\n let direction = 1;\r\n if (this._context._options.restrictions.maxDate?.isBefore(date)) {\r\n direction = -1;\r\n }\r\n while (!this._context._validation.isValid(date)) {\r\n date.manipulate(direction, Unit.date);\r\n if (tries > 31) break;\r\n tries++;\r\n }\r\n }\r\n this._context.dates._setValue(date);\r\n }\r\n\r\n if (this._context._options.defaultDate) {\r\n this._context.dates._setValue(this._context._options.defaultDate);\r\n }\r\n\r\n this._buildWidget();\r\n if (this._hasDate) {\r\n this._showMode();\r\n }\r\n\r\n if (!this._context._options.display.inline) {\r\n document.body.appendChild(this.widget);\r\n\r\n this._popperInstance = createPopper(\r\n this._context._element,\r\n this.widget,\r\n {\r\n modifiers: [\r\n /* {\r\n name: 'offset',\r\n options: {\r\n offset: [2, 8],\r\n },\r\n },*/\r\n { name: 'eventListeners', enabled: true },\r\n ],\r\n placement: 'bottom-start',\r\n }\r\n );\r\n } else {\r\n this._context._element.appendChild(this.widget);\r\n }\r\n\r\n if (this._context._options.display.viewMode == 'clock') {\r\n this._context._action.do(\r\n {\r\n currentTarget: this.widget.querySelector(\r\n `.${Namespace.css.timeContainer}`\r\n ),\r\n },\r\n ActionTypes.showClock\r\n );\r\n }\r\n\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.addEventListener('click', this._actionsClickEvent)\r\n );\r\n\r\n // show the clock when using sideBySide\r\n if (this._context._options.display.sideBySide) {\r\n this._timeDisplay._update();\r\n (\r\n this.widget.getElementsByClassName(\r\n Namespace.css.clockContainer\r\n )[0] as HTMLElement\r\n ).style.display = 'grid';\r\n }\r\n }\r\n\r\n this.widget.classList.add(Namespace.css.show);\r\n if (!this._context._options.display.inline) {\r\n this._popperInstance.update();\r\n document.addEventListener('click', this._documentClickEvent);\r\n }\r\n this._context._triggerEvent({ type: Namespace.events.show });\r\n this._isVisible = true;\r\n }\r\n\r\n /**\r\n * Changes the calendar view mode. E.g. month <-> year\r\n * @param direction -/+ number to move currentViewMode\r\n * @private\r\n */\r\n _showMode(direction?: number): void {\r\n if (!this.widget) {\r\n return;\r\n }\r\n if (direction) {\r\n const max = Math.max(\r\n this._context._minViewModeNumber,\r\n Math.min(3, this._context._currentViewMode + direction)\r\n );\r\n if (this._context._currentViewMode == max) return;\r\n this._context._currentViewMode = max;\r\n }\r\n\r\n this.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div:not(.${Namespace.css.clockContainer})`\r\n )\r\n .forEach((e: HTMLElement) => (e.style.display = 'none'));\r\n\r\n const datePickerMode = DatePickerModes[this._context._currentViewMode];\r\n let picker: HTMLElement = this.widget.querySelector(\r\n `.${datePickerMode.className}`\r\n );\r\n\r\n switch (datePickerMode.className) {\r\n case Namespace.css.decadesContainer:\r\n this._decadeDisplay._update();\r\n break;\r\n case Namespace.css.yearsContainer:\r\n this._yearDisplay._update();\r\n break;\r\n case Namespace.css.monthsContainer:\r\n this._monthDisplay._update();\r\n break;\r\n case Namespace.css.daysContainer:\r\n this._dateDisplay._update();\r\n break;\r\n }\r\n\r\n picker.style.display = 'grid';\r\n this._updateCalendarHeader();\r\n }\r\n\r\n _updateCalendarHeader() {\r\n const showing = [\r\n ...this.widget.querySelector(\r\n `.${Namespace.css.dateContainer} div[style*=\"display: grid\"]`\r\n ).classList,\r\n ].find((x) => x.startsWith(Namespace.css.dateContainer));\r\n\r\n const [previous, switcher, next] = this._context._display.widget\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switch (showing) {\r\n case Namespace.css.decadesContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousCentury\r\n );\r\n switcher.setAttribute('title', '');\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextCentury\r\n );\r\n break;\r\n case Namespace.css.yearsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousDecade\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDecade\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextDecade\r\n );\r\n break;\r\n case Namespace.css.monthsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousYear\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectYear\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextYear\r\n );\r\n break;\r\n case Namespace.css.daysContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousMonth\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectMonth\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextMonth\r\n );\r\n switcher.innerText = this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n });\r\n break;\r\n }\r\n switcher.innerText = switcher.getAttribute(showing);\r\n }\r\n\r\n /**\r\n * Hides the picker if needed.\r\n * Remove document click event to hide when clicking outside the picker.\r\n * @fires Events#hide\r\n */\r\n hide(): void {\r\n if (!this.widget || !this._isVisible) return;\r\n\r\n this.widget.classList.remove(Namespace.css.show);\r\n\r\n if (this._isVisible) {\r\n this._context._triggerEvent({\r\n type: Namespace.events.hide,\r\n date: this._context._unset\r\n ? null\r\n : this._context.dates.lastPicked\r\n ? this._context.dates.lastPicked.clone\r\n : void 0,\r\n } as HideEvent);\r\n this._isVisible = false;\r\n }\r\n\r\n document.removeEventListener('click', this._documentClickEvent);\r\n }\r\n\r\n /**\r\n * Toggles the picker's open state. Fires a show/hide event depending.\r\n */\r\n toggle() {\r\n return this._isVisible ? this.hide() : this.show();\r\n }\r\n\r\n /**\r\n * Removes document and data-action click listener and reset the widget\r\n * @private\r\n */\r\n _dispose() {\r\n document.removeEventListener('click', this._documentClickEvent);\r\n if (!this.widget) return;\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.removeEventListener('click', this._actionsClickEvent)\r\n );\r\n this.widget.parentNode.removeChild(this.widget);\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Builds the widgets html template.\r\n * @private\r\n */\r\n private _buildWidget(): HTMLElement {\r\n const template = document.createElement('div');\r\n template.classList.add(Namespace.css.widget);\r\n\r\n const dateView = document.createElement('div');\r\n dateView.classList.add(Namespace.css.dateContainer);\r\n dateView.append(\r\n this._headTemplate,\r\n this._decadeDisplay._picker,\r\n this._yearDisplay._picker,\r\n this._monthDisplay._picker,\r\n this._dateDisplay._picker\r\n );\r\n\r\n const timeView = document.createElement('div');\r\n timeView.classList.add(Namespace.css.timeContainer);\r\n timeView.appendChild(this._timeDisplay._picker);\r\n timeView.appendChild(this._hourDisplay._picker);\r\n timeView.appendChild(this._minuteDisplay._picker);\r\n timeView.appendChild(this._secondDisplay._picker);\r\n\r\n const toolbar = document.createElement('div');\r\n toolbar.classList.add(Namespace.css.toolbar);\r\n toolbar.append(...this._toolbar);\r\n\r\n if (this._context._options.display.inline) {\r\n template.classList.add(Namespace.css.inline);\r\n }\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n template.classList.add('calendarWeeks');\r\n }\r\n\r\n if (\r\n this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n template.classList.add(Namespace.css.sideBySide);\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n const row = document.createElement('div');\r\n row.classList.add('td-row');\r\n dateView.classList.add('td-half');\r\n timeView.classList.add('td-half');\r\n\r\n row.appendChild(dateView);\r\n row.appendChild(timeView);\r\n template.appendChild(row);\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n this._widget = template;\r\n return;\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n if (this._hasDate) {\r\n if (this._hasTime) {\r\n dateView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode !== 'clock')\r\n dateView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(dateView);\r\n }\r\n\r\n if (this._hasTime) {\r\n if (this._hasDate) {\r\n timeView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode === 'clock')\r\n timeView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(timeView);\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n const arrow = document.createElement('div');\r\n arrow.classList.add('arrow');\r\n arrow.setAttribute('data-popper-arrow', '');\r\n template.appendChild(arrow);\r\n\r\n this._widget = template;\r\n }\r\n\r\n /**\r\n * Returns true if the hours, minutes, or seconds component is turned on\r\n */\r\n get _hasTime(): boolean {\r\n return (\r\n this._context._options.display.components.clock &&\r\n (this._context._options.display.components.hours ||\r\n this._context._options.display.components.minutes ||\r\n this._context._options.display.components.seconds)\r\n );\r\n }\r\n\r\n /**\r\n * Returns true if the year, month, or date component is turned on\r\n */\r\n get _hasDate(): boolean {\r\n return (\r\n this._context._options.display.components.calendar &&\r\n (this._context._options.display.components.year ||\r\n this._context._options.display.components.month ||\r\n this._context._options.display.components.date)\r\n );\r\n }\r\n\r\n /**\r\n * Get the toolbar html based on options like buttons.today\r\n * @private\r\n */\r\n get _toolbar(): HTMLElement[] {\r\n const toolbar = [];\r\n\r\n if (this._context._options.display.buttons.today) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.today);\r\n div.setAttribute('title', this._context._options.localization.today);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.today)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (\r\n !this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n let title, icon;\r\n if (this._context._options.display.viewMode === 'clock') {\r\n title = this._context._options.localization.selectDate;\r\n icon = this._context._options.display.icons.date;\r\n } else {\r\n title = this._context._options.localization.selectTime;\r\n icon = this._context._options.display.icons.time;\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.togglePicker);\r\n div.setAttribute('title', title);\r\n\r\n div.appendChild(this._iconTag(icon));\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.clear) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.clear);\r\n div.setAttribute('title', this._context._options.localization.clear);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.clear)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.close) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.close);\r\n div.setAttribute('title', this._context._options.localization.close);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.close)\r\n );\r\n toolbar.push(div);\r\n }\r\n\r\n return toolbar;\r\n }\r\n\r\n /***\r\n * Builds the base header template with next and previous icons\r\n * @private\r\n */\r\n get _headTemplate(): HTMLElement {\r\n const calendarHeader = document.createElement('div');\r\n calendarHeader.classList.add(Namespace.css.calendarHeader);\r\n\r\n const previous = document.createElement('div');\r\n previous.classList.add(Namespace.css.previous);\r\n previous.setAttribute('data-action', ActionTypes.previous);\r\n previous.appendChild(\r\n this._iconTag(this._context._options.display.icons.previous)\r\n );\r\n\r\n const switcher = document.createElement('div');\r\n switcher.classList.add(Namespace.css.switch);\r\n switcher.setAttribute('data-action', ActionTypes.pickerSwitch);\r\n\r\n const next = document.createElement('div');\r\n next.classList.add(Namespace.css.next);\r\n next.setAttribute('data-action', ActionTypes.next);\r\n next.appendChild(this._iconTag(this._context._options.display.icons.next));\r\n\r\n calendarHeader.append(previous, switcher, next);\r\n return calendarHeader;\r\n }\r\n\r\n /**\r\n * Builds an icon tag as either an ``\r\n * or with icons.type is `sprites` then an svg tag instead\r\n * @param iconClass\r\n * @private\r\n */\r\n _iconTag(iconClass: string): HTMLElement {\r\n if (this._context._options.display.icons.type === 'sprites') {\r\n const svg = document.createElement('svg');\r\n svg.innerHTML = ``;\r\n return svg;\r\n }\r\n const icon = document.createElement('i');\r\n DOMTokenList.prototype.add.apply(icon.classList, iconClass.split(' '));\r\n return icon;\r\n }\r\n\r\n /**\r\n * A document click event to hide the widget if click is outside\r\n * @private\r\n * @param e MouseEvent\r\n */\r\n private _documentClickEvent = (e: MouseEvent) => {\r\n if (this._context._options.display.keepOpen ||\r\n this._context._options.debug ||\r\n (window as any).debug) return;\r\n\r\n if (\r\n this._isVisible &&\r\n !e.composedPath().includes(this.widget) && // click inside the widget\r\n !e.composedPath()?.includes(this._context._element) // click on the element\r\n ) {\r\n this.hide();\r\n }\r\n };\r\n\r\n /**\r\n * Click event for any action like selecting a date\r\n * @param e MouseEvent\r\n * @private\r\n */\r\n private _actionsClickEvent = (e: MouseEvent) => {\r\n this._context._action.do(e);\r\n };\r\n\r\n /**\r\n * Causes the widget to get rebuilt on next show. If the picker is already open\r\n * then hide and reshow it.\r\n * @private\r\n */\r\n _rebuild() {\r\n const wasVisible = this._isVisible;\r\n if (wasVisible) this.hide();\r\n this._dispose();\r\n if (wasVisible) {\r\n this.show();\r\n }\r\n }\r\n}\r\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Dates from './dates';\n\n/**\n * Main class for date validation rules based on the options provided.\n */\nexport default class Validation {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Checks to see if the target date is valid based on the rules provided in the options.\n * Granularity can be provide to chek portions of the date instead of the whole.\n * @param targetDate\n * @param granularity\n */\n isValid(targetDate: DateTime, granularity?: Unit): boolean {\n if (\n this._context._options.restrictions.disabledDates.length > 0 &&\n this._isInDisabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledDates.length > 0 &&\n !this._isInEnabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.daysOfWeekDisabled?.length > 0 &&\n this._context._options.restrictions.daysOfWeekDisabled.indexOf(\n targetDate.weekDay\n ) !== -1\n ) {\n return false;\n }\n\n if (\n this._context._options.restrictions.minDate &&\n targetDate.isBefore(\n this._context._options.restrictions.minDate,\n granularity\n )\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.maxDate &&\n targetDate.isAfter(\n this._context._options.restrictions.maxDate,\n granularity\n )\n ) {\n return false;\n }\n\n if (\n granularity === Unit.hours ||\n granularity === Unit.minutes ||\n granularity === Unit.seconds\n ) {\n if (\n this._context._options.restrictions.disabledHours.length > 0 &&\n this._isInDisabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledHours.length > 0 &&\n !this._isInEnabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.disabledTimeIntervals.length > 0\n ) {\n for (\n let i = 0;\n i < this._context._options.restrictions.disabledTimeIntervals.length;\n i++\n ) {\n if (\n targetDate.isBetween(\n this._context._options.restrictions.disabledTimeIntervals[i].from,\n this._context._options.restrictions.disabledTimeIntervals[i].to\n )\n )\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Checks to see if the disabledDates option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInDisabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledDates ||\n this._context._options.restrictions.disabledDates.length === 0\n )\n return false;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.disabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the enabledDates option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInEnabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledDates ||\n this._context._options.restrictions.enabledDates.length === 0\n )\n return true;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.enabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the disabledHours option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInDisabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledHours ||\n this._context._options.restrictions.disabledHours.length === 0\n )\n return false;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.disabledHours.find(\n (x) => x === formattedDate\n );\n }\n\n /**\n * Checks to see if the enabledHours option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInEnabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledHours ||\n this._context._options.restrictions.enabledHours.length === 0\n )\n return true;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.enabledHours.find(\n (x) => x === formattedDate\n );\n }\n}\n","import Display from './display/index';\nimport Validation from './validation';\nimport Dates from './dates';\nimport Actions, { ActionTypes } from './actions';\nimport { DatePickerModes, DefaultOptions } from './conts';\nimport { DateTime, DateTimeFormatOptions, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options, { OptionConverter } from './options';\nimport {\n BaseEvent,\n ChangeEvent,\n ViewUpdateEvent,\n FailEvent,\n} from './event-types';\n\n/**\n * A robust and powerful date/time picker component.\n */\nclass TempusDominus {\n dates: Dates;\n\n _options: Options;\n _currentViewMode = 0;\n _subscribers: { [key: string]: ((event: any) => {})[] } = {};\n _element: HTMLElement;\n _input: HTMLInputElement;\n _unset: boolean;\n _minViewModeNumber = 0;\n _display: Display;\n _validation: Validation;\n _action: Actions;\n private _isDisabled = false;\n private _notifyChangeEventContext = 0;\n private _toggle: HTMLElement;\n private _currentPromptTimeTimeout: any;\n\n constructor(element: HTMLElement, options: Options = {} as Options) {\n if (!element) {\n Namespace.errorMessages.mustProvideElement;\n }\n this._element = element;\n this._options = this._initializeOptions(options, DefaultOptions, true);\n this._viewDate.setLocale(this._options.localization.locale);\n this._unset = true;\n\n this._display = new Display(this);\n this._validation = new Validation(this);\n this.dates = new Dates(this);\n this._action = new Actions(this);\n\n this._initializeInput();\n this._initializeToggle();\n\n if (this._options.display.inline) this._display.show();\n }\n\n _viewDate = new DateTime();\n\n get viewDate() {\n return this._viewDate;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Update the picker options. If `reset` is provide `options` will be merged with DefaultOptions instead.\n * @param options\n * @param reset\n * @public\n */\n updateOptions(options, reset = false): void {\n if (reset) this._options = this._initializeOptions(options, DefaultOptions);\n else this._options = this._initializeOptions(options, this._options);\n this._display._rebuild();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Toggles the picker open or closed. If the picker is disabled, nothing will happen.\n * @public\n */\n toggle(): void {\n if (this._isDisabled) return;\n this._display.toggle();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Shows the picker unless the picker is disabled.\n * @public\n */\n show(): void {\n if (this._isDisabled) return;\n this._display.show();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker unless the picker is disabled.\n * @public\n */\n hide(): void {\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Disables the picker and the target input field.\n * @public\n */\n disable(): void {\n this._isDisabled = true;\n // todo this might be undesired. If a dev disables the input field to\n // only allow using the picker, this will break that.\n this._input?.setAttribute('disabled', 'disabled');\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Enables the picker and the target input field.\n * @public\n */\n enable(): void {\n this._isDisabled = false;\n this._input?.removeAttribute('disabled');\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Clears all the selected dates\n * @public\n */\n clear(): void {\n this.dates.clear();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Allows for a direct subscription to picker events, without having to use addEventListener on the element.\n * @param eventTypes See Namespace.Events\n * @param callbacks Function to call when event is triggered\n * @public\n */\n subscribe(\n eventTypes: string | string[],\n callbacks: (event: any) => void | ((event: any) => void)[]\n ): { unsubscribe: void }[] {\n if (typeof eventTypes === 'string') {\n eventTypes = [eventTypes];\n }\n let callBackArray = [];\n if (!Array.isArray(callbacks)) {\n callBackArray = [callbacks];\n } else {\n callBackArray = callbacks;\n }\n\n if (eventTypes.length !== callBackArray.length) {\n Namespace.errorMessages.subscribeMismatch;\n }\n\n const returnArray = [];\n\n for (let i = 0; i < eventTypes.length; i++) {\n const eventType = eventTypes[i];\n if (!Array.isArray(this._subscribers[eventType])) {\n this._subscribers[eventType] = [];\n }\n\n this._subscribers[eventType].push(callBackArray[i]);\n\n returnArray.push({\n unsubscribe: this._unsubscribe.bind(\n this,\n eventType,\n this._subscribers[eventType].length - 1\n ),\n });\n\n if (eventTypes.length === 1) {\n return returnArray[0];\n }\n }\n\n return returnArray;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker and removes event listeners\n */\n dispose() {\n this._display.hide();\n // this will clear the document click event listener\n this._display._dispose();\n this._input?.removeEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input?.removeEventListener('click', this._toggleClickEvent);\n }\n this._toggle.removeEventListener('click', this._toggleClickEvent);\n this._subscribers = {};\n }\n\n /**\n * Triggers an event like ChangeEvent when the picker has updated the value\n * of a selected date.\n * @param event Accepts a BaseEvent object.\n * @private\n */\n _triggerEvent(event: BaseEvent) {\n // checking hasOwnProperty because the BasicEvent also falls through here otherwise\n if ((event as ChangeEvent) && event.hasOwnProperty('date')) {\n const { date, oldDate, isClear } = event as ChangeEvent;\n // this was to prevent a max call stack error\n // https://github.com/tempusdominus/core/commit/15a280507f5277b31b0b3319ab1edc7c19a000fb\n // todo see if this is still needed or if there's a cleaner way\n this._notifyChangeEventContext++;\n if (\n (date && oldDate && date.isSame(oldDate)) ||\n (!isClear && !date && !oldDate) ||\n this._notifyChangeEventContext > 1\n ) {\n this._notifyChangeEventContext = 0;\n return;\n }\n this._handleAfterChangeEvent(event as ChangeEvent);\n }\n\n this._element.dispatchEvent(\n new CustomEvent(event.type, { detail: event as any })\n );\n\n if ((window as any).jQuery) {\n const $ = (window as any).jQuery;\n $(this._element).trigger(event);\n }\n\n const publish = () => {\n // return if event is not subscribed\n if (!Array.isArray(this._subscribers[event.type])) {\n return;\n }\n\n // Trigger callback for each subscriber\n this._subscribers[event.type].forEach((callback) => {\n callback(event);\n });\n };\n\n publish();\n\n this._notifyChangeEventContext = 0;\n }\n\n /**\n * Fires a ViewUpdate event when, for example, the month view is changed.\n * @param {Unit} unit\n * @private\n */\n _viewUpdate(unit: Unit) {\n this._triggerEvent({\n type: Namespace.events.update,\n change: unit,\n viewDate: this._viewDate.clone,\n } as ViewUpdateEvent);\n }\n\n private _unsubscribe(eventName, index) {\n this._subscribers[eventName].splice(index, 1);\n }\n\n /**\n * Merges two Option objects together and validates options type\n * @param config new Options\n * @param mergeTo Options to merge into\n * @param includeDataset When true, the elements data-td attributes will be included in the\n * @private\n */\n private _initializeOptions(\n config: Options,\n mergeTo: Options,\n includeDataset = false\n ): Options {\n config = OptionConverter._mergeOptions(config, mergeTo);\n if (includeDataset)\n config = OptionConverter._dataToOptions(this._element, config);\n\n OptionConverter._validateConflcits(config);\n\n config.viewDate = config.viewDate.setLocale(config.localization.locale);\n\n if (!this._viewDate.isSame(config.viewDate)) {\n this._viewDate = config.viewDate;\n }\n\n /**\n * Sets the minimum view allowed by the picker. For example the case of only\n * allowing year and month to be selected but not date.\n */\n if (config.display.components.year) {\n this._minViewModeNumber = 2;\n }\n if (config.display.components.month) {\n this._minViewModeNumber = 1;\n }\n if (config.display.components.date) {\n this._minViewModeNumber = 0;\n }\n\n this._currentViewMode = Math.max(\n this._minViewModeNumber,\n this._currentViewMode\n );\n\n // Update view mode if needed\n if (\n DatePickerModes[this._currentViewMode].name !== config.display.viewMode\n ) {\n this._currentViewMode = Math.max(\n DatePickerModes.findIndex((x) => x.name === config.display.viewMode),\n this._minViewModeNumber\n );\n }\n\n // defaults the input format based on the components enabled\n if (config.hooks.inputFormat === undefined) {\n const components = config.display.components;\n config.hooks.inputFormat = (date: DateTime) => {\n return date.format({\n year: components.calendar && components.year ? 'numeric' : undefined,\n month:\n components.calendar && components.month ? '2-digit' : undefined,\n day: components.calendar && components.date ? '2-digit' : undefined,\n hour:\n components.clock && components.hours\n ? components.useTwentyfourHour\n ? '2-digit'\n : 'numeric'\n : undefined,\n minute:\n components.clock && components.minutes ? '2-digit' : undefined,\n second:\n components.clock && components.seconds ? '2-digit' : undefined,\n hour12: !components.useTwentyfourHour,\n });\n };\n }\n\n if (this._display?.isVisible) {\n this._display._update('all');\n }\n\n return config;\n }\n\n /**\n * Checks if an input field is being used, attempts to locate one and sets an\n * event listener if found.\n * @private\n */\n private _initializeInput() {\n if (this._element.tagName == 'INPUT') {\n this._input = this._element as HTMLInputElement;\n } else {\n let query = this._element.dataset.tdTargetInput;\n if (query == undefined || query == 'nearest') {\n this._input = this._element.querySelector('input');\n } else {\n this._input = this._element.querySelector(query);\n }\n }\n\n if (!this._input) return;\n\n this._input.addEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input.addEventListener('click', this._toggleClickEvent);\n }\n\n if (this._input.value) {\n this._inputChangeEvent();\n }\n }\n\n /**\n * Attempts to locate a toggle for the picker and sets an event listener\n * @private\n */\n private _initializeToggle() {\n if (this._options.display.inline) return;\n let query = this._element.dataset.tdTargetToggle;\n if (query == 'nearest') {\n query = '[data-td-toggle=\"datetimepicker\"]';\n }\n this._toggle =\n query == undefined ? this._element : this._element.querySelector(query);\n this._toggle.addEventListener('click', this._toggleClickEvent);\n }\n\n /**\n * If the option is enabled this will render the clock view after a date pick.\n * @param e change event\n * @private\n */\n private _handleAfterChangeEvent(e: ChangeEvent) {\n if (\n // options is disabled\n !this._options.promptTimeOnDateChange ||\n this._options.display.inline ||\n this._options.display.sideBySide ||\n // time is disabled\n !this._display._hasTime ||\n // clock component is already showing\n this._display.widget\n ?.getElementsByClassName(Namespace.css.show)[0]\n .classList.contains(Namespace.css.timeContainer)\n )\n return;\n\n // First time ever. If useCurrent option is set to true (default), do nothing\n // because the first date is selected automatically.\n // or date didn't change (time did) or date changed because time did.\n if (\n (!e.oldDate && this._options.useCurrent) ||\n (e.oldDate && e.date?.isSame(e.oldDate))\n ) {\n return;\n }\n\n clearTimeout(this._currentPromptTimeTimeout);\n this._currentPromptTimeTimeout = setTimeout(() => {\n if (this._display.widget) {\n this._action.do(\n {\n currentTarget: this._display.widget.querySelector(\n `.${Namespace.css.switch} div`\n ),\n },\n ActionTypes.togglePicker\n );\n }\n }, this._options.promptTimeOnDateChangeTransitionDelay);\n }\n\n /**\n * Event for when the input field changes. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _inputChangeEvent = () => {\n const setViewDate = () => {\n if (this.dates.lastPicked) this._viewDate = this.dates.lastPicked;\n };\n\n const value = this._input.value;\n if (this._options.multipleDates) {\n try {\n const valueSplit = value.split(this._options.multipleDatesSeparator);\n for (let i = 0; i < valueSplit.length; i++) {\n if (this._options.hooks.inputParse) {\n this.dates.set(\n this._options.hooks.inputParse(valueSplit[i]),\n i,\n 'input'\n );\n } else {\n this.dates.set(valueSplit[i], i, 'input');\n }\n }\n setViewDate();\n } catch {\n console.warn(\n 'TD: Something went wrong trying to set the multidate values from the input field.'\n );\n }\n } else {\n if (this._options.hooks.inputParse) {\n this.dates.set(this._options.hooks.inputParse(value), 0, 'input');\n } else {\n this.dates.set(value, 0, 'input');\n }\n setViewDate();\n }\n };\n\n /**\n * Event for when the toggle is clicked. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _toggleClickEvent = () => {\n this.toggle();\n };\n}\n\nexport {\n TempusDominus,\n Namespace,\n DefaultOptions,\n DateTime,\n Options,\n Unit,\n DateTimeFormatOptions,\n};\n"],"names":["Unit","SecondDisplay","createPopper"],"mappings":"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"} \ No newline at end of file diff --git a/docs/6/change-log.html b/docs/6/change-log.html index 4e6282805..9dd6646f0 100644 --- a/docs/6/change-log.html +++ b/docs/6/change-log.html @@ -229,7 +229,9 @@

Version 6-alpha_

New

  • Cleaned up css a bit. Got rid of the popper arrow and aligned the picker to the start of the element.
  • -
  • BREAKING display.inputFormat now takes a function, not an Intl format. By default a function will be executed that uses Intl to format the selected date(s) based on the selected components.
  • +
  • BREAKING display.inputFormat now takes a function, not an Intl format. It has also been moved to hooks.inputFormat By default a function will be executed that uses Intl to format the selected date(s) based on the selected components.
  • +
  • Added hooks.inputParse
  • +
  • Merged number localization Thanks @hkvstore #2408

Bug fixes

    diff --git a/docs/6/js/search.json b/docs/6/js/search.json index 5bd6ae872..5fb8e086e 100644 --- a/docs/6/js/search.json +++ b/docs/6/js/search.json @@ -2,7 +2,7 @@ { "file": "change-log.html", "title": "Change Log", - "body": "version alpha new cleaned up css a bit got rid of the popper arrow and aligned picker to start element breaking display.inputformat now takes function not an intl format by default will be executed that uses selected date(s based on components bug fixes merged fix for parsing issue from comparing constructor names thanks faatihi fixed doc input value real this time keepopen created method set(value any index number string date.set tries conver provided then set or if using multidate added esm output exposed unit datetimeformatoptions datetime class renamed toggleperiod togglemeridiem am/pm button dealing with values/changes when calling hide widget hasn't been built shown yet meridiem hkvstore pr hour selection component grid clicks year display after selecting decade field had setting defaultdate option date object general returns which is extended javascript no longer jquery momentjs bootstrap events have interfaces configuration tooltip localization tooltip.prevmonth localization.previousmonth tooltip.prevyear localization.previousyear tooltip.prevdecade localization.previousdecade tooltip.prevcentury localization.previouscentury moved dayviewheaderformat localization.dayviewheaderformat month e.g long locale removed usestrict timezone collapse extraformats widgetparent widgetpositioning changed viewmode times days clock calendar allowmultidate multidateseparator multipledates multipledatesseparator following restrictions mindate maxdate disableddates enableddates daysofweekdisabled disabledhours enabledhours readonly disabledtimeintervals sidebyside calendarweeks toolbarplacement buttons icons inline array check dateoptions data hid allowing looping through properties keybindings might come back later ignorereadonly focusonshow styles tip all values are in namespace.css consts.ts file bootstrap-datetimepicker-widget tempus-dominus-widget tempusdominus-bootstrap-datetimepicker-widget-with-calendar-weeks tempus-dominus-with-calendar-weeks v input-group data-toggle=\"datetimepicker cursor type pointer datepicker date-container datepicker-decades date-container-decades datepicker-years date-container-years datepicker-months date-container-months datepicker-days date-container-days prev previous data-day data-value consistent other views usetwentyfour timepicker time-container timepicker-hour time-container-hour timepicker-minute time-container-minute timepicker-second time-container-second saas called tempus-dominus.scss build has deleted as it's required isinvalid isvalid flipped boolean event emits undefined instead false being cleared plugin.name datetimepicker tempus-dominus root namespace td was rewrite taking some pending pull requests along it unfortunately i didn't do very good job at documenting those changes changlog v2-v can read here", + "body": "version alpha new cleaned up css a bit got rid of the popper arrow and aligned picker to start element breaking display.inputformat now takes function not an intl format it has also been moved hooks.inputformat by default will be executed that uses selected date(s based on components added hooks.inputparse merged number localization thanks hkvstore bug fixes fix for parsing issue from comparing constructor names faatihi fixed doc input value real this time keepopen created method set(value any index string date.set tries conver provided then set or if using multidate esm output exposed unit datetimeformatoptions datetime class renamed toggleperiod togglemeridiem am/pm button dealing with values/changes when calling hide widget hasn't built shown yet meridiem pr hour selection component grid clicks year display after selecting decade field had setting defaultdate option date object general returns which is extended javascript no longer jquery momentjs bootstrap events have interfaces configuration tooltip tooltip.prevmonth localization.previousmonth tooltip.prevyear localization.previousyear tooltip.prevdecade localization.previousdecade tooltip.prevcentury localization.previouscentury dayviewheaderformat localization.dayviewheaderformat month e.g long locale removed usestrict timezone collapse extraformats widgetparent widgetpositioning changed viewmode times days clock calendar allowmultidate multidateseparator multipledates multipledatesseparator following restrictions mindate maxdate disableddates enableddates daysofweekdisabled disabledhours enabledhours readonly disabledtimeintervals sidebyside calendarweeks toolbarplacement buttons icons inline array check dateoptions data hid allowing looping through properties keybindings might come back later ignorereadonly focusonshow styles tip all values are in namespace.css consts.ts file bootstrap-datetimepicker-widget tempus-dominus-widget tempusdominus-bootstrap-datetimepicker-widget-with-calendar-weeks tempus-dominus-with-calendar-weeks v input-group data-toggle=\"datetimepicker cursor type pointer datepicker date-container datepicker-decades date-container-decades datepicker-years date-container-years datepicker-months date-container-months datepicker-days date-container-days prev previous data-day data-value consistent other views usetwentyfour timepicker time-container timepicker-hour time-container-hour timepicker-minute time-container-minute timepicker-second time-container-second saas called tempus-dominus.scss build deleted as it's required isinvalid isvalid flipped boolean event emits undefined instead false being cleared plugin.name datetimepicker tempus-dominus root namespace td was rewrite taking some pending pull requests along unfortunately i didn't do very good job at documenting those changes changlog v2-v can read here", "postDate": "07/20/2021", "updateDate": "07/20/2021", "excerpt": "An overview of changes between different version of tempus dominus\n ", @@ -38,7 +38,7 @@ { "file": "test.html", "title": "Examples", - "body": "version removes the need for an input field bootstrap jquery and momemntjs if you still check out examples minimum setup all is element to atach picker html javascript events span id='icon-only class='log-event style='display inline-block i class='fas fa-calendar fa-9x'>russian localefromtorussian localefromto/gi parse initializations like function('\"use strict\";return newoptions prop obj obj[prop else ensurepath paths paths.split('.').reduce((value key prop(key)(value differentaccepts viewmode toolbarplacement'].includes(key createalert(`${key takes different verify option warning object.entries(config).foreach(([key differentaccepts(key case format createalert('format determine component display href=\"options.html#displaycomponents target=\"_blank\">component usageinput formattinglocalization ensurepath('localization newoptions.localization.dayviewheaderformat long extraformats collapse usestrict widgetpositioning widgetparent keybinds ignorereadonly focusonshow parseinputdate timezone ignored mindate maxdate enableddates disableddates enabledhours disabledhours daysofweekdisabled ensurepath('restrictions newoptions.restrictions[key disabledtimeintervals createalert('this expects array code x y}usage${e convertbutton.addeventlistener('click input.addeventlistener('change document.getelementbyid('tryit').addeventlistener('click run hasn't been some reason then there error datetimepicker1.updateoptions(convertedconfiguration textarea height vh hide right side toc give room media min-width px bd-main grid gap inherit grid-template-areas intro content grid-template-rows auto fr position relative top grid-template-columns max-height overflow-y scroll", + "body": "version defaults to fa icons but will switch when that's released removes moment jquery and bootstrap as depedencies it also uses popper.js v this tool attempts convert your configurations from previous of the picker paste current configuration into input box due how process works cannot usages or date objects set any property that unsupported values undefined so can still be converted for more information on what's changed check out change log if you find a bug doesn't work please open an issue output try settings here you're using old differnt icon family won't show results exception is no longer used accepted value either config use remove there's just way i could every possible something new well with functions object initalizers have replace those calls suggestions improve let me know const document.getelementbyid('from document.getelementbyid('to convertbutton document.getelementbyid('convertbutton alertbox document.getelementbyid('alert datetimepicker tempusdominus.tempusdominus(document.getelementbyid('datetimepicker convertedconfiguration createalert message style div document.createelement('div div.classname alert alert-${style alert-dismissible fade div.innerhtml message}/gi parse initializations like function('\"use strict\";return newoptions prop obj obj[prop else ensurepath paths paths.split('.').reduce((value key prop(key)(value differentaccepts viewmode toolbarplacement'].includes(key createalert(`${key takes different verify option warning object.entries(config).foreach(([key differentaccepts(key case format createalert('format determine component display href=\"options.html#displaycomponents target=\"_blank\">component usageinput formattinglocalization ensurepath('localization newoptions.localization.dayviewheaderformat long extraformats collapse usestrict widgetpositioning widgetparent keybinds ignorereadonly focusonshow timezone ignored mindate maxdate enableddates disableddates enabledhours disabledhours daysofweekdisabled ensurepath('restrictions newoptions.restrictions[key disabledtimeintervals createalert('this expects array code x y}usagehooks.inputparsedatetime${e convertbutton.addeventlistener('click input.addeventlistener('change document.getelementbyid('tryit').addeventlistener('click run hasn't been some reason then there error datetimepicker1.updateoptions(convertedconfiguration textarea height vh hide right side toc give room media min-width px bd-main grid gap inherit grid-template-areas intro content grid-template-rows auto fr position relative top grid-template-columns max-height overflow-y scroll", "postDate": "07/08/2021", "updateDate": "07/08/2021", "excerpt": "How to use Tempus Dominus datetime picker\n ", diff --git a/docs/6/js/tempus-dominus.esm.js b/docs/6/js/tempus-dominus.esm.js index afe4b6984..22ba67012 100644 --- a/docs/6/js/tempus-dominus.esm.js +++ b/docs/6/js/tempus-dominus.esm.js @@ -244,7 +244,7 @@ class DateTime extends Date { * Returns two digit hours */ get secondsFormatted() { - return this.seconds < 10 ? `0${this.seconds}` : `${this.seconds}`; + return this.format({ second: "2-digit" }); } /** * Shortcut to Date.getMinutes() @@ -262,7 +262,7 @@ class DateTime extends Date { * Returns two digit hours */ get minutesFormatted() { - return this.minutes < 10 ? `0${this.minutes}` : `${this.minutes}`; + return this.format({ minute: "2-digit" }); } /** * Shortcut to Date.getHours() @@ -280,18 +280,13 @@ class DateTime extends Date { * Returns two digit hours */ get hoursFormatted() { - return this.hours < 10 ? `0${this.hours}` : `${this.hours}`; + return this.format({ hour: "2-digit" }); } /** * Returns two digit hours but in twelve hour mode e.g. 13 -> 1 */ get twelveHoursFormatted() { - let hour = this.hours; - if (hour > 12) - hour = hour - 12; - if (hour === 0) - hour = 12; - return hour < 10 ? `0${hour}` : `${hour}`; + return this.format({ hour12: true, hour: "2-digit" }); } /** * Get the meridiem of the date. E.g. AM or PM. @@ -976,7 +971,7 @@ class Actions { case ActionTypes.selectMonth: case ActionTypes.selectYear: case ActionTypes.selectDecade: - const value = +currentTarget.getAttribute('data-value'); + const value = +currentTarget.dataset.value; switch (action) { case ActionTypes.selectMonth: this._context._viewDate.month = value; @@ -1009,7 +1004,7 @@ class Actions { if (currentTarget.classList.contains(Namespace.css.new)) { day.manipulate(1, Unit.month); } - day.date = +currentTarget.innerText; + day.date = +currentTarget.dataset.day; let index = 0; if (this._context._options.multipleDates) { index = this._context.dates.pickedIndex(day, Unit.date); @@ -1031,8 +1026,9 @@ class Actions { } break; case ActionTypes.selectHour: - let hour = +currentTarget.getAttribute('data-value'); - if (lastPicked.hours >= 12 && !this._context._options.display.components.useTwentyfourHour) + let hour = +currentTarget.dataset.value; + if (lastPicked.hours >= 12 && + !this._context._options.display.components.useTwentyfourHour) hour += 12; lastPicked.hours = hour; this._context.dates._setValue(lastPicked, this._context.dates.lastPickedIndex); @@ -1047,7 +1043,7 @@ class Actions { } break; case ActionTypes.selectMinute: - lastPicked.minutes = +currentTarget.innerText; + lastPicked.minutes = +currentTarget.dataset.value; this._context.dates._setValue(lastPicked, this._context.dates.lastPickedIndex); if (this._context._options.display.components.useTwentyfourHour && !this._context._options.display.components.seconds && @@ -1272,7 +1268,8 @@ class DateDisplay { containerClone.classList.remove(...containerClone.classList); containerClone.classList.add(...classes); containerClone.setAttribute('data-value', `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`); - containerClone.innerText = `${innerDate.date}`; + containerClone.setAttribute('data-day', `${innerDate.date}`); + containerClone.innerText = innerDate.format({ day: "numeric" }); innerDate.manipulate(1, Unit.date); }); } @@ -1946,7 +1943,7 @@ class YearDisplay { const [previous, switcher, next] = container.parentElement .getElementsByClassName(Namespace.css.calendarHeader)[0] .getElementsByTagName('div'); - switcher.setAttribute(Namespace.css.yearsContainer, `${this._startYear.year}-${this._endYear.year}`); + switcher.setAttribute(Namespace.css.yearsContainer, `${this._startYear.format({ year: 'numeric' })}-${this._endYear.format({ year: 'numeric' })}`); this._context._validation.isValid(this._startYear, Unit.year) ? previous.classList.remove(Namespace.css.disabled) : previous.classList.add(Namespace.css.disabled); @@ -1971,7 +1968,7 @@ class YearDisplay { containerClone.classList.remove(...containerClone.classList); containerClone.classList.add(...classes); containerClone.setAttribute('data-value', `${innerDate.year}`); - containerClone.innerText = `${innerDate.year}`; + containerClone.innerText = innerDate.format({ year: "numeric" }); innerDate.manipulate(1, Unit.year); }); } @@ -2012,7 +2009,7 @@ class DecadeDisplay { const [previous, switcher, next] = container.parentElement .getElementsByClassName(Namespace.css.calendarHeader)[0] .getElementsByTagName('div'); - switcher.setAttribute(Namespace.css.decadesContainer, `${this._startDecade.year}-${this._endDecade.year}`); + switcher.setAttribute(Namespace.css.decadesContainer, `${this._startDecade.format({ year: 'numeric' })}-${this._endDecade.format({ year: 'numeric' })}`); this._context._validation.isValid(this._startDecade, Unit.year) ? previous.classList.remove(Namespace.css.disabled) : previous.classList.add(Namespace.css.disabled); @@ -2033,7 +2030,7 @@ class DecadeDisplay { return; } else { - containerClone.innerText = `${this._startDecade.year - 10}`; + containerClone.innerText = this._startDecade.clone.manipulate(-10, Unit.year).format({ year: 'numeric' }); containerClone.setAttribute('data-value', `${this._startDecade.year}`); return; } @@ -2050,7 +2047,7 @@ class DecadeDisplay { containerClone.classList.remove(...containerClone.classList); containerClone.classList.add(...classes); containerClone.setAttribute('data-value', `${this._startDecade.year}`); - containerClone.innerText = `${this._startDecade.year}`; + containerClone.innerText = `${this._startDecade.format({ year: 'numeric' })}`; this._startDecade.manipulate(10, Unit.year); }); } diff --git a/docs/6/js/tempus-dominus.esm.js.map b/docs/6/js/tempus-dominus.esm.js.map index c5bb3e41b..27a9b970b 100644 --- a/docs/6/js/tempus-dominus.esm.js.map +++ b/docs/6/js/tempus-dominus.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"tempus-dominus.esm.js","sources":["../../src/js/datetime.ts","../../src/js/errors.ts","../../src/js/namespace.ts","../../src/js/conts.ts","../../src/js/display/collapse.ts","../../src/js/actions.ts","../../src/js/display/calendar/date-display.ts","../../src/js/display/calendar/month-display.ts","../../src/js/options.ts","../../src/js/dates.ts","../../src/js/display/calendar/year-display.ts","../../src/js/display/calendar/decade-display.ts","../../src/js/display/time/time-display.ts","../../src/js/display/time/hour-display.ts","../../src/js/display/time/minute-display.ts","../../src/js/display/time/second-display.ts","../../src/js/display/index.ts","../../src/js/validation.ts","../../src/js/tempus-dominus.ts"],"sourcesContent":["export enum Unit {\n seconds = 'seconds',\n minutes = 'minutes',\n hours = 'hours',\n date = 'date',\n month = 'month',\n year = 'year',\n}\n\nexport interface DateTimeFormatOptions extends Intl.DateTimeFormatOptions {\n timeStyle?: 'short' | 'medium' | 'long';\n dateStyle?: 'short' | 'medium' | 'long' | 'full';\n}\n\n/**\n * For the most part this object behaves exactly the same way\n * as the native Date object with a little extra spice.\n */\nexport class DateTime extends Date {\n /**\n * Used with Intl.DateTimeFormat\n */\n locale = 'default';\n\n /**\n * Chainable way to set the {@link locale}\n * @param value\n */\n setLocale(value: string): this {\n this.locale = value;\n return this;\n }\n\n /**\n * Converts a plain JS date object to a DateTime object.\n * Doing this allows access to format, etc.\n * @param date\n */\n static convert(date: Date): DateTime {\n if (!date) throw `A date is required`;\n return new DateTime(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n );\n }\n\n /**\n * Native date manipulations are not pure functions. This function creates a duplicate of the DateTime object.\n */\n get clone() {\n return new DateTime(\n this.year,\n this.month,\n this.date,\n this.hours,\n this.minutes,\n this.seconds,\n this.getMilliseconds()\n ).setLocale(this.locale);\n }\n\n /**\n * Sets the current date to the start of the {@link unit} provided\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).startOf('month')\n * would return April 1, 2021, 12:00:00.000 AM (midnight)\n * @param unit\n */\n startOf(unit: Unit | 'weekDay'): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n switch (unit) {\n case 'seconds':\n this.setMilliseconds(0);\n break;\n case 'minutes':\n this.setSeconds(0, 0);\n break;\n case 'hours':\n this.setMinutes(0, 0, 0);\n break;\n case 'date':\n this.setHours(0, 0, 0, 0);\n break;\n case 'weekDay':\n this.startOf(Unit.date);\n this.manipulate(0 - this.weekDay, Unit.date);\n break;\n case 'month':\n this.startOf(Unit.date);\n this.setDate(1);\n break;\n case 'year':\n this.startOf(Unit.date);\n this.setMonth(0, 1);\n break;\n }\n return this;\n }\n\n /**\n * Sets the current date to the end of the {@link unit} provided\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).endOf('month')\n * would return April 30, 2021, 11:59:59.999 PM\n * @param unit\n */\n endOf(unit: Unit | 'weekDay'): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n switch (unit) {\n case 'seconds':\n this.setMilliseconds(999);\n break;\n case 'minutes':\n this.setSeconds(59, 999);\n break;\n case 'hours':\n this.setMinutes(59, 59, 999);\n break;\n case 'date':\n this.setHours(23, 59, 59, 999);\n break;\n case 'weekDay':\n this.startOf(Unit.date);\n this.manipulate(6 - this.weekDay, Unit.date);\n break;\n case 'month':\n this.endOf(Unit.date);\n this.manipulate(1, Unit.month);\n this.setDate(0);\n break;\n case 'year':\n this.endOf(Unit.date);\n this.manipulate(1, Unit.year);\n this.setDate(0);\n break;\n }\n return this;\n }\n\n /**\n * Change a {@link unit} value. Value can be positive or negative\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).manipulate(1, 'month')\n * would return May 30, 2021, 11:45:32.984 AM\n * @param value A positive or negative number\n * @param unit\n */\n manipulate(value: number, unit: Unit): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n this[unit] += value;\n return this;\n }\n\n /**\n * Returns a string format.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat\n * for valid templates and locale objects\n * @param template An object. Uses browser defaults otherwise.\n * @param locale Can be a string or an array of strings. Uses browser defaults otherwise.\n */\n format(template: DateTimeFormatOptions, locale = this.locale): string {\n return new Intl.DateTimeFormat(locale, template).format(this);\n }\n\n /**\n * Return true if {@link compare} is before this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isBefore(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() < compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n return (\n this.clone.startOf(unit).valueOf() < compare.clone.startOf(unit).valueOf()\n );\n }\n\n /**\n * Return true if {@link compare} is after this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isAfter(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() > compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n return (\n this.clone.startOf(unit).valueOf() > compare.clone.startOf(unit).valueOf()\n );\n }\n\n /**\n * Return true if {@link compare} is same this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isSame(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() === compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n compare = DateTime.convert(compare);\n return (\n this.clone.startOf(unit).valueOf() === compare.startOf(unit).valueOf()\n );\n }\n\n /**\n * Check if this is between two other DateTimes, optionally looking at unit scale. The match is exclusive.\n * @param left\n * @param right\n * @param unit.\n * @param inclusivity. A [ indicates inclusion of a value. A ( indicates exclusion.\n * If the inclusivity parameter is used, both indicators must be passed.\n */\n isBetween(\n left: DateTime,\n right: DateTime,\n unit?: Unit,\n inclusivity: '()' | '[]' | '(]' | '[)' = '()'\n ): boolean {\n if (unit && this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n const leftInclusivity = inclusivity[0] === '(';\n const rightInclusivity = inclusivity[1] === ')';\n\n return (\n ((leftInclusivity\n ? this.isAfter(left, unit)\n : !this.isBefore(left, unit)) &&\n (rightInclusivity\n ? this.isBefore(right, unit)\n : !this.isAfter(right, unit))) ||\n ((leftInclusivity\n ? this.isBefore(left, unit)\n : !this.isAfter(left, unit)) &&\n (rightInclusivity\n ? this.isAfter(right, unit)\n : !this.isBefore(right, unit)))\n );\n }\n\n /**\n * Returns flattened object of the date. Does not include literals\n * @param locale\n * @param template\n */\n parts(\n locale = this.locale,\n template: any = { dateStyle: 'full', timeStyle: 'long' }\n ) {\n const parts = {};\n new Intl.DateTimeFormat(locale, template)\n .formatToParts(this)\n .filter((x) => x.type !== 'literal')\n .forEach((x) => (parts[x.type] = x.value));\n return parts;\n }\n\n /**\n * Shortcut to Date.getSeconds()\n */\n get seconds(): number {\n return this.getSeconds();\n }\n\n /**\n * Shortcut to Date.setSeconds()\n */\n set seconds(value: number) {\n this.setSeconds(value);\n }\n\n /**\n * Returns two digit hours\n */\n get secondsFormatted(): string {\n return this.seconds < 10 ? `0${this.seconds}` : `${this.seconds}`;\n }\n\n /**\n * Shortcut to Date.getMinutes()\n */\n get minutes(): number {\n return this.getMinutes();\n }\n\n /**\n * Shortcut to Date.setMinutes()\n */\n set minutes(value: number) {\n this.setMinutes(value);\n }\n\n /**\n * Returns two digit hours\n */\n get minutesFormatted(): string {\n return this.minutes < 10 ? `0${this.minutes}` : `${this.minutes}`;\n }\n\n /**\n * Shortcut to Date.getHours()\n */\n get hours(): number {\n return this.getHours();\n }\n\n /**\n * Shortcut to Date.setHours()\n */\n set hours(value: number) {\n this.setHours(value);\n }\n\n /**\n * Returns two digit hours\n */\n get hoursFormatted(): string {\n return this.hours < 10 ? `0${this.hours}` : `${this.hours}`;\n }\n\n /**\n * Returns two digit hours but in twelve hour mode e.g. 13 -> 1\n */\n get twelveHoursFormatted(): string {\n let hour = this.hours;\n if (hour > 12) hour = hour - 12;\n if (hour === 0) hour = 12;\n return hour < 10 ? `0${hour}` : `${hour}`;\n }\n\n /**\n * Get the meridiem of the date. E.g. AM or PM.\n * If the {@link locale} provides a \"dayPeriod\" then this will be returned,\n * otherwise it will return AM or PM.\n * @param locale\n */\n meridiem(locale: string = this.locale): string {\n return new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n hour12: true,\n } as any)\n .formatToParts(this)\n .find((p) => p.type === 'dayPeriod')?.value;\n }\n\n /**\n * Shortcut to Date.getDate()\n */\n get date(): number {\n return this.getDate();\n }\n\n /**\n * Shortcut to Date.setDate()\n */\n set date(value: number) {\n this.setDate(value);\n }\n\n /**\n * Return two digit date\n */\n get dateFormatted(): string {\n return this.date < 10 ? `0${this.date}` : `${this.date}`;\n }\n\n // https://github.com/you-dont-need/You-Dont-Need-Momentjs#week-of-year\n /**\n * Gets the week of the year\n */\n get week(): number {\n const startOfYear = new Date(this.year, 0, 1);\n startOfYear.setDate(\n startOfYear.getDate() + (1 - (startOfYear.getDay() % 7))\n );\n return Math.round((this.valueOf() - startOfYear.valueOf()) / 604800000) + 1;\n }\n\n /**\n * Shortcut to Date.getDay()\n */\n get weekDay(): number {\n return this.getDay();\n }\n\n /**\n * Shortcut to Date.getMonth()\n */\n get month(): number {\n return this.getMonth();\n }\n\n /**\n * Shortcut to Date.setMonth()\n */\n set month(value: number) {\n this.setMonth(value);\n }\n\n /**\n * Return two digit, human expected month. E.g. January = 1, December = 12\n */\n get monthFormatted(): string {\n return this.month + 1 < 10 ? `0${this.month}` : `${this.month}`;\n }\n\n /**\n * Shortcut to Date.getFullYear()\n */\n get year(): number {\n return this.getFullYear();\n }\n\n /**\n * Shortcut to Date.setFullYear()\n */\n set year(value: number) {\n this.setFullYear(value);\n }\n}\n","import Namespace from './namespace';\n\nexport class TdError extends Error {\n code: number;\n}\n\nexport class ErrorMessages {\n private base = 'TD:';\n\n //#region out to console\n\n /**\n * Throws an error indicating that a key in the options object is invalid.\n * @param optionName\n */\n unexpectedOption(optionName: string) {\n const error = new TdError(\n `${this.base} Unexpected option: ${optionName} does not match a known option.`\n );\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error indicating that one more keys in the options object is invalid.\n * @param optionName\n */\n unexpectedOptions(optionName: string[]) {\n const error = new TdError(`${this.base}: ${optionName.join(', ')}`);\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error when an option is provide an unsupported value.\n * For example a value of 'cheese' for toolbarPlacement which only supports\n * 'top', 'bottom', 'default'.\n * @param optionName\n * @param badValue\n * @param validOptions\n */\n unexpectedOptionValue(\n optionName: string,\n badValue: string,\n validOptions: string[]\n ) {\n const error = new TdError(\n `${\n this.base\n } Unexpected option value: ${optionName} does not accept a value of \"${badValue}\". Valid values are: ${validOptions.join(\n ', '\n )}`\n );\n error.code = 2;\n throw error;\n }\n\n /**\n * Throws an error when an option value is the wrong type.\n * For example a string value was provided to multipleDates which only\n * supports true or false.\n * @param optionName\n * @param badType\n * @param expectedType\n */\n typeMismatch(optionName: string, badType: string, expectedType: string) {\n const error = new TdError(\n `${this.base} Mismatch types: ${optionName} has a type of ${badType} instead of the required ${expectedType}`\n );\n error.code = 3;\n throw error;\n }\n\n /**\n * Throws an error when an option value is outside of the expected range.\n * For example restrictions.daysOfWeekDisabled excepts a value between 0 and 6.\n * @param optionName\n * @param lower\n * @param upper\n */\n numbersOutOfRage(optionName: string, lower: number, upper: number) {\n const error = new TdError(\n `${this.base} ${optionName} expected an array of number between ${lower} and ${upper}.`\n );\n error.code = 4;\n throw error;\n }\n\n /**\n * Throws an error when a value for a date options couldn't be parsed. Either\n * the option was an invalide string or an invalid Date object.\n * @param optionName\n * @param date\n * @param soft If true, logs a warning instead of an error.\n */\n failedToParseDate(optionName: string, date: any, soft = false) {\n const error = new TdError(\n `${this.base} Could not correctly parse \"${date}\" to a date for ${optionName}.`\n );\n error.code = 5;\n if (!soft) throw error;\n console.warn(error);\n }\n\n /**\n * Throws when an element to attach to was not provided in the constructor.\n */\n mustProvideElement() {\n const error = new TdError(`${this.base} No element was provided.`);\n error.code = 6;\n throw error;\n }\n\n /**\n * Throws if providing an array for the events to subscribe method doesn't have\n * the same number of callbacks. E.g., subscribe([1,2], [1])\n */\n subscribeMismatch() {\n const error = new TdError(\n `${this.base} The subscribed events does not match the number of callbacks`\n );\n error.code = 7;\n throw error;\n }\n\n /**\n * Throws if the configuration has conflicting rules e.g. minDate is after maxDate\n */\n conflictingConfiguration(message?: string) {\n const error = new TdError(\n `${this.base} A configuration value conflicts with another rule. ${message}`\n );\n error.code = 8;\n throw error;\n }\n\n /**\n * Logs a warning if a date option value is provided as a string, instead of\n * a date/datetime object.\n */\n dateString() {\n console.warn(\n `${this.base} Using a string for date options is not recommended unless you specify an ISO string.`\n );\n }\n\n //#endregion\n\n //#region used with notify.error\n\n /**\n * Used with an Error Event type if the user selects a date that\n * fails restriction validation.\n */\n failedToSetInvalidDate = 'Failed to set invalid date';\n\n /**\n * Used with an Error Event type when a user changes the value of the\n * input field directly, and does not provide a valid date.\n */\n failedToParseInput = 'Failed parse input field';\n\n //#endregion\n}\n","import { ErrorMessages } from './errors';\n// this is not the way I want this to stay but nested classes seemed to blown up once its compiled.\nconst NAME = 'tempus-dominus',\n version = '6.0.0-alpha1',\n dataKey = 'td';\n\n/**\n * Events\n */\nclass Events {\n key = `.${dataKey}`;\n\n /**\n * Change event. Fired when the user selects a date.\n * See also EventTypes.ChangeEvent\n */\n change = `change${this.key}`;\n\n /**\n * Emit when the view changes for example from month view to the year view.\n * See also EventTypes.ViewUpdateEvent\n */\n update = `update${this.key}`;\n\n /**\n * Emits when a selected date or value from the input field fails to meet the provided validation rules.\n * See also EventTypes.FailEvent\n */\n error = `error${this.key}`;\n\n /**\n * Show event\n * @event Events#show\n */\n show = `show${this.key}`;\n\n /**\n * Hide event\n * @event Events#hide\n */\n hide = `hide${this.key}`;\n\n // blur and focus are used in the jQuery provider but are otherwise unused.\n // keyup/down will be used later for keybinding options\n\n blur = `blur${this.key}`;\n focus = `focus${this.key}`;\n keyup = `keyup${this.key}`;\n keydown = `keydown${this.key}`;\n}\n\nclass Css {\n /**\n * The outer element for the widget.\n */\n widget = `${NAME}-widget`;\n\n /**\n * Hold the previous, next and switcher divs\n */\n calendarHeader = 'calendar-header';\n\n /**\n * The element for the action to change the calendar view. E.g. month -> year.\n */\n switch = 'picker-switch';\n\n /**\n * The elements for all of the toolbar options\n */\n toolbar = 'toolbar';\n\n /**\n * Disables the hover and rounding affect.\n */\n noHighlight = 'no-highlight';\n\n /**\n * Applied to the widget element when the side by side option is in use.\n */\n sideBySide = 'timepicker-sbs';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> July\n */\n previous = 'previous';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> September\n */\n next = 'next';\n\n /**\n * Applied to any action that would violate any restriction options. ALso applied\n * to an input field if the disabled function is called.\n */\n disabled = 'disabled';\n\n /**\n * Applied to any date that is less than requested view,\n * e.g. the last day of the previous month.\n */\n old = 'old';\n\n /**\n * Applied to any date that is greater than of requested view,\n * e.g. the last day of the previous month.\n */\n new = 'new';\n\n /**\n * Applied to any date that is currently selected.\n */\n active = 'active';\n\n //#region date element\n\n /**\n * The outer most element for the calendar view.\n */\n dateContainer = 'date-container';\n\n /**\n * The outer most element for the decades view.\n */\n decadesContainer = `${this.dateContainer}-decades`;\n\n /**\n * Applied to elements within the decades container, e.g. 2020, 2030\n */\n decade = 'decade';\n\n /**\n * The outer most element for the years view.\n */\n yearsContainer = `${this.dateContainer}-years`;\n\n /**\n * Applied to elements within the years container, e.g. 2021, 2021\n */\n year = 'year';\n\n /**\n * The outer most element for the month view.\n */\n monthsContainer = `${this.dateContainer}-months`;\n\n /**\n * Applied to elements within the month container, e.g. January, February\n */\n month = 'month';\n\n /**\n * The outer most element for the calendar view.\n */\n daysContainer = `${this.dateContainer}-days`;\n\n /**\n * Applied to elements within the day container, e.g. 1, 2..31\n */\n day = 'day';\n\n /**\n * If display.calendarWeeks is enabled, a column displaying the week of year\n * is shown. This class is applied to each cell in that column.\n */\n calendarWeeks = 'cw';\n\n /**\n * Applied to the first row of the calendar view, e.g. Sunday, Monday\n */\n dayOfTheWeek = 'dow';\n\n /**\n * Applied to the current date on the calendar view.\n */\n today = 'today';\n\n /**\n * Applied to the locale's weekend dates on the calendar view, e.g. Sunday, Saturday\n */\n weekend = 'weekend';\n\n //#endregion\n\n //#region time element\n\n /**\n * The outer most element for all time related elements.\n */\n timeContainer = 'time-container';\n\n /**\n * Applied the separator columns between time elements, e.g. hour *:* minute *:* second\n */\n separator = 'separator';\n\n /**\n * The outer most element for the clock view.\n */\n clockContainer = `${this.timeContainer}-clock`;\n\n /**\n * The outer most element for the hours selection view.\n */\n hourContainer = `${this.timeContainer}-hour`;\n\n /**\n * The outer most element for the minutes selection view.\n */\n minuteContainer = `${this.timeContainer}-minute`;\n\n /**\n * The outer most element for the seconds selection view.\n */\n secondContainer = `${this.timeContainer}-second`;\n\n /**\n * Applied to each element in the hours selection view.\n */\n hour = 'hour';\n\n /**\n * Applied to each element in the minutes selection view.\n */\n minute = 'minute';\n\n /**\n * Applied to each element in the seconds selection view.\n */\n second = 'second';\n\n /**\n * Applied AM/PM toggle button.\n */\n toggleMeridiem = 'toggleMeridiem';\n\n //#endregion\n\n //#region collapse\n\n /**\n * Applied the element of the current view mode, e.g. calendar or clock.\n */\n show = 'show';\n\n /**\n * Applied to the currently showing view mode during a transition\n * between calendar and clock views\n */\n collapsing = 'td-collapsing';\n\n /**\n * Applied to the currently hidden view mode.\n */\n collapse = 'td-collapse';\n\n //#endregion\n\n /**\n * Applied to the widget when the option display.inline is enabled.\n */\n inline = 'inline';\n}\n\nexport default class Namespace {\n static NAME = NAME;\n // noinspection JSUnusedGlobalSymbols\n static version = version;\n static dataKey = dataKey;\n\n static events = new Events();\n\n static css = new Css();\n\n static errorMessages = new ErrorMessages();\n}\n","import { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options from './options';\n\nconst DefaultOptions: Options = {\n restrictions: {\n minDate: undefined,\n maxDate: undefined,\n disabledDates: [],\n enabledDates: [],\n daysOfWeekDisabled: [],\n disabledTimeIntervals: [],\n disabledHours: [],\n enabledHours: [],\n },\n display: {\n icons: {\n type: 'icons',\n time: 'fas fa-clock',\n date: 'fas fa-calendar',\n up: 'fas fa-arrow-up',\n down: 'fas fa-arrow-down',\n previous: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n today: 'fas fa-calendar-check',\n clear: 'fas fa-trash',\n close: 'fas fa-times',\n },\n sideBySide: false,\n calendarWeeks: false,\n viewMode: 'calendar',\n toolbarPlacement: 'bottom',\n keepOpen: false,\n buttons: {\n today: false,\n clear: false,\n close: false,\n },\n components: {\n calendar: true,\n date: true,\n month: true,\n year: true,\n decades: true,\n clock: true,\n hours: true,\n minutes: true,\n seconds: false,\n useTwentyfourHour: false,\n },\n inline: false,\n },\n stepping: 1,\n useCurrent: true,\n defaultDate: undefined,\n localization: {\n today: 'Go to today',\n clear: 'Clear selection',\n close: 'Close the picker',\n selectMonth: 'Select Month',\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n selectYear: 'Select Year',\n previousYear: 'Previous Year',\n nextYear: 'Next Year',\n selectDecade: 'Select Decade',\n previousDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n previousCentury: 'Previous Century',\n nextCentury: 'Next Century',\n pickHour: 'Pick Hour',\n incrementHour: 'Increment Hour',\n decrementHour: 'Decrement Hour',\n pickMinute: 'Pick Minute',\n incrementMinute: 'Increment Minute',\n decrementMinute: 'Decrement Minute',\n pickSecond: 'Pick Second',\n incrementSecond: 'Increment Second',\n decrementSecond: 'Decrement Second',\n toggleMeridiem: 'Toggle Meridiem',\n selectTime: 'Select Time',\n selectDate: 'Select Date',\n dayViewHeaderFormat: 'long',\n locale: 'default',\n },\n keepInvalid: false,\n debug: false,\n allowInputToggle: false,\n viewDate: new DateTime(),\n multipleDates: false,\n multipleDatesSeparator: '; ',\n promptTimeOnDateChange: false,\n promptTimeOnDateChangeTransitionDelay: 200,\n hooks: {\n inputParse: undefined,\n inputFormat: undefined,\n },\n};\n\nconst DatePickerModes: {\n name: string;\n className: string;\n unit: Unit;\n step: number;\n}[] = [\n {\n name: 'calendar',\n className: Namespace.css.daysContainer,\n unit: Unit.month,\n step: 1,\n },\n {\n name: 'months',\n className: Namespace.css.monthsContainer,\n unit: Unit.year,\n step: 1,\n },\n {\n name: 'years',\n className: Namespace.css.yearsContainer,\n unit: Unit.year,\n step: 10,\n },\n {\n name: 'decades',\n className: Namespace.css.decadesContainer,\n unit: Unit.year,\n step: 100,\n },\n];\n\nexport { DefaultOptions, DatePickerModes, Namespace };\n","import Namespace from '../namespace';\n\n/**\n * Provides a collapse functionality to the view changes\n */\nexport default class Collapse {\n private timeOut;\n\n /**\n * Flips the show/hide state of `target`\n * @param target html element to affect.\n */\n toggle(target: HTMLElement, callback = undefined) {\n if (target.classList.contains(Namespace.css.show)) {\n this.hide(target, callback);\n } else {\n this.show(target, callback);\n }\n }\n\n /**\n * If `target` is not already showing, then show after the animation.\n * @param target\n */\n show(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse, Namespace.css.show);\n target.style.height = '';\n this.timeOut = null;\n if (callback) callback();\n };\n\n target.style.height = '0';\n target.classList.remove(Namespace.css.collapse);\n target.classList.add(Namespace.css.collapsing);\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n target.style.height = `${target.scrollHeight}px`;\n }\n\n /**\n * If `target` is not already hidden, then hide after the animation.\n * @param target HTML Element\n */\n hide(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n !target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse);\n this.timeOut = null;\n };\n\n target.style.height = `${target.getBoundingClientRect()['height']}px`;\n\n const reflow = (element) => element.offsetHeight;\n\n reflow(target);\n\n target.classList.remove(Namespace.css.collapse, Namespace.css.show);\n target.classList.add(Namespace.css.collapsing);\n target.style.height = '';\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n }\n\n /**\n * Gets the transition duration from the `element` by getting css properties\n * `transition-duration` and `transition-delay`\n * @param element HTML Element\n */\n private getTransitionDurationFromElement = (element: HTMLElement) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } =\n window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) +\n Number.parseFloat(transitionDelay)) *\n 1000\n );\n };\n}\n","import { DatePickerModes } from './conts.js';\r\nimport { DateTime, Unit } from './datetime';\r\nimport { TempusDominus } from './tempus-dominus';\r\nimport Collapse from './display/collapse';\r\nimport Namespace from './namespace';\r\n\r\n/**\r\n *\r\n */\r\nexport default class Actions {\r\n private _context: TempusDominus;\r\n private collapse: Collapse;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this.collapse = new Collapse();\r\n }\r\n\r\n /**\r\n * Performs the selected `action`. See ActionTypes\r\n * @param e This is normally a click event\r\n * @param action If not provided, then look for a [data-action]\r\n */\r\n do(e: any, action?: ActionTypes) {\r\n const currentTarget = e.currentTarget;\r\n if (currentTarget.classList.contains(Namespace.css.disabled)) return false;\r\n action = action || currentTarget.dataset.action;\r\n const lastPicked = (\r\n this._context.dates.lastPicked || this._context._viewDate\r\n ).clone;\r\n\r\n /**\r\n * Common function to manipulate {@link lastPicked} by `unit`\r\n * @param unit\r\n * @param value Value to change by\r\n */\r\n const manipulateAndSet = (unit: Unit, value = 1) => {\r\n const newDate = lastPicked.manipulate(value, unit);\r\n if (this._context._validation.isValid(newDate, unit)) {\r\n this._context.dates._setValue(\r\n newDate,\r\n this._context.dates.lastPickedIndex\r\n );\r\n }\r\n };\r\n\r\n switch (action) {\r\n case ActionTypes.next:\r\n case ActionTypes.previous:\r\n const { unit, step } = DatePickerModes[this._context._currentViewMode];\r\n if (action === ActionTypes.next)\r\n this._context._viewDate.manipulate(step, unit);\r\n else this._context._viewDate.manipulate(step * -1, unit);\r\n this._context._viewUpdate(unit);\r\n\r\n this._context._display._showMode();\r\n break;\r\n case ActionTypes.pickerSwitch:\r\n this._context._display._showMode(1);\r\n this._context._viewUpdate(\r\n DatePickerModes[this._context._currentViewMode].unit\r\n );\r\n this._context._display._updateCalendarHeader();\r\n break;\r\n case ActionTypes.selectMonth:\r\n case ActionTypes.selectYear:\r\n case ActionTypes.selectDecade:\r\n const value = +currentTarget.getAttribute('data-value');\r\n switch (action) {\r\n case ActionTypes.selectMonth:\r\n this._context._viewDate.month = value;\r\n this._context._viewUpdate(Unit.month);\r\n break;\r\n case ActionTypes.selectYear:\r\n this._context._viewDate.year = value;\r\n this._context._viewUpdate(Unit.year);\r\n break;\r\n case ActionTypes.selectDecade:\r\n this._context._viewDate.year = value;\r\n this._context._viewUpdate(Unit.year);\r\n break;\r\n }\r\n\r\n if (\r\n this._context._currentViewMode === this._context._minViewModeNumber\r\n ) {\r\n this._context.dates._setValue(\r\n this._context._viewDate,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (!this._context._options.display.inline) {\r\n this._context._display.hide();\r\n }\r\n } else {\r\n this._context._display._showMode(-1);\r\n }\r\n break;\r\n case ActionTypes.selectDay:\r\n const day = this._context._viewDate.clone;\r\n if (currentTarget.classList.contains(Namespace.css.old)) {\r\n day.manipulate(-1, Unit.month);\r\n }\r\n if (currentTarget.classList.contains(Namespace.css.new)) {\r\n day.manipulate(1, Unit.month);\r\n }\r\n\r\n day.date = +currentTarget.innerText;\r\n let index = 0;\r\n if (this._context._options.multipleDates) {\r\n index = this._context.dates.pickedIndex(day, Unit.date);\r\n if (index !== -1) {\r\n this._context.dates._setValue(null, index); //deselect multi-date\r\n } else {\r\n this._context.dates._setValue(\r\n day,\r\n this._context.dates.lastPickedIndex + 1\r\n );\r\n }\r\n } else {\r\n this._context.dates._setValue(\r\n day,\r\n this._context.dates.lastPickedIndex\r\n );\r\n }\r\n\r\n if (\r\n !this._context._display._hasTime &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline &&\r\n !this._context._options.multipleDates\r\n ) {\r\n this._context._display.hide();\r\n }\r\n break;\r\n case ActionTypes.selectHour:\r\n let hour = +currentTarget.getAttribute('data-value');\r\n if (lastPicked.hours >= 12 && !this._context._options.display.components.useTwentyfourHour) hour += 12;\r\n lastPicked.hours = hour;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.components.minutes &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.selectMinute:\r\n lastPicked.minutes = +currentTarget.innerText;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.components.seconds &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.selectSecond:\r\n lastPicked.seconds = +currentTarget.innerText;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.incrementHours:\r\n manipulateAndSet(Unit.hours);\r\n break;\r\n case ActionTypes.incrementMinutes:\r\n manipulateAndSet(Unit.minutes, this._context._options.stepping);\r\n break;\r\n case ActionTypes.incrementSeconds:\r\n manipulateAndSet(Unit.seconds);\r\n break;\r\n case ActionTypes.decrementHours:\r\n manipulateAndSet(Unit.hours, -1);\r\n break;\r\n case ActionTypes.decrementMinutes:\r\n manipulateAndSet(Unit.minutes, this._context._options.stepping * -1);\r\n break;\r\n case ActionTypes.decrementSeconds:\r\n manipulateAndSet(Unit.seconds, -1);\r\n break;\r\n case ActionTypes.toggleMeridiem:\r\n manipulateAndSet(\r\n Unit.hours,\r\n this._context.dates.lastPicked.hours >= 12 ? -12 : 12\r\n );\r\n break;\r\n case ActionTypes.togglePicker:\r\n this._context._display.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer}, .${Namespace.css.timeContainer}`\r\n )\r\n .forEach((htmlElement: HTMLElement) =>\r\n this.collapse.toggle(htmlElement)\r\n );\r\n if (\r\n currentTarget.getAttribute('title') ===\r\n this._context._options.localization.selectDate\r\n ) {\r\n currentTarget.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectTime\r\n );\r\n currentTarget.innerHTML = this._context._display._iconTag(\r\n this._context._options.display.icons.time\r\n ).outerHTML;\r\n\r\n this._context._display._updateCalendarHeader();\r\n } else {\r\n currentTarget.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDate\r\n );\r\n currentTarget.innerHTML = this._context._display._iconTag(\r\n this._context._options.display.icons.date\r\n ).outerHTML;\r\n this.do(e, ActionTypes.showClock);\r\n this._context._display._update('clock');\r\n }\r\n break;\r\n case ActionTypes.showClock:\r\n case ActionTypes.showHours:\r\n case ActionTypes.showMinutes:\r\n case ActionTypes.showSeconds:\r\n this._context._display.widget\r\n .querySelectorAll(`.${Namespace.css.timeContainer} > div`)\r\n .forEach(\r\n (htmlElement: HTMLElement) => (htmlElement.style.display = 'none')\r\n );\r\n\r\n let classToUse = '';\r\n switch (action) {\r\n case ActionTypes.showClock:\r\n classToUse = Namespace.css.clockContainer;\r\n this._context._display._update('clock');\r\n break;\r\n case ActionTypes.showHours:\r\n classToUse = Namespace.css.hourContainer;\r\n this._context._display._update(Unit.hours);\r\n break;\r\n case ActionTypes.showMinutes:\r\n classToUse = Namespace.css.minuteContainer;\r\n this._context._display._update(Unit.minutes);\r\n break;\r\n case ActionTypes.showSeconds:\r\n classToUse = Namespace.css.secondContainer;\r\n this._context._display._update(Unit.seconds);\r\n break;\r\n }\r\n\r\n ((\r\n this._context._display.widget.getElementsByClassName(classToUse)[0]\r\n )).style.display = 'grid';\r\n break;\r\n case ActionTypes.clear:\r\n this._context.dates._setValue(null);\r\n this._context._display._updateCalendarHeader();\r\n break;\r\n case ActionTypes.close:\r\n this._context._display.hide();\r\n break;\r\n case ActionTypes.today:\r\n const today = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n this._context._viewDate = today;\r\n if (this._context._validation.isValid(today, Unit.date))\r\n this._context.dates._setValue(\r\n today,\r\n this._context.dates.lastPickedIndex\r\n );\r\n break;\r\n }\r\n }\r\n}\r\n\r\nexport enum ActionTypes {\r\n next = 'next',\r\n previous = 'previous',\r\n pickerSwitch = 'pickerSwitch',\r\n selectMonth = 'selectMonth',\r\n selectYear = 'selectYear',\r\n selectDecade = 'selectDecade',\r\n selectDay = 'selectDay',\r\n selectHour = 'selectHour',\r\n selectMinute = 'selectMinute',\r\n selectSecond = 'selectSecond',\r\n incrementHours = 'incrementHours',\r\n incrementMinutes = 'incrementMinutes',\r\n incrementSeconds = 'incrementSeconds',\r\n decrementHours = 'decrementHours',\r\n decrementMinutes = 'decrementMinutes',\r\n decrementSeconds = 'decrementSeconds',\r\n toggleMeridiem = 'toggleMeridiem',\r\n togglePicker = 'togglePicker',\r\n showClock = 'showClock',\r\n showHours = 'showHours',\r\n showMinutes = 'showMinutes',\r\n showSeconds = 'showSeconds',\r\n clear = 'clear',\r\n close = 'close',\r\n today = 'today',\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { DateTime, Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `date`\n */\nexport default class DateDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.daysContainer);\n\n container.append(...this._daysOfTheWeek());\n\n if (this._context._options.display.calendarWeeks) {\n const div = document.createElement('div');\n div.classList.add(Namespace.css.calendarWeeks, Namespace.css.noHighlight);\n container.appendChild(div);\n }\n\n for (let i = 0; i < 42; i++) {\n if (i !== 0 && i % 7 === 0) {\n if (this._context._options.display.calendarWeeks) {\n const div = document.createElement('div');\n div.classList.add(\n Namespace.css.calendarWeeks,\n Namespace.css.noHighlight\n );\n container.appendChild(div);\n }\n }\n\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectDay);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.daysContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.daysContainer,\n this._context._viewDate.format({\n month: this._context._options.localization.dayViewHeaderFormat,\n })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.month),\n Unit.month\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.month),\n Unit.month\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone\n .startOf(Unit.month)\n .startOf('weekDay')\n .manipulate(12, Unit.hours);\n\n container\n .querySelectorAll(\n `[data-action=\"${ActionTypes.selectDay}\"], .${Namespace.css.calendarWeeks}`\n )\n .forEach((containerClone: HTMLElement, index) => {\n if (\n this._context._options.display.calendarWeeks &&\n containerClone.classList.contains(Namespace.css.calendarWeeks)\n ) {\n if (containerClone.innerText === '#') return;\n containerClone.innerText = `${innerDate.week}`;\n return;\n }\n\n let classes = [];\n classes.push(Namespace.css.day);\n\n if (innerDate.isBefore(this._context._viewDate, Unit.month)) {\n classes.push(Namespace.css.old);\n }\n if (innerDate.isAfter(this._context._viewDate, Unit.month)) {\n classes.push(Namespace.css.new);\n }\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.date)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.date)) {\n classes.push(Namespace.css.disabled);\n }\n if (innerDate.isSame(new DateTime(), Unit.date)) {\n classes.push(Namespace.css.today);\n }\n if (innerDate.weekDay === 0 || innerDate.weekDay === 6) {\n classes.push(Namespace.css.weekend);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute(\n 'data-value',\n `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`\n );\n containerClone.innerText = `${innerDate.date}`;\n innerDate.manipulate(1, Unit.date);\n });\n }\n\n /***\n * Generates an html row that contains the days of the week.\n * @private\n */\n private _daysOfTheWeek(): HTMLElement[] {\n let innerDate = this._context._viewDate.clone\n .startOf('weekDay')\n .startOf(Unit.date);\n const row = [];\n document.createElement('div');\n\n if (this._context._options.display.calendarWeeks) {\n const htmlDivElement = document.createElement('div');\n htmlDivElement.classList.add(\n Namespace.css.calendarWeeks,\n Namespace.css.noHighlight\n );\n htmlDivElement.innerText = '#';\n row.push(htmlDivElement);\n }\n\n for (let i = 0; i < 7; i++) {\n const htmlDivElement = document.createElement('div');\n htmlDivElement.classList.add(\n Namespace.css.dayOfTheWeek,\n Namespace.css.noHighlight\n );\n htmlDivElement.innerText = innerDate.format({ weekday: 'short' });\n innerDate.manipulate(1, Unit.date);\n row.push(htmlDivElement);\n }\n\n return row;\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `month`\n */\nexport default class MonthDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.monthsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMonth);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.monthsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.monthsContainer,\n this._context._viewDate.format({ year: 'numeric' })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.year),\n Unit.year\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.year),\n Unit.year\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone.startOf(Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMonth}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.month);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.month)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.month)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${index}`);\n containerClone.innerText = `${innerDate.format({ month: 'short' })}`;\n innerDate.manipulate(1, Unit.month);\n });\n }\n}\n","import { DateTime, DateTimeFormatOptions } from './datetime';\nimport Namespace from './namespace';\nimport { DefaultOptions } from './conts';\n\nexport default interface Options {\n restrictions: {\n minDate: DateTime;\n maxDate: DateTime;\n enabledDates: DateTime[];\n disabledDates: DateTime[];\n enabledHours: number[];\n disabledHours: number[];\n disabledTimeIntervals: { from: DateTime; to: DateTime }[];\n daysOfWeekDisabled: number[];\n };\n display: {\n toolbarPlacement: 'top' | 'bottom';\n components: {\n calendar: boolean;\n date: boolean;\n month: boolean;\n year: boolean;\n decades: boolean;\n clock: boolean;\n hours: boolean;\n minutes: boolean;\n seconds: boolean;\n useTwentyfourHour: boolean;\n };\n buttons: { today: boolean; close: boolean; clear: boolean };\n calendarWeeks: boolean;\n icons: {\n date: string;\n next: string;\n previous: string;\n today: string;\n clear: string;\n time: string;\n up: string;\n type: 'icons' | 'sprites';\n down: string;\n close: string;\n };\n viewMode: 'clock' | 'calendar' | 'months' | 'years' | 'decades';\n sideBySide: boolean;\n inline: boolean;\n keepOpen: boolean;\n };\n stepping: number;\n useCurrent: boolean;\n defaultDate: DateTime;\n localization: {\n nextMonth: string;\n pickHour: string;\n incrementSecond: string;\n nextDecade: string;\n selectDecade: string;\n dayViewHeaderFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n decrementHour: string;\n selectDate: string;\n incrementHour: string;\n previousCentury: string;\n decrementSecond: string;\n today: string;\n previousMonth: string;\n selectYear: string;\n pickSecond: string;\n nextCentury: string;\n close: string;\n incrementMinute: string;\n selectTime: string;\n clear: string;\n toggleMeridiem: string;\n selectMonth: string;\n decrementMinute: string;\n pickMinute: string;\n nextYear: string;\n previousYear: string;\n previousDecade: string;\n locale: string;\n };\n keepInvalid: boolean;\n debug: boolean;\n allowInputToggle: boolean;\n viewDate: DateTime;\n multipleDates: boolean;\n multipleDatesSeparator: string;\n promptTimeOnDateChange: boolean;\n promptTimeOnDateChangeTransitionDelay: number;\n hooks: {\n inputParse: (value: any) => DateTime;\n inputFormat: (date: DateTime) => string;\n };\n}\n\nexport class OptionConverter {\n static _mergeOptions(providedOptions: Options, mergeTo: Options): Options {\n const newOptions = {} as Options;\n let path = '';\n const ignoreProperties = ['inputParse', 'inputFormat'];\n\n const processKey = (key, value, providedType, defaultType) => {\n switch (key) {\n case 'defaultDate': {\n const dateTime = this._dateConversion(value, 'defaultDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'defaultDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'viewDate': {\n const dateTime = this._dateConversion(value, 'viewDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'viewDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'minDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.minDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.minDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'maxDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.maxDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.maxDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'disabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.disabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.disabledHours',\n 0,\n 23\n );\n return value;\n case 'enabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.enabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.enabledHours',\n 0,\n 23\n );\n return value;\n case 'daysOfWeekDisabled':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.daysOfWeekDisabled',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 6).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.daysOfWeekDisabled',\n 0,\n 6\n );\n return value;\n case 'enabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.enabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.disabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledTimeIntervals':\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n key,\n providedType,\n 'array of { from: DateTime|Date, to: DateTime|Date }'\n );\n }\n const valueObject = value as { from: any; to: any }[];\n for (let i = 0; i < valueObject.length; i++) {\n Object.keys(valueObject[i]).forEach((vk) => {\n const subOptionName = `${key}[${i}].${vk}`;\n let d = valueObject[i][vk];\n const dateTime = this._dateConversion(d, subOptionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n subOptionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n valueObject[i][vk] = dateTime;\n });\n }\n return valueObject;\n case 'toolbarPlacement':\n case 'type':\n case 'viewMode':\n case 'dayViewHeaderFormat':\n const optionValues = {\n toolbarPlacement: ['top', 'bottom', 'default'],\n type: ['icons', 'sprites'],\n viewMode: ['clock', 'calendar', 'months', 'years', 'decades'],\n dayViewHeaderFormat: [\n 'numeric',\n '2-digit',\n 'long',\n 'short',\n 'narrow',\n ],\n };\n const keyOptions = optionValues[key];\n if (!keyOptions.includes(value))\n Namespace.errorMessages.unexpectedOptionValue(\n path.substring(1),\n value,\n keyOptions\n );\n\n return value;\n case 'inputParse':\n case 'inputFormat':\n return value;\n default:\n switch (defaultType) {\n case 'boolean':\n return value === 'true' || value === true;\n case 'number':\n return +value;\n case 'string':\n return value.toString();\n case 'object':\n return {};\n case 'function':\n return value;\n default:\n Namespace.errorMessages.typeMismatch(\n path.substring(1),\n providedType,\n defaultType\n );\n }\n }\n };\n\n /**\n * The spread operator caused sub keys to be missing after merging.\n * This is to fix that issue by using spread on the child objects first.\n * Also handles complex options like disabledDates\n * @param provided An option from new providedOptions\n * @param mergeOption Default option to compare types against\n * @param copyTo Destination object. This was add to prevent reference copies\n */\n const spread = (provided, mergeOption, copyTo) => {\n const unsupportedOptions = Object.keys(provided).filter(\n (x) => !Object.keys(mergeOption).includes(x)\n );\n if (unsupportedOptions.length > 0) {\n const flattenedOptions = OptionConverter._flattenDefaultOptions;\n\n const errors = unsupportedOptions.map((x) => {\n let error = `\"${path.substring(1)}.${x}\" in not a known option.`;\n let didYouMean = flattenedOptions.find((y) => y.includes(x));\n if (didYouMean) error += `Did you mean \"${didYouMean}\"?`;\n return error;\n });\n Namespace.errorMessages.unexpectedOptions(errors);\n }\n Object.keys(mergeOption).forEach((key) => {\n const defaultOptionValue = mergeOption[key];\n let providedType = typeof provided[key];\n let defaultType = typeof defaultOptionValue;\n let value = provided[key];\n if (!provided.hasOwnProperty(key)) {\n if (\n defaultType === 'undefined' ||\n (value?.length === 0 && Array.isArray(defaultOptionValue))\n ) {\n copyTo[key] = defaultOptionValue;\n return;\n }\n provided[key] = defaultOptionValue;\n value = provided[key];\n }\n path += `.${key}`;\n copyTo[key] = processKey(key, value, providedType, defaultType);\n\n if (typeof defaultOptionValue !== 'object' || ignoreProperties.includes(key)) {\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n return;\n }\n if (!Array.isArray(provided[key])) {\n spread(provided[key], defaultOptionValue, copyTo[key]);\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n }\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n });\n };\n spread(providedOptions, mergeTo, newOptions);\n\n return newOptions;\n }\n\n static _dataToOptions(element, options: Options): Options {\n const eData = element.dataset;\n if (\n !eData ||\n Object.keys(eData).length === 0 ||\n eData.constructor !== DOMStringMap\n )\n return options;\n let dataOptions = {} as Options;\n\n // because dataset returns camelCase including the 'td' key the option\n // key won't align\n const objectToNormalized = (object) => {\n const lowered = {};\n Object.keys(object).forEach((x) => {\n lowered[x.toLowerCase()] = x;\n });\n\n return lowered;\n };\n\n const rabbitHole = (\n split: string[],\n index: number,\n optionSubgroup: {},\n value: any\n ) => {\n // first round = display { ... }\n const normalizedOptions = objectToNormalized(optionSubgroup);\n\n const keyOption = normalizedOptions[split[index].toLowerCase()];\n const internalObject = {};\n\n if (keyOption === undefined) return internalObject;\n\n // if this is another object, continue down the rabbit hole\n if (optionSubgroup[keyOption].constructor === Object) {\n index++;\n internalObject[keyOption] = rabbitHole(\n split,\n index,\n optionSubgroup[keyOption],\n value\n );\n } else {\n internalObject[keyOption] = value;\n }\n return internalObject;\n };\n const optionsLower = objectToNormalized(options);\n\n Object.keys(eData)\n .filter((x) => x.startsWith(Namespace.dataKey))\n .map((x) => x.substring(2))\n .forEach((key) => {\n let keyOption = optionsLower[key.toLowerCase()];\n\n // dataset merges dashes to camelCase... yay\n // i.e. key = display_components_seconds\n if (key.includes('_')) {\n // [display, components, seconds]\n const split = key.split('_');\n // display\n keyOption = optionsLower[split[0].toLowerCase()];\n if (\n keyOption !== undefined &&\n options[keyOption].constructor === Object\n ) {\n dataOptions[keyOption] = rabbitHole(\n split,\n 1,\n options[keyOption],\n eData[`td${key}`]\n );\n }\n }\n // or key = multipleDate\n else if (keyOption !== undefined) {\n dataOptions[keyOption] = eData[`td${key}`];\n }\n });\n\n return this._mergeOptions(dataOptions, options);\n }\n\n /**\n * Attempts to prove `d` is a DateTime or Date or can be converted into one.\n * @param d If a string will attempt creating a date from it.\n * @private\n */\n static _dateTypeCheck(d: any): DateTime | null {\n if (d.constructor.name === DateTime.name) return d;\n if (d.constructor.name === Date.name) {\n return DateTime.convert(d);\n }\n if (typeof d === typeof '') {\n const dateTime = new DateTime(d);\n if (JSON.stringify(dateTime) === 'null') {\n return null;\n }\n return dateTime;\n }\n return null;\n }\n\n /**\n * Type checks that `value` is an array of Date or DateTime\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckDateArray(optionName: string, value, providedType: string) {\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of DateTime or Date'\n );\n }\n for (let i = 0; i < value.length; i++) {\n let d = value[i];\n const dateTime = this._dateConversion(d, optionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n value[i] = dateTime;\n }\n }\n\n /**\n * Type checks that `value` is an array of numbers\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckNumberArray(\n optionName: string,\n value,\n providedType: string\n ) {\n if (!Array.isArray(value) || value.find((x) => typeof x !== typeof 0)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of numbers'\n );\n }\n return;\n }\n\n /**\n * Attempts to convert `d` to a DateTime object\n * @param d value to convert\n * @param optionName Provides text to error messages e.g. disabledDates\n */\n static _dateConversion(d: any, optionName: string) {\n if (typeof d === typeof '' && optionName !== 'input') {\n Namespace.errorMessages.dateString();\n }\n\n const converted = this._dateTypeCheck(d);\n\n if (!converted) {\n Namespace.errorMessages.failedToParseDate(\n optionName,\n d,\n optionName === 'input'\n );\n }\n return converted;\n }\n\n private static _flatback: string[];\n\n private static get _flattenDefaultOptions(): string[] {\n if (this._flatback) return this._flatback;\n const deepKeys = (t, pre = []) =>\n Array.isArray(t)\n ? []\n : Object(t) === t\n ? Object.entries(t).flatMap(([k, v]) => deepKeys(v, [...pre, k]))\n : pre.join('.');\n\n this._flatback = deepKeys(DefaultOptions);\n\n return this._flatback;\n }\n\n /**\n * Some options conflict like min/max date. Verify that these kinds of options\n * are set correctly.\n * @param config\n */\n static _validateConflcits(config: Options) {\n if (config.restrictions.minDate && config.restrictions.maxDate) {\n if (config.restrictions.minDate.isAfter(config.restrictions.maxDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'minDate is after maxDate'\n );\n }\n\n if (config.restrictions.maxDate.isBefore(config.restrictions.minDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'maxDate is before minDate'\n );\n }\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport { ChangeEvent, FailEvent } from './event-types';\nimport { OptionConverter } from './options';\n\nexport default class Dates {\n private _dates: DateTime[] = [];\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Returns the array of selected dates\n */\n get picked(): DateTime[] {\n return this._dates;\n }\n\n /**\n * Returns the last picked value.\n */\n get lastPicked(): DateTime {\n return this._dates[this.lastPickedIndex];\n }\n\n /**\n * Returns the length of picked dates -1 or 0 if none are selected.\n */\n get lastPickedIndex(): number {\n if (this._dates.length === 0) return 0;\n return this._dates.length - 1;\n }\n\n /**\n * Adds a new DateTime to selected dates array\n * @param date\n */\n add(date: DateTime): void {\n this._dates.push(date);\n }\n\n /**\n * Tries to convert the provided value to a DateTime object.\n * If value is null|undefined then clear the value of the provided index (or 0).\n * @param value Value to convert or null|undefined\n * @param index When using multidates this is the index in the array\n * @param from Used in the warning message, useful for debugging.\n */\n set(value: any, index?: number, from: string = 'date.set') {\n if (!value) this._setValue(value, index);\n const converted = OptionConverter._dateConversion(value, from);\n if (converted) this._setValue(converted, index);\n }\n\n /**\n * Returns true if the `targetDate` is part of the selected dates array.\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n isPicked(targetDate: DateTime, unit?: Unit): boolean {\n if (!unit) return this._dates.find((x) => x === targetDate) !== undefined;\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return (\n this._dates\n .map((x) => x.format(format))\n .find((x) => x === innerDateFormatted) !== undefined\n );\n }\n\n /**\n * Returns the index at which `targetDate` is in the array.\n * This is used for updating or removing a date when multi-date is used\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n pickedIndex(targetDate: DateTime, unit?: Unit): number {\n if (!unit) return this._dates.indexOf(targetDate);\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return this._dates.map((x) => x.format(format)).indexOf(innerDateFormatted);\n }\n\n /**\n * Clears all selected dates.\n */\n clear() {\n this._context._unset = true;\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate: this.lastPicked,\n isClear: true,\n isValid: true,\n } as ChangeEvent);\n this._dates = [];\n }\n\n /**\n * Find the \"book end\" years given a `year` and a `factor`\n * @param factor e.g. 100 for decades\n * @param year e.g. 2021\n */\n static getStartEndYear(\n factor: number,\n year: number\n ): [number, number, number] {\n const step = factor / 10,\n startYear = Math.floor(year / factor) * factor,\n endYear = startYear + step * 9,\n focusValue = Math.floor(year / step) * step;\n return [startYear, endYear, focusValue];\n }\n\n /**\n * Do not use direectly. Attempts to either clear or set the `target` date at `index`.\n * If the `target` is null then the date will be cleared.\n * If multi-date is being used then it will be removed from the array.\n * If `target` is valid and multi-date is used then if `index` is\n * provided the date at that index will be replaced, otherwise it is appended.\n * @param target\n * @param index\n */\n _setValue(target?: DateTime, index?: number): void {\n const noIndex = typeof index === 'undefined',\n isClear = !target && noIndex;\n let oldDate = this._context._unset ? null : this._dates[index];\n if (!oldDate && !this._context._unset && noIndex && isClear) {\n oldDate = this.lastPicked;\n }\n\n if (target && oldDate?.isSame(target)) return;\n\n const updateInput = () => {\n if (!this._context._input) return;\n\n let newValue = this._context._options.hooks.inputFormat(target);\n if (this._context._options.multipleDates) {\n newValue = this._dates\n .map((d) => this._context._options.hooks.inputFormat(d))\n .join(this._context._options.multipleDatesSeparator);\n }\n if (this._context._input.value != newValue)\n this._context._input.value = newValue;\n };\n\n // case of calling setValue(null)\n if (!target) {\n if (\n !this._context._options.multipleDates ||\n this._dates.length === 1 ||\n isClear\n ) {\n this._context._unset = true;\n this._dates = [];\n } else {\n this._dates.splice(index, 1);\n }\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n\n updateInput();\n this._context._display._update('all');\n return;\n }\n\n index = index || 0;\n target = target.clone;\n\n // minute stepping is being used, force the minute to the closest value\n if (this._context._options.stepping !== 1) {\n target.minutes =\n Math.round(target.minutes / this._context._options.stepping) *\n this._context._options.stepping;\n target.seconds = 0;\n }\n\n if (this._context._validation.isValid(target)) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._unset = false;\n this._context._display._update('all');\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n return;\n }\n\n if (this._context._options.keepInvalid) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: false,\n } as ChangeEvent);\n }\n this._context._triggerEvent({\n type: Namespace.events.error,\n reason: Namespace.errorMessages.failedToSetInvalidDate,\n date: target,\n oldDate,\n } as FailEvent);\n }\n\n /**\n * Returns a format object based on the granularity of `unit`\n * @param unit\n */\n static getFormatByUnit(unit: Unit): object {\n switch (unit) {\n case 'date':\n return { dateStyle: 'short' };\n case 'month':\n return {\n month: 'numeric',\n year: 'numeric',\n };\n case 'year':\n return { year: 'numeric' };\n }\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { DateTime, Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\nimport Dates from '../../dates';\n\n/**\n * Creates and updates the grid for `year`\n */\nexport default class YearDisplay {\n private _context: TempusDominus;\n private _startYear: DateTime;\n private _endYear: DateTime;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.yearsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectYear);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update() {\n const [start, end] = Dates.getStartEndYear(\n 10,\n this._context._viewDate.year\n );\n this._startYear = this._context._viewDate.clone.manipulate(-1, Unit.year);\n this._endYear = this._context._viewDate.clone.manipulate(10, Unit.year);\n\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.yearsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.yearsContainer,\n `${this._startYear.year}-${this._endYear.year}`\n );\n\n this._context._validation.isValid(this._startYear, Unit.year)\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n this._context._validation.isValid(this._endYear, Unit.year)\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone\n .startOf(Unit.year)\n .manipulate(-1, Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectYear}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.year);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.year)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.year)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.year}`);\n containerClone.innerText = `${innerDate.year}`;\n\n innerDate.manipulate(1, Unit.year);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport Dates from '../../dates';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `seconds`\r\n */\r\nexport default class DecadeDisplay {\r\n private _context: TempusDominus;\r\n private _startDecade: DateTime;\r\n private _endDecade: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker() {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.decadesContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDecade);\r\n container.appendChild(div);\r\n }\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 100,\r\n this._context._viewDate.year\r\n );\r\n this._startDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._startDecade.year = start;\r\n this._endDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._endDecade.year = end;\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.decadesContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.decadesContainer,\r\n `${this._startDecade.year}-${this._endDecade.year}`\r\n );\r\n\r\n this._context._validation.isValid(this._startDecade, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endDecade, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n const pickedYears = this._context.dates.picked.map((x) => x.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectDecade}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (index === 0) {\r\n containerClone.classList.add(Namespace.css.old);\r\n if (this._startDecade.year - 10 < 0) {\r\n containerClone.textContent = ' ';\r\n previous.classList.add(Namespace.css.disabled);\r\n containerClone.classList.add(Namespace.css.disabled);\r\n containerClone.setAttribute('data-value', ``);\r\n return;\r\n } else {\r\n containerClone.innerText = `${this._startDecade.year - 10}`;\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n return;\r\n }\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.decade);\r\n const startDecadeYear = this._startDecade.year;\r\n const endDecadeYear = this._startDecade.year + 9;\r\n\r\n if (\r\n !this._context._unset &&\r\n pickedYears.filter((x) => x >= startDecadeYear && x <= endDecadeYear)\r\n .length > 0\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n containerClone.innerText = `${this._startDecade.year}`;\r\n\r\n this._startDecade.manipulate(10, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates the clock display\n */\nexport default class TimeDisplay {\n private _context: TempusDominus;\n private _gridColumns = '';\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the clock display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.clockContainer);\n\n container.append(...this._grid());\n\n return container;\n }\n\n /**\n * Populates the various elements with in the clock display\n * like the current hour and if the manipulation icons are enabled.\n * @private\n */\n _update(): void {\n const timesDiv = (\n this._context._display.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0]\n );\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n timesDiv\n .querySelectorAll('.disabled')\n .forEach((element) => element.classList.remove(Namespace.css.disabled));\n\n if (this._context._options.display.components.hours) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.hours}]`\n ).innerText = this._context._options.display.components.useTwentyfourHour\n ? lastPicked.hoursFormatted\n : lastPicked.twelveHoursFormatted;\n }\n\n if (this._context._options.display.components.minutes) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.minutes}]`\n ).innerText = lastPicked.minutesFormatted;\n }\n\n if (this._context._options.display.components.seconds) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.seconds}]`\n ).innerText = lastPicked.secondsFormatted;\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n const toggle = timesDiv.querySelector(\n `[data-action=${ActionTypes.toggleMeridiem}]`\n );\n\n toggle.innerText = lastPicked.meridiem();\n\n if (\n !this._context._validation.isValid(\n lastPicked.clone.manipulate(\n lastPicked.hours >= 12 ? -12 : 12,\n Unit.hours\n )\n )\n ) {\n toggle.classList.add(Namespace.css.disabled);\n } else {\n toggle.classList.remove(Namespace.css.disabled);\n }\n }\n\n timesDiv.style.gridTemplateAreas = `\"${this._gridColumns}\"`;\n }\n\n /**\n * Creates the table for the clock display depending on what options are selected.\n * @private\n */\n private _grid(): HTMLElement[] {\n this._gridColumns = '';\n const top = [],\n middle = [],\n bottom = [],\n separator = document.createElement('div'),\n upIcon = this._context._display._iconTag(\n this._context._options.display.icons.up\n ),\n downIcon = this._context._display._iconTag(\n this._context._options.display.icons.down\n );\n\n separator.classList.add(Namespace.css.separator, Namespace.css.noHighlight);\n const separatorColon = separator.cloneNode(true);\n separatorColon.innerHTML = ':';\n\n const getSeparator = (colon = false): HTMLElement => {\n return colon\n ? separatorColon.cloneNode(true)\n : separator.cloneNode(true);\n };\n\n if (this._context._options.display.components.hours) {\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.incrementHours);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickHour\n );\n divElement.setAttribute('data-action', ActionTypes.showHours);\n divElement.setAttribute('data-time-component', Unit.hours);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.decrementHours);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n this._gridColumns += 'a';\n }\n\n if (this._context._options.display.components.minutes) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.hours) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.incrementMinutes);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickMinute\n );\n divElement.setAttribute('data-action', ActionTypes.showMinutes);\n divElement.setAttribute('data-time-component', Unit.minutes);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.decrementMinutes);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (this._context._options.display.components.seconds) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.minutes) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.incrementSeconds);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickSecond\n );\n divElement.setAttribute('data-action', ActionTypes.showSeconds);\n divElement.setAttribute('data-time-component', Unit.seconds);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.decrementSeconds);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n this._gridColumns += ' a';\n let divElement = getSeparator();\n top.push(divElement);\n\n let button = document.createElement('button');\n button.setAttribute(\n 'title',\n this._context._options.localization.toggleMeridiem\n );\n button.setAttribute('data-action', ActionTypes.toggleMeridiem);\n button.setAttribute('tabindex', '-1');\n button.classList.add(Namespace.css.toggleMeridiem);\n\n divElement = document.createElement('div');\n divElement.classList.add(Namespace.css.noHighlight);\n divElement.appendChild(button);\n middle.push(divElement);\n\n divElement = getSeparator();\n bottom.push(divElement);\n }\n\n this._gridColumns = this._gridColumns.trim();\n\n return [...top, ...middle, ...bottom];\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `hours`\n */\nexport default class HourDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.hourContainer);\n\n for (\n let i = 0;\n i <\n (this._context._options.display.components.useTwentyfourHour ? 24 : 12);\n i++\n ) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectHour);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.hourContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.date);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectHour}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.hour);\n\n if (!this._context._validation.isValid(innerDate, Unit.hours)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.hours}`);\n containerClone.innerText = this._context._options.display.components\n .useTwentyfourHour\n ? innerDate.hoursFormatted\n : innerDate.twelveHoursFormatted;\n innerDate.manipulate(1, Unit.hours);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `minutes`\n */\nexport default class MinuteDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.minuteContainer);\n\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n for (let i = 0; i < 60 / step; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMinute);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.minuteContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.hours);\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMinute}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.minute);\n\n if (!this._context._validation.isValid(innerDate, Unit.minutes)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.minutes}`);\n containerClone.innerText = innerDate.minutesFormatted;\n innerDate.manipulate(step, Unit.minutes);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class secondDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.secondContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectSecond);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.secondContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.minutes);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectSecond}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.second);\n\n if (!this._context._validation.isValid(innerDate, Unit.seconds)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.seconds}`);\n containerClone.innerText = innerDate.secondsFormatted;\n innerDate.manipulate(5, Unit.seconds);\n });\n }\n}\n","import DateDisplay from './calendar/date-display';\r\nimport MonthDisplay from './calendar/month-display';\r\nimport YearDisplay from './calendar/year-display';\r\nimport DecadeDisplay from './calendar/decade-display';\r\nimport TimeDisplay from './time/time-display';\r\nimport HourDisplay from './time/hour-display';\r\nimport MinuteDisplay from './time/minute-display';\r\nimport SecondDisplay from './time/second-display';\r\nimport { DateTime, Unit } from '../datetime';\r\nimport { DatePickerModes } from '../conts';\r\nimport { TempusDominus } from '../tempus-dominus';\r\nimport { ActionTypes } from '../actions';\r\nimport { createPopper } from '@popperjs/core';\r\nimport Namespace from '../namespace';\r\nimport { HideEvent } from '../event-types';\r\n\r\n/**\r\n * Main class for all things display related.\r\n */\r\nexport default class Display {\r\n private _context: TempusDominus;\r\n private _dateDisplay: DateDisplay;\r\n private _monthDisplay: MonthDisplay;\r\n private _yearDisplay: YearDisplay;\r\n private _decadeDisplay: DecadeDisplay;\r\n private _timeDisplay: TimeDisplay;\r\n private _widget: HTMLElement;\r\n private _hourDisplay: HourDisplay;\r\n private _minuteDisplay: MinuteDisplay;\r\n private _secondDisplay: SecondDisplay;\r\n private _popperInstance: any;\r\n private _isVisible = false;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this._dateDisplay = new DateDisplay(context);\r\n this._monthDisplay = new MonthDisplay(context);\r\n this._yearDisplay = new YearDisplay(context);\r\n this._decadeDisplay = new DecadeDisplay(context);\r\n this._timeDisplay = new TimeDisplay(context);\r\n this._hourDisplay = new HourDisplay(context);\r\n this._minuteDisplay = new MinuteDisplay(context);\r\n this._secondDisplay = new SecondDisplay(context);\r\n\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Returns the widget body or undefined\r\n * @private\r\n */\r\n get widget(): HTMLElement | undefined {\r\n return this._widget;\r\n }\r\n\r\n /**\r\n * Returns this visible state of the picker (shown)\r\n */\r\n get isVisible() {\r\n return this._isVisible;\r\n }\r\n\r\n /**\r\n * Updates the table for a particular unit. Used when an option as changed or\r\n * whenever the class list might need to be refreshed.\r\n * @param unit\r\n * @private\r\n */\r\n _update(unit: Unit | 'clock' | 'calendar' | 'all'): void {\r\n if (!this.widget) return;\r\n //todo do I want some kind of error catching or other guards here?\r\n switch (unit) {\r\n case Unit.seconds:\r\n this._secondDisplay._update();\r\n break;\r\n case Unit.minutes:\r\n this._minuteDisplay._update();\r\n break;\r\n case Unit.hours:\r\n this._hourDisplay._update();\r\n break;\r\n case Unit.date:\r\n this._dateDisplay._update();\r\n break;\r\n case Unit.month:\r\n this._monthDisplay._update();\r\n break;\r\n case Unit.year:\r\n this._yearDisplay._update();\r\n break;\r\n case 'clock':\r\n this._timeDisplay._update();\r\n this._update(Unit.hours);\r\n this._update(Unit.minutes);\r\n this._update(Unit.seconds);\r\n break;\r\n case 'calendar':\r\n this._update(Unit.date);\r\n this._update(Unit.year);\r\n this._update(Unit.month);\r\n this._decadeDisplay._update();\r\n this._updateCalendarHeader();\r\n break;\r\n case 'all':\r\n if (this._hasTime) {\r\n this._update('clock');\r\n }\r\n if (this._hasDate) {\r\n this._update('calendar');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Shows the picker and creates a Popper instance if needed.\r\n * Add document click event to hide when clicking outside the picker.\r\n * @fires Events#show\r\n */\r\n show(): void {\r\n if (this.widget == undefined) {\r\n if (\r\n this._context._options.useCurrent &&\r\n !this._context._options.defaultDate &&\r\n !this._context._input?.value\r\n ) {\r\n //todo in the td4 branch a pr changed this to allow granularity\r\n const date = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n if (!this._context._options.keepInvalid) {\r\n let tries = 0;\r\n let direction = 1;\r\n if (this._context._options.restrictions.maxDate?.isBefore(date)) {\r\n direction = -1;\r\n }\r\n while (!this._context._validation.isValid(date)) {\r\n date.manipulate(direction, Unit.date);\r\n if (tries > 31) break;\r\n tries++;\r\n }\r\n }\r\n this._context.dates._setValue(date);\r\n }\r\n\r\n if (this._context._options.defaultDate) {\r\n this._context.dates._setValue(this._context._options.defaultDate);\r\n }\r\n\r\n this._buildWidget();\r\n if (this._hasDate) {\r\n this._showMode();\r\n }\r\n\r\n if (!this._context._options.display.inline) {\r\n document.body.appendChild(this.widget);\r\n\r\n this._popperInstance = createPopper(\r\n this._context._element,\r\n this.widget,\r\n {\r\n modifiers: [\r\n /* {\r\n name: 'offset',\r\n options: {\r\n offset: [2, 8],\r\n },\r\n },*/\r\n { name: 'eventListeners', enabled: true },\r\n ],\r\n placement: 'bottom-start',\r\n }\r\n );\r\n } else {\r\n this._context._element.appendChild(this.widget);\r\n }\r\n\r\n if (this._context._options.display.viewMode == 'clock') {\r\n this._context._action.do(\r\n {\r\n currentTarget: this.widget.querySelector(\r\n `.${Namespace.css.timeContainer}`\r\n ),\r\n },\r\n ActionTypes.showClock\r\n );\r\n }\r\n\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.addEventListener('click', this._actionsClickEvent)\r\n );\r\n\r\n // show the clock when using sideBySide\r\n if (this._context._options.display.sideBySide) {\r\n this._timeDisplay._update();\r\n (\r\n this.widget.getElementsByClassName(\r\n Namespace.css.clockContainer\r\n )[0] as HTMLElement\r\n ).style.display = 'grid';\r\n }\r\n }\r\n\r\n this.widget.classList.add(Namespace.css.show);\r\n if (!this._context._options.display.inline) {\r\n this._popperInstance.update();\r\n document.addEventListener('click', this._documentClickEvent);\r\n }\r\n this._context._triggerEvent({ type: Namespace.events.show });\r\n this._isVisible = true;\r\n }\r\n\r\n /**\r\n * Changes the calendar view mode. E.g. month <-> year\r\n * @param direction -/+ number to move currentViewMode\r\n * @private\r\n */\r\n _showMode(direction?: number): void {\r\n if (!this.widget) {\r\n return;\r\n }\r\n if (direction) {\r\n const max = Math.max(\r\n this._context._minViewModeNumber,\r\n Math.min(3, this._context._currentViewMode + direction)\r\n );\r\n if (this._context._currentViewMode == max) return;\r\n this._context._currentViewMode = max;\r\n }\r\n\r\n this.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div:not(.${Namespace.css.clockContainer})`\r\n )\r\n .forEach((e: HTMLElement) => (e.style.display = 'none'));\r\n\r\n const datePickerMode = DatePickerModes[this._context._currentViewMode];\r\n let picker: HTMLElement = this.widget.querySelector(\r\n `.${datePickerMode.className}`\r\n );\r\n\r\n switch (datePickerMode.className) {\r\n case Namespace.css.decadesContainer:\r\n this._decadeDisplay._update();\r\n break;\r\n case Namespace.css.yearsContainer:\r\n this._yearDisplay._update();\r\n break;\r\n case Namespace.css.monthsContainer:\r\n this._monthDisplay._update();\r\n break;\r\n case Namespace.css.daysContainer:\r\n this._dateDisplay._update();\r\n break;\r\n }\r\n\r\n picker.style.display = 'grid';\r\n this._updateCalendarHeader();\r\n }\r\n\r\n _updateCalendarHeader() {\r\n const showing = [\r\n ...this.widget.querySelector(\r\n `.${Namespace.css.dateContainer} div[style*=\"display: grid\"]`\r\n ).classList,\r\n ].find((x) => x.startsWith(Namespace.css.dateContainer));\r\n\r\n const [previous, switcher, next] = this._context._display.widget\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switch (showing) {\r\n case Namespace.css.decadesContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousCentury\r\n );\r\n switcher.setAttribute('title', '');\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextCentury\r\n );\r\n break;\r\n case Namespace.css.yearsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousDecade\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDecade\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextDecade\r\n );\r\n break;\r\n case Namespace.css.monthsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousYear\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectYear\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextYear\r\n );\r\n break;\r\n case Namespace.css.daysContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousMonth\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectMonth\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextMonth\r\n );\r\n switcher.innerText = this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n });\r\n break;\r\n }\r\n switcher.innerText = switcher.getAttribute(showing);\r\n }\r\n\r\n /**\r\n * Hides the picker if needed.\r\n * Remove document click event to hide when clicking outside the picker.\r\n * @fires Events#hide\r\n */\r\n hide(): void {\r\n if (!this.widget || !this._isVisible) return;\r\n\r\n this.widget.classList.remove(Namespace.css.show);\r\n\r\n if (this._isVisible) {\r\n this._context._triggerEvent({\r\n type: Namespace.events.hide,\r\n date: this._context._unset\r\n ? null\r\n : this._context.dates.lastPicked\r\n ? this._context.dates.lastPicked.clone\r\n : void 0,\r\n } as HideEvent);\r\n this._isVisible = false;\r\n }\r\n\r\n document.removeEventListener('click', this._documentClickEvent);\r\n }\r\n\r\n /**\r\n * Toggles the picker's open state. Fires a show/hide event depending.\r\n */\r\n toggle() {\r\n return this._isVisible ? this.hide() : this.show();\r\n }\r\n\r\n /**\r\n * Removes document and data-action click listener and reset the widget\r\n * @private\r\n */\r\n _dispose() {\r\n document.removeEventListener('click', this._documentClickEvent);\r\n if (!this.widget) return;\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.removeEventListener('click', this._actionsClickEvent)\r\n );\r\n this.widget.parentNode.removeChild(this.widget);\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Builds the widgets html template.\r\n * @private\r\n */\r\n private _buildWidget(): HTMLElement {\r\n const template = document.createElement('div');\r\n template.classList.add(Namespace.css.widget);\r\n\r\n const dateView = document.createElement('div');\r\n dateView.classList.add(Namespace.css.dateContainer);\r\n dateView.append(\r\n this._headTemplate,\r\n this._decadeDisplay._picker,\r\n this._yearDisplay._picker,\r\n this._monthDisplay._picker,\r\n this._dateDisplay._picker\r\n );\r\n\r\n const timeView = document.createElement('div');\r\n timeView.classList.add(Namespace.css.timeContainer);\r\n timeView.appendChild(this._timeDisplay._picker);\r\n timeView.appendChild(this._hourDisplay._picker);\r\n timeView.appendChild(this._minuteDisplay._picker);\r\n timeView.appendChild(this._secondDisplay._picker);\r\n\r\n const toolbar = document.createElement('div');\r\n toolbar.classList.add(Namespace.css.toolbar);\r\n toolbar.append(...this._toolbar);\r\n\r\n if (this._context._options.display.inline) {\r\n template.classList.add(Namespace.css.inline);\r\n }\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n template.classList.add('calendarWeeks');\r\n }\r\n\r\n if (\r\n this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n template.classList.add(Namespace.css.sideBySide);\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n const row = document.createElement('div');\r\n row.classList.add('td-row');\r\n dateView.classList.add('td-half');\r\n timeView.classList.add('td-half');\r\n\r\n row.appendChild(dateView);\r\n row.appendChild(timeView);\r\n template.appendChild(row);\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n this._widget = template;\r\n return;\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n if (this._hasDate) {\r\n if (this._hasTime) {\r\n dateView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode !== 'clock')\r\n dateView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(dateView);\r\n }\r\n\r\n if (this._hasTime) {\r\n if (this._hasDate) {\r\n timeView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode === 'clock')\r\n timeView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(timeView);\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n const arrow = document.createElement('div');\r\n arrow.classList.add('arrow');\r\n arrow.setAttribute('data-popper-arrow', '');\r\n template.appendChild(arrow);\r\n\r\n this._widget = template;\r\n }\r\n\r\n /**\r\n * Returns true if the hours, minutes, or seconds component is turned on\r\n */\r\n get _hasTime(): boolean {\r\n return (\r\n this._context._options.display.components.clock &&\r\n (this._context._options.display.components.hours ||\r\n this._context._options.display.components.minutes ||\r\n this._context._options.display.components.seconds)\r\n );\r\n }\r\n\r\n /**\r\n * Returns true if the year, month, or date component is turned on\r\n */\r\n get _hasDate(): boolean {\r\n return (\r\n this._context._options.display.components.calendar &&\r\n (this._context._options.display.components.year ||\r\n this._context._options.display.components.month ||\r\n this._context._options.display.components.date)\r\n );\r\n }\r\n\r\n /**\r\n * Get the toolbar html based on options like buttons.today\r\n * @private\r\n */\r\n get _toolbar(): HTMLElement[] {\r\n const toolbar = [];\r\n\r\n if (this._context._options.display.buttons.today) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.today);\r\n div.setAttribute('title', this._context._options.localization.today);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.today)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (\r\n !this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n let title, icon;\r\n if (this._context._options.display.viewMode === 'clock') {\r\n title = this._context._options.localization.selectDate;\r\n icon = this._context._options.display.icons.date;\r\n } else {\r\n title = this._context._options.localization.selectTime;\r\n icon = this._context._options.display.icons.time;\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.togglePicker);\r\n div.setAttribute('title', title);\r\n\r\n div.appendChild(this._iconTag(icon));\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.clear) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.clear);\r\n div.setAttribute('title', this._context._options.localization.clear);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.clear)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.close) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.close);\r\n div.setAttribute('title', this._context._options.localization.close);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.close)\r\n );\r\n toolbar.push(div);\r\n }\r\n\r\n return toolbar;\r\n }\r\n\r\n /***\r\n * Builds the base header template with next and previous icons\r\n * @private\r\n */\r\n get _headTemplate(): HTMLElement {\r\n const calendarHeader = document.createElement('div');\r\n calendarHeader.classList.add(Namespace.css.calendarHeader);\r\n\r\n const previous = document.createElement('div');\r\n previous.classList.add(Namespace.css.previous);\r\n previous.setAttribute('data-action', ActionTypes.previous);\r\n previous.appendChild(\r\n this._iconTag(this._context._options.display.icons.previous)\r\n );\r\n\r\n const switcher = document.createElement('div');\r\n switcher.classList.add(Namespace.css.switch);\r\n switcher.setAttribute('data-action', ActionTypes.pickerSwitch);\r\n\r\n const next = document.createElement('div');\r\n next.classList.add(Namespace.css.next);\r\n next.setAttribute('data-action', ActionTypes.next);\r\n next.appendChild(this._iconTag(this._context._options.display.icons.next));\r\n\r\n calendarHeader.append(previous, switcher, next);\r\n return calendarHeader;\r\n }\r\n\r\n /**\r\n * Builds an icon tag as either an ``\r\n * or with icons.type is `sprites` then an svg tag instead\r\n * @param iconClass\r\n * @private\r\n */\r\n _iconTag(iconClass: string): HTMLElement {\r\n if (this._context._options.display.icons.type === 'sprites') {\r\n const svg = document.createElement('svg');\r\n svg.innerHTML = ``;\r\n return svg;\r\n }\r\n const icon = document.createElement('i');\r\n DOMTokenList.prototype.add.apply(icon.classList, iconClass.split(' '));\r\n return icon;\r\n }\r\n\r\n /**\r\n * A document click event to hide the widget if click is outside\r\n * @private\r\n * @param e MouseEvent\r\n */\r\n private _documentClickEvent = (e: MouseEvent) => {\r\n if (this._context._options.display.keepOpen ||\r\n this._context._options.debug ||\r\n (window as any).debug) return;\r\n\r\n if (\r\n this._isVisible &&\r\n !e.composedPath().includes(this.widget) && // click inside the widget\r\n !e.composedPath()?.includes(this._context._element) // click on the element\r\n ) {\r\n this.hide();\r\n }\r\n };\r\n\r\n /**\r\n * Click event for any action like selecting a date\r\n * @param e MouseEvent\r\n * @private\r\n */\r\n private _actionsClickEvent = (e: MouseEvent) => {\r\n this._context._action.do(e);\r\n };\r\n\r\n /**\r\n * Causes the widget to get rebuilt on next show. If the picker is already open\r\n * then hide and reshow it.\r\n * @private\r\n */\r\n _rebuild() {\r\n const wasVisible = this._isVisible;\r\n if (wasVisible) this.hide();\r\n this._dispose();\r\n if (wasVisible) {\r\n this.show();\r\n }\r\n }\r\n}\r\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Dates from './dates';\n\n/**\n * Main class for date validation rules based on the options provided.\n */\nexport default class Validation {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Checks to see if the target date is valid based on the rules provided in the options.\n * Granularity can be provide to chek portions of the date instead of the whole.\n * @param targetDate\n * @param granularity\n */\n isValid(targetDate: DateTime, granularity?: Unit): boolean {\n if (\n this._context._options.restrictions.disabledDates.length > 0 &&\n this._isInDisabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledDates.length > 0 &&\n !this._isInEnabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.daysOfWeekDisabled?.length > 0 &&\n this._context._options.restrictions.daysOfWeekDisabled.indexOf(\n targetDate.weekDay\n ) !== -1\n ) {\n return false;\n }\n\n if (\n this._context._options.restrictions.minDate &&\n targetDate.isBefore(\n this._context._options.restrictions.minDate,\n granularity\n )\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.maxDate &&\n targetDate.isAfter(\n this._context._options.restrictions.maxDate,\n granularity\n )\n ) {\n return false;\n }\n\n if (\n granularity === Unit.hours ||\n granularity === Unit.minutes ||\n granularity === Unit.seconds\n ) {\n if (\n this._context._options.restrictions.disabledHours.length > 0 &&\n this._isInDisabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledHours.length > 0 &&\n !this._isInEnabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.disabledTimeIntervals.length > 0\n ) {\n for (\n let i = 0;\n i < this._context._options.restrictions.disabledTimeIntervals.length;\n i++\n ) {\n if (\n targetDate.isBetween(\n this._context._options.restrictions.disabledTimeIntervals[i].from,\n this._context._options.restrictions.disabledTimeIntervals[i].to\n )\n )\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Checks to see if the disabledDates option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInDisabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledDates ||\n this._context._options.restrictions.disabledDates.length === 0\n )\n return false;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.disabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the enabledDates option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInEnabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledDates ||\n this._context._options.restrictions.enabledDates.length === 0\n )\n return true;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.enabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the disabledHours option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInDisabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledHours ||\n this._context._options.restrictions.disabledHours.length === 0\n )\n return false;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.disabledHours.find(\n (x) => x === formattedDate\n );\n }\n\n /**\n * Checks to see if the enabledHours option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInEnabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledHours ||\n this._context._options.restrictions.enabledHours.length === 0\n )\n return true;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.enabledHours.find(\n (x) => x === formattedDate\n );\n }\n}\n","import Display from './display/index';\nimport Validation from './validation';\nimport Dates from './dates';\nimport Actions, { ActionTypes } from './actions';\nimport { DatePickerModes, DefaultOptions } from './conts';\nimport { DateTime, DateTimeFormatOptions, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options, { OptionConverter } from './options';\nimport {\n BaseEvent,\n ChangeEvent,\n ViewUpdateEvent,\n FailEvent,\n} from './event-types';\n\n/**\n * A robust and powerful date/time picker component.\n */\nclass TempusDominus {\n dates: Dates;\n\n _options: Options;\n _currentViewMode = 0;\n _subscribers: { [key: string]: ((event: any) => {})[] } = {};\n _element: HTMLElement;\n _input: HTMLInputElement;\n _unset: boolean;\n _minViewModeNumber = 0;\n _display: Display;\n _validation: Validation;\n _action: Actions;\n private _isDisabled = false;\n private _notifyChangeEventContext = 0;\n private _toggle: HTMLElement;\n private _currentPromptTimeTimeout: any;\n\n constructor(element: HTMLElement, options: Options = {} as Options) {\n if (!element) {\n Namespace.errorMessages.mustProvideElement;\n }\n this._element = element;\n this._options = this._initializeOptions(options, DefaultOptions, true);\n this._viewDate.setLocale(this._options.localization.locale);\n this._unset = true;\n\n this._display = new Display(this);\n this._validation = new Validation(this);\n this.dates = new Dates(this);\n this._action = new Actions(this);\n\n this._initializeInput();\n this._initializeToggle();\n\n if (this._options.display.inline) this._display.show();\n }\n\n _viewDate = new DateTime();\n\n get viewDate() {\n return this._viewDate;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Update the picker options. If `reset` is provide `options` will be merged with DefaultOptions instead.\n * @param options\n * @param reset\n * @public\n */\n updateOptions(options, reset = false): void {\n if (reset) this._options = this._initializeOptions(options, DefaultOptions);\n else this._options = this._initializeOptions(options, this._options);\n this._display._rebuild();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Toggles the picker open or closed. If the picker is disabled, nothing will happen.\n * @public\n */\n toggle(): void {\n if (this._isDisabled) return;\n this._display.toggle();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Shows the picker unless the picker is disabled.\n * @public\n */\n show(): void {\n if (this._isDisabled) return;\n this._display.show();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker unless the picker is disabled.\n * @public\n */\n hide(): void {\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Disables the picker and the target input field.\n * @public\n */\n disable(): void {\n this._isDisabled = true;\n // todo this might be undesired. If a dev disables the input field to\n // only allow using the picker, this will break that.\n this._input?.setAttribute('disabled', 'disabled');\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Enables the picker and the target input field.\n * @public\n */\n enable(): void {\n this._isDisabled = false;\n this._input?.removeAttribute('disabled');\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Clears all the selected dates\n * @public\n */\n clear(): void {\n this.dates.clear();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Allows for a direct subscription to picker events, without having to use addEventListener on the element.\n * @param eventTypes See Namespace.Events\n * @param callbacks Function to call when event is triggered\n * @public\n */\n subscribe(\n eventTypes: string | string[],\n callbacks: (event: any) => void | ((event: any) => void)[]\n ): { unsubscribe: void }[] {\n if (typeof eventTypes === 'string') {\n eventTypes = [eventTypes];\n }\n let callBackArray = [];\n if (!Array.isArray(callbacks)) {\n callBackArray = [callbacks];\n } else {\n callBackArray = callbacks;\n }\n\n if (eventTypes.length !== callBackArray.length) {\n Namespace.errorMessages.subscribeMismatch;\n }\n\n const returnArray = [];\n\n for (let i = 0; i < eventTypes.length; i++) {\n const eventType = eventTypes[i];\n if (!Array.isArray(this._subscribers[eventType])) {\n this._subscribers[eventType] = [];\n }\n\n this._subscribers[eventType].push(callBackArray[i]);\n\n returnArray.push({\n unsubscribe: this._unsubscribe.bind(\n this,\n eventType,\n this._subscribers[eventType].length - 1\n ),\n });\n\n if (eventTypes.length === 1) {\n return returnArray[0];\n }\n }\n\n return returnArray;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker and removes event listeners\n */\n dispose() {\n this._display.hide();\n // this will clear the document click event listener\n this._display._dispose();\n this._input?.removeEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input?.removeEventListener('click', this._toggleClickEvent);\n }\n this._toggle.removeEventListener('click', this._toggleClickEvent);\n this._subscribers = {};\n }\n\n /**\n * Triggers an event like ChangeEvent when the picker has updated the value\n * of a selected date.\n * @param event Accepts a BaseEvent object.\n * @private\n */\n _triggerEvent(event: BaseEvent) {\n // checking hasOwnProperty because the BasicEvent also falls through here otherwise\n if ((event as ChangeEvent) && event.hasOwnProperty('date')) {\n const { date, oldDate, isClear } = event as ChangeEvent;\n // this was to prevent a max call stack error\n // https://github.com/tempusdominus/core/commit/15a280507f5277b31b0b3319ab1edc7c19a000fb\n // todo see if this is still needed or if there's a cleaner way\n this._notifyChangeEventContext++;\n if (\n (date && oldDate && date.isSame(oldDate)) ||\n (!isClear && !date && !oldDate) ||\n this._notifyChangeEventContext > 1\n ) {\n this._notifyChangeEventContext = 0;\n return;\n }\n this._handleAfterChangeEvent(event as ChangeEvent);\n }\n\n this._element.dispatchEvent(\n new CustomEvent(event.type, { detail: event as any })\n );\n\n if ((window as any).jQuery) {\n const $ = (window as any).jQuery;\n $(this._element).trigger(event);\n }\n\n const publish = () => {\n // return if event is not subscribed\n if (!Array.isArray(this._subscribers[event.type])) {\n return;\n }\n\n // Trigger callback for each subscriber\n this._subscribers[event.type].forEach((callback) => {\n callback(event);\n });\n };\n\n publish();\n\n this._notifyChangeEventContext = 0;\n }\n\n /**\n * Fires a ViewUpdate event when, for example, the month view is changed.\n * @param {Unit} unit\n * @private\n */\n _viewUpdate(unit: Unit) {\n this._triggerEvent({\n type: Namespace.events.update,\n change: unit,\n viewDate: this._viewDate.clone,\n } as ViewUpdateEvent);\n }\n\n private _unsubscribe(eventName, index) {\n this._subscribers[eventName].splice(index, 1);\n }\n\n /**\n * Merges two Option objects together and validates options type\n * @param config new Options\n * @param mergeTo Options to merge into\n * @param includeDataset When true, the elements data-td attributes will be included in the\n * @private\n */\n private _initializeOptions(\n config: Options,\n mergeTo: Options,\n includeDataset = false\n ): Options {\n config = OptionConverter._mergeOptions(config, mergeTo);\n if (includeDataset)\n config = OptionConverter._dataToOptions(this._element, config);\n\n OptionConverter._validateConflcits(config);\n\n config.viewDate = config.viewDate.setLocale(config.localization.locale);\n\n if (!this._viewDate.isSame(config.viewDate)) {\n this._viewDate = config.viewDate;\n }\n\n /**\n * Sets the minimum view allowed by the picker. For example the case of only\n * allowing year and month to be selected but not date.\n */\n if (config.display.components.year) {\n this._minViewModeNumber = 2;\n }\n if (config.display.components.month) {\n this._minViewModeNumber = 1;\n }\n if (config.display.components.date) {\n this._minViewModeNumber = 0;\n }\n\n this._currentViewMode = Math.max(\n this._minViewModeNumber,\n this._currentViewMode\n );\n\n // Update view mode if needed\n if (\n DatePickerModes[this._currentViewMode].name !== config.display.viewMode\n ) {\n this._currentViewMode = Math.max(\n DatePickerModes.findIndex((x) => x.name === config.display.viewMode),\n this._minViewModeNumber\n );\n }\n\n // defaults the input format based on the components enabled\n if (config.hooks.inputFormat === undefined) {\n const components = config.display.components;\n config.hooks.inputFormat = (date: DateTime) => {\n return date.format({\n year: components.calendar && components.year ? 'numeric' : undefined,\n month:\n components.calendar && components.month ? '2-digit' : undefined,\n day: components.calendar && components.date ? '2-digit' : undefined,\n hour:\n components.clock && components.hours\n ? components.useTwentyfourHour\n ? '2-digit'\n : 'numeric'\n : undefined,\n minute:\n components.clock && components.minutes ? '2-digit' : undefined,\n second:\n components.clock && components.seconds ? '2-digit' : undefined,\n hour12: !components.useTwentyfourHour,\n });\n };\n }\n\n if (this._display?.isVisible) {\n this._display._update('all');\n }\n\n return config;\n }\n\n /**\n * Checks if an input field is being used, attempts to locate one and sets an\n * event listener if found.\n * @private\n */\n private _initializeInput() {\n if (this._element.tagName == 'INPUT') {\n this._input = this._element as HTMLInputElement;\n } else {\n let query = this._element.dataset.tdTargetInput;\n if (query == undefined || query == 'nearest') {\n this._input = this._element.querySelector('input');\n } else {\n this._input = this._element.querySelector(query);\n }\n }\n\n if (!this._input) return;\n\n this._input.addEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input.addEventListener('click', this._toggleClickEvent);\n }\n\n if (this._input.value) {\n this._inputChangeEvent();\n }\n }\n\n /**\n * Attempts to locate a toggle for the picker and sets an event listener\n * @private\n */\n private _initializeToggle() {\n if (this._options.display.inline) return;\n let query = this._element.dataset.tdTargetToggle;\n if (query == 'nearest') {\n query = '[data-td-toggle=\"datetimepicker\"]';\n }\n this._toggle =\n query == undefined ? this._element : this._element.querySelector(query);\n this._toggle.addEventListener('click', this._toggleClickEvent);\n }\n\n /**\n * If the option is enabled this will render the clock view after a date pick.\n * @param e change event\n * @private\n */\n private _handleAfterChangeEvent(e: ChangeEvent) {\n if (\n // options is disabled\n !this._options.promptTimeOnDateChange ||\n this._options.display.inline ||\n this._options.display.sideBySide ||\n // time is disabled\n !this._display._hasTime ||\n // clock component is already showing\n this._display.widget\n ?.getElementsByClassName(Namespace.css.show)[0]\n .classList.contains(Namespace.css.timeContainer)\n )\n return;\n\n // First time ever. If useCurrent option is set to true (default), do nothing\n // because the first date is selected automatically.\n // or date didn't change (time did) or date changed because time did.\n if (\n (!e.oldDate && this._options.useCurrent) ||\n (e.oldDate && e.date?.isSame(e.oldDate))\n ) {\n return;\n }\n\n clearTimeout(this._currentPromptTimeTimeout);\n this._currentPromptTimeTimeout = setTimeout(() => {\n if (this._display.widget) {\n this._action.do(\n {\n currentTarget: this._display.widget.querySelector(\n `.${Namespace.css.switch} div`\n ),\n },\n ActionTypes.togglePicker\n );\n }\n }, this._options.promptTimeOnDateChangeTransitionDelay);\n }\n\n /**\n * Event for when the input field changes. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _inputChangeEvent = () => {\n const setViewDate = () => {\n if (this.dates.lastPicked) this._viewDate = this.dates.lastPicked;\n };\n\n const value = this._input.value;\n if (this._options.multipleDates) {\n try {\n const valueSplit = value.split(this._options.multipleDatesSeparator);\n for (let i = 0; i < valueSplit.length; i++) {\n if (this._options.hooks.inputParse) {\n this.dates.set(\n this._options.hooks.inputParse(valueSplit[i]),\n i,\n 'input'\n );\n } else {\n this.dates.set(valueSplit[i], i, 'input');\n }\n }\n setViewDate();\n } catch {\n console.warn(\n 'TD: Something went wrong trying to set the multidate values from the input field.'\n );\n }\n } else {\n if (this._options.hooks.inputParse) {\n this.dates.set(this._options.hooks.inputParse(value), 0, 'input');\n } else {\n this.dates.set(value, 0, 'input');\n }\n setViewDate();\n }\n };\n\n /**\n * Event for when the toggle is clicked. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _toggleClickEvent = () => {\n this.toggle();\n };\n}\n\nexport {\n TempusDominus,\n Namespace,\n DefaultOptions,\n DateTime,\n Options,\n Unit,\n DateTimeFormatOptions,\n};\n"],"names":["SecondDisplay"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tempus-dominus.esm.js","sources":["../../src/js/datetime.ts","../../src/js/errors.ts","../../src/js/namespace.ts","../../src/js/conts.ts","../../src/js/display/collapse.ts","../../src/js/actions.ts","../../src/js/display/calendar/date-display.ts","../../src/js/display/calendar/month-display.ts","../../src/js/options.ts","../../src/js/dates.ts","../../src/js/display/calendar/year-display.ts","../../src/js/display/calendar/decade-display.ts","../../src/js/display/time/time-display.ts","../../src/js/display/time/hour-display.ts","../../src/js/display/time/minute-display.ts","../../src/js/display/time/second-display.ts","../../src/js/display/index.ts","../../src/js/validation.ts","../../src/js/tempus-dominus.ts"],"sourcesContent":["export enum Unit {\r\n seconds = 'seconds',\r\n minutes = 'minutes',\r\n hours = 'hours',\r\n date = 'date',\r\n month = 'month',\r\n year = 'year',\r\n}\r\n\r\nexport interface DateTimeFormatOptions extends Intl.DateTimeFormatOptions {\r\n timeStyle?: 'short' | 'medium' | 'long';\r\n dateStyle?: 'short' | 'medium' | 'long' | 'full';\r\n}\r\n\r\n/**\r\n * For the most part this object behaves exactly the same way\r\n * as the native Date object with a little extra spice.\r\n */\r\nexport class DateTime extends Date {\r\n /**\r\n * Used with Intl.DateTimeFormat\r\n */\r\n locale = 'default';\r\n\r\n /**\r\n * Chainable way to set the {@link locale}\r\n * @param value\r\n */\r\n setLocale(value: string): this {\r\n this.locale = value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Converts a plain JS date object to a DateTime object.\r\n * Doing this allows access to format, etc.\r\n * @param date\r\n */\r\n static convert(date: Date): DateTime {\r\n if (!date) throw `A date is required`;\r\n return new DateTime(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate(),\r\n date.getHours(),\r\n date.getMinutes(),\r\n date.getSeconds(),\r\n date.getMilliseconds()\r\n );\r\n }\r\n\r\n /**\r\n * Native date manipulations are not pure functions. This function creates a duplicate of the DateTime object.\r\n */\r\n get clone() {\r\n return new DateTime(\r\n this.year,\r\n this.month,\r\n this.date,\r\n this.hours,\r\n this.minutes,\r\n this.seconds,\r\n this.getMilliseconds()\r\n ).setLocale(this.locale);\r\n }\r\n\r\n /**\r\n * Sets the current date to the start of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).startOf('month')\r\n * would return April 1, 2021, 12:00:00.000 AM (midnight)\r\n * @param unit\r\n */\r\n startOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(0);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(0, 0);\r\n break;\r\n case 'hours':\r\n this.setMinutes(0, 0, 0);\r\n break;\r\n case 'date':\r\n this.setHours(0, 0, 0, 0);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(0 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.startOf(Unit.date);\r\n this.setDate(1);\r\n break;\r\n case 'year':\r\n this.startOf(Unit.date);\r\n this.setMonth(0, 1);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the current date to the end of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).endOf('month')\r\n * would return April 30, 2021, 11:59:59.999 PM\r\n * @param unit\r\n */\r\n endOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(999);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(59, 999);\r\n break;\r\n case 'hours':\r\n this.setMinutes(59, 59, 999);\r\n break;\r\n case 'date':\r\n this.setHours(23, 59, 59, 999);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(6 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.month);\r\n this.setDate(0);\r\n break;\r\n case 'year':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.year);\r\n this.setDate(0);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Change a {@link unit} value. Value can be positive or negative\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).manipulate(1, 'month')\r\n * would return May 30, 2021, 11:45:32.984 AM\r\n * @param value A positive or negative number\r\n * @param unit\r\n */\r\n manipulate(value: number, unit: Unit): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n this[unit] += value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns a string format.\r\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat\r\n * for valid templates and locale objects\r\n * @param template An object. Uses browser defaults otherwise.\r\n * @param locale Can be a string or an array of strings. Uses browser defaults otherwise.\r\n */\r\n format(template: DateTimeFormatOptions, locale = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, template).format(this);\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is before this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isBefore(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() < compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() < compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is after this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isAfter(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() > compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() > compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is same this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isSame(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() === compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n compare = DateTime.convert(compare);\r\n return (\r\n this.clone.startOf(unit).valueOf() === compare.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Check if this is between two other DateTimes, optionally looking at unit scale. The match is exclusive.\r\n * @param left\r\n * @param right\r\n * @param unit.\r\n * @param inclusivity. A [ indicates inclusion of a value. A ( indicates exclusion.\r\n * If the inclusivity parameter is used, both indicators must be passed.\r\n */\r\n isBetween(\r\n left: DateTime,\r\n right: DateTime,\r\n unit?: Unit,\r\n inclusivity: '()' | '[]' | '(]' | '[)' = '()'\r\n ): boolean {\r\n if (unit && this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n const leftInclusivity = inclusivity[0] === '(';\r\n const rightInclusivity = inclusivity[1] === ')';\r\n\r\n return (\r\n ((leftInclusivity\r\n ? this.isAfter(left, unit)\r\n : !this.isBefore(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isBefore(right, unit)\r\n : !this.isAfter(right, unit))) ||\r\n ((leftInclusivity\r\n ? this.isBefore(left, unit)\r\n : !this.isAfter(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isAfter(right, unit)\r\n : !this.isBefore(right, unit)))\r\n );\r\n }\r\n\r\n /**\r\n * Returns flattened object of the date. Does not include literals\r\n * @param locale\r\n * @param template\r\n */\r\n parts(\r\n locale = this.locale,\r\n template: any = { dateStyle: 'full', timeStyle: 'long' }\r\n ) {\r\n const parts = {};\r\n new Intl.DateTimeFormat(locale, template)\r\n .formatToParts(this)\r\n .filter((x) => x.type !== 'literal')\r\n .forEach((x) => (parts[x.type] = x.value));\r\n return parts;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getSeconds()\r\n */\r\n get seconds(): number {\r\n return this.getSeconds();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setSeconds()\r\n */\r\n set seconds(value: number) {\r\n this.setSeconds(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get secondsFormatted(): string {\r\n return this.format({ second: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMinutes()\r\n */\r\n get minutes(): number {\r\n return this.getMinutes();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMinutes()\r\n */\r\n set minutes(value: number) {\r\n this.setMinutes(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get minutesFormatted(): string {\r\n return this.format({ minute: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getHours()\r\n */\r\n get hours(): number {\r\n return this.getHours();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setHours()\r\n */\r\n set hours(value: number) {\r\n this.setHours(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get hoursFormatted(): string {\r\n return this.format({ hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Returns two digit hours but in twelve hour mode e.g. 13 -> 1\r\n */\r\n get twelveHoursFormatted(): string {\r\n return this.format({ hour12: true, hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Get the meridiem of the date. E.g. AM or PM.\r\n * If the {@link locale} provides a \"dayPeriod\" then this will be returned,\r\n * otherwise it will return AM or PM.\r\n * @param locale\r\n */\r\n meridiem(locale: string = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, {\r\n hour: 'numeric',\r\n hour12: true,\r\n } as any)\r\n .formatToParts(this)\r\n .find((p) => p.type === 'dayPeriod')?.value;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDate()\r\n */\r\n get date(): number {\r\n return this.getDate();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setDate()\r\n */\r\n set date(value: number) {\r\n this.setDate(value);\r\n }\r\n\r\n /**\r\n * Return two digit date\r\n */\r\n get dateFormatted(): string {\r\n return this.date < 10 ? `0${this.date}` : `${this.date}`;\r\n }\r\n\r\n // https://github.com/you-dont-need/You-Dont-Need-Momentjs#week-of-year\r\n /**\r\n * Gets the week of the year\r\n */\r\n get week(): number {\r\n const startOfYear = new Date(this.year, 0, 1);\r\n startOfYear.setDate(\r\n startOfYear.getDate() + (1 - (startOfYear.getDay() % 7))\r\n );\r\n return Math.round((this.valueOf() - startOfYear.valueOf()) / 604800000) + 1;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDay()\r\n */\r\n get weekDay(): number {\r\n return this.getDay();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMonth()\r\n */\r\n get month(): number {\r\n return this.getMonth();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMonth()\r\n */\r\n set month(value: number) {\r\n this.setMonth(value);\r\n }\r\n\r\n /**\r\n * Return two digit, human expected month. E.g. January = 1, December = 12\r\n */\r\n get monthFormatted(): string {\r\n return this.month + 1 < 10 ? `0${this.month}` : `${this.month}`;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getFullYear()\r\n */\r\n get year(): number {\r\n return this.getFullYear();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setFullYear()\r\n */\r\n set year(value: number) {\r\n this.setFullYear(value);\r\n }\r\n}\r\n","import Namespace from './namespace';\n\nexport class TdError extends Error {\n code: number;\n}\n\nexport class ErrorMessages {\n private base = 'TD:';\n\n //#region out to console\n\n /**\n * Throws an error indicating that a key in the options object is invalid.\n * @param optionName\n */\n unexpectedOption(optionName: string) {\n const error = new TdError(\n `${this.base} Unexpected option: ${optionName} does not match a known option.`\n );\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error indicating that one more keys in the options object is invalid.\n * @param optionName\n */\n unexpectedOptions(optionName: string[]) {\n const error = new TdError(`${this.base}: ${optionName.join(', ')}`);\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error when an option is provide an unsupported value.\n * For example a value of 'cheese' for toolbarPlacement which only supports\n * 'top', 'bottom', 'default'.\n * @param optionName\n * @param badValue\n * @param validOptions\n */\n unexpectedOptionValue(\n optionName: string,\n badValue: string,\n validOptions: string[]\n ) {\n const error = new TdError(\n `${\n this.base\n } Unexpected option value: ${optionName} does not accept a value of \"${badValue}\". Valid values are: ${validOptions.join(\n ', '\n )}`\n );\n error.code = 2;\n throw error;\n }\n\n /**\n * Throws an error when an option value is the wrong type.\n * For example a string value was provided to multipleDates which only\n * supports true or false.\n * @param optionName\n * @param badType\n * @param expectedType\n */\n typeMismatch(optionName: string, badType: string, expectedType: string) {\n const error = new TdError(\n `${this.base} Mismatch types: ${optionName} has a type of ${badType} instead of the required ${expectedType}`\n );\n error.code = 3;\n throw error;\n }\n\n /**\n * Throws an error when an option value is outside of the expected range.\n * For example restrictions.daysOfWeekDisabled excepts a value between 0 and 6.\n * @param optionName\n * @param lower\n * @param upper\n */\n numbersOutOfRage(optionName: string, lower: number, upper: number) {\n const error = new TdError(\n `${this.base} ${optionName} expected an array of number between ${lower} and ${upper}.`\n );\n error.code = 4;\n throw error;\n }\n\n /**\n * Throws an error when a value for a date options couldn't be parsed. Either\n * the option was an invalide string or an invalid Date object.\n * @param optionName\n * @param date\n * @param soft If true, logs a warning instead of an error.\n */\n failedToParseDate(optionName: string, date: any, soft = false) {\n const error = new TdError(\n `${this.base} Could not correctly parse \"${date}\" to a date for ${optionName}.`\n );\n error.code = 5;\n if (!soft) throw error;\n console.warn(error);\n }\n\n /**\n * Throws when an element to attach to was not provided in the constructor.\n */\n mustProvideElement() {\n const error = new TdError(`${this.base} No element was provided.`);\n error.code = 6;\n throw error;\n }\n\n /**\n * Throws if providing an array for the events to subscribe method doesn't have\n * the same number of callbacks. E.g., subscribe([1,2], [1])\n */\n subscribeMismatch() {\n const error = new TdError(\n `${this.base} The subscribed events does not match the number of callbacks`\n );\n error.code = 7;\n throw error;\n }\n\n /**\n * Throws if the configuration has conflicting rules e.g. minDate is after maxDate\n */\n conflictingConfiguration(message?: string) {\n const error = new TdError(\n `${this.base} A configuration value conflicts with another rule. ${message}`\n );\n error.code = 8;\n throw error;\n }\n\n /**\n * Logs a warning if a date option value is provided as a string, instead of\n * a date/datetime object.\n */\n dateString() {\n console.warn(\n `${this.base} Using a string for date options is not recommended unless you specify an ISO string.`\n );\n }\n\n //#endregion\n\n //#region used with notify.error\n\n /**\n * Used with an Error Event type if the user selects a date that\n * fails restriction validation.\n */\n failedToSetInvalidDate = 'Failed to set invalid date';\n\n /**\n * Used with an Error Event type when a user changes the value of the\n * input field directly, and does not provide a valid date.\n */\n failedToParseInput = 'Failed parse input field';\n\n //#endregion\n}\n","import { ErrorMessages } from './errors';\n// this is not the way I want this to stay but nested classes seemed to blown up once its compiled.\nconst NAME = 'tempus-dominus',\n version = '6.0.0-alpha1',\n dataKey = 'td';\n\n/**\n * Events\n */\nclass Events {\n key = `.${dataKey}`;\n\n /**\n * Change event. Fired when the user selects a date.\n * See also EventTypes.ChangeEvent\n */\n change = `change${this.key}`;\n\n /**\n * Emit when the view changes for example from month view to the year view.\n * See also EventTypes.ViewUpdateEvent\n */\n update = `update${this.key}`;\n\n /**\n * Emits when a selected date or value from the input field fails to meet the provided validation rules.\n * See also EventTypes.FailEvent\n */\n error = `error${this.key}`;\n\n /**\n * Show event\n * @event Events#show\n */\n show = `show${this.key}`;\n\n /**\n * Hide event\n * @event Events#hide\n */\n hide = `hide${this.key}`;\n\n // blur and focus are used in the jQuery provider but are otherwise unused.\n // keyup/down will be used later for keybinding options\n\n blur = `blur${this.key}`;\n focus = `focus${this.key}`;\n keyup = `keyup${this.key}`;\n keydown = `keydown${this.key}`;\n}\n\nclass Css {\n /**\n * The outer element for the widget.\n */\n widget = `${NAME}-widget`;\n\n /**\n * Hold the previous, next and switcher divs\n */\n calendarHeader = 'calendar-header';\n\n /**\n * The element for the action to change the calendar view. E.g. month -> year.\n */\n switch = 'picker-switch';\n\n /**\n * The elements for all of the toolbar options\n */\n toolbar = 'toolbar';\n\n /**\n * Disables the hover and rounding affect.\n */\n noHighlight = 'no-highlight';\n\n /**\n * Applied to the widget element when the side by side option is in use.\n */\n sideBySide = 'timepicker-sbs';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> July\n */\n previous = 'previous';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> September\n */\n next = 'next';\n\n /**\n * Applied to any action that would violate any restriction options. ALso applied\n * to an input field if the disabled function is called.\n */\n disabled = 'disabled';\n\n /**\n * Applied to any date that is less than requested view,\n * e.g. the last day of the previous month.\n */\n old = 'old';\n\n /**\n * Applied to any date that is greater than of requested view,\n * e.g. the last day of the previous month.\n */\n new = 'new';\n\n /**\n * Applied to any date that is currently selected.\n */\n active = 'active';\n\n //#region date element\n\n /**\n * The outer most element for the calendar view.\n */\n dateContainer = 'date-container';\n\n /**\n * The outer most element for the decades view.\n */\n decadesContainer = `${this.dateContainer}-decades`;\n\n /**\n * Applied to elements within the decades container, e.g. 2020, 2030\n */\n decade = 'decade';\n\n /**\n * The outer most element for the years view.\n */\n yearsContainer = `${this.dateContainer}-years`;\n\n /**\n * Applied to elements within the years container, e.g. 2021, 2021\n */\n year = 'year';\n\n /**\n * The outer most element for the month view.\n */\n monthsContainer = `${this.dateContainer}-months`;\n\n /**\n * Applied to elements within the month container, e.g. January, February\n */\n month = 'month';\n\n /**\n * The outer most element for the calendar view.\n */\n daysContainer = `${this.dateContainer}-days`;\n\n /**\n * Applied to elements within the day container, e.g. 1, 2..31\n */\n day = 'day';\n\n /**\n * If display.calendarWeeks is enabled, a column displaying the week of year\n * is shown. This class is applied to each cell in that column.\n */\n calendarWeeks = 'cw';\n\n /**\n * Applied to the first row of the calendar view, e.g. Sunday, Monday\n */\n dayOfTheWeek = 'dow';\n\n /**\n * Applied to the current date on the calendar view.\n */\n today = 'today';\n\n /**\n * Applied to the locale's weekend dates on the calendar view, e.g. Sunday, Saturday\n */\n weekend = 'weekend';\n\n //#endregion\n\n //#region time element\n\n /**\n * The outer most element for all time related elements.\n */\n timeContainer = 'time-container';\n\n /**\n * Applied the separator columns between time elements, e.g. hour *:* minute *:* second\n */\n separator = 'separator';\n\n /**\n * The outer most element for the clock view.\n */\n clockContainer = `${this.timeContainer}-clock`;\n\n /**\n * The outer most element for the hours selection view.\n */\n hourContainer = `${this.timeContainer}-hour`;\n\n /**\n * The outer most element for the minutes selection view.\n */\n minuteContainer = `${this.timeContainer}-minute`;\n\n /**\n * The outer most element for the seconds selection view.\n */\n secondContainer = `${this.timeContainer}-second`;\n\n /**\n * Applied to each element in the hours selection view.\n */\n hour = 'hour';\n\n /**\n * Applied to each element in the minutes selection view.\n */\n minute = 'minute';\n\n /**\n * Applied to each element in the seconds selection view.\n */\n second = 'second';\n\n /**\n * Applied AM/PM toggle button.\n */\n toggleMeridiem = 'toggleMeridiem';\n\n //#endregion\n\n //#region collapse\n\n /**\n * Applied the element of the current view mode, e.g. calendar or clock.\n */\n show = 'show';\n\n /**\n * Applied to the currently showing view mode during a transition\n * between calendar and clock views\n */\n collapsing = 'td-collapsing';\n\n /**\n * Applied to the currently hidden view mode.\n */\n collapse = 'td-collapse';\n\n //#endregion\n\n /**\n * Applied to the widget when the option display.inline is enabled.\n */\n inline = 'inline';\n}\n\nexport default class Namespace {\n static NAME = NAME;\n // noinspection JSUnusedGlobalSymbols\n static version = version;\n static dataKey = dataKey;\n\n static events = new Events();\n\n static css = new Css();\n\n static errorMessages = new ErrorMessages();\n}\n","import { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options from './options';\n\nconst DefaultOptions: Options = {\n restrictions: {\n minDate: undefined,\n maxDate: undefined,\n disabledDates: [],\n enabledDates: [],\n daysOfWeekDisabled: [],\n disabledTimeIntervals: [],\n disabledHours: [],\n enabledHours: [],\n },\n display: {\n icons: {\n type: 'icons',\n time: 'fas fa-clock',\n date: 'fas fa-calendar',\n up: 'fas fa-arrow-up',\n down: 'fas fa-arrow-down',\n previous: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n today: 'fas fa-calendar-check',\n clear: 'fas fa-trash',\n close: 'fas fa-times',\n },\n sideBySide: false,\n calendarWeeks: false,\n viewMode: 'calendar',\n toolbarPlacement: 'bottom',\n keepOpen: false,\n buttons: {\n today: false,\n clear: false,\n close: false,\n },\n components: {\n calendar: true,\n date: true,\n month: true,\n year: true,\n decades: true,\n clock: true,\n hours: true,\n minutes: true,\n seconds: false,\n useTwentyfourHour: false,\n },\n inline: false,\n },\n stepping: 1,\n useCurrent: true,\n defaultDate: undefined,\n localization: {\n today: 'Go to today',\n clear: 'Clear selection',\n close: 'Close the picker',\n selectMonth: 'Select Month',\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n selectYear: 'Select Year',\n previousYear: 'Previous Year',\n nextYear: 'Next Year',\n selectDecade: 'Select Decade',\n previousDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n previousCentury: 'Previous Century',\n nextCentury: 'Next Century',\n pickHour: 'Pick Hour',\n incrementHour: 'Increment Hour',\n decrementHour: 'Decrement Hour',\n pickMinute: 'Pick Minute',\n incrementMinute: 'Increment Minute',\n decrementMinute: 'Decrement Minute',\n pickSecond: 'Pick Second',\n incrementSecond: 'Increment Second',\n decrementSecond: 'Decrement Second',\n toggleMeridiem: 'Toggle Meridiem',\n selectTime: 'Select Time',\n selectDate: 'Select Date',\n dayViewHeaderFormat: 'long',\n locale: 'default',\n },\n keepInvalid: false,\n debug: false,\n allowInputToggle: false,\n viewDate: new DateTime(),\n multipleDates: false,\n multipleDatesSeparator: '; ',\n promptTimeOnDateChange: false,\n promptTimeOnDateChangeTransitionDelay: 200,\n hooks: {\n inputParse: undefined,\n inputFormat: undefined,\n },\n};\n\nconst DatePickerModes: {\n name: string;\n className: string;\n unit: Unit;\n step: number;\n}[] = [\n {\n name: 'calendar',\n className: Namespace.css.daysContainer,\n unit: Unit.month,\n step: 1,\n },\n {\n name: 'months',\n className: Namespace.css.monthsContainer,\n unit: Unit.year,\n step: 1,\n },\n {\n name: 'years',\n className: Namespace.css.yearsContainer,\n unit: Unit.year,\n step: 10,\n },\n {\n name: 'decades',\n className: Namespace.css.decadesContainer,\n unit: Unit.year,\n step: 100,\n },\n];\n\nexport { DefaultOptions, DatePickerModes, Namespace };\n","import Namespace from '../namespace';\n\n/**\n * Provides a collapse functionality to the view changes\n */\nexport default class Collapse {\n private timeOut;\n\n /**\n * Flips the show/hide state of `target`\n * @param target html element to affect.\n */\n toggle(target: HTMLElement, callback = undefined) {\n if (target.classList.contains(Namespace.css.show)) {\n this.hide(target, callback);\n } else {\n this.show(target, callback);\n }\n }\n\n /**\n * If `target` is not already showing, then show after the animation.\n * @param target\n */\n show(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse, Namespace.css.show);\n target.style.height = '';\n this.timeOut = null;\n if (callback) callback();\n };\n\n target.style.height = '0';\n target.classList.remove(Namespace.css.collapse);\n target.classList.add(Namespace.css.collapsing);\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n target.style.height = `${target.scrollHeight}px`;\n }\n\n /**\n * If `target` is not already hidden, then hide after the animation.\n * @param target HTML Element\n */\n hide(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n !target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse);\n this.timeOut = null;\n };\n\n target.style.height = `${target.getBoundingClientRect()['height']}px`;\n\n const reflow = (element) => element.offsetHeight;\n\n reflow(target);\n\n target.classList.remove(Namespace.css.collapse, Namespace.css.show);\n target.classList.add(Namespace.css.collapsing);\n target.style.height = '';\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n }\n\n /**\n * Gets the transition duration from the `element` by getting css properties\n * `transition-duration` and `transition-delay`\n * @param element HTML Element\n */\n private getTransitionDurationFromElement = (element: HTMLElement) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } =\n window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) +\n Number.parseFloat(transitionDelay)) *\n 1000\n );\n };\n}\n","import { DatePickerModes } from './conts.js';\nimport { DateTime, Unit } from './datetime';\nimport { TempusDominus } from './tempus-dominus';\nimport Collapse from './display/collapse';\nimport Namespace from './namespace';\n\n/**\n *\n */\nexport default class Actions {\n private _context: TempusDominus;\n private collapse: Collapse;\n\n constructor(context: TempusDominus) {\n this._context = context;\n this.collapse = new Collapse();\n }\n\n /**\n * Performs the selected `action`. See ActionTypes\n * @param e This is normally a click event\n * @param action If not provided, then look for a [data-action]\n */\n do(e: any, action?: ActionTypes) {\n const currentTarget = e.currentTarget;\n if (currentTarget.classList.contains(Namespace.css.disabled)) return false;\n action = action || currentTarget.dataset.action;\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n /**\n * Common function to manipulate {@link lastPicked} by `unit`\n * @param unit\n * @param value Value to change by\n */\n const manipulateAndSet = (unit: Unit, value = 1) => {\n const newDate = lastPicked.manipulate(value, unit);\n if (this._context._validation.isValid(newDate, unit)) {\n this._context.dates._setValue(\n newDate,\n this._context.dates.lastPickedIndex\n );\n }\n };\n\n switch (action) {\n case ActionTypes.next:\n case ActionTypes.previous:\n const { unit, step } = DatePickerModes[this._context._currentViewMode];\n if (action === ActionTypes.next)\n this._context._viewDate.manipulate(step, unit);\n else this._context._viewDate.manipulate(step * -1, unit);\n this._context._viewUpdate(unit);\n\n this._context._display._showMode();\n break;\n case ActionTypes.pickerSwitch:\n this._context._display._showMode(1);\n this._context._viewUpdate(\n DatePickerModes[this._context._currentViewMode].unit\n );\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.selectMonth:\n case ActionTypes.selectYear:\n case ActionTypes.selectDecade:\n const value = +currentTarget.dataset.value;\n switch (action) {\n case ActionTypes.selectMonth:\n this._context._viewDate.month = value;\n this._context._viewUpdate(Unit.month);\n break;\n case ActionTypes.selectYear:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n case ActionTypes.selectDecade:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n }\n\n if (\n this._context._currentViewMode === this._context._minViewModeNumber\n ) {\n this._context.dates._setValue(\n this._context._viewDate,\n this._context.dates.lastPickedIndex\n );\n if (!this._context._options.display.inline) {\n this._context._display.hide();\n }\n } else {\n this._context._display._showMode(-1);\n }\n break;\n case ActionTypes.selectDay:\n const day = this._context._viewDate.clone;\n if (currentTarget.classList.contains(Namespace.css.old)) {\n day.manipulate(-1, Unit.month);\n }\n if (currentTarget.classList.contains(Namespace.css.new)) {\n day.manipulate(1, Unit.month);\n }\n\n day.date = +currentTarget.dataset.day;\n let index = 0;\n if (this._context._options.multipleDates) {\n index = this._context.dates.pickedIndex(day, Unit.date);\n if (index !== -1) {\n this._context.dates._setValue(null, index); //deselect multi-date\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex + 1\n );\n }\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex\n );\n }\n\n if (\n !this._context._display._hasTime &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline &&\n !this._context._options.multipleDates\n ) {\n this._context._display.hide();\n }\n break;\n case ActionTypes.selectHour:\n let hour = +currentTarget.dataset.value;\n if (\n lastPicked.hours >= 12 &&\n !this._context._options.display.components.useTwentyfourHour\n )\n hour += 12;\n lastPicked.hours = hour;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.minutes &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectMinute:\n lastPicked.minutes = +currentTarget.dataset.value;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.seconds &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectSecond:\n lastPicked.seconds = +currentTarget.innerText;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.incrementHours:\n manipulateAndSet(Unit.hours);\n break;\n case ActionTypes.incrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping);\n break;\n case ActionTypes.incrementSeconds:\n manipulateAndSet(Unit.seconds);\n break;\n case ActionTypes.decrementHours:\n manipulateAndSet(Unit.hours, -1);\n break;\n case ActionTypes.decrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping * -1);\n break;\n case ActionTypes.decrementSeconds:\n manipulateAndSet(Unit.seconds, -1);\n break;\n case ActionTypes.toggleMeridiem:\n manipulateAndSet(\n Unit.hours,\n this._context.dates.lastPicked.hours >= 12 ? -12 : 12\n );\n break;\n case ActionTypes.togglePicker:\n this._context._display.widget\n .querySelectorAll(\n `.${Namespace.css.dateContainer}, .${Namespace.css.timeContainer}`\n )\n .forEach((htmlElement: HTMLElement) =>\n this.collapse.toggle(htmlElement)\n );\n if (\n currentTarget.getAttribute('title') ===\n this._context._options.localization.selectDate\n ) {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectTime\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.time\n ).outerHTML;\n\n this._context._display._updateCalendarHeader();\n } else {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectDate\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.date\n ).outerHTML;\n this.do(e, ActionTypes.showClock);\n this._context._display._update('clock');\n }\n break;\n case ActionTypes.showClock:\n case ActionTypes.showHours:\n case ActionTypes.showMinutes:\n case ActionTypes.showSeconds:\n this._context._display.widget\n .querySelectorAll(`.${Namespace.css.timeContainer} > div`)\n .forEach(\n (htmlElement: HTMLElement) => (htmlElement.style.display = 'none')\n );\n\n let classToUse = '';\n switch (action) {\n case ActionTypes.showClock:\n classToUse = Namespace.css.clockContainer;\n this._context._display._update('clock');\n break;\n case ActionTypes.showHours:\n classToUse = Namespace.css.hourContainer;\n this._context._display._update(Unit.hours);\n break;\n case ActionTypes.showMinutes:\n classToUse = Namespace.css.minuteContainer;\n this._context._display._update(Unit.minutes);\n break;\n case ActionTypes.showSeconds:\n classToUse = Namespace.css.secondContainer;\n this._context._display._update(Unit.seconds);\n break;\n }\n\n ((\n this._context._display.widget.getElementsByClassName(classToUse)[0]\n )).style.display = 'grid';\n break;\n case ActionTypes.clear:\n this._context.dates._setValue(null);\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.close:\n this._context._display.hide();\n break;\n case ActionTypes.today:\n const today = new DateTime().setLocale(\n this._context._options.localization.locale\n );\n this._context._viewDate = today;\n if (this._context._validation.isValid(today, Unit.date))\n this._context.dates._setValue(\n today,\n this._context.dates.lastPickedIndex\n );\n break;\n }\n }\n}\n\nexport enum ActionTypes {\n next = 'next',\n previous = 'previous',\n pickerSwitch = 'pickerSwitch',\n selectMonth = 'selectMonth',\n selectYear = 'selectYear',\n selectDecade = 'selectDecade',\n selectDay = 'selectDay',\n selectHour = 'selectHour',\n selectMinute = 'selectMinute',\n selectSecond = 'selectSecond',\n incrementHours = 'incrementHours',\n incrementMinutes = 'incrementMinutes',\n incrementSeconds = 'incrementSeconds',\n decrementHours = 'decrementHours',\n decrementMinutes = 'decrementMinutes',\n decrementSeconds = 'decrementSeconds',\n toggleMeridiem = 'toggleMeridiem',\n togglePicker = 'togglePicker',\n showClock = 'showClock',\n showHours = 'showHours',\n showMinutes = 'showMinutes',\n showSeconds = 'showSeconds',\n clear = 'clear',\n close = 'close',\n today = 'today',\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `date`\r\n */\r\nexport default class DateDisplay {\r\n private _context: TempusDominus;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.daysContainer);\r\n\r\n container.append(...this._daysOfTheWeek());\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(Namespace.css.calendarWeeks, Namespace.css.noHighlight);\r\n container.appendChild(div);\r\n }\r\n\r\n for (let i = 0; i < 42; i++) {\r\n if (i !== 0 && i % 7 === 0) {\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n container.appendChild(div);\r\n }\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDay);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update(): void {\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.daysContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.daysContainer,\r\n this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n })\r\n );\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(-1, Unit.month),\r\n Unit.month\r\n )\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(1, Unit.month),\r\n Unit.month\r\n )\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.month)\r\n .startOf('weekDay')\r\n .manipulate(12, Unit.hours);\r\n\r\n container\r\n .querySelectorAll(\r\n `[data-action=\"${ActionTypes.selectDay}\"], .${Namespace.css.calendarWeeks}`\r\n )\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (\r\n this._context._options.display.calendarWeeks &&\r\n containerClone.classList.contains(Namespace.css.calendarWeeks)\r\n ) {\r\n if (containerClone.innerText === '#') return;\r\n containerClone.innerText = `${innerDate.week}`;\r\n return;\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.day);\r\n\r\n if (innerDate.isBefore(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.old);\r\n }\r\n if (innerDate.isAfter(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.new);\r\n }\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.date)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.date)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n if (innerDate.isSame(new DateTime(), Unit.date)) {\r\n classes.push(Namespace.css.today);\r\n }\r\n if (innerDate.weekDay === 0 || innerDate.weekDay === 6) {\r\n classes.push(Namespace.css.weekend);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`\r\n );\r\n containerClone.setAttribute(\r\n 'data-day',\r\n `${innerDate.date}`\r\n );\r\n containerClone.innerText = innerDate.format({ day: \"numeric\" });\r\n innerDate.manipulate(1, Unit.date);\r\n });\r\n }\r\n\r\n /***\r\n * Generates an html row that contains the days of the week.\r\n * @private\r\n */\r\n private _daysOfTheWeek(): HTMLElement[] {\r\n let innerDate = this._context._viewDate.clone\r\n .startOf('weekDay')\r\n .startOf(Unit.date);\r\n const row = [];\r\n document.createElement('div');\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = '#';\r\n row.push(htmlDivElement);\r\n }\r\n\r\n for (let i = 0; i < 7; i++) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.dayOfTheWeek,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = innerDate.format({ weekday: 'short' });\r\n innerDate.manipulate(1, Unit.date);\r\n row.push(htmlDivElement);\r\n }\r\n\r\n return row;\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `month`\n */\nexport default class MonthDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.monthsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMonth);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.monthsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.monthsContainer,\n this._context._viewDate.format({ year: 'numeric' })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.year),\n Unit.year\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.year),\n Unit.year\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone.startOf(Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMonth}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.month);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.month)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.month)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${index}`);\n containerClone.innerText = `${innerDate.format({ month: 'short' })}`;\n innerDate.manipulate(1, Unit.month);\n });\n }\n}\n","import { DateTime, DateTimeFormatOptions } from './datetime';\nimport Namespace from './namespace';\nimport { DefaultOptions } from './conts';\n\nexport default interface Options {\n restrictions: {\n minDate: DateTime;\n maxDate: DateTime;\n enabledDates: DateTime[];\n disabledDates: DateTime[];\n enabledHours: number[];\n disabledHours: number[];\n disabledTimeIntervals: { from: DateTime; to: DateTime }[];\n daysOfWeekDisabled: number[];\n };\n display: {\n toolbarPlacement: 'top' | 'bottom';\n components: {\n calendar: boolean;\n date: boolean;\n month: boolean;\n year: boolean;\n decades: boolean;\n clock: boolean;\n hours: boolean;\n minutes: boolean;\n seconds: boolean;\n useTwentyfourHour: boolean;\n };\n buttons: { today: boolean; close: boolean; clear: boolean };\n calendarWeeks: boolean;\n icons: {\n date: string;\n next: string;\n previous: string;\n today: string;\n clear: string;\n time: string;\n up: string;\n type: 'icons' | 'sprites';\n down: string;\n close: string;\n };\n viewMode: 'clock' | 'calendar' | 'months' | 'years' | 'decades';\n sideBySide: boolean;\n inline: boolean;\n keepOpen: boolean;\n };\n stepping: number;\n useCurrent: boolean;\n defaultDate: DateTime;\n localization: {\n nextMonth: string;\n pickHour: string;\n incrementSecond: string;\n nextDecade: string;\n selectDecade: string;\n dayViewHeaderFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n decrementHour: string;\n selectDate: string;\n incrementHour: string;\n previousCentury: string;\n decrementSecond: string;\n today: string;\n previousMonth: string;\n selectYear: string;\n pickSecond: string;\n nextCentury: string;\n close: string;\n incrementMinute: string;\n selectTime: string;\n clear: string;\n toggleMeridiem: string;\n selectMonth: string;\n decrementMinute: string;\n pickMinute: string;\n nextYear: string;\n previousYear: string;\n previousDecade: string;\n locale: string;\n };\n keepInvalid: boolean;\n debug: boolean;\n allowInputToggle: boolean;\n viewDate: DateTime;\n multipleDates: boolean;\n multipleDatesSeparator: string;\n promptTimeOnDateChange: boolean;\n promptTimeOnDateChangeTransitionDelay: number;\n hooks: {\n inputParse: (value: any) => DateTime;\n inputFormat: (date: DateTime) => string;\n };\n}\n\nexport class OptionConverter {\n static _mergeOptions(providedOptions: Options, mergeTo: Options): Options {\n const newOptions = {} as Options;\n let path = '';\n const ignoreProperties = ['inputParse', 'inputFormat'];\n\n const processKey = (key, value, providedType, defaultType) => {\n switch (key) {\n case 'defaultDate': {\n const dateTime = this._dateConversion(value, 'defaultDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'defaultDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'viewDate': {\n const dateTime = this._dateConversion(value, 'viewDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'viewDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'minDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.minDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.minDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'maxDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.maxDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.maxDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'disabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.disabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.disabledHours',\n 0,\n 23\n );\n return value;\n case 'enabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.enabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.enabledHours',\n 0,\n 23\n );\n return value;\n case 'daysOfWeekDisabled':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.daysOfWeekDisabled',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 6).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.daysOfWeekDisabled',\n 0,\n 6\n );\n return value;\n case 'enabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.enabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.disabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledTimeIntervals':\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n key,\n providedType,\n 'array of { from: DateTime|Date, to: DateTime|Date }'\n );\n }\n const valueObject = value as { from: any; to: any }[];\n for (let i = 0; i < valueObject.length; i++) {\n Object.keys(valueObject[i]).forEach((vk) => {\n const subOptionName = `${key}[${i}].${vk}`;\n let d = valueObject[i][vk];\n const dateTime = this._dateConversion(d, subOptionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n subOptionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n valueObject[i][vk] = dateTime;\n });\n }\n return valueObject;\n case 'toolbarPlacement':\n case 'type':\n case 'viewMode':\n case 'dayViewHeaderFormat':\n const optionValues = {\n toolbarPlacement: ['top', 'bottom', 'default'],\n type: ['icons', 'sprites'],\n viewMode: ['clock', 'calendar', 'months', 'years', 'decades'],\n dayViewHeaderFormat: [\n 'numeric',\n '2-digit',\n 'long',\n 'short',\n 'narrow',\n ],\n };\n const keyOptions = optionValues[key];\n if (!keyOptions.includes(value))\n Namespace.errorMessages.unexpectedOptionValue(\n path.substring(1),\n value,\n keyOptions\n );\n\n return value;\n case 'inputParse':\n case 'inputFormat':\n return value;\n default:\n switch (defaultType) {\n case 'boolean':\n return value === 'true' || value === true;\n case 'number':\n return +value;\n case 'string':\n return value.toString();\n case 'object':\n return {};\n case 'function':\n return value;\n default:\n Namespace.errorMessages.typeMismatch(\n path.substring(1),\n providedType,\n defaultType\n );\n }\n }\n };\n\n /**\n * The spread operator caused sub keys to be missing after merging.\n * This is to fix that issue by using spread on the child objects first.\n * Also handles complex options like disabledDates\n * @param provided An option from new providedOptions\n * @param mergeOption Default option to compare types against\n * @param copyTo Destination object. This was add to prevent reference copies\n */\n const spread = (provided, mergeOption, copyTo) => {\n const unsupportedOptions = Object.keys(provided).filter(\n (x) => !Object.keys(mergeOption).includes(x)\n );\n if (unsupportedOptions.length > 0) {\n const flattenedOptions = OptionConverter._flattenDefaultOptions;\n\n const errors = unsupportedOptions.map((x) => {\n let error = `\"${path.substring(1)}.${x}\" in not a known option.`;\n let didYouMean = flattenedOptions.find((y) => y.includes(x));\n if (didYouMean) error += `Did you mean \"${didYouMean}\"?`;\n return error;\n });\n Namespace.errorMessages.unexpectedOptions(errors);\n }\n Object.keys(mergeOption).forEach((key) => {\n const defaultOptionValue = mergeOption[key];\n let providedType = typeof provided[key];\n let defaultType = typeof defaultOptionValue;\n let value = provided[key];\n if (!provided.hasOwnProperty(key)) {\n if (\n defaultType === 'undefined' ||\n (value?.length === 0 && Array.isArray(defaultOptionValue))\n ) {\n copyTo[key] = defaultOptionValue;\n return;\n }\n provided[key] = defaultOptionValue;\n value = provided[key];\n }\n path += `.${key}`;\n copyTo[key] = processKey(key, value, providedType, defaultType);\n\n if (typeof defaultOptionValue !== 'object' || ignoreProperties.includes(key)) {\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n return;\n }\n if (!Array.isArray(provided[key])) {\n spread(provided[key], defaultOptionValue, copyTo[key]);\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n }\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n });\n };\n spread(providedOptions, mergeTo, newOptions);\n\n return newOptions;\n }\n\n static _dataToOptions(element, options: Options): Options {\n const eData = element.dataset;\n if (\n !eData ||\n Object.keys(eData).length === 0 ||\n eData.constructor !== DOMStringMap\n )\n return options;\n let dataOptions = {} as Options;\n\n // because dataset returns camelCase including the 'td' key the option\n // key won't align\n const objectToNormalized = (object) => {\n const lowered = {};\n Object.keys(object).forEach((x) => {\n lowered[x.toLowerCase()] = x;\n });\n\n return lowered;\n };\n\n const rabbitHole = (\n split: string[],\n index: number,\n optionSubgroup: {},\n value: any\n ) => {\n // first round = display { ... }\n const normalizedOptions = objectToNormalized(optionSubgroup);\n\n const keyOption = normalizedOptions[split[index].toLowerCase()];\n const internalObject = {};\n\n if (keyOption === undefined) return internalObject;\n\n // if this is another object, continue down the rabbit hole\n if (optionSubgroup[keyOption].constructor === Object) {\n index++;\n internalObject[keyOption] = rabbitHole(\n split,\n index,\n optionSubgroup[keyOption],\n value\n );\n } else {\n internalObject[keyOption] = value;\n }\n return internalObject;\n };\n const optionsLower = objectToNormalized(options);\n\n Object.keys(eData)\n .filter((x) => x.startsWith(Namespace.dataKey))\n .map((x) => x.substring(2))\n .forEach((key) => {\n let keyOption = optionsLower[key.toLowerCase()];\n\n // dataset merges dashes to camelCase... yay\n // i.e. key = display_components_seconds\n if (key.includes('_')) {\n // [display, components, seconds]\n const split = key.split('_');\n // display\n keyOption = optionsLower[split[0].toLowerCase()];\n if (\n keyOption !== undefined &&\n options[keyOption].constructor === Object\n ) {\n dataOptions[keyOption] = rabbitHole(\n split,\n 1,\n options[keyOption],\n eData[`td${key}`]\n );\n }\n }\n // or key = multipleDate\n else if (keyOption !== undefined) {\n dataOptions[keyOption] = eData[`td${key}`];\n }\n });\n\n return this._mergeOptions(dataOptions, options);\n }\n\n /**\n * Attempts to prove `d` is a DateTime or Date or can be converted into one.\n * @param d If a string will attempt creating a date from it.\n * @private\n */\n static _dateTypeCheck(d: any): DateTime | null {\n if (d.constructor.name === DateTime.name) return d;\n if (d.constructor.name === Date.name) {\n return DateTime.convert(d);\n }\n if (typeof d === typeof '') {\n const dateTime = new DateTime(d);\n if (JSON.stringify(dateTime) === 'null') {\n return null;\n }\n return dateTime;\n }\n return null;\n }\n\n /**\n * Type checks that `value` is an array of Date or DateTime\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckDateArray(optionName: string, value, providedType: string) {\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of DateTime or Date'\n );\n }\n for (let i = 0; i < value.length; i++) {\n let d = value[i];\n const dateTime = this._dateConversion(d, optionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n value[i] = dateTime;\n }\n }\n\n /**\n * Type checks that `value` is an array of numbers\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckNumberArray(\n optionName: string,\n value,\n providedType: string\n ) {\n if (!Array.isArray(value) || value.find((x) => typeof x !== typeof 0)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of numbers'\n );\n }\n return;\n }\n\n /**\n * Attempts to convert `d` to a DateTime object\n * @param d value to convert\n * @param optionName Provides text to error messages e.g. disabledDates\n */\n static _dateConversion(d: any, optionName: string) {\n if (typeof d === typeof '' && optionName !== 'input') {\n Namespace.errorMessages.dateString();\n }\n\n const converted = this._dateTypeCheck(d);\n\n if (!converted) {\n Namespace.errorMessages.failedToParseDate(\n optionName,\n d,\n optionName === 'input'\n );\n }\n return converted;\n }\n\n private static _flatback: string[];\n\n private static get _flattenDefaultOptions(): string[] {\n if (this._flatback) return this._flatback;\n const deepKeys = (t, pre = []) =>\n Array.isArray(t)\n ? []\n : Object(t) === t\n ? Object.entries(t).flatMap(([k, v]) => deepKeys(v, [...pre, k]))\n : pre.join('.');\n\n this._flatback = deepKeys(DefaultOptions);\n\n return this._flatback;\n }\n\n /**\n * Some options conflict like min/max date. Verify that these kinds of options\n * are set correctly.\n * @param config\n */\n static _validateConflcits(config: Options) {\n if (config.restrictions.minDate && config.restrictions.maxDate) {\n if (config.restrictions.minDate.isAfter(config.restrictions.maxDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'minDate is after maxDate'\n );\n }\n\n if (config.restrictions.maxDate.isBefore(config.restrictions.minDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'maxDate is before minDate'\n );\n }\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport { ChangeEvent, FailEvent } from './event-types';\nimport { OptionConverter } from './options';\n\nexport default class Dates {\n private _dates: DateTime[] = [];\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Returns the array of selected dates\n */\n get picked(): DateTime[] {\n return this._dates;\n }\n\n /**\n * Returns the last picked value.\n */\n get lastPicked(): DateTime {\n return this._dates[this.lastPickedIndex];\n }\n\n /**\n * Returns the length of picked dates -1 or 0 if none are selected.\n */\n get lastPickedIndex(): number {\n if (this._dates.length === 0) return 0;\n return this._dates.length - 1;\n }\n\n /**\n * Adds a new DateTime to selected dates array\n * @param date\n */\n add(date: DateTime): void {\n this._dates.push(date);\n }\n\n /**\n * Tries to convert the provided value to a DateTime object.\n * If value is null|undefined then clear the value of the provided index (or 0).\n * @param value Value to convert or null|undefined\n * @param index When using multidates this is the index in the array\n * @param from Used in the warning message, useful for debugging.\n */\n set(value: any, index?: number, from: string = 'date.set') {\n if (!value) this._setValue(value, index);\n const converted = OptionConverter._dateConversion(value, from);\n if (converted) this._setValue(converted, index);\n }\n\n /**\n * Returns true if the `targetDate` is part of the selected dates array.\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n isPicked(targetDate: DateTime, unit?: Unit): boolean {\n if (!unit) return this._dates.find((x) => x === targetDate) !== undefined;\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return (\n this._dates\n .map((x) => x.format(format))\n .find((x) => x === innerDateFormatted) !== undefined\n );\n }\n\n /**\n * Returns the index at which `targetDate` is in the array.\n * This is used for updating or removing a date when multi-date is used\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n pickedIndex(targetDate: DateTime, unit?: Unit): number {\n if (!unit) return this._dates.indexOf(targetDate);\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return this._dates.map((x) => x.format(format)).indexOf(innerDateFormatted);\n }\n\n /**\n * Clears all selected dates.\n */\n clear() {\n this._context._unset = true;\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate: this.lastPicked,\n isClear: true,\n isValid: true,\n } as ChangeEvent);\n this._dates = [];\n }\n\n /**\n * Find the \"book end\" years given a `year` and a `factor`\n * @param factor e.g. 100 for decades\n * @param year e.g. 2021\n */\n static getStartEndYear(\n factor: number,\n year: number\n ): [number, number, number] {\n const step = factor / 10,\n startYear = Math.floor(year / factor) * factor,\n endYear = startYear + step * 9,\n focusValue = Math.floor(year / step) * step;\n return [startYear, endYear, focusValue];\n }\n\n /**\n * Do not use direectly. Attempts to either clear or set the `target` date at `index`.\n * If the `target` is null then the date will be cleared.\n * If multi-date is being used then it will be removed from the array.\n * If `target` is valid and multi-date is used then if `index` is\n * provided the date at that index will be replaced, otherwise it is appended.\n * @param target\n * @param index\n */\n _setValue(target?: DateTime, index?: number): void {\n const noIndex = typeof index === 'undefined',\n isClear = !target && noIndex;\n let oldDate = this._context._unset ? null : this._dates[index];\n if (!oldDate && !this._context._unset && noIndex && isClear) {\n oldDate = this.lastPicked;\n }\n\n if (target && oldDate?.isSame(target)) return;\n\n const updateInput = () => {\n if (!this._context._input) return;\n\n let newValue = this._context._options.hooks.inputFormat(target);\n if (this._context._options.multipleDates) {\n newValue = this._dates\n .map((d) => this._context._options.hooks.inputFormat(d))\n .join(this._context._options.multipleDatesSeparator);\n }\n if (this._context._input.value != newValue)\n this._context._input.value = newValue;\n };\n\n // case of calling setValue(null)\n if (!target) {\n if (\n !this._context._options.multipleDates ||\n this._dates.length === 1 ||\n isClear\n ) {\n this._context._unset = true;\n this._dates = [];\n } else {\n this._dates.splice(index, 1);\n }\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n\n updateInput();\n this._context._display._update('all');\n return;\n }\n\n index = index || 0;\n target = target.clone;\n\n // minute stepping is being used, force the minute to the closest value\n if (this._context._options.stepping !== 1) {\n target.minutes =\n Math.round(target.minutes / this._context._options.stepping) *\n this._context._options.stepping;\n target.seconds = 0;\n }\n\n if (this._context._validation.isValid(target)) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._unset = false;\n this._context._display._update('all');\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n return;\n }\n\n if (this._context._options.keepInvalid) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: false,\n } as ChangeEvent);\n }\n this._context._triggerEvent({\n type: Namespace.events.error,\n reason: Namespace.errorMessages.failedToSetInvalidDate,\n date: target,\n oldDate,\n } as FailEvent);\n }\n\n /**\n * Returns a format object based on the granularity of `unit`\n * @param unit\n */\n static getFormatByUnit(unit: Unit): object {\n switch (unit) {\n case 'date':\n return { dateStyle: 'short' };\n case 'month':\n return {\n month: 'numeric',\n year: 'numeric',\n };\n case 'year':\n return { year: 'numeric' };\n }\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\nimport Dates from '../../dates';\r\n\r\n/**\r\n * Creates and updates the grid for `year`\r\n */\r\nexport default class YearDisplay {\r\n private _context: TempusDominus;\r\n private _startYear: DateTime;\r\n private _endYear: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.yearsContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectYear);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 10,\r\n this._context._viewDate.year\r\n );\r\n this._startYear = this._context._viewDate.clone.manipulate(-1, Unit.year);\r\n this._endYear = this._context._viewDate.clone.manipulate(10, Unit.year);\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.yearsContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.yearsContainer,\r\n `${this._startYear.format({ year: 'numeric' })}-${this._endYear.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startYear, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endYear, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.year)\r\n .manipulate(-1, Unit.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectYear}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n let classes = [];\r\n classes.push(Namespace.css.year);\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.year)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.year)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute('data-value', `${innerDate.year}`);\r\n containerClone.innerText = innerDate.format({ year: \"numeric\" });\r\n\r\n innerDate.manipulate(1, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport Dates from '../../dates';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `seconds`\r\n */\r\nexport default class DecadeDisplay {\r\n private _context: TempusDominus;\r\n private _startDecade: DateTime;\r\n private _endDecade: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker() {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.decadesContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDecade);\r\n container.appendChild(div);\r\n }\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 100,\r\n this._context._viewDate.year\r\n );\r\n this._startDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._startDecade.year = start;\r\n this._endDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._endDecade.year = end;\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.decadesContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.decadesContainer,\r\n `${this._startDecade.format({ year: 'numeric' })}-${this._endDecade.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startDecade, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endDecade, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n const pickedYears = this._context.dates.picked.map((x) => x.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectDecade}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (index === 0) {\r\n containerClone.classList.add(Namespace.css.old);\r\n if (this._startDecade.year - 10 < 0) {\r\n containerClone.textContent = ' ';\r\n previous.classList.add(Namespace.css.disabled);\r\n containerClone.classList.add(Namespace.css.disabled);\r\n containerClone.setAttribute('data-value', ``);\r\n return;\r\n } else {\r\n containerClone.innerText = this._startDecade.clone.manipulate(-10, Unit.year).format({ year: 'numeric' });\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n return;\r\n }\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.decade);\r\n const startDecadeYear = this._startDecade.year;\r\n const endDecadeYear = this._startDecade.year + 9;\r\n\r\n if (\r\n !this._context._unset &&\r\n pickedYears.filter((x) => x >= startDecadeYear && x <= endDecadeYear)\r\n .length > 0\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n containerClone.innerText = `${this._startDecade.format({ year: 'numeric' })}`;\r\n\r\n this._startDecade.manipulate(10, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates the clock display\n */\nexport default class TimeDisplay {\n private _context: TempusDominus;\n private _gridColumns = '';\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the clock display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.clockContainer);\n\n container.append(...this._grid());\n\n return container;\n }\n\n /**\n * Populates the various elements with in the clock display\n * like the current hour and if the manipulation icons are enabled.\n * @private\n */\n _update(): void {\n const timesDiv = (\n this._context._display.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0]\n );\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n timesDiv\n .querySelectorAll('.disabled')\n .forEach((element) => element.classList.remove(Namespace.css.disabled));\n\n if (this._context._options.display.components.hours) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.hours}]`\n ).innerText = this._context._options.display.components.useTwentyfourHour\n ? lastPicked.hoursFormatted\n : lastPicked.twelveHoursFormatted;\n }\n\n if (this._context._options.display.components.minutes) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.minutes}]`\n ).innerText = lastPicked.minutesFormatted;\n }\n\n if (this._context._options.display.components.seconds) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.seconds}]`\n ).innerText = lastPicked.secondsFormatted;\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n const toggle = timesDiv.querySelector(\n `[data-action=${ActionTypes.toggleMeridiem}]`\n );\n\n toggle.innerText = lastPicked.meridiem();\n\n if (\n !this._context._validation.isValid(\n lastPicked.clone.manipulate(\n lastPicked.hours >= 12 ? -12 : 12,\n Unit.hours\n )\n )\n ) {\n toggle.classList.add(Namespace.css.disabled);\n } else {\n toggle.classList.remove(Namespace.css.disabled);\n }\n }\n\n timesDiv.style.gridTemplateAreas = `\"${this._gridColumns}\"`;\n }\n\n /**\n * Creates the table for the clock display depending on what options are selected.\n * @private\n */\n private _grid(): HTMLElement[] {\n this._gridColumns = '';\n const top = [],\n middle = [],\n bottom = [],\n separator = document.createElement('div'),\n upIcon = this._context._display._iconTag(\n this._context._options.display.icons.up\n ),\n downIcon = this._context._display._iconTag(\n this._context._options.display.icons.down\n );\n\n separator.classList.add(Namespace.css.separator, Namespace.css.noHighlight);\n const separatorColon = separator.cloneNode(true);\n separatorColon.innerHTML = ':';\n\n const getSeparator = (colon = false): HTMLElement => {\n return colon\n ? separatorColon.cloneNode(true)\n : separator.cloneNode(true);\n };\n\n if (this._context._options.display.components.hours) {\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.incrementHours);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickHour\n );\n divElement.setAttribute('data-action', ActionTypes.showHours);\n divElement.setAttribute('data-time-component', Unit.hours);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.decrementHours);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n this._gridColumns += 'a';\n }\n\n if (this._context._options.display.components.minutes) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.hours) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.incrementMinutes);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickMinute\n );\n divElement.setAttribute('data-action', ActionTypes.showMinutes);\n divElement.setAttribute('data-time-component', Unit.minutes);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.decrementMinutes);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (this._context._options.display.components.seconds) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.minutes) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.incrementSeconds);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickSecond\n );\n divElement.setAttribute('data-action', ActionTypes.showSeconds);\n divElement.setAttribute('data-time-component', Unit.seconds);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.decrementSeconds);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n this._gridColumns += ' a';\n let divElement = getSeparator();\n top.push(divElement);\n\n let button = document.createElement('button');\n button.setAttribute(\n 'title',\n this._context._options.localization.toggleMeridiem\n );\n button.setAttribute('data-action', ActionTypes.toggleMeridiem);\n button.setAttribute('tabindex', '-1');\n button.classList.add(Namespace.css.toggleMeridiem);\n\n divElement = document.createElement('div');\n divElement.classList.add(Namespace.css.noHighlight);\n divElement.appendChild(button);\n middle.push(divElement);\n\n divElement = getSeparator();\n bottom.push(divElement);\n }\n\n this._gridColumns = this._gridColumns.trim();\n\n return [...top, ...middle, ...bottom];\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `hours`\n */\nexport default class HourDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.hourContainer);\n\n for (\n let i = 0;\n i <\n (this._context._options.display.components.useTwentyfourHour ? 24 : 12);\n i++\n ) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectHour);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.hourContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.date);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectHour}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.hour);\n\n if (!this._context._validation.isValid(innerDate, Unit.hours)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.hours}`);\n containerClone.innerText = this._context._options.display.components\n .useTwentyfourHour\n ? innerDate.hoursFormatted\n : innerDate.twelveHoursFormatted;\n innerDate.manipulate(1, Unit.hours);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `minutes`\n */\nexport default class MinuteDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.minuteContainer);\n\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n for (let i = 0; i < 60 / step; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMinute);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.minuteContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.hours);\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMinute}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.minute);\n\n if (!this._context._validation.isValid(innerDate, Unit.minutes)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.minutes}`);\n containerClone.innerText = innerDate.minutesFormatted;\n innerDate.manipulate(step, Unit.minutes);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class secondDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.secondContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectSecond);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.secondContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.minutes);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectSecond}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.second);\n\n if (!this._context._validation.isValid(innerDate, Unit.seconds)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.seconds}`);\n containerClone.innerText = innerDate.secondsFormatted;\n innerDate.manipulate(5, Unit.seconds);\n });\n }\n}\n","import DateDisplay from './calendar/date-display';\r\nimport MonthDisplay from './calendar/month-display';\r\nimport YearDisplay from './calendar/year-display';\r\nimport DecadeDisplay from './calendar/decade-display';\r\nimport TimeDisplay from './time/time-display';\r\nimport HourDisplay from './time/hour-display';\r\nimport MinuteDisplay from './time/minute-display';\r\nimport SecondDisplay from './time/second-display';\r\nimport { DateTime, Unit } from '../datetime';\r\nimport { DatePickerModes } from '../conts';\r\nimport { TempusDominus } from '../tempus-dominus';\r\nimport { ActionTypes } from '../actions';\r\nimport { createPopper } from '@popperjs/core';\r\nimport Namespace from '../namespace';\r\nimport { HideEvent } from '../event-types';\r\n\r\n/**\r\n * Main class for all things display related.\r\n */\r\nexport default class Display {\r\n private _context: TempusDominus;\r\n private _dateDisplay: DateDisplay;\r\n private _monthDisplay: MonthDisplay;\r\n private _yearDisplay: YearDisplay;\r\n private _decadeDisplay: DecadeDisplay;\r\n private _timeDisplay: TimeDisplay;\r\n private _widget: HTMLElement;\r\n private _hourDisplay: HourDisplay;\r\n private _minuteDisplay: MinuteDisplay;\r\n private _secondDisplay: SecondDisplay;\r\n private _popperInstance: any;\r\n private _isVisible = false;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this._dateDisplay = new DateDisplay(context);\r\n this._monthDisplay = new MonthDisplay(context);\r\n this._yearDisplay = new YearDisplay(context);\r\n this._decadeDisplay = new DecadeDisplay(context);\r\n this._timeDisplay = new TimeDisplay(context);\r\n this._hourDisplay = new HourDisplay(context);\r\n this._minuteDisplay = new MinuteDisplay(context);\r\n this._secondDisplay = new SecondDisplay(context);\r\n\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Returns the widget body or undefined\r\n * @private\r\n */\r\n get widget(): HTMLElement | undefined {\r\n return this._widget;\r\n }\r\n\r\n /**\r\n * Returns this visible state of the picker (shown)\r\n */\r\n get isVisible() {\r\n return this._isVisible;\r\n }\r\n\r\n /**\r\n * Updates the table for a particular unit. Used when an option as changed or\r\n * whenever the class list might need to be refreshed.\r\n * @param unit\r\n * @private\r\n */\r\n _update(unit: Unit | 'clock' | 'calendar' | 'all'): void {\r\n if (!this.widget) return;\r\n //todo do I want some kind of error catching or other guards here?\r\n switch (unit) {\r\n case Unit.seconds:\r\n this._secondDisplay._update();\r\n break;\r\n case Unit.minutes:\r\n this._minuteDisplay._update();\r\n break;\r\n case Unit.hours:\r\n this._hourDisplay._update();\r\n break;\r\n case Unit.date:\r\n this._dateDisplay._update();\r\n break;\r\n case Unit.month:\r\n this._monthDisplay._update();\r\n break;\r\n case Unit.year:\r\n this._yearDisplay._update();\r\n break;\r\n case 'clock':\r\n this._timeDisplay._update();\r\n this._update(Unit.hours);\r\n this._update(Unit.minutes);\r\n this._update(Unit.seconds);\r\n break;\r\n case 'calendar':\r\n this._update(Unit.date);\r\n this._update(Unit.year);\r\n this._update(Unit.month);\r\n this._decadeDisplay._update();\r\n this._updateCalendarHeader();\r\n break;\r\n case 'all':\r\n if (this._hasTime) {\r\n this._update('clock');\r\n }\r\n if (this._hasDate) {\r\n this._update('calendar');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Shows the picker and creates a Popper instance if needed.\r\n * Add document click event to hide when clicking outside the picker.\r\n * @fires Events#show\r\n */\r\n show(): void {\r\n if (this.widget == undefined) {\r\n if (\r\n this._context._options.useCurrent &&\r\n !this._context._options.defaultDate &&\r\n !this._context._input?.value\r\n ) {\r\n //todo in the td4 branch a pr changed this to allow granularity\r\n const date = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n if (!this._context._options.keepInvalid) {\r\n let tries = 0;\r\n let direction = 1;\r\n if (this._context._options.restrictions.maxDate?.isBefore(date)) {\r\n direction = -1;\r\n }\r\n while (!this._context._validation.isValid(date)) {\r\n date.manipulate(direction, Unit.date);\r\n if (tries > 31) break;\r\n tries++;\r\n }\r\n }\r\n this._context.dates._setValue(date);\r\n }\r\n\r\n if (this._context._options.defaultDate) {\r\n this._context.dates._setValue(this._context._options.defaultDate);\r\n }\r\n\r\n this._buildWidget();\r\n if (this._hasDate) {\r\n this._showMode();\r\n }\r\n\r\n if (!this._context._options.display.inline) {\r\n document.body.appendChild(this.widget);\r\n\r\n this._popperInstance = createPopper(\r\n this._context._element,\r\n this.widget,\r\n {\r\n modifiers: [\r\n /* {\r\n name: 'offset',\r\n options: {\r\n offset: [2, 8],\r\n },\r\n },*/\r\n { name: 'eventListeners', enabled: true },\r\n ],\r\n placement: 'bottom-start',\r\n }\r\n );\r\n } else {\r\n this._context._element.appendChild(this.widget);\r\n }\r\n\r\n if (this._context._options.display.viewMode == 'clock') {\r\n this._context._action.do(\r\n {\r\n currentTarget: this.widget.querySelector(\r\n `.${Namespace.css.timeContainer}`\r\n ),\r\n },\r\n ActionTypes.showClock\r\n );\r\n }\r\n\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.addEventListener('click', this._actionsClickEvent)\r\n );\r\n\r\n // show the clock when using sideBySide\r\n if (this._context._options.display.sideBySide) {\r\n this._timeDisplay._update();\r\n (\r\n this.widget.getElementsByClassName(\r\n Namespace.css.clockContainer\r\n )[0] as HTMLElement\r\n ).style.display = 'grid';\r\n }\r\n }\r\n\r\n this.widget.classList.add(Namespace.css.show);\r\n if (!this._context._options.display.inline) {\r\n this._popperInstance.update();\r\n document.addEventListener('click', this._documentClickEvent);\r\n }\r\n this._context._triggerEvent({ type: Namespace.events.show });\r\n this._isVisible = true;\r\n }\r\n\r\n /**\r\n * Changes the calendar view mode. E.g. month <-> year\r\n * @param direction -/+ number to move currentViewMode\r\n * @private\r\n */\r\n _showMode(direction?: number): void {\r\n if (!this.widget) {\r\n return;\r\n }\r\n if (direction) {\r\n const max = Math.max(\r\n this._context._minViewModeNumber,\r\n Math.min(3, this._context._currentViewMode + direction)\r\n );\r\n if (this._context._currentViewMode == max) return;\r\n this._context._currentViewMode = max;\r\n }\r\n\r\n this.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div:not(.${Namespace.css.clockContainer})`\r\n )\r\n .forEach((e: HTMLElement) => (e.style.display = 'none'));\r\n\r\n const datePickerMode = DatePickerModes[this._context._currentViewMode];\r\n let picker: HTMLElement = this.widget.querySelector(\r\n `.${datePickerMode.className}`\r\n );\r\n\r\n switch (datePickerMode.className) {\r\n case Namespace.css.decadesContainer:\r\n this._decadeDisplay._update();\r\n break;\r\n case Namespace.css.yearsContainer:\r\n this._yearDisplay._update();\r\n break;\r\n case Namespace.css.monthsContainer:\r\n this._monthDisplay._update();\r\n break;\r\n case Namespace.css.daysContainer:\r\n this._dateDisplay._update();\r\n break;\r\n }\r\n\r\n picker.style.display = 'grid';\r\n this._updateCalendarHeader();\r\n }\r\n\r\n _updateCalendarHeader() {\r\n const showing = [\r\n ...this.widget.querySelector(\r\n `.${Namespace.css.dateContainer} div[style*=\"display: grid\"]`\r\n ).classList,\r\n ].find((x) => x.startsWith(Namespace.css.dateContainer));\r\n\r\n const [previous, switcher, next] = this._context._display.widget\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switch (showing) {\r\n case Namespace.css.decadesContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousCentury\r\n );\r\n switcher.setAttribute('title', '');\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextCentury\r\n );\r\n break;\r\n case Namespace.css.yearsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousDecade\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDecade\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextDecade\r\n );\r\n break;\r\n case Namespace.css.monthsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousYear\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectYear\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextYear\r\n );\r\n break;\r\n case Namespace.css.daysContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousMonth\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectMonth\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextMonth\r\n );\r\n switcher.innerText = this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n });\r\n break;\r\n }\r\n switcher.innerText = switcher.getAttribute(showing);\r\n }\r\n\r\n /**\r\n * Hides the picker if needed.\r\n * Remove document click event to hide when clicking outside the picker.\r\n * @fires Events#hide\r\n */\r\n hide(): void {\r\n if (!this.widget || !this._isVisible) return;\r\n\r\n this.widget.classList.remove(Namespace.css.show);\r\n\r\n if (this._isVisible) {\r\n this._context._triggerEvent({\r\n type: Namespace.events.hide,\r\n date: this._context._unset\r\n ? null\r\n : this._context.dates.lastPicked\r\n ? this._context.dates.lastPicked.clone\r\n : void 0,\r\n } as HideEvent);\r\n this._isVisible = false;\r\n }\r\n\r\n document.removeEventListener('click', this._documentClickEvent);\r\n }\r\n\r\n /**\r\n * Toggles the picker's open state. Fires a show/hide event depending.\r\n */\r\n toggle() {\r\n return this._isVisible ? this.hide() : this.show();\r\n }\r\n\r\n /**\r\n * Removes document and data-action click listener and reset the widget\r\n * @private\r\n */\r\n _dispose() {\r\n document.removeEventListener('click', this._documentClickEvent);\r\n if (!this.widget) return;\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.removeEventListener('click', this._actionsClickEvent)\r\n );\r\n this.widget.parentNode.removeChild(this.widget);\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Builds the widgets html template.\r\n * @private\r\n */\r\n private _buildWidget(): HTMLElement {\r\n const template = document.createElement('div');\r\n template.classList.add(Namespace.css.widget);\r\n\r\n const dateView = document.createElement('div');\r\n dateView.classList.add(Namespace.css.dateContainer);\r\n dateView.append(\r\n this._headTemplate,\r\n this._decadeDisplay._picker,\r\n this._yearDisplay._picker,\r\n this._monthDisplay._picker,\r\n this._dateDisplay._picker\r\n );\r\n\r\n const timeView = document.createElement('div');\r\n timeView.classList.add(Namespace.css.timeContainer);\r\n timeView.appendChild(this._timeDisplay._picker);\r\n timeView.appendChild(this._hourDisplay._picker);\r\n timeView.appendChild(this._minuteDisplay._picker);\r\n timeView.appendChild(this._secondDisplay._picker);\r\n\r\n const toolbar = document.createElement('div');\r\n toolbar.classList.add(Namespace.css.toolbar);\r\n toolbar.append(...this._toolbar);\r\n\r\n if (this._context._options.display.inline) {\r\n template.classList.add(Namespace.css.inline);\r\n }\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n template.classList.add('calendarWeeks');\r\n }\r\n\r\n if (\r\n this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n template.classList.add(Namespace.css.sideBySide);\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n const row = document.createElement('div');\r\n row.classList.add('td-row');\r\n dateView.classList.add('td-half');\r\n timeView.classList.add('td-half');\r\n\r\n row.appendChild(dateView);\r\n row.appendChild(timeView);\r\n template.appendChild(row);\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n this._widget = template;\r\n return;\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n if (this._hasDate) {\r\n if (this._hasTime) {\r\n dateView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode !== 'clock')\r\n dateView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(dateView);\r\n }\r\n\r\n if (this._hasTime) {\r\n if (this._hasDate) {\r\n timeView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode === 'clock')\r\n timeView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(timeView);\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n const arrow = document.createElement('div');\r\n arrow.classList.add('arrow');\r\n arrow.setAttribute('data-popper-arrow', '');\r\n template.appendChild(arrow);\r\n\r\n this._widget = template;\r\n }\r\n\r\n /**\r\n * Returns true if the hours, minutes, or seconds component is turned on\r\n */\r\n get _hasTime(): boolean {\r\n return (\r\n this._context._options.display.components.clock &&\r\n (this._context._options.display.components.hours ||\r\n this._context._options.display.components.minutes ||\r\n this._context._options.display.components.seconds)\r\n );\r\n }\r\n\r\n /**\r\n * Returns true if the year, month, or date component is turned on\r\n */\r\n get _hasDate(): boolean {\r\n return (\r\n this._context._options.display.components.calendar &&\r\n (this._context._options.display.components.year ||\r\n this._context._options.display.components.month ||\r\n this._context._options.display.components.date)\r\n );\r\n }\r\n\r\n /**\r\n * Get the toolbar html based on options like buttons.today\r\n * @private\r\n */\r\n get _toolbar(): HTMLElement[] {\r\n const toolbar = [];\r\n\r\n if (this._context._options.display.buttons.today) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.today);\r\n div.setAttribute('title', this._context._options.localization.today);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.today)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (\r\n !this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n let title, icon;\r\n if (this._context._options.display.viewMode === 'clock') {\r\n title = this._context._options.localization.selectDate;\r\n icon = this._context._options.display.icons.date;\r\n } else {\r\n title = this._context._options.localization.selectTime;\r\n icon = this._context._options.display.icons.time;\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.togglePicker);\r\n div.setAttribute('title', title);\r\n\r\n div.appendChild(this._iconTag(icon));\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.clear) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.clear);\r\n div.setAttribute('title', this._context._options.localization.clear);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.clear)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.close) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.close);\r\n div.setAttribute('title', this._context._options.localization.close);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.close)\r\n );\r\n toolbar.push(div);\r\n }\r\n\r\n return toolbar;\r\n }\r\n\r\n /***\r\n * Builds the base header template with next and previous icons\r\n * @private\r\n */\r\n get _headTemplate(): HTMLElement {\r\n const calendarHeader = document.createElement('div');\r\n calendarHeader.classList.add(Namespace.css.calendarHeader);\r\n\r\n const previous = document.createElement('div');\r\n previous.classList.add(Namespace.css.previous);\r\n previous.setAttribute('data-action', ActionTypes.previous);\r\n previous.appendChild(\r\n this._iconTag(this._context._options.display.icons.previous)\r\n );\r\n\r\n const switcher = document.createElement('div');\r\n switcher.classList.add(Namespace.css.switch);\r\n switcher.setAttribute('data-action', ActionTypes.pickerSwitch);\r\n\r\n const next = document.createElement('div');\r\n next.classList.add(Namespace.css.next);\r\n next.setAttribute('data-action', ActionTypes.next);\r\n next.appendChild(this._iconTag(this._context._options.display.icons.next));\r\n\r\n calendarHeader.append(previous, switcher, next);\r\n return calendarHeader;\r\n }\r\n\r\n /**\r\n * Builds an icon tag as either an ``\r\n * or with icons.type is `sprites` then an svg tag instead\r\n * @param iconClass\r\n * @private\r\n */\r\n _iconTag(iconClass: string): HTMLElement {\r\n if (this._context._options.display.icons.type === 'sprites') {\r\n const svg = document.createElement('svg');\r\n svg.innerHTML = ``;\r\n return svg;\r\n }\r\n const icon = document.createElement('i');\r\n DOMTokenList.prototype.add.apply(icon.classList, iconClass.split(' '));\r\n return icon;\r\n }\r\n\r\n /**\r\n * A document click event to hide the widget if click is outside\r\n * @private\r\n * @param e MouseEvent\r\n */\r\n private _documentClickEvent = (e: MouseEvent) => {\r\n if (this._context._options.display.keepOpen ||\r\n this._context._options.debug ||\r\n (window as any).debug) return;\r\n\r\n if (\r\n this._isVisible &&\r\n !e.composedPath().includes(this.widget) && // click inside the widget\r\n !e.composedPath()?.includes(this._context._element) // click on the element\r\n ) {\r\n this.hide();\r\n }\r\n };\r\n\r\n /**\r\n * Click event for any action like selecting a date\r\n * @param e MouseEvent\r\n * @private\r\n */\r\n private _actionsClickEvent = (e: MouseEvent) => {\r\n this._context._action.do(e);\r\n };\r\n\r\n /**\r\n * Causes the widget to get rebuilt on next show. If the picker is already open\r\n * then hide and reshow it.\r\n * @private\r\n */\r\n _rebuild() {\r\n const wasVisible = this._isVisible;\r\n if (wasVisible) this.hide();\r\n this._dispose();\r\n if (wasVisible) {\r\n this.show();\r\n }\r\n }\r\n}\r\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Dates from './dates';\n\n/**\n * Main class for date validation rules based on the options provided.\n */\nexport default class Validation {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Checks to see if the target date is valid based on the rules provided in the options.\n * Granularity can be provide to chek portions of the date instead of the whole.\n * @param targetDate\n * @param granularity\n */\n isValid(targetDate: DateTime, granularity?: Unit): boolean {\n if (\n this._context._options.restrictions.disabledDates.length > 0 &&\n this._isInDisabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledDates.length > 0 &&\n !this._isInEnabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.daysOfWeekDisabled?.length > 0 &&\n this._context._options.restrictions.daysOfWeekDisabled.indexOf(\n targetDate.weekDay\n ) !== -1\n ) {\n return false;\n }\n\n if (\n this._context._options.restrictions.minDate &&\n targetDate.isBefore(\n this._context._options.restrictions.minDate,\n granularity\n )\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.maxDate &&\n targetDate.isAfter(\n this._context._options.restrictions.maxDate,\n granularity\n )\n ) {\n return false;\n }\n\n if (\n granularity === Unit.hours ||\n granularity === Unit.minutes ||\n granularity === Unit.seconds\n ) {\n if (\n this._context._options.restrictions.disabledHours.length > 0 &&\n this._isInDisabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledHours.length > 0 &&\n !this._isInEnabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.disabledTimeIntervals.length > 0\n ) {\n for (\n let i = 0;\n i < this._context._options.restrictions.disabledTimeIntervals.length;\n i++\n ) {\n if (\n targetDate.isBetween(\n this._context._options.restrictions.disabledTimeIntervals[i].from,\n this._context._options.restrictions.disabledTimeIntervals[i].to\n )\n )\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Checks to see if the disabledDates option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInDisabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledDates ||\n this._context._options.restrictions.disabledDates.length === 0\n )\n return false;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.disabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the enabledDates option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInEnabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledDates ||\n this._context._options.restrictions.enabledDates.length === 0\n )\n return true;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.enabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the disabledHours option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInDisabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledHours ||\n this._context._options.restrictions.disabledHours.length === 0\n )\n return false;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.disabledHours.find(\n (x) => x === formattedDate\n );\n }\n\n /**\n * Checks to see if the enabledHours option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInEnabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledHours ||\n this._context._options.restrictions.enabledHours.length === 0\n )\n return true;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.enabledHours.find(\n (x) => x === formattedDate\n );\n }\n}\n","import Display from './display/index';\nimport Validation from './validation';\nimport Dates from './dates';\nimport Actions, { ActionTypes } from './actions';\nimport { DatePickerModes, DefaultOptions } from './conts';\nimport { DateTime, DateTimeFormatOptions, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options, { OptionConverter } from './options';\nimport {\n BaseEvent,\n ChangeEvent,\n ViewUpdateEvent,\n FailEvent,\n} from './event-types';\n\n/**\n * A robust and powerful date/time picker component.\n */\nclass TempusDominus {\n dates: Dates;\n\n _options: Options;\n _currentViewMode = 0;\n _subscribers: { [key: string]: ((event: any) => {})[] } = {};\n _element: HTMLElement;\n _input: HTMLInputElement;\n _unset: boolean;\n _minViewModeNumber = 0;\n _display: Display;\n _validation: Validation;\n _action: Actions;\n private _isDisabled = false;\n private _notifyChangeEventContext = 0;\n private _toggle: HTMLElement;\n private _currentPromptTimeTimeout: any;\n\n constructor(element: HTMLElement, options: Options = {} as Options) {\n if (!element) {\n Namespace.errorMessages.mustProvideElement;\n }\n this._element = element;\n this._options = this._initializeOptions(options, DefaultOptions, true);\n this._viewDate.setLocale(this._options.localization.locale);\n this._unset = true;\n\n this._display = new Display(this);\n this._validation = new Validation(this);\n this.dates = new Dates(this);\n this._action = new Actions(this);\n\n this._initializeInput();\n this._initializeToggle();\n\n if (this._options.display.inline) this._display.show();\n }\n\n _viewDate = new DateTime();\n\n get viewDate() {\n return this._viewDate;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Update the picker options. If `reset` is provide `options` will be merged with DefaultOptions instead.\n * @param options\n * @param reset\n * @public\n */\n updateOptions(options, reset = false): void {\n if (reset) this._options = this._initializeOptions(options, DefaultOptions);\n else this._options = this._initializeOptions(options, this._options);\n this._display._rebuild();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Toggles the picker open or closed. If the picker is disabled, nothing will happen.\n * @public\n */\n toggle(): void {\n if (this._isDisabled) return;\n this._display.toggle();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Shows the picker unless the picker is disabled.\n * @public\n */\n show(): void {\n if (this._isDisabled) return;\n this._display.show();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker unless the picker is disabled.\n * @public\n */\n hide(): void {\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Disables the picker and the target input field.\n * @public\n */\n disable(): void {\n this._isDisabled = true;\n // todo this might be undesired. If a dev disables the input field to\n // only allow using the picker, this will break that.\n this._input?.setAttribute('disabled', 'disabled');\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Enables the picker and the target input field.\n * @public\n */\n enable(): void {\n this._isDisabled = false;\n this._input?.removeAttribute('disabled');\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Clears all the selected dates\n * @public\n */\n clear(): void {\n this.dates.clear();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Allows for a direct subscription to picker events, without having to use addEventListener on the element.\n * @param eventTypes See Namespace.Events\n * @param callbacks Function to call when event is triggered\n * @public\n */\n subscribe(\n eventTypes: string | string[],\n callbacks: (event: any) => void | ((event: any) => void)[]\n ): { unsubscribe: void }[] {\n if (typeof eventTypes === 'string') {\n eventTypes = [eventTypes];\n }\n let callBackArray = [];\n if (!Array.isArray(callbacks)) {\n callBackArray = [callbacks];\n } else {\n callBackArray = callbacks;\n }\n\n if (eventTypes.length !== callBackArray.length) {\n Namespace.errorMessages.subscribeMismatch;\n }\n\n const returnArray = [];\n\n for (let i = 0; i < eventTypes.length; i++) {\n const eventType = eventTypes[i];\n if (!Array.isArray(this._subscribers[eventType])) {\n this._subscribers[eventType] = [];\n }\n\n this._subscribers[eventType].push(callBackArray[i]);\n\n returnArray.push({\n unsubscribe: this._unsubscribe.bind(\n this,\n eventType,\n this._subscribers[eventType].length - 1\n ),\n });\n\n if (eventTypes.length === 1) {\n return returnArray[0];\n }\n }\n\n return returnArray;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker and removes event listeners\n */\n dispose() {\n this._display.hide();\n // this will clear the document click event listener\n this._display._dispose();\n this._input?.removeEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input?.removeEventListener('click', this._toggleClickEvent);\n }\n this._toggle.removeEventListener('click', this._toggleClickEvent);\n this._subscribers = {};\n }\n\n /**\n * Triggers an event like ChangeEvent when the picker has updated the value\n * of a selected date.\n * @param event Accepts a BaseEvent object.\n * @private\n */\n _triggerEvent(event: BaseEvent) {\n // checking hasOwnProperty because the BasicEvent also falls through here otherwise\n if ((event as ChangeEvent) && event.hasOwnProperty('date')) {\n const { date, oldDate, isClear } = event as ChangeEvent;\n // this was to prevent a max call stack error\n // https://github.com/tempusdominus/core/commit/15a280507f5277b31b0b3319ab1edc7c19a000fb\n // todo see if this is still needed or if there's a cleaner way\n this._notifyChangeEventContext++;\n if (\n (date && oldDate && date.isSame(oldDate)) ||\n (!isClear && !date && !oldDate) ||\n this._notifyChangeEventContext > 1\n ) {\n this._notifyChangeEventContext = 0;\n return;\n }\n this._handleAfterChangeEvent(event as ChangeEvent);\n }\n\n this._element.dispatchEvent(\n new CustomEvent(event.type, { detail: event as any })\n );\n\n if ((window as any).jQuery) {\n const $ = (window as any).jQuery;\n $(this._element).trigger(event);\n }\n\n const publish = () => {\n // return if event is not subscribed\n if (!Array.isArray(this._subscribers[event.type])) {\n return;\n }\n\n // Trigger callback for each subscriber\n this._subscribers[event.type].forEach((callback) => {\n callback(event);\n });\n };\n\n publish();\n\n this._notifyChangeEventContext = 0;\n }\n\n /**\n * Fires a ViewUpdate event when, for example, the month view is changed.\n * @param {Unit} unit\n * @private\n */\n _viewUpdate(unit: Unit) {\n this._triggerEvent({\n type: Namespace.events.update,\n change: unit,\n viewDate: this._viewDate.clone,\n } as ViewUpdateEvent);\n }\n\n private _unsubscribe(eventName, index) {\n this._subscribers[eventName].splice(index, 1);\n }\n\n /**\n * Merges two Option objects together and validates options type\n * @param config new Options\n * @param mergeTo Options to merge into\n * @param includeDataset When true, the elements data-td attributes will be included in the\n * @private\n */\n private _initializeOptions(\n config: Options,\n mergeTo: Options,\n includeDataset = false\n ): Options {\n config = OptionConverter._mergeOptions(config, mergeTo);\n if (includeDataset)\n config = OptionConverter._dataToOptions(this._element, config);\n\n OptionConverter._validateConflcits(config);\n\n config.viewDate = config.viewDate.setLocale(config.localization.locale);\n\n if (!this._viewDate.isSame(config.viewDate)) {\n this._viewDate = config.viewDate;\n }\n\n /**\n * Sets the minimum view allowed by the picker. For example the case of only\n * allowing year and month to be selected but not date.\n */\n if (config.display.components.year) {\n this._minViewModeNumber = 2;\n }\n if (config.display.components.month) {\n this._minViewModeNumber = 1;\n }\n if (config.display.components.date) {\n this._minViewModeNumber = 0;\n }\n\n this._currentViewMode = Math.max(\n this._minViewModeNumber,\n this._currentViewMode\n );\n\n // Update view mode if needed\n if (\n DatePickerModes[this._currentViewMode].name !== config.display.viewMode\n ) {\n this._currentViewMode = Math.max(\n DatePickerModes.findIndex((x) => x.name === config.display.viewMode),\n this._minViewModeNumber\n );\n }\n\n // defaults the input format based on the components enabled\n if (config.hooks.inputFormat === undefined) {\n const components = config.display.components;\n config.hooks.inputFormat = (date: DateTime) => {\n return date.format({\n year: components.calendar && components.year ? 'numeric' : undefined,\n month:\n components.calendar && components.month ? '2-digit' : undefined,\n day: components.calendar && components.date ? '2-digit' : undefined,\n hour:\n components.clock && components.hours\n ? components.useTwentyfourHour\n ? '2-digit'\n : 'numeric'\n : undefined,\n minute:\n components.clock && components.minutes ? '2-digit' : undefined,\n second:\n components.clock && components.seconds ? '2-digit' : undefined,\n hour12: !components.useTwentyfourHour,\n });\n };\n }\n\n if (this._display?.isVisible) {\n this._display._update('all');\n }\n\n return config;\n }\n\n /**\n * Checks if an input field is being used, attempts to locate one and sets an\n * event listener if found.\n * @private\n */\n private _initializeInput() {\n if (this._element.tagName == 'INPUT') {\n this._input = this._element as HTMLInputElement;\n } else {\n let query = this._element.dataset.tdTargetInput;\n if (query == undefined || query == 'nearest') {\n this._input = this._element.querySelector('input');\n } else {\n this._input = this._element.querySelector(query);\n }\n }\n\n if (!this._input) return;\n\n this._input.addEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input.addEventListener('click', this._toggleClickEvent);\n }\n\n if (this._input.value) {\n this._inputChangeEvent();\n }\n }\n\n /**\n * Attempts to locate a toggle for the picker and sets an event listener\n * @private\n */\n private _initializeToggle() {\n if (this._options.display.inline) return;\n let query = this._element.dataset.tdTargetToggle;\n if (query == 'nearest') {\n query = '[data-td-toggle=\"datetimepicker\"]';\n }\n this._toggle =\n query == undefined ? this._element : this._element.querySelector(query);\n this._toggle.addEventListener('click', this._toggleClickEvent);\n }\n\n /**\n * If the option is enabled this will render the clock view after a date pick.\n * @param e change event\n * @private\n */\n private _handleAfterChangeEvent(e: ChangeEvent) {\n if (\n // options is disabled\n !this._options.promptTimeOnDateChange ||\n this._options.display.inline ||\n this._options.display.sideBySide ||\n // time is disabled\n !this._display._hasTime ||\n // clock component is already showing\n this._display.widget\n ?.getElementsByClassName(Namespace.css.show)[0]\n .classList.contains(Namespace.css.timeContainer)\n )\n return;\n\n // First time ever. If useCurrent option is set to true (default), do nothing\n // because the first date is selected automatically.\n // or date didn't change (time did) or date changed because time did.\n if (\n (!e.oldDate && this._options.useCurrent) ||\n (e.oldDate && e.date?.isSame(e.oldDate))\n ) {\n return;\n }\n\n clearTimeout(this._currentPromptTimeTimeout);\n this._currentPromptTimeTimeout = setTimeout(() => {\n if (this._display.widget) {\n this._action.do(\n {\n currentTarget: this._display.widget.querySelector(\n `.${Namespace.css.switch} div`\n ),\n },\n ActionTypes.togglePicker\n );\n }\n }, this._options.promptTimeOnDateChangeTransitionDelay);\n }\n\n /**\n * Event for when the input field changes. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _inputChangeEvent = () => {\n const setViewDate = () => {\n if (this.dates.lastPicked) this._viewDate = this.dates.lastPicked;\n };\n\n const value = this._input.value;\n if (this._options.multipleDates) {\n try {\n const valueSplit = value.split(this._options.multipleDatesSeparator);\n for (let i = 0; i < valueSplit.length; i++) {\n if (this._options.hooks.inputParse) {\n this.dates.set(\n this._options.hooks.inputParse(valueSplit[i]),\n i,\n 'input'\n );\n } else {\n this.dates.set(valueSplit[i], i, 'input');\n }\n }\n setViewDate();\n } catch {\n console.warn(\n 'TD: Something went wrong trying to set the multidate values from the input field.'\n );\n }\n } else {\n if (this._options.hooks.inputParse) {\n this.dates.set(this._options.hooks.inputParse(value), 0, 'input');\n } else {\n this.dates.set(value, 0, 'input');\n }\n setViewDate();\n }\n };\n\n /**\n * Event for when the toggle is clicked. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _toggleClickEvent = () => {\n this.toggle();\n };\n}\n\nexport {\n TempusDominus,\n Namespace,\n DefaultOptions,\n DateTime,\n Options,\n Unit,\n DateTimeFormatOptions,\n};\n"],"names":["SecondDisplay"],"mappings":"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"} \ No newline at end of file diff --git a/docs/6/js/tempus-dominus.js b/docs/6/js/tempus-dominus.js index 3405567d6..828cb7567 100644 --- a/docs/6/js/tempus-dominus.js +++ b/docs/6/js/tempus-dominus.js @@ -248,7 +248,7 @@ * Returns two digit hours */ get secondsFormatted() { - return this.seconds < 10 ? `0${this.seconds}` : `${this.seconds}`; + return this.format({ second: "2-digit" }); } /** * Shortcut to Date.getMinutes() @@ -266,7 +266,7 @@ * Returns two digit hours */ get minutesFormatted() { - return this.minutes < 10 ? `0${this.minutes}` : `${this.minutes}`; + return this.format({ minute: "2-digit" }); } /** * Shortcut to Date.getHours() @@ -284,18 +284,13 @@ * Returns two digit hours */ get hoursFormatted() { - return this.hours < 10 ? `0${this.hours}` : `${this.hours}`; + return this.format({ hour: "2-digit" }); } /** * Returns two digit hours but in twelve hour mode e.g. 13 -> 1 */ get twelveHoursFormatted() { - let hour = this.hours; - if (hour > 12) - hour = hour - 12; - if (hour === 0) - hour = 12; - return hour < 10 ? `0${hour}` : `${hour}`; + return this.format({ hour12: true, hour: "2-digit" }); } /** * Get the meridiem of the date. E.g. AM or PM. @@ -980,7 +975,7 @@ case ActionTypes.selectMonth: case ActionTypes.selectYear: case ActionTypes.selectDecade: - const value = +currentTarget.getAttribute('data-value'); + const value = +currentTarget.dataset.value; switch (action) { case ActionTypes.selectMonth: this._context._viewDate.month = value; @@ -1013,7 +1008,7 @@ if (currentTarget.classList.contains(Namespace.css.new)) { day.manipulate(1, exports.Unit.month); } - day.date = +currentTarget.innerText; + day.date = +currentTarget.dataset.day; let index = 0; if (this._context._options.multipleDates) { index = this._context.dates.pickedIndex(day, exports.Unit.date); @@ -1035,8 +1030,9 @@ } break; case ActionTypes.selectHour: - let hour = +currentTarget.getAttribute('data-value'); - if (lastPicked.hours >= 12 && !this._context._options.display.components.useTwentyfourHour) + let hour = +currentTarget.dataset.value; + if (lastPicked.hours >= 12 && + !this._context._options.display.components.useTwentyfourHour) hour += 12; lastPicked.hours = hour; this._context.dates._setValue(lastPicked, this._context.dates.lastPickedIndex); @@ -1051,7 +1047,7 @@ } break; case ActionTypes.selectMinute: - lastPicked.minutes = +currentTarget.innerText; + lastPicked.minutes = +currentTarget.dataset.value; this._context.dates._setValue(lastPicked, this._context.dates.lastPickedIndex); if (this._context._options.display.components.useTwentyfourHour && !this._context._options.display.components.seconds && @@ -1276,7 +1272,8 @@ containerClone.classList.remove(...containerClone.classList); containerClone.classList.add(...classes); containerClone.setAttribute('data-value', `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`); - containerClone.innerText = `${innerDate.date}`; + containerClone.setAttribute('data-day', `${innerDate.date}`); + containerClone.innerText = innerDate.format({ day: "numeric" }); innerDate.manipulate(1, exports.Unit.date); }); } @@ -1950,7 +1947,7 @@ const [previous, switcher, next] = container.parentElement .getElementsByClassName(Namespace.css.calendarHeader)[0] .getElementsByTagName('div'); - switcher.setAttribute(Namespace.css.yearsContainer, `${this._startYear.year}-${this._endYear.year}`); + switcher.setAttribute(Namespace.css.yearsContainer, `${this._startYear.format({ year: 'numeric' })}-${this._endYear.format({ year: 'numeric' })}`); this._context._validation.isValid(this._startYear, exports.Unit.year) ? previous.classList.remove(Namespace.css.disabled) : previous.classList.add(Namespace.css.disabled); @@ -1975,7 +1972,7 @@ containerClone.classList.remove(...containerClone.classList); containerClone.classList.add(...classes); containerClone.setAttribute('data-value', `${innerDate.year}`); - containerClone.innerText = `${innerDate.year}`; + containerClone.innerText = innerDate.format({ year: "numeric" }); innerDate.manipulate(1, exports.Unit.year); }); } @@ -2016,7 +2013,7 @@ const [previous, switcher, next] = container.parentElement .getElementsByClassName(Namespace.css.calendarHeader)[0] .getElementsByTagName('div'); - switcher.setAttribute(Namespace.css.decadesContainer, `${this._startDecade.year}-${this._endDecade.year}`); + switcher.setAttribute(Namespace.css.decadesContainer, `${this._startDecade.format({ year: 'numeric' })}-${this._endDecade.format({ year: 'numeric' })}`); this._context._validation.isValid(this._startDecade, exports.Unit.year) ? previous.classList.remove(Namespace.css.disabled) : previous.classList.add(Namespace.css.disabled); @@ -2037,7 +2034,7 @@ return; } else { - containerClone.innerText = `${this._startDecade.year - 10}`; + containerClone.innerText = this._startDecade.clone.manipulate(-10, exports.Unit.year).format({ year: 'numeric' }); containerClone.setAttribute('data-value', `${this._startDecade.year}`); return; } @@ -2054,7 +2051,7 @@ containerClone.classList.remove(...containerClone.classList); containerClone.classList.add(...classes); containerClone.setAttribute('data-value', `${this._startDecade.year}`); - containerClone.innerText = `${this._startDecade.year}`; + containerClone.innerText = `${this._startDecade.format({ year: 'numeric' })}`; this._startDecade.manipulate(10, exports.Unit.year); }); } diff --git a/docs/6/js/tempus-dominus.js.map b/docs/6/js/tempus-dominus.js.map index a7d5bbe68..1d8e3abe1 100644 --- a/docs/6/js/tempus-dominus.js.map +++ b/docs/6/js/tempus-dominus.js.map @@ -1 +1 @@ -{"version":3,"file":"tempus-dominus.js","sources":["../../src/js/datetime.ts","../../src/js/errors.ts","../../src/js/namespace.ts","../../src/js/conts.ts","../../src/js/display/collapse.ts","../../src/js/actions.ts","../../src/js/display/calendar/date-display.ts","../../src/js/display/calendar/month-display.ts","../../src/js/options.ts","../../src/js/dates.ts","../../src/js/display/calendar/year-display.ts","../../src/js/display/calendar/decade-display.ts","../../src/js/display/time/time-display.ts","../../src/js/display/time/hour-display.ts","../../src/js/display/time/minute-display.ts","../../src/js/display/time/second-display.ts","../../src/js/display/index.ts","../../src/js/validation.ts","../../src/js/tempus-dominus.ts"],"sourcesContent":["export enum Unit {\n seconds = 'seconds',\n minutes = 'minutes',\n hours = 'hours',\n date = 'date',\n month = 'month',\n year = 'year',\n}\n\nexport interface DateTimeFormatOptions extends Intl.DateTimeFormatOptions {\n timeStyle?: 'short' | 'medium' | 'long';\n dateStyle?: 'short' | 'medium' | 'long' | 'full';\n}\n\n/**\n * For the most part this object behaves exactly the same way\n * as the native Date object with a little extra spice.\n */\nexport class DateTime extends Date {\n /**\n * Used with Intl.DateTimeFormat\n */\n locale = 'default';\n\n /**\n * Chainable way to set the {@link locale}\n * @param value\n */\n setLocale(value: string): this {\n this.locale = value;\n return this;\n }\n\n /**\n * Converts a plain JS date object to a DateTime object.\n * Doing this allows access to format, etc.\n * @param date\n */\n static convert(date: Date): DateTime {\n if (!date) throw `A date is required`;\n return new DateTime(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n );\n }\n\n /**\n * Native date manipulations are not pure functions. This function creates a duplicate of the DateTime object.\n */\n get clone() {\n return new DateTime(\n this.year,\n this.month,\n this.date,\n this.hours,\n this.minutes,\n this.seconds,\n this.getMilliseconds()\n ).setLocale(this.locale);\n }\n\n /**\n * Sets the current date to the start of the {@link unit} provided\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).startOf('month')\n * would return April 1, 2021, 12:00:00.000 AM (midnight)\n * @param unit\n */\n startOf(unit: Unit | 'weekDay'): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n switch (unit) {\n case 'seconds':\n this.setMilliseconds(0);\n break;\n case 'minutes':\n this.setSeconds(0, 0);\n break;\n case 'hours':\n this.setMinutes(0, 0, 0);\n break;\n case 'date':\n this.setHours(0, 0, 0, 0);\n break;\n case 'weekDay':\n this.startOf(Unit.date);\n this.manipulate(0 - this.weekDay, Unit.date);\n break;\n case 'month':\n this.startOf(Unit.date);\n this.setDate(1);\n break;\n case 'year':\n this.startOf(Unit.date);\n this.setMonth(0, 1);\n break;\n }\n return this;\n }\n\n /**\n * Sets the current date to the end of the {@link unit} provided\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).endOf('month')\n * would return April 30, 2021, 11:59:59.999 PM\n * @param unit\n */\n endOf(unit: Unit | 'weekDay'): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n switch (unit) {\n case 'seconds':\n this.setMilliseconds(999);\n break;\n case 'minutes':\n this.setSeconds(59, 999);\n break;\n case 'hours':\n this.setMinutes(59, 59, 999);\n break;\n case 'date':\n this.setHours(23, 59, 59, 999);\n break;\n case 'weekDay':\n this.startOf(Unit.date);\n this.manipulate(6 - this.weekDay, Unit.date);\n break;\n case 'month':\n this.endOf(Unit.date);\n this.manipulate(1, Unit.month);\n this.setDate(0);\n break;\n case 'year':\n this.endOf(Unit.date);\n this.manipulate(1, Unit.year);\n this.setDate(0);\n break;\n }\n return this;\n }\n\n /**\n * Change a {@link unit} value. Value can be positive or negative\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).manipulate(1, 'month')\n * would return May 30, 2021, 11:45:32.984 AM\n * @param value A positive or negative number\n * @param unit\n */\n manipulate(value: number, unit: Unit): this {\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n this[unit] += value;\n return this;\n }\n\n /**\n * Returns a string format.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat\n * for valid templates and locale objects\n * @param template An object. Uses browser defaults otherwise.\n * @param locale Can be a string or an array of strings. Uses browser defaults otherwise.\n */\n format(template: DateTimeFormatOptions, locale = this.locale): string {\n return new Intl.DateTimeFormat(locale, template).format(this);\n }\n\n /**\n * Return true if {@link compare} is before this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isBefore(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() < compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n return (\n this.clone.startOf(unit).valueOf() < compare.clone.startOf(unit).valueOf()\n );\n }\n\n /**\n * Return true if {@link compare} is after this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isAfter(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() > compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n return (\n this.clone.startOf(unit).valueOf() > compare.clone.startOf(unit).valueOf()\n );\n }\n\n /**\n * Return true if {@link compare} is same this date\n * @param compare The Date/DateTime to compare\n * @param unit If provided, uses {@link startOf} for\n * comparision.\n */\n isSame(compare: DateTime, unit?: Unit): boolean {\n if (!unit) return this.valueOf() === compare.valueOf();\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n compare = DateTime.convert(compare);\n return (\n this.clone.startOf(unit).valueOf() === compare.startOf(unit).valueOf()\n );\n }\n\n /**\n * Check if this is between two other DateTimes, optionally looking at unit scale. The match is exclusive.\n * @param left\n * @param right\n * @param unit.\n * @param inclusivity. A [ indicates inclusion of a value. A ( indicates exclusion.\n * If the inclusivity parameter is used, both indicators must be passed.\n */\n isBetween(\n left: DateTime,\n right: DateTime,\n unit?: Unit,\n inclusivity: '()' | '[]' | '(]' | '[)' = '()'\n ): boolean {\n if (unit && this[unit] === undefined) throw `Unit '${unit}' is not valid`;\n const leftInclusivity = inclusivity[0] === '(';\n const rightInclusivity = inclusivity[1] === ')';\n\n return (\n ((leftInclusivity\n ? this.isAfter(left, unit)\n : !this.isBefore(left, unit)) &&\n (rightInclusivity\n ? this.isBefore(right, unit)\n : !this.isAfter(right, unit))) ||\n ((leftInclusivity\n ? this.isBefore(left, unit)\n : !this.isAfter(left, unit)) &&\n (rightInclusivity\n ? this.isAfter(right, unit)\n : !this.isBefore(right, unit)))\n );\n }\n\n /**\n * Returns flattened object of the date. Does not include literals\n * @param locale\n * @param template\n */\n parts(\n locale = this.locale,\n template: any = { dateStyle: 'full', timeStyle: 'long' }\n ) {\n const parts = {};\n new Intl.DateTimeFormat(locale, template)\n .formatToParts(this)\n .filter((x) => x.type !== 'literal')\n .forEach((x) => (parts[x.type] = x.value));\n return parts;\n }\n\n /**\n * Shortcut to Date.getSeconds()\n */\n get seconds(): number {\n return this.getSeconds();\n }\n\n /**\n * Shortcut to Date.setSeconds()\n */\n set seconds(value: number) {\n this.setSeconds(value);\n }\n\n /**\n * Returns two digit hours\n */\n get secondsFormatted(): string {\n return this.seconds < 10 ? `0${this.seconds}` : `${this.seconds}`;\n }\n\n /**\n * Shortcut to Date.getMinutes()\n */\n get minutes(): number {\n return this.getMinutes();\n }\n\n /**\n * Shortcut to Date.setMinutes()\n */\n set minutes(value: number) {\n this.setMinutes(value);\n }\n\n /**\n * Returns two digit hours\n */\n get minutesFormatted(): string {\n return this.minutes < 10 ? `0${this.minutes}` : `${this.minutes}`;\n }\n\n /**\n * Shortcut to Date.getHours()\n */\n get hours(): number {\n return this.getHours();\n }\n\n /**\n * Shortcut to Date.setHours()\n */\n set hours(value: number) {\n this.setHours(value);\n }\n\n /**\n * Returns two digit hours\n */\n get hoursFormatted(): string {\n return this.hours < 10 ? `0${this.hours}` : `${this.hours}`;\n }\n\n /**\n * Returns two digit hours but in twelve hour mode e.g. 13 -> 1\n */\n get twelveHoursFormatted(): string {\n let hour = this.hours;\n if (hour > 12) hour = hour - 12;\n if (hour === 0) hour = 12;\n return hour < 10 ? `0${hour}` : `${hour}`;\n }\n\n /**\n * Get the meridiem of the date. E.g. AM or PM.\n * If the {@link locale} provides a \"dayPeriod\" then this will be returned,\n * otherwise it will return AM or PM.\n * @param locale\n */\n meridiem(locale: string = this.locale): string {\n return new Intl.DateTimeFormat(locale, {\n hour: 'numeric',\n hour12: true,\n } as any)\n .formatToParts(this)\n .find((p) => p.type === 'dayPeriod')?.value;\n }\n\n /**\n * Shortcut to Date.getDate()\n */\n get date(): number {\n return this.getDate();\n }\n\n /**\n * Shortcut to Date.setDate()\n */\n set date(value: number) {\n this.setDate(value);\n }\n\n /**\n * Return two digit date\n */\n get dateFormatted(): string {\n return this.date < 10 ? `0${this.date}` : `${this.date}`;\n }\n\n // https://github.com/you-dont-need/You-Dont-Need-Momentjs#week-of-year\n /**\n * Gets the week of the year\n */\n get week(): number {\n const startOfYear = new Date(this.year, 0, 1);\n startOfYear.setDate(\n startOfYear.getDate() + (1 - (startOfYear.getDay() % 7))\n );\n return Math.round((this.valueOf() - startOfYear.valueOf()) / 604800000) + 1;\n }\n\n /**\n * Shortcut to Date.getDay()\n */\n get weekDay(): number {\n return this.getDay();\n }\n\n /**\n * Shortcut to Date.getMonth()\n */\n get month(): number {\n return this.getMonth();\n }\n\n /**\n * Shortcut to Date.setMonth()\n */\n set month(value: number) {\n this.setMonth(value);\n }\n\n /**\n * Return two digit, human expected month. E.g. January = 1, December = 12\n */\n get monthFormatted(): string {\n return this.month + 1 < 10 ? `0${this.month}` : `${this.month}`;\n }\n\n /**\n * Shortcut to Date.getFullYear()\n */\n get year(): number {\n return this.getFullYear();\n }\n\n /**\n * Shortcut to Date.setFullYear()\n */\n set year(value: number) {\n this.setFullYear(value);\n }\n}\n","import Namespace from './namespace';\n\nexport class TdError extends Error {\n code: number;\n}\n\nexport class ErrorMessages {\n private base = 'TD:';\n\n //#region out to console\n\n /**\n * Throws an error indicating that a key in the options object is invalid.\n * @param optionName\n */\n unexpectedOption(optionName: string) {\n const error = new TdError(\n `${this.base} Unexpected option: ${optionName} does not match a known option.`\n );\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error indicating that one more keys in the options object is invalid.\n * @param optionName\n */\n unexpectedOptions(optionName: string[]) {\n const error = new TdError(`${this.base}: ${optionName.join(', ')}`);\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error when an option is provide an unsupported value.\n * For example a value of 'cheese' for toolbarPlacement which only supports\n * 'top', 'bottom', 'default'.\n * @param optionName\n * @param badValue\n * @param validOptions\n */\n unexpectedOptionValue(\n optionName: string,\n badValue: string,\n validOptions: string[]\n ) {\n const error = new TdError(\n `${\n this.base\n } Unexpected option value: ${optionName} does not accept a value of \"${badValue}\". Valid values are: ${validOptions.join(\n ', '\n )}`\n );\n error.code = 2;\n throw error;\n }\n\n /**\n * Throws an error when an option value is the wrong type.\n * For example a string value was provided to multipleDates which only\n * supports true or false.\n * @param optionName\n * @param badType\n * @param expectedType\n */\n typeMismatch(optionName: string, badType: string, expectedType: string) {\n const error = new TdError(\n `${this.base} Mismatch types: ${optionName} has a type of ${badType} instead of the required ${expectedType}`\n );\n error.code = 3;\n throw error;\n }\n\n /**\n * Throws an error when an option value is outside of the expected range.\n * For example restrictions.daysOfWeekDisabled excepts a value between 0 and 6.\n * @param optionName\n * @param lower\n * @param upper\n */\n numbersOutOfRage(optionName: string, lower: number, upper: number) {\n const error = new TdError(\n `${this.base} ${optionName} expected an array of number between ${lower} and ${upper}.`\n );\n error.code = 4;\n throw error;\n }\n\n /**\n * Throws an error when a value for a date options couldn't be parsed. Either\n * the option was an invalide string or an invalid Date object.\n * @param optionName\n * @param date\n * @param soft If true, logs a warning instead of an error.\n */\n failedToParseDate(optionName: string, date: any, soft = false) {\n const error = new TdError(\n `${this.base} Could not correctly parse \"${date}\" to a date for ${optionName}.`\n );\n error.code = 5;\n if (!soft) throw error;\n console.warn(error);\n }\n\n /**\n * Throws when an element to attach to was not provided in the constructor.\n */\n mustProvideElement() {\n const error = new TdError(`${this.base} No element was provided.`);\n error.code = 6;\n throw error;\n }\n\n /**\n * Throws if providing an array for the events to subscribe method doesn't have\n * the same number of callbacks. E.g., subscribe([1,2], [1])\n */\n subscribeMismatch() {\n const error = new TdError(\n `${this.base} The subscribed events does not match the number of callbacks`\n );\n error.code = 7;\n throw error;\n }\n\n /**\n * Throws if the configuration has conflicting rules e.g. minDate is after maxDate\n */\n conflictingConfiguration(message?: string) {\n const error = new TdError(\n `${this.base} A configuration value conflicts with another rule. ${message}`\n );\n error.code = 8;\n throw error;\n }\n\n /**\n * Logs a warning if a date option value is provided as a string, instead of\n * a date/datetime object.\n */\n dateString() {\n console.warn(\n `${this.base} Using a string for date options is not recommended unless you specify an ISO string.`\n );\n }\n\n //#endregion\n\n //#region used with notify.error\n\n /**\n * Used with an Error Event type if the user selects a date that\n * fails restriction validation.\n */\n failedToSetInvalidDate = 'Failed to set invalid date';\n\n /**\n * Used with an Error Event type when a user changes the value of the\n * input field directly, and does not provide a valid date.\n */\n failedToParseInput = 'Failed parse input field';\n\n //#endregion\n}\n","import { ErrorMessages } from './errors';\n// this is not the way I want this to stay but nested classes seemed to blown up once its compiled.\nconst NAME = 'tempus-dominus',\n version = '6.0.0-alpha1',\n dataKey = 'td';\n\n/**\n * Events\n */\nclass Events {\n key = `.${dataKey}`;\n\n /**\n * Change event. Fired when the user selects a date.\n * See also EventTypes.ChangeEvent\n */\n change = `change${this.key}`;\n\n /**\n * Emit when the view changes for example from month view to the year view.\n * See also EventTypes.ViewUpdateEvent\n */\n update = `update${this.key}`;\n\n /**\n * Emits when a selected date or value from the input field fails to meet the provided validation rules.\n * See also EventTypes.FailEvent\n */\n error = `error${this.key}`;\n\n /**\n * Show event\n * @event Events#show\n */\n show = `show${this.key}`;\n\n /**\n * Hide event\n * @event Events#hide\n */\n hide = `hide${this.key}`;\n\n // blur and focus are used in the jQuery provider but are otherwise unused.\n // keyup/down will be used later for keybinding options\n\n blur = `blur${this.key}`;\n focus = `focus${this.key}`;\n keyup = `keyup${this.key}`;\n keydown = `keydown${this.key}`;\n}\n\nclass Css {\n /**\n * The outer element for the widget.\n */\n widget = `${NAME}-widget`;\n\n /**\n * Hold the previous, next and switcher divs\n */\n calendarHeader = 'calendar-header';\n\n /**\n * The element for the action to change the calendar view. E.g. month -> year.\n */\n switch = 'picker-switch';\n\n /**\n * The elements for all of the toolbar options\n */\n toolbar = 'toolbar';\n\n /**\n * Disables the hover and rounding affect.\n */\n noHighlight = 'no-highlight';\n\n /**\n * Applied to the widget element when the side by side option is in use.\n */\n sideBySide = 'timepicker-sbs';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> July\n */\n previous = 'previous';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> September\n */\n next = 'next';\n\n /**\n * Applied to any action that would violate any restriction options. ALso applied\n * to an input field if the disabled function is called.\n */\n disabled = 'disabled';\n\n /**\n * Applied to any date that is less than requested view,\n * e.g. the last day of the previous month.\n */\n old = 'old';\n\n /**\n * Applied to any date that is greater than of requested view,\n * e.g. the last day of the previous month.\n */\n new = 'new';\n\n /**\n * Applied to any date that is currently selected.\n */\n active = 'active';\n\n //#region date element\n\n /**\n * The outer most element for the calendar view.\n */\n dateContainer = 'date-container';\n\n /**\n * The outer most element for the decades view.\n */\n decadesContainer = `${this.dateContainer}-decades`;\n\n /**\n * Applied to elements within the decades container, e.g. 2020, 2030\n */\n decade = 'decade';\n\n /**\n * The outer most element for the years view.\n */\n yearsContainer = `${this.dateContainer}-years`;\n\n /**\n * Applied to elements within the years container, e.g. 2021, 2021\n */\n year = 'year';\n\n /**\n * The outer most element for the month view.\n */\n monthsContainer = `${this.dateContainer}-months`;\n\n /**\n * Applied to elements within the month container, e.g. January, February\n */\n month = 'month';\n\n /**\n * The outer most element for the calendar view.\n */\n daysContainer = `${this.dateContainer}-days`;\n\n /**\n * Applied to elements within the day container, e.g. 1, 2..31\n */\n day = 'day';\n\n /**\n * If display.calendarWeeks is enabled, a column displaying the week of year\n * is shown. This class is applied to each cell in that column.\n */\n calendarWeeks = 'cw';\n\n /**\n * Applied to the first row of the calendar view, e.g. Sunday, Monday\n */\n dayOfTheWeek = 'dow';\n\n /**\n * Applied to the current date on the calendar view.\n */\n today = 'today';\n\n /**\n * Applied to the locale's weekend dates on the calendar view, e.g. Sunday, Saturday\n */\n weekend = 'weekend';\n\n //#endregion\n\n //#region time element\n\n /**\n * The outer most element for all time related elements.\n */\n timeContainer = 'time-container';\n\n /**\n * Applied the separator columns between time elements, e.g. hour *:* minute *:* second\n */\n separator = 'separator';\n\n /**\n * The outer most element for the clock view.\n */\n clockContainer = `${this.timeContainer}-clock`;\n\n /**\n * The outer most element for the hours selection view.\n */\n hourContainer = `${this.timeContainer}-hour`;\n\n /**\n * The outer most element for the minutes selection view.\n */\n minuteContainer = `${this.timeContainer}-minute`;\n\n /**\n * The outer most element for the seconds selection view.\n */\n secondContainer = `${this.timeContainer}-second`;\n\n /**\n * Applied to each element in the hours selection view.\n */\n hour = 'hour';\n\n /**\n * Applied to each element in the minutes selection view.\n */\n minute = 'minute';\n\n /**\n * Applied to each element in the seconds selection view.\n */\n second = 'second';\n\n /**\n * Applied AM/PM toggle button.\n */\n toggleMeridiem = 'toggleMeridiem';\n\n //#endregion\n\n //#region collapse\n\n /**\n * Applied the element of the current view mode, e.g. calendar or clock.\n */\n show = 'show';\n\n /**\n * Applied to the currently showing view mode during a transition\n * between calendar and clock views\n */\n collapsing = 'td-collapsing';\n\n /**\n * Applied to the currently hidden view mode.\n */\n collapse = 'td-collapse';\n\n //#endregion\n\n /**\n * Applied to the widget when the option display.inline is enabled.\n */\n inline = 'inline';\n}\n\nexport default class Namespace {\n static NAME = NAME;\n // noinspection JSUnusedGlobalSymbols\n static version = version;\n static dataKey = dataKey;\n\n static events = new Events();\n\n static css = new Css();\n\n static errorMessages = new ErrorMessages();\n}\n","import { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options from './options';\n\nconst DefaultOptions: Options = {\n restrictions: {\n minDate: undefined,\n maxDate: undefined,\n disabledDates: [],\n enabledDates: [],\n daysOfWeekDisabled: [],\n disabledTimeIntervals: [],\n disabledHours: [],\n enabledHours: [],\n },\n display: {\n icons: {\n type: 'icons',\n time: 'fas fa-clock',\n date: 'fas fa-calendar',\n up: 'fas fa-arrow-up',\n down: 'fas fa-arrow-down',\n previous: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n today: 'fas fa-calendar-check',\n clear: 'fas fa-trash',\n close: 'fas fa-times',\n },\n sideBySide: false,\n calendarWeeks: false,\n viewMode: 'calendar',\n toolbarPlacement: 'bottom',\n keepOpen: false,\n buttons: {\n today: false,\n clear: false,\n close: false,\n },\n components: {\n calendar: true,\n date: true,\n month: true,\n year: true,\n decades: true,\n clock: true,\n hours: true,\n minutes: true,\n seconds: false,\n useTwentyfourHour: false,\n },\n inline: false,\n },\n stepping: 1,\n useCurrent: true,\n defaultDate: undefined,\n localization: {\n today: 'Go to today',\n clear: 'Clear selection',\n close: 'Close the picker',\n selectMonth: 'Select Month',\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n selectYear: 'Select Year',\n previousYear: 'Previous Year',\n nextYear: 'Next Year',\n selectDecade: 'Select Decade',\n previousDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n previousCentury: 'Previous Century',\n nextCentury: 'Next Century',\n pickHour: 'Pick Hour',\n incrementHour: 'Increment Hour',\n decrementHour: 'Decrement Hour',\n pickMinute: 'Pick Minute',\n incrementMinute: 'Increment Minute',\n decrementMinute: 'Decrement Minute',\n pickSecond: 'Pick Second',\n incrementSecond: 'Increment Second',\n decrementSecond: 'Decrement Second',\n toggleMeridiem: 'Toggle Meridiem',\n selectTime: 'Select Time',\n selectDate: 'Select Date',\n dayViewHeaderFormat: 'long',\n locale: 'default',\n },\n keepInvalid: false,\n debug: false,\n allowInputToggle: false,\n viewDate: new DateTime(),\n multipleDates: false,\n multipleDatesSeparator: '; ',\n promptTimeOnDateChange: false,\n promptTimeOnDateChangeTransitionDelay: 200,\n hooks: {\n inputParse: undefined,\n inputFormat: undefined,\n },\n};\n\nconst DatePickerModes: {\n name: string;\n className: string;\n unit: Unit;\n step: number;\n}[] = [\n {\n name: 'calendar',\n className: Namespace.css.daysContainer,\n unit: Unit.month,\n step: 1,\n },\n {\n name: 'months',\n className: Namespace.css.monthsContainer,\n unit: Unit.year,\n step: 1,\n },\n {\n name: 'years',\n className: Namespace.css.yearsContainer,\n unit: Unit.year,\n step: 10,\n },\n {\n name: 'decades',\n className: Namespace.css.decadesContainer,\n unit: Unit.year,\n step: 100,\n },\n];\n\nexport { DefaultOptions, DatePickerModes, Namespace };\n","import Namespace from '../namespace';\n\n/**\n * Provides a collapse functionality to the view changes\n */\nexport default class Collapse {\n private timeOut;\n\n /**\n * Flips the show/hide state of `target`\n * @param target html element to affect.\n */\n toggle(target: HTMLElement, callback = undefined) {\n if (target.classList.contains(Namespace.css.show)) {\n this.hide(target, callback);\n } else {\n this.show(target, callback);\n }\n }\n\n /**\n * If `target` is not already showing, then show after the animation.\n * @param target\n */\n show(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse, Namespace.css.show);\n target.style.height = '';\n this.timeOut = null;\n if (callback) callback();\n };\n\n target.style.height = '0';\n target.classList.remove(Namespace.css.collapse);\n target.classList.add(Namespace.css.collapsing);\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n target.style.height = `${target.scrollHeight}px`;\n }\n\n /**\n * If `target` is not already hidden, then hide after the animation.\n * @param target HTML Element\n */\n hide(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n !target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse);\n this.timeOut = null;\n };\n\n target.style.height = `${target.getBoundingClientRect()['height']}px`;\n\n const reflow = (element) => element.offsetHeight;\n\n reflow(target);\n\n target.classList.remove(Namespace.css.collapse, Namespace.css.show);\n target.classList.add(Namespace.css.collapsing);\n target.style.height = '';\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n }\n\n /**\n * Gets the transition duration from the `element` by getting css properties\n * `transition-duration` and `transition-delay`\n * @param element HTML Element\n */\n private getTransitionDurationFromElement = (element: HTMLElement) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } =\n window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) +\n Number.parseFloat(transitionDelay)) *\n 1000\n );\n };\n}\n","import { DatePickerModes } from './conts.js';\r\nimport { DateTime, Unit } from './datetime';\r\nimport { TempusDominus } from './tempus-dominus';\r\nimport Collapse from './display/collapse';\r\nimport Namespace from './namespace';\r\n\r\n/**\r\n *\r\n */\r\nexport default class Actions {\r\n private _context: TempusDominus;\r\n private collapse: Collapse;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this.collapse = new Collapse();\r\n }\r\n\r\n /**\r\n * Performs the selected `action`. See ActionTypes\r\n * @param e This is normally a click event\r\n * @param action If not provided, then look for a [data-action]\r\n */\r\n do(e: any, action?: ActionTypes) {\r\n const currentTarget = e.currentTarget;\r\n if (currentTarget.classList.contains(Namespace.css.disabled)) return false;\r\n action = action || currentTarget.dataset.action;\r\n const lastPicked = (\r\n this._context.dates.lastPicked || this._context._viewDate\r\n ).clone;\r\n\r\n /**\r\n * Common function to manipulate {@link lastPicked} by `unit`\r\n * @param unit\r\n * @param value Value to change by\r\n */\r\n const manipulateAndSet = (unit: Unit, value = 1) => {\r\n const newDate = lastPicked.manipulate(value, unit);\r\n if (this._context._validation.isValid(newDate, unit)) {\r\n this._context.dates._setValue(\r\n newDate,\r\n this._context.dates.lastPickedIndex\r\n );\r\n }\r\n };\r\n\r\n switch (action) {\r\n case ActionTypes.next:\r\n case ActionTypes.previous:\r\n const { unit, step } = DatePickerModes[this._context._currentViewMode];\r\n if (action === ActionTypes.next)\r\n this._context._viewDate.manipulate(step, unit);\r\n else this._context._viewDate.manipulate(step * -1, unit);\r\n this._context._viewUpdate(unit);\r\n\r\n this._context._display._showMode();\r\n break;\r\n case ActionTypes.pickerSwitch:\r\n this._context._display._showMode(1);\r\n this._context._viewUpdate(\r\n DatePickerModes[this._context._currentViewMode].unit\r\n );\r\n this._context._display._updateCalendarHeader();\r\n break;\r\n case ActionTypes.selectMonth:\r\n case ActionTypes.selectYear:\r\n case ActionTypes.selectDecade:\r\n const value = +currentTarget.getAttribute('data-value');\r\n switch (action) {\r\n case ActionTypes.selectMonth:\r\n this._context._viewDate.month = value;\r\n this._context._viewUpdate(Unit.month);\r\n break;\r\n case ActionTypes.selectYear:\r\n this._context._viewDate.year = value;\r\n this._context._viewUpdate(Unit.year);\r\n break;\r\n case ActionTypes.selectDecade:\r\n this._context._viewDate.year = value;\r\n this._context._viewUpdate(Unit.year);\r\n break;\r\n }\r\n\r\n if (\r\n this._context._currentViewMode === this._context._minViewModeNumber\r\n ) {\r\n this._context.dates._setValue(\r\n this._context._viewDate,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (!this._context._options.display.inline) {\r\n this._context._display.hide();\r\n }\r\n } else {\r\n this._context._display._showMode(-1);\r\n }\r\n break;\r\n case ActionTypes.selectDay:\r\n const day = this._context._viewDate.clone;\r\n if (currentTarget.classList.contains(Namespace.css.old)) {\r\n day.manipulate(-1, Unit.month);\r\n }\r\n if (currentTarget.classList.contains(Namespace.css.new)) {\r\n day.manipulate(1, Unit.month);\r\n }\r\n\r\n day.date = +currentTarget.innerText;\r\n let index = 0;\r\n if (this._context._options.multipleDates) {\r\n index = this._context.dates.pickedIndex(day, Unit.date);\r\n if (index !== -1) {\r\n this._context.dates._setValue(null, index); //deselect multi-date\r\n } else {\r\n this._context.dates._setValue(\r\n day,\r\n this._context.dates.lastPickedIndex + 1\r\n );\r\n }\r\n } else {\r\n this._context.dates._setValue(\r\n day,\r\n this._context.dates.lastPickedIndex\r\n );\r\n }\r\n\r\n if (\r\n !this._context._display._hasTime &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline &&\r\n !this._context._options.multipleDates\r\n ) {\r\n this._context._display.hide();\r\n }\r\n break;\r\n case ActionTypes.selectHour:\r\n let hour = +currentTarget.getAttribute('data-value');\r\n if (lastPicked.hours >= 12 && !this._context._options.display.components.useTwentyfourHour) hour += 12;\r\n lastPicked.hours = hour;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.components.minutes &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.selectMinute:\r\n lastPicked.minutes = +currentTarget.innerText;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.components.seconds &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.selectSecond:\r\n lastPicked.seconds = +currentTarget.innerText;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.incrementHours:\r\n manipulateAndSet(Unit.hours);\r\n break;\r\n case ActionTypes.incrementMinutes:\r\n manipulateAndSet(Unit.minutes, this._context._options.stepping);\r\n break;\r\n case ActionTypes.incrementSeconds:\r\n manipulateAndSet(Unit.seconds);\r\n break;\r\n case ActionTypes.decrementHours:\r\n manipulateAndSet(Unit.hours, -1);\r\n break;\r\n case ActionTypes.decrementMinutes:\r\n manipulateAndSet(Unit.minutes, this._context._options.stepping * -1);\r\n break;\r\n case ActionTypes.decrementSeconds:\r\n manipulateAndSet(Unit.seconds, -1);\r\n break;\r\n case ActionTypes.toggleMeridiem:\r\n manipulateAndSet(\r\n Unit.hours,\r\n this._context.dates.lastPicked.hours >= 12 ? -12 : 12\r\n );\r\n break;\r\n case ActionTypes.togglePicker:\r\n this._context._display.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer}, .${Namespace.css.timeContainer}`\r\n )\r\n .forEach((htmlElement: HTMLElement) =>\r\n this.collapse.toggle(htmlElement)\r\n );\r\n if (\r\n currentTarget.getAttribute('title') ===\r\n this._context._options.localization.selectDate\r\n ) {\r\n currentTarget.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectTime\r\n );\r\n currentTarget.innerHTML = this._context._display._iconTag(\r\n this._context._options.display.icons.time\r\n ).outerHTML;\r\n\r\n this._context._display._updateCalendarHeader();\r\n } else {\r\n currentTarget.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDate\r\n );\r\n currentTarget.innerHTML = this._context._display._iconTag(\r\n this._context._options.display.icons.date\r\n ).outerHTML;\r\n this.do(e, ActionTypes.showClock);\r\n this._context._display._update('clock');\r\n }\r\n break;\r\n case ActionTypes.showClock:\r\n case ActionTypes.showHours:\r\n case ActionTypes.showMinutes:\r\n case ActionTypes.showSeconds:\r\n this._context._display.widget\r\n .querySelectorAll(`.${Namespace.css.timeContainer} > div`)\r\n .forEach(\r\n (htmlElement: HTMLElement) => (htmlElement.style.display = 'none')\r\n );\r\n\r\n let classToUse = '';\r\n switch (action) {\r\n case ActionTypes.showClock:\r\n classToUse = Namespace.css.clockContainer;\r\n this._context._display._update('clock');\r\n break;\r\n case ActionTypes.showHours:\r\n classToUse = Namespace.css.hourContainer;\r\n this._context._display._update(Unit.hours);\r\n break;\r\n case ActionTypes.showMinutes:\r\n classToUse = Namespace.css.minuteContainer;\r\n this._context._display._update(Unit.minutes);\r\n break;\r\n case ActionTypes.showSeconds:\r\n classToUse = Namespace.css.secondContainer;\r\n this._context._display._update(Unit.seconds);\r\n break;\r\n }\r\n\r\n ((\r\n this._context._display.widget.getElementsByClassName(classToUse)[0]\r\n )).style.display = 'grid';\r\n break;\r\n case ActionTypes.clear:\r\n this._context.dates._setValue(null);\r\n this._context._display._updateCalendarHeader();\r\n break;\r\n case ActionTypes.close:\r\n this._context._display.hide();\r\n break;\r\n case ActionTypes.today:\r\n const today = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n this._context._viewDate = today;\r\n if (this._context._validation.isValid(today, Unit.date))\r\n this._context.dates._setValue(\r\n today,\r\n this._context.dates.lastPickedIndex\r\n );\r\n break;\r\n }\r\n }\r\n}\r\n\r\nexport enum ActionTypes {\r\n next = 'next',\r\n previous = 'previous',\r\n pickerSwitch = 'pickerSwitch',\r\n selectMonth = 'selectMonth',\r\n selectYear = 'selectYear',\r\n selectDecade = 'selectDecade',\r\n selectDay = 'selectDay',\r\n selectHour = 'selectHour',\r\n selectMinute = 'selectMinute',\r\n selectSecond = 'selectSecond',\r\n incrementHours = 'incrementHours',\r\n incrementMinutes = 'incrementMinutes',\r\n incrementSeconds = 'incrementSeconds',\r\n decrementHours = 'decrementHours',\r\n decrementMinutes = 'decrementMinutes',\r\n decrementSeconds = 'decrementSeconds',\r\n toggleMeridiem = 'toggleMeridiem',\r\n togglePicker = 'togglePicker',\r\n showClock = 'showClock',\r\n showHours = 'showHours',\r\n showMinutes = 'showMinutes',\r\n showSeconds = 'showSeconds',\r\n clear = 'clear',\r\n close = 'close',\r\n today = 'today',\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { DateTime, Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `date`\n */\nexport default class DateDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.daysContainer);\n\n container.append(...this._daysOfTheWeek());\n\n if (this._context._options.display.calendarWeeks) {\n const div = document.createElement('div');\n div.classList.add(Namespace.css.calendarWeeks, Namespace.css.noHighlight);\n container.appendChild(div);\n }\n\n for (let i = 0; i < 42; i++) {\n if (i !== 0 && i % 7 === 0) {\n if (this._context._options.display.calendarWeeks) {\n const div = document.createElement('div');\n div.classList.add(\n Namespace.css.calendarWeeks,\n Namespace.css.noHighlight\n );\n container.appendChild(div);\n }\n }\n\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectDay);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.daysContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.daysContainer,\n this._context._viewDate.format({\n month: this._context._options.localization.dayViewHeaderFormat,\n })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.month),\n Unit.month\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.month),\n Unit.month\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone\n .startOf(Unit.month)\n .startOf('weekDay')\n .manipulate(12, Unit.hours);\n\n container\n .querySelectorAll(\n `[data-action=\"${ActionTypes.selectDay}\"], .${Namespace.css.calendarWeeks}`\n )\n .forEach((containerClone: HTMLElement, index) => {\n if (\n this._context._options.display.calendarWeeks &&\n containerClone.classList.contains(Namespace.css.calendarWeeks)\n ) {\n if (containerClone.innerText === '#') return;\n containerClone.innerText = `${innerDate.week}`;\n return;\n }\n\n let classes = [];\n classes.push(Namespace.css.day);\n\n if (innerDate.isBefore(this._context._viewDate, Unit.month)) {\n classes.push(Namespace.css.old);\n }\n if (innerDate.isAfter(this._context._viewDate, Unit.month)) {\n classes.push(Namespace.css.new);\n }\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.date)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.date)) {\n classes.push(Namespace.css.disabled);\n }\n if (innerDate.isSame(new DateTime(), Unit.date)) {\n classes.push(Namespace.css.today);\n }\n if (innerDate.weekDay === 0 || innerDate.weekDay === 6) {\n classes.push(Namespace.css.weekend);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute(\n 'data-value',\n `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`\n );\n containerClone.innerText = `${innerDate.date}`;\n innerDate.manipulate(1, Unit.date);\n });\n }\n\n /***\n * Generates an html row that contains the days of the week.\n * @private\n */\n private _daysOfTheWeek(): HTMLElement[] {\n let innerDate = this._context._viewDate.clone\n .startOf('weekDay')\n .startOf(Unit.date);\n const row = [];\n document.createElement('div');\n\n if (this._context._options.display.calendarWeeks) {\n const htmlDivElement = document.createElement('div');\n htmlDivElement.classList.add(\n Namespace.css.calendarWeeks,\n Namespace.css.noHighlight\n );\n htmlDivElement.innerText = '#';\n row.push(htmlDivElement);\n }\n\n for (let i = 0; i < 7; i++) {\n const htmlDivElement = document.createElement('div');\n htmlDivElement.classList.add(\n Namespace.css.dayOfTheWeek,\n Namespace.css.noHighlight\n );\n htmlDivElement.innerText = innerDate.format({ weekday: 'short' });\n innerDate.manipulate(1, Unit.date);\n row.push(htmlDivElement);\n }\n\n return row;\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `month`\n */\nexport default class MonthDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.monthsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMonth);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.monthsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.monthsContainer,\n this._context._viewDate.format({ year: 'numeric' })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.year),\n Unit.year\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.year),\n Unit.year\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone.startOf(Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMonth}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.month);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.month)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.month)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${index}`);\n containerClone.innerText = `${innerDate.format({ month: 'short' })}`;\n innerDate.manipulate(1, Unit.month);\n });\n }\n}\n","import { DateTime, DateTimeFormatOptions } from './datetime';\nimport Namespace from './namespace';\nimport { DefaultOptions } from './conts';\n\nexport default interface Options {\n restrictions: {\n minDate: DateTime;\n maxDate: DateTime;\n enabledDates: DateTime[];\n disabledDates: DateTime[];\n enabledHours: number[];\n disabledHours: number[];\n disabledTimeIntervals: { from: DateTime; to: DateTime }[];\n daysOfWeekDisabled: number[];\n };\n display: {\n toolbarPlacement: 'top' | 'bottom';\n components: {\n calendar: boolean;\n date: boolean;\n month: boolean;\n year: boolean;\n decades: boolean;\n clock: boolean;\n hours: boolean;\n minutes: boolean;\n seconds: boolean;\n useTwentyfourHour: boolean;\n };\n buttons: { today: boolean; close: boolean; clear: boolean };\n calendarWeeks: boolean;\n icons: {\n date: string;\n next: string;\n previous: string;\n today: string;\n clear: string;\n time: string;\n up: string;\n type: 'icons' | 'sprites';\n down: string;\n close: string;\n };\n viewMode: 'clock' | 'calendar' | 'months' | 'years' | 'decades';\n sideBySide: boolean;\n inline: boolean;\n keepOpen: boolean;\n };\n stepping: number;\n useCurrent: boolean;\n defaultDate: DateTime;\n localization: {\n nextMonth: string;\n pickHour: string;\n incrementSecond: string;\n nextDecade: string;\n selectDecade: string;\n dayViewHeaderFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n decrementHour: string;\n selectDate: string;\n incrementHour: string;\n previousCentury: string;\n decrementSecond: string;\n today: string;\n previousMonth: string;\n selectYear: string;\n pickSecond: string;\n nextCentury: string;\n close: string;\n incrementMinute: string;\n selectTime: string;\n clear: string;\n toggleMeridiem: string;\n selectMonth: string;\n decrementMinute: string;\n pickMinute: string;\n nextYear: string;\n previousYear: string;\n previousDecade: string;\n locale: string;\n };\n keepInvalid: boolean;\n debug: boolean;\n allowInputToggle: boolean;\n viewDate: DateTime;\n multipleDates: boolean;\n multipleDatesSeparator: string;\n promptTimeOnDateChange: boolean;\n promptTimeOnDateChangeTransitionDelay: number;\n hooks: {\n inputParse: (value: any) => DateTime;\n inputFormat: (date: DateTime) => string;\n };\n}\n\nexport class OptionConverter {\n static _mergeOptions(providedOptions: Options, mergeTo: Options): Options {\n const newOptions = {} as Options;\n let path = '';\n const ignoreProperties = ['inputParse', 'inputFormat'];\n\n const processKey = (key, value, providedType, defaultType) => {\n switch (key) {\n case 'defaultDate': {\n const dateTime = this._dateConversion(value, 'defaultDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'defaultDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'viewDate': {\n const dateTime = this._dateConversion(value, 'viewDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'viewDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'minDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.minDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.minDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'maxDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.maxDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.maxDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'disabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.disabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.disabledHours',\n 0,\n 23\n );\n return value;\n case 'enabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.enabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.enabledHours',\n 0,\n 23\n );\n return value;\n case 'daysOfWeekDisabled':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.daysOfWeekDisabled',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 6).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.daysOfWeekDisabled',\n 0,\n 6\n );\n return value;\n case 'enabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.enabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.disabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledTimeIntervals':\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n key,\n providedType,\n 'array of { from: DateTime|Date, to: DateTime|Date }'\n );\n }\n const valueObject = value as { from: any; to: any }[];\n for (let i = 0; i < valueObject.length; i++) {\n Object.keys(valueObject[i]).forEach((vk) => {\n const subOptionName = `${key}[${i}].${vk}`;\n let d = valueObject[i][vk];\n const dateTime = this._dateConversion(d, subOptionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n subOptionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n valueObject[i][vk] = dateTime;\n });\n }\n return valueObject;\n case 'toolbarPlacement':\n case 'type':\n case 'viewMode':\n case 'dayViewHeaderFormat':\n const optionValues = {\n toolbarPlacement: ['top', 'bottom', 'default'],\n type: ['icons', 'sprites'],\n viewMode: ['clock', 'calendar', 'months', 'years', 'decades'],\n dayViewHeaderFormat: [\n 'numeric',\n '2-digit',\n 'long',\n 'short',\n 'narrow',\n ],\n };\n const keyOptions = optionValues[key];\n if (!keyOptions.includes(value))\n Namespace.errorMessages.unexpectedOptionValue(\n path.substring(1),\n value,\n keyOptions\n );\n\n return value;\n case 'inputParse':\n case 'inputFormat':\n return value;\n default:\n switch (defaultType) {\n case 'boolean':\n return value === 'true' || value === true;\n case 'number':\n return +value;\n case 'string':\n return value.toString();\n case 'object':\n return {};\n case 'function':\n return value;\n default:\n Namespace.errorMessages.typeMismatch(\n path.substring(1),\n providedType,\n defaultType\n );\n }\n }\n };\n\n /**\n * The spread operator caused sub keys to be missing after merging.\n * This is to fix that issue by using spread on the child objects first.\n * Also handles complex options like disabledDates\n * @param provided An option from new providedOptions\n * @param mergeOption Default option to compare types against\n * @param copyTo Destination object. This was add to prevent reference copies\n */\n const spread = (provided, mergeOption, copyTo) => {\n const unsupportedOptions = Object.keys(provided).filter(\n (x) => !Object.keys(mergeOption).includes(x)\n );\n if (unsupportedOptions.length > 0) {\n const flattenedOptions = OptionConverter._flattenDefaultOptions;\n\n const errors = unsupportedOptions.map((x) => {\n let error = `\"${path.substring(1)}.${x}\" in not a known option.`;\n let didYouMean = flattenedOptions.find((y) => y.includes(x));\n if (didYouMean) error += `Did you mean \"${didYouMean}\"?`;\n return error;\n });\n Namespace.errorMessages.unexpectedOptions(errors);\n }\n Object.keys(mergeOption).forEach((key) => {\n const defaultOptionValue = mergeOption[key];\n let providedType = typeof provided[key];\n let defaultType = typeof defaultOptionValue;\n let value = provided[key];\n if (!provided.hasOwnProperty(key)) {\n if (\n defaultType === 'undefined' ||\n (value?.length === 0 && Array.isArray(defaultOptionValue))\n ) {\n copyTo[key] = defaultOptionValue;\n return;\n }\n provided[key] = defaultOptionValue;\n value = provided[key];\n }\n path += `.${key}`;\n copyTo[key] = processKey(key, value, providedType, defaultType);\n\n if (typeof defaultOptionValue !== 'object' || ignoreProperties.includes(key)) {\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n return;\n }\n if (!Array.isArray(provided[key])) {\n spread(provided[key], defaultOptionValue, copyTo[key]);\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n }\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n });\n };\n spread(providedOptions, mergeTo, newOptions);\n\n return newOptions;\n }\n\n static _dataToOptions(element, options: Options): Options {\n const eData = element.dataset;\n if (\n !eData ||\n Object.keys(eData).length === 0 ||\n eData.constructor !== DOMStringMap\n )\n return options;\n let dataOptions = {} as Options;\n\n // because dataset returns camelCase including the 'td' key the option\n // key won't align\n const objectToNormalized = (object) => {\n const lowered = {};\n Object.keys(object).forEach((x) => {\n lowered[x.toLowerCase()] = x;\n });\n\n return lowered;\n };\n\n const rabbitHole = (\n split: string[],\n index: number,\n optionSubgroup: {},\n value: any\n ) => {\n // first round = display { ... }\n const normalizedOptions = objectToNormalized(optionSubgroup);\n\n const keyOption = normalizedOptions[split[index].toLowerCase()];\n const internalObject = {};\n\n if (keyOption === undefined) return internalObject;\n\n // if this is another object, continue down the rabbit hole\n if (optionSubgroup[keyOption].constructor === Object) {\n index++;\n internalObject[keyOption] = rabbitHole(\n split,\n index,\n optionSubgroup[keyOption],\n value\n );\n } else {\n internalObject[keyOption] = value;\n }\n return internalObject;\n };\n const optionsLower = objectToNormalized(options);\n\n Object.keys(eData)\n .filter((x) => x.startsWith(Namespace.dataKey))\n .map((x) => x.substring(2))\n .forEach((key) => {\n let keyOption = optionsLower[key.toLowerCase()];\n\n // dataset merges dashes to camelCase... yay\n // i.e. key = display_components_seconds\n if (key.includes('_')) {\n // [display, components, seconds]\n const split = key.split('_');\n // display\n keyOption = optionsLower[split[0].toLowerCase()];\n if (\n keyOption !== undefined &&\n options[keyOption].constructor === Object\n ) {\n dataOptions[keyOption] = rabbitHole(\n split,\n 1,\n options[keyOption],\n eData[`td${key}`]\n );\n }\n }\n // or key = multipleDate\n else if (keyOption !== undefined) {\n dataOptions[keyOption] = eData[`td${key}`];\n }\n });\n\n return this._mergeOptions(dataOptions, options);\n }\n\n /**\n * Attempts to prove `d` is a DateTime or Date or can be converted into one.\n * @param d If a string will attempt creating a date from it.\n * @private\n */\n static _dateTypeCheck(d: any): DateTime | null {\n if (d.constructor.name === DateTime.name) return d;\n if (d.constructor.name === Date.name) {\n return DateTime.convert(d);\n }\n if (typeof d === typeof '') {\n const dateTime = new DateTime(d);\n if (JSON.stringify(dateTime) === 'null') {\n return null;\n }\n return dateTime;\n }\n return null;\n }\n\n /**\n * Type checks that `value` is an array of Date or DateTime\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckDateArray(optionName: string, value, providedType: string) {\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of DateTime or Date'\n );\n }\n for (let i = 0; i < value.length; i++) {\n let d = value[i];\n const dateTime = this._dateConversion(d, optionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n value[i] = dateTime;\n }\n }\n\n /**\n * Type checks that `value` is an array of numbers\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckNumberArray(\n optionName: string,\n value,\n providedType: string\n ) {\n if (!Array.isArray(value) || value.find((x) => typeof x !== typeof 0)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of numbers'\n );\n }\n return;\n }\n\n /**\n * Attempts to convert `d` to a DateTime object\n * @param d value to convert\n * @param optionName Provides text to error messages e.g. disabledDates\n */\n static _dateConversion(d: any, optionName: string) {\n if (typeof d === typeof '' && optionName !== 'input') {\n Namespace.errorMessages.dateString();\n }\n\n const converted = this._dateTypeCheck(d);\n\n if (!converted) {\n Namespace.errorMessages.failedToParseDate(\n optionName,\n d,\n optionName === 'input'\n );\n }\n return converted;\n }\n\n private static _flatback: string[];\n\n private static get _flattenDefaultOptions(): string[] {\n if (this._flatback) return this._flatback;\n const deepKeys = (t, pre = []) =>\n Array.isArray(t)\n ? []\n : Object(t) === t\n ? Object.entries(t).flatMap(([k, v]) => deepKeys(v, [...pre, k]))\n : pre.join('.');\n\n this._flatback = deepKeys(DefaultOptions);\n\n return this._flatback;\n }\n\n /**\n * Some options conflict like min/max date. Verify that these kinds of options\n * are set correctly.\n * @param config\n */\n static _validateConflcits(config: Options) {\n if (config.restrictions.minDate && config.restrictions.maxDate) {\n if (config.restrictions.minDate.isAfter(config.restrictions.maxDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'minDate is after maxDate'\n );\n }\n\n if (config.restrictions.maxDate.isBefore(config.restrictions.minDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'maxDate is before minDate'\n );\n }\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport { ChangeEvent, FailEvent } from './event-types';\nimport { OptionConverter } from './options';\n\nexport default class Dates {\n private _dates: DateTime[] = [];\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Returns the array of selected dates\n */\n get picked(): DateTime[] {\n return this._dates;\n }\n\n /**\n * Returns the last picked value.\n */\n get lastPicked(): DateTime {\n return this._dates[this.lastPickedIndex];\n }\n\n /**\n * Returns the length of picked dates -1 or 0 if none are selected.\n */\n get lastPickedIndex(): number {\n if (this._dates.length === 0) return 0;\n return this._dates.length - 1;\n }\n\n /**\n * Adds a new DateTime to selected dates array\n * @param date\n */\n add(date: DateTime): void {\n this._dates.push(date);\n }\n\n /**\n * Tries to convert the provided value to a DateTime object.\n * If value is null|undefined then clear the value of the provided index (or 0).\n * @param value Value to convert or null|undefined\n * @param index When using multidates this is the index in the array\n * @param from Used in the warning message, useful for debugging.\n */\n set(value: any, index?: number, from: string = 'date.set') {\n if (!value) this._setValue(value, index);\n const converted = OptionConverter._dateConversion(value, from);\n if (converted) this._setValue(converted, index);\n }\n\n /**\n * Returns true if the `targetDate` is part of the selected dates array.\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n isPicked(targetDate: DateTime, unit?: Unit): boolean {\n if (!unit) return this._dates.find((x) => x === targetDate) !== undefined;\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return (\n this._dates\n .map((x) => x.format(format))\n .find((x) => x === innerDateFormatted) !== undefined\n );\n }\n\n /**\n * Returns the index at which `targetDate` is in the array.\n * This is used for updating or removing a date when multi-date is used\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n pickedIndex(targetDate: DateTime, unit?: Unit): number {\n if (!unit) return this._dates.indexOf(targetDate);\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return this._dates.map((x) => x.format(format)).indexOf(innerDateFormatted);\n }\n\n /**\n * Clears all selected dates.\n */\n clear() {\n this._context._unset = true;\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate: this.lastPicked,\n isClear: true,\n isValid: true,\n } as ChangeEvent);\n this._dates = [];\n }\n\n /**\n * Find the \"book end\" years given a `year` and a `factor`\n * @param factor e.g. 100 for decades\n * @param year e.g. 2021\n */\n static getStartEndYear(\n factor: number,\n year: number\n ): [number, number, number] {\n const step = factor / 10,\n startYear = Math.floor(year / factor) * factor,\n endYear = startYear + step * 9,\n focusValue = Math.floor(year / step) * step;\n return [startYear, endYear, focusValue];\n }\n\n /**\n * Do not use direectly. Attempts to either clear or set the `target` date at `index`.\n * If the `target` is null then the date will be cleared.\n * If multi-date is being used then it will be removed from the array.\n * If `target` is valid and multi-date is used then if `index` is\n * provided the date at that index will be replaced, otherwise it is appended.\n * @param target\n * @param index\n */\n _setValue(target?: DateTime, index?: number): void {\n const noIndex = typeof index === 'undefined',\n isClear = !target && noIndex;\n let oldDate = this._context._unset ? null : this._dates[index];\n if (!oldDate && !this._context._unset && noIndex && isClear) {\n oldDate = this.lastPicked;\n }\n\n if (target && oldDate?.isSame(target)) return;\n\n const updateInput = () => {\n if (!this._context._input) return;\n\n let newValue = this._context._options.hooks.inputFormat(target);\n if (this._context._options.multipleDates) {\n newValue = this._dates\n .map((d) => this._context._options.hooks.inputFormat(d))\n .join(this._context._options.multipleDatesSeparator);\n }\n if (this._context._input.value != newValue)\n this._context._input.value = newValue;\n };\n\n // case of calling setValue(null)\n if (!target) {\n if (\n !this._context._options.multipleDates ||\n this._dates.length === 1 ||\n isClear\n ) {\n this._context._unset = true;\n this._dates = [];\n } else {\n this._dates.splice(index, 1);\n }\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n\n updateInput();\n this._context._display._update('all');\n return;\n }\n\n index = index || 0;\n target = target.clone;\n\n // minute stepping is being used, force the minute to the closest value\n if (this._context._options.stepping !== 1) {\n target.minutes =\n Math.round(target.minutes / this._context._options.stepping) *\n this._context._options.stepping;\n target.seconds = 0;\n }\n\n if (this._context._validation.isValid(target)) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._unset = false;\n this._context._display._update('all');\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n return;\n }\n\n if (this._context._options.keepInvalid) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: false,\n } as ChangeEvent);\n }\n this._context._triggerEvent({\n type: Namespace.events.error,\n reason: Namespace.errorMessages.failedToSetInvalidDate,\n date: target,\n oldDate,\n } as FailEvent);\n }\n\n /**\n * Returns a format object based on the granularity of `unit`\n * @param unit\n */\n static getFormatByUnit(unit: Unit): object {\n switch (unit) {\n case 'date':\n return { dateStyle: 'short' };\n case 'month':\n return {\n month: 'numeric',\n year: 'numeric',\n };\n case 'year':\n return { year: 'numeric' };\n }\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { DateTime, Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\nimport Dates from '../../dates';\n\n/**\n * Creates and updates the grid for `year`\n */\nexport default class YearDisplay {\n private _context: TempusDominus;\n private _startYear: DateTime;\n private _endYear: DateTime;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.yearsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectYear);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update() {\n const [start, end] = Dates.getStartEndYear(\n 10,\n this._context._viewDate.year\n );\n this._startYear = this._context._viewDate.clone.manipulate(-1, Unit.year);\n this._endYear = this._context._viewDate.clone.manipulate(10, Unit.year);\n\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.yearsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.yearsContainer,\n `${this._startYear.year}-${this._endYear.year}`\n );\n\n this._context._validation.isValid(this._startYear, Unit.year)\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n this._context._validation.isValid(this._endYear, Unit.year)\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone\n .startOf(Unit.year)\n .manipulate(-1, Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectYear}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.year);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.year)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.year)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.year}`);\n containerClone.innerText = `${innerDate.year}`;\n\n innerDate.manipulate(1, Unit.year);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport Dates from '../../dates';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `seconds`\r\n */\r\nexport default class DecadeDisplay {\r\n private _context: TempusDominus;\r\n private _startDecade: DateTime;\r\n private _endDecade: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker() {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.decadesContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDecade);\r\n container.appendChild(div);\r\n }\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 100,\r\n this._context._viewDate.year\r\n );\r\n this._startDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._startDecade.year = start;\r\n this._endDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._endDecade.year = end;\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.decadesContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.decadesContainer,\r\n `${this._startDecade.year}-${this._endDecade.year}`\r\n );\r\n\r\n this._context._validation.isValid(this._startDecade, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endDecade, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n const pickedYears = this._context.dates.picked.map((x) => x.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectDecade}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (index === 0) {\r\n containerClone.classList.add(Namespace.css.old);\r\n if (this._startDecade.year - 10 < 0) {\r\n containerClone.textContent = ' ';\r\n previous.classList.add(Namespace.css.disabled);\r\n containerClone.classList.add(Namespace.css.disabled);\r\n containerClone.setAttribute('data-value', ``);\r\n return;\r\n } else {\r\n containerClone.innerText = `${this._startDecade.year - 10}`;\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n return;\r\n }\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.decade);\r\n const startDecadeYear = this._startDecade.year;\r\n const endDecadeYear = this._startDecade.year + 9;\r\n\r\n if (\r\n !this._context._unset &&\r\n pickedYears.filter((x) => x >= startDecadeYear && x <= endDecadeYear)\r\n .length > 0\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n containerClone.innerText = `${this._startDecade.year}`;\r\n\r\n this._startDecade.manipulate(10, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates the clock display\n */\nexport default class TimeDisplay {\n private _context: TempusDominus;\n private _gridColumns = '';\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the clock display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.clockContainer);\n\n container.append(...this._grid());\n\n return container;\n }\n\n /**\n * Populates the various elements with in the clock display\n * like the current hour and if the manipulation icons are enabled.\n * @private\n */\n _update(): void {\n const timesDiv = (\n this._context._display.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0]\n );\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n timesDiv\n .querySelectorAll('.disabled')\n .forEach((element) => element.classList.remove(Namespace.css.disabled));\n\n if (this._context._options.display.components.hours) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.hours}]`\n ).innerText = this._context._options.display.components.useTwentyfourHour\n ? lastPicked.hoursFormatted\n : lastPicked.twelveHoursFormatted;\n }\n\n if (this._context._options.display.components.minutes) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.minutes}]`\n ).innerText = lastPicked.minutesFormatted;\n }\n\n if (this._context._options.display.components.seconds) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.seconds}]`\n ).innerText = lastPicked.secondsFormatted;\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n const toggle = timesDiv.querySelector(\n `[data-action=${ActionTypes.toggleMeridiem}]`\n );\n\n toggle.innerText = lastPicked.meridiem();\n\n if (\n !this._context._validation.isValid(\n lastPicked.clone.manipulate(\n lastPicked.hours >= 12 ? -12 : 12,\n Unit.hours\n )\n )\n ) {\n toggle.classList.add(Namespace.css.disabled);\n } else {\n toggle.classList.remove(Namespace.css.disabled);\n }\n }\n\n timesDiv.style.gridTemplateAreas = `\"${this._gridColumns}\"`;\n }\n\n /**\n * Creates the table for the clock display depending on what options are selected.\n * @private\n */\n private _grid(): HTMLElement[] {\n this._gridColumns = '';\n const top = [],\n middle = [],\n bottom = [],\n separator = document.createElement('div'),\n upIcon = this._context._display._iconTag(\n this._context._options.display.icons.up\n ),\n downIcon = this._context._display._iconTag(\n this._context._options.display.icons.down\n );\n\n separator.classList.add(Namespace.css.separator, Namespace.css.noHighlight);\n const separatorColon = separator.cloneNode(true);\n separatorColon.innerHTML = ':';\n\n const getSeparator = (colon = false): HTMLElement => {\n return colon\n ? separatorColon.cloneNode(true)\n : separator.cloneNode(true);\n };\n\n if (this._context._options.display.components.hours) {\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.incrementHours);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickHour\n );\n divElement.setAttribute('data-action', ActionTypes.showHours);\n divElement.setAttribute('data-time-component', Unit.hours);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.decrementHours);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n this._gridColumns += 'a';\n }\n\n if (this._context._options.display.components.minutes) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.hours) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.incrementMinutes);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickMinute\n );\n divElement.setAttribute('data-action', ActionTypes.showMinutes);\n divElement.setAttribute('data-time-component', Unit.minutes);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.decrementMinutes);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (this._context._options.display.components.seconds) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.minutes) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.incrementSeconds);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickSecond\n );\n divElement.setAttribute('data-action', ActionTypes.showSeconds);\n divElement.setAttribute('data-time-component', Unit.seconds);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.decrementSeconds);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n this._gridColumns += ' a';\n let divElement = getSeparator();\n top.push(divElement);\n\n let button = document.createElement('button');\n button.setAttribute(\n 'title',\n this._context._options.localization.toggleMeridiem\n );\n button.setAttribute('data-action', ActionTypes.toggleMeridiem);\n button.setAttribute('tabindex', '-1');\n button.classList.add(Namespace.css.toggleMeridiem);\n\n divElement = document.createElement('div');\n divElement.classList.add(Namespace.css.noHighlight);\n divElement.appendChild(button);\n middle.push(divElement);\n\n divElement = getSeparator();\n bottom.push(divElement);\n }\n\n this._gridColumns = this._gridColumns.trim();\n\n return [...top, ...middle, ...bottom];\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `hours`\n */\nexport default class HourDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.hourContainer);\n\n for (\n let i = 0;\n i <\n (this._context._options.display.components.useTwentyfourHour ? 24 : 12);\n i++\n ) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectHour);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.hourContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.date);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectHour}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.hour);\n\n if (!this._context._validation.isValid(innerDate, Unit.hours)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.hours}`);\n containerClone.innerText = this._context._options.display.components\n .useTwentyfourHour\n ? innerDate.hoursFormatted\n : innerDate.twelveHoursFormatted;\n innerDate.manipulate(1, Unit.hours);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `minutes`\n */\nexport default class MinuteDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.minuteContainer);\n\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n for (let i = 0; i < 60 / step; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMinute);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.minuteContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.hours);\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMinute}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.minute);\n\n if (!this._context._validation.isValid(innerDate, Unit.minutes)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.minutes}`);\n containerClone.innerText = innerDate.minutesFormatted;\n innerDate.manipulate(step, Unit.minutes);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class secondDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.secondContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectSecond);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.secondContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.minutes);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectSecond}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.second);\n\n if (!this._context._validation.isValid(innerDate, Unit.seconds)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.seconds}`);\n containerClone.innerText = innerDate.secondsFormatted;\n innerDate.manipulate(5, Unit.seconds);\n });\n }\n}\n","import DateDisplay from './calendar/date-display';\r\nimport MonthDisplay from './calendar/month-display';\r\nimport YearDisplay from './calendar/year-display';\r\nimport DecadeDisplay from './calendar/decade-display';\r\nimport TimeDisplay from './time/time-display';\r\nimport HourDisplay from './time/hour-display';\r\nimport MinuteDisplay from './time/minute-display';\r\nimport SecondDisplay from './time/second-display';\r\nimport { DateTime, Unit } from '../datetime';\r\nimport { DatePickerModes } from '../conts';\r\nimport { TempusDominus } from '../tempus-dominus';\r\nimport { ActionTypes } from '../actions';\r\nimport { createPopper } from '@popperjs/core';\r\nimport Namespace from '../namespace';\r\nimport { HideEvent } from '../event-types';\r\n\r\n/**\r\n * Main class for all things display related.\r\n */\r\nexport default class Display {\r\n private _context: TempusDominus;\r\n private _dateDisplay: DateDisplay;\r\n private _monthDisplay: MonthDisplay;\r\n private _yearDisplay: YearDisplay;\r\n private _decadeDisplay: DecadeDisplay;\r\n private _timeDisplay: TimeDisplay;\r\n private _widget: HTMLElement;\r\n private _hourDisplay: HourDisplay;\r\n private _minuteDisplay: MinuteDisplay;\r\n private _secondDisplay: SecondDisplay;\r\n private _popperInstance: any;\r\n private _isVisible = false;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this._dateDisplay = new DateDisplay(context);\r\n this._monthDisplay = new MonthDisplay(context);\r\n this._yearDisplay = new YearDisplay(context);\r\n this._decadeDisplay = new DecadeDisplay(context);\r\n this._timeDisplay = new TimeDisplay(context);\r\n this._hourDisplay = new HourDisplay(context);\r\n this._minuteDisplay = new MinuteDisplay(context);\r\n this._secondDisplay = new SecondDisplay(context);\r\n\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Returns the widget body or undefined\r\n * @private\r\n */\r\n get widget(): HTMLElement | undefined {\r\n return this._widget;\r\n }\r\n\r\n /**\r\n * Returns this visible state of the picker (shown)\r\n */\r\n get isVisible() {\r\n return this._isVisible;\r\n }\r\n\r\n /**\r\n * Updates the table for a particular unit. Used when an option as changed or\r\n * whenever the class list might need to be refreshed.\r\n * @param unit\r\n * @private\r\n */\r\n _update(unit: Unit | 'clock' | 'calendar' | 'all'): void {\r\n if (!this.widget) return;\r\n //todo do I want some kind of error catching or other guards here?\r\n switch (unit) {\r\n case Unit.seconds:\r\n this._secondDisplay._update();\r\n break;\r\n case Unit.minutes:\r\n this._minuteDisplay._update();\r\n break;\r\n case Unit.hours:\r\n this._hourDisplay._update();\r\n break;\r\n case Unit.date:\r\n this._dateDisplay._update();\r\n break;\r\n case Unit.month:\r\n this._monthDisplay._update();\r\n break;\r\n case Unit.year:\r\n this._yearDisplay._update();\r\n break;\r\n case 'clock':\r\n this._timeDisplay._update();\r\n this._update(Unit.hours);\r\n this._update(Unit.minutes);\r\n this._update(Unit.seconds);\r\n break;\r\n case 'calendar':\r\n this._update(Unit.date);\r\n this._update(Unit.year);\r\n this._update(Unit.month);\r\n this._decadeDisplay._update();\r\n this._updateCalendarHeader();\r\n break;\r\n case 'all':\r\n if (this._hasTime) {\r\n this._update('clock');\r\n }\r\n if (this._hasDate) {\r\n this._update('calendar');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Shows the picker and creates a Popper instance if needed.\r\n * Add document click event to hide when clicking outside the picker.\r\n * @fires Events#show\r\n */\r\n show(): void {\r\n if (this.widget == undefined) {\r\n if (\r\n this._context._options.useCurrent &&\r\n !this._context._options.defaultDate &&\r\n !this._context._input?.value\r\n ) {\r\n //todo in the td4 branch a pr changed this to allow granularity\r\n const date = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n if (!this._context._options.keepInvalid) {\r\n let tries = 0;\r\n let direction = 1;\r\n if (this._context._options.restrictions.maxDate?.isBefore(date)) {\r\n direction = -1;\r\n }\r\n while (!this._context._validation.isValid(date)) {\r\n date.manipulate(direction, Unit.date);\r\n if (tries > 31) break;\r\n tries++;\r\n }\r\n }\r\n this._context.dates._setValue(date);\r\n }\r\n\r\n if (this._context._options.defaultDate) {\r\n this._context.dates._setValue(this._context._options.defaultDate);\r\n }\r\n\r\n this._buildWidget();\r\n if (this._hasDate) {\r\n this._showMode();\r\n }\r\n\r\n if (!this._context._options.display.inline) {\r\n document.body.appendChild(this.widget);\r\n\r\n this._popperInstance = createPopper(\r\n this._context._element,\r\n this.widget,\r\n {\r\n modifiers: [\r\n /* {\r\n name: 'offset',\r\n options: {\r\n offset: [2, 8],\r\n },\r\n },*/\r\n { name: 'eventListeners', enabled: true },\r\n ],\r\n placement: 'bottom-start',\r\n }\r\n );\r\n } else {\r\n this._context._element.appendChild(this.widget);\r\n }\r\n\r\n if (this._context._options.display.viewMode == 'clock') {\r\n this._context._action.do(\r\n {\r\n currentTarget: this.widget.querySelector(\r\n `.${Namespace.css.timeContainer}`\r\n ),\r\n },\r\n ActionTypes.showClock\r\n );\r\n }\r\n\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.addEventListener('click', this._actionsClickEvent)\r\n );\r\n\r\n // show the clock when using sideBySide\r\n if (this._context._options.display.sideBySide) {\r\n this._timeDisplay._update();\r\n (\r\n this.widget.getElementsByClassName(\r\n Namespace.css.clockContainer\r\n )[0] as HTMLElement\r\n ).style.display = 'grid';\r\n }\r\n }\r\n\r\n this.widget.classList.add(Namespace.css.show);\r\n if (!this._context._options.display.inline) {\r\n this._popperInstance.update();\r\n document.addEventListener('click', this._documentClickEvent);\r\n }\r\n this._context._triggerEvent({ type: Namespace.events.show });\r\n this._isVisible = true;\r\n }\r\n\r\n /**\r\n * Changes the calendar view mode. E.g. month <-> year\r\n * @param direction -/+ number to move currentViewMode\r\n * @private\r\n */\r\n _showMode(direction?: number): void {\r\n if (!this.widget) {\r\n return;\r\n }\r\n if (direction) {\r\n const max = Math.max(\r\n this._context._minViewModeNumber,\r\n Math.min(3, this._context._currentViewMode + direction)\r\n );\r\n if (this._context._currentViewMode == max) return;\r\n this._context._currentViewMode = max;\r\n }\r\n\r\n this.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div:not(.${Namespace.css.clockContainer})`\r\n )\r\n .forEach((e: HTMLElement) => (e.style.display = 'none'));\r\n\r\n const datePickerMode = DatePickerModes[this._context._currentViewMode];\r\n let picker: HTMLElement = this.widget.querySelector(\r\n `.${datePickerMode.className}`\r\n );\r\n\r\n switch (datePickerMode.className) {\r\n case Namespace.css.decadesContainer:\r\n this._decadeDisplay._update();\r\n break;\r\n case Namespace.css.yearsContainer:\r\n this._yearDisplay._update();\r\n break;\r\n case Namespace.css.monthsContainer:\r\n this._monthDisplay._update();\r\n break;\r\n case Namespace.css.daysContainer:\r\n this._dateDisplay._update();\r\n break;\r\n }\r\n\r\n picker.style.display = 'grid';\r\n this._updateCalendarHeader();\r\n }\r\n\r\n _updateCalendarHeader() {\r\n const showing = [\r\n ...this.widget.querySelector(\r\n `.${Namespace.css.dateContainer} div[style*=\"display: grid\"]`\r\n ).classList,\r\n ].find((x) => x.startsWith(Namespace.css.dateContainer));\r\n\r\n const [previous, switcher, next] = this._context._display.widget\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switch (showing) {\r\n case Namespace.css.decadesContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousCentury\r\n );\r\n switcher.setAttribute('title', '');\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextCentury\r\n );\r\n break;\r\n case Namespace.css.yearsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousDecade\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDecade\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextDecade\r\n );\r\n break;\r\n case Namespace.css.monthsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousYear\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectYear\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextYear\r\n );\r\n break;\r\n case Namespace.css.daysContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousMonth\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectMonth\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextMonth\r\n );\r\n switcher.innerText = this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n });\r\n break;\r\n }\r\n switcher.innerText = switcher.getAttribute(showing);\r\n }\r\n\r\n /**\r\n * Hides the picker if needed.\r\n * Remove document click event to hide when clicking outside the picker.\r\n * @fires Events#hide\r\n */\r\n hide(): void {\r\n if (!this.widget || !this._isVisible) return;\r\n\r\n this.widget.classList.remove(Namespace.css.show);\r\n\r\n if (this._isVisible) {\r\n this._context._triggerEvent({\r\n type: Namespace.events.hide,\r\n date: this._context._unset\r\n ? null\r\n : this._context.dates.lastPicked\r\n ? this._context.dates.lastPicked.clone\r\n : void 0,\r\n } as HideEvent);\r\n this._isVisible = false;\r\n }\r\n\r\n document.removeEventListener('click', this._documentClickEvent);\r\n }\r\n\r\n /**\r\n * Toggles the picker's open state. Fires a show/hide event depending.\r\n */\r\n toggle() {\r\n return this._isVisible ? this.hide() : this.show();\r\n }\r\n\r\n /**\r\n * Removes document and data-action click listener and reset the widget\r\n * @private\r\n */\r\n _dispose() {\r\n document.removeEventListener('click', this._documentClickEvent);\r\n if (!this.widget) return;\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.removeEventListener('click', this._actionsClickEvent)\r\n );\r\n this.widget.parentNode.removeChild(this.widget);\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Builds the widgets html template.\r\n * @private\r\n */\r\n private _buildWidget(): HTMLElement {\r\n const template = document.createElement('div');\r\n template.classList.add(Namespace.css.widget);\r\n\r\n const dateView = document.createElement('div');\r\n dateView.classList.add(Namespace.css.dateContainer);\r\n dateView.append(\r\n this._headTemplate,\r\n this._decadeDisplay._picker,\r\n this._yearDisplay._picker,\r\n this._monthDisplay._picker,\r\n this._dateDisplay._picker\r\n );\r\n\r\n const timeView = document.createElement('div');\r\n timeView.classList.add(Namespace.css.timeContainer);\r\n timeView.appendChild(this._timeDisplay._picker);\r\n timeView.appendChild(this._hourDisplay._picker);\r\n timeView.appendChild(this._minuteDisplay._picker);\r\n timeView.appendChild(this._secondDisplay._picker);\r\n\r\n const toolbar = document.createElement('div');\r\n toolbar.classList.add(Namespace.css.toolbar);\r\n toolbar.append(...this._toolbar);\r\n\r\n if (this._context._options.display.inline) {\r\n template.classList.add(Namespace.css.inline);\r\n }\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n template.classList.add('calendarWeeks');\r\n }\r\n\r\n if (\r\n this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n template.classList.add(Namespace.css.sideBySide);\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n const row = document.createElement('div');\r\n row.classList.add('td-row');\r\n dateView.classList.add('td-half');\r\n timeView.classList.add('td-half');\r\n\r\n row.appendChild(dateView);\r\n row.appendChild(timeView);\r\n template.appendChild(row);\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n this._widget = template;\r\n return;\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n if (this._hasDate) {\r\n if (this._hasTime) {\r\n dateView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode !== 'clock')\r\n dateView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(dateView);\r\n }\r\n\r\n if (this._hasTime) {\r\n if (this._hasDate) {\r\n timeView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode === 'clock')\r\n timeView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(timeView);\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n const arrow = document.createElement('div');\r\n arrow.classList.add('arrow');\r\n arrow.setAttribute('data-popper-arrow', '');\r\n template.appendChild(arrow);\r\n\r\n this._widget = template;\r\n }\r\n\r\n /**\r\n * Returns true if the hours, minutes, or seconds component is turned on\r\n */\r\n get _hasTime(): boolean {\r\n return (\r\n this._context._options.display.components.clock &&\r\n (this._context._options.display.components.hours ||\r\n this._context._options.display.components.minutes ||\r\n this._context._options.display.components.seconds)\r\n );\r\n }\r\n\r\n /**\r\n * Returns true if the year, month, or date component is turned on\r\n */\r\n get _hasDate(): boolean {\r\n return (\r\n this._context._options.display.components.calendar &&\r\n (this._context._options.display.components.year ||\r\n this._context._options.display.components.month ||\r\n this._context._options.display.components.date)\r\n );\r\n }\r\n\r\n /**\r\n * Get the toolbar html based on options like buttons.today\r\n * @private\r\n */\r\n get _toolbar(): HTMLElement[] {\r\n const toolbar = [];\r\n\r\n if (this._context._options.display.buttons.today) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.today);\r\n div.setAttribute('title', this._context._options.localization.today);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.today)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (\r\n !this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n let title, icon;\r\n if (this._context._options.display.viewMode === 'clock') {\r\n title = this._context._options.localization.selectDate;\r\n icon = this._context._options.display.icons.date;\r\n } else {\r\n title = this._context._options.localization.selectTime;\r\n icon = this._context._options.display.icons.time;\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.togglePicker);\r\n div.setAttribute('title', title);\r\n\r\n div.appendChild(this._iconTag(icon));\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.clear) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.clear);\r\n div.setAttribute('title', this._context._options.localization.clear);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.clear)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.close) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.close);\r\n div.setAttribute('title', this._context._options.localization.close);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.close)\r\n );\r\n toolbar.push(div);\r\n }\r\n\r\n return toolbar;\r\n }\r\n\r\n /***\r\n * Builds the base header template with next and previous icons\r\n * @private\r\n */\r\n get _headTemplate(): HTMLElement {\r\n const calendarHeader = document.createElement('div');\r\n calendarHeader.classList.add(Namespace.css.calendarHeader);\r\n\r\n const previous = document.createElement('div');\r\n previous.classList.add(Namespace.css.previous);\r\n previous.setAttribute('data-action', ActionTypes.previous);\r\n previous.appendChild(\r\n this._iconTag(this._context._options.display.icons.previous)\r\n );\r\n\r\n const switcher = document.createElement('div');\r\n switcher.classList.add(Namespace.css.switch);\r\n switcher.setAttribute('data-action', ActionTypes.pickerSwitch);\r\n\r\n const next = document.createElement('div');\r\n next.classList.add(Namespace.css.next);\r\n next.setAttribute('data-action', ActionTypes.next);\r\n next.appendChild(this._iconTag(this._context._options.display.icons.next));\r\n\r\n calendarHeader.append(previous, switcher, next);\r\n return calendarHeader;\r\n }\r\n\r\n /**\r\n * Builds an icon tag as either an ``\r\n * or with icons.type is `sprites` then an svg tag instead\r\n * @param iconClass\r\n * @private\r\n */\r\n _iconTag(iconClass: string): HTMLElement {\r\n if (this._context._options.display.icons.type === 'sprites') {\r\n const svg = document.createElement('svg');\r\n svg.innerHTML = ``;\r\n return svg;\r\n }\r\n const icon = document.createElement('i');\r\n DOMTokenList.prototype.add.apply(icon.classList, iconClass.split(' '));\r\n return icon;\r\n }\r\n\r\n /**\r\n * A document click event to hide the widget if click is outside\r\n * @private\r\n * @param e MouseEvent\r\n */\r\n private _documentClickEvent = (e: MouseEvent) => {\r\n if (this._context._options.display.keepOpen ||\r\n this._context._options.debug ||\r\n (window as any).debug) return;\r\n\r\n if (\r\n this._isVisible &&\r\n !e.composedPath().includes(this.widget) && // click inside the widget\r\n !e.composedPath()?.includes(this._context._element) // click on the element\r\n ) {\r\n this.hide();\r\n }\r\n };\r\n\r\n /**\r\n * Click event for any action like selecting a date\r\n * @param e MouseEvent\r\n * @private\r\n */\r\n private _actionsClickEvent = (e: MouseEvent) => {\r\n this._context._action.do(e);\r\n };\r\n\r\n /**\r\n * Causes the widget to get rebuilt on next show. If the picker is already open\r\n * then hide and reshow it.\r\n * @private\r\n */\r\n _rebuild() {\r\n const wasVisible = this._isVisible;\r\n if (wasVisible) this.hide();\r\n this._dispose();\r\n if (wasVisible) {\r\n this.show();\r\n }\r\n }\r\n}\r\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Dates from './dates';\n\n/**\n * Main class for date validation rules based on the options provided.\n */\nexport default class Validation {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Checks to see if the target date is valid based on the rules provided in the options.\n * Granularity can be provide to chek portions of the date instead of the whole.\n * @param targetDate\n * @param granularity\n */\n isValid(targetDate: DateTime, granularity?: Unit): boolean {\n if (\n this._context._options.restrictions.disabledDates.length > 0 &&\n this._isInDisabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledDates.length > 0 &&\n !this._isInEnabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.daysOfWeekDisabled?.length > 0 &&\n this._context._options.restrictions.daysOfWeekDisabled.indexOf(\n targetDate.weekDay\n ) !== -1\n ) {\n return false;\n }\n\n if (\n this._context._options.restrictions.minDate &&\n targetDate.isBefore(\n this._context._options.restrictions.minDate,\n granularity\n )\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.maxDate &&\n targetDate.isAfter(\n this._context._options.restrictions.maxDate,\n granularity\n )\n ) {\n return false;\n }\n\n if (\n granularity === Unit.hours ||\n granularity === Unit.minutes ||\n granularity === Unit.seconds\n ) {\n if (\n this._context._options.restrictions.disabledHours.length > 0 &&\n this._isInDisabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledHours.length > 0 &&\n !this._isInEnabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.disabledTimeIntervals.length > 0\n ) {\n for (\n let i = 0;\n i < this._context._options.restrictions.disabledTimeIntervals.length;\n i++\n ) {\n if (\n targetDate.isBetween(\n this._context._options.restrictions.disabledTimeIntervals[i].from,\n this._context._options.restrictions.disabledTimeIntervals[i].to\n )\n )\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Checks to see if the disabledDates option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInDisabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledDates ||\n this._context._options.restrictions.disabledDates.length === 0\n )\n return false;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.disabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the enabledDates option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInEnabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledDates ||\n this._context._options.restrictions.enabledDates.length === 0\n )\n return true;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.enabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the disabledHours option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInDisabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledHours ||\n this._context._options.restrictions.disabledHours.length === 0\n )\n return false;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.disabledHours.find(\n (x) => x === formattedDate\n );\n }\n\n /**\n * Checks to see if the enabledHours option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInEnabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledHours ||\n this._context._options.restrictions.enabledHours.length === 0\n )\n return true;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.enabledHours.find(\n (x) => x === formattedDate\n );\n }\n}\n","import Display from './display/index';\nimport Validation from './validation';\nimport Dates from './dates';\nimport Actions, { ActionTypes } from './actions';\nimport { DatePickerModes, DefaultOptions } from './conts';\nimport { DateTime, DateTimeFormatOptions, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options, { OptionConverter } from './options';\nimport {\n BaseEvent,\n ChangeEvent,\n ViewUpdateEvent,\n FailEvent,\n} from './event-types';\n\n/**\n * A robust and powerful date/time picker component.\n */\nclass TempusDominus {\n dates: Dates;\n\n _options: Options;\n _currentViewMode = 0;\n _subscribers: { [key: string]: ((event: any) => {})[] } = {};\n _element: HTMLElement;\n _input: HTMLInputElement;\n _unset: boolean;\n _minViewModeNumber = 0;\n _display: Display;\n _validation: Validation;\n _action: Actions;\n private _isDisabled = false;\n private _notifyChangeEventContext = 0;\n private _toggle: HTMLElement;\n private _currentPromptTimeTimeout: any;\n\n constructor(element: HTMLElement, options: Options = {} as Options) {\n if (!element) {\n Namespace.errorMessages.mustProvideElement;\n }\n this._element = element;\n this._options = this._initializeOptions(options, DefaultOptions, true);\n this._viewDate.setLocale(this._options.localization.locale);\n this._unset = true;\n\n this._display = new Display(this);\n this._validation = new Validation(this);\n this.dates = new Dates(this);\n this._action = new Actions(this);\n\n this._initializeInput();\n this._initializeToggle();\n\n if (this._options.display.inline) this._display.show();\n }\n\n _viewDate = new DateTime();\n\n get viewDate() {\n return this._viewDate;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Update the picker options. If `reset` is provide `options` will be merged with DefaultOptions instead.\n * @param options\n * @param reset\n * @public\n */\n updateOptions(options, reset = false): void {\n if (reset) this._options = this._initializeOptions(options, DefaultOptions);\n else this._options = this._initializeOptions(options, this._options);\n this._display._rebuild();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Toggles the picker open or closed. If the picker is disabled, nothing will happen.\n * @public\n */\n toggle(): void {\n if (this._isDisabled) return;\n this._display.toggle();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Shows the picker unless the picker is disabled.\n * @public\n */\n show(): void {\n if (this._isDisabled) return;\n this._display.show();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker unless the picker is disabled.\n * @public\n */\n hide(): void {\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Disables the picker and the target input field.\n * @public\n */\n disable(): void {\n this._isDisabled = true;\n // todo this might be undesired. If a dev disables the input field to\n // only allow using the picker, this will break that.\n this._input?.setAttribute('disabled', 'disabled');\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Enables the picker and the target input field.\n * @public\n */\n enable(): void {\n this._isDisabled = false;\n this._input?.removeAttribute('disabled');\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Clears all the selected dates\n * @public\n */\n clear(): void {\n this.dates.clear();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Allows for a direct subscription to picker events, without having to use addEventListener on the element.\n * @param eventTypes See Namespace.Events\n * @param callbacks Function to call when event is triggered\n * @public\n */\n subscribe(\n eventTypes: string | string[],\n callbacks: (event: any) => void | ((event: any) => void)[]\n ): { unsubscribe: void }[] {\n if (typeof eventTypes === 'string') {\n eventTypes = [eventTypes];\n }\n let callBackArray = [];\n if (!Array.isArray(callbacks)) {\n callBackArray = [callbacks];\n } else {\n callBackArray = callbacks;\n }\n\n if (eventTypes.length !== callBackArray.length) {\n Namespace.errorMessages.subscribeMismatch;\n }\n\n const returnArray = [];\n\n for (let i = 0; i < eventTypes.length; i++) {\n const eventType = eventTypes[i];\n if (!Array.isArray(this._subscribers[eventType])) {\n this._subscribers[eventType] = [];\n }\n\n this._subscribers[eventType].push(callBackArray[i]);\n\n returnArray.push({\n unsubscribe: this._unsubscribe.bind(\n this,\n eventType,\n this._subscribers[eventType].length - 1\n ),\n });\n\n if (eventTypes.length === 1) {\n return returnArray[0];\n }\n }\n\n return returnArray;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker and removes event listeners\n */\n dispose() {\n this._display.hide();\n // this will clear the document click event listener\n this._display._dispose();\n this._input?.removeEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input?.removeEventListener('click', this._toggleClickEvent);\n }\n this._toggle.removeEventListener('click', this._toggleClickEvent);\n this._subscribers = {};\n }\n\n /**\n * Triggers an event like ChangeEvent when the picker has updated the value\n * of a selected date.\n * @param event Accepts a BaseEvent object.\n * @private\n */\n _triggerEvent(event: BaseEvent) {\n // checking hasOwnProperty because the BasicEvent also falls through here otherwise\n if ((event as ChangeEvent) && event.hasOwnProperty('date')) {\n const { date, oldDate, isClear } = event as ChangeEvent;\n // this was to prevent a max call stack error\n // https://github.com/tempusdominus/core/commit/15a280507f5277b31b0b3319ab1edc7c19a000fb\n // todo see if this is still needed or if there's a cleaner way\n this._notifyChangeEventContext++;\n if (\n (date && oldDate && date.isSame(oldDate)) ||\n (!isClear && !date && !oldDate) ||\n this._notifyChangeEventContext > 1\n ) {\n this._notifyChangeEventContext = 0;\n return;\n }\n this._handleAfterChangeEvent(event as ChangeEvent);\n }\n\n this._element.dispatchEvent(\n new CustomEvent(event.type, { detail: event as any })\n );\n\n if ((window as any).jQuery) {\n const $ = (window as any).jQuery;\n $(this._element).trigger(event);\n }\n\n const publish = () => {\n // return if event is not subscribed\n if (!Array.isArray(this._subscribers[event.type])) {\n return;\n }\n\n // Trigger callback for each subscriber\n this._subscribers[event.type].forEach((callback) => {\n callback(event);\n });\n };\n\n publish();\n\n this._notifyChangeEventContext = 0;\n }\n\n /**\n * Fires a ViewUpdate event when, for example, the month view is changed.\n * @param {Unit} unit\n * @private\n */\n _viewUpdate(unit: Unit) {\n this._triggerEvent({\n type: Namespace.events.update,\n change: unit,\n viewDate: this._viewDate.clone,\n } as ViewUpdateEvent);\n }\n\n private _unsubscribe(eventName, index) {\n this._subscribers[eventName].splice(index, 1);\n }\n\n /**\n * Merges two Option objects together and validates options type\n * @param config new Options\n * @param mergeTo Options to merge into\n * @param includeDataset When true, the elements data-td attributes will be included in the\n * @private\n */\n private _initializeOptions(\n config: Options,\n mergeTo: Options,\n includeDataset = false\n ): Options {\n config = OptionConverter._mergeOptions(config, mergeTo);\n if (includeDataset)\n config = OptionConverter._dataToOptions(this._element, config);\n\n OptionConverter._validateConflcits(config);\n\n config.viewDate = config.viewDate.setLocale(config.localization.locale);\n\n if (!this._viewDate.isSame(config.viewDate)) {\n this._viewDate = config.viewDate;\n }\n\n /**\n * Sets the minimum view allowed by the picker. For example the case of only\n * allowing year and month to be selected but not date.\n */\n if (config.display.components.year) {\n this._minViewModeNumber = 2;\n }\n if (config.display.components.month) {\n this._minViewModeNumber = 1;\n }\n if (config.display.components.date) {\n this._minViewModeNumber = 0;\n }\n\n this._currentViewMode = Math.max(\n this._minViewModeNumber,\n this._currentViewMode\n );\n\n // Update view mode if needed\n if (\n DatePickerModes[this._currentViewMode].name !== config.display.viewMode\n ) {\n this._currentViewMode = Math.max(\n DatePickerModes.findIndex((x) => x.name === config.display.viewMode),\n this._minViewModeNumber\n );\n }\n\n // defaults the input format based on the components enabled\n if (config.hooks.inputFormat === undefined) {\n const components = config.display.components;\n config.hooks.inputFormat = (date: DateTime) => {\n return date.format({\n year: components.calendar && components.year ? 'numeric' : undefined,\n month:\n components.calendar && components.month ? '2-digit' : undefined,\n day: components.calendar && components.date ? '2-digit' : undefined,\n hour:\n components.clock && components.hours\n ? components.useTwentyfourHour\n ? '2-digit'\n : 'numeric'\n : undefined,\n minute:\n components.clock && components.minutes ? '2-digit' : undefined,\n second:\n components.clock && components.seconds ? '2-digit' : undefined,\n hour12: !components.useTwentyfourHour,\n });\n };\n }\n\n if (this._display?.isVisible) {\n this._display._update('all');\n }\n\n return config;\n }\n\n /**\n * Checks if an input field is being used, attempts to locate one and sets an\n * event listener if found.\n * @private\n */\n private _initializeInput() {\n if (this._element.tagName == 'INPUT') {\n this._input = this._element as HTMLInputElement;\n } else {\n let query = this._element.dataset.tdTargetInput;\n if (query == undefined || query == 'nearest') {\n this._input = this._element.querySelector('input');\n } else {\n this._input = this._element.querySelector(query);\n }\n }\n\n if (!this._input) return;\n\n this._input.addEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input.addEventListener('click', this._toggleClickEvent);\n }\n\n if (this._input.value) {\n this._inputChangeEvent();\n }\n }\n\n /**\n * Attempts to locate a toggle for the picker and sets an event listener\n * @private\n */\n private _initializeToggle() {\n if (this._options.display.inline) return;\n let query = this._element.dataset.tdTargetToggle;\n if (query == 'nearest') {\n query = '[data-td-toggle=\"datetimepicker\"]';\n }\n this._toggle =\n query == undefined ? this._element : this._element.querySelector(query);\n this._toggle.addEventListener('click', this._toggleClickEvent);\n }\n\n /**\n * If the option is enabled this will render the clock view after a date pick.\n * @param e change event\n * @private\n */\n private _handleAfterChangeEvent(e: ChangeEvent) {\n if (\n // options is disabled\n !this._options.promptTimeOnDateChange ||\n this._options.display.inline ||\n this._options.display.sideBySide ||\n // time is disabled\n !this._display._hasTime ||\n // clock component is already showing\n this._display.widget\n ?.getElementsByClassName(Namespace.css.show)[0]\n .classList.contains(Namespace.css.timeContainer)\n )\n return;\n\n // First time ever. If useCurrent option is set to true (default), do nothing\n // because the first date is selected automatically.\n // or date didn't change (time did) or date changed because time did.\n if (\n (!e.oldDate && this._options.useCurrent) ||\n (e.oldDate && e.date?.isSame(e.oldDate))\n ) {\n return;\n }\n\n clearTimeout(this._currentPromptTimeTimeout);\n this._currentPromptTimeTimeout = setTimeout(() => {\n if (this._display.widget) {\n this._action.do(\n {\n currentTarget: this._display.widget.querySelector(\n `.${Namespace.css.switch} div`\n ),\n },\n ActionTypes.togglePicker\n );\n }\n }, this._options.promptTimeOnDateChangeTransitionDelay);\n }\n\n /**\n * Event for when the input field changes. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _inputChangeEvent = () => {\n const setViewDate = () => {\n if (this.dates.lastPicked) this._viewDate = this.dates.lastPicked;\n };\n\n const value = this._input.value;\n if (this._options.multipleDates) {\n try {\n const valueSplit = value.split(this._options.multipleDatesSeparator);\n for (let i = 0; i < valueSplit.length; i++) {\n if (this._options.hooks.inputParse) {\n this.dates.set(\n this._options.hooks.inputParse(valueSplit[i]),\n i,\n 'input'\n );\n } else {\n this.dates.set(valueSplit[i], i, 'input');\n }\n }\n setViewDate();\n } catch {\n console.warn(\n 'TD: Something went wrong trying to set the multidate values from the input field.'\n );\n }\n } else {\n if (this._options.hooks.inputParse) {\n this.dates.set(this._options.hooks.inputParse(value), 0, 'input');\n } else {\n this.dates.set(value, 0, 'input');\n }\n setViewDate();\n }\n };\n\n /**\n * Event for when the toggle is clicked. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _toggleClickEvent = () => {\n this.toggle();\n };\n}\n\nexport {\n TempusDominus,\n Namespace,\n DefaultOptions,\n DateTime,\n Options,\n Unit,\n DateTimeFormatOptions,\n};\n"],"names":["Unit","SecondDisplay","createPopper"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tempus-dominus.js","sources":["../../src/js/datetime.ts","../../src/js/errors.ts","../../src/js/namespace.ts","../../src/js/conts.ts","../../src/js/display/collapse.ts","../../src/js/actions.ts","../../src/js/display/calendar/date-display.ts","../../src/js/display/calendar/month-display.ts","../../src/js/options.ts","../../src/js/dates.ts","../../src/js/display/calendar/year-display.ts","../../src/js/display/calendar/decade-display.ts","../../src/js/display/time/time-display.ts","../../src/js/display/time/hour-display.ts","../../src/js/display/time/minute-display.ts","../../src/js/display/time/second-display.ts","../../src/js/display/index.ts","../../src/js/validation.ts","../../src/js/tempus-dominus.ts"],"sourcesContent":["export enum Unit {\r\n seconds = 'seconds',\r\n minutes = 'minutes',\r\n hours = 'hours',\r\n date = 'date',\r\n month = 'month',\r\n year = 'year',\r\n}\r\n\r\nexport interface DateTimeFormatOptions extends Intl.DateTimeFormatOptions {\r\n timeStyle?: 'short' | 'medium' | 'long';\r\n dateStyle?: 'short' | 'medium' | 'long' | 'full';\r\n}\r\n\r\n/**\r\n * For the most part this object behaves exactly the same way\r\n * as the native Date object with a little extra spice.\r\n */\r\nexport class DateTime extends Date {\r\n /**\r\n * Used with Intl.DateTimeFormat\r\n */\r\n locale = 'default';\r\n\r\n /**\r\n * Chainable way to set the {@link locale}\r\n * @param value\r\n */\r\n setLocale(value: string): this {\r\n this.locale = value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Converts a plain JS date object to a DateTime object.\r\n * Doing this allows access to format, etc.\r\n * @param date\r\n */\r\n static convert(date: Date): DateTime {\r\n if (!date) throw `A date is required`;\r\n return new DateTime(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate(),\r\n date.getHours(),\r\n date.getMinutes(),\r\n date.getSeconds(),\r\n date.getMilliseconds()\r\n );\r\n }\r\n\r\n /**\r\n * Native date manipulations are not pure functions. This function creates a duplicate of the DateTime object.\r\n */\r\n get clone() {\r\n return new DateTime(\r\n this.year,\r\n this.month,\r\n this.date,\r\n this.hours,\r\n this.minutes,\r\n this.seconds,\r\n this.getMilliseconds()\r\n ).setLocale(this.locale);\r\n }\r\n\r\n /**\r\n * Sets the current date to the start of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).startOf('month')\r\n * would return April 1, 2021, 12:00:00.000 AM (midnight)\r\n * @param unit\r\n */\r\n startOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(0);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(0, 0);\r\n break;\r\n case 'hours':\r\n this.setMinutes(0, 0, 0);\r\n break;\r\n case 'date':\r\n this.setHours(0, 0, 0, 0);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(0 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.startOf(Unit.date);\r\n this.setDate(1);\r\n break;\r\n case 'year':\r\n this.startOf(Unit.date);\r\n this.setMonth(0, 1);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the current date to the end of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).endOf('month')\r\n * would return April 30, 2021, 11:59:59.999 PM\r\n * @param unit\r\n */\r\n endOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(999);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(59, 999);\r\n break;\r\n case 'hours':\r\n this.setMinutes(59, 59, 999);\r\n break;\r\n case 'date':\r\n this.setHours(23, 59, 59, 999);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(6 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.month);\r\n this.setDate(0);\r\n break;\r\n case 'year':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.year);\r\n this.setDate(0);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Change a {@link unit} value. Value can be positive or negative\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).manipulate(1, 'month')\r\n * would return May 30, 2021, 11:45:32.984 AM\r\n * @param value A positive or negative number\r\n * @param unit\r\n */\r\n manipulate(value: number, unit: Unit): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n this[unit] += value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns a string format.\r\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat\r\n * for valid templates and locale objects\r\n * @param template An object. Uses browser defaults otherwise.\r\n * @param locale Can be a string or an array of strings. Uses browser defaults otherwise.\r\n */\r\n format(template: DateTimeFormatOptions, locale = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, template).format(this);\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is before this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isBefore(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() < compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() < compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is after this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isAfter(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() > compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() > compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is same this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isSame(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() === compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n compare = DateTime.convert(compare);\r\n return (\r\n this.clone.startOf(unit).valueOf() === compare.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Check if this is between two other DateTimes, optionally looking at unit scale. The match is exclusive.\r\n * @param left\r\n * @param right\r\n * @param unit.\r\n * @param inclusivity. A [ indicates inclusion of a value. A ( indicates exclusion.\r\n * If the inclusivity parameter is used, both indicators must be passed.\r\n */\r\n isBetween(\r\n left: DateTime,\r\n right: DateTime,\r\n unit?: Unit,\r\n inclusivity: '()' | '[]' | '(]' | '[)' = '()'\r\n ): boolean {\r\n if (unit && this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n const leftInclusivity = inclusivity[0] === '(';\r\n const rightInclusivity = inclusivity[1] === ')';\r\n\r\n return (\r\n ((leftInclusivity\r\n ? this.isAfter(left, unit)\r\n : !this.isBefore(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isBefore(right, unit)\r\n : !this.isAfter(right, unit))) ||\r\n ((leftInclusivity\r\n ? this.isBefore(left, unit)\r\n : !this.isAfter(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isAfter(right, unit)\r\n : !this.isBefore(right, unit)))\r\n );\r\n }\r\n\r\n /**\r\n * Returns flattened object of the date. Does not include literals\r\n * @param locale\r\n * @param template\r\n */\r\n parts(\r\n locale = this.locale,\r\n template: any = { dateStyle: 'full', timeStyle: 'long' }\r\n ) {\r\n const parts = {};\r\n new Intl.DateTimeFormat(locale, template)\r\n .formatToParts(this)\r\n .filter((x) => x.type !== 'literal')\r\n .forEach((x) => (parts[x.type] = x.value));\r\n return parts;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getSeconds()\r\n */\r\n get seconds(): number {\r\n return this.getSeconds();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setSeconds()\r\n */\r\n set seconds(value: number) {\r\n this.setSeconds(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get secondsFormatted(): string {\r\n return this.format({ second: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMinutes()\r\n */\r\n get minutes(): number {\r\n return this.getMinutes();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMinutes()\r\n */\r\n set minutes(value: number) {\r\n this.setMinutes(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get minutesFormatted(): string {\r\n return this.format({ minute: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getHours()\r\n */\r\n get hours(): number {\r\n return this.getHours();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setHours()\r\n */\r\n set hours(value: number) {\r\n this.setHours(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get hoursFormatted(): string {\r\n return this.format({ hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Returns two digit hours but in twelve hour mode e.g. 13 -> 1\r\n */\r\n get twelveHoursFormatted(): string {\r\n return this.format({ hour12: true, hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Get the meridiem of the date. E.g. AM or PM.\r\n * If the {@link locale} provides a \"dayPeriod\" then this will be returned,\r\n * otherwise it will return AM or PM.\r\n * @param locale\r\n */\r\n meridiem(locale: string = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, {\r\n hour: 'numeric',\r\n hour12: true,\r\n } as any)\r\n .formatToParts(this)\r\n .find((p) => p.type === 'dayPeriod')?.value;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDate()\r\n */\r\n get date(): number {\r\n return this.getDate();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setDate()\r\n */\r\n set date(value: number) {\r\n this.setDate(value);\r\n }\r\n\r\n /**\r\n * Return two digit date\r\n */\r\n get dateFormatted(): string {\r\n return this.date < 10 ? `0${this.date}` : `${this.date}`;\r\n }\r\n\r\n // https://github.com/you-dont-need/You-Dont-Need-Momentjs#week-of-year\r\n /**\r\n * Gets the week of the year\r\n */\r\n get week(): number {\r\n const startOfYear = new Date(this.year, 0, 1);\r\n startOfYear.setDate(\r\n startOfYear.getDate() + (1 - (startOfYear.getDay() % 7))\r\n );\r\n return Math.round((this.valueOf() - startOfYear.valueOf()) / 604800000) + 1;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDay()\r\n */\r\n get weekDay(): number {\r\n return this.getDay();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMonth()\r\n */\r\n get month(): number {\r\n return this.getMonth();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMonth()\r\n */\r\n set month(value: number) {\r\n this.setMonth(value);\r\n }\r\n\r\n /**\r\n * Return two digit, human expected month. E.g. January = 1, December = 12\r\n */\r\n get monthFormatted(): string {\r\n return this.month + 1 < 10 ? `0${this.month}` : `${this.month}`;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getFullYear()\r\n */\r\n get year(): number {\r\n return this.getFullYear();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setFullYear()\r\n */\r\n set year(value: number) {\r\n this.setFullYear(value);\r\n }\r\n}\r\n","import Namespace from './namespace';\n\nexport class TdError extends Error {\n code: number;\n}\n\nexport class ErrorMessages {\n private base = 'TD:';\n\n //#region out to console\n\n /**\n * Throws an error indicating that a key in the options object is invalid.\n * @param optionName\n */\n unexpectedOption(optionName: string) {\n const error = new TdError(\n `${this.base} Unexpected option: ${optionName} does not match a known option.`\n );\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error indicating that one more keys in the options object is invalid.\n * @param optionName\n */\n unexpectedOptions(optionName: string[]) {\n const error = new TdError(`${this.base}: ${optionName.join(', ')}`);\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error when an option is provide an unsupported value.\n * For example a value of 'cheese' for toolbarPlacement which only supports\n * 'top', 'bottom', 'default'.\n * @param optionName\n * @param badValue\n * @param validOptions\n */\n unexpectedOptionValue(\n optionName: string,\n badValue: string,\n validOptions: string[]\n ) {\n const error = new TdError(\n `${\n this.base\n } Unexpected option value: ${optionName} does not accept a value of \"${badValue}\". Valid values are: ${validOptions.join(\n ', '\n )}`\n );\n error.code = 2;\n throw error;\n }\n\n /**\n * Throws an error when an option value is the wrong type.\n * For example a string value was provided to multipleDates which only\n * supports true or false.\n * @param optionName\n * @param badType\n * @param expectedType\n */\n typeMismatch(optionName: string, badType: string, expectedType: string) {\n const error = new TdError(\n `${this.base} Mismatch types: ${optionName} has a type of ${badType} instead of the required ${expectedType}`\n );\n error.code = 3;\n throw error;\n }\n\n /**\n * Throws an error when an option value is outside of the expected range.\n * For example restrictions.daysOfWeekDisabled excepts a value between 0 and 6.\n * @param optionName\n * @param lower\n * @param upper\n */\n numbersOutOfRage(optionName: string, lower: number, upper: number) {\n const error = new TdError(\n `${this.base} ${optionName} expected an array of number between ${lower} and ${upper}.`\n );\n error.code = 4;\n throw error;\n }\n\n /**\n * Throws an error when a value for a date options couldn't be parsed. Either\n * the option was an invalide string or an invalid Date object.\n * @param optionName\n * @param date\n * @param soft If true, logs a warning instead of an error.\n */\n failedToParseDate(optionName: string, date: any, soft = false) {\n const error = new TdError(\n `${this.base} Could not correctly parse \"${date}\" to a date for ${optionName}.`\n );\n error.code = 5;\n if (!soft) throw error;\n console.warn(error);\n }\n\n /**\n * Throws when an element to attach to was not provided in the constructor.\n */\n mustProvideElement() {\n const error = new TdError(`${this.base} No element was provided.`);\n error.code = 6;\n throw error;\n }\n\n /**\n * Throws if providing an array for the events to subscribe method doesn't have\n * the same number of callbacks. E.g., subscribe([1,2], [1])\n */\n subscribeMismatch() {\n const error = new TdError(\n `${this.base} The subscribed events does not match the number of callbacks`\n );\n error.code = 7;\n throw error;\n }\n\n /**\n * Throws if the configuration has conflicting rules e.g. minDate is after maxDate\n */\n conflictingConfiguration(message?: string) {\n const error = new TdError(\n `${this.base} A configuration value conflicts with another rule. ${message}`\n );\n error.code = 8;\n throw error;\n }\n\n /**\n * Logs a warning if a date option value is provided as a string, instead of\n * a date/datetime object.\n */\n dateString() {\n console.warn(\n `${this.base} Using a string for date options is not recommended unless you specify an ISO string.`\n );\n }\n\n //#endregion\n\n //#region used with notify.error\n\n /**\n * Used with an Error Event type if the user selects a date that\n * fails restriction validation.\n */\n failedToSetInvalidDate = 'Failed to set invalid date';\n\n /**\n * Used with an Error Event type when a user changes the value of the\n * input field directly, and does not provide a valid date.\n */\n failedToParseInput = 'Failed parse input field';\n\n //#endregion\n}\n","import { ErrorMessages } from './errors';\n// this is not the way I want this to stay but nested classes seemed to blown up once its compiled.\nconst NAME = 'tempus-dominus',\n version = '6.0.0-alpha1',\n dataKey = 'td';\n\n/**\n * Events\n */\nclass Events {\n key = `.${dataKey}`;\n\n /**\n * Change event. Fired when the user selects a date.\n * See also EventTypes.ChangeEvent\n */\n change = `change${this.key}`;\n\n /**\n * Emit when the view changes for example from month view to the year view.\n * See also EventTypes.ViewUpdateEvent\n */\n update = `update${this.key}`;\n\n /**\n * Emits when a selected date or value from the input field fails to meet the provided validation rules.\n * See also EventTypes.FailEvent\n */\n error = `error${this.key}`;\n\n /**\n * Show event\n * @event Events#show\n */\n show = `show${this.key}`;\n\n /**\n * Hide event\n * @event Events#hide\n */\n hide = `hide${this.key}`;\n\n // blur and focus are used in the jQuery provider but are otherwise unused.\n // keyup/down will be used later for keybinding options\n\n blur = `blur${this.key}`;\n focus = `focus${this.key}`;\n keyup = `keyup${this.key}`;\n keydown = `keydown${this.key}`;\n}\n\nclass Css {\n /**\n * The outer element for the widget.\n */\n widget = `${NAME}-widget`;\n\n /**\n * Hold the previous, next and switcher divs\n */\n calendarHeader = 'calendar-header';\n\n /**\n * The element for the action to change the calendar view. E.g. month -> year.\n */\n switch = 'picker-switch';\n\n /**\n * The elements for all of the toolbar options\n */\n toolbar = 'toolbar';\n\n /**\n * Disables the hover and rounding affect.\n */\n noHighlight = 'no-highlight';\n\n /**\n * Applied to the widget element when the side by side option is in use.\n */\n sideBySide = 'timepicker-sbs';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> July\n */\n previous = 'previous';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> September\n */\n next = 'next';\n\n /**\n * Applied to any action that would violate any restriction options. ALso applied\n * to an input field if the disabled function is called.\n */\n disabled = 'disabled';\n\n /**\n * Applied to any date that is less than requested view,\n * e.g. the last day of the previous month.\n */\n old = 'old';\n\n /**\n * Applied to any date that is greater than of requested view,\n * e.g. the last day of the previous month.\n */\n new = 'new';\n\n /**\n * Applied to any date that is currently selected.\n */\n active = 'active';\n\n //#region date element\n\n /**\n * The outer most element for the calendar view.\n */\n dateContainer = 'date-container';\n\n /**\n * The outer most element for the decades view.\n */\n decadesContainer = `${this.dateContainer}-decades`;\n\n /**\n * Applied to elements within the decades container, e.g. 2020, 2030\n */\n decade = 'decade';\n\n /**\n * The outer most element for the years view.\n */\n yearsContainer = `${this.dateContainer}-years`;\n\n /**\n * Applied to elements within the years container, e.g. 2021, 2021\n */\n year = 'year';\n\n /**\n * The outer most element for the month view.\n */\n monthsContainer = `${this.dateContainer}-months`;\n\n /**\n * Applied to elements within the month container, e.g. January, February\n */\n month = 'month';\n\n /**\n * The outer most element for the calendar view.\n */\n daysContainer = `${this.dateContainer}-days`;\n\n /**\n * Applied to elements within the day container, e.g. 1, 2..31\n */\n day = 'day';\n\n /**\n * If display.calendarWeeks is enabled, a column displaying the week of year\n * is shown. This class is applied to each cell in that column.\n */\n calendarWeeks = 'cw';\n\n /**\n * Applied to the first row of the calendar view, e.g. Sunday, Monday\n */\n dayOfTheWeek = 'dow';\n\n /**\n * Applied to the current date on the calendar view.\n */\n today = 'today';\n\n /**\n * Applied to the locale's weekend dates on the calendar view, e.g. Sunday, Saturday\n */\n weekend = 'weekend';\n\n //#endregion\n\n //#region time element\n\n /**\n * The outer most element for all time related elements.\n */\n timeContainer = 'time-container';\n\n /**\n * Applied the separator columns between time elements, e.g. hour *:* minute *:* second\n */\n separator = 'separator';\n\n /**\n * The outer most element for the clock view.\n */\n clockContainer = `${this.timeContainer}-clock`;\n\n /**\n * The outer most element for the hours selection view.\n */\n hourContainer = `${this.timeContainer}-hour`;\n\n /**\n * The outer most element for the minutes selection view.\n */\n minuteContainer = `${this.timeContainer}-minute`;\n\n /**\n * The outer most element for the seconds selection view.\n */\n secondContainer = `${this.timeContainer}-second`;\n\n /**\n * Applied to each element in the hours selection view.\n */\n hour = 'hour';\n\n /**\n * Applied to each element in the minutes selection view.\n */\n minute = 'minute';\n\n /**\n * Applied to each element in the seconds selection view.\n */\n second = 'second';\n\n /**\n * Applied AM/PM toggle button.\n */\n toggleMeridiem = 'toggleMeridiem';\n\n //#endregion\n\n //#region collapse\n\n /**\n * Applied the element of the current view mode, e.g. calendar or clock.\n */\n show = 'show';\n\n /**\n * Applied to the currently showing view mode during a transition\n * between calendar and clock views\n */\n collapsing = 'td-collapsing';\n\n /**\n * Applied to the currently hidden view mode.\n */\n collapse = 'td-collapse';\n\n //#endregion\n\n /**\n * Applied to the widget when the option display.inline is enabled.\n */\n inline = 'inline';\n}\n\nexport default class Namespace {\n static NAME = NAME;\n // noinspection JSUnusedGlobalSymbols\n static version = version;\n static dataKey = dataKey;\n\n static events = new Events();\n\n static css = new Css();\n\n static errorMessages = new ErrorMessages();\n}\n","import { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options from './options';\n\nconst DefaultOptions: Options = {\n restrictions: {\n minDate: undefined,\n maxDate: undefined,\n disabledDates: [],\n enabledDates: [],\n daysOfWeekDisabled: [],\n disabledTimeIntervals: [],\n disabledHours: [],\n enabledHours: [],\n },\n display: {\n icons: {\n type: 'icons',\n time: 'fas fa-clock',\n date: 'fas fa-calendar',\n up: 'fas fa-arrow-up',\n down: 'fas fa-arrow-down',\n previous: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n today: 'fas fa-calendar-check',\n clear: 'fas fa-trash',\n close: 'fas fa-times',\n },\n sideBySide: false,\n calendarWeeks: false,\n viewMode: 'calendar',\n toolbarPlacement: 'bottom',\n keepOpen: false,\n buttons: {\n today: false,\n clear: false,\n close: false,\n },\n components: {\n calendar: true,\n date: true,\n month: true,\n year: true,\n decades: true,\n clock: true,\n hours: true,\n minutes: true,\n seconds: false,\n useTwentyfourHour: false,\n },\n inline: false,\n },\n stepping: 1,\n useCurrent: true,\n defaultDate: undefined,\n localization: {\n today: 'Go to today',\n clear: 'Clear selection',\n close: 'Close the picker',\n selectMonth: 'Select Month',\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n selectYear: 'Select Year',\n previousYear: 'Previous Year',\n nextYear: 'Next Year',\n selectDecade: 'Select Decade',\n previousDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n previousCentury: 'Previous Century',\n nextCentury: 'Next Century',\n pickHour: 'Pick Hour',\n incrementHour: 'Increment Hour',\n decrementHour: 'Decrement Hour',\n pickMinute: 'Pick Minute',\n incrementMinute: 'Increment Minute',\n decrementMinute: 'Decrement Minute',\n pickSecond: 'Pick Second',\n incrementSecond: 'Increment Second',\n decrementSecond: 'Decrement Second',\n toggleMeridiem: 'Toggle Meridiem',\n selectTime: 'Select Time',\n selectDate: 'Select Date',\n dayViewHeaderFormat: 'long',\n locale: 'default',\n },\n keepInvalid: false,\n debug: false,\n allowInputToggle: false,\n viewDate: new DateTime(),\n multipleDates: false,\n multipleDatesSeparator: '; ',\n promptTimeOnDateChange: false,\n promptTimeOnDateChangeTransitionDelay: 200,\n hooks: {\n inputParse: undefined,\n inputFormat: undefined,\n },\n};\n\nconst DatePickerModes: {\n name: string;\n className: string;\n unit: Unit;\n step: number;\n}[] = [\n {\n name: 'calendar',\n className: Namespace.css.daysContainer,\n unit: Unit.month,\n step: 1,\n },\n {\n name: 'months',\n className: Namespace.css.monthsContainer,\n unit: Unit.year,\n step: 1,\n },\n {\n name: 'years',\n className: Namespace.css.yearsContainer,\n unit: Unit.year,\n step: 10,\n },\n {\n name: 'decades',\n className: Namespace.css.decadesContainer,\n unit: Unit.year,\n step: 100,\n },\n];\n\nexport { DefaultOptions, DatePickerModes, Namespace };\n","import Namespace from '../namespace';\n\n/**\n * Provides a collapse functionality to the view changes\n */\nexport default class Collapse {\n private timeOut;\n\n /**\n * Flips the show/hide state of `target`\n * @param target html element to affect.\n */\n toggle(target: HTMLElement, callback = undefined) {\n if (target.classList.contains(Namespace.css.show)) {\n this.hide(target, callback);\n } else {\n this.show(target, callback);\n }\n }\n\n /**\n * If `target` is not already showing, then show after the animation.\n * @param target\n */\n show(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse, Namespace.css.show);\n target.style.height = '';\n this.timeOut = null;\n if (callback) callback();\n };\n\n target.style.height = '0';\n target.classList.remove(Namespace.css.collapse);\n target.classList.add(Namespace.css.collapsing);\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n target.style.height = `${target.scrollHeight}px`;\n }\n\n /**\n * If `target` is not already hidden, then hide after the animation.\n * @param target HTML Element\n */\n hide(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n !target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse);\n this.timeOut = null;\n };\n\n target.style.height = `${target.getBoundingClientRect()['height']}px`;\n\n const reflow = (element) => element.offsetHeight;\n\n reflow(target);\n\n target.classList.remove(Namespace.css.collapse, Namespace.css.show);\n target.classList.add(Namespace.css.collapsing);\n target.style.height = '';\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n }\n\n /**\n * Gets the transition duration from the `element` by getting css properties\n * `transition-duration` and `transition-delay`\n * @param element HTML Element\n */\n private getTransitionDurationFromElement = (element: HTMLElement) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } =\n window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) +\n Number.parseFloat(transitionDelay)) *\n 1000\n );\n };\n}\n","import { DatePickerModes } from './conts.js';\nimport { DateTime, Unit } from './datetime';\nimport { TempusDominus } from './tempus-dominus';\nimport Collapse from './display/collapse';\nimport Namespace from './namespace';\n\n/**\n *\n */\nexport default class Actions {\n private _context: TempusDominus;\n private collapse: Collapse;\n\n constructor(context: TempusDominus) {\n this._context = context;\n this.collapse = new Collapse();\n }\n\n /**\n * Performs the selected `action`. See ActionTypes\n * @param e This is normally a click event\n * @param action If not provided, then look for a [data-action]\n */\n do(e: any, action?: ActionTypes) {\n const currentTarget = e.currentTarget;\n if (currentTarget.classList.contains(Namespace.css.disabled)) return false;\n action = action || currentTarget.dataset.action;\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n /**\n * Common function to manipulate {@link lastPicked} by `unit`\n * @param unit\n * @param value Value to change by\n */\n const manipulateAndSet = (unit: Unit, value = 1) => {\n const newDate = lastPicked.manipulate(value, unit);\n if (this._context._validation.isValid(newDate, unit)) {\n this._context.dates._setValue(\n newDate,\n this._context.dates.lastPickedIndex\n );\n }\n };\n\n switch (action) {\n case ActionTypes.next:\n case ActionTypes.previous:\n const { unit, step } = DatePickerModes[this._context._currentViewMode];\n if (action === ActionTypes.next)\n this._context._viewDate.manipulate(step, unit);\n else this._context._viewDate.manipulate(step * -1, unit);\n this._context._viewUpdate(unit);\n\n this._context._display._showMode();\n break;\n case ActionTypes.pickerSwitch:\n this._context._display._showMode(1);\n this._context._viewUpdate(\n DatePickerModes[this._context._currentViewMode].unit\n );\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.selectMonth:\n case ActionTypes.selectYear:\n case ActionTypes.selectDecade:\n const value = +currentTarget.dataset.value;\n switch (action) {\n case ActionTypes.selectMonth:\n this._context._viewDate.month = value;\n this._context._viewUpdate(Unit.month);\n break;\n case ActionTypes.selectYear:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n case ActionTypes.selectDecade:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n }\n\n if (\n this._context._currentViewMode === this._context._minViewModeNumber\n ) {\n this._context.dates._setValue(\n this._context._viewDate,\n this._context.dates.lastPickedIndex\n );\n if (!this._context._options.display.inline) {\n this._context._display.hide();\n }\n } else {\n this._context._display._showMode(-1);\n }\n break;\n case ActionTypes.selectDay:\n const day = this._context._viewDate.clone;\n if (currentTarget.classList.contains(Namespace.css.old)) {\n day.manipulate(-1, Unit.month);\n }\n if (currentTarget.classList.contains(Namespace.css.new)) {\n day.manipulate(1, Unit.month);\n }\n\n day.date = +currentTarget.dataset.day;\n let index = 0;\n if (this._context._options.multipleDates) {\n index = this._context.dates.pickedIndex(day, Unit.date);\n if (index !== -1) {\n this._context.dates._setValue(null, index); //deselect multi-date\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex + 1\n );\n }\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex\n );\n }\n\n if (\n !this._context._display._hasTime &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline &&\n !this._context._options.multipleDates\n ) {\n this._context._display.hide();\n }\n break;\n case ActionTypes.selectHour:\n let hour = +currentTarget.dataset.value;\n if (\n lastPicked.hours >= 12 &&\n !this._context._options.display.components.useTwentyfourHour\n )\n hour += 12;\n lastPicked.hours = hour;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.minutes &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectMinute:\n lastPicked.minutes = +currentTarget.dataset.value;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.seconds &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectSecond:\n lastPicked.seconds = +currentTarget.innerText;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.incrementHours:\n manipulateAndSet(Unit.hours);\n break;\n case ActionTypes.incrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping);\n break;\n case ActionTypes.incrementSeconds:\n manipulateAndSet(Unit.seconds);\n break;\n case ActionTypes.decrementHours:\n manipulateAndSet(Unit.hours, -1);\n break;\n case ActionTypes.decrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping * -1);\n break;\n case ActionTypes.decrementSeconds:\n manipulateAndSet(Unit.seconds, -1);\n break;\n case ActionTypes.toggleMeridiem:\n manipulateAndSet(\n Unit.hours,\n this._context.dates.lastPicked.hours >= 12 ? -12 : 12\n );\n break;\n case ActionTypes.togglePicker:\n this._context._display.widget\n .querySelectorAll(\n `.${Namespace.css.dateContainer}, .${Namespace.css.timeContainer}`\n )\n .forEach((htmlElement: HTMLElement) =>\n this.collapse.toggle(htmlElement)\n );\n if (\n currentTarget.getAttribute('title') ===\n this._context._options.localization.selectDate\n ) {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectTime\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.time\n ).outerHTML;\n\n this._context._display._updateCalendarHeader();\n } else {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectDate\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.date\n ).outerHTML;\n this.do(e, ActionTypes.showClock);\n this._context._display._update('clock');\n }\n break;\n case ActionTypes.showClock:\n case ActionTypes.showHours:\n case ActionTypes.showMinutes:\n case ActionTypes.showSeconds:\n this._context._display.widget\n .querySelectorAll(`.${Namespace.css.timeContainer} > div`)\n .forEach(\n (htmlElement: HTMLElement) => (htmlElement.style.display = 'none')\n );\n\n let classToUse = '';\n switch (action) {\n case ActionTypes.showClock:\n classToUse = Namespace.css.clockContainer;\n this._context._display._update('clock');\n break;\n case ActionTypes.showHours:\n classToUse = Namespace.css.hourContainer;\n this._context._display._update(Unit.hours);\n break;\n case ActionTypes.showMinutes:\n classToUse = Namespace.css.minuteContainer;\n this._context._display._update(Unit.minutes);\n break;\n case ActionTypes.showSeconds:\n classToUse = Namespace.css.secondContainer;\n this._context._display._update(Unit.seconds);\n break;\n }\n\n ((\n this._context._display.widget.getElementsByClassName(classToUse)[0]\n )).style.display = 'grid';\n break;\n case ActionTypes.clear:\n this._context.dates._setValue(null);\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.close:\n this._context._display.hide();\n break;\n case ActionTypes.today:\n const today = new DateTime().setLocale(\n this._context._options.localization.locale\n );\n this._context._viewDate = today;\n if (this._context._validation.isValid(today, Unit.date))\n this._context.dates._setValue(\n today,\n this._context.dates.lastPickedIndex\n );\n break;\n }\n }\n}\n\nexport enum ActionTypes {\n next = 'next',\n previous = 'previous',\n pickerSwitch = 'pickerSwitch',\n selectMonth = 'selectMonth',\n selectYear = 'selectYear',\n selectDecade = 'selectDecade',\n selectDay = 'selectDay',\n selectHour = 'selectHour',\n selectMinute = 'selectMinute',\n selectSecond = 'selectSecond',\n incrementHours = 'incrementHours',\n incrementMinutes = 'incrementMinutes',\n incrementSeconds = 'incrementSeconds',\n decrementHours = 'decrementHours',\n decrementMinutes = 'decrementMinutes',\n decrementSeconds = 'decrementSeconds',\n toggleMeridiem = 'toggleMeridiem',\n togglePicker = 'togglePicker',\n showClock = 'showClock',\n showHours = 'showHours',\n showMinutes = 'showMinutes',\n showSeconds = 'showSeconds',\n clear = 'clear',\n close = 'close',\n today = 'today',\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `date`\r\n */\r\nexport default class DateDisplay {\r\n private _context: TempusDominus;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.daysContainer);\r\n\r\n container.append(...this._daysOfTheWeek());\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(Namespace.css.calendarWeeks, Namespace.css.noHighlight);\r\n container.appendChild(div);\r\n }\r\n\r\n for (let i = 0; i < 42; i++) {\r\n if (i !== 0 && i % 7 === 0) {\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n container.appendChild(div);\r\n }\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDay);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update(): void {\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.daysContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.daysContainer,\r\n this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n })\r\n );\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(-1, Unit.month),\r\n Unit.month\r\n )\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(1, Unit.month),\r\n Unit.month\r\n )\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.month)\r\n .startOf('weekDay')\r\n .manipulate(12, Unit.hours);\r\n\r\n container\r\n .querySelectorAll(\r\n `[data-action=\"${ActionTypes.selectDay}\"], .${Namespace.css.calendarWeeks}`\r\n )\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (\r\n this._context._options.display.calendarWeeks &&\r\n containerClone.classList.contains(Namespace.css.calendarWeeks)\r\n ) {\r\n if (containerClone.innerText === '#') return;\r\n containerClone.innerText = `${innerDate.week}`;\r\n return;\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.day);\r\n\r\n if (innerDate.isBefore(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.old);\r\n }\r\n if (innerDate.isAfter(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.new);\r\n }\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.date)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.date)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n if (innerDate.isSame(new DateTime(), Unit.date)) {\r\n classes.push(Namespace.css.today);\r\n }\r\n if (innerDate.weekDay === 0 || innerDate.weekDay === 6) {\r\n classes.push(Namespace.css.weekend);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`\r\n );\r\n containerClone.setAttribute(\r\n 'data-day',\r\n `${innerDate.date}`\r\n );\r\n containerClone.innerText = innerDate.format({ day: \"numeric\" });\r\n innerDate.manipulate(1, Unit.date);\r\n });\r\n }\r\n\r\n /***\r\n * Generates an html row that contains the days of the week.\r\n * @private\r\n */\r\n private _daysOfTheWeek(): HTMLElement[] {\r\n let innerDate = this._context._viewDate.clone\r\n .startOf('weekDay')\r\n .startOf(Unit.date);\r\n const row = [];\r\n document.createElement('div');\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = '#';\r\n row.push(htmlDivElement);\r\n }\r\n\r\n for (let i = 0; i < 7; i++) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.dayOfTheWeek,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = innerDate.format({ weekday: 'short' });\r\n innerDate.manipulate(1, Unit.date);\r\n row.push(htmlDivElement);\r\n }\r\n\r\n return row;\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `month`\n */\nexport default class MonthDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.monthsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMonth);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.monthsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.monthsContainer,\n this._context._viewDate.format({ year: 'numeric' })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.year),\n Unit.year\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.year),\n Unit.year\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone.startOf(Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMonth}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.month);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.month)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.month)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${index}`);\n containerClone.innerText = `${innerDate.format({ month: 'short' })}`;\n innerDate.manipulate(1, Unit.month);\n });\n }\n}\n","import { DateTime, DateTimeFormatOptions } from './datetime';\nimport Namespace from './namespace';\nimport { DefaultOptions } from './conts';\n\nexport default interface Options {\n restrictions: {\n minDate: DateTime;\n maxDate: DateTime;\n enabledDates: DateTime[];\n disabledDates: DateTime[];\n enabledHours: number[];\n disabledHours: number[];\n disabledTimeIntervals: { from: DateTime; to: DateTime }[];\n daysOfWeekDisabled: number[];\n };\n display: {\n toolbarPlacement: 'top' | 'bottom';\n components: {\n calendar: boolean;\n date: boolean;\n month: boolean;\n year: boolean;\n decades: boolean;\n clock: boolean;\n hours: boolean;\n minutes: boolean;\n seconds: boolean;\n useTwentyfourHour: boolean;\n };\n buttons: { today: boolean; close: boolean; clear: boolean };\n calendarWeeks: boolean;\n icons: {\n date: string;\n next: string;\n previous: string;\n today: string;\n clear: string;\n time: string;\n up: string;\n type: 'icons' | 'sprites';\n down: string;\n close: string;\n };\n viewMode: 'clock' | 'calendar' | 'months' | 'years' | 'decades';\n sideBySide: boolean;\n inline: boolean;\n keepOpen: boolean;\n };\n stepping: number;\n useCurrent: boolean;\n defaultDate: DateTime;\n localization: {\n nextMonth: string;\n pickHour: string;\n incrementSecond: string;\n nextDecade: string;\n selectDecade: string;\n dayViewHeaderFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n decrementHour: string;\n selectDate: string;\n incrementHour: string;\n previousCentury: string;\n decrementSecond: string;\n today: string;\n previousMonth: string;\n selectYear: string;\n pickSecond: string;\n nextCentury: string;\n close: string;\n incrementMinute: string;\n selectTime: string;\n clear: string;\n toggleMeridiem: string;\n selectMonth: string;\n decrementMinute: string;\n pickMinute: string;\n nextYear: string;\n previousYear: string;\n previousDecade: string;\n locale: string;\n };\n keepInvalid: boolean;\n debug: boolean;\n allowInputToggle: boolean;\n viewDate: DateTime;\n multipleDates: boolean;\n multipleDatesSeparator: string;\n promptTimeOnDateChange: boolean;\n promptTimeOnDateChangeTransitionDelay: number;\n hooks: {\n inputParse: (value: any) => DateTime;\n inputFormat: (date: DateTime) => string;\n };\n}\n\nexport class OptionConverter {\n static _mergeOptions(providedOptions: Options, mergeTo: Options): Options {\n const newOptions = {} as Options;\n let path = '';\n const ignoreProperties = ['inputParse', 'inputFormat'];\n\n const processKey = (key, value, providedType, defaultType) => {\n switch (key) {\n case 'defaultDate': {\n const dateTime = this._dateConversion(value, 'defaultDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'defaultDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'viewDate': {\n const dateTime = this._dateConversion(value, 'viewDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'viewDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'minDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.minDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.minDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'maxDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.maxDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.maxDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'disabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.disabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.disabledHours',\n 0,\n 23\n );\n return value;\n case 'enabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.enabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.enabledHours',\n 0,\n 23\n );\n return value;\n case 'daysOfWeekDisabled':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.daysOfWeekDisabled',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 6).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.daysOfWeekDisabled',\n 0,\n 6\n );\n return value;\n case 'enabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.enabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.disabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledTimeIntervals':\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n key,\n providedType,\n 'array of { from: DateTime|Date, to: DateTime|Date }'\n );\n }\n const valueObject = value as { from: any; to: any }[];\n for (let i = 0; i < valueObject.length; i++) {\n Object.keys(valueObject[i]).forEach((vk) => {\n const subOptionName = `${key}[${i}].${vk}`;\n let d = valueObject[i][vk];\n const dateTime = this._dateConversion(d, subOptionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n subOptionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n valueObject[i][vk] = dateTime;\n });\n }\n return valueObject;\n case 'toolbarPlacement':\n case 'type':\n case 'viewMode':\n case 'dayViewHeaderFormat':\n const optionValues = {\n toolbarPlacement: ['top', 'bottom', 'default'],\n type: ['icons', 'sprites'],\n viewMode: ['clock', 'calendar', 'months', 'years', 'decades'],\n dayViewHeaderFormat: [\n 'numeric',\n '2-digit',\n 'long',\n 'short',\n 'narrow',\n ],\n };\n const keyOptions = optionValues[key];\n if (!keyOptions.includes(value))\n Namespace.errorMessages.unexpectedOptionValue(\n path.substring(1),\n value,\n keyOptions\n );\n\n return value;\n case 'inputParse':\n case 'inputFormat':\n return value;\n default:\n switch (defaultType) {\n case 'boolean':\n return value === 'true' || value === true;\n case 'number':\n return +value;\n case 'string':\n return value.toString();\n case 'object':\n return {};\n case 'function':\n return value;\n default:\n Namespace.errorMessages.typeMismatch(\n path.substring(1),\n providedType,\n defaultType\n );\n }\n }\n };\n\n /**\n * The spread operator caused sub keys to be missing after merging.\n * This is to fix that issue by using spread on the child objects first.\n * Also handles complex options like disabledDates\n * @param provided An option from new providedOptions\n * @param mergeOption Default option to compare types against\n * @param copyTo Destination object. This was add to prevent reference copies\n */\n const spread = (provided, mergeOption, copyTo) => {\n const unsupportedOptions = Object.keys(provided).filter(\n (x) => !Object.keys(mergeOption).includes(x)\n );\n if (unsupportedOptions.length > 0) {\n const flattenedOptions = OptionConverter._flattenDefaultOptions;\n\n const errors = unsupportedOptions.map((x) => {\n let error = `\"${path.substring(1)}.${x}\" in not a known option.`;\n let didYouMean = flattenedOptions.find((y) => y.includes(x));\n if (didYouMean) error += `Did you mean \"${didYouMean}\"?`;\n return error;\n });\n Namespace.errorMessages.unexpectedOptions(errors);\n }\n Object.keys(mergeOption).forEach((key) => {\n const defaultOptionValue = mergeOption[key];\n let providedType = typeof provided[key];\n let defaultType = typeof defaultOptionValue;\n let value = provided[key];\n if (!provided.hasOwnProperty(key)) {\n if (\n defaultType === 'undefined' ||\n (value?.length === 0 && Array.isArray(defaultOptionValue))\n ) {\n copyTo[key] = defaultOptionValue;\n return;\n }\n provided[key] = defaultOptionValue;\n value = provided[key];\n }\n path += `.${key}`;\n copyTo[key] = processKey(key, value, providedType, defaultType);\n\n if (typeof defaultOptionValue !== 'object' || ignoreProperties.includes(key)) {\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n return;\n }\n if (!Array.isArray(provided[key])) {\n spread(provided[key], defaultOptionValue, copyTo[key]);\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n }\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n });\n };\n spread(providedOptions, mergeTo, newOptions);\n\n return newOptions;\n }\n\n static _dataToOptions(element, options: Options): Options {\n const eData = element.dataset;\n if (\n !eData ||\n Object.keys(eData).length === 0 ||\n eData.constructor !== DOMStringMap\n )\n return options;\n let dataOptions = {} as Options;\n\n // because dataset returns camelCase including the 'td' key the option\n // key won't align\n const objectToNormalized = (object) => {\n const lowered = {};\n Object.keys(object).forEach((x) => {\n lowered[x.toLowerCase()] = x;\n });\n\n return lowered;\n };\n\n const rabbitHole = (\n split: string[],\n index: number,\n optionSubgroup: {},\n value: any\n ) => {\n // first round = display { ... }\n const normalizedOptions = objectToNormalized(optionSubgroup);\n\n const keyOption = normalizedOptions[split[index].toLowerCase()];\n const internalObject = {};\n\n if (keyOption === undefined) return internalObject;\n\n // if this is another object, continue down the rabbit hole\n if (optionSubgroup[keyOption].constructor === Object) {\n index++;\n internalObject[keyOption] = rabbitHole(\n split,\n index,\n optionSubgroup[keyOption],\n value\n );\n } else {\n internalObject[keyOption] = value;\n }\n return internalObject;\n };\n const optionsLower = objectToNormalized(options);\n\n Object.keys(eData)\n .filter((x) => x.startsWith(Namespace.dataKey))\n .map((x) => x.substring(2))\n .forEach((key) => {\n let keyOption = optionsLower[key.toLowerCase()];\n\n // dataset merges dashes to camelCase... yay\n // i.e. key = display_components_seconds\n if (key.includes('_')) {\n // [display, components, seconds]\n const split = key.split('_');\n // display\n keyOption = optionsLower[split[0].toLowerCase()];\n if (\n keyOption !== undefined &&\n options[keyOption].constructor === Object\n ) {\n dataOptions[keyOption] = rabbitHole(\n split,\n 1,\n options[keyOption],\n eData[`td${key}`]\n );\n }\n }\n // or key = multipleDate\n else if (keyOption !== undefined) {\n dataOptions[keyOption] = eData[`td${key}`];\n }\n });\n\n return this._mergeOptions(dataOptions, options);\n }\n\n /**\n * Attempts to prove `d` is a DateTime or Date or can be converted into one.\n * @param d If a string will attempt creating a date from it.\n * @private\n */\n static _dateTypeCheck(d: any): DateTime | null {\n if (d.constructor.name === DateTime.name) return d;\n if (d.constructor.name === Date.name) {\n return DateTime.convert(d);\n }\n if (typeof d === typeof '') {\n const dateTime = new DateTime(d);\n if (JSON.stringify(dateTime) === 'null') {\n return null;\n }\n return dateTime;\n }\n return null;\n }\n\n /**\n * Type checks that `value` is an array of Date or DateTime\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckDateArray(optionName: string, value, providedType: string) {\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of DateTime or Date'\n );\n }\n for (let i = 0; i < value.length; i++) {\n let d = value[i];\n const dateTime = this._dateConversion(d, optionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n value[i] = dateTime;\n }\n }\n\n /**\n * Type checks that `value` is an array of numbers\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckNumberArray(\n optionName: string,\n value,\n providedType: string\n ) {\n if (!Array.isArray(value) || value.find((x) => typeof x !== typeof 0)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of numbers'\n );\n }\n return;\n }\n\n /**\n * Attempts to convert `d` to a DateTime object\n * @param d value to convert\n * @param optionName Provides text to error messages e.g. disabledDates\n */\n static _dateConversion(d: any, optionName: string) {\n if (typeof d === typeof '' && optionName !== 'input') {\n Namespace.errorMessages.dateString();\n }\n\n const converted = this._dateTypeCheck(d);\n\n if (!converted) {\n Namespace.errorMessages.failedToParseDate(\n optionName,\n d,\n optionName === 'input'\n );\n }\n return converted;\n }\n\n private static _flatback: string[];\n\n private static get _flattenDefaultOptions(): string[] {\n if (this._flatback) return this._flatback;\n const deepKeys = (t, pre = []) =>\n Array.isArray(t)\n ? []\n : Object(t) === t\n ? Object.entries(t).flatMap(([k, v]) => deepKeys(v, [...pre, k]))\n : pre.join('.');\n\n this._flatback = deepKeys(DefaultOptions);\n\n return this._flatback;\n }\n\n /**\n * Some options conflict like min/max date. Verify that these kinds of options\n * are set correctly.\n * @param config\n */\n static _validateConflcits(config: Options) {\n if (config.restrictions.minDate && config.restrictions.maxDate) {\n if (config.restrictions.minDate.isAfter(config.restrictions.maxDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'minDate is after maxDate'\n );\n }\n\n if (config.restrictions.maxDate.isBefore(config.restrictions.minDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'maxDate is before minDate'\n );\n }\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport { ChangeEvent, FailEvent } from './event-types';\nimport { OptionConverter } from './options';\n\nexport default class Dates {\n private _dates: DateTime[] = [];\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Returns the array of selected dates\n */\n get picked(): DateTime[] {\n return this._dates;\n }\n\n /**\n * Returns the last picked value.\n */\n get lastPicked(): DateTime {\n return this._dates[this.lastPickedIndex];\n }\n\n /**\n * Returns the length of picked dates -1 or 0 if none are selected.\n */\n get lastPickedIndex(): number {\n if (this._dates.length === 0) return 0;\n return this._dates.length - 1;\n }\n\n /**\n * Adds a new DateTime to selected dates array\n * @param date\n */\n add(date: DateTime): void {\n this._dates.push(date);\n }\n\n /**\n * Tries to convert the provided value to a DateTime object.\n * If value is null|undefined then clear the value of the provided index (or 0).\n * @param value Value to convert or null|undefined\n * @param index When using multidates this is the index in the array\n * @param from Used in the warning message, useful for debugging.\n */\n set(value: any, index?: number, from: string = 'date.set') {\n if (!value) this._setValue(value, index);\n const converted = OptionConverter._dateConversion(value, from);\n if (converted) this._setValue(converted, index);\n }\n\n /**\n * Returns true if the `targetDate` is part of the selected dates array.\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n isPicked(targetDate: DateTime, unit?: Unit): boolean {\n if (!unit) return this._dates.find((x) => x === targetDate) !== undefined;\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return (\n this._dates\n .map((x) => x.format(format))\n .find((x) => x === innerDateFormatted) !== undefined\n );\n }\n\n /**\n * Returns the index at which `targetDate` is in the array.\n * This is used for updating or removing a date when multi-date is used\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n pickedIndex(targetDate: DateTime, unit?: Unit): number {\n if (!unit) return this._dates.indexOf(targetDate);\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return this._dates.map((x) => x.format(format)).indexOf(innerDateFormatted);\n }\n\n /**\n * Clears all selected dates.\n */\n clear() {\n this._context._unset = true;\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate: this.lastPicked,\n isClear: true,\n isValid: true,\n } as ChangeEvent);\n this._dates = [];\n }\n\n /**\n * Find the \"book end\" years given a `year` and a `factor`\n * @param factor e.g. 100 for decades\n * @param year e.g. 2021\n */\n static getStartEndYear(\n factor: number,\n year: number\n ): [number, number, number] {\n const step = factor / 10,\n startYear = Math.floor(year / factor) * factor,\n endYear = startYear + step * 9,\n focusValue = Math.floor(year / step) * step;\n return [startYear, endYear, focusValue];\n }\n\n /**\n * Do not use direectly. Attempts to either clear or set the `target` date at `index`.\n * If the `target` is null then the date will be cleared.\n * If multi-date is being used then it will be removed from the array.\n * If `target` is valid and multi-date is used then if `index` is\n * provided the date at that index will be replaced, otherwise it is appended.\n * @param target\n * @param index\n */\n _setValue(target?: DateTime, index?: number): void {\n const noIndex = typeof index === 'undefined',\n isClear = !target && noIndex;\n let oldDate = this._context._unset ? null : this._dates[index];\n if (!oldDate && !this._context._unset && noIndex && isClear) {\n oldDate = this.lastPicked;\n }\n\n if (target && oldDate?.isSame(target)) return;\n\n const updateInput = () => {\n if (!this._context._input) return;\n\n let newValue = this._context._options.hooks.inputFormat(target);\n if (this._context._options.multipleDates) {\n newValue = this._dates\n .map((d) => this._context._options.hooks.inputFormat(d))\n .join(this._context._options.multipleDatesSeparator);\n }\n if (this._context._input.value != newValue)\n this._context._input.value = newValue;\n };\n\n // case of calling setValue(null)\n if (!target) {\n if (\n !this._context._options.multipleDates ||\n this._dates.length === 1 ||\n isClear\n ) {\n this._context._unset = true;\n this._dates = [];\n } else {\n this._dates.splice(index, 1);\n }\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n\n updateInput();\n this._context._display._update('all');\n return;\n }\n\n index = index || 0;\n target = target.clone;\n\n // minute stepping is being used, force the minute to the closest value\n if (this._context._options.stepping !== 1) {\n target.minutes =\n Math.round(target.minutes / this._context._options.stepping) *\n this._context._options.stepping;\n target.seconds = 0;\n }\n\n if (this._context._validation.isValid(target)) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._unset = false;\n this._context._display._update('all');\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n return;\n }\n\n if (this._context._options.keepInvalid) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: false,\n } as ChangeEvent);\n }\n this._context._triggerEvent({\n type: Namespace.events.error,\n reason: Namespace.errorMessages.failedToSetInvalidDate,\n date: target,\n oldDate,\n } as FailEvent);\n }\n\n /**\n * Returns a format object based on the granularity of `unit`\n * @param unit\n */\n static getFormatByUnit(unit: Unit): object {\n switch (unit) {\n case 'date':\n return { dateStyle: 'short' };\n case 'month':\n return {\n month: 'numeric',\n year: 'numeric',\n };\n case 'year':\n return { year: 'numeric' };\n }\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\nimport Dates from '../../dates';\r\n\r\n/**\r\n * Creates and updates the grid for `year`\r\n */\r\nexport default class YearDisplay {\r\n private _context: TempusDominus;\r\n private _startYear: DateTime;\r\n private _endYear: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.yearsContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectYear);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 10,\r\n this._context._viewDate.year\r\n );\r\n this._startYear = this._context._viewDate.clone.manipulate(-1, Unit.year);\r\n this._endYear = this._context._viewDate.clone.manipulate(10, Unit.year);\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.yearsContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.yearsContainer,\r\n `${this._startYear.format({ year: 'numeric' })}-${this._endYear.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startYear, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endYear, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.year)\r\n .manipulate(-1, Unit.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectYear}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n let classes = [];\r\n classes.push(Namespace.css.year);\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.year)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.year)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute('data-value', `${innerDate.year}`);\r\n containerClone.innerText = innerDate.format({ year: \"numeric\" });\r\n\r\n innerDate.manipulate(1, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport Dates from '../../dates';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `seconds`\r\n */\r\nexport default class DecadeDisplay {\r\n private _context: TempusDominus;\r\n private _startDecade: DateTime;\r\n private _endDecade: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker() {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.decadesContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDecade);\r\n container.appendChild(div);\r\n }\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 100,\r\n this._context._viewDate.year\r\n );\r\n this._startDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._startDecade.year = start;\r\n this._endDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._endDecade.year = end;\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.decadesContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.decadesContainer,\r\n `${this._startDecade.format({ year: 'numeric' })}-${this._endDecade.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startDecade, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endDecade, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n const pickedYears = this._context.dates.picked.map((x) => x.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectDecade}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (index === 0) {\r\n containerClone.classList.add(Namespace.css.old);\r\n if (this._startDecade.year - 10 < 0) {\r\n containerClone.textContent = ' ';\r\n previous.classList.add(Namespace.css.disabled);\r\n containerClone.classList.add(Namespace.css.disabled);\r\n containerClone.setAttribute('data-value', ``);\r\n return;\r\n } else {\r\n containerClone.innerText = this._startDecade.clone.manipulate(-10, Unit.year).format({ year: 'numeric' });\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n return;\r\n }\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.decade);\r\n const startDecadeYear = this._startDecade.year;\r\n const endDecadeYear = this._startDecade.year + 9;\r\n\r\n if (\r\n !this._context._unset &&\r\n pickedYears.filter((x) => x >= startDecadeYear && x <= endDecadeYear)\r\n .length > 0\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n containerClone.innerText = `${this._startDecade.format({ year: 'numeric' })}`;\r\n\r\n this._startDecade.manipulate(10, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates the clock display\n */\nexport default class TimeDisplay {\n private _context: TempusDominus;\n private _gridColumns = '';\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the clock display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.clockContainer);\n\n container.append(...this._grid());\n\n return container;\n }\n\n /**\n * Populates the various elements with in the clock display\n * like the current hour and if the manipulation icons are enabled.\n * @private\n */\n _update(): void {\n const timesDiv = (\n this._context._display.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0]\n );\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n timesDiv\n .querySelectorAll('.disabled')\n .forEach((element) => element.classList.remove(Namespace.css.disabled));\n\n if (this._context._options.display.components.hours) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.hours}]`\n ).innerText = this._context._options.display.components.useTwentyfourHour\n ? lastPicked.hoursFormatted\n : lastPicked.twelveHoursFormatted;\n }\n\n if (this._context._options.display.components.minutes) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.minutes}]`\n ).innerText = lastPicked.minutesFormatted;\n }\n\n if (this._context._options.display.components.seconds) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.seconds}]`\n ).innerText = lastPicked.secondsFormatted;\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n const toggle = timesDiv.querySelector(\n `[data-action=${ActionTypes.toggleMeridiem}]`\n );\n\n toggle.innerText = lastPicked.meridiem();\n\n if (\n !this._context._validation.isValid(\n lastPicked.clone.manipulate(\n lastPicked.hours >= 12 ? -12 : 12,\n Unit.hours\n )\n )\n ) {\n toggle.classList.add(Namespace.css.disabled);\n } else {\n toggle.classList.remove(Namespace.css.disabled);\n }\n }\n\n timesDiv.style.gridTemplateAreas = `\"${this._gridColumns}\"`;\n }\n\n /**\n * Creates the table for the clock display depending on what options are selected.\n * @private\n */\n private _grid(): HTMLElement[] {\n this._gridColumns = '';\n const top = [],\n middle = [],\n bottom = [],\n separator = document.createElement('div'),\n upIcon = this._context._display._iconTag(\n this._context._options.display.icons.up\n ),\n downIcon = this._context._display._iconTag(\n this._context._options.display.icons.down\n );\n\n separator.classList.add(Namespace.css.separator, Namespace.css.noHighlight);\n const separatorColon = separator.cloneNode(true);\n separatorColon.innerHTML = ':';\n\n const getSeparator = (colon = false): HTMLElement => {\n return colon\n ? separatorColon.cloneNode(true)\n : separator.cloneNode(true);\n };\n\n if (this._context._options.display.components.hours) {\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.incrementHours);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickHour\n );\n divElement.setAttribute('data-action', ActionTypes.showHours);\n divElement.setAttribute('data-time-component', Unit.hours);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.decrementHours);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n this._gridColumns += 'a';\n }\n\n if (this._context._options.display.components.minutes) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.hours) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.incrementMinutes);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickMinute\n );\n divElement.setAttribute('data-action', ActionTypes.showMinutes);\n divElement.setAttribute('data-time-component', Unit.minutes);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.decrementMinutes);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (this._context._options.display.components.seconds) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.minutes) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.incrementSeconds);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickSecond\n );\n divElement.setAttribute('data-action', ActionTypes.showSeconds);\n divElement.setAttribute('data-time-component', Unit.seconds);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.decrementSeconds);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n this._gridColumns += ' a';\n let divElement = getSeparator();\n top.push(divElement);\n\n let button = document.createElement('button');\n button.setAttribute(\n 'title',\n this._context._options.localization.toggleMeridiem\n );\n button.setAttribute('data-action', ActionTypes.toggleMeridiem);\n button.setAttribute('tabindex', '-1');\n button.classList.add(Namespace.css.toggleMeridiem);\n\n divElement = document.createElement('div');\n divElement.classList.add(Namespace.css.noHighlight);\n divElement.appendChild(button);\n middle.push(divElement);\n\n divElement = getSeparator();\n bottom.push(divElement);\n }\n\n this._gridColumns = this._gridColumns.trim();\n\n return [...top, ...middle, ...bottom];\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `hours`\n */\nexport default class HourDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.hourContainer);\n\n for (\n let i = 0;\n i <\n (this._context._options.display.components.useTwentyfourHour ? 24 : 12);\n i++\n ) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectHour);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.hourContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.date);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectHour}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.hour);\n\n if (!this._context._validation.isValid(innerDate, Unit.hours)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.hours}`);\n containerClone.innerText = this._context._options.display.components\n .useTwentyfourHour\n ? innerDate.hoursFormatted\n : innerDate.twelveHoursFormatted;\n innerDate.manipulate(1, Unit.hours);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `minutes`\n */\nexport default class MinuteDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.minuteContainer);\n\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n for (let i = 0; i < 60 / step; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMinute);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.minuteContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.hours);\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMinute}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.minute);\n\n if (!this._context._validation.isValid(innerDate, Unit.minutes)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.minutes}`);\n containerClone.innerText = innerDate.minutesFormatted;\n innerDate.manipulate(step, Unit.minutes);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class secondDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.secondContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectSecond);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.secondContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.minutes);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectSecond}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.second);\n\n if (!this._context._validation.isValid(innerDate, Unit.seconds)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.seconds}`);\n containerClone.innerText = innerDate.secondsFormatted;\n innerDate.manipulate(5, Unit.seconds);\n });\n }\n}\n","import DateDisplay from './calendar/date-display';\r\nimport MonthDisplay from './calendar/month-display';\r\nimport YearDisplay from './calendar/year-display';\r\nimport DecadeDisplay from './calendar/decade-display';\r\nimport TimeDisplay from './time/time-display';\r\nimport HourDisplay from './time/hour-display';\r\nimport MinuteDisplay from './time/minute-display';\r\nimport SecondDisplay from './time/second-display';\r\nimport { DateTime, Unit } from '../datetime';\r\nimport { DatePickerModes } from '../conts';\r\nimport { TempusDominus } from '../tempus-dominus';\r\nimport { ActionTypes } from '../actions';\r\nimport { createPopper } from '@popperjs/core';\r\nimport Namespace from '../namespace';\r\nimport { HideEvent } from '../event-types';\r\n\r\n/**\r\n * Main class for all things display related.\r\n */\r\nexport default class Display {\r\n private _context: TempusDominus;\r\n private _dateDisplay: DateDisplay;\r\n private _monthDisplay: MonthDisplay;\r\n private _yearDisplay: YearDisplay;\r\n private _decadeDisplay: DecadeDisplay;\r\n private _timeDisplay: TimeDisplay;\r\n private _widget: HTMLElement;\r\n private _hourDisplay: HourDisplay;\r\n private _minuteDisplay: MinuteDisplay;\r\n private _secondDisplay: SecondDisplay;\r\n private _popperInstance: any;\r\n private _isVisible = false;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this._dateDisplay = new DateDisplay(context);\r\n this._monthDisplay = new MonthDisplay(context);\r\n this._yearDisplay = new YearDisplay(context);\r\n this._decadeDisplay = new DecadeDisplay(context);\r\n this._timeDisplay = new TimeDisplay(context);\r\n this._hourDisplay = new HourDisplay(context);\r\n this._minuteDisplay = new MinuteDisplay(context);\r\n this._secondDisplay = new SecondDisplay(context);\r\n\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Returns the widget body or undefined\r\n * @private\r\n */\r\n get widget(): HTMLElement | undefined {\r\n return this._widget;\r\n }\r\n\r\n /**\r\n * Returns this visible state of the picker (shown)\r\n */\r\n get isVisible() {\r\n return this._isVisible;\r\n }\r\n\r\n /**\r\n * Updates the table for a particular unit. Used when an option as changed or\r\n * whenever the class list might need to be refreshed.\r\n * @param unit\r\n * @private\r\n */\r\n _update(unit: Unit | 'clock' | 'calendar' | 'all'): void {\r\n if (!this.widget) return;\r\n //todo do I want some kind of error catching or other guards here?\r\n switch (unit) {\r\n case Unit.seconds:\r\n this._secondDisplay._update();\r\n break;\r\n case Unit.minutes:\r\n this._minuteDisplay._update();\r\n break;\r\n case Unit.hours:\r\n this._hourDisplay._update();\r\n break;\r\n case Unit.date:\r\n this._dateDisplay._update();\r\n break;\r\n case Unit.month:\r\n this._monthDisplay._update();\r\n break;\r\n case Unit.year:\r\n this._yearDisplay._update();\r\n break;\r\n case 'clock':\r\n this._timeDisplay._update();\r\n this._update(Unit.hours);\r\n this._update(Unit.minutes);\r\n this._update(Unit.seconds);\r\n break;\r\n case 'calendar':\r\n this._update(Unit.date);\r\n this._update(Unit.year);\r\n this._update(Unit.month);\r\n this._decadeDisplay._update();\r\n this._updateCalendarHeader();\r\n break;\r\n case 'all':\r\n if (this._hasTime) {\r\n this._update('clock');\r\n }\r\n if (this._hasDate) {\r\n this._update('calendar');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Shows the picker and creates a Popper instance if needed.\r\n * Add document click event to hide when clicking outside the picker.\r\n * @fires Events#show\r\n */\r\n show(): void {\r\n if (this.widget == undefined) {\r\n if (\r\n this._context._options.useCurrent &&\r\n !this._context._options.defaultDate &&\r\n !this._context._input?.value\r\n ) {\r\n //todo in the td4 branch a pr changed this to allow granularity\r\n const date = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n if (!this._context._options.keepInvalid) {\r\n let tries = 0;\r\n let direction = 1;\r\n if (this._context._options.restrictions.maxDate?.isBefore(date)) {\r\n direction = -1;\r\n }\r\n while (!this._context._validation.isValid(date)) {\r\n date.manipulate(direction, Unit.date);\r\n if (tries > 31) break;\r\n tries++;\r\n }\r\n }\r\n this._context.dates._setValue(date);\r\n }\r\n\r\n if (this._context._options.defaultDate) {\r\n this._context.dates._setValue(this._context._options.defaultDate);\r\n }\r\n\r\n this._buildWidget();\r\n if (this._hasDate) {\r\n this._showMode();\r\n }\r\n\r\n if (!this._context._options.display.inline) {\r\n document.body.appendChild(this.widget);\r\n\r\n this._popperInstance = createPopper(\r\n this._context._element,\r\n this.widget,\r\n {\r\n modifiers: [\r\n /* {\r\n name: 'offset',\r\n options: {\r\n offset: [2, 8],\r\n },\r\n },*/\r\n { name: 'eventListeners', enabled: true },\r\n ],\r\n placement: 'bottom-start',\r\n }\r\n );\r\n } else {\r\n this._context._element.appendChild(this.widget);\r\n }\r\n\r\n if (this._context._options.display.viewMode == 'clock') {\r\n this._context._action.do(\r\n {\r\n currentTarget: this.widget.querySelector(\r\n `.${Namespace.css.timeContainer}`\r\n ),\r\n },\r\n ActionTypes.showClock\r\n );\r\n }\r\n\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.addEventListener('click', this._actionsClickEvent)\r\n );\r\n\r\n // show the clock when using sideBySide\r\n if (this._context._options.display.sideBySide) {\r\n this._timeDisplay._update();\r\n (\r\n this.widget.getElementsByClassName(\r\n Namespace.css.clockContainer\r\n )[0] as HTMLElement\r\n ).style.display = 'grid';\r\n }\r\n }\r\n\r\n this.widget.classList.add(Namespace.css.show);\r\n if (!this._context._options.display.inline) {\r\n this._popperInstance.update();\r\n document.addEventListener('click', this._documentClickEvent);\r\n }\r\n this._context._triggerEvent({ type: Namespace.events.show });\r\n this._isVisible = true;\r\n }\r\n\r\n /**\r\n * Changes the calendar view mode. E.g. month <-> year\r\n * @param direction -/+ number to move currentViewMode\r\n * @private\r\n */\r\n _showMode(direction?: number): void {\r\n if (!this.widget) {\r\n return;\r\n }\r\n if (direction) {\r\n const max = Math.max(\r\n this._context._minViewModeNumber,\r\n Math.min(3, this._context._currentViewMode + direction)\r\n );\r\n if (this._context._currentViewMode == max) return;\r\n this._context._currentViewMode = max;\r\n }\r\n\r\n this.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div:not(.${Namespace.css.clockContainer})`\r\n )\r\n .forEach((e: HTMLElement) => (e.style.display = 'none'));\r\n\r\n const datePickerMode = DatePickerModes[this._context._currentViewMode];\r\n let picker: HTMLElement = this.widget.querySelector(\r\n `.${datePickerMode.className}`\r\n );\r\n\r\n switch (datePickerMode.className) {\r\n case Namespace.css.decadesContainer:\r\n this._decadeDisplay._update();\r\n break;\r\n case Namespace.css.yearsContainer:\r\n this._yearDisplay._update();\r\n break;\r\n case Namespace.css.monthsContainer:\r\n this._monthDisplay._update();\r\n break;\r\n case Namespace.css.daysContainer:\r\n this._dateDisplay._update();\r\n break;\r\n }\r\n\r\n picker.style.display = 'grid';\r\n this._updateCalendarHeader();\r\n }\r\n\r\n _updateCalendarHeader() {\r\n const showing = [\r\n ...this.widget.querySelector(\r\n `.${Namespace.css.dateContainer} div[style*=\"display: grid\"]`\r\n ).classList,\r\n ].find((x) => x.startsWith(Namespace.css.dateContainer));\r\n\r\n const [previous, switcher, next] = this._context._display.widget\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switch (showing) {\r\n case Namespace.css.decadesContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousCentury\r\n );\r\n switcher.setAttribute('title', '');\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextCentury\r\n );\r\n break;\r\n case Namespace.css.yearsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousDecade\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDecade\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextDecade\r\n );\r\n break;\r\n case Namespace.css.monthsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousYear\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectYear\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextYear\r\n );\r\n break;\r\n case Namespace.css.daysContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousMonth\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectMonth\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextMonth\r\n );\r\n switcher.innerText = this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n });\r\n break;\r\n }\r\n switcher.innerText = switcher.getAttribute(showing);\r\n }\r\n\r\n /**\r\n * Hides the picker if needed.\r\n * Remove document click event to hide when clicking outside the picker.\r\n * @fires Events#hide\r\n */\r\n hide(): void {\r\n if (!this.widget || !this._isVisible) return;\r\n\r\n this.widget.classList.remove(Namespace.css.show);\r\n\r\n if (this._isVisible) {\r\n this._context._triggerEvent({\r\n type: Namespace.events.hide,\r\n date: this._context._unset\r\n ? null\r\n : this._context.dates.lastPicked\r\n ? this._context.dates.lastPicked.clone\r\n : void 0,\r\n } as HideEvent);\r\n this._isVisible = false;\r\n }\r\n\r\n document.removeEventListener('click', this._documentClickEvent);\r\n }\r\n\r\n /**\r\n * Toggles the picker's open state. Fires a show/hide event depending.\r\n */\r\n toggle() {\r\n return this._isVisible ? this.hide() : this.show();\r\n }\r\n\r\n /**\r\n * Removes document and data-action click listener and reset the widget\r\n * @private\r\n */\r\n _dispose() {\r\n document.removeEventListener('click', this._documentClickEvent);\r\n if (!this.widget) return;\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.removeEventListener('click', this._actionsClickEvent)\r\n );\r\n this.widget.parentNode.removeChild(this.widget);\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Builds the widgets html template.\r\n * @private\r\n */\r\n private _buildWidget(): HTMLElement {\r\n const template = document.createElement('div');\r\n template.classList.add(Namespace.css.widget);\r\n\r\n const dateView = document.createElement('div');\r\n dateView.classList.add(Namespace.css.dateContainer);\r\n dateView.append(\r\n this._headTemplate,\r\n this._decadeDisplay._picker,\r\n this._yearDisplay._picker,\r\n this._monthDisplay._picker,\r\n this._dateDisplay._picker\r\n );\r\n\r\n const timeView = document.createElement('div');\r\n timeView.classList.add(Namespace.css.timeContainer);\r\n timeView.appendChild(this._timeDisplay._picker);\r\n timeView.appendChild(this._hourDisplay._picker);\r\n timeView.appendChild(this._minuteDisplay._picker);\r\n timeView.appendChild(this._secondDisplay._picker);\r\n\r\n const toolbar = document.createElement('div');\r\n toolbar.classList.add(Namespace.css.toolbar);\r\n toolbar.append(...this._toolbar);\r\n\r\n if (this._context._options.display.inline) {\r\n template.classList.add(Namespace.css.inline);\r\n }\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n template.classList.add('calendarWeeks');\r\n }\r\n\r\n if (\r\n this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n template.classList.add(Namespace.css.sideBySide);\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n const row = document.createElement('div');\r\n row.classList.add('td-row');\r\n dateView.classList.add('td-half');\r\n timeView.classList.add('td-half');\r\n\r\n row.appendChild(dateView);\r\n row.appendChild(timeView);\r\n template.appendChild(row);\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n this._widget = template;\r\n return;\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n if (this._hasDate) {\r\n if (this._hasTime) {\r\n dateView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode !== 'clock')\r\n dateView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(dateView);\r\n }\r\n\r\n if (this._hasTime) {\r\n if (this._hasDate) {\r\n timeView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode === 'clock')\r\n timeView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(timeView);\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n const arrow = document.createElement('div');\r\n arrow.classList.add('arrow');\r\n arrow.setAttribute('data-popper-arrow', '');\r\n template.appendChild(arrow);\r\n\r\n this._widget = template;\r\n }\r\n\r\n /**\r\n * Returns true if the hours, minutes, or seconds component is turned on\r\n */\r\n get _hasTime(): boolean {\r\n return (\r\n this._context._options.display.components.clock &&\r\n (this._context._options.display.components.hours ||\r\n this._context._options.display.components.minutes ||\r\n this._context._options.display.components.seconds)\r\n );\r\n }\r\n\r\n /**\r\n * Returns true if the year, month, or date component is turned on\r\n */\r\n get _hasDate(): boolean {\r\n return (\r\n this._context._options.display.components.calendar &&\r\n (this._context._options.display.components.year ||\r\n this._context._options.display.components.month ||\r\n this._context._options.display.components.date)\r\n );\r\n }\r\n\r\n /**\r\n * Get the toolbar html based on options like buttons.today\r\n * @private\r\n */\r\n get _toolbar(): HTMLElement[] {\r\n const toolbar = [];\r\n\r\n if (this._context._options.display.buttons.today) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.today);\r\n div.setAttribute('title', this._context._options.localization.today);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.today)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (\r\n !this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n let title, icon;\r\n if (this._context._options.display.viewMode === 'clock') {\r\n title = this._context._options.localization.selectDate;\r\n icon = this._context._options.display.icons.date;\r\n } else {\r\n title = this._context._options.localization.selectTime;\r\n icon = this._context._options.display.icons.time;\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.togglePicker);\r\n div.setAttribute('title', title);\r\n\r\n div.appendChild(this._iconTag(icon));\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.clear) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.clear);\r\n div.setAttribute('title', this._context._options.localization.clear);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.clear)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.close) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.close);\r\n div.setAttribute('title', this._context._options.localization.close);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.close)\r\n );\r\n toolbar.push(div);\r\n }\r\n\r\n return toolbar;\r\n }\r\n\r\n /***\r\n * Builds the base header template with next and previous icons\r\n * @private\r\n */\r\n get _headTemplate(): HTMLElement {\r\n const calendarHeader = document.createElement('div');\r\n calendarHeader.classList.add(Namespace.css.calendarHeader);\r\n\r\n const previous = document.createElement('div');\r\n previous.classList.add(Namespace.css.previous);\r\n previous.setAttribute('data-action', ActionTypes.previous);\r\n previous.appendChild(\r\n this._iconTag(this._context._options.display.icons.previous)\r\n );\r\n\r\n const switcher = document.createElement('div');\r\n switcher.classList.add(Namespace.css.switch);\r\n switcher.setAttribute('data-action', ActionTypes.pickerSwitch);\r\n\r\n const next = document.createElement('div');\r\n next.classList.add(Namespace.css.next);\r\n next.setAttribute('data-action', ActionTypes.next);\r\n next.appendChild(this._iconTag(this._context._options.display.icons.next));\r\n\r\n calendarHeader.append(previous, switcher, next);\r\n return calendarHeader;\r\n }\r\n\r\n /**\r\n * Builds an icon tag as either an ``\r\n * or with icons.type is `sprites` then an svg tag instead\r\n * @param iconClass\r\n * @private\r\n */\r\n _iconTag(iconClass: string): HTMLElement {\r\n if (this._context._options.display.icons.type === 'sprites') {\r\n const svg = document.createElement('svg');\r\n svg.innerHTML = ``;\r\n return svg;\r\n }\r\n const icon = document.createElement('i');\r\n DOMTokenList.prototype.add.apply(icon.classList, iconClass.split(' '));\r\n return icon;\r\n }\r\n\r\n /**\r\n * A document click event to hide the widget if click is outside\r\n * @private\r\n * @param e MouseEvent\r\n */\r\n private _documentClickEvent = (e: MouseEvent) => {\r\n if (this._context._options.display.keepOpen ||\r\n this._context._options.debug ||\r\n (window as any).debug) return;\r\n\r\n if (\r\n this._isVisible &&\r\n !e.composedPath().includes(this.widget) && // click inside the widget\r\n !e.composedPath()?.includes(this._context._element) // click on the element\r\n ) {\r\n this.hide();\r\n }\r\n };\r\n\r\n /**\r\n * Click event for any action like selecting a date\r\n * @param e MouseEvent\r\n * @private\r\n */\r\n private _actionsClickEvent = (e: MouseEvent) => {\r\n this._context._action.do(e);\r\n };\r\n\r\n /**\r\n * Causes the widget to get rebuilt on next show. If the picker is already open\r\n * then hide and reshow it.\r\n * @private\r\n */\r\n _rebuild() {\r\n const wasVisible = this._isVisible;\r\n if (wasVisible) this.hide();\r\n this._dispose();\r\n if (wasVisible) {\r\n this.show();\r\n }\r\n }\r\n}\r\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Dates from './dates';\n\n/**\n * Main class for date validation rules based on the options provided.\n */\nexport default class Validation {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Checks to see if the target date is valid based on the rules provided in the options.\n * Granularity can be provide to chek portions of the date instead of the whole.\n * @param targetDate\n * @param granularity\n */\n isValid(targetDate: DateTime, granularity?: Unit): boolean {\n if (\n this._context._options.restrictions.disabledDates.length > 0 &&\n this._isInDisabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledDates.length > 0 &&\n !this._isInEnabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.daysOfWeekDisabled?.length > 0 &&\n this._context._options.restrictions.daysOfWeekDisabled.indexOf(\n targetDate.weekDay\n ) !== -1\n ) {\n return false;\n }\n\n if (\n this._context._options.restrictions.minDate &&\n targetDate.isBefore(\n this._context._options.restrictions.minDate,\n granularity\n )\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.maxDate &&\n targetDate.isAfter(\n this._context._options.restrictions.maxDate,\n granularity\n )\n ) {\n return false;\n }\n\n if (\n granularity === Unit.hours ||\n granularity === Unit.minutes ||\n granularity === Unit.seconds\n ) {\n if (\n this._context._options.restrictions.disabledHours.length > 0 &&\n this._isInDisabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledHours.length > 0 &&\n !this._isInEnabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.disabledTimeIntervals.length > 0\n ) {\n for (\n let i = 0;\n i < this._context._options.restrictions.disabledTimeIntervals.length;\n i++\n ) {\n if (\n targetDate.isBetween(\n this._context._options.restrictions.disabledTimeIntervals[i].from,\n this._context._options.restrictions.disabledTimeIntervals[i].to\n )\n )\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Checks to see if the disabledDates option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInDisabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledDates ||\n this._context._options.restrictions.disabledDates.length === 0\n )\n return false;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.disabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the enabledDates option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInEnabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledDates ||\n this._context._options.restrictions.enabledDates.length === 0\n )\n return true;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.enabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the disabledHours option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInDisabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledHours ||\n this._context._options.restrictions.disabledHours.length === 0\n )\n return false;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.disabledHours.find(\n (x) => x === formattedDate\n );\n }\n\n /**\n * Checks to see if the enabledHours option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInEnabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledHours ||\n this._context._options.restrictions.enabledHours.length === 0\n )\n return true;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.enabledHours.find(\n (x) => x === formattedDate\n );\n }\n}\n","import Display from './display/index';\nimport Validation from './validation';\nimport Dates from './dates';\nimport Actions, { ActionTypes } from './actions';\nimport { DatePickerModes, DefaultOptions } from './conts';\nimport { DateTime, DateTimeFormatOptions, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options, { OptionConverter } from './options';\nimport {\n BaseEvent,\n ChangeEvent,\n ViewUpdateEvent,\n FailEvent,\n} from './event-types';\n\n/**\n * A robust and powerful date/time picker component.\n */\nclass TempusDominus {\n dates: Dates;\n\n _options: Options;\n _currentViewMode = 0;\n _subscribers: { [key: string]: ((event: any) => {})[] } = {};\n _element: HTMLElement;\n _input: HTMLInputElement;\n _unset: boolean;\n _minViewModeNumber = 0;\n _display: Display;\n _validation: Validation;\n _action: Actions;\n private _isDisabled = false;\n private _notifyChangeEventContext = 0;\n private _toggle: HTMLElement;\n private _currentPromptTimeTimeout: any;\n\n constructor(element: HTMLElement, options: Options = {} as Options) {\n if (!element) {\n Namespace.errorMessages.mustProvideElement;\n }\n this._element = element;\n this._options = this._initializeOptions(options, DefaultOptions, true);\n this._viewDate.setLocale(this._options.localization.locale);\n this._unset = true;\n\n this._display = new Display(this);\n this._validation = new Validation(this);\n this.dates = new Dates(this);\n this._action = new Actions(this);\n\n this._initializeInput();\n this._initializeToggle();\n\n if (this._options.display.inline) this._display.show();\n }\n\n _viewDate = new DateTime();\n\n get viewDate() {\n return this._viewDate;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Update the picker options. If `reset` is provide `options` will be merged with DefaultOptions instead.\n * @param options\n * @param reset\n * @public\n */\n updateOptions(options, reset = false): void {\n if (reset) this._options = this._initializeOptions(options, DefaultOptions);\n else this._options = this._initializeOptions(options, this._options);\n this._display._rebuild();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Toggles the picker open or closed. If the picker is disabled, nothing will happen.\n * @public\n */\n toggle(): void {\n if (this._isDisabled) return;\n this._display.toggle();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Shows the picker unless the picker is disabled.\n * @public\n */\n show(): void {\n if (this._isDisabled) return;\n this._display.show();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker unless the picker is disabled.\n * @public\n */\n hide(): void {\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Disables the picker and the target input field.\n * @public\n */\n disable(): void {\n this._isDisabled = true;\n // todo this might be undesired. If a dev disables the input field to\n // only allow using the picker, this will break that.\n this._input?.setAttribute('disabled', 'disabled');\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Enables the picker and the target input field.\n * @public\n */\n enable(): void {\n this._isDisabled = false;\n this._input?.removeAttribute('disabled');\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Clears all the selected dates\n * @public\n */\n clear(): void {\n this.dates.clear();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Allows for a direct subscription to picker events, without having to use addEventListener on the element.\n * @param eventTypes See Namespace.Events\n * @param callbacks Function to call when event is triggered\n * @public\n */\n subscribe(\n eventTypes: string | string[],\n callbacks: (event: any) => void | ((event: any) => void)[]\n ): { unsubscribe: void }[] {\n if (typeof eventTypes === 'string') {\n eventTypes = [eventTypes];\n }\n let callBackArray = [];\n if (!Array.isArray(callbacks)) {\n callBackArray = [callbacks];\n } else {\n callBackArray = callbacks;\n }\n\n if (eventTypes.length !== callBackArray.length) {\n Namespace.errorMessages.subscribeMismatch;\n }\n\n const returnArray = [];\n\n for (let i = 0; i < eventTypes.length; i++) {\n const eventType = eventTypes[i];\n if (!Array.isArray(this._subscribers[eventType])) {\n this._subscribers[eventType] = [];\n }\n\n this._subscribers[eventType].push(callBackArray[i]);\n\n returnArray.push({\n unsubscribe: this._unsubscribe.bind(\n this,\n eventType,\n this._subscribers[eventType].length - 1\n ),\n });\n\n if (eventTypes.length === 1) {\n return returnArray[0];\n }\n }\n\n return returnArray;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker and removes event listeners\n */\n dispose() {\n this._display.hide();\n // this will clear the document click event listener\n this._display._dispose();\n this._input?.removeEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input?.removeEventListener('click', this._toggleClickEvent);\n }\n this._toggle.removeEventListener('click', this._toggleClickEvent);\n this._subscribers = {};\n }\n\n /**\n * Triggers an event like ChangeEvent when the picker has updated the value\n * of a selected date.\n * @param event Accepts a BaseEvent object.\n * @private\n */\n _triggerEvent(event: BaseEvent) {\n // checking hasOwnProperty because the BasicEvent also falls through here otherwise\n if ((event as ChangeEvent) && event.hasOwnProperty('date')) {\n const { date, oldDate, isClear } = event as ChangeEvent;\n // this was to prevent a max call stack error\n // https://github.com/tempusdominus/core/commit/15a280507f5277b31b0b3319ab1edc7c19a000fb\n // todo see if this is still needed or if there's a cleaner way\n this._notifyChangeEventContext++;\n if (\n (date && oldDate && date.isSame(oldDate)) ||\n (!isClear && !date && !oldDate) ||\n this._notifyChangeEventContext > 1\n ) {\n this._notifyChangeEventContext = 0;\n return;\n }\n this._handleAfterChangeEvent(event as ChangeEvent);\n }\n\n this._element.dispatchEvent(\n new CustomEvent(event.type, { detail: event as any })\n );\n\n if ((window as any).jQuery) {\n const $ = (window as any).jQuery;\n $(this._element).trigger(event);\n }\n\n const publish = () => {\n // return if event is not subscribed\n if (!Array.isArray(this._subscribers[event.type])) {\n return;\n }\n\n // Trigger callback for each subscriber\n this._subscribers[event.type].forEach((callback) => {\n callback(event);\n });\n };\n\n publish();\n\n this._notifyChangeEventContext = 0;\n }\n\n /**\n * Fires a ViewUpdate event when, for example, the month view is changed.\n * @param {Unit} unit\n * @private\n */\n _viewUpdate(unit: Unit) {\n this._triggerEvent({\n type: Namespace.events.update,\n change: unit,\n viewDate: this._viewDate.clone,\n } as ViewUpdateEvent);\n }\n\n private _unsubscribe(eventName, index) {\n this._subscribers[eventName].splice(index, 1);\n }\n\n /**\n * Merges two Option objects together and validates options type\n * @param config new Options\n * @param mergeTo Options to merge into\n * @param includeDataset When true, the elements data-td attributes will be included in the\n * @private\n */\n private _initializeOptions(\n config: Options,\n mergeTo: Options,\n includeDataset = false\n ): Options {\n config = OptionConverter._mergeOptions(config, mergeTo);\n if (includeDataset)\n config = OptionConverter._dataToOptions(this._element, config);\n\n OptionConverter._validateConflcits(config);\n\n config.viewDate = config.viewDate.setLocale(config.localization.locale);\n\n if (!this._viewDate.isSame(config.viewDate)) {\n this._viewDate = config.viewDate;\n }\n\n /**\n * Sets the minimum view allowed by the picker. For example the case of only\n * allowing year and month to be selected but not date.\n */\n if (config.display.components.year) {\n this._minViewModeNumber = 2;\n }\n if (config.display.components.month) {\n this._minViewModeNumber = 1;\n }\n if (config.display.components.date) {\n this._minViewModeNumber = 0;\n }\n\n this._currentViewMode = Math.max(\n this._minViewModeNumber,\n this._currentViewMode\n );\n\n // Update view mode if needed\n if (\n DatePickerModes[this._currentViewMode].name !== config.display.viewMode\n ) {\n this._currentViewMode = Math.max(\n DatePickerModes.findIndex((x) => x.name === config.display.viewMode),\n this._minViewModeNumber\n );\n }\n\n // defaults the input format based on the components enabled\n if (config.hooks.inputFormat === undefined) {\n const components = config.display.components;\n config.hooks.inputFormat = (date: DateTime) => {\n return date.format({\n year: components.calendar && components.year ? 'numeric' : undefined,\n month:\n components.calendar && components.month ? '2-digit' : undefined,\n day: components.calendar && components.date ? '2-digit' : undefined,\n hour:\n components.clock && components.hours\n ? components.useTwentyfourHour\n ? '2-digit'\n : 'numeric'\n : undefined,\n minute:\n components.clock && components.minutes ? '2-digit' : undefined,\n second:\n components.clock && components.seconds ? '2-digit' : undefined,\n hour12: !components.useTwentyfourHour,\n });\n };\n }\n\n if (this._display?.isVisible) {\n this._display._update('all');\n }\n\n return config;\n }\n\n /**\n * Checks if an input field is being used, attempts to locate one and sets an\n * event listener if found.\n * @private\n */\n private _initializeInput() {\n if (this._element.tagName == 'INPUT') {\n this._input = this._element as HTMLInputElement;\n } else {\n let query = this._element.dataset.tdTargetInput;\n if (query == undefined || query == 'nearest') {\n this._input = this._element.querySelector('input');\n } else {\n this._input = this._element.querySelector(query);\n }\n }\n\n if (!this._input) return;\n\n this._input.addEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input.addEventListener('click', this._toggleClickEvent);\n }\n\n if (this._input.value) {\n this._inputChangeEvent();\n }\n }\n\n /**\n * Attempts to locate a toggle for the picker and sets an event listener\n * @private\n */\n private _initializeToggle() {\n if (this._options.display.inline) return;\n let query = this._element.dataset.tdTargetToggle;\n if (query == 'nearest') {\n query = '[data-td-toggle=\"datetimepicker\"]';\n }\n this._toggle =\n query == undefined ? this._element : this._element.querySelector(query);\n this._toggle.addEventListener('click', this._toggleClickEvent);\n }\n\n /**\n * If the option is enabled this will render the clock view after a date pick.\n * @param e change event\n * @private\n */\n private _handleAfterChangeEvent(e: ChangeEvent) {\n if (\n // options is disabled\n !this._options.promptTimeOnDateChange ||\n this._options.display.inline ||\n this._options.display.sideBySide ||\n // time is disabled\n !this._display._hasTime ||\n // clock component is already showing\n this._display.widget\n ?.getElementsByClassName(Namespace.css.show)[0]\n .classList.contains(Namespace.css.timeContainer)\n )\n return;\n\n // First time ever. If useCurrent option is set to true (default), do nothing\n // because the first date is selected automatically.\n // or date didn't change (time did) or date changed because time did.\n if (\n (!e.oldDate && this._options.useCurrent) ||\n (e.oldDate && e.date?.isSame(e.oldDate))\n ) {\n return;\n }\n\n clearTimeout(this._currentPromptTimeTimeout);\n this._currentPromptTimeTimeout = setTimeout(() => {\n if (this._display.widget) {\n this._action.do(\n {\n currentTarget: this._display.widget.querySelector(\n `.${Namespace.css.switch} div`\n ),\n },\n ActionTypes.togglePicker\n );\n }\n }, this._options.promptTimeOnDateChangeTransitionDelay);\n }\n\n /**\n * Event for when the input field changes. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _inputChangeEvent = () => {\n const setViewDate = () => {\n if (this.dates.lastPicked) this._viewDate = this.dates.lastPicked;\n };\n\n const value = this._input.value;\n if (this._options.multipleDates) {\n try {\n const valueSplit = value.split(this._options.multipleDatesSeparator);\n for (let i = 0; i < valueSplit.length; i++) {\n if (this._options.hooks.inputParse) {\n this.dates.set(\n this._options.hooks.inputParse(valueSplit[i]),\n i,\n 'input'\n );\n } else {\n this.dates.set(valueSplit[i], i, 'input');\n }\n }\n setViewDate();\n } catch {\n console.warn(\n 'TD: Something went wrong trying to set the multidate values from the input field.'\n );\n }\n } else {\n if (this._options.hooks.inputParse) {\n this.dates.set(this._options.hooks.inputParse(value), 0, 'input');\n } else {\n this.dates.set(value, 0, 'input');\n }\n setViewDate();\n }\n };\n\n /**\n * Event for when the toggle is clicked. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _toggleClickEvent = () => {\n this.toggle();\n };\n}\n\nexport {\n TempusDominus,\n Namespace,\n DefaultOptions,\n DateTime,\n Options,\n Unit,\n DateTimeFormatOptions,\n};\n"],"names":["Unit","SecondDisplay","createPopper"],"mappings":"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"} \ No newline at end of file diff --git a/docs/6/migration.html b/docs/6/migration.html index b621a3de3..6d5c183ea 100644 --- a/docs/6/migration.html +++ b/docs/6/migration.html @@ -353,7 +353,7 @@

    Exception 2

    differentAccepts(key); switch (key) { case 'format': - createAlert('Format is no longer used to determine component display. See component usage and input formatting.', 'warning'); + createAlert('Format is no longer used to determine component display. See component usage and input formatting.', 'warning'); ensurePath('display', newOptions); newOptions.display.components = { calendar: true, @@ -390,7 +390,6 @@

    Exception 2

    case 'keyBinds': case 'ignoreReadonly': case 'focusOnShow': - case 'parseInputDate': case 'timeZone': createAlert(`${key} is no longer supported and was ignored.`, 'danger'); break; @@ -454,6 +453,11 @@

    Exception 2

    case 'multidateSeparator': newOptions.multipleDatesSeparator = value; break; + case 'parseInputDate': + createAlert(`${key} is now hooks.inputParse and takes a function that must return a DateTime object.`, 'danger'); + ensurePath('hooks.inputParse', newOptions); + newOptions.hooks.inputParse = undefined; + break; } }); diff --git a/docs/6/options.html b/docs/6/options.html index 67c979cd1..79d2b27a9 100644 --- a/docs/6/options.html +++ b/docs/6/options.html @@ -632,7 +632,7 @@

    inputFormatinputParse +

    inputParse

    Accepts: (value: any) => DateTime or undefined Defaults: diff --git a/docs/sitemap.xml b/docs/sitemap.xml index 431034d82..1451e81e2 100644 --- a/docs/sitemap.xml +++ b/docs/sitemap.xml @@ -1,7 +1,7 @@ https://getdatepicker.com -2021-10-07T01:10:14.273Z +2021-10-07T15:59:17.122Z 1.00 diff --git a/src/docs/partials/change-log.html b/src/docs/partials/change-log.html index 63d72a84b..5a5afbb9b 100644 --- a/src/docs/partials/change-log.html +++ b/src/docs/partials/change-log.html @@ -7,6 +7,7 @@

    New

  • Cleaned up css a bit. Got rid of the popper arrow and aligned the picker to the start of the element.
  • BREAKING display.inputFormat now takes a function, not an Intl format. It has also been moved to hooks.inputFormat By default a function will be executed that uses Intl to format the selected date(s) based on the selected components.
  • Added hooks.inputParse
  • +
  • Merged number localization Thanks @hkvstore #2408

Bug fixes

    diff --git a/src/docs/partials/migration.html b/src/docs/partials/migration.html index 5b2968178..e20fdb5a1 100644 --- a/src/docs/partials/migration.html +++ b/src/docs/partials/migration.html @@ -144,7 +144,7 @@

    Exception 2

    differentAccepts(key); switch (key) { case 'format': - createAlert('Format is no longer used to determine component display. See component usage and input formatting.', 'warning'); + createAlert('Format is no longer used to determine component display. See component usage and input formatting.', 'warning'); ensurePath('display', newOptions); newOptions.display.components = { calendar: true, @@ -181,7 +181,6 @@

    Exception 2

    case 'keyBinds': case 'ignoreReadonly': case 'focusOnShow': - case 'parseInputDate': case 'timeZone': createAlert(`${key} is no longer supported and was ignored.`, 'danger'); break; @@ -245,6 +244,11 @@

    Exception 2

    case 'multidateSeparator': newOptions.multipleDatesSeparator = value; break; + case 'parseInputDate': + createAlert(`${key} is now hooks.inputParse and takes a function that must return a DateTime object.`, 'danger'); + ensurePath('hooks.inputParse', newOptions); + newOptions.hooks.inputParse = undefined; + break; } }); diff --git a/src/docs/partials/options.html b/src/docs/partials/options.html index c5e7cf9e5..aa6622709 100644 --- a/src/docs/partials/options.html +++ b/src/docs/partials/options.html @@ -467,8 +467,8 @@

    inputFormatinputParseinputParse

    diff --git a/src/js/actions.ts b/src/js/actions.ts index cde4452df..d014046cd 100644 --- a/src/js/actions.ts +++ b/src/js/actions.ts @@ -65,7 +65,7 @@ export default class Actions { case ActionTypes.selectMonth: case ActionTypes.selectYear: case ActionTypes.selectDecade: - const value = +currentTarget.getAttribute('data-value'); + const value = +currentTarget.dataset.value; switch (action) { case ActionTypes.selectMonth: this._context._viewDate.month = value; @@ -133,8 +133,12 @@ export default class Actions { } break; case ActionTypes.selectHour: - let hour = +currentTarget.getAttribute('data-value'); - if (lastPicked.hours >= 12 && !this._context._options.display.components.useTwentyfourHour) hour += 12; + let hour = +currentTarget.dataset.value; + if ( + lastPicked.hours >= 12 && + !this._context._options.display.components.useTwentyfourHour + ) + hour += 12; lastPicked.hours = hour; this._context.dates._setValue( lastPicked, From f5e81889354caeea0202889f9bbe24779f985d07 Mon Sep 17 00:00:00 2001 From: Eonasdan Date: Sat, 9 Oct 2021 10:33:56 -0400 Subject: [PATCH 6/8] updated the input hooks to include the context fixed widget positioning with rtl fixed number localization bug call updateInput when setValue is called regardless of if the date is the same or not --- dist/js/tempus-dominus.esm.js | 40 +- dist/js/tempus-dominus.esm.js.map | 2 +- dist/js/tempus-dominus.js | 40 +- dist/js/tempus-dominus.js.map | 2 +- docs/6/change-log.html | 1 + docs/6/js/search.json | 6 +- docs/6/js/tempus-dominus.esm.js | 40 +- docs/6/js/tempus-dominus.esm.js.map | 2 +- docs/6/js/tempus-dominus.js | 40 +- docs/6/js/tempus-dominus.js.map | 2 +- docs/6/options.html | 15 +- docs/sitemap.xml | 2 +- src/docs/partials/change-log.html | 1 + src/docs/partials/examples/test.html | 1903 -------------------------- src/docs/partials/options.html | 17 +- src/js/actions.ts | 2 +- src/js/dates.ts | 16 +- src/js/display/index.ts | 20 +- src/js/options.ts | 10 +- src/js/tempus-dominus.ts | 7 +- types/options.d.ts | 5 +- 21 files changed, 135 insertions(+), 2038 deletions(-) delete mode 100644 src/docs/partials/examples/test.html diff --git a/dist/js/tempus-dominus.esm.js b/dist/js/tempus-dominus.esm.js index 22ba67012..33f56b7cc 100644 --- a/dist/js/tempus-dominus.esm.js +++ b/dist/js/tempus-dominus.esm.js @@ -1056,7 +1056,7 @@ class Actions { } break; case ActionTypes.selectSecond: - lastPicked.seconds = +currentTarget.innerText; + lastPicked.seconds = +currentTarget.dataset.value; this._context.dates._setValue(lastPicked, this._context.dates.lastPickedIndex); if (this._context._options.display.components.useTwentyfourHour && !this._context._options.display.keepOpen && @@ -1533,7 +1533,8 @@ class OptionConverter { } path += `.${key}`; copyTo[key] = processKey(key, value, providedType, defaultType); - if (typeof defaultOptionValue !== 'object' || ignoreProperties.includes(key)) { + if (typeof defaultOptionValue !== 'object' || + ignoreProperties.includes(key)) { path = path.substring(0, path.lastIndexOf(`.${key}`)); return; } @@ -1812,20 +1813,22 @@ class Dates { if (!oldDate && !this._context._unset && noIndex && isClear) { oldDate = this.lastPicked; } - if (target && (oldDate === null || oldDate === void 0 ? void 0 : oldDate.isSame(target))) - return; const updateInput = () => { if (!this._context._input) return; - let newValue = this._context._options.hooks.inputFormat(target); + let newValue = this._context._options.hooks.inputFormat(this._context, target); if (this._context._options.multipleDates) { newValue = this._dates - .map((d) => this._context._options.hooks.inputFormat(d)) + .map((d) => this._context._options.hooks.inputFormat(this._context, d)) .join(this._context._options.multipleDatesSeparator); } if (this._context._input.value != newValue) this._context._input.value = newValue; }; + if (target && (oldDate === null || oldDate === void 0 ? void 0 : oldDate.isSame(target))) { + updateInput(); + return; + } // case of calling setValue(null) if (!target) { if (!this._context._options.multipleDates || @@ -2395,9 +2398,7 @@ class Display { */ this._documentClickEvent = (e) => { var _a; - if (this._context._options.display.keepOpen || - this._context._options.debug || - window.debug) + if (this._context._options.debug || window.debug) return; if (this._isVisible && !e.composedPath().includes(this.widget) && // click inside the widget @@ -2527,16 +2528,11 @@ class Display { if (!this._context._options.display.inline) { document.body.appendChild(this.widget); this._popperInstance = createPopper(this._context._element, this.widget, { - modifiers: [ - /* { - name: 'offset', - options: { - offset: [2, 8], - }, - },*/ - { name: 'eventListeners', enabled: true }, - ], - placement: 'bottom-start', + modifiers: [{ name: 'eventListeners', enabled: true }], + //#2400 + placement: document.documentElement.dir === 'rtl' + ? 'bottom-end' + : 'bottom-start', }); } else { @@ -3008,7 +3004,7 @@ class TempusDominus { const valueSplit = value.split(this._options.multipleDatesSeparator); for (let i = 0; i < valueSplit.length; i++) { if (this._options.hooks.inputParse) { - this.dates.set(this._options.hooks.inputParse(valueSplit[i]), i, 'input'); + this.dates.set(this._options.hooks.inputParse(this, valueSplit[i]), i, 'input'); } else { this.dates.set(valueSplit[i], i, 'input'); @@ -3022,7 +3018,7 @@ class TempusDominus { } else { if (this._options.hooks.inputParse) { - this.dates.set(this._options.hooks.inputParse(value), 0, 'input'); + this.dates.set(this._options.hooks.inputParse(this, value), 0, 'input'); } else { this.dates.set(value, 0, 'input'); @@ -3276,7 +3272,7 @@ class TempusDominus { // defaults the input format based on the components enabled if (config.hooks.inputFormat === undefined) { const components = config.display.components; - config.hooks.inputFormat = (date) => { + config.hooks.inputFormat = (_, date) => { return date.format({ year: components.calendar && components.year ? 'numeric' : undefined, month: components.calendar && components.month ? '2-digit' : undefined, diff --git a/dist/js/tempus-dominus.esm.js.map b/dist/js/tempus-dominus.esm.js.map index 27a9b970b..63b55e2ad 100644 --- a/dist/js/tempus-dominus.esm.js.map +++ b/dist/js/tempus-dominus.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"tempus-dominus.esm.js","sources":["../../src/js/datetime.ts","../../src/js/errors.ts","../../src/js/namespace.ts","../../src/js/conts.ts","../../src/js/display/collapse.ts","../../src/js/actions.ts","../../src/js/display/calendar/date-display.ts","../../src/js/display/calendar/month-display.ts","../../src/js/options.ts","../../src/js/dates.ts","../../src/js/display/calendar/year-display.ts","../../src/js/display/calendar/decade-display.ts","../../src/js/display/time/time-display.ts","../../src/js/display/time/hour-display.ts","../../src/js/display/time/minute-display.ts","../../src/js/display/time/second-display.ts","../../src/js/display/index.ts","../../src/js/validation.ts","../../src/js/tempus-dominus.ts"],"sourcesContent":["export enum Unit {\r\n seconds = 'seconds',\r\n minutes = 'minutes',\r\n hours = 'hours',\r\n date = 'date',\r\n month = 'month',\r\n year = 'year',\r\n}\r\n\r\nexport interface DateTimeFormatOptions extends Intl.DateTimeFormatOptions {\r\n timeStyle?: 'short' | 'medium' | 'long';\r\n dateStyle?: 'short' | 'medium' | 'long' | 'full';\r\n}\r\n\r\n/**\r\n * For the most part this object behaves exactly the same way\r\n * as the native Date object with a little extra spice.\r\n */\r\nexport class DateTime extends Date {\r\n /**\r\n * Used with Intl.DateTimeFormat\r\n */\r\n locale = 'default';\r\n\r\n /**\r\n * Chainable way to set the {@link locale}\r\n * @param value\r\n */\r\n setLocale(value: string): this {\r\n this.locale = value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Converts a plain JS date object to a DateTime object.\r\n * Doing this allows access to format, etc.\r\n * @param date\r\n */\r\n static convert(date: Date): DateTime {\r\n if (!date) throw `A date is required`;\r\n return new DateTime(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate(),\r\n date.getHours(),\r\n date.getMinutes(),\r\n date.getSeconds(),\r\n date.getMilliseconds()\r\n );\r\n }\r\n\r\n /**\r\n * Native date manipulations are not pure functions. This function creates a duplicate of the DateTime object.\r\n */\r\n get clone() {\r\n return new DateTime(\r\n this.year,\r\n this.month,\r\n this.date,\r\n this.hours,\r\n this.minutes,\r\n this.seconds,\r\n this.getMilliseconds()\r\n ).setLocale(this.locale);\r\n }\r\n\r\n /**\r\n * Sets the current date to the start of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).startOf('month')\r\n * would return April 1, 2021, 12:00:00.000 AM (midnight)\r\n * @param unit\r\n */\r\n startOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(0);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(0, 0);\r\n break;\r\n case 'hours':\r\n this.setMinutes(0, 0, 0);\r\n break;\r\n case 'date':\r\n this.setHours(0, 0, 0, 0);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(0 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.startOf(Unit.date);\r\n this.setDate(1);\r\n break;\r\n case 'year':\r\n this.startOf(Unit.date);\r\n this.setMonth(0, 1);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the current date to the end of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).endOf('month')\r\n * would return April 30, 2021, 11:59:59.999 PM\r\n * @param unit\r\n */\r\n endOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(999);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(59, 999);\r\n break;\r\n case 'hours':\r\n this.setMinutes(59, 59, 999);\r\n break;\r\n case 'date':\r\n this.setHours(23, 59, 59, 999);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(6 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.month);\r\n this.setDate(0);\r\n break;\r\n case 'year':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.year);\r\n this.setDate(0);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Change a {@link unit} value. Value can be positive or negative\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).manipulate(1, 'month')\r\n * would return May 30, 2021, 11:45:32.984 AM\r\n * @param value A positive or negative number\r\n * @param unit\r\n */\r\n manipulate(value: number, unit: Unit): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n this[unit] += value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns a string format.\r\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat\r\n * for valid templates and locale objects\r\n * @param template An object. Uses browser defaults otherwise.\r\n * @param locale Can be a string or an array of strings. Uses browser defaults otherwise.\r\n */\r\n format(template: DateTimeFormatOptions, locale = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, template).format(this);\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is before this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isBefore(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() < compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() < compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is after this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isAfter(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() > compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() > compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is same this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isSame(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() === compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n compare = DateTime.convert(compare);\r\n return (\r\n this.clone.startOf(unit).valueOf() === compare.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Check if this is between two other DateTimes, optionally looking at unit scale. The match is exclusive.\r\n * @param left\r\n * @param right\r\n * @param unit.\r\n * @param inclusivity. A [ indicates inclusion of a value. A ( indicates exclusion.\r\n * If the inclusivity parameter is used, both indicators must be passed.\r\n */\r\n isBetween(\r\n left: DateTime,\r\n right: DateTime,\r\n unit?: Unit,\r\n inclusivity: '()' | '[]' | '(]' | '[)' = '()'\r\n ): boolean {\r\n if (unit && this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n const leftInclusivity = inclusivity[0] === '(';\r\n const rightInclusivity = inclusivity[1] === ')';\r\n\r\n return (\r\n ((leftInclusivity\r\n ? this.isAfter(left, unit)\r\n : !this.isBefore(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isBefore(right, unit)\r\n : !this.isAfter(right, unit))) ||\r\n ((leftInclusivity\r\n ? this.isBefore(left, unit)\r\n : !this.isAfter(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isAfter(right, unit)\r\n : !this.isBefore(right, unit)))\r\n );\r\n }\r\n\r\n /**\r\n * Returns flattened object of the date. Does not include literals\r\n * @param locale\r\n * @param template\r\n */\r\n parts(\r\n locale = this.locale,\r\n template: any = { dateStyle: 'full', timeStyle: 'long' }\r\n ) {\r\n const parts = {};\r\n new Intl.DateTimeFormat(locale, template)\r\n .formatToParts(this)\r\n .filter((x) => x.type !== 'literal')\r\n .forEach((x) => (parts[x.type] = x.value));\r\n return parts;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getSeconds()\r\n */\r\n get seconds(): number {\r\n return this.getSeconds();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setSeconds()\r\n */\r\n set seconds(value: number) {\r\n this.setSeconds(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get secondsFormatted(): string {\r\n return this.format({ second: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMinutes()\r\n */\r\n get minutes(): number {\r\n return this.getMinutes();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMinutes()\r\n */\r\n set minutes(value: number) {\r\n this.setMinutes(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get minutesFormatted(): string {\r\n return this.format({ minute: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getHours()\r\n */\r\n get hours(): number {\r\n return this.getHours();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setHours()\r\n */\r\n set hours(value: number) {\r\n this.setHours(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get hoursFormatted(): string {\r\n return this.format({ hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Returns two digit hours but in twelve hour mode e.g. 13 -> 1\r\n */\r\n get twelveHoursFormatted(): string {\r\n return this.format({ hour12: true, hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Get the meridiem of the date. E.g. AM or PM.\r\n * If the {@link locale} provides a \"dayPeriod\" then this will be returned,\r\n * otherwise it will return AM or PM.\r\n * @param locale\r\n */\r\n meridiem(locale: string = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, {\r\n hour: 'numeric',\r\n hour12: true,\r\n } as any)\r\n .formatToParts(this)\r\n .find((p) => p.type === 'dayPeriod')?.value;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDate()\r\n */\r\n get date(): number {\r\n return this.getDate();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setDate()\r\n */\r\n set date(value: number) {\r\n this.setDate(value);\r\n }\r\n\r\n /**\r\n * Return two digit date\r\n */\r\n get dateFormatted(): string {\r\n return this.date < 10 ? `0${this.date}` : `${this.date}`;\r\n }\r\n\r\n // https://github.com/you-dont-need/You-Dont-Need-Momentjs#week-of-year\r\n /**\r\n * Gets the week of the year\r\n */\r\n get week(): number {\r\n const startOfYear = new Date(this.year, 0, 1);\r\n startOfYear.setDate(\r\n startOfYear.getDate() + (1 - (startOfYear.getDay() % 7))\r\n );\r\n return Math.round((this.valueOf() - startOfYear.valueOf()) / 604800000) + 1;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDay()\r\n */\r\n get weekDay(): number {\r\n return this.getDay();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMonth()\r\n */\r\n get month(): number {\r\n return this.getMonth();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMonth()\r\n */\r\n set month(value: number) {\r\n this.setMonth(value);\r\n }\r\n\r\n /**\r\n * Return two digit, human expected month. E.g. January = 1, December = 12\r\n */\r\n get monthFormatted(): string {\r\n return this.month + 1 < 10 ? `0${this.month}` : `${this.month}`;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getFullYear()\r\n */\r\n get year(): number {\r\n return this.getFullYear();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setFullYear()\r\n */\r\n set year(value: number) {\r\n this.setFullYear(value);\r\n }\r\n}\r\n","import Namespace from './namespace';\n\nexport class TdError extends Error {\n code: number;\n}\n\nexport class ErrorMessages {\n private base = 'TD:';\n\n //#region out to console\n\n /**\n * Throws an error indicating that a key in the options object is invalid.\n * @param optionName\n */\n unexpectedOption(optionName: string) {\n const error = new TdError(\n `${this.base} Unexpected option: ${optionName} does not match a known option.`\n );\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error indicating that one more keys in the options object is invalid.\n * @param optionName\n */\n unexpectedOptions(optionName: string[]) {\n const error = new TdError(`${this.base}: ${optionName.join(', ')}`);\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error when an option is provide an unsupported value.\n * For example a value of 'cheese' for toolbarPlacement which only supports\n * 'top', 'bottom', 'default'.\n * @param optionName\n * @param badValue\n * @param validOptions\n */\n unexpectedOptionValue(\n optionName: string,\n badValue: string,\n validOptions: string[]\n ) {\n const error = new TdError(\n `${\n this.base\n } Unexpected option value: ${optionName} does not accept a value of \"${badValue}\". Valid values are: ${validOptions.join(\n ', '\n )}`\n );\n error.code = 2;\n throw error;\n }\n\n /**\n * Throws an error when an option value is the wrong type.\n * For example a string value was provided to multipleDates which only\n * supports true or false.\n * @param optionName\n * @param badType\n * @param expectedType\n */\n typeMismatch(optionName: string, badType: string, expectedType: string) {\n const error = new TdError(\n `${this.base} Mismatch types: ${optionName} has a type of ${badType} instead of the required ${expectedType}`\n );\n error.code = 3;\n throw error;\n }\n\n /**\n * Throws an error when an option value is outside of the expected range.\n * For example restrictions.daysOfWeekDisabled excepts a value between 0 and 6.\n * @param optionName\n * @param lower\n * @param upper\n */\n numbersOutOfRage(optionName: string, lower: number, upper: number) {\n const error = new TdError(\n `${this.base} ${optionName} expected an array of number between ${lower} and ${upper}.`\n );\n error.code = 4;\n throw error;\n }\n\n /**\n * Throws an error when a value for a date options couldn't be parsed. Either\n * the option was an invalide string or an invalid Date object.\n * @param optionName\n * @param date\n * @param soft If true, logs a warning instead of an error.\n */\n failedToParseDate(optionName: string, date: any, soft = false) {\n const error = new TdError(\n `${this.base} Could not correctly parse \"${date}\" to a date for ${optionName}.`\n );\n error.code = 5;\n if (!soft) throw error;\n console.warn(error);\n }\n\n /**\n * Throws when an element to attach to was not provided in the constructor.\n */\n mustProvideElement() {\n const error = new TdError(`${this.base} No element was provided.`);\n error.code = 6;\n throw error;\n }\n\n /**\n * Throws if providing an array for the events to subscribe method doesn't have\n * the same number of callbacks. E.g., subscribe([1,2], [1])\n */\n subscribeMismatch() {\n const error = new TdError(\n `${this.base} The subscribed events does not match the number of callbacks`\n );\n error.code = 7;\n throw error;\n }\n\n /**\n * Throws if the configuration has conflicting rules e.g. minDate is after maxDate\n */\n conflictingConfiguration(message?: string) {\n const error = new TdError(\n `${this.base} A configuration value conflicts with another rule. ${message}`\n );\n error.code = 8;\n throw error;\n }\n\n /**\n * Logs a warning if a date option value is provided as a string, instead of\n * a date/datetime object.\n */\n dateString() {\n console.warn(\n `${this.base} Using a string for date options is not recommended unless you specify an ISO string.`\n );\n }\n\n //#endregion\n\n //#region used with notify.error\n\n /**\n * Used with an Error Event type if the user selects a date that\n * fails restriction validation.\n */\n failedToSetInvalidDate = 'Failed to set invalid date';\n\n /**\n * Used with an Error Event type when a user changes the value of the\n * input field directly, and does not provide a valid date.\n */\n failedToParseInput = 'Failed parse input field';\n\n //#endregion\n}\n","import { ErrorMessages } from './errors';\n// this is not the way I want this to stay but nested classes seemed to blown up once its compiled.\nconst NAME = 'tempus-dominus',\n version = '6.0.0-alpha1',\n dataKey = 'td';\n\n/**\n * Events\n */\nclass Events {\n key = `.${dataKey}`;\n\n /**\n * Change event. Fired when the user selects a date.\n * See also EventTypes.ChangeEvent\n */\n change = `change${this.key}`;\n\n /**\n * Emit when the view changes for example from month view to the year view.\n * See also EventTypes.ViewUpdateEvent\n */\n update = `update${this.key}`;\n\n /**\n * Emits when a selected date or value from the input field fails to meet the provided validation rules.\n * See also EventTypes.FailEvent\n */\n error = `error${this.key}`;\n\n /**\n * Show event\n * @event Events#show\n */\n show = `show${this.key}`;\n\n /**\n * Hide event\n * @event Events#hide\n */\n hide = `hide${this.key}`;\n\n // blur and focus are used in the jQuery provider but are otherwise unused.\n // keyup/down will be used later for keybinding options\n\n blur = `blur${this.key}`;\n focus = `focus${this.key}`;\n keyup = `keyup${this.key}`;\n keydown = `keydown${this.key}`;\n}\n\nclass Css {\n /**\n * The outer element for the widget.\n */\n widget = `${NAME}-widget`;\n\n /**\n * Hold the previous, next and switcher divs\n */\n calendarHeader = 'calendar-header';\n\n /**\n * The element for the action to change the calendar view. E.g. month -> year.\n */\n switch = 'picker-switch';\n\n /**\n * The elements for all of the toolbar options\n */\n toolbar = 'toolbar';\n\n /**\n * Disables the hover and rounding affect.\n */\n noHighlight = 'no-highlight';\n\n /**\n * Applied to the widget element when the side by side option is in use.\n */\n sideBySide = 'timepicker-sbs';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> July\n */\n previous = 'previous';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> September\n */\n next = 'next';\n\n /**\n * Applied to any action that would violate any restriction options. ALso applied\n * to an input field if the disabled function is called.\n */\n disabled = 'disabled';\n\n /**\n * Applied to any date that is less than requested view,\n * e.g. the last day of the previous month.\n */\n old = 'old';\n\n /**\n * Applied to any date that is greater than of requested view,\n * e.g. the last day of the previous month.\n */\n new = 'new';\n\n /**\n * Applied to any date that is currently selected.\n */\n active = 'active';\n\n //#region date element\n\n /**\n * The outer most element for the calendar view.\n */\n dateContainer = 'date-container';\n\n /**\n * The outer most element for the decades view.\n */\n decadesContainer = `${this.dateContainer}-decades`;\n\n /**\n * Applied to elements within the decades container, e.g. 2020, 2030\n */\n decade = 'decade';\n\n /**\n * The outer most element for the years view.\n */\n yearsContainer = `${this.dateContainer}-years`;\n\n /**\n * Applied to elements within the years container, e.g. 2021, 2021\n */\n year = 'year';\n\n /**\n * The outer most element for the month view.\n */\n monthsContainer = `${this.dateContainer}-months`;\n\n /**\n * Applied to elements within the month container, e.g. January, February\n */\n month = 'month';\n\n /**\n * The outer most element for the calendar view.\n */\n daysContainer = `${this.dateContainer}-days`;\n\n /**\n * Applied to elements within the day container, e.g. 1, 2..31\n */\n day = 'day';\n\n /**\n * If display.calendarWeeks is enabled, a column displaying the week of year\n * is shown. This class is applied to each cell in that column.\n */\n calendarWeeks = 'cw';\n\n /**\n * Applied to the first row of the calendar view, e.g. Sunday, Monday\n */\n dayOfTheWeek = 'dow';\n\n /**\n * Applied to the current date on the calendar view.\n */\n today = 'today';\n\n /**\n * Applied to the locale's weekend dates on the calendar view, e.g. Sunday, Saturday\n */\n weekend = 'weekend';\n\n //#endregion\n\n //#region time element\n\n /**\n * The outer most element for all time related elements.\n */\n timeContainer = 'time-container';\n\n /**\n * Applied the separator columns between time elements, e.g. hour *:* minute *:* second\n */\n separator = 'separator';\n\n /**\n * The outer most element for the clock view.\n */\n clockContainer = `${this.timeContainer}-clock`;\n\n /**\n * The outer most element for the hours selection view.\n */\n hourContainer = `${this.timeContainer}-hour`;\n\n /**\n * The outer most element for the minutes selection view.\n */\n minuteContainer = `${this.timeContainer}-minute`;\n\n /**\n * The outer most element for the seconds selection view.\n */\n secondContainer = `${this.timeContainer}-second`;\n\n /**\n * Applied to each element in the hours selection view.\n */\n hour = 'hour';\n\n /**\n * Applied to each element in the minutes selection view.\n */\n minute = 'minute';\n\n /**\n * Applied to each element in the seconds selection view.\n */\n second = 'second';\n\n /**\n * Applied AM/PM toggle button.\n */\n toggleMeridiem = 'toggleMeridiem';\n\n //#endregion\n\n //#region collapse\n\n /**\n * Applied the element of the current view mode, e.g. calendar or clock.\n */\n show = 'show';\n\n /**\n * Applied to the currently showing view mode during a transition\n * between calendar and clock views\n */\n collapsing = 'td-collapsing';\n\n /**\n * Applied to the currently hidden view mode.\n */\n collapse = 'td-collapse';\n\n //#endregion\n\n /**\n * Applied to the widget when the option display.inline is enabled.\n */\n inline = 'inline';\n}\n\nexport default class Namespace {\n static NAME = NAME;\n // noinspection JSUnusedGlobalSymbols\n static version = version;\n static dataKey = dataKey;\n\n static events = new Events();\n\n static css = new Css();\n\n static errorMessages = new ErrorMessages();\n}\n","import { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options from './options';\n\nconst DefaultOptions: Options = {\n restrictions: {\n minDate: undefined,\n maxDate: undefined,\n disabledDates: [],\n enabledDates: [],\n daysOfWeekDisabled: [],\n disabledTimeIntervals: [],\n disabledHours: [],\n enabledHours: [],\n },\n display: {\n icons: {\n type: 'icons',\n time: 'fas fa-clock',\n date: 'fas fa-calendar',\n up: 'fas fa-arrow-up',\n down: 'fas fa-arrow-down',\n previous: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n today: 'fas fa-calendar-check',\n clear: 'fas fa-trash',\n close: 'fas fa-times',\n },\n sideBySide: false,\n calendarWeeks: false,\n viewMode: 'calendar',\n toolbarPlacement: 'bottom',\n keepOpen: false,\n buttons: {\n today: false,\n clear: false,\n close: false,\n },\n components: {\n calendar: true,\n date: true,\n month: true,\n year: true,\n decades: true,\n clock: true,\n hours: true,\n minutes: true,\n seconds: false,\n useTwentyfourHour: false,\n },\n inline: false,\n },\n stepping: 1,\n useCurrent: true,\n defaultDate: undefined,\n localization: {\n today: 'Go to today',\n clear: 'Clear selection',\n close: 'Close the picker',\n selectMonth: 'Select Month',\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n selectYear: 'Select Year',\n previousYear: 'Previous Year',\n nextYear: 'Next Year',\n selectDecade: 'Select Decade',\n previousDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n previousCentury: 'Previous Century',\n nextCentury: 'Next Century',\n pickHour: 'Pick Hour',\n incrementHour: 'Increment Hour',\n decrementHour: 'Decrement Hour',\n pickMinute: 'Pick Minute',\n incrementMinute: 'Increment Minute',\n decrementMinute: 'Decrement Minute',\n pickSecond: 'Pick Second',\n incrementSecond: 'Increment Second',\n decrementSecond: 'Decrement Second',\n toggleMeridiem: 'Toggle Meridiem',\n selectTime: 'Select Time',\n selectDate: 'Select Date',\n dayViewHeaderFormat: 'long',\n locale: 'default',\n },\n keepInvalid: false,\n debug: false,\n allowInputToggle: false,\n viewDate: new DateTime(),\n multipleDates: false,\n multipleDatesSeparator: '; ',\n promptTimeOnDateChange: false,\n promptTimeOnDateChangeTransitionDelay: 200,\n hooks: {\n inputParse: undefined,\n inputFormat: undefined,\n },\n};\n\nconst DatePickerModes: {\n name: string;\n className: string;\n unit: Unit;\n step: number;\n}[] = [\n {\n name: 'calendar',\n className: Namespace.css.daysContainer,\n unit: Unit.month,\n step: 1,\n },\n {\n name: 'months',\n className: Namespace.css.monthsContainer,\n unit: Unit.year,\n step: 1,\n },\n {\n name: 'years',\n className: Namespace.css.yearsContainer,\n unit: Unit.year,\n step: 10,\n },\n {\n name: 'decades',\n className: Namespace.css.decadesContainer,\n unit: Unit.year,\n step: 100,\n },\n];\n\nexport { DefaultOptions, DatePickerModes, Namespace };\n","import Namespace from '../namespace';\n\n/**\n * Provides a collapse functionality to the view changes\n */\nexport default class Collapse {\n private timeOut;\n\n /**\n * Flips the show/hide state of `target`\n * @param target html element to affect.\n */\n toggle(target: HTMLElement, callback = undefined) {\n if (target.classList.contains(Namespace.css.show)) {\n this.hide(target, callback);\n } else {\n this.show(target, callback);\n }\n }\n\n /**\n * If `target` is not already showing, then show after the animation.\n * @param target\n */\n show(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse, Namespace.css.show);\n target.style.height = '';\n this.timeOut = null;\n if (callback) callback();\n };\n\n target.style.height = '0';\n target.classList.remove(Namespace.css.collapse);\n target.classList.add(Namespace.css.collapsing);\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n target.style.height = `${target.scrollHeight}px`;\n }\n\n /**\n * If `target` is not already hidden, then hide after the animation.\n * @param target HTML Element\n */\n hide(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n !target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse);\n this.timeOut = null;\n };\n\n target.style.height = `${target.getBoundingClientRect()['height']}px`;\n\n const reflow = (element) => element.offsetHeight;\n\n reflow(target);\n\n target.classList.remove(Namespace.css.collapse, Namespace.css.show);\n target.classList.add(Namespace.css.collapsing);\n target.style.height = '';\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n }\n\n /**\n * Gets the transition duration from the `element` by getting css properties\n * `transition-duration` and `transition-delay`\n * @param element HTML Element\n */\n private getTransitionDurationFromElement = (element: HTMLElement) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } =\n window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) +\n Number.parseFloat(transitionDelay)) *\n 1000\n );\n };\n}\n","import { DatePickerModes } from './conts.js';\nimport { DateTime, Unit } from './datetime';\nimport { TempusDominus } from './tempus-dominus';\nimport Collapse from './display/collapse';\nimport Namespace from './namespace';\n\n/**\n *\n */\nexport default class Actions {\n private _context: TempusDominus;\n private collapse: Collapse;\n\n constructor(context: TempusDominus) {\n this._context = context;\n this.collapse = new Collapse();\n }\n\n /**\n * Performs the selected `action`. See ActionTypes\n * @param e This is normally a click event\n * @param action If not provided, then look for a [data-action]\n */\n do(e: any, action?: ActionTypes) {\n const currentTarget = e.currentTarget;\n if (currentTarget.classList.contains(Namespace.css.disabled)) return false;\n action = action || currentTarget.dataset.action;\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n /**\n * Common function to manipulate {@link lastPicked} by `unit`\n * @param unit\n * @param value Value to change by\n */\n const manipulateAndSet = (unit: Unit, value = 1) => {\n const newDate = lastPicked.manipulate(value, unit);\n if (this._context._validation.isValid(newDate, unit)) {\n this._context.dates._setValue(\n newDate,\n this._context.dates.lastPickedIndex\n );\n }\n };\n\n switch (action) {\n case ActionTypes.next:\n case ActionTypes.previous:\n const { unit, step } = DatePickerModes[this._context._currentViewMode];\n if (action === ActionTypes.next)\n this._context._viewDate.manipulate(step, unit);\n else this._context._viewDate.manipulate(step * -1, unit);\n this._context._viewUpdate(unit);\n\n this._context._display._showMode();\n break;\n case ActionTypes.pickerSwitch:\n this._context._display._showMode(1);\n this._context._viewUpdate(\n DatePickerModes[this._context._currentViewMode].unit\n );\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.selectMonth:\n case ActionTypes.selectYear:\n case ActionTypes.selectDecade:\n const value = +currentTarget.dataset.value;\n switch (action) {\n case ActionTypes.selectMonth:\n this._context._viewDate.month = value;\n this._context._viewUpdate(Unit.month);\n break;\n case ActionTypes.selectYear:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n case ActionTypes.selectDecade:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n }\n\n if (\n this._context._currentViewMode === this._context._minViewModeNumber\n ) {\n this._context.dates._setValue(\n this._context._viewDate,\n this._context.dates.lastPickedIndex\n );\n if (!this._context._options.display.inline) {\n this._context._display.hide();\n }\n } else {\n this._context._display._showMode(-1);\n }\n break;\n case ActionTypes.selectDay:\n const day = this._context._viewDate.clone;\n if (currentTarget.classList.contains(Namespace.css.old)) {\n day.manipulate(-1, Unit.month);\n }\n if (currentTarget.classList.contains(Namespace.css.new)) {\n day.manipulate(1, Unit.month);\n }\n\n day.date = +currentTarget.dataset.day;\n let index = 0;\n if (this._context._options.multipleDates) {\n index = this._context.dates.pickedIndex(day, Unit.date);\n if (index !== -1) {\n this._context.dates._setValue(null, index); //deselect multi-date\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex + 1\n );\n }\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex\n );\n }\n\n if (\n !this._context._display._hasTime &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline &&\n !this._context._options.multipleDates\n ) {\n this._context._display.hide();\n }\n break;\n case ActionTypes.selectHour:\n let hour = +currentTarget.dataset.value;\n if (\n lastPicked.hours >= 12 &&\n !this._context._options.display.components.useTwentyfourHour\n )\n hour += 12;\n lastPicked.hours = hour;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.minutes &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectMinute:\n lastPicked.minutes = +currentTarget.dataset.value;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.seconds &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectSecond:\n lastPicked.seconds = +currentTarget.innerText;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.incrementHours:\n manipulateAndSet(Unit.hours);\n break;\n case ActionTypes.incrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping);\n break;\n case ActionTypes.incrementSeconds:\n manipulateAndSet(Unit.seconds);\n break;\n case ActionTypes.decrementHours:\n manipulateAndSet(Unit.hours, -1);\n break;\n case ActionTypes.decrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping * -1);\n break;\n case ActionTypes.decrementSeconds:\n manipulateAndSet(Unit.seconds, -1);\n break;\n case ActionTypes.toggleMeridiem:\n manipulateAndSet(\n Unit.hours,\n this._context.dates.lastPicked.hours >= 12 ? -12 : 12\n );\n break;\n case ActionTypes.togglePicker:\n this._context._display.widget\n .querySelectorAll(\n `.${Namespace.css.dateContainer}, .${Namespace.css.timeContainer}`\n )\n .forEach((htmlElement: HTMLElement) =>\n this.collapse.toggle(htmlElement)\n );\n if (\n currentTarget.getAttribute('title') ===\n this._context._options.localization.selectDate\n ) {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectTime\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.time\n ).outerHTML;\n\n this._context._display._updateCalendarHeader();\n } else {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectDate\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.date\n ).outerHTML;\n this.do(e, ActionTypes.showClock);\n this._context._display._update('clock');\n }\n break;\n case ActionTypes.showClock:\n case ActionTypes.showHours:\n case ActionTypes.showMinutes:\n case ActionTypes.showSeconds:\n this._context._display.widget\n .querySelectorAll(`.${Namespace.css.timeContainer} > div`)\n .forEach(\n (htmlElement: HTMLElement) => (htmlElement.style.display = 'none')\n );\n\n let classToUse = '';\n switch (action) {\n case ActionTypes.showClock:\n classToUse = Namespace.css.clockContainer;\n this._context._display._update('clock');\n break;\n case ActionTypes.showHours:\n classToUse = Namespace.css.hourContainer;\n this._context._display._update(Unit.hours);\n break;\n case ActionTypes.showMinutes:\n classToUse = Namespace.css.minuteContainer;\n this._context._display._update(Unit.minutes);\n break;\n case ActionTypes.showSeconds:\n classToUse = Namespace.css.secondContainer;\n this._context._display._update(Unit.seconds);\n break;\n }\n\n ((\n this._context._display.widget.getElementsByClassName(classToUse)[0]\n )).style.display = 'grid';\n break;\n case ActionTypes.clear:\n this._context.dates._setValue(null);\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.close:\n this._context._display.hide();\n break;\n case ActionTypes.today:\n const today = new DateTime().setLocale(\n this._context._options.localization.locale\n );\n this._context._viewDate = today;\n if (this._context._validation.isValid(today, Unit.date))\n this._context.dates._setValue(\n today,\n this._context.dates.lastPickedIndex\n );\n break;\n }\n }\n}\n\nexport enum ActionTypes {\n next = 'next',\n previous = 'previous',\n pickerSwitch = 'pickerSwitch',\n selectMonth = 'selectMonth',\n selectYear = 'selectYear',\n selectDecade = 'selectDecade',\n selectDay = 'selectDay',\n selectHour = 'selectHour',\n selectMinute = 'selectMinute',\n selectSecond = 'selectSecond',\n incrementHours = 'incrementHours',\n incrementMinutes = 'incrementMinutes',\n incrementSeconds = 'incrementSeconds',\n decrementHours = 'decrementHours',\n decrementMinutes = 'decrementMinutes',\n decrementSeconds = 'decrementSeconds',\n toggleMeridiem = 'toggleMeridiem',\n togglePicker = 'togglePicker',\n showClock = 'showClock',\n showHours = 'showHours',\n showMinutes = 'showMinutes',\n showSeconds = 'showSeconds',\n clear = 'clear',\n close = 'close',\n today = 'today',\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `date`\r\n */\r\nexport default class DateDisplay {\r\n private _context: TempusDominus;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.daysContainer);\r\n\r\n container.append(...this._daysOfTheWeek());\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(Namespace.css.calendarWeeks, Namespace.css.noHighlight);\r\n container.appendChild(div);\r\n }\r\n\r\n for (let i = 0; i < 42; i++) {\r\n if (i !== 0 && i % 7 === 0) {\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n container.appendChild(div);\r\n }\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDay);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update(): void {\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.daysContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.daysContainer,\r\n this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n })\r\n );\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(-1, Unit.month),\r\n Unit.month\r\n )\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(1, Unit.month),\r\n Unit.month\r\n )\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.month)\r\n .startOf('weekDay')\r\n .manipulate(12, Unit.hours);\r\n\r\n container\r\n .querySelectorAll(\r\n `[data-action=\"${ActionTypes.selectDay}\"], .${Namespace.css.calendarWeeks}`\r\n )\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (\r\n this._context._options.display.calendarWeeks &&\r\n containerClone.classList.contains(Namespace.css.calendarWeeks)\r\n ) {\r\n if (containerClone.innerText === '#') return;\r\n containerClone.innerText = `${innerDate.week}`;\r\n return;\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.day);\r\n\r\n if (innerDate.isBefore(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.old);\r\n }\r\n if (innerDate.isAfter(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.new);\r\n }\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.date)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.date)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n if (innerDate.isSame(new DateTime(), Unit.date)) {\r\n classes.push(Namespace.css.today);\r\n }\r\n if (innerDate.weekDay === 0 || innerDate.weekDay === 6) {\r\n classes.push(Namespace.css.weekend);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`\r\n );\r\n containerClone.setAttribute(\r\n 'data-day',\r\n `${innerDate.date}`\r\n );\r\n containerClone.innerText = innerDate.format({ day: \"numeric\" });\r\n innerDate.manipulate(1, Unit.date);\r\n });\r\n }\r\n\r\n /***\r\n * Generates an html row that contains the days of the week.\r\n * @private\r\n */\r\n private _daysOfTheWeek(): HTMLElement[] {\r\n let innerDate = this._context._viewDate.clone\r\n .startOf('weekDay')\r\n .startOf(Unit.date);\r\n const row = [];\r\n document.createElement('div');\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = '#';\r\n row.push(htmlDivElement);\r\n }\r\n\r\n for (let i = 0; i < 7; i++) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.dayOfTheWeek,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = innerDate.format({ weekday: 'short' });\r\n innerDate.manipulate(1, Unit.date);\r\n row.push(htmlDivElement);\r\n }\r\n\r\n return row;\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `month`\n */\nexport default class MonthDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.monthsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMonth);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.monthsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.monthsContainer,\n this._context._viewDate.format({ year: 'numeric' })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.year),\n Unit.year\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.year),\n Unit.year\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone.startOf(Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMonth}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.month);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.month)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.month)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${index}`);\n containerClone.innerText = `${innerDate.format({ month: 'short' })}`;\n innerDate.manipulate(1, Unit.month);\n });\n }\n}\n","import { DateTime, DateTimeFormatOptions } from './datetime';\nimport Namespace from './namespace';\nimport { DefaultOptions } from './conts';\n\nexport default interface Options {\n restrictions: {\n minDate: DateTime;\n maxDate: DateTime;\n enabledDates: DateTime[];\n disabledDates: DateTime[];\n enabledHours: number[];\n disabledHours: number[];\n disabledTimeIntervals: { from: DateTime; to: DateTime }[];\n daysOfWeekDisabled: number[];\n };\n display: {\n toolbarPlacement: 'top' | 'bottom';\n components: {\n calendar: boolean;\n date: boolean;\n month: boolean;\n year: boolean;\n decades: boolean;\n clock: boolean;\n hours: boolean;\n minutes: boolean;\n seconds: boolean;\n useTwentyfourHour: boolean;\n };\n buttons: { today: boolean; close: boolean; clear: boolean };\n calendarWeeks: boolean;\n icons: {\n date: string;\n next: string;\n previous: string;\n today: string;\n clear: string;\n time: string;\n up: string;\n type: 'icons' | 'sprites';\n down: string;\n close: string;\n };\n viewMode: 'clock' | 'calendar' | 'months' | 'years' | 'decades';\n sideBySide: boolean;\n inline: boolean;\n keepOpen: boolean;\n };\n stepping: number;\n useCurrent: boolean;\n defaultDate: DateTime;\n localization: {\n nextMonth: string;\n pickHour: string;\n incrementSecond: string;\n nextDecade: string;\n selectDecade: string;\n dayViewHeaderFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n decrementHour: string;\n selectDate: string;\n incrementHour: string;\n previousCentury: string;\n decrementSecond: string;\n today: string;\n previousMonth: string;\n selectYear: string;\n pickSecond: string;\n nextCentury: string;\n close: string;\n incrementMinute: string;\n selectTime: string;\n clear: string;\n toggleMeridiem: string;\n selectMonth: string;\n decrementMinute: string;\n pickMinute: string;\n nextYear: string;\n previousYear: string;\n previousDecade: string;\n locale: string;\n };\n keepInvalid: boolean;\n debug: boolean;\n allowInputToggle: boolean;\n viewDate: DateTime;\n multipleDates: boolean;\n multipleDatesSeparator: string;\n promptTimeOnDateChange: boolean;\n promptTimeOnDateChangeTransitionDelay: number;\n hooks: {\n inputParse: (value: any) => DateTime;\n inputFormat: (date: DateTime) => string;\n };\n}\n\nexport class OptionConverter {\n static _mergeOptions(providedOptions: Options, mergeTo: Options): Options {\n const newOptions = {} as Options;\n let path = '';\n const ignoreProperties = ['inputParse', 'inputFormat'];\n\n const processKey = (key, value, providedType, defaultType) => {\n switch (key) {\n case 'defaultDate': {\n const dateTime = this._dateConversion(value, 'defaultDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'defaultDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'viewDate': {\n const dateTime = this._dateConversion(value, 'viewDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'viewDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'minDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.minDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.minDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'maxDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.maxDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.maxDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'disabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.disabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.disabledHours',\n 0,\n 23\n );\n return value;\n case 'enabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.enabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.enabledHours',\n 0,\n 23\n );\n return value;\n case 'daysOfWeekDisabled':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.daysOfWeekDisabled',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 6).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.daysOfWeekDisabled',\n 0,\n 6\n );\n return value;\n case 'enabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.enabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.disabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledTimeIntervals':\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n key,\n providedType,\n 'array of { from: DateTime|Date, to: DateTime|Date }'\n );\n }\n const valueObject = value as { from: any; to: any }[];\n for (let i = 0; i < valueObject.length; i++) {\n Object.keys(valueObject[i]).forEach((vk) => {\n const subOptionName = `${key}[${i}].${vk}`;\n let d = valueObject[i][vk];\n const dateTime = this._dateConversion(d, subOptionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n subOptionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n valueObject[i][vk] = dateTime;\n });\n }\n return valueObject;\n case 'toolbarPlacement':\n case 'type':\n case 'viewMode':\n case 'dayViewHeaderFormat':\n const optionValues = {\n toolbarPlacement: ['top', 'bottom', 'default'],\n type: ['icons', 'sprites'],\n viewMode: ['clock', 'calendar', 'months', 'years', 'decades'],\n dayViewHeaderFormat: [\n 'numeric',\n '2-digit',\n 'long',\n 'short',\n 'narrow',\n ],\n };\n const keyOptions = optionValues[key];\n if (!keyOptions.includes(value))\n Namespace.errorMessages.unexpectedOptionValue(\n path.substring(1),\n value,\n keyOptions\n );\n\n return value;\n case 'inputParse':\n case 'inputFormat':\n return value;\n default:\n switch (defaultType) {\n case 'boolean':\n return value === 'true' || value === true;\n case 'number':\n return +value;\n case 'string':\n return value.toString();\n case 'object':\n return {};\n case 'function':\n return value;\n default:\n Namespace.errorMessages.typeMismatch(\n path.substring(1),\n providedType,\n defaultType\n );\n }\n }\n };\n\n /**\n * The spread operator caused sub keys to be missing after merging.\n * This is to fix that issue by using spread on the child objects first.\n * Also handles complex options like disabledDates\n * @param provided An option from new providedOptions\n * @param mergeOption Default option to compare types against\n * @param copyTo Destination object. This was add to prevent reference copies\n */\n const spread = (provided, mergeOption, copyTo) => {\n const unsupportedOptions = Object.keys(provided).filter(\n (x) => !Object.keys(mergeOption).includes(x)\n );\n if (unsupportedOptions.length > 0) {\n const flattenedOptions = OptionConverter._flattenDefaultOptions;\n\n const errors = unsupportedOptions.map((x) => {\n let error = `\"${path.substring(1)}.${x}\" in not a known option.`;\n let didYouMean = flattenedOptions.find((y) => y.includes(x));\n if (didYouMean) error += `Did you mean \"${didYouMean}\"?`;\n return error;\n });\n Namespace.errorMessages.unexpectedOptions(errors);\n }\n Object.keys(mergeOption).forEach((key) => {\n const defaultOptionValue = mergeOption[key];\n let providedType = typeof provided[key];\n let defaultType = typeof defaultOptionValue;\n let value = provided[key];\n if (!provided.hasOwnProperty(key)) {\n if (\n defaultType === 'undefined' ||\n (value?.length === 0 && Array.isArray(defaultOptionValue))\n ) {\n copyTo[key] = defaultOptionValue;\n return;\n }\n provided[key] = defaultOptionValue;\n value = provided[key];\n }\n path += `.${key}`;\n copyTo[key] = processKey(key, value, providedType, defaultType);\n\n if (typeof defaultOptionValue !== 'object' || ignoreProperties.includes(key)) {\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n return;\n }\n if (!Array.isArray(provided[key])) {\n spread(provided[key], defaultOptionValue, copyTo[key]);\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n }\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n });\n };\n spread(providedOptions, mergeTo, newOptions);\n\n return newOptions;\n }\n\n static _dataToOptions(element, options: Options): Options {\n const eData = element.dataset;\n if (\n !eData ||\n Object.keys(eData).length === 0 ||\n eData.constructor !== DOMStringMap\n )\n return options;\n let dataOptions = {} as Options;\n\n // because dataset returns camelCase including the 'td' key the option\n // key won't align\n const objectToNormalized = (object) => {\n const lowered = {};\n Object.keys(object).forEach((x) => {\n lowered[x.toLowerCase()] = x;\n });\n\n return lowered;\n };\n\n const rabbitHole = (\n split: string[],\n index: number,\n optionSubgroup: {},\n value: any\n ) => {\n // first round = display { ... }\n const normalizedOptions = objectToNormalized(optionSubgroup);\n\n const keyOption = normalizedOptions[split[index].toLowerCase()];\n const internalObject = {};\n\n if (keyOption === undefined) return internalObject;\n\n // if this is another object, continue down the rabbit hole\n if (optionSubgroup[keyOption].constructor === Object) {\n index++;\n internalObject[keyOption] = rabbitHole(\n split,\n index,\n optionSubgroup[keyOption],\n value\n );\n } else {\n internalObject[keyOption] = value;\n }\n return internalObject;\n };\n const optionsLower = objectToNormalized(options);\n\n Object.keys(eData)\n .filter((x) => x.startsWith(Namespace.dataKey))\n .map((x) => x.substring(2))\n .forEach((key) => {\n let keyOption = optionsLower[key.toLowerCase()];\n\n // dataset merges dashes to camelCase... yay\n // i.e. key = display_components_seconds\n if (key.includes('_')) {\n // [display, components, seconds]\n const split = key.split('_');\n // display\n keyOption = optionsLower[split[0].toLowerCase()];\n if (\n keyOption !== undefined &&\n options[keyOption].constructor === Object\n ) {\n dataOptions[keyOption] = rabbitHole(\n split,\n 1,\n options[keyOption],\n eData[`td${key}`]\n );\n }\n }\n // or key = multipleDate\n else if (keyOption !== undefined) {\n dataOptions[keyOption] = eData[`td${key}`];\n }\n });\n\n return this._mergeOptions(dataOptions, options);\n }\n\n /**\n * Attempts to prove `d` is a DateTime or Date or can be converted into one.\n * @param d If a string will attempt creating a date from it.\n * @private\n */\n static _dateTypeCheck(d: any): DateTime | null {\n if (d.constructor.name === DateTime.name) return d;\n if (d.constructor.name === Date.name) {\n return DateTime.convert(d);\n }\n if (typeof d === typeof '') {\n const dateTime = new DateTime(d);\n if (JSON.stringify(dateTime) === 'null') {\n return null;\n }\n return dateTime;\n }\n return null;\n }\n\n /**\n * Type checks that `value` is an array of Date or DateTime\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckDateArray(optionName: string, value, providedType: string) {\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of DateTime or Date'\n );\n }\n for (let i = 0; i < value.length; i++) {\n let d = value[i];\n const dateTime = this._dateConversion(d, optionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n value[i] = dateTime;\n }\n }\n\n /**\n * Type checks that `value` is an array of numbers\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckNumberArray(\n optionName: string,\n value,\n providedType: string\n ) {\n if (!Array.isArray(value) || value.find((x) => typeof x !== typeof 0)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of numbers'\n );\n }\n return;\n }\n\n /**\n * Attempts to convert `d` to a DateTime object\n * @param d value to convert\n * @param optionName Provides text to error messages e.g. disabledDates\n */\n static _dateConversion(d: any, optionName: string) {\n if (typeof d === typeof '' && optionName !== 'input') {\n Namespace.errorMessages.dateString();\n }\n\n const converted = this._dateTypeCheck(d);\n\n if (!converted) {\n Namespace.errorMessages.failedToParseDate(\n optionName,\n d,\n optionName === 'input'\n );\n }\n return converted;\n }\n\n private static _flatback: string[];\n\n private static get _flattenDefaultOptions(): string[] {\n if (this._flatback) return this._flatback;\n const deepKeys = (t, pre = []) =>\n Array.isArray(t)\n ? []\n : Object(t) === t\n ? Object.entries(t).flatMap(([k, v]) => deepKeys(v, [...pre, k]))\n : pre.join('.');\n\n this._flatback = deepKeys(DefaultOptions);\n\n return this._flatback;\n }\n\n /**\n * Some options conflict like min/max date. Verify that these kinds of options\n * are set correctly.\n * @param config\n */\n static _validateConflcits(config: Options) {\n if (config.restrictions.minDate && config.restrictions.maxDate) {\n if (config.restrictions.minDate.isAfter(config.restrictions.maxDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'minDate is after maxDate'\n );\n }\n\n if (config.restrictions.maxDate.isBefore(config.restrictions.minDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'maxDate is before minDate'\n );\n }\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport { ChangeEvent, FailEvent } from './event-types';\nimport { OptionConverter } from './options';\n\nexport default class Dates {\n private _dates: DateTime[] = [];\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Returns the array of selected dates\n */\n get picked(): DateTime[] {\n return this._dates;\n }\n\n /**\n * Returns the last picked value.\n */\n get lastPicked(): DateTime {\n return this._dates[this.lastPickedIndex];\n }\n\n /**\n * Returns the length of picked dates -1 or 0 if none are selected.\n */\n get lastPickedIndex(): number {\n if (this._dates.length === 0) return 0;\n return this._dates.length - 1;\n }\n\n /**\n * Adds a new DateTime to selected dates array\n * @param date\n */\n add(date: DateTime): void {\n this._dates.push(date);\n }\n\n /**\n * Tries to convert the provided value to a DateTime object.\n * If value is null|undefined then clear the value of the provided index (or 0).\n * @param value Value to convert or null|undefined\n * @param index When using multidates this is the index in the array\n * @param from Used in the warning message, useful for debugging.\n */\n set(value: any, index?: number, from: string = 'date.set') {\n if (!value) this._setValue(value, index);\n const converted = OptionConverter._dateConversion(value, from);\n if (converted) this._setValue(converted, index);\n }\n\n /**\n * Returns true if the `targetDate` is part of the selected dates array.\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n isPicked(targetDate: DateTime, unit?: Unit): boolean {\n if (!unit) return this._dates.find((x) => x === targetDate) !== undefined;\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return (\n this._dates\n .map((x) => x.format(format))\n .find((x) => x === innerDateFormatted) !== undefined\n );\n }\n\n /**\n * Returns the index at which `targetDate` is in the array.\n * This is used for updating or removing a date when multi-date is used\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n pickedIndex(targetDate: DateTime, unit?: Unit): number {\n if (!unit) return this._dates.indexOf(targetDate);\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return this._dates.map((x) => x.format(format)).indexOf(innerDateFormatted);\n }\n\n /**\n * Clears all selected dates.\n */\n clear() {\n this._context._unset = true;\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate: this.lastPicked,\n isClear: true,\n isValid: true,\n } as ChangeEvent);\n this._dates = [];\n }\n\n /**\n * Find the \"book end\" years given a `year` and a `factor`\n * @param factor e.g. 100 for decades\n * @param year e.g. 2021\n */\n static getStartEndYear(\n factor: number,\n year: number\n ): [number, number, number] {\n const step = factor / 10,\n startYear = Math.floor(year / factor) * factor,\n endYear = startYear + step * 9,\n focusValue = Math.floor(year / step) * step;\n return [startYear, endYear, focusValue];\n }\n\n /**\n * Do not use direectly. Attempts to either clear or set the `target` date at `index`.\n * If the `target` is null then the date will be cleared.\n * If multi-date is being used then it will be removed from the array.\n * If `target` is valid and multi-date is used then if `index` is\n * provided the date at that index will be replaced, otherwise it is appended.\n * @param target\n * @param index\n */\n _setValue(target?: DateTime, index?: number): void {\n const noIndex = typeof index === 'undefined',\n isClear = !target && noIndex;\n let oldDate = this._context._unset ? null : this._dates[index];\n if (!oldDate && !this._context._unset && noIndex && isClear) {\n oldDate = this.lastPicked;\n }\n\n if (target && oldDate?.isSame(target)) return;\n\n const updateInput = () => {\n if (!this._context._input) return;\n\n let newValue = this._context._options.hooks.inputFormat(target);\n if (this._context._options.multipleDates) {\n newValue = this._dates\n .map((d) => this._context._options.hooks.inputFormat(d))\n .join(this._context._options.multipleDatesSeparator);\n }\n if (this._context._input.value != newValue)\n this._context._input.value = newValue;\n };\n\n // case of calling setValue(null)\n if (!target) {\n if (\n !this._context._options.multipleDates ||\n this._dates.length === 1 ||\n isClear\n ) {\n this._context._unset = true;\n this._dates = [];\n } else {\n this._dates.splice(index, 1);\n }\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n\n updateInput();\n this._context._display._update('all');\n return;\n }\n\n index = index || 0;\n target = target.clone;\n\n // minute stepping is being used, force the minute to the closest value\n if (this._context._options.stepping !== 1) {\n target.minutes =\n Math.round(target.minutes / this._context._options.stepping) *\n this._context._options.stepping;\n target.seconds = 0;\n }\n\n if (this._context._validation.isValid(target)) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._unset = false;\n this._context._display._update('all');\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n return;\n }\n\n if (this._context._options.keepInvalid) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: false,\n } as ChangeEvent);\n }\n this._context._triggerEvent({\n type: Namespace.events.error,\n reason: Namespace.errorMessages.failedToSetInvalidDate,\n date: target,\n oldDate,\n } as FailEvent);\n }\n\n /**\n * Returns a format object based on the granularity of `unit`\n * @param unit\n */\n static getFormatByUnit(unit: Unit): object {\n switch (unit) {\n case 'date':\n return { dateStyle: 'short' };\n case 'month':\n return {\n month: 'numeric',\n year: 'numeric',\n };\n case 'year':\n return { year: 'numeric' };\n }\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\nimport Dates from '../../dates';\r\n\r\n/**\r\n * Creates and updates the grid for `year`\r\n */\r\nexport default class YearDisplay {\r\n private _context: TempusDominus;\r\n private _startYear: DateTime;\r\n private _endYear: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.yearsContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectYear);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 10,\r\n this._context._viewDate.year\r\n );\r\n this._startYear = this._context._viewDate.clone.manipulate(-1, Unit.year);\r\n this._endYear = this._context._viewDate.clone.manipulate(10, Unit.year);\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.yearsContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.yearsContainer,\r\n `${this._startYear.format({ year: 'numeric' })}-${this._endYear.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startYear, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endYear, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.year)\r\n .manipulate(-1, Unit.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectYear}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n let classes = [];\r\n classes.push(Namespace.css.year);\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.year)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.year)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute('data-value', `${innerDate.year}`);\r\n containerClone.innerText = innerDate.format({ year: \"numeric\" });\r\n\r\n innerDate.manipulate(1, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport Dates from '../../dates';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `seconds`\r\n */\r\nexport default class DecadeDisplay {\r\n private _context: TempusDominus;\r\n private _startDecade: DateTime;\r\n private _endDecade: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker() {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.decadesContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDecade);\r\n container.appendChild(div);\r\n }\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 100,\r\n this._context._viewDate.year\r\n );\r\n this._startDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._startDecade.year = start;\r\n this._endDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._endDecade.year = end;\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.decadesContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.decadesContainer,\r\n `${this._startDecade.format({ year: 'numeric' })}-${this._endDecade.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startDecade, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endDecade, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n const pickedYears = this._context.dates.picked.map((x) => x.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectDecade}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (index === 0) {\r\n containerClone.classList.add(Namespace.css.old);\r\n if (this._startDecade.year - 10 < 0) {\r\n containerClone.textContent = ' ';\r\n previous.classList.add(Namespace.css.disabled);\r\n containerClone.classList.add(Namespace.css.disabled);\r\n containerClone.setAttribute('data-value', ``);\r\n return;\r\n } else {\r\n containerClone.innerText = this._startDecade.clone.manipulate(-10, Unit.year).format({ year: 'numeric' });\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n return;\r\n }\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.decade);\r\n const startDecadeYear = this._startDecade.year;\r\n const endDecadeYear = this._startDecade.year + 9;\r\n\r\n if (\r\n !this._context._unset &&\r\n pickedYears.filter((x) => x >= startDecadeYear && x <= endDecadeYear)\r\n .length > 0\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n containerClone.innerText = `${this._startDecade.format({ year: 'numeric' })}`;\r\n\r\n this._startDecade.manipulate(10, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates the clock display\n */\nexport default class TimeDisplay {\n private _context: TempusDominus;\n private _gridColumns = '';\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the clock display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.clockContainer);\n\n container.append(...this._grid());\n\n return container;\n }\n\n /**\n * Populates the various elements with in the clock display\n * like the current hour and if the manipulation icons are enabled.\n * @private\n */\n _update(): void {\n const timesDiv = (\n this._context._display.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0]\n );\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n timesDiv\n .querySelectorAll('.disabled')\n .forEach((element) => element.classList.remove(Namespace.css.disabled));\n\n if (this._context._options.display.components.hours) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.hours}]`\n ).innerText = this._context._options.display.components.useTwentyfourHour\n ? lastPicked.hoursFormatted\n : lastPicked.twelveHoursFormatted;\n }\n\n if (this._context._options.display.components.minutes) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.minutes}]`\n ).innerText = lastPicked.minutesFormatted;\n }\n\n if (this._context._options.display.components.seconds) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.seconds}]`\n ).innerText = lastPicked.secondsFormatted;\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n const toggle = timesDiv.querySelector(\n `[data-action=${ActionTypes.toggleMeridiem}]`\n );\n\n toggle.innerText = lastPicked.meridiem();\n\n if (\n !this._context._validation.isValid(\n lastPicked.clone.manipulate(\n lastPicked.hours >= 12 ? -12 : 12,\n Unit.hours\n )\n )\n ) {\n toggle.classList.add(Namespace.css.disabled);\n } else {\n toggle.classList.remove(Namespace.css.disabled);\n }\n }\n\n timesDiv.style.gridTemplateAreas = `\"${this._gridColumns}\"`;\n }\n\n /**\n * Creates the table for the clock display depending on what options are selected.\n * @private\n */\n private _grid(): HTMLElement[] {\n this._gridColumns = '';\n const top = [],\n middle = [],\n bottom = [],\n separator = document.createElement('div'),\n upIcon = this._context._display._iconTag(\n this._context._options.display.icons.up\n ),\n downIcon = this._context._display._iconTag(\n this._context._options.display.icons.down\n );\n\n separator.classList.add(Namespace.css.separator, Namespace.css.noHighlight);\n const separatorColon = separator.cloneNode(true);\n separatorColon.innerHTML = ':';\n\n const getSeparator = (colon = false): HTMLElement => {\n return colon\n ? separatorColon.cloneNode(true)\n : separator.cloneNode(true);\n };\n\n if (this._context._options.display.components.hours) {\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.incrementHours);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickHour\n );\n divElement.setAttribute('data-action', ActionTypes.showHours);\n divElement.setAttribute('data-time-component', Unit.hours);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.decrementHours);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n this._gridColumns += 'a';\n }\n\n if (this._context._options.display.components.minutes) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.hours) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.incrementMinutes);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickMinute\n );\n divElement.setAttribute('data-action', ActionTypes.showMinutes);\n divElement.setAttribute('data-time-component', Unit.minutes);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.decrementMinutes);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (this._context._options.display.components.seconds) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.minutes) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.incrementSeconds);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickSecond\n );\n divElement.setAttribute('data-action', ActionTypes.showSeconds);\n divElement.setAttribute('data-time-component', Unit.seconds);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.decrementSeconds);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n this._gridColumns += ' a';\n let divElement = getSeparator();\n top.push(divElement);\n\n let button = document.createElement('button');\n button.setAttribute(\n 'title',\n this._context._options.localization.toggleMeridiem\n );\n button.setAttribute('data-action', ActionTypes.toggleMeridiem);\n button.setAttribute('tabindex', '-1');\n button.classList.add(Namespace.css.toggleMeridiem);\n\n divElement = document.createElement('div');\n divElement.classList.add(Namespace.css.noHighlight);\n divElement.appendChild(button);\n middle.push(divElement);\n\n divElement = getSeparator();\n bottom.push(divElement);\n }\n\n this._gridColumns = this._gridColumns.trim();\n\n return [...top, ...middle, ...bottom];\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `hours`\n */\nexport default class HourDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.hourContainer);\n\n for (\n let i = 0;\n i <\n (this._context._options.display.components.useTwentyfourHour ? 24 : 12);\n i++\n ) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectHour);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.hourContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.date);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectHour}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.hour);\n\n if (!this._context._validation.isValid(innerDate, Unit.hours)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.hours}`);\n containerClone.innerText = this._context._options.display.components\n .useTwentyfourHour\n ? innerDate.hoursFormatted\n : innerDate.twelveHoursFormatted;\n innerDate.manipulate(1, Unit.hours);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `minutes`\n */\nexport default class MinuteDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.minuteContainer);\n\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n for (let i = 0; i < 60 / step; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMinute);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.minuteContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.hours);\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMinute}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.minute);\n\n if (!this._context._validation.isValid(innerDate, Unit.minutes)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.minutes}`);\n containerClone.innerText = innerDate.minutesFormatted;\n innerDate.manipulate(step, Unit.minutes);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class secondDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.secondContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectSecond);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.secondContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.minutes);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectSecond}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.second);\n\n if (!this._context._validation.isValid(innerDate, Unit.seconds)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.seconds}`);\n containerClone.innerText = innerDate.secondsFormatted;\n innerDate.manipulate(5, Unit.seconds);\n });\n }\n}\n","import DateDisplay from './calendar/date-display';\r\nimport MonthDisplay from './calendar/month-display';\r\nimport YearDisplay from './calendar/year-display';\r\nimport DecadeDisplay from './calendar/decade-display';\r\nimport TimeDisplay from './time/time-display';\r\nimport HourDisplay from './time/hour-display';\r\nimport MinuteDisplay from './time/minute-display';\r\nimport SecondDisplay from './time/second-display';\r\nimport { DateTime, Unit } from '../datetime';\r\nimport { DatePickerModes } from '../conts';\r\nimport { TempusDominus } from '../tempus-dominus';\r\nimport { ActionTypes } from '../actions';\r\nimport { createPopper } from '@popperjs/core';\r\nimport Namespace from '../namespace';\r\nimport { HideEvent } from '../event-types';\r\n\r\n/**\r\n * Main class for all things display related.\r\n */\r\nexport default class Display {\r\n private _context: TempusDominus;\r\n private _dateDisplay: DateDisplay;\r\n private _monthDisplay: MonthDisplay;\r\n private _yearDisplay: YearDisplay;\r\n private _decadeDisplay: DecadeDisplay;\r\n private _timeDisplay: TimeDisplay;\r\n private _widget: HTMLElement;\r\n private _hourDisplay: HourDisplay;\r\n private _minuteDisplay: MinuteDisplay;\r\n private _secondDisplay: SecondDisplay;\r\n private _popperInstance: any;\r\n private _isVisible = false;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this._dateDisplay = new DateDisplay(context);\r\n this._monthDisplay = new MonthDisplay(context);\r\n this._yearDisplay = new YearDisplay(context);\r\n this._decadeDisplay = new DecadeDisplay(context);\r\n this._timeDisplay = new TimeDisplay(context);\r\n this._hourDisplay = new HourDisplay(context);\r\n this._minuteDisplay = new MinuteDisplay(context);\r\n this._secondDisplay = new SecondDisplay(context);\r\n\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Returns the widget body or undefined\r\n * @private\r\n */\r\n get widget(): HTMLElement | undefined {\r\n return this._widget;\r\n }\r\n\r\n /**\r\n * Returns this visible state of the picker (shown)\r\n */\r\n get isVisible() {\r\n return this._isVisible;\r\n }\r\n\r\n /**\r\n * Updates the table for a particular unit. Used when an option as changed or\r\n * whenever the class list might need to be refreshed.\r\n * @param unit\r\n * @private\r\n */\r\n _update(unit: Unit | 'clock' | 'calendar' | 'all'): void {\r\n if (!this.widget) return;\r\n //todo do I want some kind of error catching or other guards here?\r\n switch (unit) {\r\n case Unit.seconds:\r\n this._secondDisplay._update();\r\n break;\r\n case Unit.minutes:\r\n this._minuteDisplay._update();\r\n break;\r\n case Unit.hours:\r\n this._hourDisplay._update();\r\n break;\r\n case Unit.date:\r\n this._dateDisplay._update();\r\n break;\r\n case Unit.month:\r\n this._monthDisplay._update();\r\n break;\r\n case Unit.year:\r\n this._yearDisplay._update();\r\n break;\r\n case 'clock':\r\n this._timeDisplay._update();\r\n this._update(Unit.hours);\r\n this._update(Unit.minutes);\r\n this._update(Unit.seconds);\r\n break;\r\n case 'calendar':\r\n this._update(Unit.date);\r\n this._update(Unit.year);\r\n this._update(Unit.month);\r\n this._decadeDisplay._update();\r\n this._updateCalendarHeader();\r\n break;\r\n case 'all':\r\n if (this._hasTime) {\r\n this._update('clock');\r\n }\r\n if (this._hasDate) {\r\n this._update('calendar');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Shows the picker and creates a Popper instance if needed.\r\n * Add document click event to hide when clicking outside the picker.\r\n * @fires Events#show\r\n */\r\n show(): void {\r\n if (this.widget == undefined) {\r\n if (\r\n this._context._options.useCurrent &&\r\n !this._context._options.defaultDate &&\r\n !this._context._input?.value\r\n ) {\r\n //todo in the td4 branch a pr changed this to allow granularity\r\n const date = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n if (!this._context._options.keepInvalid) {\r\n let tries = 0;\r\n let direction = 1;\r\n if (this._context._options.restrictions.maxDate?.isBefore(date)) {\r\n direction = -1;\r\n }\r\n while (!this._context._validation.isValid(date)) {\r\n date.manipulate(direction, Unit.date);\r\n if (tries > 31) break;\r\n tries++;\r\n }\r\n }\r\n this._context.dates._setValue(date);\r\n }\r\n\r\n if (this._context._options.defaultDate) {\r\n this._context.dates._setValue(this._context._options.defaultDate);\r\n }\r\n\r\n this._buildWidget();\r\n if (this._hasDate) {\r\n this._showMode();\r\n }\r\n\r\n if (!this._context._options.display.inline) {\r\n document.body.appendChild(this.widget);\r\n\r\n this._popperInstance = createPopper(\r\n this._context._element,\r\n this.widget,\r\n {\r\n modifiers: [\r\n /* {\r\n name: 'offset',\r\n options: {\r\n offset: [2, 8],\r\n },\r\n },*/\r\n { name: 'eventListeners', enabled: true },\r\n ],\r\n placement: 'bottom-start',\r\n }\r\n );\r\n } else {\r\n this._context._element.appendChild(this.widget);\r\n }\r\n\r\n if (this._context._options.display.viewMode == 'clock') {\r\n this._context._action.do(\r\n {\r\n currentTarget: this.widget.querySelector(\r\n `.${Namespace.css.timeContainer}`\r\n ),\r\n },\r\n ActionTypes.showClock\r\n );\r\n }\r\n\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.addEventListener('click', this._actionsClickEvent)\r\n );\r\n\r\n // show the clock when using sideBySide\r\n if (this._context._options.display.sideBySide) {\r\n this._timeDisplay._update();\r\n (\r\n this.widget.getElementsByClassName(\r\n Namespace.css.clockContainer\r\n )[0] as HTMLElement\r\n ).style.display = 'grid';\r\n }\r\n }\r\n\r\n this.widget.classList.add(Namespace.css.show);\r\n if (!this._context._options.display.inline) {\r\n this._popperInstance.update();\r\n document.addEventListener('click', this._documentClickEvent);\r\n }\r\n this._context._triggerEvent({ type: Namespace.events.show });\r\n this._isVisible = true;\r\n }\r\n\r\n /**\r\n * Changes the calendar view mode. E.g. month <-> year\r\n * @param direction -/+ number to move currentViewMode\r\n * @private\r\n */\r\n _showMode(direction?: number): void {\r\n if (!this.widget) {\r\n return;\r\n }\r\n if (direction) {\r\n const max = Math.max(\r\n this._context._minViewModeNumber,\r\n Math.min(3, this._context._currentViewMode + direction)\r\n );\r\n if (this._context._currentViewMode == max) return;\r\n this._context._currentViewMode = max;\r\n }\r\n\r\n this.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div:not(.${Namespace.css.clockContainer})`\r\n )\r\n .forEach((e: HTMLElement) => (e.style.display = 'none'));\r\n\r\n const datePickerMode = DatePickerModes[this._context._currentViewMode];\r\n let picker: HTMLElement = this.widget.querySelector(\r\n `.${datePickerMode.className}`\r\n );\r\n\r\n switch (datePickerMode.className) {\r\n case Namespace.css.decadesContainer:\r\n this._decadeDisplay._update();\r\n break;\r\n case Namespace.css.yearsContainer:\r\n this._yearDisplay._update();\r\n break;\r\n case Namespace.css.monthsContainer:\r\n this._monthDisplay._update();\r\n break;\r\n case Namespace.css.daysContainer:\r\n this._dateDisplay._update();\r\n break;\r\n }\r\n\r\n picker.style.display = 'grid';\r\n this._updateCalendarHeader();\r\n }\r\n\r\n _updateCalendarHeader() {\r\n const showing = [\r\n ...this.widget.querySelector(\r\n `.${Namespace.css.dateContainer} div[style*=\"display: grid\"]`\r\n ).classList,\r\n ].find((x) => x.startsWith(Namespace.css.dateContainer));\r\n\r\n const [previous, switcher, next] = this._context._display.widget\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switch (showing) {\r\n case Namespace.css.decadesContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousCentury\r\n );\r\n switcher.setAttribute('title', '');\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextCentury\r\n );\r\n break;\r\n case Namespace.css.yearsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousDecade\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDecade\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextDecade\r\n );\r\n break;\r\n case Namespace.css.monthsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousYear\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectYear\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextYear\r\n );\r\n break;\r\n case Namespace.css.daysContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousMonth\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectMonth\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextMonth\r\n );\r\n switcher.innerText = this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n });\r\n break;\r\n }\r\n switcher.innerText = switcher.getAttribute(showing);\r\n }\r\n\r\n /**\r\n * Hides the picker if needed.\r\n * Remove document click event to hide when clicking outside the picker.\r\n * @fires Events#hide\r\n */\r\n hide(): void {\r\n if (!this.widget || !this._isVisible) return;\r\n\r\n this.widget.classList.remove(Namespace.css.show);\r\n\r\n if (this._isVisible) {\r\n this._context._triggerEvent({\r\n type: Namespace.events.hide,\r\n date: this._context._unset\r\n ? null\r\n : this._context.dates.lastPicked\r\n ? this._context.dates.lastPicked.clone\r\n : void 0,\r\n } as HideEvent);\r\n this._isVisible = false;\r\n }\r\n\r\n document.removeEventListener('click', this._documentClickEvent);\r\n }\r\n\r\n /**\r\n * Toggles the picker's open state. Fires a show/hide event depending.\r\n */\r\n toggle() {\r\n return this._isVisible ? this.hide() : this.show();\r\n }\r\n\r\n /**\r\n * Removes document and data-action click listener and reset the widget\r\n * @private\r\n */\r\n _dispose() {\r\n document.removeEventListener('click', this._documentClickEvent);\r\n if (!this.widget) return;\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.removeEventListener('click', this._actionsClickEvent)\r\n );\r\n this.widget.parentNode.removeChild(this.widget);\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Builds the widgets html template.\r\n * @private\r\n */\r\n private _buildWidget(): HTMLElement {\r\n const template = document.createElement('div');\r\n template.classList.add(Namespace.css.widget);\r\n\r\n const dateView = document.createElement('div');\r\n dateView.classList.add(Namespace.css.dateContainer);\r\n dateView.append(\r\n this._headTemplate,\r\n this._decadeDisplay._picker,\r\n this._yearDisplay._picker,\r\n this._monthDisplay._picker,\r\n this._dateDisplay._picker\r\n );\r\n\r\n const timeView = document.createElement('div');\r\n timeView.classList.add(Namespace.css.timeContainer);\r\n timeView.appendChild(this._timeDisplay._picker);\r\n timeView.appendChild(this._hourDisplay._picker);\r\n timeView.appendChild(this._minuteDisplay._picker);\r\n timeView.appendChild(this._secondDisplay._picker);\r\n\r\n const toolbar = document.createElement('div');\r\n toolbar.classList.add(Namespace.css.toolbar);\r\n toolbar.append(...this._toolbar);\r\n\r\n if (this._context._options.display.inline) {\r\n template.classList.add(Namespace.css.inline);\r\n }\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n template.classList.add('calendarWeeks');\r\n }\r\n\r\n if (\r\n this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n template.classList.add(Namespace.css.sideBySide);\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n const row = document.createElement('div');\r\n row.classList.add('td-row');\r\n dateView.classList.add('td-half');\r\n timeView.classList.add('td-half');\r\n\r\n row.appendChild(dateView);\r\n row.appendChild(timeView);\r\n template.appendChild(row);\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n this._widget = template;\r\n return;\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n if (this._hasDate) {\r\n if (this._hasTime) {\r\n dateView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode !== 'clock')\r\n dateView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(dateView);\r\n }\r\n\r\n if (this._hasTime) {\r\n if (this._hasDate) {\r\n timeView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode === 'clock')\r\n timeView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(timeView);\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n const arrow = document.createElement('div');\r\n arrow.classList.add('arrow');\r\n arrow.setAttribute('data-popper-arrow', '');\r\n template.appendChild(arrow);\r\n\r\n this._widget = template;\r\n }\r\n\r\n /**\r\n * Returns true if the hours, minutes, or seconds component is turned on\r\n */\r\n get _hasTime(): boolean {\r\n return (\r\n this._context._options.display.components.clock &&\r\n (this._context._options.display.components.hours ||\r\n this._context._options.display.components.minutes ||\r\n this._context._options.display.components.seconds)\r\n );\r\n }\r\n\r\n /**\r\n * Returns true if the year, month, or date component is turned on\r\n */\r\n get _hasDate(): boolean {\r\n return (\r\n this._context._options.display.components.calendar &&\r\n (this._context._options.display.components.year ||\r\n this._context._options.display.components.month ||\r\n this._context._options.display.components.date)\r\n );\r\n }\r\n\r\n /**\r\n * Get the toolbar html based on options like buttons.today\r\n * @private\r\n */\r\n get _toolbar(): HTMLElement[] {\r\n const toolbar = [];\r\n\r\n if (this._context._options.display.buttons.today) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.today);\r\n div.setAttribute('title', this._context._options.localization.today);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.today)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (\r\n !this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n let title, icon;\r\n if (this._context._options.display.viewMode === 'clock') {\r\n title = this._context._options.localization.selectDate;\r\n icon = this._context._options.display.icons.date;\r\n } else {\r\n title = this._context._options.localization.selectTime;\r\n icon = this._context._options.display.icons.time;\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.togglePicker);\r\n div.setAttribute('title', title);\r\n\r\n div.appendChild(this._iconTag(icon));\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.clear) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.clear);\r\n div.setAttribute('title', this._context._options.localization.clear);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.clear)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.close) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.close);\r\n div.setAttribute('title', this._context._options.localization.close);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.close)\r\n );\r\n toolbar.push(div);\r\n }\r\n\r\n return toolbar;\r\n }\r\n\r\n /***\r\n * Builds the base header template with next and previous icons\r\n * @private\r\n */\r\n get _headTemplate(): HTMLElement {\r\n const calendarHeader = document.createElement('div');\r\n calendarHeader.classList.add(Namespace.css.calendarHeader);\r\n\r\n const previous = document.createElement('div');\r\n previous.classList.add(Namespace.css.previous);\r\n previous.setAttribute('data-action', ActionTypes.previous);\r\n previous.appendChild(\r\n this._iconTag(this._context._options.display.icons.previous)\r\n );\r\n\r\n const switcher = document.createElement('div');\r\n switcher.classList.add(Namespace.css.switch);\r\n switcher.setAttribute('data-action', ActionTypes.pickerSwitch);\r\n\r\n const next = document.createElement('div');\r\n next.classList.add(Namespace.css.next);\r\n next.setAttribute('data-action', ActionTypes.next);\r\n next.appendChild(this._iconTag(this._context._options.display.icons.next));\r\n\r\n calendarHeader.append(previous, switcher, next);\r\n return calendarHeader;\r\n }\r\n\r\n /**\r\n * Builds an icon tag as either an ``\r\n * or with icons.type is `sprites` then an svg tag instead\r\n * @param iconClass\r\n * @private\r\n */\r\n _iconTag(iconClass: string): HTMLElement {\r\n if (this._context._options.display.icons.type === 'sprites') {\r\n const svg = document.createElement('svg');\r\n svg.innerHTML = ``;\r\n return svg;\r\n }\r\n const icon = document.createElement('i');\r\n DOMTokenList.prototype.add.apply(icon.classList, iconClass.split(' '));\r\n return icon;\r\n }\r\n\r\n /**\r\n * A document click event to hide the widget if click is outside\r\n * @private\r\n * @param e MouseEvent\r\n */\r\n private _documentClickEvent = (e: MouseEvent) => {\r\n if (this._context._options.display.keepOpen ||\r\n this._context._options.debug ||\r\n (window as any).debug) return;\r\n\r\n if (\r\n this._isVisible &&\r\n !e.composedPath().includes(this.widget) && // click inside the widget\r\n !e.composedPath()?.includes(this._context._element) // click on the element\r\n ) {\r\n this.hide();\r\n }\r\n };\r\n\r\n /**\r\n * Click event for any action like selecting a date\r\n * @param e MouseEvent\r\n * @private\r\n */\r\n private _actionsClickEvent = (e: MouseEvent) => {\r\n this._context._action.do(e);\r\n };\r\n\r\n /**\r\n * Causes the widget to get rebuilt on next show. If the picker is already open\r\n * then hide and reshow it.\r\n * @private\r\n */\r\n _rebuild() {\r\n const wasVisible = this._isVisible;\r\n if (wasVisible) this.hide();\r\n this._dispose();\r\n if (wasVisible) {\r\n this.show();\r\n }\r\n }\r\n}\r\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Dates from './dates';\n\n/**\n * Main class for date validation rules based on the options provided.\n */\nexport default class Validation {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Checks to see if the target date is valid based on the rules provided in the options.\n * Granularity can be provide to chek portions of the date instead of the whole.\n * @param targetDate\n * @param granularity\n */\n isValid(targetDate: DateTime, granularity?: Unit): boolean {\n if (\n this._context._options.restrictions.disabledDates.length > 0 &&\n this._isInDisabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledDates.length > 0 &&\n !this._isInEnabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.daysOfWeekDisabled?.length > 0 &&\n this._context._options.restrictions.daysOfWeekDisabled.indexOf(\n targetDate.weekDay\n ) !== -1\n ) {\n return false;\n }\n\n if (\n this._context._options.restrictions.minDate &&\n targetDate.isBefore(\n this._context._options.restrictions.minDate,\n granularity\n )\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.maxDate &&\n targetDate.isAfter(\n this._context._options.restrictions.maxDate,\n granularity\n )\n ) {\n return false;\n }\n\n if (\n granularity === Unit.hours ||\n granularity === Unit.minutes ||\n granularity === Unit.seconds\n ) {\n if (\n this._context._options.restrictions.disabledHours.length > 0 &&\n this._isInDisabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledHours.length > 0 &&\n !this._isInEnabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.disabledTimeIntervals.length > 0\n ) {\n for (\n let i = 0;\n i < this._context._options.restrictions.disabledTimeIntervals.length;\n i++\n ) {\n if (\n targetDate.isBetween(\n this._context._options.restrictions.disabledTimeIntervals[i].from,\n this._context._options.restrictions.disabledTimeIntervals[i].to\n )\n )\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Checks to see if the disabledDates option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInDisabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledDates ||\n this._context._options.restrictions.disabledDates.length === 0\n )\n return false;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.disabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the enabledDates option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInEnabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledDates ||\n this._context._options.restrictions.enabledDates.length === 0\n )\n return true;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.enabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the disabledHours option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInDisabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledHours ||\n this._context._options.restrictions.disabledHours.length === 0\n )\n return false;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.disabledHours.find(\n (x) => x === formattedDate\n );\n }\n\n /**\n * Checks to see if the enabledHours option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInEnabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledHours ||\n this._context._options.restrictions.enabledHours.length === 0\n )\n return true;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.enabledHours.find(\n (x) => x === formattedDate\n );\n }\n}\n","import Display from './display/index';\nimport Validation from './validation';\nimport Dates from './dates';\nimport Actions, { ActionTypes } from './actions';\nimport { DatePickerModes, DefaultOptions } from './conts';\nimport { DateTime, DateTimeFormatOptions, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options, { OptionConverter } from './options';\nimport {\n BaseEvent,\n ChangeEvent,\n ViewUpdateEvent,\n FailEvent,\n} from './event-types';\n\n/**\n * A robust and powerful date/time picker component.\n */\nclass TempusDominus {\n dates: Dates;\n\n _options: Options;\n _currentViewMode = 0;\n _subscribers: { [key: string]: ((event: any) => {})[] } = {};\n _element: HTMLElement;\n _input: HTMLInputElement;\n _unset: boolean;\n _minViewModeNumber = 0;\n _display: Display;\n _validation: Validation;\n _action: Actions;\n private _isDisabled = false;\n private _notifyChangeEventContext = 0;\n private _toggle: HTMLElement;\n private _currentPromptTimeTimeout: any;\n\n constructor(element: HTMLElement, options: Options = {} as Options) {\n if (!element) {\n Namespace.errorMessages.mustProvideElement;\n }\n this._element = element;\n this._options = this._initializeOptions(options, DefaultOptions, true);\n this._viewDate.setLocale(this._options.localization.locale);\n this._unset = true;\n\n this._display = new Display(this);\n this._validation = new Validation(this);\n this.dates = new Dates(this);\n this._action = new Actions(this);\n\n this._initializeInput();\n this._initializeToggle();\n\n if (this._options.display.inline) this._display.show();\n }\n\n _viewDate = new DateTime();\n\n get viewDate() {\n return this._viewDate;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Update the picker options. If `reset` is provide `options` will be merged with DefaultOptions instead.\n * @param options\n * @param reset\n * @public\n */\n updateOptions(options, reset = false): void {\n if (reset) this._options = this._initializeOptions(options, DefaultOptions);\n else this._options = this._initializeOptions(options, this._options);\n this._display._rebuild();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Toggles the picker open or closed. If the picker is disabled, nothing will happen.\n * @public\n */\n toggle(): void {\n if (this._isDisabled) return;\n this._display.toggle();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Shows the picker unless the picker is disabled.\n * @public\n */\n show(): void {\n if (this._isDisabled) return;\n this._display.show();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker unless the picker is disabled.\n * @public\n */\n hide(): void {\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Disables the picker and the target input field.\n * @public\n */\n disable(): void {\n this._isDisabled = true;\n // todo this might be undesired. If a dev disables the input field to\n // only allow using the picker, this will break that.\n this._input?.setAttribute('disabled', 'disabled');\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Enables the picker and the target input field.\n * @public\n */\n enable(): void {\n this._isDisabled = false;\n this._input?.removeAttribute('disabled');\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Clears all the selected dates\n * @public\n */\n clear(): void {\n this.dates.clear();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Allows for a direct subscription to picker events, without having to use addEventListener on the element.\n * @param eventTypes See Namespace.Events\n * @param callbacks Function to call when event is triggered\n * @public\n */\n subscribe(\n eventTypes: string | string[],\n callbacks: (event: any) => void | ((event: any) => void)[]\n ): { unsubscribe: void }[] {\n if (typeof eventTypes === 'string') {\n eventTypes = [eventTypes];\n }\n let callBackArray = [];\n if (!Array.isArray(callbacks)) {\n callBackArray = [callbacks];\n } else {\n callBackArray = callbacks;\n }\n\n if (eventTypes.length !== callBackArray.length) {\n Namespace.errorMessages.subscribeMismatch;\n }\n\n const returnArray = [];\n\n for (let i = 0; i < eventTypes.length; i++) {\n const eventType = eventTypes[i];\n if (!Array.isArray(this._subscribers[eventType])) {\n this._subscribers[eventType] = [];\n }\n\n this._subscribers[eventType].push(callBackArray[i]);\n\n returnArray.push({\n unsubscribe: this._unsubscribe.bind(\n this,\n eventType,\n this._subscribers[eventType].length - 1\n ),\n });\n\n if (eventTypes.length === 1) {\n return returnArray[0];\n }\n }\n\n return returnArray;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker and removes event listeners\n */\n dispose() {\n this._display.hide();\n // this will clear the document click event listener\n this._display._dispose();\n this._input?.removeEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input?.removeEventListener('click', this._toggleClickEvent);\n }\n this._toggle.removeEventListener('click', this._toggleClickEvent);\n this._subscribers = {};\n }\n\n /**\n * Triggers an event like ChangeEvent when the picker has updated the value\n * of a selected date.\n * @param event Accepts a BaseEvent object.\n * @private\n */\n _triggerEvent(event: BaseEvent) {\n // checking hasOwnProperty because the BasicEvent also falls through here otherwise\n if ((event as ChangeEvent) && event.hasOwnProperty('date')) {\n const { date, oldDate, isClear } = event as ChangeEvent;\n // this was to prevent a max call stack error\n // https://github.com/tempusdominus/core/commit/15a280507f5277b31b0b3319ab1edc7c19a000fb\n // todo see if this is still needed or if there's a cleaner way\n this._notifyChangeEventContext++;\n if (\n (date && oldDate && date.isSame(oldDate)) ||\n (!isClear && !date && !oldDate) ||\n this._notifyChangeEventContext > 1\n ) {\n this._notifyChangeEventContext = 0;\n return;\n }\n this._handleAfterChangeEvent(event as ChangeEvent);\n }\n\n this._element.dispatchEvent(\n new CustomEvent(event.type, { detail: event as any })\n );\n\n if ((window as any).jQuery) {\n const $ = (window as any).jQuery;\n $(this._element).trigger(event);\n }\n\n const publish = () => {\n // return if event is not subscribed\n if (!Array.isArray(this._subscribers[event.type])) {\n return;\n }\n\n // Trigger callback for each subscriber\n this._subscribers[event.type].forEach((callback) => {\n callback(event);\n });\n };\n\n publish();\n\n this._notifyChangeEventContext = 0;\n }\n\n /**\n * Fires a ViewUpdate event when, for example, the month view is changed.\n * @param {Unit} unit\n * @private\n */\n _viewUpdate(unit: Unit) {\n this._triggerEvent({\n type: Namespace.events.update,\n change: unit,\n viewDate: this._viewDate.clone,\n } as ViewUpdateEvent);\n }\n\n private _unsubscribe(eventName, index) {\n this._subscribers[eventName].splice(index, 1);\n }\n\n /**\n * Merges two Option objects together and validates options type\n * @param config new Options\n * @param mergeTo Options to merge into\n * @param includeDataset When true, the elements data-td attributes will be included in the\n * @private\n */\n private _initializeOptions(\n config: Options,\n mergeTo: Options,\n includeDataset = false\n ): Options {\n config = OptionConverter._mergeOptions(config, mergeTo);\n if (includeDataset)\n config = OptionConverter._dataToOptions(this._element, config);\n\n OptionConverter._validateConflcits(config);\n\n config.viewDate = config.viewDate.setLocale(config.localization.locale);\n\n if (!this._viewDate.isSame(config.viewDate)) {\n this._viewDate = config.viewDate;\n }\n\n /**\n * Sets the minimum view allowed by the picker. For example the case of only\n * allowing year and month to be selected but not date.\n */\n if (config.display.components.year) {\n this._minViewModeNumber = 2;\n }\n if (config.display.components.month) {\n this._minViewModeNumber = 1;\n }\n if (config.display.components.date) {\n this._minViewModeNumber = 0;\n }\n\n this._currentViewMode = Math.max(\n this._minViewModeNumber,\n this._currentViewMode\n );\n\n // Update view mode if needed\n if (\n DatePickerModes[this._currentViewMode].name !== config.display.viewMode\n ) {\n this._currentViewMode = Math.max(\n DatePickerModes.findIndex((x) => x.name === config.display.viewMode),\n this._minViewModeNumber\n );\n }\n\n // defaults the input format based on the components enabled\n if (config.hooks.inputFormat === undefined) {\n const components = config.display.components;\n config.hooks.inputFormat = (date: DateTime) => {\n return date.format({\n year: components.calendar && components.year ? 'numeric' : undefined,\n month:\n components.calendar && components.month ? '2-digit' : undefined,\n day: components.calendar && components.date ? '2-digit' : undefined,\n hour:\n components.clock && components.hours\n ? components.useTwentyfourHour\n ? '2-digit'\n : 'numeric'\n : undefined,\n minute:\n components.clock && components.minutes ? '2-digit' : undefined,\n second:\n components.clock && components.seconds ? '2-digit' : undefined,\n hour12: !components.useTwentyfourHour,\n });\n };\n }\n\n if (this._display?.isVisible) {\n this._display._update('all');\n }\n\n return config;\n }\n\n /**\n * Checks if an input field is being used, attempts to locate one and sets an\n * event listener if found.\n * @private\n */\n private _initializeInput() {\n if (this._element.tagName == 'INPUT') {\n this._input = this._element as HTMLInputElement;\n } else {\n let query = this._element.dataset.tdTargetInput;\n if (query == undefined || query == 'nearest') {\n this._input = this._element.querySelector('input');\n } else {\n this._input = this._element.querySelector(query);\n }\n }\n\n if (!this._input) return;\n\n this._input.addEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input.addEventListener('click', this._toggleClickEvent);\n }\n\n if (this._input.value) {\n this._inputChangeEvent();\n }\n }\n\n /**\n * Attempts to locate a toggle for the picker and sets an event listener\n * @private\n */\n private _initializeToggle() {\n if (this._options.display.inline) return;\n let query = this._element.dataset.tdTargetToggle;\n if (query == 'nearest') {\n query = '[data-td-toggle=\"datetimepicker\"]';\n }\n this._toggle =\n query == undefined ? this._element : this._element.querySelector(query);\n this._toggle.addEventListener('click', this._toggleClickEvent);\n }\n\n /**\n * If the option is enabled this will render the clock view after a date pick.\n * @param e change event\n * @private\n */\n private _handleAfterChangeEvent(e: ChangeEvent) {\n if (\n // options is disabled\n !this._options.promptTimeOnDateChange ||\n this._options.display.inline ||\n this._options.display.sideBySide ||\n // time is disabled\n !this._display._hasTime ||\n // clock component is already showing\n this._display.widget\n ?.getElementsByClassName(Namespace.css.show)[0]\n .classList.contains(Namespace.css.timeContainer)\n )\n return;\n\n // First time ever. If useCurrent option is set to true (default), do nothing\n // because the first date is selected automatically.\n // or date didn't change (time did) or date changed because time did.\n if (\n (!e.oldDate && this._options.useCurrent) ||\n (e.oldDate && e.date?.isSame(e.oldDate))\n ) {\n return;\n }\n\n clearTimeout(this._currentPromptTimeTimeout);\n this._currentPromptTimeTimeout = setTimeout(() => {\n if (this._display.widget) {\n this._action.do(\n {\n currentTarget: this._display.widget.querySelector(\n `.${Namespace.css.switch} div`\n ),\n },\n ActionTypes.togglePicker\n );\n }\n }, this._options.promptTimeOnDateChangeTransitionDelay);\n }\n\n /**\n * Event for when the input field changes. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _inputChangeEvent = () => {\n const setViewDate = () => {\n if (this.dates.lastPicked) this._viewDate = this.dates.lastPicked;\n };\n\n const value = this._input.value;\n if (this._options.multipleDates) {\n try {\n const valueSplit = value.split(this._options.multipleDatesSeparator);\n for (let i = 0; i < valueSplit.length; i++) {\n if (this._options.hooks.inputParse) {\n this.dates.set(\n this._options.hooks.inputParse(valueSplit[i]),\n i,\n 'input'\n );\n } else {\n this.dates.set(valueSplit[i], i, 'input');\n }\n }\n setViewDate();\n } catch {\n console.warn(\n 'TD: Something went wrong trying to set the multidate values from the input field.'\n );\n }\n } else {\n if (this._options.hooks.inputParse) {\n this.dates.set(this._options.hooks.inputParse(value), 0, 'input');\n } else {\n this.dates.set(value, 0, 'input');\n }\n setViewDate();\n }\n };\n\n /**\n * Event for when the toggle is clicked. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _toggleClickEvent = () => {\n this.toggle();\n };\n}\n\nexport {\n TempusDominus,\n Namespace,\n DefaultOptions,\n DateTime,\n Options,\n Unit,\n DateTimeFormatOptions,\n};\n"],"names":["SecondDisplay"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tempus-dominus.esm.js","sources":["../../src/js/datetime.ts","../../src/js/errors.ts","../../src/js/namespace.ts","../../src/js/conts.ts","../../src/js/display/collapse.ts","../../src/js/actions.ts","../../src/js/display/calendar/date-display.ts","../../src/js/display/calendar/month-display.ts","../../src/js/options.ts","../../src/js/dates.ts","../../src/js/display/calendar/year-display.ts","../../src/js/display/calendar/decade-display.ts","../../src/js/display/time/time-display.ts","../../src/js/display/time/hour-display.ts","../../src/js/display/time/minute-display.ts","../../src/js/display/time/second-display.ts","../../src/js/display/index.ts","../../src/js/validation.ts","../../src/js/tempus-dominus.ts"],"sourcesContent":["export enum Unit {\r\n seconds = 'seconds',\r\n minutes = 'minutes',\r\n hours = 'hours',\r\n date = 'date',\r\n month = 'month',\r\n year = 'year',\r\n}\r\n\r\nexport interface DateTimeFormatOptions extends Intl.DateTimeFormatOptions {\r\n timeStyle?: 'short' | 'medium' | 'long';\r\n dateStyle?: 'short' | 'medium' | 'long' | 'full';\r\n}\r\n\r\n/**\r\n * For the most part this object behaves exactly the same way\r\n * as the native Date object with a little extra spice.\r\n */\r\nexport class DateTime extends Date {\r\n /**\r\n * Used with Intl.DateTimeFormat\r\n */\r\n locale = 'default';\r\n\r\n /**\r\n * Chainable way to set the {@link locale}\r\n * @param value\r\n */\r\n setLocale(value: string): this {\r\n this.locale = value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Converts a plain JS date object to a DateTime object.\r\n * Doing this allows access to format, etc.\r\n * @param date\r\n */\r\n static convert(date: Date): DateTime {\r\n if (!date) throw `A date is required`;\r\n return new DateTime(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate(),\r\n date.getHours(),\r\n date.getMinutes(),\r\n date.getSeconds(),\r\n date.getMilliseconds()\r\n );\r\n }\r\n\r\n /**\r\n * Native date manipulations are not pure functions. This function creates a duplicate of the DateTime object.\r\n */\r\n get clone() {\r\n return new DateTime(\r\n this.year,\r\n this.month,\r\n this.date,\r\n this.hours,\r\n this.minutes,\r\n this.seconds,\r\n this.getMilliseconds()\r\n ).setLocale(this.locale);\r\n }\r\n\r\n /**\r\n * Sets the current date to the start of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).startOf('month')\r\n * would return April 1, 2021, 12:00:00.000 AM (midnight)\r\n * @param unit\r\n */\r\n startOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(0);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(0, 0);\r\n break;\r\n case 'hours':\r\n this.setMinutes(0, 0, 0);\r\n break;\r\n case 'date':\r\n this.setHours(0, 0, 0, 0);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(0 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.startOf(Unit.date);\r\n this.setDate(1);\r\n break;\r\n case 'year':\r\n this.startOf(Unit.date);\r\n this.setMonth(0, 1);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the current date to the end of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).endOf('month')\r\n * would return April 30, 2021, 11:59:59.999 PM\r\n * @param unit\r\n */\r\n endOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(999);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(59, 999);\r\n break;\r\n case 'hours':\r\n this.setMinutes(59, 59, 999);\r\n break;\r\n case 'date':\r\n this.setHours(23, 59, 59, 999);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(6 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.month);\r\n this.setDate(0);\r\n break;\r\n case 'year':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.year);\r\n this.setDate(0);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Change a {@link unit} value. Value can be positive or negative\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).manipulate(1, 'month')\r\n * would return May 30, 2021, 11:45:32.984 AM\r\n * @param value A positive or negative number\r\n * @param unit\r\n */\r\n manipulate(value: number, unit: Unit): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n this[unit] += value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns a string format.\r\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat\r\n * for valid templates and locale objects\r\n * @param template An object. Uses browser defaults otherwise.\r\n * @param locale Can be a string or an array of strings. Uses browser defaults otherwise.\r\n */\r\n format(template: DateTimeFormatOptions, locale = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, template).format(this);\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is before this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isBefore(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() < compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() < compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is after this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isAfter(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() > compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() > compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is same this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isSame(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() === compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n compare = DateTime.convert(compare);\r\n return (\r\n this.clone.startOf(unit).valueOf() === compare.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Check if this is between two other DateTimes, optionally looking at unit scale. The match is exclusive.\r\n * @param left\r\n * @param right\r\n * @param unit.\r\n * @param inclusivity. A [ indicates inclusion of a value. A ( indicates exclusion.\r\n * If the inclusivity parameter is used, both indicators must be passed.\r\n */\r\n isBetween(\r\n left: DateTime,\r\n right: DateTime,\r\n unit?: Unit,\r\n inclusivity: '()' | '[]' | '(]' | '[)' = '()'\r\n ): boolean {\r\n if (unit && this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n const leftInclusivity = inclusivity[0] === '(';\r\n const rightInclusivity = inclusivity[1] === ')';\r\n\r\n return (\r\n ((leftInclusivity\r\n ? this.isAfter(left, unit)\r\n : !this.isBefore(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isBefore(right, unit)\r\n : !this.isAfter(right, unit))) ||\r\n ((leftInclusivity\r\n ? this.isBefore(left, unit)\r\n : !this.isAfter(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isAfter(right, unit)\r\n : !this.isBefore(right, unit)))\r\n );\r\n }\r\n\r\n /**\r\n * Returns flattened object of the date. Does not include literals\r\n * @param locale\r\n * @param template\r\n */\r\n parts(\r\n locale = this.locale,\r\n template: any = { dateStyle: 'full', timeStyle: 'long' }\r\n ) {\r\n const parts = {};\r\n new Intl.DateTimeFormat(locale, template)\r\n .formatToParts(this)\r\n .filter((x) => x.type !== 'literal')\r\n .forEach((x) => (parts[x.type] = x.value));\r\n return parts;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getSeconds()\r\n */\r\n get seconds(): number {\r\n return this.getSeconds();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setSeconds()\r\n */\r\n set seconds(value: number) {\r\n this.setSeconds(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get secondsFormatted(): string {\r\n return this.format({ second: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMinutes()\r\n */\r\n get minutes(): number {\r\n return this.getMinutes();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMinutes()\r\n */\r\n set minutes(value: number) {\r\n this.setMinutes(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get minutesFormatted(): string {\r\n return this.format({ minute: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getHours()\r\n */\r\n get hours(): number {\r\n return this.getHours();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setHours()\r\n */\r\n set hours(value: number) {\r\n this.setHours(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get hoursFormatted(): string {\r\n return this.format({ hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Returns two digit hours but in twelve hour mode e.g. 13 -> 1\r\n */\r\n get twelveHoursFormatted(): string {\r\n return this.format({ hour12: true, hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Get the meridiem of the date. E.g. AM or PM.\r\n * If the {@link locale} provides a \"dayPeriod\" then this will be returned,\r\n * otherwise it will return AM or PM.\r\n * @param locale\r\n */\r\n meridiem(locale: string = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, {\r\n hour: 'numeric',\r\n hour12: true,\r\n } as any)\r\n .formatToParts(this)\r\n .find((p) => p.type === 'dayPeriod')?.value;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDate()\r\n */\r\n get date(): number {\r\n return this.getDate();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setDate()\r\n */\r\n set date(value: number) {\r\n this.setDate(value);\r\n }\r\n\r\n /**\r\n * Return two digit date\r\n */\r\n get dateFormatted(): string {\r\n return this.date < 10 ? `0${this.date}` : `${this.date}`;\r\n }\r\n\r\n // https://github.com/you-dont-need/You-Dont-Need-Momentjs#week-of-year\r\n /**\r\n * Gets the week of the year\r\n */\r\n get week(): number {\r\n const startOfYear = new Date(this.year, 0, 1);\r\n startOfYear.setDate(\r\n startOfYear.getDate() + (1 - (startOfYear.getDay() % 7))\r\n );\r\n return Math.round((this.valueOf() - startOfYear.valueOf()) / 604800000) + 1;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDay()\r\n */\r\n get weekDay(): number {\r\n return this.getDay();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMonth()\r\n */\r\n get month(): number {\r\n return this.getMonth();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMonth()\r\n */\r\n set month(value: number) {\r\n this.setMonth(value);\r\n }\r\n\r\n /**\r\n * Return two digit, human expected month. E.g. January = 1, December = 12\r\n */\r\n get monthFormatted(): string {\r\n return this.month + 1 < 10 ? `0${this.month}` : `${this.month}`;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getFullYear()\r\n */\r\n get year(): number {\r\n return this.getFullYear();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setFullYear()\r\n */\r\n set year(value: number) {\r\n this.setFullYear(value);\r\n }\r\n}\r\n","import Namespace from './namespace';\n\nexport class TdError extends Error {\n code: number;\n}\n\nexport class ErrorMessages {\n private base = 'TD:';\n\n //#region out to console\n\n /**\n * Throws an error indicating that a key in the options object is invalid.\n * @param optionName\n */\n unexpectedOption(optionName: string) {\n const error = new TdError(\n `${this.base} Unexpected option: ${optionName} does not match a known option.`\n );\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error indicating that one more keys in the options object is invalid.\n * @param optionName\n */\n unexpectedOptions(optionName: string[]) {\n const error = new TdError(`${this.base}: ${optionName.join(', ')}`);\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error when an option is provide an unsupported value.\n * For example a value of 'cheese' for toolbarPlacement which only supports\n * 'top', 'bottom', 'default'.\n * @param optionName\n * @param badValue\n * @param validOptions\n */\n unexpectedOptionValue(\n optionName: string,\n badValue: string,\n validOptions: string[]\n ) {\n const error = new TdError(\n `${\n this.base\n } Unexpected option value: ${optionName} does not accept a value of \"${badValue}\". Valid values are: ${validOptions.join(\n ', '\n )}`\n );\n error.code = 2;\n throw error;\n }\n\n /**\n * Throws an error when an option value is the wrong type.\n * For example a string value was provided to multipleDates which only\n * supports true or false.\n * @param optionName\n * @param badType\n * @param expectedType\n */\n typeMismatch(optionName: string, badType: string, expectedType: string) {\n const error = new TdError(\n `${this.base} Mismatch types: ${optionName} has a type of ${badType} instead of the required ${expectedType}`\n );\n error.code = 3;\n throw error;\n }\n\n /**\n * Throws an error when an option value is outside of the expected range.\n * For example restrictions.daysOfWeekDisabled excepts a value between 0 and 6.\n * @param optionName\n * @param lower\n * @param upper\n */\n numbersOutOfRage(optionName: string, lower: number, upper: number) {\n const error = new TdError(\n `${this.base} ${optionName} expected an array of number between ${lower} and ${upper}.`\n );\n error.code = 4;\n throw error;\n }\n\n /**\n * Throws an error when a value for a date options couldn't be parsed. Either\n * the option was an invalide string or an invalid Date object.\n * @param optionName\n * @param date\n * @param soft If true, logs a warning instead of an error.\n */\n failedToParseDate(optionName: string, date: any, soft = false) {\n const error = new TdError(\n `${this.base} Could not correctly parse \"${date}\" to a date for ${optionName}.`\n );\n error.code = 5;\n if (!soft) throw error;\n console.warn(error);\n }\n\n /**\n * Throws when an element to attach to was not provided in the constructor.\n */\n mustProvideElement() {\n const error = new TdError(`${this.base} No element was provided.`);\n error.code = 6;\n throw error;\n }\n\n /**\n * Throws if providing an array for the events to subscribe method doesn't have\n * the same number of callbacks. E.g., subscribe([1,2], [1])\n */\n subscribeMismatch() {\n const error = new TdError(\n `${this.base} The subscribed events does not match the number of callbacks`\n );\n error.code = 7;\n throw error;\n }\n\n /**\n * Throws if the configuration has conflicting rules e.g. minDate is after maxDate\n */\n conflictingConfiguration(message?: string) {\n const error = new TdError(\n `${this.base} A configuration value conflicts with another rule. ${message}`\n );\n error.code = 8;\n throw error;\n }\n\n /**\n * Logs a warning if a date option value is provided as a string, instead of\n * a date/datetime object.\n */\n dateString() {\n console.warn(\n `${this.base} Using a string for date options is not recommended unless you specify an ISO string.`\n );\n }\n\n //#endregion\n\n //#region used with notify.error\n\n /**\n * Used with an Error Event type if the user selects a date that\n * fails restriction validation.\n */\n failedToSetInvalidDate = 'Failed to set invalid date';\n\n /**\n * Used with an Error Event type when a user changes the value of the\n * input field directly, and does not provide a valid date.\n */\n failedToParseInput = 'Failed parse input field';\n\n //#endregion\n}\n","import { ErrorMessages } from './errors';\n// this is not the way I want this to stay but nested classes seemed to blown up once its compiled.\nconst NAME = 'tempus-dominus',\n version = '6.0.0-alpha1',\n dataKey = 'td';\n\n/**\n * Events\n */\nclass Events {\n key = `.${dataKey}`;\n\n /**\n * Change event. Fired when the user selects a date.\n * See also EventTypes.ChangeEvent\n */\n change = `change${this.key}`;\n\n /**\n * Emit when the view changes for example from month view to the year view.\n * See also EventTypes.ViewUpdateEvent\n */\n update = `update${this.key}`;\n\n /**\n * Emits when a selected date or value from the input field fails to meet the provided validation rules.\n * See also EventTypes.FailEvent\n */\n error = `error${this.key}`;\n\n /**\n * Show event\n * @event Events#show\n */\n show = `show${this.key}`;\n\n /**\n * Hide event\n * @event Events#hide\n */\n hide = `hide${this.key}`;\n\n // blur and focus are used in the jQuery provider but are otherwise unused.\n // keyup/down will be used later for keybinding options\n\n blur = `blur${this.key}`;\n focus = `focus${this.key}`;\n keyup = `keyup${this.key}`;\n keydown = `keydown${this.key}`;\n}\n\nclass Css {\n /**\n * The outer element for the widget.\n */\n widget = `${NAME}-widget`;\n\n /**\n * Hold the previous, next and switcher divs\n */\n calendarHeader = 'calendar-header';\n\n /**\n * The element for the action to change the calendar view. E.g. month -> year.\n */\n switch = 'picker-switch';\n\n /**\n * The elements for all of the toolbar options\n */\n toolbar = 'toolbar';\n\n /**\n * Disables the hover and rounding affect.\n */\n noHighlight = 'no-highlight';\n\n /**\n * Applied to the widget element when the side by side option is in use.\n */\n sideBySide = 'timepicker-sbs';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> July\n */\n previous = 'previous';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> September\n */\n next = 'next';\n\n /**\n * Applied to any action that would violate any restriction options. ALso applied\n * to an input field if the disabled function is called.\n */\n disabled = 'disabled';\n\n /**\n * Applied to any date that is less than requested view,\n * e.g. the last day of the previous month.\n */\n old = 'old';\n\n /**\n * Applied to any date that is greater than of requested view,\n * e.g. the last day of the previous month.\n */\n new = 'new';\n\n /**\n * Applied to any date that is currently selected.\n */\n active = 'active';\n\n //#region date element\n\n /**\n * The outer most element for the calendar view.\n */\n dateContainer = 'date-container';\n\n /**\n * The outer most element for the decades view.\n */\n decadesContainer = `${this.dateContainer}-decades`;\n\n /**\n * Applied to elements within the decades container, e.g. 2020, 2030\n */\n decade = 'decade';\n\n /**\n * The outer most element for the years view.\n */\n yearsContainer = `${this.dateContainer}-years`;\n\n /**\n * Applied to elements within the years container, e.g. 2021, 2021\n */\n year = 'year';\n\n /**\n * The outer most element for the month view.\n */\n monthsContainer = `${this.dateContainer}-months`;\n\n /**\n * Applied to elements within the month container, e.g. January, February\n */\n month = 'month';\n\n /**\n * The outer most element for the calendar view.\n */\n daysContainer = `${this.dateContainer}-days`;\n\n /**\n * Applied to elements within the day container, e.g. 1, 2..31\n */\n day = 'day';\n\n /**\n * If display.calendarWeeks is enabled, a column displaying the week of year\n * is shown. This class is applied to each cell in that column.\n */\n calendarWeeks = 'cw';\n\n /**\n * Applied to the first row of the calendar view, e.g. Sunday, Monday\n */\n dayOfTheWeek = 'dow';\n\n /**\n * Applied to the current date on the calendar view.\n */\n today = 'today';\n\n /**\n * Applied to the locale's weekend dates on the calendar view, e.g. Sunday, Saturday\n */\n weekend = 'weekend';\n\n //#endregion\n\n //#region time element\n\n /**\n * The outer most element for all time related elements.\n */\n timeContainer = 'time-container';\n\n /**\n * Applied the separator columns between time elements, e.g. hour *:* minute *:* second\n */\n separator = 'separator';\n\n /**\n * The outer most element for the clock view.\n */\n clockContainer = `${this.timeContainer}-clock`;\n\n /**\n * The outer most element for the hours selection view.\n */\n hourContainer = `${this.timeContainer}-hour`;\n\n /**\n * The outer most element for the minutes selection view.\n */\n minuteContainer = `${this.timeContainer}-minute`;\n\n /**\n * The outer most element for the seconds selection view.\n */\n secondContainer = `${this.timeContainer}-second`;\n\n /**\n * Applied to each element in the hours selection view.\n */\n hour = 'hour';\n\n /**\n * Applied to each element in the minutes selection view.\n */\n minute = 'minute';\n\n /**\n * Applied to each element in the seconds selection view.\n */\n second = 'second';\n\n /**\n * Applied AM/PM toggle button.\n */\n toggleMeridiem = 'toggleMeridiem';\n\n //#endregion\n\n //#region collapse\n\n /**\n * Applied the element of the current view mode, e.g. calendar or clock.\n */\n show = 'show';\n\n /**\n * Applied to the currently showing view mode during a transition\n * between calendar and clock views\n */\n collapsing = 'td-collapsing';\n\n /**\n * Applied to the currently hidden view mode.\n */\n collapse = 'td-collapse';\n\n //#endregion\n\n /**\n * Applied to the widget when the option display.inline is enabled.\n */\n inline = 'inline';\n}\n\nexport default class Namespace {\n static NAME = NAME;\n // noinspection JSUnusedGlobalSymbols\n static version = version;\n static dataKey = dataKey;\n\n static events = new Events();\n\n static css = new Css();\n\n static errorMessages = new ErrorMessages();\n}\n","import { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options from './options';\n\nconst DefaultOptions: Options = {\n restrictions: {\n minDate: undefined,\n maxDate: undefined,\n disabledDates: [],\n enabledDates: [],\n daysOfWeekDisabled: [],\n disabledTimeIntervals: [],\n disabledHours: [],\n enabledHours: [],\n },\n display: {\n icons: {\n type: 'icons',\n time: 'fas fa-clock',\n date: 'fas fa-calendar',\n up: 'fas fa-arrow-up',\n down: 'fas fa-arrow-down',\n previous: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n today: 'fas fa-calendar-check',\n clear: 'fas fa-trash',\n close: 'fas fa-times',\n },\n sideBySide: false,\n calendarWeeks: false,\n viewMode: 'calendar',\n toolbarPlacement: 'bottom',\n keepOpen: false,\n buttons: {\n today: false,\n clear: false,\n close: false,\n },\n components: {\n calendar: true,\n date: true,\n month: true,\n year: true,\n decades: true,\n clock: true,\n hours: true,\n minutes: true,\n seconds: false,\n useTwentyfourHour: false,\n },\n inline: false,\n },\n stepping: 1,\n useCurrent: true,\n defaultDate: undefined,\n localization: {\n today: 'Go to today',\n clear: 'Clear selection',\n close: 'Close the picker',\n selectMonth: 'Select Month',\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n selectYear: 'Select Year',\n previousYear: 'Previous Year',\n nextYear: 'Next Year',\n selectDecade: 'Select Decade',\n previousDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n previousCentury: 'Previous Century',\n nextCentury: 'Next Century',\n pickHour: 'Pick Hour',\n incrementHour: 'Increment Hour',\n decrementHour: 'Decrement Hour',\n pickMinute: 'Pick Minute',\n incrementMinute: 'Increment Minute',\n decrementMinute: 'Decrement Minute',\n pickSecond: 'Pick Second',\n incrementSecond: 'Increment Second',\n decrementSecond: 'Decrement Second',\n toggleMeridiem: 'Toggle Meridiem',\n selectTime: 'Select Time',\n selectDate: 'Select Date',\n dayViewHeaderFormat: 'long',\n locale: 'default',\n },\n keepInvalid: false,\n debug: false,\n allowInputToggle: false,\n viewDate: new DateTime(),\n multipleDates: false,\n multipleDatesSeparator: '; ',\n promptTimeOnDateChange: false,\n promptTimeOnDateChangeTransitionDelay: 200,\n hooks: {\n inputParse: undefined,\n inputFormat: undefined,\n },\n};\n\nconst DatePickerModes: {\n name: string;\n className: string;\n unit: Unit;\n step: number;\n}[] = [\n {\n name: 'calendar',\n className: Namespace.css.daysContainer,\n unit: Unit.month,\n step: 1,\n },\n {\n name: 'months',\n className: Namespace.css.monthsContainer,\n unit: Unit.year,\n step: 1,\n },\n {\n name: 'years',\n className: Namespace.css.yearsContainer,\n unit: Unit.year,\n step: 10,\n },\n {\n name: 'decades',\n className: Namespace.css.decadesContainer,\n unit: Unit.year,\n step: 100,\n },\n];\n\nexport { DefaultOptions, DatePickerModes, Namespace };\n","import Namespace from '../namespace';\n\n/**\n * Provides a collapse functionality to the view changes\n */\nexport default class Collapse {\n private timeOut;\n\n /**\n * Flips the show/hide state of `target`\n * @param target html element to affect.\n */\n toggle(target: HTMLElement, callback = undefined) {\n if (target.classList.contains(Namespace.css.show)) {\n this.hide(target, callback);\n } else {\n this.show(target, callback);\n }\n }\n\n /**\n * If `target` is not already showing, then show after the animation.\n * @param target\n */\n show(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse, Namespace.css.show);\n target.style.height = '';\n this.timeOut = null;\n if (callback) callback();\n };\n\n target.style.height = '0';\n target.classList.remove(Namespace.css.collapse);\n target.classList.add(Namespace.css.collapsing);\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n target.style.height = `${target.scrollHeight}px`;\n }\n\n /**\n * If `target` is not already hidden, then hide after the animation.\n * @param target HTML Element\n */\n hide(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n !target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse);\n this.timeOut = null;\n };\n\n target.style.height = `${target.getBoundingClientRect()['height']}px`;\n\n const reflow = (element) => element.offsetHeight;\n\n reflow(target);\n\n target.classList.remove(Namespace.css.collapse, Namespace.css.show);\n target.classList.add(Namespace.css.collapsing);\n target.style.height = '';\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n }\n\n /**\n * Gets the transition duration from the `element` by getting css properties\n * `transition-duration` and `transition-delay`\n * @param element HTML Element\n */\n private getTransitionDurationFromElement = (element: HTMLElement) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } =\n window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) +\n Number.parseFloat(transitionDelay)) *\n 1000\n );\n };\n}\n","import { DatePickerModes } from './conts.js';\nimport { DateTime, Unit } from './datetime';\nimport { TempusDominus } from './tempus-dominus';\nimport Collapse from './display/collapse';\nimport Namespace from './namespace';\n\n/**\n *\n */\nexport default class Actions {\n private _context: TempusDominus;\n private collapse: Collapse;\n\n constructor(context: TempusDominus) {\n this._context = context;\n this.collapse = new Collapse();\n }\n\n /**\n * Performs the selected `action`. See ActionTypes\n * @param e This is normally a click event\n * @param action If not provided, then look for a [data-action]\n */\n do(e: any, action?: ActionTypes) {\n const currentTarget = e.currentTarget;\n if (currentTarget.classList.contains(Namespace.css.disabled)) return false;\n action = action || currentTarget.dataset.action;\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n /**\n * Common function to manipulate {@link lastPicked} by `unit`\n * @param unit\n * @param value Value to change by\n */\n const manipulateAndSet = (unit: Unit, value = 1) => {\n const newDate = lastPicked.manipulate(value, unit);\n if (this._context._validation.isValid(newDate, unit)) {\n this._context.dates._setValue(\n newDate,\n this._context.dates.lastPickedIndex\n );\n }\n };\n\n switch (action) {\n case ActionTypes.next:\n case ActionTypes.previous:\n const { unit, step } = DatePickerModes[this._context._currentViewMode];\n if (action === ActionTypes.next)\n this._context._viewDate.manipulate(step, unit);\n else this._context._viewDate.manipulate(step * -1, unit);\n this._context._viewUpdate(unit);\n\n this._context._display._showMode();\n break;\n case ActionTypes.pickerSwitch:\n this._context._display._showMode(1);\n this._context._viewUpdate(\n DatePickerModes[this._context._currentViewMode].unit\n );\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.selectMonth:\n case ActionTypes.selectYear:\n case ActionTypes.selectDecade:\n const value = +currentTarget.dataset.value;\n switch (action) {\n case ActionTypes.selectMonth:\n this._context._viewDate.month = value;\n this._context._viewUpdate(Unit.month);\n break;\n case ActionTypes.selectYear:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n case ActionTypes.selectDecade:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n }\n\n if (\n this._context._currentViewMode === this._context._minViewModeNumber\n ) {\n this._context.dates._setValue(\n this._context._viewDate,\n this._context.dates.lastPickedIndex\n );\n if (!this._context._options.display.inline) {\n this._context._display.hide();\n }\n } else {\n this._context._display._showMode(-1);\n }\n break;\n case ActionTypes.selectDay:\n const day = this._context._viewDate.clone;\n if (currentTarget.classList.contains(Namespace.css.old)) {\n day.manipulate(-1, Unit.month);\n }\n if (currentTarget.classList.contains(Namespace.css.new)) {\n day.manipulate(1, Unit.month);\n }\n\n day.date = +currentTarget.dataset.day;\n let index = 0;\n if (this._context._options.multipleDates) {\n index = this._context.dates.pickedIndex(day, Unit.date);\n if (index !== -1) {\n this._context.dates._setValue(null, index); //deselect multi-date\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex + 1\n );\n }\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex\n );\n }\n\n if (\n !this._context._display._hasTime &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline &&\n !this._context._options.multipleDates\n ) {\n this._context._display.hide();\n }\n break;\n case ActionTypes.selectHour:\n let hour = +currentTarget.dataset.value;\n if (\n lastPicked.hours >= 12 &&\n !this._context._options.display.components.useTwentyfourHour\n )\n hour += 12;\n lastPicked.hours = hour;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.minutes &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectMinute:\n lastPicked.minutes = +currentTarget.dataset.value;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.seconds &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectSecond:\n lastPicked.seconds = +currentTarget.dataset.value;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.incrementHours:\n manipulateAndSet(Unit.hours);\n break;\n case ActionTypes.incrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping);\n break;\n case ActionTypes.incrementSeconds:\n manipulateAndSet(Unit.seconds);\n break;\n case ActionTypes.decrementHours:\n manipulateAndSet(Unit.hours, -1);\n break;\n case ActionTypes.decrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping * -1);\n break;\n case ActionTypes.decrementSeconds:\n manipulateAndSet(Unit.seconds, -1);\n break;\n case ActionTypes.toggleMeridiem:\n manipulateAndSet(\n Unit.hours,\n this._context.dates.lastPicked.hours >= 12 ? -12 : 12\n );\n break;\n case ActionTypes.togglePicker:\n this._context._display.widget\n .querySelectorAll(\n `.${Namespace.css.dateContainer}, .${Namespace.css.timeContainer}`\n )\n .forEach((htmlElement: HTMLElement) =>\n this.collapse.toggle(htmlElement)\n );\n if (\n currentTarget.getAttribute('title') ===\n this._context._options.localization.selectDate\n ) {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectTime\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.time\n ).outerHTML;\n\n this._context._display._updateCalendarHeader();\n } else {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectDate\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.date\n ).outerHTML;\n this.do(e, ActionTypes.showClock);\n this._context._display._update('clock');\n }\n break;\n case ActionTypes.showClock:\n case ActionTypes.showHours:\n case ActionTypes.showMinutes:\n case ActionTypes.showSeconds:\n this._context._display.widget\n .querySelectorAll(`.${Namespace.css.timeContainer} > div`)\n .forEach(\n (htmlElement: HTMLElement) => (htmlElement.style.display = 'none')\n );\n\n let classToUse = '';\n switch (action) {\n case ActionTypes.showClock:\n classToUse = Namespace.css.clockContainer;\n this._context._display._update('clock');\n break;\n case ActionTypes.showHours:\n classToUse = Namespace.css.hourContainer;\n this._context._display._update(Unit.hours);\n break;\n case ActionTypes.showMinutes:\n classToUse = Namespace.css.minuteContainer;\n this._context._display._update(Unit.minutes);\n break;\n case ActionTypes.showSeconds:\n classToUse = Namespace.css.secondContainer;\n this._context._display._update(Unit.seconds);\n break;\n }\n\n ((\n this._context._display.widget.getElementsByClassName(classToUse)[0]\n )).style.display = 'grid';\n break;\n case ActionTypes.clear:\n this._context.dates._setValue(null);\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.close:\n this._context._display.hide();\n break;\n case ActionTypes.today:\n const today = new DateTime().setLocale(\n this._context._options.localization.locale\n );\n this._context._viewDate = today;\n if (this._context._validation.isValid(today, Unit.date))\n this._context.dates._setValue(\n today,\n this._context.dates.lastPickedIndex\n );\n break;\n }\n }\n}\n\nexport enum ActionTypes {\n next = 'next',\n previous = 'previous',\n pickerSwitch = 'pickerSwitch',\n selectMonth = 'selectMonth',\n selectYear = 'selectYear',\n selectDecade = 'selectDecade',\n selectDay = 'selectDay',\n selectHour = 'selectHour',\n selectMinute = 'selectMinute',\n selectSecond = 'selectSecond',\n incrementHours = 'incrementHours',\n incrementMinutes = 'incrementMinutes',\n incrementSeconds = 'incrementSeconds',\n decrementHours = 'decrementHours',\n decrementMinutes = 'decrementMinutes',\n decrementSeconds = 'decrementSeconds',\n toggleMeridiem = 'toggleMeridiem',\n togglePicker = 'togglePicker',\n showClock = 'showClock',\n showHours = 'showHours',\n showMinutes = 'showMinutes',\n showSeconds = 'showSeconds',\n clear = 'clear',\n close = 'close',\n today = 'today',\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `date`\r\n */\r\nexport default class DateDisplay {\r\n private _context: TempusDominus;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.daysContainer);\r\n\r\n container.append(...this._daysOfTheWeek());\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(Namespace.css.calendarWeeks, Namespace.css.noHighlight);\r\n container.appendChild(div);\r\n }\r\n\r\n for (let i = 0; i < 42; i++) {\r\n if (i !== 0 && i % 7 === 0) {\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n container.appendChild(div);\r\n }\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDay);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update(): void {\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.daysContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.daysContainer,\r\n this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n })\r\n );\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(-1, Unit.month),\r\n Unit.month\r\n )\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(1, Unit.month),\r\n Unit.month\r\n )\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.month)\r\n .startOf('weekDay')\r\n .manipulate(12, Unit.hours);\r\n\r\n container\r\n .querySelectorAll(\r\n `[data-action=\"${ActionTypes.selectDay}\"], .${Namespace.css.calendarWeeks}`\r\n )\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (\r\n this._context._options.display.calendarWeeks &&\r\n containerClone.classList.contains(Namespace.css.calendarWeeks)\r\n ) {\r\n if (containerClone.innerText === '#') return;\r\n containerClone.innerText = `${innerDate.week}`;\r\n return;\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.day);\r\n\r\n if (innerDate.isBefore(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.old);\r\n }\r\n if (innerDate.isAfter(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.new);\r\n }\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.date)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.date)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n if (innerDate.isSame(new DateTime(), Unit.date)) {\r\n classes.push(Namespace.css.today);\r\n }\r\n if (innerDate.weekDay === 0 || innerDate.weekDay === 6) {\r\n classes.push(Namespace.css.weekend);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`\r\n );\r\n containerClone.setAttribute(\r\n 'data-day',\r\n `${innerDate.date}`\r\n );\r\n containerClone.innerText = innerDate.format({ day: \"numeric\" });\r\n innerDate.manipulate(1, Unit.date);\r\n });\r\n }\r\n\r\n /***\r\n * Generates an html row that contains the days of the week.\r\n * @private\r\n */\r\n private _daysOfTheWeek(): HTMLElement[] {\r\n let innerDate = this._context._viewDate.clone\r\n .startOf('weekDay')\r\n .startOf(Unit.date);\r\n const row = [];\r\n document.createElement('div');\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = '#';\r\n row.push(htmlDivElement);\r\n }\r\n\r\n for (let i = 0; i < 7; i++) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.dayOfTheWeek,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = innerDate.format({ weekday: 'short' });\r\n innerDate.manipulate(1, Unit.date);\r\n row.push(htmlDivElement);\r\n }\r\n\r\n return row;\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `month`\n */\nexport default class MonthDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.monthsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMonth);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.monthsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.monthsContainer,\n this._context._viewDate.format({ year: 'numeric' })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.year),\n Unit.year\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.year),\n Unit.year\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone.startOf(Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMonth}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.month);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.month)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.month)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${index}`);\n containerClone.innerText = `${innerDate.format({ month: 'short' })}`;\n innerDate.manipulate(1, Unit.month);\n });\n }\n}\n","import { DateTime, DateTimeFormatOptions } from './datetime';\nimport Namespace from './namespace';\nimport { DefaultOptions } from './conts';\nimport { TempusDominus } from './tempus-dominus';\n\nexport default interface Options {\n restrictions: {\n minDate: DateTime;\n maxDate: DateTime;\n enabledDates: DateTime[];\n disabledDates: DateTime[];\n enabledHours: number[];\n disabledHours: number[];\n disabledTimeIntervals: { from: DateTime; to: DateTime }[];\n daysOfWeekDisabled: number[];\n };\n display: {\n toolbarPlacement: 'top' | 'bottom';\n components: {\n calendar: boolean;\n date: boolean;\n month: boolean;\n year: boolean;\n decades: boolean;\n clock: boolean;\n hours: boolean;\n minutes: boolean;\n seconds: boolean;\n useTwentyfourHour: boolean;\n };\n buttons: { today: boolean; close: boolean; clear: boolean };\n calendarWeeks: boolean;\n icons: {\n date: string;\n next: string;\n previous: string;\n today: string;\n clear: string;\n time: string;\n up: string;\n type: 'icons' | 'sprites';\n down: string;\n close: string;\n };\n viewMode: 'clock' | 'calendar' | 'months' | 'years' | 'decades';\n sideBySide: boolean;\n inline: boolean;\n keepOpen: boolean;\n };\n stepping: number;\n useCurrent: boolean;\n defaultDate: DateTime;\n localization: {\n nextMonth: string;\n pickHour: string;\n incrementSecond: string;\n nextDecade: string;\n selectDecade: string;\n dayViewHeaderFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n decrementHour: string;\n selectDate: string;\n incrementHour: string;\n previousCentury: string;\n decrementSecond: string;\n today: string;\n previousMonth: string;\n selectYear: string;\n pickSecond: string;\n nextCentury: string;\n close: string;\n incrementMinute: string;\n selectTime: string;\n clear: string;\n toggleMeridiem: string;\n selectMonth: string;\n decrementMinute: string;\n pickMinute: string;\n nextYear: string;\n previousYear: string;\n previousDecade: string;\n locale: string;\n };\n keepInvalid: boolean;\n debug: boolean;\n allowInputToggle: boolean;\n viewDate: DateTime;\n multipleDates: boolean;\n multipleDatesSeparator: string;\n promptTimeOnDateChange: boolean;\n promptTimeOnDateChangeTransitionDelay: number;\n hooks: {\n inputParse: (context: TempusDominus, value: any) => DateTime;\n inputFormat: (context: TempusDominus, date: DateTime) => string;\n };\n}\n\nexport class OptionConverter {\n static _mergeOptions(providedOptions: Options, mergeTo: Options): Options {\n const newOptions = {} as Options;\n let path = '';\n const ignoreProperties = ['inputParse', 'inputFormat'];\n\n const processKey = (key, value, providedType, defaultType) => {\n switch (key) {\n case 'defaultDate': {\n const dateTime = this._dateConversion(value, 'defaultDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'defaultDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'viewDate': {\n const dateTime = this._dateConversion(value, 'viewDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'viewDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'minDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.minDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.minDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'maxDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.maxDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.maxDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'disabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.disabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.disabledHours',\n 0,\n 23\n );\n return value;\n case 'enabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.enabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.enabledHours',\n 0,\n 23\n );\n return value;\n case 'daysOfWeekDisabled':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.daysOfWeekDisabled',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 6).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.daysOfWeekDisabled',\n 0,\n 6\n );\n return value;\n case 'enabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.enabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.disabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledTimeIntervals':\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n key,\n providedType,\n 'array of { from: DateTime|Date, to: DateTime|Date }'\n );\n }\n const valueObject = value as { from: any; to: any }[];\n for (let i = 0; i < valueObject.length; i++) {\n Object.keys(valueObject[i]).forEach((vk) => {\n const subOptionName = `${key}[${i}].${vk}`;\n let d = valueObject[i][vk];\n const dateTime = this._dateConversion(d, subOptionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n subOptionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n valueObject[i][vk] = dateTime;\n });\n }\n return valueObject;\n case 'toolbarPlacement':\n case 'type':\n case 'viewMode':\n case 'dayViewHeaderFormat':\n const optionValues = {\n toolbarPlacement: ['top', 'bottom', 'default'],\n type: ['icons', 'sprites'],\n viewMode: ['clock', 'calendar', 'months', 'years', 'decades'],\n dayViewHeaderFormat: [\n 'numeric',\n '2-digit',\n 'long',\n 'short',\n 'narrow',\n ],\n };\n const keyOptions = optionValues[key];\n if (!keyOptions.includes(value))\n Namespace.errorMessages.unexpectedOptionValue(\n path.substring(1),\n value,\n keyOptions\n );\n\n return value;\n case 'inputParse':\n case 'inputFormat':\n return value;\n default:\n switch (defaultType) {\n case 'boolean':\n return value === 'true' || value === true;\n case 'number':\n return +value;\n case 'string':\n return value.toString();\n case 'object':\n return {};\n case 'function':\n return value;\n default:\n Namespace.errorMessages.typeMismatch(\n path.substring(1),\n providedType,\n defaultType\n );\n }\n }\n };\n\n /**\n * The spread operator caused sub keys to be missing after merging.\n * This is to fix that issue by using spread on the child objects first.\n * Also handles complex options like disabledDates\n * @param provided An option from new providedOptions\n * @param mergeOption Default option to compare types against\n * @param copyTo Destination object. This was add to prevent reference copies\n */\n const spread = (provided, mergeOption, copyTo) => {\n const unsupportedOptions = Object.keys(provided).filter(\n (x) => !Object.keys(mergeOption).includes(x)\n );\n if (unsupportedOptions.length > 0) {\n const flattenedOptions = OptionConverter._flattenDefaultOptions;\n\n const errors = unsupportedOptions.map((x) => {\n let error = `\"${path.substring(1)}.${x}\" in not a known option.`;\n let didYouMean = flattenedOptions.find((y) => y.includes(x));\n if (didYouMean) error += `Did you mean \"${didYouMean}\"?`;\n return error;\n });\n Namespace.errorMessages.unexpectedOptions(errors);\n }\n Object.keys(mergeOption).forEach((key) => {\n const defaultOptionValue = mergeOption[key];\n let providedType = typeof provided[key];\n let defaultType = typeof defaultOptionValue;\n let value = provided[key];\n if (!provided.hasOwnProperty(key)) {\n if (\n defaultType === 'undefined' ||\n (value?.length === 0 && Array.isArray(defaultOptionValue))\n ) {\n copyTo[key] = defaultOptionValue;\n return;\n }\n provided[key] = defaultOptionValue;\n value = provided[key];\n }\n path += `.${key}`;\n copyTo[key] = processKey(key, value, providedType, defaultType);\n\n if (\n typeof defaultOptionValue !== 'object' ||\n ignoreProperties.includes(key)\n ) {\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n return;\n }\n if (!Array.isArray(provided[key])) {\n spread(provided[key], defaultOptionValue, copyTo[key]);\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n }\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n });\n };\n spread(providedOptions, mergeTo, newOptions);\n\n return newOptions;\n }\n\n static _dataToOptions(element, options: Options): Options {\n const eData = element.dataset;\n if (\n !eData ||\n Object.keys(eData).length === 0 ||\n eData.constructor !== DOMStringMap\n )\n return options;\n let dataOptions = {} as Options;\n\n // because dataset returns camelCase including the 'td' key the option\n // key won't align\n const objectToNormalized = (object) => {\n const lowered = {};\n Object.keys(object).forEach((x) => {\n lowered[x.toLowerCase()] = x;\n });\n\n return lowered;\n };\n\n const rabbitHole = (\n split: string[],\n index: number,\n optionSubgroup: {},\n value: any\n ) => {\n // first round = display { ... }\n const normalizedOptions = objectToNormalized(optionSubgroup);\n\n const keyOption = normalizedOptions[split[index].toLowerCase()];\n const internalObject = {};\n\n if (keyOption === undefined) return internalObject;\n\n // if this is another object, continue down the rabbit hole\n if (optionSubgroup[keyOption].constructor === Object) {\n index++;\n internalObject[keyOption] = rabbitHole(\n split,\n index,\n optionSubgroup[keyOption],\n value\n );\n } else {\n internalObject[keyOption] = value;\n }\n return internalObject;\n };\n const optionsLower = objectToNormalized(options);\n\n Object.keys(eData)\n .filter((x) => x.startsWith(Namespace.dataKey))\n .map((x) => x.substring(2))\n .forEach((key) => {\n let keyOption = optionsLower[key.toLowerCase()];\n\n // dataset merges dashes to camelCase... yay\n // i.e. key = display_components_seconds\n if (key.includes('_')) {\n // [display, components, seconds]\n const split = key.split('_');\n // display\n keyOption = optionsLower[split[0].toLowerCase()];\n if (\n keyOption !== undefined &&\n options[keyOption].constructor === Object\n ) {\n dataOptions[keyOption] = rabbitHole(\n split,\n 1,\n options[keyOption],\n eData[`td${key}`]\n );\n }\n }\n // or key = multipleDate\n else if (keyOption !== undefined) {\n dataOptions[keyOption] = eData[`td${key}`];\n }\n });\n\n return this._mergeOptions(dataOptions, options);\n }\n\n /**\n * Attempts to prove `d` is a DateTime or Date or can be converted into one.\n * @param d If a string will attempt creating a date from it.\n * @private\n */\n static _dateTypeCheck(d: any): DateTime | null {\n if (d.constructor.name === DateTime.name) return d;\n if (d.constructor.name === Date.name) {\n return DateTime.convert(d);\n }\n if (typeof d === typeof '') {\n const dateTime = new DateTime(d);\n if (JSON.stringify(dateTime) === 'null') {\n return null;\n }\n return dateTime;\n }\n return null;\n }\n\n /**\n * Type checks that `value` is an array of Date or DateTime\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckDateArray(optionName: string, value, providedType: string) {\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of DateTime or Date'\n );\n }\n for (let i = 0; i < value.length; i++) {\n let d = value[i];\n const dateTime = this._dateConversion(d, optionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n value[i] = dateTime;\n }\n }\n\n /**\n * Type checks that `value` is an array of numbers\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckNumberArray(\n optionName: string,\n value,\n providedType: string\n ) {\n if (!Array.isArray(value) || value.find((x) => typeof x !== typeof 0)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of numbers'\n );\n }\n return;\n }\n\n /**\n * Attempts to convert `d` to a DateTime object\n * @param d value to convert\n * @param optionName Provides text to error messages e.g. disabledDates\n */\n static _dateConversion(d: any, optionName: string) {\n if (typeof d === typeof '' && optionName !== 'input') {\n Namespace.errorMessages.dateString();\n }\n\n const converted = this._dateTypeCheck(d);\n\n if (!converted) {\n Namespace.errorMessages.failedToParseDate(\n optionName,\n d,\n optionName === 'input'\n );\n }\n return converted;\n }\n\n private static _flatback: string[];\n\n private static get _flattenDefaultOptions(): string[] {\n if (this._flatback) return this._flatback;\n const deepKeys = (t, pre = []) =>\n Array.isArray(t)\n ? []\n : Object(t) === t\n ? Object.entries(t).flatMap(([k, v]) => deepKeys(v, [...pre, k]))\n : pre.join('.');\n\n this._flatback = deepKeys(DefaultOptions);\n\n return this._flatback;\n }\n\n /**\n * Some options conflict like min/max date. Verify that these kinds of options\n * are set correctly.\n * @param config\n */\n static _validateConflcits(config: Options) {\n if (config.restrictions.minDate && config.restrictions.maxDate) {\n if (config.restrictions.minDate.isAfter(config.restrictions.maxDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'minDate is after maxDate'\n );\n }\n\n if (config.restrictions.maxDate.isBefore(config.restrictions.minDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'maxDate is before minDate'\n );\n }\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport { ChangeEvent, FailEvent } from './event-types';\nimport { OptionConverter } from './options';\n\nexport default class Dates {\n private _dates: DateTime[] = [];\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Returns the array of selected dates\n */\n get picked(): DateTime[] {\n return this._dates;\n }\n\n /**\n * Returns the last picked value.\n */\n get lastPicked(): DateTime {\n return this._dates[this.lastPickedIndex];\n }\n\n /**\n * Returns the length of picked dates -1 or 0 if none are selected.\n */\n get lastPickedIndex(): number {\n if (this._dates.length === 0) return 0;\n return this._dates.length - 1;\n }\n\n /**\n * Adds a new DateTime to selected dates array\n * @param date\n */\n add(date: DateTime): void {\n this._dates.push(date);\n }\n\n /**\n * Tries to convert the provided value to a DateTime object.\n * If value is null|undefined then clear the value of the provided index (or 0).\n * @param value Value to convert or null|undefined\n * @param index When using multidates this is the index in the array\n * @param from Used in the warning message, useful for debugging.\n */\n set(value: any, index?: number, from: string = 'date.set') {\n if (!value) this._setValue(value, index);\n const converted = OptionConverter._dateConversion(value, from);\n if (converted) this._setValue(converted, index);\n }\n\n /**\n * Returns true if the `targetDate` is part of the selected dates array.\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n isPicked(targetDate: DateTime, unit?: Unit): boolean {\n if (!unit) return this._dates.find((x) => x === targetDate) !== undefined;\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return (\n this._dates\n .map((x) => x.format(format))\n .find((x) => x === innerDateFormatted) !== undefined\n );\n }\n\n /**\n * Returns the index at which `targetDate` is in the array.\n * This is used for updating or removing a date when multi-date is used\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n pickedIndex(targetDate: DateTime, unit?: Unit): number {\n if (!unit) return this._dates.indexOf(targetDate);\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return this._dates.map((x) => x.format(format)).indexOf(innerDateFormatted);\n }\n\n /**\n * Clears all selected dates.\n */\n clear() {\n this._context._unset = true;\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate: this.lastPicked,\n isClear: true,\n isValid: true,\n } as ChangeEvent);\n this._dates = [];\n }\n\n /**\n * Find the \"book end\" years given a `year` and a `factor`\n * @param factor e.g. 100 for decades\n * @param year e.g. 2021\n */\n static getStartEndYear(\n factor: number,\n year: number\n ): [number, number, number] {\n const step = factor / 10,\n startYear = Math.floor(year / factor) * factor,\n endYear = startYear + step * 9,\n focusValue = Math.floor(year / step) * step;\n return [startYear, endYear, focusValue];\n }\n\n /**\n * Do not use direectly. Attempts to either clear or set the `target` date at `index`.\n * If the `target` is null then the date will be cleared.\n * If multi-date is being used then it will be removed from the array.\n * If `target` is valid and multi-date is used then if `index` is\n * provided the date at that index will be replaced, otherwise it is appended.\n * @param target\n * @param index\n */\n _setValue(target?: DateTime, index?: number): void {\n const noIndex = typeof index === 'undefined',\n isClear = !target && noIndex;\n let oldDate = this._context._unset ? null : this._dates[index];\n if (!oldDate && !this._context._unset && noIndex && isClear) {\n oldDate = this.lastPicked;\n }\n\n const updateInput = () => {\n if (!this._context._input) return;\n\n let newValue = this._context._options.hooks.inputFormat(\n this._context,\n target\n );\n if (this._context._options.multipleDates) {\n newValue = this._dates\n .map((d) =>\n this._context._options.hooks.inputFormat(this._context, d)\n )\n .join(this._context._options.multipleDatesSeparator);\n }\n if (this._context._input.value != newValue)\n this._context._input.value = newValue;\n };\n\n if (target && oldDate?.isSame(target)) {\n updateInput();\n return;\n }\n\n // case of calling setValue(null)\n if (!target) {\n if (\n !this._context._options.multipleDates ||\n this._dates.length === 1 ||\n isClear\n ) {\n this._context._unset = true;\n this._dates = [];\n } else {\n this._dates.splice(index, 1);\n }\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n\n updateInput();\n this._context._display._update('all');\n return;\n }\n\n index = index || 0;\n target = target.clone;\n\n // minute stepping is being used, force the minute to the closest value\n if (this._context._options.stepping !== 1) {\n target.minutes =\n Math.round(target.minutes / this._context._options.stepping) *\n this._context._options.stepping;\n target.seconds = 0;\n }\n\n if (this._context._validation.isValid(target)) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._unset = false;\n this._context._display._update('all');\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n return;\n }\n\n if (this._context._options.keepInvalid) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: false,\n } as ChangeEvent);\n }\n this._context._triggerEvent({\n type: Namespace.events.error,\n reason: Namespace.errorMessages.failedToSetInvalidDate,\n date: target,\n oldDate,\n } as FailEvent);\n }\n\n /**\n * Returns a format object based on the granularity of `unit`\n * @param unit\n */\n static getFormatByUnit(unit: Unit): object {\n switch (unit) {\n case 'date':\n return { dateStyle: 'short' };\n case 'month':\n return {\n month: 'numeric',\n year: 'numeric',\n };\n case 'year':\n return { year: 'numeric' };\n }\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\nimport Dates from '../../dates';\r\n\r\n/**\r\n * Creates and updates the grid for `year`\r\n */\r\nexport default class YearDisplay {\r\n private _context: TempusDominus;\r\n private _startYear: DateTime;\r\n private _endYear: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.yearsContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectYear);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 10,\r\n this._context._viewDate.year\r\n );\r\n this._startYear = this._context._viewDate.clone.manipulate(-1, Unit.year);\r\n this._endYear = this._context._viewDate.clone.manipulate(10, Unit.year);\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.yearsContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.yearsContainer,\r\n `${this._startYear.format({ year: 'numeric' })}-${this._endYear.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startYear, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endYear, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.year)\r\n .manipulate(-1, Unit.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectYear}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n let classes = [];\r\n classes.push(Namespace.css.year);\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.year)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.year)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute('data-value', `${innerDate.year}`);\r\n containerClone.innerText = innerDate.format({ year: \"numeric\" });\r\n\r\n innerDate.manipulate(1, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport Dates from '../../dates';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `seconds`\r\n */\r\nexport default class DecadeDisplay {\r\n private _context: TempusDominus;\r\n private _startDecade: DateTime;\r\n private _endDecade: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker() {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.decadesContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDecade);\r\n container.appendChild(div);\r\n }\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 100,\r\n this._context._viewDate.year\r\n );\r\n this._startDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._startDecade.year = start;\r\n this._endDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._endDecade.year = end;\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.decadesContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.decadesContainer,\r\n `${this._startDecade.format({ year: 'numeric' })}-${this._endDecade.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startDecade, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endDecade, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n const pickedYears = this._context.dates.picked.map((x) => x.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectDecade}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (index === 0) {\r\n containerClone.classList.add(Namespace.css.old);\r\n if (this._startDecade.year - 10 < 0) {\r\n containerClone.textContent = ' ';\r\n previous.classList.add(Namespace.css.disabled);\r\n containerClone.classList.add(Namespace.css.disabled);\r\n containerClone.setAttribute('data-value', ``);\r\n return;\r\n } else {\r\n containerClone.innerText = this._startDecade.clone.manipulate(-10, Unit.year).format({ year: 'numeric' });\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n return;\r\n }\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.decade);\r\n const startDecadeYear = this._startDecade.year;\r\n const endDecadeYear = this._startDecade.year + 9;\r\n\r\n if (\r\n !this._context._unset &&\r\n pickedYears.filter((x) => x >= startDecadeYear && x <= endDecadeYear)\r\n .length > 0\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n containerClone.innerText = `${this._startDecade.format({ year: 'numeric' })}`;\r\n\r\n this._startDecade.manipulate(10, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates the clock display\n */\nexport default class TimeDisplay {\n private _context: TempusDominus;\n private _gridColumns = '';\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the clock display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.clockContainer);\n\n container.append(...this._grid());\n\n return container;\n }\n\n /**\n * Populates the various elements with in the clock display\n * like the current hour and if the manipulation icons are enabled.\n * @private\n */\n _update(): void {\n const timesDiv = (\n this._context._display.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0]\n );\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n timesDiv\n .querySelectorAll('.disabled')\n .forEach((element) => element.classList.remove(Namespace.css.disabled));\n\n if (this._context._options.display.components.hours) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.hours}]`\n ).innerText = this._context._options.display.components.useTwentyfourHour\n ? lastPicked.hoursFormatted\n : lastPicked.twelveHoursFormatted;\n }\n\n if (this._context._options.display.components.minutes) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.minutes}]`\n ).innerText = lastPicked.minutesFormatted;\n }\n\n if (this._context._options.display.components.seconds) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.seconds}]`\n ).innerText = lastPicked.secondsFormatted;\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n const toggle = timesDiv.querySelector(\n `[data-action=${ActionTypes.toggleMeridiem}]`\n );\n\n toggle.innerText = lastPicked.meridiem();\n\n if (\n !this._context._validation.isValid(\n lastPicked.clone.manipulate(\n lastPicked.hours >= 12 ? -12 : 12,\n Unit.hours\n )\n )\n ) {\n toggle.classList.add(Namespace.css.disabled);\n } else {\n toggle.classList.remove(Namespace.css.disabled);\n }\n }\n\n timesDiv.style.gridTemplateAreas = `\"${this._gridColumns}\"`;\n }\n\n /**\n * Creates the table for the clock display depending on what options are selected.\n * @private\n */\n private _grid(): HTMLElement[] {\n this._gridColumns = '';\n const top = [],\n middle = [],\n bottom = [],\n separator = document.createElement('div'),\n upIcon = this._context._display._iconTag(\n this._context._options.display.icons.up\n ),\n downIcon = this._context._display._iconTag(\n this._context._options.display.icons.down\n );\n\n separator.classList.add(Namespace.css.separator, Namespace.css.noHighlight);\n const separatorColon = separator.cloneNode(true);\n separatorColon.innerHTML = ':';\n\n const getSeparator = (colon = false): HTMLElement => {\n return colon\n ? separatorColon.cloneNode(true)\n : separator.cloneNode(true);\n };\n\n if (this._context._options.display.components.hours) {\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.incrementHours);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickHour\n );\n divElement.setAttribute('data-action', ActionTypes.showHours);\n divElement.setAttribute('data-time-component', Unit.hours);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.decrementHours);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n this._gridColumns += 'a';\n }\n\n if (this._context._options.display.components.minutes) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.hours) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.incrementMinutes);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickMinute\n );\n divElement.setAttribute('data-action', ActionTypes.showMinutes);\n divElement.setAttribute('data-time-component', Unit.minutes);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.decrementMinutes);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (this._context._options.display.components.seconds) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.minutes) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.incrementSeconds);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickSecond\n );\n divElement.setAttribute('data-action', ActionTypes.showSeconds);\n divElement.setAttribute('data-time-component', Unit.seconds);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.decrementSeconds);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n this._gridColumns += ' a';\n let divElement = getSeparator();\n top.push(divElement);\n\n let button = document.createElement('button');\n button.setAttribute(\n 'title',\n this._context._options.localization.toggleMeridiem\n );\n button.setAttribute('data-action', ActionTypes.toggleMeridiem);\n button.setAttribute('tabindex', '-1');\n button.classList.add(Namespace.css.toggleMeridiem);\n\n divElement = document.createElement('div');\n divElement.classList.add(Namespace.css.noHighlight);\n divElement.appendChild(button);\n middle.push(divElement);\n\n divElement = getSeparator();\n bottom.push(divElement);\n }\n\n this._gridColumns = this._gridColumns.trim();\n\n return [...top, ...middle, ...bottom];\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `hours`\n */\nexport default class HourDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.hourContainer);\n\n for (\n let i = 0;\n i <\n (this._context._options.display.components.useTwentyfourHour ? 24 : 12);\n i++\n ) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectHour);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.hourContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.date);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectHour}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.hour);\n\n if (!this._context._validation.isValid(innerDate, Unit.hours)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.hours}`);\n containerClone.innerText = this._context._options.display.components\n .useTwentyfourHour\n ? innerDate.hoursFormatted\n : innerDate.twelveHoursFormatted;\n innerDate.manipulate(1, Unit.hours);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `minutes`\n */\nexport default class MinuteDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.minuteContainer);\n\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n for (let i = 0; i < 60 / step; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMinute);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.minuteContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.hours);\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMinute}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.minute);\n\n if (!this._context._validation.isValid(innerDate, Unit.minutes)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.minutes}`);\n containerClone.innerText = innerDate.minutesFormatted;\n innerDate.manipulate(step, Unit.minutes);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class secondDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.secondContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectSecond);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.secondContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.minutes);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectSecond}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.second);\n\n if (!this._context._validation.isValid(innerDate, Unit.seconds)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.seconds}`);\n containerClone.innerText = innerDate.secondsFormatted;\n innerDate.manipulate(5, Unit.seconds);\n });\n }\n}\n","import DateDisplay from './calendar/date-display';\nimport MonthDisplay from './calendar/month-display';\nimport YearDisplay from './calendar/year-display';\nimport DecadeDisplay from './calendar/decade-display';\nimport TimeDisplay from './time/time-display';\nimport HourDisplay from './time/hour-display';\nimport MinuteDisplay from './time/minute-display';\nimport SecondDisplay from './time/second-display';\nimport { DateTime, Unit } from '../datetime';\nimport { DatePickerModes } from '../conts';\nimport { TempusDominus } from '../tempus-dominus';\nimport { ActionTypes } from '../actions';\nimport { createPopper } from '@popperjs/core';\nimport Namespace from '../namespace';\nimport { HideEvent } from '../event-types';\n\n/**\n * Main class for all things display related.\n */\nexport default class Display {\n private _context: TempusDominus;\n private _dateDisplay: DateDisplay;\n private _monthDisplay: MonthDisplay;\n private _yearDisplay: YearDisplay;\n private _decadeDisplay: DecadeDisplay;\n private _timeDisplay: TimeDisplay;\n private _widget: HTMLElement;\n private _hourDisplay: HourDisplay;\n private _minuteDisplay: MinuteDisplay;\n private _secondDisplay: SecondDisplay;\n private _popperInstance: any;\n private _isVisible = false;\n\n constructor(context: TempusDominus) {\n this._context = context;\n this._dateDisplay = new DateDisplay(context);\n this._monthDisplay = new MonthDisplay(context);\n this._yearDisplay = new YearDisplay(context);\n this._decadeDisplay = new DecadeDisplay(context);\n this._timeDisplay = new TimeDisplay(context);\n this._hourDisplay = new HourDisplay(context);\n this._minuteDisplay = new MinuteDisplay(context);\n this._secondDisplay = new SecondDisplay(context);\n\n this._widget = undefined;\n }\n\n /**\n * Returns the widget body or undefined\n * @private\n */\n get widget(): HTMLElement | undefined {\n return this._widget;\n }\n\n /**\n * Returns this visible state of the picker (shown)\n */\n get isVisible() {\n return this._isVisible;\n }\n\n /**\n * Updates the table for a particular unit. Used when an option as changed or\n * whenever the class list might need to be refreshed.\n * @param unit\n * @private\n */\n _update(unit: Unit | 'clock' | 'calendar' | 'all'): void {\n if (!this.widget) return;\n //todo do I want some kind of error catching or other guards here?\n switch (unit) {\n case Unit.seconds:\n this._secondDisplay._update();\n break;\n case Unit.minutes:\n this._minuteDisplay._update();\n break;\n case Unit.hours:\n this._hourDisplay._update();\n break;\n case Unit.date:\n this._dateDisplay._update();\n break;\n case Unit.month:\n this._monthDisplay._update();\n break;\n case Unit.year:\n this._yearDisplay._update();\n break;\n case 'clock':\n this._timeDisplay._update();\n this._update(Unit.hours);\n this._update(Unit.minutes);\n this._update(Unit.seconds);\n break;\n case 'calendar':\n this._update(Unit.date);\n this._update(Unit.year);\n this._update(Unit.month);\n this._decadeDisplay._update();\n this._updateCalendarHeader();\n break;\n case 'all':\n if (this._hasTime) {\n this._update('clock');\n }\n if (this._hasDate) {\n this._update('calendar');\n }\n }\n }\n\n /**\n * Shows the picker and creates a Popper instance if needed.\n * Add document click event to hide when clicking outside the picker.\n * @fires Events#show\n */\n show(): void {\n if (this.widget == undefined) {\n if (\n this._context._options.useCurrent &&\n !this._context._options.defaultDate &&\n !this._context._input?.value\n ) {\n //todo in the td4 branch a pr changed this to allow granularity\n const date = new DateTime().setLocale(\n this._context._options.localization.locale\n );\n if (!this._context._options.keepInvalid) {\n let tries = 0;\n let direction = 1;\n if (this._context._options.restrictions.maxDate?.isBefore(date)) {\n direction = -1;\n }\n while (!this._context._validation.isValid(date)) {\n date.manipulate(direction, Unit.date);\n if (tries > 31) break;\n tries++;\n }\n }\n this._context.dates._setValue(date);\n }\n\n if (this._context._options.defaultDate) {\n this._context.dates._setValue(this._context._options.defaultDate);\n }\n\n this._buildWidget();\n if (this._hasDate) {\n this._showMode();\n }\n\n if (!this._context._options.display.inline) {\n document.body.appendChild(this.widget);\n\n this._popperInstance = createPopper(\n this._context._element,\n this.widget,\n {\n modifiers: [{ name: 'eventListeners', enabled: true }],\n //#2400\n placement:\n document.documentElement.dir === 'rtl'\n ? 'bottom-end'\n : 'bottom-start',\n }\n );\n } else {\n this._context._element.appendChild(this.widget);\n }\n\n if (this._context._options.display.viewMode == 'clock') {\n this._context._action.do(\n {\n currentTarget: this.widget.querySelector(\n `.${Namespace.css.timeContainer}`\n ),\n },\n ActionTypes.showClock\n );\n }\n\n this.widget\n .querySelectorAll('[data-action]')\n .forEach((element) =>\n element.addEventListener('click', this._actionsClickEvent)\n );\n\n // show the clock when using sideBySide\n if (this._context._options.display.sideBySide) {\n this._timeDisplay._update();\n (\n this.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0] as HTMLElement\n ).style.display = 'grid';\n }\n }\n\n this.widget.classList.add(Namespace.css.show);\n if (!this._context._options.display.inline) {\n this._popperInstance.update();\n document.addEventListener('click', this._documentClickEvent);\n }\n this._context._triggerEvent({ type: Namespace.events.show });\n this._isVisible = true;\n }\n\n /**\n * Changes the calendar view mode. E.g. month <-> year\n * @param direction -/+ number to move currentViewMode\n * @private\n */\n _showMode(direction?: number): void {\n if (!this.widget) {\n return;\n }\n if (direction) {\n const max = Math.max(\n this._context._minViewModeNumber,\n Math.min(3, this._context._currentViewMode + direction)\n );\n if (this._context._currentViewMode == max) return;\n this._context._currentViewMode = max;\n }\n\n this.widget\n .querySelectorAll(\n `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div:not(.${Namespace.css.clockContainer})`\n )\n .forEach((e: HTMLElement) => (e.style.display = 'none'));\n\n const datePickerMode = DatePickerModes[this._context._currentViewMode];\n let picker: HTMLElement = this.widget.querySelector(\n `.${datePickerMode.className}`\n );\n\n switch (datePickerMode.className) {\n case Namespace.css.decadesContainer:\n this._decadeDisplay._update();\n break;\n case Namespace.css.yearsContainer:\n this._yearDisplay._update();\n break;\n case Namespace.css.monthsContainer:\n this._monthDisplay._update();\n break;\n case Namespace.css.daysContainer:\n this._dateDisplay._update();\n break;\n }\n\n picker.style.display = 'grid';\n this._updateCalendarHeader();\n }\n\n _updateCalendarHeader() {\n const showing = [\n ...this.widget.querySelector(\n `.${Namespace.css.dateContainer} div[style*=\"display: grid\"]`\n ).classList,\n ].find((x) => x.startsWith(Namespace.css.dateContainer));\n\n const [previous, switcher, next] = this._context._display.widget\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switch (showing) {\n case Namespace.css.decadesContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousCentury\n );\n switcher.setAttribute('title', '');\n next.setAttribute(\n 'title',\n this._context._options.localization.nextCentury\n );\n break;\n case Namespace.css.yearsContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousDecade\n );\n switcher.setAttribute(\n 'title',\n this._context._options.localization.selectDecade\n );\n next.setAttribute(\n 'title',\n this._context._options.localization.nextDecade\n );\n break;\n case Namespace.css.monthsContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousYear\n );\n switcher.setAttribute(\n 'title',\n this._context._options.localization.selectYear\n );\n next.setAttribute(\n 'title',\n this._context._options.localization.nextYear\n );\n break;\n case Namespace.css.daysContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousMonth\n );\n switcher.setAttribute(\n 'title',\n this._context._options.localization.selectMonth\n );\n next.setAttribute(\n 'title',\n this._context._options.localization.nextMonth\n );\n switcher.innerText = this._context._viewDate.format({\n month: this._context._options.localization.dayViewHeaderFormat,\n });\n break;\n }\n switcher.innerText = switcher.getAttribute(showing);\n }\n\n /**\n * Hides the picker if needed.\n * Remove document click event to hide when clicking outside the picker.\n * @fires Events#hide\n */\n hide(): void {\n if (!this.widget || !this._isVisible) return;\n\n this.widget.classList.remove(Namespace.css.show);\n\n if (this._isVisible) {\n this._context._triggerEvent({\n type: Namespace.events.hide,\n date: this._context._unset\n ? null\n : this._context.dates.lastPicked\n ? this._context.dates.lastPicked.clone\n : void 0,\n } as HideEvent);\n this._isVisible = false;\n }\n\n document.removeEventListener('click', this._documentClickEvent);\n }\n\n /**\n * Toggles the picker's open state. Fires a show/hide event depending.\n */\n toggle() {\n return this._isVisible ? this.hide() : this.show();\n }\n\n /**\n * Removes document and data-action click listener and reset the widget\n * @private\n */\n _dispose() {\n document.removeEventListener('click', this._documentClickEvent);\n if (!this.widget) return;\n this.widget\n .querySelectorAll('[data-action]')\n .forEach((element) =>\n element.removeEventListener('click', this._actionsClickEvent)\n );\n this.widget.parentNode.removeChild(this.widget);\n this._widget = undefined;\n }\n\n /**\n * Builds the widgets html template.\n * @private\n */\n private _buildWidget(): HTMLElement {\n const template = document.createElement('div');\n template.classList.add(Namespace.css.widget);\n\n const dateView = document.createElement('div');\n dateView.classList.add(Namespace.css.dateContainer);\n dateView.append(\n this._headTemplate,\n this._decadeDisplay._picker,\n this._yearDisplay._picker,\n this._monthDisplay._picker,\n this._dateDisplay._picker\n );\n\n const timeView = document.createElement('div');\n timeView.classList.add(Namespace.css.timeContainer);\n timeView.appendChild(this._timeDisplay._picker);\n timeView.appendChild(this._hourDisplay._picker);\n timeView.appendChild(this._minuteDisplay._picker);\n timeView.appendChild(this._secondDisplay._picker);\n\n const toolbar = document.createElement('div');\n toolbar.classList.add(Namespace.css.toolbar);\n toolbar.append(...this._toolbar);\n\n if (this._context._options.display.inline) {\n template.classList.add(Namespace.css.inline);\n }\n\n if (this._context._options.display.calendarWeeks) {\n template.classList.add('calendarWeeks');\n }\n\n if (\n this._context._options.display.sideBySide &&\n this._hasDate &&\n this._hasTime\n ) {\n template.classList.add(Namespace.css.sideBySide);\n if (this._context._options.display.toolbarPlacement === 'top') {\n template.appendChild(toolbar);\n }\n const row = document.createElement('div');\n row.classList.add('td-row');\n dateView.classList.add('td-half');\n timeView.classList.add('td-half');\n\n row.appendChild(dateView);\n row.appendChild(timeView);\n template.appendChild(row);\n if (this._context._options.display.toolbarPlacement === 'bottom') {\n template.appendChild(toolbar);\n }\n this._widget = template;\n return;\n }\n\n if (this._context._options.display.toolbarPlacement === 'top') {\n template.appendChild(toolbar);\n }\n\n if (this._hasDate) {\n if (this._hasTime) {\n dateView.classList.add(Namespace.css.collapse);\n if (this._context._options.display.viewMode !== 'clock')\n dateView.classList.add(Namespace.css.show);\n }\n template.appendChild(dateView);\n }\n\n if (this._hasTime) {\n if (this._hasDate) {\n timeView.classList.add(Namespace.css.collapse);\n if (this._context._options.display.viewMode === 'clock')\n timeView.classList.add(Namespace.css.show);\n }\n template.appendChild(timeView);\n }\n\n if (this._context._options.display.toolbarPlacement === 'bottom') {\n template.appendChild(toolbar);\n }\n\n const arrow = document.createElement('div');\n arrow.classList.add('arrow');\n arrow.setAttribute('data-popper-arrow', '');\n template.appendChild(arrow);\n\n this._widget = template;\n }\n\n /**\n * Returns true if the hours, minutes, or seconds component is turned on\n */\n get _hasTime(): boolean {\n return (\n this._context._options.display.components.clock &&\n (this._context._options.display.components.hours ||\n this._context._options.display.components.minutes ||\n this._context._options.display.components.seconds)\n );\n }\n\n /**\n * Returns true if the year, month, or date component is turned on\n */\n get _hasDate(): boolean {\n return (\n this._context._options.display.components.calendar &&\n (this._context._options.display.components.year ||\n this._context._options.display.components.month ||\n this._context._options.display.components.date)\n );\n }\n\n /**\n * Get the toolbar html based on options like buttons.today\n * @private\n */\n get _toolbar(): HTMLElement[] {\n const toolbar = [];\n\n if (this._context._options.display.buttons.today) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.today);\n div.setAttribute('title', this._context._options.localization.today);\n\n div.appendChild(\n this._iconTag(this._context._options.display.icons.today)\n );\n toolbar.push(div);\n }\n if (\n !this._context._options.display.sideBySide &&\n this._hasDate &&\n this._hasTime\n ) {\n let title, icon;\n if (this._context._options.display.viewMode === 'clock') {\n title = this._context._options.localization.selectDate;\n icon = this._context._options.display.icons.date;\n } else {\n title = this._context._options.localization.selectTime;\n icon = this._context._options.display.icons.time;\n }\n\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.togglePicker);\n div.setAttribute('title', title);\n\n div.appendChild(this._iconTag(icon));\n toolbar.push(div);\n }\n if (this._context._options.display.buttons.clear) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.clear);\n div.setAttribute('title', this._context._options.localization.clear);\n\n div.appendChild(\n this._iconTag(this._context._options.display.icons.clear)\n );\n toolbar.push(div);\n }\n if (this._context._options.display.buttons.close) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.close);\n div.setAttribute('title', this._context._options.localization.close);\n\n div.appendChild(\n this._iconTag(this._context._options.display.icons.close)\n );\n toolbar.push(div);\n }\n\n return toolbar;\n }\n\n /***\n * Builds the base header template with next and previous icons\n * @private\n */\n get _headTemplate(): HTMLElement {\n const calendarHeader = document.createElement('div');\n calendarHeader.classList.add(Namespace.css.calendarHeader);\n\n const previous = document.createElement('div');\n previous.classList.add(Namespace.css.previous);\n previous.setAttribute('data-action', ActionTypes.previous);\n previous.appendChild(\n this._iconTag(this._context._options.display.icons.previous)\n );\n\n const switcher = document.createElement('div');\n switcher.classList.add(Namespace.css.switch);\n switcher.setAttribute('data-action', ActionTypes.pickerSwitch);\n\n const next = document.createElement('div');\n next.classList.add(Namespace.css.next);\n next.setAttribute('data-action', ActionTypes.next);\n next.appendChild(this._iconTag(this._context._options.display.icons.next));\n\n calendarHeader.append(previous, switcher, next);\n return calendarHeader;\n }\n\n /**\n * Builds an icon tag as either an ``\n * or with icons.type is `sprites` then an svg tag instead\n * @param iconClass\n * @private\n */\n _iconTag(iconClass: string): HTMLElement {\n if (this._context._options.display.icons.type === 'sprites') {\n const svg = document.createElement('svg');\n svg.innerHTML = ``;\n return svg;\n }\n const icon = document.createElement('i');\n DOMTokenList.prototype.add.apply(icon.classList, iconClass.split(' '));\n return icon;\n }\n\n /**\n * A document click event to hide the widget if click is outside\n * @private\n * @param e MouseEvent\n */\n private _documentClickEvent = (e: MouseEvent) => {\n if (this._context._options.debug || (window as any).debug) return;\n\n if (\n this._isVisible &&\n !e.composedPath().includes(this.widget) && // click inside the widget\n !e.composedPath()?.includes(this._context._element) // click on the element\n ) {\n this.hide();\n }\n };\n\n /**\n * Click event for any action like selecting a date\n * @param e MouseEvent\n * @private\n */\n private _actionsClickEvent = (e: MouseEvent) => {\n this._context._action.do(e);\n };\n\n /**\n * Causes the widget to get rebuilt on next show. If the picker is already open\n * then hide and reshow it.\n * @private\n */\n _rebuild() {\n const wasVisible = this._isVisible;\n if (wasVisible) this.hide();\n this._dispose();\n if (wasVisible) {\n this.show();\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Dates from './dates';\n\n/**\n * Main class for date validation rules based on the options provided.\n */\nexport default class Validation {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Checks to see if the target date is valid based on the rules provided in the options.\n * Granularity can be provide to chek portions of the date instead of the whole.\n * @param targetDate\n * @param granularity\n */\n isValid(targetDate: DateTime, granularity?: Unit): boolean {\n if (\n this._context._options.restrictions.disabledDates.length > 0 &&\n this._isInDisabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledDates.length > 0 &&\n !this._isInEnabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.daysOfWeekDisabled?.length > 0 &&\n this._context._options.restrictions.daysOfWeekDisabled.indexOf(\n targetDate.weekDay\n ) !== -1\n ) {\n return false;\n }\n\n if (\n this._context._options.restrictions.minDate &&\n targetDate.isBefore(\n this._context._options.restrictions.minDate,\n granularity\n )\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.maxDate &&\n targetDate.isAfter(\n this._context._options.restrictions.maxDate,\n granularity\n )\n ) {\n return false;\n }\n\n if (\n granularity === Unit.hours ||\n granularity === Unit.minutes ||\n granularity === Unit.seconds\n ) {\n if (\n this._context._options.restrictions.disabledHours.length > 0 &&\n this._isInDisabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledHours.length > 0 &&\n !this._isInEnabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.disabledTimeIntervals.length > 0\n ) {\n for (\n let i = 0;\n i < this._context._options.restrictions.disabledTimeIntervals.length;\n i++\n ) {\n if (\n targetDate.isBetween(\n this._context._options.restrictions.disabledTimeIntervals[i].from,\n this._context._options.restrictions.disabledTimeIntervals[i].to\n )\n )\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Checks to see if the disabledDates option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInDisabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledDates ||\n this._context._options.restrictions.disabledDates.length === 0\n )\n return false;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.disabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the enabledDates option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInEnabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledDates ||\n this._context._options.restrictions.enabledDates.length === 0\n )\n return true;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.enabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the disabledHours option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInDisabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledHours ||\n this._context._options.restrictions.disabledHours.length === 0\n )\n return false;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.disabledHours.find(\n (x) => x === formattedDate\n );\n }\n\n /**\n * Checks to see if the enabledHours option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInEnabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledHours ||\n this._context._options.restrictions.enabledHours.length === 0\n )\n return true;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.enabledHours.find(\n (x) => x === formattedDate\n );\n }\n}\n","import Display from './display/index';\nimport Validation from './validation';\nimport Dates from './dates';\nimport Actions, { ActionTypes } from './actions';\nimport { DatePickerModes, DefaultOptions } from './conts';\nimport { DateTime, DateTimeFormatOptions, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options, { OptionConverter } from './options';\nimport {\n BaseEvent,\n ChangeEvent,\n ViewUpdateEvent,\n FailEvent,\n} from './event-types';\n\n/**\n * A robust and powerful date/time picker component.\n */\nclass TempusDominus {\n dates: Dates;\n\n _options: Options;\n _currentViewMode = 0;\n _subscribers: { [key: string]: ((event: any) => {})[] } = {};\n _element: HTMLElement;\n _input: HTMLInputElement;\n _unset: boolean;\n _minViewModeNumber = 0;\n _display: Display;\n _validation: Validation;\n _action: Actions;\n private _isDisabled = false;\n private _notifyChangeEventContext = 0;\n private _toggle: HTMLElement;\n private _currentPromptTimeTimeout: any;\n\n constructor(element: HTMLElement, options: Options = {} as Options) {\n if (!element) {\n Namespace.errorMessages.mustProvideElement;\n }\n this._element = element;\n this._options = this._initializeOptions(options, DefaultOptions, true);\n this._viewDate.setLocale(this._options.localization.locale);\n this._unset = true;\n\n this._display = new Display(this);\n this._validation = new Validation(this);\n this.dates = new Dates(this);\n this._action = new Actions(this);\n\n this._initializeInput();\n this._initializeToggle();\n\n if (this._options.display.inline) this._display.show();\n }\n\n _viewDate = new DateTime();\n\n get viewDate() {\n return this._viewDate;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Update the picker options. If `reset` is provide `options` will be merged with DefaultOptions instead.\n * @param options\n * @param reset\n * @public\n */\n updateOptions(options, reset = false): void {\n if (reset) this._options = this._initializeOptions(options, DefaultOptions);\n else this._options = this._initializeOptions(options, this._options);\n this._display._rebuild();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Toggles the picker open or closed. If the picker is disabled, nothing will happen.\n * @public\n */\n toggle(): void {\n if (this._isDisabled) return;\n this._display.toggle();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Shows the picker unless the picker is disabled.\n * @public\n */\n show(): void {\n if (this._isDisabled) return;\n this._display.show();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker unless the picker is disabled.\n * @public\n */\n hide(): void {\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Disables the picker and the target input field.\n * @public\n */\n disable(): void {\n this._isDisabled = true;\n // todo this might be undesired. If a dev disables the input field to\n // only allow using the picker, this will break that.\n this._input?.setAttribute('disabled', 'disabled');\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Enables the picker and the target input field.\n * @public\n */\n enable(): void {\n this._isDisabled = false;\n this._input?.removeAttribute('disabled');\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Clears all the selected dates\n * @public\n */\n clear(): void {\n this.dates.clear();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Allows for a direct subscription to picker events, without having to use addEventListener on the element.\n * @param eventTypes See Namespace.Events\n * @param callbacks Function to call when event is triggered\n * @public\n */\n subscribe(\n eventTypes: string | string[],\n callbacks: (event: any) => void | ((event: any) => void)[]\n ): { unsubscribe: void }[] {\n if (typeof eventTypes === 'string') {\n eventTypes = [eventTypes];\n }\n let callBackArray = [];\n if (!Array.isArray(callbacks)) {\n callBackArray = [callbacks];\n } else {\n callBackArray = callbacks;\n }\n\n if (eventTypes.length !== callBackArray.length) {\n Namespace.errorMessages.subscribeMismatch;\n }\n\n const returnArray = [];\n\n for (let i = 0; i < eventTypes.length; i++) {\n const eventType = eventTypes[i];\n if (!Array.isArray(this._subscribers[eventType])) {\n this._subscribers[eventType] = [];\n }\n\n this._subscribers[eventType].push(callBackArray[i]);\n\n returnArray.push({\n unsubscribe: this._unsubscribe.bind(\n this,\n eventType,\n this._subscribers[eventType].length - 1\n ),\n });\n\n if (eventTypes.length === 1) {\n return returnArray[0];\n }\n }\n\n return returnArray;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker and removes event listeners\n */\n dispose() {\n this._display.hide();\n // this will clear the document click event listener\n this._display._dispose();\n this._input?.removeEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input?.removeEventListener('click', this._toggleClickEvent);\n }\n this._toggle.removeEventListener('click', this._toggleClickEvent);\n this._subscribers = {};\n }\n\n /**\n * Triggers an event like ChangeEvent when the picker has updated the value\n * of a selected date.\n * @param event Accepts a BaseEvent object.\n * @private\n */\n _triggerEvent(event: BaseEvent) {\n // checking hasOwnProperty because the BasicEvent also falls through here otherwise\n if ((event as ChangeEvent) && event.hasOwnProperty('date')) {\n const { date, oldDate, isClear } = event as ChangeEvent;\n // this was to prevent a max call stack error\n // https://github.com/tempusdominus/core/commit/15a280507f5277b31b0b3319ab1edc7c19a000fb\n // todo see if this is still needed or if there's a cleaner way\n this._notifyChangeEventContext++;\n if (\n (date && oldDate && date.isSame(oldDate)) ||\n (!isClear && !date && !oldDate) ||\n this._notifyChangeEventContext > 1\n ) {\n this._notifyChangeEventContext = 0;\n return;\n }\n this._handleAfterChangeEvent(event as ChangeEvent);\n }\n\n this._element.dispatchEvent(\n new CustomEvent(event.type, { detail: event as any })\n );\n\n if ((window as any).jQuery) {\n const $ = (window as any).jQuery;\n $(this._element).trigger(event);\n }\n\n const publish = () => {\n // return if event is not subscribed\n if (!Array.isArray(this._subscribers[event.type])) {\n return;\n }\n\n // Trigger callback for each subscriber\n this._subscribers[event.type].forEach((callback) => {\n callback(event);\n });\n };\n\n publish();\n\n this._notifyChangeEventContext = 0;\n }\n\n /**\n * Fires a ViewUpdate event when, for example, the month view is changed.\n * @param {Unit} unit\n * @private\n */\n _viewUpdate(unit: Unit) {\n this._triggerEvent({\n type: Namespace.events.update,\n change: unit,\n viewDate: this._viewDate.clone,\n } as ViewUpdateEvent);\n }\n\n private _unsubscribe(eventName, index) {\n this._subscribers[eventName].splice(index, 1);\n }\n\n /**\n * Merges two Option objects together and validates options type\n * @param config new Options\n * @param mergeTo Options to merge into\n * @param includeDataset When true, the elements data-td attributes will be included in the\n * @private\n */\n private _initializeOptions(\n config: Options,\n mergeTo: Options,\n includeDataset = false\n ): Options {\n config = OptionConverter._mergeOptions(config, mergeTo);\n if (includeDataset)\n config = OptionConverter._dataToOptions(this._element, config);\n\n OptionConverter._validateConflcits(config);\n\n config.viewDate = config.viewDate.setLocale(config.localization.locale);\n\n if (!this._viewDate.isSame(config.viewDate)) {\n this._viewDate = config.viewDate;\n }\n\n /**\n * Sets the minimum view allowed by the picker. For example the case of only\n * allowing year and month to be selected but not date.\n */\n if (config.display.components.year) {\n this._minViewModeNumber = 2;\n }\n if (config.display.components.month) {\n this._minViewModeNumber = 1;\n }\n if (config.display.components.date) {\n this._minViewModeNumber = 0;\n }\n\n this._currentViewMode = Math.max(\n this._minViewModeNumber,\n this._currentViewMode\n );\n\n // Update view mode if needed\n if (\n DatePickerModes[this._currentViewMode].name !== config.display.viewMode\n ) {\n this._currentViewMode = Math.max(\n DatePickerModes.findIndex((x) => x.name === config.display.viewMode),\n this._minViewModeNumber\n );\n }\n\n // defaults the input format based on the components enabled\n if (config.hooks.inputFormat === undefined) {\n const components = config.display.components;\n config.hooks.inputFormat = (_, date: DateTime) => {\n return date.format({\n year: components.calendar && components.year ? 'numeric' : undefined,\n month:\n components.calendar && components.month ? '2-digit' : undefined,\n day: components.calendar && components.date ? '2-digit' : undefined,\n hour:\n components.clock && components.hours\n ? components.useTwentyfourHour\n ? '2-digit'\n : 'numeric'\n : undefined,\n minute:\n components.clock && components.minutes ? '2-digit' : undefined,\n second:\n components.clock && components.seconds ? '2-digit' : undefined,\n hour12: !components.useTwentyfourHour,\n });\n };\n }\n\n if (this._display?.isVisible) {\n this._display._update('all');\n }\n\n return config;\n }\n\n /**\n * Checks if an input field is being used, attempts to locate one and sets an\n * event listener if found.\n * @private\n */\n private _initializeInput() {\n\n if (this._element.tagName == 'INPUT') {\n this._input = this._element as HTMLInputElement;\n } else {\n let query = this._element.dataset.tdTargetInput;\n if (query == undefined || query == 'nearest') {\n this._input = this._element.querySelector('input');\n } else {\n this._input = this._element.querySelector(query);\n }\n }\n\n if (!this._input) return;\n\n this._input.addEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input.addEventListener('click', this._toggleClickEvent);\n }\n\n if (this._input.value) {\n this._inputChangeEvent();\n }\n }\n\n /**\n * Attempts to locate a toggle for the picker and sets an event listener\n * @private\n */\n private _initializeToggle() {\n if (this._options.display.inline) return;\n let query = this._element.dataset.tdTargetToggle;\n if (query == 'nearest') {\n query = '[data-td-toggle=\"datetimepicker\"]';\n }\n this._toggle =\n query == undefined ? this._element : this._element.querySelector(query);\n this._toggle.addEventListener('click', this._toggleClickEvent);\n }\n\n /**\n * If the option is enabled this will render the clock view after a date pick.\n * @param e change event\n * @private\n */\n private _handleAfterChangeEvent(e: ChangeEvent) {\n if (\n // options is disabled\n !this._options.promptTimeOnDateChange ||\n this._options.display.inline ||\n this._options.display.sideBySide ||\n // time is disabled\n !this._display._hasTime ||\n // clock component is already showing\n this._display.widget\n ?.getElementsByClassName(Namespace.css.show)[0]\n .classList.contains(Namespace.css.timeContainer)\n )\n return;\n\n // First time ever. If useCurrent option is set to true (default), do nothing\n // because the first date is selected automatically.\n // or date didn't change (time did) or date changed because time did.\n if (\n (!e.oldDate && this._options.useCurrent) ||\n (e.oldDate && e.date?.isSame(e.oldDate))\n ) {\n return;\n }\n\n clearTimeout(this._currentPromptTimeTimeout);\n this._currentPromptTimeTimeout = setTimeout(() => {\n if (this._display.widget) {\n this._action.do(\n {\n currentTarget: this._display.widget.querySelector(\n `.${Namespace.css.switch} div`\n ),\n },\n ActionTypes.togglePicker\n );\n }\n }, this._options.promptTimeOnDateChangeTransitionDelay);\n }\n\n /**\n * Event for when the input field changes. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _inputChangeEvent = () => {\n const setViewDate = () => {\n if (this.dates.lastPicked) this._viewDate = this.dates.lastPicked;\n };\n\n const value = this._input.value;\n if (this._options.multipleDates) {\n try {\n const valueSplit = value.split(this._options.multipleDatesSeparator);\n for (let i = 0; i < valueSplit.length; i++) {\n if (this._options.hooks.inputParse) {\n this.dates.set(\n this._options.hooks.inputParse(this, valueSplit[i]),\n i,\n 'input'\n );\n } else {\n this.dates.set(valueSplit[i], i, 'input');\n }\n }\n setViewDate();\n } catch {\n console.warn(\n 'TD: Something went wrong trying to set the multidate values from the input field.'\n );\n }\n } else {\n if (this._options.hooks.inputParse) {\n this.dates.set(this._options.hooks.inputParse(this, value), 0, 'input');\n } else {\n this.dates.set(value, 0, 'input');\n }\n setViewDate();\n }\n };\n\n /**\n * Event for when the toggle is clicked. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _toggleClickEvent = () => {\n this.toggle();\n };\n}\n\nexport {\n TempusDominus,\n Namespace,\n DefaultOptions,\n DateTime,\n Options,\n Unit,\n DateTimeFormatOptions,\n};\n"],"names":["SecondDisplay"],"mappings":"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"} \ No newline at end of file diff --git a/dist/js/tempus-dominus.js b/dist/js/tempus-dominus.js index 828cb7567..bee2e455c 100644 --- a/dist/js/tempus-dominus.js +++ b/dist/js/tempus-dominus.js @@ -1060,7 +1060,7 @@ } break; case ActionTypes.selectSecond: - lastPicked.seconds = +currentTarget.innerText; + lastPicked.seconds = +currentTarget.dataset.value; this._context.dates._setValue(lastPicked, this._context.dates.lastPickedIndex); if (this._context._options.display.components.useTwentyfourHour && !this._context._options.display.keepOpen && @@ -1537,7 +1537,8 @@ } path += `.${key}`; copyTo[key] = processKey(key, value, providedType, defaultType); - if (typeof defaultOptionValue !== 'object' || ignoreProperties.includes(key)) { + if (typeof defaultOptionValue !== 'object' || + ignoreProperties.includes(key)) { path = path.substring(0, path.lastIndexOf(`.${key}`)); return; } @@ -1816,20 +1817,22 @@ if (!oldDate && !this._context._unset && noIndex && isClear) { oldDate = this.lastPicked; } - if (target && (oldDate === null || oldDate === void 0 ? void 0 : oldDate.isSame(target))) - return; const updateInput = () => { if (!this._context._input) return; - let newValue = this._context._options.hooks.inputFormat(target); + let newValue = this._context._options.hooks.inputFormat(this._context, target); if (this._context._options.multipleDates) { newValue = this._dates - .map((d) => this._context._options.hooks.inputFormat(d)) + .map((d) => this._context._options.hooks.inputFormat(this._context, d)) .join(this._context._options.multipleDatesSeparator); } if (this._context._input.value != newValue) this._context._input.value = newValue; }; + if (target && (oldDate === null || oldDate === void 0 ? void 0 : oldDate.isSame(target))) { + updateInput(); + return; + } // case of calling setValue(null) if (!target) { if (!this._context._options.multipleDates || @@ -2399,9 +2402,7 @@ */ this._documentClickEvent = (e) => { var _a; - if (this._context._options.display.keepOpen || - this._context._options.debug || - window.debug) + if (this._context._options.debug || window.debug) return; if (this._isVisible && !e.composedPath().includes(this.widget) && // click inside the widget @@ -2531,16 +2532,11 @@ if (!this._context._options.display.inline) { document.body.appendChild(this.widget); this._popperInstance = core.createPopper(this._context._element, this.widget, { - modifiers: [ - /* { - name: 'offset', - options: { - offset: [2, 8], - }, - },*/ - { name: 'eventListeners', enabled: true }, - ], - placement: 'bottom-start', + modifiers: [{ name: 'eventListeners', enabled: true }], + //#2400 + placement: document.documentElement.dir === 'rtl' + ? 'bottom-end' + : 'bottom-start', }); } else { @@ -3012,7 +3008,7 @@ const valueSplit = value.split(this._options.multipleDatesSeparator); for (let i = 0; i < valueSplit.length; i++) { if (this._options.hooks.inputParse) { - this.dates.set(this._options.hooks.inputParse(valueSplit[i]), i, 'input'); + this.dates.set(this._options.hooks.inputParse(this, valueSplit[i]), i, 'input'); } else { this.dates.set(valueSplit[i], i, 'input'); @@ -3026,7 +3022,7 @@ } else { if (this._options.hooks.inputParse) { - this.dates.set(this._options.hooks.inputParse(value), 0, 'input'); + this.dates.set(this._options.hooks.inputParse(this, value), 0, 'input'); } else { this.dates.set(value, 0, 'input'); @@ -3280,7 +3276,7 @@ // defaults the input format based on the components enabled if (config.hooks.inputFormat === undefined) { const components = config.display.components; - config.hooks.inputFormat = (date) => { + config.hooks.inputFormat = (_, date) => { return date.format({ year: components.calendar && components.year ? 'numeric' : undefined, month: components.calendar && components.month ? '2-digit' : undefined, diff --git a/dist/js/tempus-dominus.js.map b/dist/js/tempus-dominus.js.map index 1d8e3abe1..e768a0ca5 100644 --- a/dist/js/tempus-dominus.js.map +++ b/dist/js/tempus-dominus.js.map @@ -1 +1 @@ -{"version":3,"file":"tempus-dominus.js","sources":["../../src/js/datetime.ts","../../src/js/errors.ts","../../src/js/namespace.ts","../../src/js/conts.ts","../../src/js/display/collapse.ts","../../src/js/actions.ts","../../src/js/display/calendar/date-display.ts","../../src/js/display/calendar/month-display.ts","../../src/js/options.ts","../../src/js/dates.ts","../../src/js/display/calendar/year-display.ts","../../src/js/display/calendar/decade-display.ts","../../src/js/display/time/time-display.ts","../../src/js/display/time/hour-display.ts","../../src/js/display/time/minute-display.ts","../../src/js/display/time/second-display.ts","../../src/js/display/index.ts","../../src/js/validation.ts","../../src/js/tempus-dominus.ts"],"sourcesContent":["export enum Unit {\r\n seconds = 'seconds',\r\n minutes = 'minutes',\r\n hours = 'hours',\r\n date = 'date',\r\n month = 'month',\r\n year = 'year',\r\n}\r\n\r\nexport interface DateTimeFormatOptions extends Intl.DateTimeFormatOptions {\r\n timeStyle?: 'short' | 'medium' | 'long';\r\n dateStyle?: 'short' | 'medium' | 'long' | 'full';\r\n}\r\n\r\n/**\r\n * For the most part this object behaves exactly the same way\r\n * as the native Date object with a little extra spice.\r\n */\r\nexport class DateTime extends Date {\r\n /**\r\n * Used with Intl.DateTimeFormat\r\n */\r\n locale = 'default';\r\n\r\n /**\r\n * Chainable way to set the {@link locale}\r\n * @param value\r\n */\r\n setLocale(value: string): this {\r\n this.locale = value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Converts a plain JS date object to a DateTime object.\r\n * Doing this allows access to format, etc.\r\n * @param date\r\n */\r\n static convert(date: Date): DateTime {\r\n if (!date) throw `A date is required`;\r\n return new DateTime(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate(),\r\n date.getHours(),\r\n date.getMinutes(),\r\n date.getSeconds(),\r\n date.getMilliseconds()\r\n );\r\n }\r\n\r\n /**\r\n * Native date manipulations are not pure functions. This function creates a duplicate of the DateTime object.\r\n */\r\n get clone() {\r\n return new DateTime(\r\n this.year,\r\n this.month,\r\n this.date,\r\n this.hours,\r\n this.minutes,\r\n this.seconds,\r\n this.getMilliseconds()\r\n ).setLocale(this.locale);\r\n }\r\n\r\n /**\r\n * Sets the current date to the start of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).startOf('month')\r\n * would return April 1, 2021, 12:00:00.000 AM (midnight)\r\n * @param unit\r\n */\r\n startOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(0);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(0, 0);\r\n break;\r\n case 'hours':\r\n this.setMinutes(0, 0, 0);\r\n break;\r\n case 'date':\r\n this.setHours(0, 0, 0, 0);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(0 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.startOf(Unit.date);\r\n this.setDate(1);\r\n break;\r\n case 'year':\r\n this.startOf(Unit.date);\r\n this.setMonth(0, 1);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the current date to the end of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).endOf('month')\r\n * would return April 30, 2021, 11:59:59.999 PM\r\n * @param unit\r\n */\r\n endOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(999);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(59, 999);\r\n break;\r\n case 'hours':\r\n this.setMinutes(59, 59, 999);\r\n break;\r\n case 'date':\r\n this.setHours(23, 59, 59, 999);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(6 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.month);\r\n this.setDate(0);\r\n break;\r\n case 'year':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.year);\r\n this.setDate(0);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Change a {@link unit} value. Value can be positive or negative\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).manipulate(1, 'month')\r\n * would return May 30, 2021, 11:45:32.984 AM\r\n * @param value A positive or negative number\r\n * @param unit\r\n */\r\n manipulate(value: number, unit: Unit): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n this[unit] += value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns a string format.\r\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat\r\n * for valid templates and locale objects\r\n * @param template An object. Uses browser defaults otherwise.\r\n * @param locale Can be a string or an array of strings. Uses browser defaults otherwise.\r\n */\r\n format(template: DateTimeFormatOptions, locale = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, template).format(this);\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is before this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isBefore(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() < compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() < compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is after this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isAfter(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() > compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() > compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is same this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isSame(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() === compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n compare = DateTime.convert(compare);\r\n return (\r\n this.clone.startOf(unit).valueOf() === compare.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Check if this is between two other DateTimes, optionally looking at unit scale. The match is exclusive.\r\n * @param left\r\n * @param right\r\n * @param unit.\r\n * @param inclusivity. A [ indicates inclusion of a value. A ( indicates exclusion.\r\n * If the inclusivity parameter is used, both indicators must be passed.\r\n */\r\n isBetween(\r\n left: DateTime,\r\n right: DateTime,\r\n unit?: Unit,\r\n inclusivity: '()' | '[]' | '(]' | '[)' = '()'\r\n ): boolean {\r\n if (unit && this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n const leftInclusivity = inclusivity[0] === '(';\r\n const rightInclusivity = inclusivity[1] === ')';\r\n\r\n return (\r\n ((leftInclusivity\r\n ? this.isAfter(left, unit)\r\n : !this.isBefore(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isBefore(right, unit)\r\n : !this.isAfter(right, unit))) ||\r\n ((leftInclusivity\r\n ? this.isBefore(left, unit)\r\n : !this.isAfter(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isAfter(right, unit)\r\n : !this.isBefore(right, unit)))\r\n );\r\n }\r\n\r\n /**\r\n * Returns flattened object of the date. Does not include literals\r\n * @param locale\r\n * @param template\r\n */\r\n parts(\r\n locale = this.locale,\r\n template: any = { dateStyle: 'full', timeStyle: 'long' }\r\n ) {\r\n const parts = {};\r\n new Intl.DateTimeFormat(locale, template)\r\n .formatToParts(this)\r\n .filter((x) => x.type !== 'literal')\r\n .forEach((x) => (parts[x.type] = x.value));\r\n return parts;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getSeconds()\r\n */\r\n get seconds(): number {\r\n return this.getSeconds();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setSeconds()\r\n */\r\n set seconds(value: number) {\r\n this.setSeconds(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get secondsFormatted(): string {\r\n return this.format({ second: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMinutes()\r\n */\r\n get minutes(): number {\r\n return this.getMinutes();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMinutes()\r\n */\r\n set minutes(value: number) {\r\n this.setMinutes(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get minutesFormatted(): string {\r\n return this.format({ minute: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getHours()\r\n */\r\n get hours(): number {\r\n return this.getHours();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setHours()\r\n */\r\n set hours(value: number) {\r\n this.setHours(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get hoursFormatted(): string {\r\n return this.format({ hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Returns two digit hours but in twelve hour mode e.g. 13 -> 1\r\n */\r\n get twelveHoursFormatted(): string {\r\n return this.format({ hour12: true, hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Get the meridiem of the date. E.g. AM or PM.\r\n * If the {@link locale} provides a \"dayPeriod\" then this will be returned,\r\n * otherwise it will return AM or PM.\r\n * @param locale\r\n */\r\n meridiem(locale: string = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, {\r\n hour: 'numeric',\r\n hour12: true,\r\n } as any)\r\n .formatToParts(this)\r\n .find((p) => p.type === 'dayPeriod')?.value;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDate()\r\n */\r\n get date(): number {\r\n return this.getDate();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setDate()\r\n */\r\n set date(value: number) {\r\n this.setDate(value);\r\n }\r\n\r\n /**\r\n * Return two digit date\r\n */\r\n get dateFormatted(): string {\r\n return this.date < 10 ? `0${this.date}` : `${this.date}`;\r\n }\r\n\r\n // https://github.com/you-dont-need/You-Dont-Need-Momentjs#week-of-year\r\n /**\r\n * Gets the week of the year\r\n */\r\n get week(): number {\r\n const startOfYear = new Date(this.year, 0, 1);\r\n startOfYear.setDate(\r\n startOfYear.getDate() + (1 - (startOfYear.getDay() % 7))\r\n );\r\n return Math.round((this.valueOf() - startOfYear.valueOf()) / 604800000) + 1;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDay()\r\n */\r\n get weekDay(): number {\r\n return this.getDay();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMonth()\r\n */\r\n get month(): number {\r\n return this.getMonth();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMonth()\r\n */\r\n set month(value: number) {\r\n this.setMonth(value);\r\n }\r\n\r\n /**\r\n * Return two digit, human expected month. E.g. January = 1, December = 12\r\n */\r\n get monthFormatted(): string {\r\n return this.month + 1 < 10 ? `0${this.month}` : `${this.month}`;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getFullYear()\r\n */\r\n get year(): number {\r\n return this.getFullYear();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setFullYear()\r\n */\r\n set year(value: number) {\r\n this.setFullYear(value);\r\n }\r\n}\r\n","import Namespace from './namespace';\n\nexport class TdError extends Error {\n code: number;\n}\n\nexport class ErrorMessages {\n private base = 'TD:';\n\n //#region out to console\n\n /**\n * Throws an error indicating that a key in the options object is invalid.\n * @param optionName\n */\n unexpectedOption(optionName: string) {\n const error = new TdError(\n `${this.base} Unexpected option: ${optionName} does not match a known option.`\n );\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error indicating that one more keys in the options object is invalid.\n * @param optionName\n */\n unexpectedOptions(optionName: string[]) {\n const error = new TdError(`${this.base}: ${optionName.join(', ')}`);\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error when an option is provide an unsupported value.\n * For example a value of 'cheese' for toolbarPlacement which only supports\n * 'top', 'bottom', 'default'.\n * @param optionName\n * @param badValue\n * @param validOptions\n */\n unexpectedOptionValue(\n optionName: string,\n badValue: string,\n validOptions: string[]\n ) {\n const error = new TdError(\n `${\n this.base\n } Unexpected option value: ${optionName} does not accept a value of \"${badValue}\". Valid values are: ${validOptions.join(\n ', '\n )}`\n );\n error.code = 2;\n throw error;\n }\n\n /**\n * Throws an error when an option value is the wrong type.\n * For example a string value was provided to multipleDates which only\n * supports true or false.\n * @param optionName\n * @param badType\n * @param expectedType\n */\n typeMismatch(optionName: string, badType: string, expectedType: string) {\n const error = new TdError(\n `${this.base} Mismatch types: ${optionName} has a type of ${badType} instead of the required ${expectedType}`\n );\n error.code = 3;\n throw error;\n }\n\n /**\n * Throws an error when an option value is outside of the expected range.\n * For example restrictions.daysOfWeekDisabled excepts a value between 0 and 6.\n * @param optionName\n * @param lower\n * @param upper\n */\n numbersOutOfRage(optionName: string, lower: number, upper: number) {\n const error = new TdError(\n `${this.base} ${optionName} expected an array of number between ${lower} and ${upper}.`\n );\n error.code = 4;\n throw error;\n }\n\n /**\n * Throws an error when a value for a date options couldn't be parsed. Either\n * the option was an invalide string or an invalid Date object.\n * @param optionName\n * @param date\n * @param soft If true, logs a warning instead of an error.\n */\n failedToParseDate(optionName: string, date: any, soft = false) {\n const error = new TdError(\n `${this.base} Could not correctly parse \"${date}\" to a date for ${optionName}.`\n );\n error.code = 5;\n if (!soft) throw error;\n console.warn(error);\n }\n\n /**\n * Throws when an element to attach to was not provided in the constructor.\n */\n mustProvideElement() {\n const error = new TdError(`${this.base} No element was provided.`);\n error.code = 6;\n throw error;\n }\n\n /**\n * Throws if providing an array for the events to subscribe method doesn't have\n * the same number of callbacks. E.g., subscribe([1,2], [1])\n */\n subscribeMismatch() {\n const error = new TdError(\n `${this.base} The subscribed events does not match the number of callbacks`\n );\n error.code = 7;\n throw error;\n }\n\n /**\n * Throws if the configuration has conflicting rules e.g. minDate is after maxDate\n */\n conflictingConfiguration(message?: string) {\n const error = new TdError(\n `${this.base} A configuration value conflicts with another rule. ${message}`\n );\n error.code = 8;\n throw error;\n }\n\n /**\n * Logs a warning if a date option value is provided as a string, instead of\n * a date/datetime object.\n */\n dateString() {\n console.warn(\n `${this.base} Using a string for date options is not recommended unless you specify an ISO string.`\n );\n }\n\n //#endregion\n\n //#region used with notify.error\n\n /**\n * Used with an Error Event type if the user selects a date that\n * fails restriction validation.\n */\n failedToSetInvalidDate = 'Failed to set invalid date';\n\n /**\n * Used with an Error Event type when a user changes the value of the\n * input field directly, and does not provide a valid date.\n */\n failedToParseInput = 'Failed parse input field';\n\n //#endregion\n}\n","import { ErrorMessages } from './errors';\n// this is not the way I want this to stay but nested classes seemed to blown up once its compiled.\nconst NAME = 'tempus-dominus',\n version = '6.0.0-alpha1',\n dataKey = 'td';\n\n/**\n * Events\n */\nclass Events {\n key = `.${dataKey}`;\n\n /**\n * Change event. Fired when the user selects a date.\n * See also EventTypes.ChangeEvent\n */\n change = `change${this.key}`;\n\n /**\n * Emit when the view changes for example from month view to the year view.\n * See also EventTypes.ViewUpdateEvent\n */\n update = `update${this.key}`;\n\n /**\n * Emits when a selected date or value from the input field fails to meet the provided validation rules.\n * See also EventTypes.FailEvent\n */\n error = `error${this.key}`;\n\n /**\n * Show event\n * @event Events#show\n */\n show = `show${this.key}`;\n\n /**\n * Hide event\n * @event Events#hide\n */\n hide = `hide${this.key}`;\n\n // blur and focus are used in the jQuery provider but are otherwise unused.\n // keyup/down will be used later for keybinding options\n\n blur = `blur${this.key}`;\n focus = `focus${this.key}`;\n keyup = `keyup${this.key}`;\n keydown = `keydown${this.key}`;\n}\n\nclass Css {\n /**\n * The outer element for the widget.\n */\n widget = `${NAME}-widget`;\n\n /**\n * Hold the previous, next and switcher divs\n */\n calendarHeader = 'calendar-header';\n\n /**\n * The element for the action to change the calendar view. E.g. month -> year.\n */\n switch = 'picker-switch';\n\n /**\n * The elements for all of the toolbar options\n */\n toolbar = 'toolbar';\n\n /**\n * Disables the hover and rounding affect.\n */\n noHighlight = 'no-highlight';\n\n /**\n * Applied to the widget element when the side by side option is in use.\n */\n sideBySide = 'timepicker-sbs';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> July\n */\n previous = 'previous';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> September\n */\n next = 'next';\n\n /**\n * Applied to any action that would violate any restriction options. ALso applied\n * to an input field if the disabled function is called.\n */\n disabled = 'disabled';\n\n /**\n * Applied to any date that is less than requested view,\n * e.g. the last day of the previous month.\n */\n old = 'old';\n\n /**\n * Applied to any date that is greater than of requested view,\n * e.g. the last day of the previous month.\n */\n new = 'new';\n\n /**\n * Applied to any date that is currently selected.\n */\n active = 'active';\n\n //#region date element\n\n /**\n * The outer most element for the calendar view.\n */\n dateContainer = 'date-container';\n\n /**\n * The outer most element for the decades view.\n */\n decadesContainer = `${this.dateContainer}-decades`;\n\n /**\n * Applied to elements within the decades container, e.g. 2020, 2030\n */\n decade = 'decade';\n\n /**\n * The outer most element for the years view.\n */\n yearsContainer = `${this.dateContainer}-years`;\n\n /**\n * Applied to elements within the years container, e.g. 2021, 2021\n */\n year = 'year';\n\n /**\n * The outer most element for the month view.\n */\n monthsContainer = `${this.dateContainer}-months`;\n\n /**\n * Applied to elements within the month container, e.g. January, February\n */\n month = 'month';\n\n /**\n * The outer most element for the calendar view.\n */\n daysContainer = `${this.dateContainer}-days`;\n\n /**\n * Applied to elements within the day container, e.g. 1, 2..31\n */\n day = 'day';\n\n /**\n * If display.calendarWeeks is enabled, a column displaying the week of year\n * is shown. This class is applied to each cell in that column.\n */\n calendarWeeks = 'cw';\n\n /**\n * Applied to the first row of the calendar view, e.g. Sunday, Monday\n */\n dayOfTheWeek = 'dow';\n\n /**\n * Applied to the current date on the calendar view.\n */\n today = 'today';\n\n /**\n * Applied to the locale's weekend dates on the calendar view, e.g. Sunday, Saturday\n */\n weekend = 'weekend';\n\n //#endregion\n\n //#region time element\n\n /**\n * The outer most element for all time related elements.\n */\n timeContainer = 'time-container';\n\n /**\n * Applied the separator columns between time elements, e.g. hour *:* minute *:* second\n */\n separator = 'separator';\n\n /**\n * The outer most element for the clock view.\n */\n clockContainer = `${this.timeContainer}-clock`;\n\n /**\n * The outer most element for the hours selection view.\n */\n hourContainer = `${this.timeContainer}-hour`;\n\n /**\n * The outer most element for the minutes selection view.\n */\n minuteContainer = `${this.timeContainer}-minute`;\n\n /**\n * The outer most element for the seconds selection view.\n */\n secondContainer = `${this.timeContainer}-second`;\n\n /**\n * Applied to each element in the hours selection view.\n */\n hour = 'hour';\n\n /**\n * Applied to each element in the minutes selection view.\n */\n minute = 'minute';\n\n /**\n * Applied to each element in the seconds selection view.\n */\n second = 'second';\n\n /**\n * Applied AM/PM toggle button.\n */\n toggleMeridiem = 'toggleMeridiem';\n\n //#endregion\n\n //#region collapse\n\n /**\n * Applied the element of the current view mode, e.g. calendar or clock.\n */\n show = 'show';\n\n /**\n * Applied to the currently showing view mode during a transition\n * between calendar and clock views\n */\n collapsing = 'td-collapsing';\n\n /**\n * Applied to the currently hidden view mode.\n */\n collapse = 'td-collapse';\n\n //#endregion\n\n /**\n * Applied to the widget when the option display.inline is enabled.\n */\n inline = 'inline';\n}\n\nexport default class Namespace {\n static NAME = NAME;\n // noinspection JSUnusedGlobalSymbols\n static version = version;\n static dataKey = dataKey;\n\n static events = new Events();\n\n static css = new Css();\n\n static errorMessages = new ErrorMessages();\n}\n","import { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options from './options';\n\nconst DefaultOptions: Options = {\n restrictions: {\n minDate: undefined,\n maxDate: undefined,\n disabledDates: [],\n enabledDates: [],\n daysOfWeekDisabled: [],\n disabledTimeIntervals: [],\n disabledHours: [],\n enabledHours: [],\n },\n display: {\n icons: {\n type: 'icons',\n time: 'fas fa-clock',\n date: 'fas fa-calendar',\n up: 'fas fa-arrow-up',\n down: 'fas fa-arrow-down',\n previous: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n today: 'fas fa-calendar-check',\n clear: 'fas fa-trash',\n close: 'fas fa-times',\n },\n sideBySide: false,\n calendarWeeks: false,\n viewMode: 'calendar',\n toolbarPlacement: 'bottom',\n keepOpen: false,\n buttons: {\n today: false,\n clear: false,\n close: false,\n },\n components: {\n calendar: true,\n date: true,\n month: true,\n year: true,\n decades: true,\n clock: true,\n hours: true,\n minutes: true,\n seconds: false,\n useTwentyfourHour: false,\n },\n inline: false,\n },\n stepping: 1,\n useCurrent: true,\n defaultDate: undefined,\n localization: {\n today: 'Go to today',\n clear: 'Clear selection',\n close: 'Close the picker',\n selectMonth: 'Select Month',\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n selectYear: 'Select Year',\n previousYear: 'Previous Year',\n nextYear: 'Next Year',\n selectDecade: 'Select Decade',\n previousDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n previousCentury: 'Previous Century',\n nextCentury: 'Next Century',\n pickHour: 'Pick Hour',\n incrementHour: 'Increment Hour',\n decrementHour: 'Decrement Hour',\n pickMinute: 'Pick Minute',\n incrementMinute: 'Increment Minute',\n decrementMinute: 'Decrement Minute',\n pickSecond: 'Pick Second',\n incrementSecond: 'Increment Second',\n decrementSecond: 'Decrement Second',\n toggleMeridiem: 'Toggle Meridiem',\n selectTime: 'Select Time',\n selectDate: 'Select Date',\n dayViewHeaderFormat: 'long',\n locale: 'default',\n },\n keepInvalid: false,\n debug: false,\n allowInputToggle: false,\n viewDate: new DateTime(),\n multipleDates: false,\n multipleDatesSeparator: '; ',\n promptTimeOnDateChange: false,\n promptTimeOnDateChangeTransitionDelay: 200,\n hooks: {\n inputParse: undefined,\n inputFormat: undefined,\n },\n};\n\nconst DatePickerModes: {\n name: string;\n className: string;\n unit: Unit;\n step: number;\n}[] = [\n {\n name: 'calendar',\n className: Namespace.css.daysContainer,\n unit: Unit.month,\n step: 1,\n },\n {\n name: 'months',\n className: Namespace.css.monthsContainer,\n unit: Unit.year,\n step: 1,\n },\n {\n name: 'years',\n className: Namespace.css.yearsContainer,\n unit: Unit.year,\n step: 10,\n },\n {\n name: 'decades',\n className: Namespace.css.decadesContainer,\n unit: Unit.year,\n step: 100,\n },\n];\n\nexport { DefaultOptions, DatePickerModes, Namespace };\n","import Namespace from '../namespace';\n\n/**\n * Provides a collapse functionality to the view changes\n */\nexport default class Collapse {\n private timeOut;\n\n /**\n * Flips the show/hide state of `target`\n * @param target html element to affect.\n */\n toggle(target: HTMLElement, callback = undefined) {\n if (target.classList.contains(Namespace.css.show)) {\n this.hide(target, callback);\n } else {\n this.show(target, callback);\n }\n }\n\n /**\n * If `target` is not already showing, then show after the animation.\n * @param target\n */\n show(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse, Namespace.css.show);\n target.style.height = '';\n this.timeOut = null;\n if (callback) callback();\n };\n\n target.style.height = '0';\n target.classList.remove(Namespace.css.collapse);\n target.classList.add(Namespace.css.collapsing);\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n target.style.height = `${target.scrollHeight}px`;\n }\n\n /**\n * If `target` is not already hidden, then hide after the animation.\n * @param target HTML Element\n */\n hide(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n !target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse);\n this.timeOut = null;\n };\n\n target.style.height = `${target.getBoundingClientRect()['height']}px`;\n\n const reflow = (element) => element.offsetHeight;\n\n reflow(target);\n\n target.classList.remove(Namespace.css.collapse, Namespace.css.show);\n target.classList.add(Namespace.css.collapsing);\n target.style.height = '';\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n }\n\n /**\n * Gets the transition duration from the `element` by getting css properties\n * `transition-duration` and `transition-delay`\n * @param element HTML Element\n */\n private getTransitionDurationFromElement = (element: HTMLElement) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } =\n window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) +\n Number.parseFloat(transitionDelay)) *\n 1000\n );\n };\n}\n","import { DatePickerModes } from './conts.js';\nimport { DateTime, Unit } from './datetime';\nimport { TempusDominus } from './tempus-dominus';\nimport Collapse from './display/collapse';\nimport Namespace from './namespace';\n\n/**\n *\n */\nexport default class Actions {\n private _context: TempusDominus;\n private collapse: Collapse;\n\n constructor(context: TempusDominus) {\n this._context = context;\n this.collapse = new Collapse();\n }\n\n /**\n * Performs the selected `action`. See ActionTypes\n * @param e This is normally a click event\n * @param action If not provided, then look for a [data-action]\n */\n do(e: any, action?: ActionTypes) {\n const currentTarget = e.currentTarget;\n if (currentTarget.classList.contains(Namespace.css.disabled)) return false;\n action = action || currentTarget.dataset.action;\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n /**\n * Common function to manipulate {@link lastPicked} by `unit`\n * @param unit\n * @param value Value to change by\n */\n const manipulateAndSet = (unit: Unit, value = 1) => {\n const newDate = lastPicked.manipulate(value, unit);\n if (this._context._validation.isValid(newDate, unit)) {\n this._context.dates._setValue(\n newDate,\n this._context.dates.lastPickedIndex\n );\n }\n };\n\n switch (action) {\n case ActionTypes.next:\n case ActionTypes.previous:\n const { unit, step } = DatePickerModes[this._context._currentViewMode];\n if (action === ActionTypes.next)\n this._context._viewDate.manipulate(step, unit);\n else this._context._viewDate.manipulate(step * -1, unit);\n this._context._viewUpdate(unit);\n\n this._context._display._showMode();\n break;\n case ActionTypes.pickerSwitch:\n this._context._display._showMode(1);\n this._context._viewUpdate(\n DatePickerModes[this._context._currentViewMode].unit\n );\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.selectMonth:\n case ActionTypes.selectYear:\n case ActionTypes.selectDecade:\n const value = +currentTarget.dataset.value;\n switch (action) {\n case ActionTypes.selectMonth:\n this._context._viewDate.month = value;\n this._context._viewUpdate(Unit.month);\n break;\n case ActionTypes.selectYear:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n case ActionTypes.selectDecade:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n }\n\n if (\n this._context._currentViewMode === this._context._minViewModeNumber\n ) {\n this._context.dates._setValue(\n this._context._viewDate,\n this._context.dates.lastPickedIndex\n );\n if (!this._context._options.display.inline) {\n this._context._display.hide();\n }\n } else {\n this._context._display._showMode(-1);\n }\n break;\n case ActionTypes.selectDay:\n const day = this._context._viewDate.clone;\n if (currentTarget.classList.contains(Namespace.css.old)) {\n day.manipulate(-1, Unit.month);\n }\n if (currentTarget.classList.contains(Namespace.css.new)) {\n day.manipulate(1, Unit.month);\n }\n\n day.date = +currentTarget.dataset.day;\n let index = 0;\n if (this._context._options.multipleDates) {\n index = this._context.dates.pickedIndex(day, Unit.date);\n if (index !== -1) {\n this._context.dates._setValue(null, index); //deselect multi-date\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex + 1\n );\n }\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex\n );\n }\n\n if (\n !this._context._display._hasTime &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline &&\n !this._context._options.multipleDates\n ) {\n this._context._display.hide();\n }\n break;\n case ActionTypes.selectHour:\n let hour = +currentTarget.dataset.value;\n if (\n lastPicked.hours >= 12 &&\n !this._context._options.display.components.useTwentyfourHour\n )\n hour += 12;\n lastPicked.hours = hour;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.minutes &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectMinute:\n lastPicked.minutes = +currentTarget.dataset.value;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.seconds &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectSecond:\n lastPicked.seconds = +currentTarget.innerText;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.incrementHours:\n manipulateAndSet(Unit.hours);\n break;\n case ActionTypes.incrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping);\n break;\n case ActionTypes.incrementSeconds:\n manipulateAndSet(Unit.seconds);\n break;\n case ActionTypes.decrementHours:\n manipulateAndSet(Unit.hours, -1);\n break;\n case ActionTypes.decrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping * -1);\n break;\n case ActionTypes.decrementSeconds:\n manipulateAndSet(Unit.seconds, -1);\n break;\n case ActionTypes.toggleMeridiem:\n manipulateAndSet(\n Unit.hours,\n this._context.dates.lastPicked.hours >= 12 ? -12 : 12\n );\n break;\n case ActionTypes.togglePicker:\n this._context._display.widget\n .querySelectorAll(\n `.${Namespace.css.dateContainer}, .${Namespace.css.timeContainer}`\n )\n .forEach((htmlElement: HTMLElement) =>\n this.collapse.toggle(htmlElement)\n );\n if (\n currentTarget.getAttribute('title') ===\n this._context._options.localization.selectDate\n ) {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectTime\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.time\n ).outerHTML;\n\n this._context._display._updateCalendarHeader();\n } else {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectDate\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.date\n ).outerHTML;\n this.do(e, ActionTypes.showClock);\n this._context._display._update('clock');\n }\n break;\n case ActionTypes.showClock:\n case ActionTypes.showHours:\n case ActionTypes.showMinutes:\n case ActionTypes.showSeconds:\n this._context._display.widget\n .querySelectorAll(`.${Namespace.css.timeContainer} > div`)\n .forEach(\n (htmlElement: HTMLElement) => (htmlElement.style.display = 'none')\n );\n\n let classToUse = '';\n switch (action) {\n case ActionTypes.showClock:\n classToUse = Namespace.css.clockContainer;\n this._context._display._update('clock');\n break;\n case ActionTypes.showHours:\n classToUse = Namespace.css.hourContainer;\n this._context._display._update(Unit.hours);\n break;\n case ActionTypes.showMinutes:\n classToUse = Namespace.css.minuteContainer;\n this._context._display._update(Unit.minutes);\n break;\n case ActionTypes.showSeconds:\n classToUse = Namespace.css.secondContainer;\n this._context._display._update(Unit.seconds);\n break;\n }\n\n ((\n this._context._display.widget.getElementsByClassName(classToUse)[0]\n )).style.display = 'grid';\n break;\n case ActionTypes.clear:\n this._context.dates._setValue(null);\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.close:\n this._context._display.hide();\n break;\n case ActionTypes.today:\n const today = new DateTime().setLocale(\n this._context._options.localization.locale\n );\n this._context._viewDate = today;\n if (this._context._validation.isValid(today, Unit.date))\n this._context.dates._setValue(\n today,\n this._context.dates.lastPickedIndex\n );\n break;\n }\n }\n}\n\nexport enum ActionTypes {\n next = 'next',\n previous = 'previous',\n pickerSwitch = 'pickerSwitch',\n selectMonth = 'selectMonth',\n selectYear = 'selectYear',\n selectDecade = 'selectDecade',\n selectDay = 'selectDay',\n selectHour = 'selectHour',\n selectMinute = 'selectMinute',\n selectSecond = 'selectSecond',\n incrementHours = 'incrementHours',\n incrementMinutes = 'incrementMinutes',\n incrementSeconds = 'incrementSeconds',\n decrementHours = 'decrementHours',\n decrementMinutes = 'decrementMinutes',\n decrementSeconds = 'decrementSeconds',\n toggleMeridiem = 'toggleMeridiem',\n togglePicker = 'togglePicker',\n showClock = 'showClock',\n showHours = 'showHours',\n showMinutes = 'showMinutes',\n showSeconds = 'showSeconds',\n clear = 'clear',\n close = 'close',\n today = 'today',\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `date`\r\n */\r\nexport default class DateDisplay {\r\n private _context: TempusDominus;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.daysContainer);\r\n\r\n container.append(...this._daysOfTheWeek());\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(Namespace.css.calendarWeeks, Namespace.css.noHighlight);\r\n container.appendChild(div);\r\n }\r\n\r\n for (let i = 0; i < 42; i++) {\r\n if (i !== 0 && i % 7 === 0) {\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n container.appendChild(div);\r\n }\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDay);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update(): void {\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.daysContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.daysContainer,\r\n this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n })\r\n );\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(-1, Unit.month),\r\n Unit.month\r\n )\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(1, Unit.month),\r\n Unit.month\r\n )\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.month)\r\n .startOf('weekDay')\r\n .manipulate(12, Unit.hours);\r\n\r\n container\r\n .querySelectorAll(\r\n `[data-action=\"${ActionTypes.selectDay}\"], .${Namespace.css.calendarWeeks}`\r\n )\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (\r\n this._context._options.display.calendarWeeks &&\r\n containerClone.classList.contains(Namespace.css.calendarWeeks)\r\n ) {\r\n if (containerClone.innerText === '#') return;\r\n containerClone.innerText = `${innerDate.week}`;\r\n return;\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.day);\r\n\r\n if (innerDate.isBefore(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.old);\r\n }\r\n if (innerDate.isAfter(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.new);\r\n }\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.date)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.date)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n if (innerDate.isSame(new DateTime(), Unit.date)) {\r\n classes.push(Namespace.css.today);\r\n }\r\n if (innerDate.weekDay === 0 || innerDate.weekDay === 6) {\r\n classes.push(Namespace.css.weekend);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`\r\n );\r\n containerClone.setAttribute(\r\n 'data-day',\r\n `${innerDate.date}`\r\n );\r\n containerClone.innerText = innerDate.format({ day: \"numeric\" });\r\n innerDate.manipulate(1, Unit.date);\r\n });\r\n }\r\n\r\n /***\r\n * Generates an html row that contains the days of the week.\r\n * @private\r\n */\r\n private _daysOfTheWeek(): HTMLElement[] {\r\n let innerDate = this._context._viewDate.clone\r\n .startOf('weekDay')\r\n .startOf(Unit.date);\r\n const row = [];\r\n document.createElement('div');\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = '#';\r\n row.push(htmlDivElement);\r\n }\r\n\r\n for (let i = 0; i < 7; i++) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.dayOfTheWeek,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = innerDate.format({ weekday: 'short' });\r\n innerDate.manipulate(1, Unit.date);\r\n row.push(htmlDivElement);\r\n }\r\n\r\n return row;\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `month`\n */\nexport default class MonthDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.monthsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMonth);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.monthsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.monthsContainer,\n this._context._viewDate.format({ year: 'numeric' })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.year),\n Unit.year\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.year),\n Unit.year\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone.startOf(Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMonth}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.month);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.month)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.month)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${index}`);\n containerClone.innerText = `${innerDate.format({ month: 'short' })}`;\n innerDate.manipulate(1, Unit.month);\n });\n }\n}\n","import { DateTime, DateTimeFormatOptions } from './datetime';\nimport Namespace from './namespace';\nimport { DefaultOptions } from './conts';\n\nexport default interface Options {\n restrictions: {\n minDate: DateTime;\n maxDate: DateTime;\n enabledDates: DateTime[];\n disabledDates: DateTime[];\n enabledHours: number[];\n disabledHours: number[];\n disabledTimeIntervals: { from: DateTime; to: DateTime }[];\n daysOfWeekDisabled: number[];\n };\n display: {\n toolbarPlacement: 'top' | 'bottom';\n components: {\n calendar: boolean;\n date: boolean;\n month: boolean;\n year: boolean;\n decades: boolean;\n clock: boolean;\n hours: boolean;\n minutes: boolean;\n seconds: boolean;\n useTwentyfourHour: boolean;\n };\n buttons: { today: boolean; close: boolean; clear: boolean };\n calendarWeeks: boolean;\n icons: {\n date: string;\n next: string;\n previous: string;\n today: string;\n clear: string;\n time: string;\n up: string;\n type: 'icons' | 'sprites';\n down: string;\n close: string;\n };\n viewMode: 'clock' | 'calendar' | 'months' | 'years' | 'decades';\n sideBySide: boolean;\n inline: boolean;\n keepOpen: boolean;\n };\n stepping: number;\n useCurrent: boolean;\n defaultDate: DateTime;\n localization: {\n nextMonth: string;\n pickHour: string;\n incrementSecond: string;\n nextDecade: string;\n selectDecade: string;\n dayViewHeaderFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n decrementHour: string;\n selectDate: string;\n incrementHour: string;\n previousCentury: string;\n decrementSecond: string;\n today: string;\n previousMonth: string;\n selectYear: string;\n pickSecond: string;\n nextCentury: string;\n close: string;\n incrementMinute: string;\n selectTime: string;\n clear: string;\n toggleMeridiem: string;\n selectMonth: string;\n decrementMinute: string;\n pickMinute: string;\n nextYear: string;\n previousYear: string;\n previousDecade: string;\n locale: string;\n };\n keepInvalid: boolean;\n debug: boolean;\n allowInputToggle: boolean;\n viewDate: DateTime;\n multipleDates: boolean;\n multipleDatesSeparator: string;\n promptTimeOnDateChange: boolean;\n promptTimeOnDateChangeTransitionDelay: number;\n hooks: {\n inputParse: (value: any) => DateTime;\n inputFormat: (date: DateTime) => string;\n };\n}\n\nexport class OptionConverter {\n static _mergeOptions(providedOptions: Options, mergeTo: Options): Options {\n const newOptions = {} as Options;\n let path = '';\n const ignoreProperties = ['inputParse', 'inputFormat'];\n\n const processKey = (key, value, providedType, defaultType) => {\n switch (key) {\n case 'defaultDate': {\n const dateTime = this._dateConversion(value, 'defaultDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'defaultDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'viewDate': {\n const dateTime = this._dateConversion(value, 'viewDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'viewDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'minDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.minDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.minDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'maxDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.maxDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.maxDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'disabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.disabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.disabledHours',\n 0,\n 23\n );\n return value;\n case 'enabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.enabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.enabledHours',\n 0,\n 23\n );\n return value;\n case 'daysOfWeekDisabled':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.daysOfWeekDisabled',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 6).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.daysOfWeekDisabled',\n 0,\n 6\n );\n return value;\n case 'enabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.enabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.disabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledTimeIntervals':\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n key,\n providedType,\n 'array of { from: DateTime|Date, to: DateTime|Date }'\n );\n }\n const valueObject = value as { from: any; to: any }[];\n for (let i = 0; i < valueObject.length; i++) {\n Object.keys(valueObject[i]).forEach((vk) => {\n const subOptionName = `${key}[${i}].${vk}`;\n let d = valueObject[i][vk];\n const dateTime = this._dateConversion(d, subOptionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n subOptionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n valueObject[i][vk] = dateTime;\n });\n }\n return valueObject;\n case 'toolbarPlacement':\n case 'type':\n case 'viewMode':\n case 'dayViewHeaderFormat':\n const optionValues = {\n toolbarPlacement: ['top', 'bottom', 'default'],\n type: ['icons', 'sprites'],\n viewMode: ['clock', 'calendar', 'months', 'years', 'decades'],\n dayViewHeaderFormat: [\n 'numeric',\n '2-digit',\n 'long',\n 'short',\n 'narrow',\n ],\n };\n const keyOptions = optionValues[key];\n if (!keyOptions.includes(value))\n Namespace.errorMessages.unexpectedOptionValue(\n path.substring(1),\n value,\n keyOptions\n );\n\n return value;\n case 'inputParse':\n case 'inputFormat':\n return value;\n default:\n switch (defaultType) {\n case 'boolean':\n return value === 'true' || value === true;\n case 'number':\n return +value;\n case 'string':\n return value.toString();\n case 'object':\n return {};\n case 'function':\n return value;\n default:\n Namespace.errorMessages.typeMismatch(\n path.substring(1),\n providedType,\n defaultType\n );\n }\n }\n };\n\n /**\n * The spread operator caused sub keys to be missing after merging.\n * This is to fix that issue by using spread on the child objects first.\n * Also handles complex options like disabledDates\n * @param provided An option from new providedOptions\n * @param mergeOption Default option to compare types against\n * @param copyTo Destination object. This was add to prevent reference copies\n */\n const spread = (provided, mergeOption, copyTo) => {\n const unsupportedOptions = Object.keys(provided).filter(\n (x) => !Object.keys(mergeOption).includes(x)\n );\n if (unsupportedOptions.length > 0) {\n const flattenedOptions = OptionConverter._flattenDefaultOptions;\n\n const errors = unsupportedOptions.map((x) => {\n let error = `\"${path.substring(1)}.${x}\" in not a known option.`;\n let didYouMean = flattenedOptions.find((y) => y.includes(x));\n if (didYouMean) error += `Did you mean \"${didYouMean}\"?`;\n return error;\n });\n Namespace.errorMessages.unexpectedOptions(errors);\n }\n Object.keys(mergeOption).forEach((key) => {\n const defaultOptionValue = mergeOption[key];\n let providedType = typeof provided[key];\n let defaultType = typeof defaultOptionValue;\n let value = provided[key];\n if (!provided.hasOwnProperty(key)) {\n if (\n defaultType === 'undefined' ||\n (value?.length === 0 && Array.isArray(defaultOptionValue))\n ) {\n copyTo[key] = defaultOptionValue;\n return;\n }\n provided[key] = defaultOptionValue;\n value = provided[key];\n }\n path += `.${key}`;\n copyTo[key] = processKey(key, value, providedType, defaultType);\n\n if (typeof defaultOptionValue !== 'object' || ignoreProperties.includes(key)) {\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n return;\n }\n if (!Array.isArray(provided[key])) {\n spread(provided[key], defaultOptionValue, copyTo[key]);\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n }\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n });\n };\n spread(providedOptions, mergeTo, newOptions);\n\n return newOptions;\n }\n\n static _dataToOptions(element, options: Options): Options {\n const eData = element.dataset;\n if (\n !eData ||\n Object.keys(eData).length === 0 ||\n eData.constructor !== DOMStringMap\n )\n return options;\n let dataOptions = {} as Options;\n\n // because dataset returns camelCase including the 'td' key the option\n // key won't align\n const objectToNormalized = (object) => {\n const lowered = {};\n Object.keys(object).forEach((x) => {\n lowered[x.toLowerCase()] = x;\n });\n\n return lowered;\n };\n\n const rabbitHole = (\n split: string[],\n index: number,\n optionSubgroup: {},\n value: any\n ) => {\n // first round = display { ... }\n const normalizedOptions = objectToNormalized(optionSubgroup);\n\n const keyOption = normalizedOptions[split[index].toLowerCase()];\n const internalObject = {};\n\n if (keyOption === undefined) return internalObject;\n\n // if this is another object, continue down the rabbit hole\n if (optionSubgroup[keyOption].constructor === Object) {\n index++;\n internalObject[keyOption] = rabbitHole(\n split,\n index,\n optionSubgroup[keyOption],\n value\n );\n } else {\n internalObject[keyOption] = value;\n }\n return internalObject;\n };\n const optionsLower = objectToNormalized(options);\n\n Object.keys(eData)\n .filter((x) => x.startsWith(Namespace.dataKey))\n .map((x) => x.substring(2))\n .forEach((key) => {\n let keyOption = optionsLower[key.toLowerCase()];\n\n // dataset merges dashes to camelCase... yay\n // i.e. key = display_components_seconds\n if (key.includes('_')) {\n // [display, components, seconds]\n const split = key.split('_');\n // display\n keyOption = optionsLower[split[0].toLowerCase()];\n if (\n keyOption !== undefined &&\n options[keyOption].constructor === Object\n ) {\n dataOptions[keyOption] = rabbitHole(\n split,\n 1,\n options[keyOption],\n eData[`td${key}`]\n );\n }\n }\n // or key = multipleDate\n else if (keyOption !== undefined) {\n dataOptions[keyOption] = eData[`td${key}`];\n }\n });\n\n return this._mergeOptions(dataOptions, options);\n }\n\n /**\n * Attempts to prove `d` is a DateTime or Date or can be converted into one.\n * @param d If a string will attempt creating a date from it.\n * @private\n */\n static _dateTypeCheck(d: any): DateTime | null {\n if (d.constructor.name === DateTime.name) return d;\n if (d.constructor.name === Date.name) {\n return DateTime.convert(d);\n }\n if (typeof d === typeof '') {\n const dateTime = new DateTime(d);\n if (JSON.stringify(dateTime) === 'null') {\n return null;\n }\n return dateTime;\n }\n return null;\n }\n\n /**\n * Type checks that `value` is an array of Date or DateTime\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckDateArray(optionName: string, value, providedType: string) {\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of DateTime or Date'\n );\n }\n for (let i = 0; i < value.length; i++) {\n let d = value[i];\n const dateTime = this._dateConversion(d, optionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n value[i] = dateTime;\n }\n }\n\n /**\n * Type checks that `value` is an array of numbers\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckNumberArray(\n optionName: string,\n value,\n providedType: string\n ) {\n if (!Array.isArray(value) || value.find((x) => typeof x !== typeof 0)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of numbers'\n );\n }\n return;\n }\n\n /**\n * Attempts to convert `d` to a DateTime object\n * @param d value to convert\n * @param optionName Provides text to error messages e.g. disabledDates\n */\n static _dateConversion(d: any, optionName: string) {\n if (typeof d === typeof '' && optionName !== 'input') {\n Namespace.errorMessages.dateString();\n }\n\n const converted = this._dateTypeCheck(d);\n\n if (!converted) {\n Namespace.errorMessages.failedToParseDate(\n optionName,\n d,\n optionName === 'input'\n );\n }\n return converted;\n }\n\n private static _flatback: string[];\n\n private static get _flattenDefaultOptions(): string[] {\n if (this._flatback) return this._flatback;\n const deepKeys = (t, pre = []) =>\n Array.isArray(t)\n ? []\n : Object(t) === t\n ? Object.entries(t).flatMap(([k, v]) => deepKeys(v, [...pre, k]))\n : pre.join('.');\n\n this._flatback = deepKeys(DefaultOptions);\n\n return this._flatback;\n }\n\n /**\n * Some options conflict like min/max date. Verify that these kinds of options\n * are set correctly.\n * @param config\n */\n static _validateConflcits(config: Options) {\n if (config.restrictions.minDate && config.restrictions.maxDate) {\n if (config.restrictions.minDate.isAfter(config.restrictions.maxDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'minDate is after maxDate'\n );\n }\n\n if (config.restrictions.maxDate.isBefore(config.restrictions.minDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'maxDate is before minDate'\n );\n }\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport { ChangeEvent, FailEvent } from './event-types';\nimport { OptionConverter } from './options';\n\nexport default class Dates {\n private _dates: DateTime[] = [];\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Returns the array of selected dates\n */\n get picked(): DateTime[] {\n return this._dates;\n }\n\n /**\n * Returns the last picked value.\n */\n get lastPicked(): DateTime {\n return this._dates[this.lastPickedIndex];\n }\n\n /**\n * Returns the length of picked dates -1 or 0 if none are selected.\n */\n get lastPickedIndex(): number {\n if (this._dates.length === 0) return 0;\n return this._dates.length - 1;\n }\n\n /**\n * Adds a new DateTime to selected dates array\n * @param date\n */\n add(date: DateTime): void {\n this._dates.push(date);\n }\n\n /**\n * Tries to convert the provided value to a DateTime object.\n * If value is null|undefined then clear the value of the provided index (or 0).\n * @param value Value to convert or null|undefined\n * @param index When using multidates this is the index in the array\n * @param from Used in the warning message, useful for debugging.\n */\n set(value: any, index?: number, from: string = 'date.set') {\n if (!value) this._setValue(value, index);\n const converted = OptionConverter._dateConversion(value, from);\n if (converted) this._setValue(converted, index);\n }\n\n /**\n * Returns true if the `targetDate` is part of the selected dates array.\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n isPicked(targetDate: DateTime, unit?: Unit): boolean {\n if (!unit) return this._dates.find((x) => x === targetDate) !== undefined;\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return (\n this._dates\n .map((x) => x.format(format))\n .find((x) => x === innerDateFormatted) !== undefined\n );\n }\n\n /**\n * Returns the index at which `targetDate` is in the array.\n * This is used for updating or removing a date when multi-date is used\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n pickedIndex(targetDate: DateTime, unit?: Unit): number {\n if (!unit) return this._dates.indexOf(targetDate);\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return this._dates.map((x) => x.format(format)).indexOf(innerDateFormatted);\n }\n\n /**\n * Clears all selected dates.\n */\n clear() {\n this._context._unset = true;\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate: this.lastPicked,\n isClear: true,\n isValid: true,\n } as ChangeEvent);\n this._dates = [];\n }\n\n /**\n * Find the \"book end\" years given a `year` and a `factor`\n * @param factor e.g. 100 for decades\n * @param year e.g. 2021\n */\n static getStartEndYear(\n factor: number,\n year: number\n ): [number, number, number] {\n const step = factor / 10,\n startYear = Math.floor(year / factor) * factor,\n endYear = startYear + step * 9,\n focusValue = Math.floor(year / step) * step;\n return [startYear, endYear, focusValue];\n }\n\n /**\n * Do not use direectly. Attempts to either clear or set the `target` date at `index`.\n * If the `target` is null then the date will be cleared.\n * If multi-date is being used then it will be removed from the array.\n * If `target` is valid and multi-date is used then if `index` is\n * provided the date at that index will be replaced, otherwise it is appended.\n * @param target\n * @param index\n */\n _setValue(target?: DateTime, index?: number): void {\n const noIndex = typeof index === 'undefined',\n isClear = !target && noIndex;\n let oldDate = this._context._unset ? null : this._dates[index];\n if (!oldDate && !this._context._unset && noIndex && isClear) {\n oldDate = this.lastPicked;\n }\n\n if (target && oldDate?.isSame(target)) return;\n\n const updateInput = () => {\n if (!this._context._input) return;\n\n let newValue = this._context._options.hooks.inputFormat(target);\n if (this._context._options.multipleDates) {\n newValue = this._dates\n .map((d) => this._context._options.hooks.inputFormat(d))\n .join(this._context._options.multipleDatesSeparator);\n }\n if (this._context._input.value != newValue)\n this._context._input.value = newValue;\n };\n\n // case of calling setValue(null)\n if (!target) {\n if (\n !this._context._options.multipleDates ||\n this._dates.length === 1 ||\n isClear\n ) {\n this._context._unset = true;\n this._dates = [];\n } else {\n this._dates.splice(index, 1);\n }\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n\n updateInput();\n this._context._display._update('all');\n return;\n }\n\n index = index || 0;\n target = target.clone;\n\n // minute stepping is being used, force the minute to the closest value\n if (this._context._options.stepping !== 1) {\n target.minutes =\n Math.round(target.minutes / this._context._options.stepping) *\n this._context._options.stepping;\n target.seconds = 0;\n }\n\n if (this._context._validation.isValid(target)) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._unset = false;\n this._context._display._update('all');\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n return;\n }\n\n if (this._context._options.keepInvalid) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: false,\n } as ChangeEvent);\n }\n this._context._triggerEvent({\n type: Namespace.events.error,\n reason: Namespace.errorMessages.failedToSetInvalidDate,\n date: target,\n oldDate,\n } as FailEvent);\n }\n\n /**\n * Returns a format object based on the granularity of `unit`\n * @param unit\n */\n static getFormatByUnit(unit: Unit): object {\n switch (unit) {\n case 'date':\n return { dateStyle: 'short' };\n case 'month':\n return {\n month: 'numeric',\n year: 'numeric',\n };\n case 'year':\n return { year: 'numeric' };\n }\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\nimport Dates from '../../dates';\r\n\r\n/**\r\n * Creates and updates the grid for `year`\r\n */\r\nexport default class YearDisplay {\r\n private _context: TempusDominus;\r\n private _startYear: DateTime;\r\n private _endYear: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.yearsContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectYear);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 10,\r\n this._context._viewDate.year\r\n );\r\n this._startYear = this._context._viewDate.clone.manipulate(-1, Unit.year);\r\n this._endYear = this._context._viewDate.clone.manipulate(10, Unit.year);\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.yearsContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.yearsContainer,\r\n `${this._startYear.format({ year: 'numeric' })}-${this._endYear.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startYear, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endYear, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.year)\r\n .manipulate(-1, Unit.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectYear}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n let classes = [];\r\n classes.push(Namespace.css.year);\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.year)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.year)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute('data-value', `${innerDate.year}`);\r\n containerClone.innerText = innerDate.format({ year: \"numeric\" });\r\n\r\n innerDate.manipulate(1, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport Dates from '../../dates';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `seconds`\r\n */\r\nexport default class DecadeDisplay {\r\n private _context: TempusDominus;\r\n private _startDecade: DateTime;\r\n private _endDecade: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker() {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.decadesContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDecade);\r\n container.appendChild(div);\r\n }\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 100,\r\n this._context._viewDate.year\r\n );\r\n this._startDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._startDecade.year = start;\r\n this._endDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._endDecade.year = end;\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.decadesContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.decadesContainer,\r\n `${this._startDecade.format({ year: 'numeric' })}-${this._endDecade.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startDecade, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endDecade, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n const pickedYears = this._context.dates.picked.map((x) => x.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectDecade}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (index === 0) {\r\n containerClone.classList.add(Namespace.css.old);\r\n if (this._startDecade.year - 10 < 0) {\r\n containerClone.textContent = ' ';\r\n previous.classList.add(Namespace.css.disabled);\r\n containerClone.classList.add(Namespace.css.disabled);\r\n containerClone.setAttribute('data-value', ``);\r\n return;\r\n } else {\r\n containerClone.innerText = this._startDecade.clone.manipulate(-10, Unit.year).format({ year: 'numeric' });\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n return;\r\n }\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.decade);\r\n const startDecadeYear = this._startDecade.year;\r\n const endDecadeYear = this._startDecade.year + 9;\r\n\r\n if (\r\n !this._context._unset &&\r\n pickedYears.filter((x) => x >= startDecadeYear && x <= endDecadeYear)\r\n .length > 0\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n containerClone.innerText = `${this._startDecade.format({ year: 'numeric' })}`;\r\n\r\n this._startDecade.manipulate(10, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates the clock display\n */\nexport default class TimeDisplay {\n private _context: TempusDominus;\n private _gridColumns = '';\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the clock display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.clockContainer);\n\n container.append(...this._grid());\n\n return container;\n }\n\n /**\n * Populates the various elements with in the clock display\n * like the current hour and if the manipulation icons are enabled.\n * @private\n */\n _update(): void {\n const timesDiv = (\n this._context._display.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0]\n );\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n timesDiv\n .querySelectorAll('.disabled')\n .forEach((element) => element.classList.remove(Namespace.css.disabled));\n\n if (this._context._options.display.components.hours) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.hours}]`\n ).innerText = this._context._options.display.components.useTwentyfourHour\n ? lastPicked.hoursFormatted\n : lastPicked.twelveHoursFormatted;\n }\n\n if (this._context._options.display.components.minutes) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.minutes}]`\n ).innerText = lastPicked.minutesFormatted;\n }\n\n if (this._context._options.display.components.seconds) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.seconds}]`\n ).innerText = lastPicked.secondsFormatted;\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n const toggle = timesDiv.querySelector(\n `[data-action=${ActionTypes.toggleMeridiem}]`\n );\n\n toggle.innerText = lastPicked.meridiem();\n\n if (\n !this._context._validation.isValid(\n lastPicked.clone.manipulate(\n lastPicked.hours >= 12 ? -12 : 12,\n Unit.hours\n )\n )\n ) {\n toggle.classList.add(Namespace.css.disabled);\n } else {\n toggle.classList.remove(Namespace.css.disabled);\n }\n }\n\n timesDiv.style.gridTemplateAreas = `\"${this._gridColumns}\"`;\n }\n\n /**\n * Creates the table for the clock display depending on what options are selected.\n * @private\n */\n private _grid(): HTMLElement[] {\n this._gridColumns = '';\n const top = [],\n middle = [],\n bottom = [],\n separator = document.createElement('div'),\n upIcon = this._context._display._iconTag(\n this._context._options.display.icons.up\n ),\n downIcon = this._context._display._iconTag(\n this._context._options.display.icons.down\n );\n\n separator.classList.add(Namespace.css.separator, Namespace.css.noHighlight);\n const separatorColon = separator.cloneNode(true);\n separatorColon.innerHTML = ':';\n\n const getSeparator = (colon = false): HTMLElement => {\n return colon\n ? separatorColon.cloneNode(true)\n : separator.cloneNode(true);\n };\n\n if (this._context._options.display.components.hours) {\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.incrementHours);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickHour\n );\n divElement.setAttribute('data-action', ActionTypes.showHours);\n divElement.setAttribute('data-time-component', Unit.hours);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.decrementHours);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n this._gridColumns += 'a';\n }\n\n if (this._context._options.display.components.minutes) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.hours) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.incrementMinutes);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickMinute\n );\n divElement.setAttribute('data-action', ActionTypes.showMinutes);\n divElement.setAttribute('data-time-component', Unit.minutes);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.decrementMinutes);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (this._context._options.display.components.seconds) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.minutes) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.incrementSeconds);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickSecond\n );\n divElement.setAttribute('data-action', ActionTypes.showSeconds);\n divElement.setAttribute('data-time-component', Unit.seconds);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.decrementSeconds);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n this._gridColumns += ' a';\n let divElement = getSeparator();\n top.push(divElement);\n\n let button = document.createElement('button');\n button.setAttribute(\n 'title',\n this._context._options.localization.toggleMeridiem\n );\n button.setAttribute('data-action', ActionTypes.toggleMeridiem);\n button.setAttribute('tabindex', '-1');\n button.classList.add(Namespace.css.toggleMeridiem);\n\n divElement = document.createElement('div');\n divElement.classList.add(Namespace.css.noHighlight);\n divElement.appendChild(button);\n middle.push(divElement);\n\n divElement = getSeparator();\n bottom.push(divElement);\n }\n\n this._gridColumns = this._gridColumns.trim();\n\n return [...top, ...middle, ...bottom];\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `hours`\n */\nexport default class HourDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.hourContainer);\n\n for (\n let i = 0;\n i <\n (this._context._options.display.components.useTwentyfourHour ? 24 : 12);\n i++\n ) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectHour);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.hourContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.date);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectHour}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.hour);\n\n if (!this._context._validation.isValid(innerDate, Unit.hours)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.hours}`);\n containerClone.innerText = this._context._options.display.components\n .useTwentyfourHour\n ? innerDate.hoursFormatted\n : innerDate.twelveHoursFormatted;\n innerDate.manipulate(1, Unit.hours);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `minutes`\n */\nexport default class MinuteDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.minuteContainer);\n\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n for (let i = 0; i < 60 / step; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMinute);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.minuteContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.hours);\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMinute}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.minute);\n\n if (!this._context._validation.isValid(innerDate, Unit.minutes)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.minutes}`);\n containerClone.innerText = innerDate.minutesFormatted;\n innerDate.manipulate(step, Unit.minutes);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class secondDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.secondContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectSecond);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.secondContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.minutes);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectSecond}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.second);\n\n if (!this._context._validation.isValid(innerDate, Unit.seconds)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.seconds}`);\n containerClone.innerText = innerDate.secondsFormatted;\n innerDate.manipulate(5, Unit.seconds);\n });\n }\n}\n","import DateDisplay from './calendar/date-display';\r\nimport MonthDisplay from './calendar/month-display';\r\nimport YearDisplay from './calendar/year-display';\r\nimport DecadeDisplay from './calendar/decade-display';\r\nimport TimeDisplay from './time/time-display';\r\nimport HourDisplay from './time/hour-display';\r\nimport MinuteDisplay from './time/minute-display';\r\nimport SecondDisplay from './time/second-display';\r\nimport { DateTime, Unit } from '../datetime';\r\nimport { DatePickerModes } from '../conts';\r\nimport { TempusDominus } from '../tempus-dominus';\r\nimport { ActionTypes } from '../actions';\r\nimport { createPopper } from '@popperjs/core';\r\nimport Namespace from '../namespace';\r\nimport { HideEvent } from '../event-types';\r\n\r\n/**\r\n * Main class for all things display related.\r\n */\r\nexport default class Display {\r\n private _context: TempusDominus;\r\n private _dateDisplay: DateDisplay;\r\n private _monthDisplay: MonthDisplay;\r\n private _yearDisplay: YearDisplay;\r\n private _decadeDisplay: DecadeDisplay;\r\n private _timeDisplay: TimeDisplay;\r\n private _widget: HTMLElement;\r\n private _hourDisplay: HourDisplay;\r\n private _minuteDisplay: MinuteDisplay;\r\n private _secondDisplay: SecondDisplay;\r\n private _popperInstance: any;\r\n private _isVisible = false;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this._dateDisplay = new DateDisplay(context);\r\n this._monthDisplay = new MonthDisplay(context);\r\n this._yearDisplay = new YearDisplay(context);\r\n this._decadeDisplay = new DecadeDisplay(context);\r\n this._timeDisplay = new TimeDisplay(context);\r\n this._hourDisplay = new HourDisplay(context);\r\n this._minuteDisplay = new MinuteDisplay(context);\r\n this._secondDisplay = new SecondDisplay(context);\r\n\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Returns the widget body or undefined\r\n * @private\r\n */\r\n get widget(): HTMLElement | undefined {\r\n return this._widget;\r\n }\r\n\r\n /**\r\n * Returns this visible state of the picker (shown)\r\n */\r\n get isVisible() {\r\n return this._isVisible;\r\n }\r\n\r\n /**\r\n * Updates the table for a particular unit. Used when an option as changed or\r\n * whenever the class list might need to be refreshed.\r\n * @param unit\r\n * @private\r\n */\r\n _update(unit: Unit | 'clock' | 'calendar' | 'all'): void {\r\n if (!this.widget) return;\r\n //todo do I want some kind of error catching or other guards here?\r\n switch (unit) {\r\n case Unit.seconds:\r\n this._secondDisplay._update();\r\n break;\r\n case Unit.minutes:\r\n this._minuteDisplay._update();\r\n break;\r\n case Unit.hours:\r\n this._hourDisplay._update();\r\n break;\r\n case Unit.date:\r\n this._dateDisplay._update();\r\n break;\r\n case Unit.month:\r\n this._monthDisplay._update();\r\n break;\r\n case Unit.year:\r\n this._yearDisplay._update();\r\n break;\r\n case 'clock':\r\n this._timeDisplay._update();\r\n this._update(Unit.hours);\r\n this._update(Unit.minutes);\r\n this._update(Unit.seconds);\r\n break;\r\n case 'calendar':\r\n this._update(Unit.date);\r\n this._update(Unit.year);\r\n this._update(Unit.month);\r\n this._decadeDisplay._update();\r\n this._updateCalendarHeader();\r\n break;\r\n case 'all':\r\n if (this._hasTime) {\r\n this._update('clock');\r\n }\r\n if (this._hasDate) {\r\n this._update('calendar');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Shows the picker and creates a Popper instance if needed.\r\n * Add document click event to hide when clicking outside the picker.\r\n * @fires Events#show\r\n */\r\n show(): void {\r\n if (this.widget == undefined) {\r\n if (\r\n this._context._options.useCurrent &&\r\n !this._context._options.defaultDate &&\r\n !this._context._input?.value\r\n ) {\r\n //todo in the td4 branch a pr changed this to allow granularity\r\n const date = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n if (!this._context._options.keepInvalid) {\r\n let tries = 0;\r\n let direction = 1;\r\n if (this._context._options.restrictions.maxDate?.isBefore(date)) {\r\n direction = -1;\r\n }\r\n while (!this._context._validation.isValid(date)) {\r\n date.manipulate(direction, Unit.date);\r\n if (tries > 31) break;\r\n tries++;\r\n }\r\n }\r\n this._context.dates._setValue(date);\r\n }\r\n\r\n if (this._context._options.defaultDate) {\r\n this._context.dates._setValue(this._context._options.defaultDate);\r\n }\r\n\r\n this._buildWidget();\r\n if (this._hasDate) {\r\n this._showMode();\r\n }\r\n\r\n if (!this._context._options.display.inline) {\r\n document.body.appendChild(this.widget);\r\n\r\n this._popperInstance = createPopper(\r\n this._context._element,\r\n this.widget,\r\n {\r\n modifiers: [\r\n /* {\r\n name: 'offset',\r\n options: {\r\n offset: [2, 8],\r\n },\r\n },*/\r\n { name: 'eventListeners', enabled: true },\r\n ],\r\n placement: 'bottom-start',\r\n }\r\n );\r\n } else {\r\n this._context._element.appendChild(this.widget);\r\n }\r\n\r\n if (this._context._options.display.viewMode == 'clock') {\r\n this._context._action.do(\r\n {\r\n currentTarget: this.widget.querySelector(\r\n `.${Namespace.css.timeContainer}`\r\n ),\r\n },\r\n ActionTypes.showClock\r\n );\r\n }\r\n\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.addEventListener('click', this._actionsClickEvent)\r\n );\r\n\r\n // show the clock when using sideBySide\r\n if (this._context._options.display.sideBySide) {\r\n this._timeDisplay._update();\r\n (\r\n this.widget.getElementsByClassName(\r\n Namespace.css.clockContainer\r\n )[0] as HTMLElement\r\n ).style.display = 'grid';\r\n }\r\n }\r\n\r\n this.widget.classList.add(Namespace.css.show);\r\n if (!this._context._options.display.inline) {\r\n this._popperInstance.update();\r\n document.addEventListener('click', this._documentClickEvent);\r\n }\r\n this._context._triggerEvent({ type: Namespace.events.show });\r\n this._isVisible = true;\r\n }\r\n\r\n /**\r\n * Changes the calendar view mode. E.g. month <-> year\r\n * @param direction -/+ number to move currentViewMode\r\n * @private\r\n */\r\n _showMode(direction?: number): void {\r\n if (!this.widget) {\r\n return;\r\n }\r\n if (direction) {\r\n const max = Math.max(\r\n this._context._minViewModeNumber,\r\n Math.min(3, this._context._currentViewMode + direction)\r\n );\r\n if (this._context._currentViewMode == max) return;\r\n this._context._currentViewMode = max;\r\n }\r\n\r\n this.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div:not(.${Namespace.css.clockContainer})`\r\n )\r\n .forEach((e: HTMLElement) => (e.style.display = 'none'));\r\n\r\n const datePickerMode = DatePickerModes[this._context._currentViewMode];\r\n let picker: HTMLElement = this.widget.querySelector(\r\n `.${datePickerMode.className}`\r\n );\r\n\r\n switch (datePickerMode.className) {\r\n case Namespace.css.decadesContainer:\r\n this._decadeDisplay._update();\r\n break;\r\n case Namespace.css.yearsContainer:\r\n this._yearDisplay._update();\r\n break;\r\n case Namespace.css.monthsContainer:\r\n this._monthDisplay._update();\r\n break;\r\n case Namespace.css.daysContainer:\r\n this._dateDisplay._update();\r\n break;\r\n }\r\n\r\n picker.style.display = 'grid';\r\n this._updateCalendarHeader();\r\n }\r\n\r\n _updateCalendarHeader() {\r\n const showing = [\r\n ...this.widget.querySelector(\r\n `.${Namespace.css.dateContainer} div[style*=\"display: grid\"]`\r\n ).classList,\r\n ].find((x) => x.startsWith(Namespace.css.dateContainer));\r\n\r\n const [previous, switcher, next] = this._context._display.widget\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switch (showing) {\r\n case Namespace.css.decadesContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousCentury\r\n );\r\n switcher.setAttribute('title', '');\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextCentury\r\n );\r\n break;\r\n case Namespace.css.yearsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousDecade\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDecade\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextDecade\r\n );\r\n break;\r\n case Namespace.css.monthsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousYear\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectYear\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextYear\r\n );\r\n break;\r\n case Namespace.css.daysContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousMonth\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectMonth\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextMonth\r\n );\r\n switcher.innerText = this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n });\r\n break;\r\n }\r\n switcher.innerText = switcher.getAttribute(showing);\r\n }\r\n\r\n /**\r\n * Hides the picker if needed.\r\n * Remove document click event to hide when clicking outside the picker.\r\n * @fires Events#hide\r\n */\r\n hide(): void {\r\n if (!this.widget || !this._isVisible) return;\r\n\r\n this.widget.classList.remove(Namespace.css.show);\r\n\r\n if (this._isVisible) {\r\n this._context._triggerEvent({\r\n type: Namespace.events.hide,\r\n date: this._context._unset\r\n ? null\r\n : this._context.dates.lastPicked\r\n ? this._context.dates.lastPicked.clone\r\n : void 0,\r\n } as HideEvent);\r\n this._isVisible = false;\r\n }\r\n\r\n document.removeEventListener('click', this._documentClickEvent);\r\n }\r\n\r\n /**\r\n * Toggles the picker's open state. Fires a show/hide event depending.\r\n */\r\n toggle() {\r\n return this._isVisible ? this.hide() : this.show();\r\n }\r\n\r\n /**\r\n * Removes document and data-action click listener and reset the widget\r\n * @private\r\n */\r\n _dispose() {\r\n document.removeEventListener('click', this._documentClickEvent);\r\n if (!this.widget) return;\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.removeEventListener('click', this._actionsClickEvent)\r\n );\r\n this.widget.parentNode.removeChild(this.widget);\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Builds the widgets html template.\r\n * @private\r\n */\r\n private _buildWidget(): HTMLElement {\r\n const template = document.createElement('div');\r\n template.classList.add(Namespace.css.widget);\r\n\r\n const dateView = document.createElement('div');\r\n dateView.classList.add(Namespace.css.dateContainer);\r\n dateView.append(\r\n this._headTemplate,\r\n this._decadeDisplay._picker,\r\n this._yearDisplay._picker,\r\n this._monthDisplay._picker,\r\n this._dateDisplay._picker\r\n );\r\n\r\n const timeView = document.createElement('div');\r\n timeView.classList.add(Namespace.css.timeContainer);\r\n timeView.appendChild(this._timeDisplay._picker);\r\n timeView.appendChild(this._hourDisplay._picker);\r\n timeView.appendChild(this._minuteDisplay._picker);\r\n timeView.appendChild(this._secondDisplay._picker);\r\n\r\n const toolbar = document.createElement('div');\r\n toolbar.classList.add(Namespace.css.toolbar);\r\n toolbar.append(...this._toolbar);\r\n\r\n if (this._context._options.display.inline) {\r\n template.classList.add(Namespace.css.inline);\r\n }\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n template.classList.add('calendarWeeks');\r\n }\r\n\r\n if (\r\n this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n template.classList.add(Namespace.css.sideBySide);\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n const row = document.createElement('div');\r\n row.classList.add('td-row');\r\n dateView.classList.add('td-half');\r\n timeView.classList.add('td-half');\r\n\r\n row.appendChild(dateView);\r\n row.appendChild(timeView);\r\n template.appendChild(row);\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n this._widget = template;\r\n return;\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n if (this._hasDate) {\r\n if (this._hasTime) {\r\n dateView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode !== 'clock')\r\n dateView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(dateView);\r\n }\r\n\r\n if (this._hasTime) {\r\n if (this._hasDate) {\r\n timeView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode === 'clock')\r\n timeView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(timeView);\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n const arrow = document.createElement('div');\r\n arrow.classList.add('arrow');\r\n arrow.setAttribute('data-popper-arrow', '');\r\n template.appendChild(arrow);\r\n\r\n this._widget = template;\r\n }\r\n\r\n /**\r\n * Returns true if the hours, minutes, or seconds component is turned on\r\n */\r\n get _hasTime(): boolean {\r\n return (\r\n this._context._options.display.components.clock &&\r\n (this._context._options.display.components.hours ||\r\n this._context._options.display.components.minutes ||\r\n this._context._options.display.components.seconds)\r\n );\r\n }\r\n\r\n /**\r\n * Returns true if the year, month, or date component is turned on\r\n */\r\n get _hasDate(): boolean {\r\n return (\r\n this._context._options.display.components.calendar &&\r\n (this._context._options.display.components.year ||\r\n this._context._options.display.components.month ||\r\n this._context._options.display.components.date)\r\n );\r\n }\r\n\r\n /**\r\n * Get the toolbar html based on options like buttons.today\r\n * @private\r\n */\r\n get _toolbar(): HTMLElement[] {\r\n const toolbar = [];\r\n\r\n if (this._context._options.display.buttons.today) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.today);\r\n div.setAttribute('title', this._context._options.localization.today);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.today)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (\r\n !this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n let title, icon;\r\n if (this._context._options.display.viewMode === 'clock') {\r\n title = this._context._options.localization.selectDate;\r\n icon = this._context._options.display.icons.date;\r\n } else {\r\n title = this._context._options.localization.selectTime;\r\n icon = this._context._options.display.icons.time;\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.togglePicker);\r\n div.setAttribute('title', title);\r\n\r\n div.appendChild(this._iconTag(icon));\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.clear) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.clear);\r\n div.setAttribute('title', this._context._options.localization.clear);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.clear)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.close) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.close);\r\n div.setAttribute('title', this._context._options.localization.close);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.close)\r\n );\r\n toolbar.push(div);\r\n }\r\n\r\n return toolbar;\r\n }\r\n\r\n /***\r\n * Builds the base header template with next and previous icons\r\n * @private\r\n */\r\n get _headTemplate(): HTMLElement {\r\n const calendarHeader = document.createElement('div');\r\n calendarHeader.classList.add(Namespace.css.calendarHeader);\r\n\r\n const previous = document.createElement('div');\r\n previous.classList.add(Namespace.css.previous);\r\n previous.setAttribute('data-action', ActionTypes.previous);\r\n previous.appendChild(\r\n this._iconTag(this._context._options.display.icons.previous)\r\n );\r\n\r\n const switcher = document.createElement('div');\r\n switcher.classList.add(Namespace.css.switch);\r\n switcher.setAttribute('data-action', ActionTypes.pickerSwitch);\r\n\r\n const next = document.createElement('div');\r\n next.classList.add(Namespace.css.next);\r\n next.setAttribute('data-action', ActionTypes.next);\r\n next.appendChild(this._iconTag(this._context._options.display.icons.next));\r\n\r\n calendarHeader.append(previous, switcher, next);\r\n return calendarHeader;\r\n }\r\n\r\n /**\r\n * Builds an icon tag as either an ``\r\n * or with icons.type is `sprites` then an svg tag instead\r\n * @param iconClass\r\n * @private\r\n */\r\n _iconTag(iconClass: string): HTMLElement {\r\n if (this._context._options.display.icons.type === 'sprites') {\r\n const svg = document.createElement('svg');\r\n svg.innerHTML = ``;\r\n return svg;\r\n }\r\n const icon = document.createElement('i');\r\n DOMTokenList.prototype.add.apply(icon.classList, iconClass.split(' '));\r\n return icon;\r\n }\r\n\r\n /**\r\n * A document click event to hide the widget if click is outside\r\n * @private\r\n * @param e MouseEvent\r\n */\r\n private _documentClickEvent = (e: MouseEvent) => {\r\n if (this._context._options.display.keepOpen ||\r\n this._context._options.debug ||\r\n (window as any).debug) return;\r\n\r\n if (\r\n this._isVisible &&\r\n !e.composedPath().includes(this.widget) && // click inside the widget\r\n !e.composedPath()?.includes(this._context._element) // click on the element\r\n ) {\r\n this.hide();\r\n }\r\n };\r\n\r\n /**\r\n * Click event for any action like selecting a date\r\n * @param e MouseEvent\r\n * @private\r\n */\r\n private _actionsClickEvent = (e: MouseEvent) => {\r\n this._context._action.do(e);\r\n };\r\n\r\n /**\r\n * Causes the widget to get rebuilt on next show. If the picker is already open\r\n * then hide and reshow it.\r\n * @private\r\n */\r\n _rebuild() {\r\n const wasVisible = this._isVisible;\r\n if (wasVisible) this.hide();\r\n this._dispose();\r\n if (wasVisible) {\r\n this.show();\r\n }\r\n }\r\n}\r\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Dates from './dates';\n\n/**\n * Main class for date validation rules based on the options provided.\n */\nexport default class Validation {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Checks to see if the target date is valid based on the rules provided in the options.\n * Granularity can be provide to chek portions of the date instead of the whole.\n * @param targetDate\n * @param granularity\n */\n isValid(targetDate: DateTime, granularity?: Unit): boolean {\n if (\n this._context._options.restrictions.disabledDates.length > 0 &&\n this._isInDisabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledDates.length > 0 &&\n !this._isInEnabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.daysOfWeekDisabled?.length > 0 &&\n this._context._options.restrictions.daysOfWeekDisabled.indexOf(\n targetDate.weekDay\n ) !== -1\n ) {\n return false;\n }\n\n if (\n this._context._options.restrictions.minDate &&\n targetDate.isBefore(\n this._context._options.restrictions.minDate,\n granularity\n )\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.maxDate &&\n targetDate.isAfter(\n this._context._options.restrictions.maxDate,\n granularity\n )\n ) {\n return false;\n }\n\n if (\n granularity === Unit.hours ||\n granularity === Unit.minutes ||\n granularity === Unit.seconds\n ) {\n if (\n this._context._options.restrictions.disabledHours.length > 0 &&\n this._isInDisabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledHours.length > 0 &&\n !this._isInEnabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.disabledTimeIntervals.length > 0\n ) {\n for (\n let i = 0;\n i < this._context._options.restrictions.disabledTimeIntervals.length;\n i++\n ) {\n if (\n targetDate.isBetween(\n this._context._options.restrictions.disabledTimeIntervals[i].from,\n this._context._options.restrictions.disabledTimeIntervals[i].to\n )\n )\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Checks to see if the disabledDates option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInDisabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledDates ||\n this._context._options.restrictions.disabledDates.length === 0\n )\n return false;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.disabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the enabledDates option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInEnabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledDates ||\n this._context._options.restrictions.enabledDates.length === 0\n )\n return true;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.enabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the disabledHours option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInDisabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledHours ||\n this._context._options.restrictions.disabledHours.length === 0\n )\n return false;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.disabledHours.find(\n (x) => x === formattedDate\n );\n }\n\n /**\n * Checks to see if the enabledHours option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInEnabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledHours ||\n this._context._options.restrictions.enabledHours.length === 0\n )\n return true;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.enabledHours.find(\n (x) => x === formattedDate\n );\n }\n}\n","import Display from './display/index';\nimport Validation from './validation';\nimport Dates from './dates';\nimport Actions, { ActionTypes } from './actions';\nimport { DatePickerModes, DefaultOptions } from './conts';\nimport { DateTime, DateTimeFormatOptions, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options, { OptionConverter } from './options';\nimport {\n BaseEvent,\n ChangeEvent,\n ViewUpdateEvent,\n FailEvent,\n} from './event-types';\n\n/**\n * A robust and powerful date/time picker component.\n */\nclass TempusDominus {\n dates: Dates;\n\n _options: Options;\n _currentViewMode = 0;\n _subscribers: { [key: string]: ((event: any) => {})[] } = {};\n _element: HTMLElement;\n _input: HTMLInputElement;\n _unset: boolean;\n _minViewModeNumber = 0;\n _display: Display;\n _validation: Validation;\n _action: Actions;\n private _isDisabled = false;\n private _notifyChangeEventContext = 0;\n private _toggle: HTMLElement;\n private _currentPromptTimeTimeout: any;\n\n constructor(element: HTMLElement, options: Options = {} as Options) {\n if (!element) {\n Namespace.errorMessages.mustProvideElement;\n }\n this._element = element;\n this._options = this._initializeOptions(options, DefaultOptions, true);\n this._viewDate.setLocale(this._options.localization.locale);\n this._unset = true;\n\n this._display = new Display(this);\n this._validation = new Validation(this);\n this.dates = new Dates(this);\n this._action = new Actions(this);\n\n this._initializeInput();\n this._initializeToggle();\n\n if (this._options.display.inline) this._display.show();\n }\n\n _viewDate = new DateTime();\n\n get viewDate() {\n return this._viewDate;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Update the picker options. If `reset` is provide `options` will be merged with DefaultOptions instead.\n * @param options\n * @param reset\n * @public\n */\n updateOptions(options, reset = false): void {\n if (reset) this._options = this._initializeOptions(options, DefaultOptions);\n else this._options = this._initializeOptions(options, this._options);\n this._display._rebuild();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Toggles the picker open or closed. If the picker is disabled, nothing will happen.\n * @public\n */\n toggle(): void {\n if (this._isDisabled) return;\n this._display.toggle();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Shows the picker unless the picker is disabled.\n * @public\n */\n show(): void {\n if (this._isDisabled) return;\n this._display.show();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker unless the picker is disabled.\n * @public\n */\n hide(): void {\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Disables the picker and the target input field.\n * @public\n */\n disable(): void {\n this._isDisabled = true;\n // todo this might be undesired. If a dev disables the input field to\n // only allow using the picker, this will break that.\n this._input?.setAttribute('disabled', 'disabled');\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Enables the picker and the target input field.\n * @public\n */\n enable(): void {\n this._isDisabled = false;\n this._input?.removeAttribute('disabled');\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Clears all the selected dates\n * @public\n */\n clear(): void {\n this.dates.clear();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Allows for a direct subscription to picker events, without having to use addEventListener on the element.\n * @param eventTypes See Namespace.Events\n * @param callbacks Function to call when event is triggered\n * @public\n */\n subscribe(\n eventTypes: string | string[],\n callbacks: (event: any) => void | ((event: any) => void)[]\n ): { unsubscribe: void }[] {\n if (typeof eventTypes === 'string') {\n eventTypes = [eventTypes];\n }\n let callBackArray = [];\n if (!Array.isArray(callbacks)) {\n callBackArray = [callbacks];\n } else {\n callBackArray = callbacks;\n }\n\n if (eventTypes.length !== callBackArray.length) {\n Namespace.errorMessages.subscribeMismatch;\n }\n\n const returnArray = [];\n\n for (let i = 0; i < eventTypes.length; i++) {\n const eventType = eventTypes[i];\n if (!Array.isArray(this._subscribers[eventType])) {\n this._subscribers[eventType] = [];\n }\n\n this._subscribers[eventType].push(callBackArray[i]);\n\n returnArray.push({\n unsubscribe: this._unsubscribe.bind(\n this,\n eventType,\n this._subscribers[eventType].length - 1\n ),\n });\n\n if (eventTypes.length === 1) {\n return returnArray[0];\n }\n }\n\n return returnArray;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker and removes event listeners\n */\n dispose() {\n this._display.hide();\n // this will clear the document click event listener\n this._display._dispose();\n this._input?.removeEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input?.removeEventListener('click', this._toggleClickEvent);\n }\n this._toggle.removeEventListener('click', this._toggleClickEvent);\n this._subscribers = {};\n }\n\n /**\n * Triggers an event like ChangeEvent when the picker has updated the value\n * of a selected date.\n * @param event Accepts a BaseEvent object.\n * @private\n */\n _triggerEvent(event: BaseEvent) {\n // checking hasOwnProperty because the BasicEvent also falls through here otherwise\n if ((event as ChangeEvent) && event.hasOwnProperty('date')) {\n const { date, oldDate, isClear } = event as ChangeEvent;\n // this was to prevent a max call stack error\n // https://github.com/tempusdominus/core/commit/15a280507f5277b31b0b3319ab1edc7c19a000fb\n // todo see if this is still needed or if there's a cleaner way\n this._notifyChangeEventContext++;\n if (\n (date && oldDate && date.isSame(oldDate)) ||\n (!isClear && !date && !oldDate) ||\n this._notifyChangeEventContext > 1\n ) {\n this._notifyChangeEventContext = 0;\n return;\n }\n this._handleAfterChangeEvent(event as ChangeEvent);\n }\n\n this._element.dispatchEvent(\n new CustomEvent(event.type, { detail: event as any })\n );\n\n if ((window as any).jQuery) {\n const $ = (window as any).jQuery;\n $(this._element).trigger(event);\n }\n\n const publish = () => {\n // return if event is not subscribed\n if (!Array.isArray(this._subscribers[event.type])) {\n return;\n }\n\n // Trigger callback for each subscriber\n this._subscribers[event.type].forEach((callback) => {\n callback(event);\n });\n };\n\n publish();\n\n this._notifyChangeEventContext = 0;\n }\n\n /**\n * Fires a ViewUpdate event when, for example, the month view is changed.\n * @param {Unit} unit\n * @private\n */\n _viewUpdate(unit: Unit) {\n this._triggerEvent({\n type: Namespace.events.update,\n change: unit,\n viewDate: this._viewDate.clone,\n } as ViewUpdateEvent);\n }\n\n private _unsubscribe(eventName, index) {\n this._subscribers[eventName].splice(index, 1);\n }\n\n /**\n * Merges two Option objects together and validates options type\n * @param config new Options\n * @param mergeTo Options to merge into\n * @param includeDataset When true, the elements data-td attributes will be included in the\n * @private\n */\n private _initializeOptions(\n config: Options,\n mergeTo: Options,\n includeDataset = false\n ): Options {\n config = OptionConverter._mergeOptions(config, mergeTo);\n if (includeDataset)\n config = OptionConverter._dataToOptions(this._element, config);\n\n OptionConverter._validateConflcits(config);\n\n config.viewDate = config.viewDate.setLocale(config.localization.locale);\n\n if (!this._viewDate.isSame(config.viewDate)) {\n this._viewDate = config.viewDate;\n }\n\n /**\n * Sets the minimum view allowed by the picker. For example the case of only\n * allowing year and month to be selected but not date.\n */\n if (config.display.components.year) {\n this._minViewModeNumber = 2;\n }\n if (config.display.components.month) {\n this._minViewModeNumber = 1;\n }\n if (config.display.components.date) {\n this._minViewModeNumber = 0;\n }\n\n this._currentViewMode = Math.max(\n this._minViewModeNumber,\n this._currentViewMode\n );\n\n // Update view mode if needed\n if (\n DatePickerModes[this._currentViewMode].name !== config.display.viewMode\n ) {\n this._currentViewMode = Math.max(\n DatePickerModes.findIndex((x) => x.name === config.display.viewMode),\n this._minViewModeNumber\n );\n }\n\n // defaults the input format based on the components enabled\n if (config.hooks.inputFormat === undefined) {\n const components = config.display.components;\n config.hooks.inputFormat = (date: DateTime) => {\n return date.format({\n year: components.calendar && components.year ? 'numeric' : undefined,\n month:\n components.calendar && components.month ? '2-digit' : undefined,\n day: components.calendar && components.date ? '2-digit' : undefined,\n hour:\n components.clock && components.hours\n ? components.useTwentyfourHour\n ? '2-digit'\n : 'numeric'\n : undefined,\n minute:\n components.clock && components.minutes ? '2-digit' : undefined,\n second:\n components.clock && components.seconds ? '2-digit' : undefined,\n hour12: !components.useTwentyfourHour,\n });\n };\n }\n\n if (this._display?.isVisible) {\n this._display._update('all');\n }\n\n return config;\n }\n\n /**\n * Checks if an input field is being used, attempts to locate one and sets an\n * event listener if found.\n * @private\n */\n private _initializeInput() {\n if (this._element.tagName == 'INPUT') {\n this._input = this._element as HTMLInputElement;\n } else {\n let query = this._element.dataset.tdTargetInput;\n if (query == undefined || query == 'nearest') {\n this._input = this._element.querySelector('input');\n } else {\n this._input = this._element.querySelector(query);\n }\n }\n\n if (!this._input) return;\n\n this._input.addEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input.addEventListener('click', this._toggleClickEvent);\n }\n\n if (this._input.value) {\n this._inputChangeEvent();\n }\n }\n\n /**\n * Attempts to locate a toggle for the picker and sets an event listener\n * @private\n */\n private _initializeToggle() {\n if (this._options.display.inline) return;\n let query = this._element.dataset.tdTargetToggle;\n if (query == 'nearest') {\n query = '[data-td-toggle=\"datetimepicker\"]';\n }\n this._toggle =\n query == undefined ? this._element : this._element.querySelector(query);\n this._toggle.addEventListener('click', this._toggleClickEvent);\n }\n\n /**\n * If the option is enabled this will render the clock view after a date pick.\n * @param e change event\n * @private\n */\n private _handleAfterChangeEvent(e: ChangeEvent) {\n if (\n // options is disabled\n !this._options.promptTimeOnDateChange ||\n this._options.display.inline ||\n this._options.display.sideBySide ||\n // time is disabled\n !this._display._hasTime ||\n // clock component is already showing\n this._display.widget\n ?.getElementsByClassName(Namespace.css.show)[0]\n .classList.contains(Namespace.css.timeContainer)\n )\n return;\n\n // First time ever. If useCurrent option is set to true (default), do nothing\n // because the first date is selected automatically.\n // or date didn't change (time did) or date changed because time did.\n if (\n (!e.oldDate && this._options.useCurrent) ||\n (e.oldDate && e.date?.isSame(e.oldDate))\n ) {\n return;\n }\n\n clearTimeout(this._currentPromptTimeTimeout);\n this._currentPromptTimeTimeout = setTimeout(() => {\n if (this._display.widget) {\n this._action.do(\n {\n currentTarget: this._display.widget.querySelector(\n `.${Namespace.css.switch} div`\n ),\n },\n ActionTypes.togglePicker\n );\n }\n }, this._options.promptTimeOnDateChangeTransitionDelay);\n }\n\n /**\n * Event for when the input field changes. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _inputChangeEvent = () => {\n const setViewDate = () => {\n if (this.dates.lastPicked) this._viewDate = this.dates.lastPicked;\n };\n\n const value = this._input.value;\n if (this._options.multipleDates) {\n try {\n const valueSplit = value.split(this._options.multipleDatesSeparator);\n for (let i = 0; i < valueSplit.length; i++) {\n if (this._options.hooks.inputParse) {\n this.dates.set(\n this._options.hooks.inputParse(valueSplit[i]),\n i,\n 'input'\n );\n } else {\n this.dates.set(valueSplit[i], i, 'input');\n }\n }\n setViewDate();\n } catch {\n console.warn(\n 'TD: Something went wrong trying to set the multidate values from the input field.'\n );\n }\n } else {\n if (this._options.hooks.inputParse) {\n this.dates.set(this._options.hooks.inputParse(value), 0, 'input');\n } else {\n this.dates.set(value, 0, 'input');\n }\n setViewDate();\n }\n };\n\n /**\n * Event for when the toggle is clicked. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _toggleClickEvent = () => {\n this.toggle();\n };\n}\n\nexport {\n TempusDominus,\n Namespace,\n DefaultOptions,\n DateTime,\n Options,\n Unit,\n DateTimeFormatOptions,\n};\n"],"names":["Unit","SecondDisplay","createPopper"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tempus-dominus.js","sources":["../../src/js/datetime.ts","../../src/js/errors.ts","../../src/js/namespace.ts","../../src/js/conts.ts","../../src/js/display/collapse.ts","../../src/js/actions.ts","../../src/js/display/calendar/date-display.ts","../../src/js/display/calendar/month-display.ts","../../src/js/options.ts","../../src/js/dates.ts","../../src/js/display/calendar/year-display.ts","../../src/js/display/calendar/decade-display.ts","../../src/js/display/time/time-display.ts","../../src/js/display/time/hour-display.ts","../../src/js/display/time/minute-display.ts","../../src/js/display/time/second-display.ts","../../src/js/display/index.ts","../../src/js/validation.ts","../../src/js/tempus-dominus.ts"],"sourcesContent":["export enum Unit {\r\n seconds = 'seconds',\r\n minutes = 'minutes',\r\n hours = 'hours',\r\n date = 'date',\r\n month = 'month',\r\n year = 'year',\r\n}\r\n\r\nexport interface DateTimeFormatOptions extends Intl.DateTimeFormatOptions {\r\n timeStyle?: 'short' | 'medium' | 'long';\r\n dateStyle?: 'short' | 'medium' | 'long' | 'full';\r\n}\r\n\r\n/**\r\n * For the most part this object behaves exactly the same way\r\n * as the native Date object with a little extra spice.\r\n */\r\nexport class DateTime extends Date {\r\n /**\r\n * Used with Intl.DateTimeFormat\r\n */\r\n locale = 'default';\r\n\r\n /**\r\n * Chainable way to set the {@link locale}\r\n * @param value\r\n */\r\n setLocale(value: string): this {\r\n this.locale = value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Converts a plain JS date object to a DateTime object.\r\n * Doing this allows access to format, etc.\r\n * @param date\r\n */\r\n static convert(date: Date): DateTime {\r\n if (!date) throw `A date is required`;\r\n return new DateTime(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate(),\r\n date.getHours(),\r\n date.getMinutes(),\r\n date.getSeconds(),\r\n date.getMilliseconds()\r\n );\r\n }\r\n\r\n /**\r\n * Native date manipulations are not pure functions. This function creates a duplicate of the DateTime object.\r\n */\r\n get clone() {\r\n return new DateTime(\r\n this.year,\r\n this.month,\r\n this.date,\r\n this.hours,\r\n this.minutes,\r\n this.seconds,\r\n this.getMilliseconds()\r\n ).setLocale(this.locale);\r\n }\r\n\r\n /**\r\n * Sets the current date to the start of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).startOf('month')\r\n * would return April 1, 2021, 12:00:00.000 AM (midnight)\r\n * @param unit\r\n */\r\n startOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(0);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(0, 0);\r\n break;\r\n case 'hours':\r\n this.setMinutes(0, 0, 0);\r\n break;\r\n case 'date':\r\n this.setHours(0, 0, 0, 0);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(0 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.startOf(Unit.date);\r\n this.setDate(1);\r\n break;\r\n case 'year':\r\n this.startOf(Unit.date);\r\n this.setMonth(0, 1);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the current date to the end of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).endOf('month')\r\n * would return April 30, 2021, 11:59:59.999 PM\r\n * @param unit\r\n */\r\n endOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(999);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(59, 999);\r\n break;\r\n case 'hours':\r\n this.setMinutes(59, 59, 999);\r\n break;\r\n case 'date':\r\n this.setHours(23, 59, 59, 999);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(6 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.month);\r\n this.setDate(0);\r\n break;\r\n case 'year':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.year);\r\n this.setDate(0);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Change a {@link unit} value. Value can be positive or negative\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).manipulate(1, 'month')\r\n * would return May 30, 2021, 11:45:32.984 AM\r\n * @param value A positive or negative number\r\n * @param unit\r\n */\r\n manipulate(value: number, unit: Unit): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n this[unit] += value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns a string format.\r\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat\r\n * for valid templates and locale objects\r\n * @param template An object. Uses browser defaults otherwise.\r\n * @param locale Can be a string or an array of strings. Uses browser defaults otherwise.\r\n */\r\n format(template: DateTimeFormatOptions, locale = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, template).format(this);\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is before this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isBefore(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() < compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() < compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is after this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isAfter(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() > compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() > compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is same this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isSame(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() === compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n compare = DateTime.convert(compare);\r\n return (\r\n this.clone.startOf(unit).valueOf() === compare.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Check if this is between two other DateTimes, optionally looking at unit scale. The match is exclusive.\r\n * @param left\r\n * @param right\r\n * @param unit.\r\n * @param inclusivity. A [ indicates inclusion of a value. A ( indicates exclusion.\r\n * If the inclusivity parameter is used, both indicators must be passed.\r\n */\r\n isBetween(\r\n left: DateTime,\r\n right: DateTime,\r\n unit?: Unit,\r\n inclusivity: '()' | '[]' | '(]' | '[)' = '()'\r\n ): boolean {\r\n if (unit && this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n const leftInclusivity = inclusivity[0] === '(';\r\n const rightInclusivity = inclusivity[1] === ')';\r\n\r\n return (\r\n ((leftInclusivity\r\n ? this.isAfter(left, unit)\r\n : !this.isBefore(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isBefore(right, unit)\r\n : !this.isAfter(right, unit))) ||\r\n ((leftInclusivity\r\n ? this.isBefore(left, unit)\r\n : !this.isAfter(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isAfter(right, unit)\r\n : !this.isBefore(right, unit)))\r\n );\r\n }\r\n\r\n /**\r\n * Returns flattened object of the date. Does not include literals\r\n * @param locale\r\n * @param template\r\n */\r\n parts(\r\n locale = this.locale,\r\n template: any = { dateStyle: 'full', timeStyle: 'long' }\r\n ) {\r\n const parts = {};\r\n new Intl.DateTimeFormat(locale, template)\r\n .formatToParts(this)\r\n .filter((x) => x.type !== 'literal')\r\n .forEach((x) => (parts[x.type] = x.value));\r\n return parts;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getSeconds()\r\n */\r\n get seconds(): number {\r\n return this.getSeconds();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setSeconds()\r\n */\r\n set seconds(value: number) {\r\n this.setSeconds(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get secondsFormatted(): string {\r\n return this.format({ second: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMinutes()\r\n */\r\n get minutes(): number {\r\n return this.getMinutes();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMinutes()\r\n */\r\n set minutes(value: number) {\r\n this.setMinutes(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get minutesFormatted(): string {\r\n return this.format({ minute: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getHours()\r\n */\r\n get hours(): number {\r\n return this.getHours();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setHours()\r\n */\r\n set hours(value: number) {\r\n this.setHours(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get hoursFormatted(): string {\r\n return this.format({ hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Returns two digit hours but in twelve hour mode e.g. 13 -> 1\r\n */\r\n get twelveHoursFormatted(): string {\r\n return this.format({ hour12: true, hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Get the meridiem of the date. E.g. AM or PM.\r\n * If the {@link locale} provides a \"dayPeriod\" then this will be returned,\r\n * otherwise it will return AM or PM.\r\n * @param locale\r\n */\r\n meridiem(locale: string = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, {\r\n hour: 'numeric',\r\n hour12: true,\r\n } as any)\r\n .formatToParts(this)\r\n .find((p) => p.type === 'dayPeriod')?.value;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDate()\r\n */\r\n get date(): number {\r\n return this.getDate();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setDate()\r\n */\r\n set date(value: number) {\r\n this.setDate(value);\r\n }\r\n\r\n /**\r\n * Return two digit date\r\n */\r\n get dateFormatted(): string {\r\n return this.date < 10 ? `0${this.date}` : `${this.date}`;\r\n }\r\n\r\n // https://github.com/you-dont-need/You-Dont-Need-Momentjs#week-of-year\r\n /**\r\n * Gets the week of the year\r\n */\r\n get week(): number {\r\n const startOfYear = new Date(this.year, 0, 1);\r\n startOfYear.setDate(\r\n startOfYear.getDate() + (1 - (startOfYear.getDay() % 7))\r\n );\r\n return Math.round((this.valueOf() - startOfYear.valueOf()) / 604800000) + 1;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDay()\r\n */\r\n get weekDay(): number {\r\n return this.getDay();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMonth()\r\n */\r\n get month(): number {\r\n return this.getMonth();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMonth()\r\n */\r\n set month(value: number) {\r\n this.setMonth(value);\r\n }\r\n\r\n /**\r\n * Return two digit, human expected month. E.g. January = 1, December = 12\r\n */\r\n get monthFormatted(): string {\r\n return this.month + 1 < 10 ? `0${this.month}` : `${this.month}`;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getFullYear()\r\n */\r\n get year(): number {\r\n return this.getFullYear();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setFullYear()\r\n */\r\n set year(value: number) {\r\n this.setFullYear(value);\r\n }\r\n}\r\n","import Namespace from './namespace';\n\nexport class TdError extends Error {\n code: number;\n}\n\nexport class ErrorMessages {\n private base = 'TD:';\n\n //#region out to console\n\n /**\n * Throws an error indicating that a key in the options object is invalid.\n * @param optionName\n */\n unexpectedOption(optionName: string) {\n const error = new TdError(\n `${this.base} Unexpected option: ${optionName} does not match a known option.`\n );\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error indicating that one more keys in the options object is invalid.\n * @param optionName\n */\n unexpectedOptions(optionName: string[]) {\n const error = new TdError(`${this.base}: ${optionName.join(', ')}`);\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error when an option is provide an unsupported value.\n * For example a value of 'cheese' for toolbarPlacement which only supports\n * 'top', 'bottom', 'default'.\n * @param optionName\n * @param badValue\n * @param validOptions\n */\n unexpectedOptionValue(\n optionName: string,\n badValue: string,\n validOptions: string[]\n ) {\n const error = new TdError(\n `${\n this.base\n } Unexpected option value: ${optionName} does not accept a value of \"${badValue}\". Valid values are: ${validOptions.join(\n ', '\n )}`\n );\n error.code = 2;\n throw error;\n }\n\n /**\n * Throws an error when an option value is the wrong type.\n * For example a string value was provided to multipleDates which only\n * supports true or false.\n * @param optionName\n * @param badType\n * @param expectedType\n */\n typeMismatch(optionName: string, badType: string, expectedType: string) {\n const error = new TdError(\n `${this.base} Mismatch types: ${optionName} has a type of ${badType} instead of the required ${expectedType}`\n );\n error.code = 3;\n throw error;\n }\n\n /**\n * Throws an error when an option value is outside of the expected range.\n * For example restrictions.daysOfWeekDisabled excepts a value between 0 and 6.\n * @param optionName\n * @param lower\n * @param upper\n */\n numbersOutOfRage(optionName: string, lower: number, upper: number) {\n const error = new TdError(\n `${this.base} ${optionName} expected an array of number between ${lower} and ${upper}.`\n );\n error.code = 4;\n throw error;\n }\n\n /**\n * Throws an error when a value for a date options couldn't be parsed. Either\n * the option was an invalide string or an invalid Date object.\n * @param optionName\n * @param date\n * @param soft If true, logs a warning instead of an error.\n */\n failedToParseDate(optionName: string, date: any, soft = false) {\n const error = new TdError(\n `${this.base} Could not correctly parse \"${date}\" to a date for ${optionName}.`\n );\n error.code = 5;\n if (!soft) throw error;\n console.warn(error);\n }\n\n /**\n * Throws when an element to attach to was not provided in the constructor.\n */\n mustProvideElement() {\n const error = new TdError(`${this.base} No element was provided.`);\n error.code = 6;\n throw error;\n }\n\n /**\n * Throws if providing an array for the events to subscribe method doesn't have\n * the same number of callbacks. E.g., subscribe([1,2], [1])\n */\n subscribeMismatch() {\n const error = new TdError(\n `${this.base} The subscribed events does not match the number of callbacks`\n );\n error.code = 7;\n throw error;\n }\n\n /**\n * Throws if the configuration has conflicting rules e.g. minDate is after maxDate\n */\n conflictingConfiguration(message?: string) {\n const error = new TdError(\n `${this.base} A configuration value conflicts with another rule. ${message}`\n );\n error.code = 8;\n throw error;\n }\n\n /**\n * Logs a warning if a date option value is provided as a string, instead of\n * a date/datetime object.\n */\n dateString() {\n console.warn(\n `${this.base} Using a string for date options is not recommended unless you specify an ISO string.`\n );\n }\n\n //#endregion\n\n //#region used with notify.error\n\n /**\n * Used with an Error Event type if the user selects a date that\n * fails restriction validation.\n */\n failedToSetInvalidDate = 'Failed to set invalid date';\n\n /**\n * Used with an Error Event type when a user changes the value of the\n * input field directly, and does not provide a valid date.\n */\n failedToParseInput = 'Failed parse input field';\n\n //#endregion\n}\n","import { ErrorMessages } from './errors';\n// this is not the way I want this to stay but nested classes seemed to blown up once its compiled.\nconst NAME = 'tempus-dominus',\n version = '6.0.0-alpha1',\n dataKey = 'td';\n\n/**\n * Events\n */\nclass Events {\n key = `.${dataKey}`;\n\n /**\n * Change event. Fired when the user selects a date.\n * See also EventTypes.ChangeEvent\n */\n change = `change${this.key}`;\n\n /**\n * Emit when the view changes for example from month view to the year view.\n * See also EventTypes.ViewUpdateEvent\n */\n update = `update${this.key}`;\n\n /**\n * Emits when a selected date or value from the input field fails to meet the provided validation rules.\n * See also EventTypes.FailEvent\n */\n error = `error${this.key}`;\n\n /**\n * Show event\n * @event Events#show\n */\n show = `show${this.key}`;\n\n /**\n * Hide event\n * @event Events#hide\n */\n hide = `hide${this.key}`;\n\n // blur and focus are used in the jQuery provider but are otherwise unused.\n // keyup/down will be used later for keybinding options\n\n blur = `blur${this.key}`;\n focus = `focus${this.key}`;\n keyup = `keyup${this.key}`;\n keydown = `keydown${this.key}`;\n}\n\nclass Css {\n /**\n * The outer element for the widget.\n */\n widget = `${NAME}-widget`;\n\n /**\n * Hold the previous, next and switcher divs\n */\n calendarHeader = 'calendar-header';\n\n /**\n * The element for the action to change the calendar view. E.g. month -> year.\n */\n switch = 'picker-switch';\n\n /**\n * The elements for all of the toolbar options\n */\n toolbar = 'toolbar';\n\n /**\n * Disables the hover and rounding affect.\n */\n noHighlight = 'no-highlight';\n\n /**\n * Applied to the widget element when the side by side option is in use.\n */\n sideBySide = 'timepicker-sbs';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> July\n */\n previous = 'previous';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> September\n */\n next = 'next';\n\n /**\n * Applied to any action that would violate any restriction options. ALso applied\n * to an input field if the disabled function is called.\n */\n disabled = 'disabled';\n\n /**\n * Applied to any date that is less than requested view,\n * e.g. the last day of the previous month.\n */\n old = 'old';\n\n /**\n * Applied to any date that is greater than of requested view,\n * e.g. the last day of the previous month.\n */\n new = 'new';\n\n /**\n * Applied to any date that is currently selected.\n */\n active = 'active';\n\n //#region date element\n\n /**\n * The outer most element for the calendar view.\n */\n dateContainer = 'date-container';\n\n /**\n * The outer most element for the decades view.\n */\n decadesContainer = `${this.dateContainer}-decades`;\n\n /**\n * Applied to elements within the decades container, e.g. 2020, 2030\n */\n decade = 'decade';\n\n /**\n * The outer most element for the years view.\n */\n yearsContainer = `${this.dateContainer}-years`;\n\n /**\n * Applied to elements within the years container, e.g. 2021, 2021\n */\n year = 'year';\n\n /**\n * The outer most element for the month view.\n */\n monthsContainer = `${this.dateContainer}-months`;\n\n /**\n * Applied to elements within the month container, e.g. January, February\n */\n month = 'month';\n\n /**\n * The outer most element for the calendar view.\n */\n daysContainer = `${this.dateContainer}-days`;\n\n /**\n * Applied to elements within the day container, e.g. 1, 2..31\n */\n day = 'day';\n\n /**\n * If display.calendarWeeks is enabled, a column displaying the week of year\n * is shown. This class is applied to each cell in that column.\n */\n calendarWeeks = 'cw';\n\n /**\n * Applied to the first row of the calendar view, e.g. Sunday, Monday\n */\n dayOfTheWeek = 'dow';\n\n /**\n * Applied to the current date on the calendar view.\n */\n today = 'today';\n\n /**\n * Applied to the locale's weekend dates on the calendar view, e.g. Sunday, Saturday\n */\n weekend = 'weekend';\n\n //#endregion\n\n //#region time element\n\n /**\n * The outer most element for all time related elements.\n */\n timeContainer = 'time-container';\n\n /**\n * Applied the separator columns between time elements, e.g. hour *:* minute *:* second\n */\n separator = 'separator';\n\n /**\n * The outer most element for the clock view.\n */\n clockContainer = `${this.timeContainer}-clock`;\n\n /**\n * The outer most element for the hours selection view.\n */\n hourContainer = `${this.timeContainer}-hour`;\n\n /**\n * The outer most element for the minutes selection view.\n */\n minuteContainer = `${this.timeContainer}-minute`;\n\n /**\n * The outer most element for the seconds selection view.\n */\n secondContainer = `${this.timeContainer}-second`;\n\n /**\n * Applied to each element in the hours selection view.\n */\n hour = 'hour';\n\n /**\n * Applied to each element in the minutes selection view.\n */\n minute = 'minute';\n\n /**\n * Applied to each element in the seconds selection view.\n */\n second = 'second';\n\n /**\n * Applied AM/PM toggle button.\n */\n toggleMeridiem = 'toggleMeridiem';\n\n //#endregion\n\n //#region collapse\n\n /**\n * Applied the element of the current view mode, e.g. calendar or clock.\n */\n show = 'show';\n\n /**\n * Applied to the currently showing view mode during a transition\n * between calendar and clock views\n */\n collapsing = 'td-collapsing';\n\n /**\n * Applied to the currently hidden view mode.\n */\n collapse = 'td-collapse';\n\n //#endregion\n\n /**\n * Applied to the widget when the option display.inline is enabled.\n */\n inline = 'inline';\n}\n\nexport default class Namespace {\n static NAME = NAME;\n // noinspection JSUnusedGlobalSymbols\n static version = version;\n static dataKey = dataKey;\n\n static events = new Events();\n\n static css = new Css();\n\n static errorMessages = new ErrorMessages();\n}\n","import { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options from './options';\n\nconst DefaultOptions: Options = {\n restrictions: {\n minDate: undefined,\n maxDate: undefined,\n disabledDates: [],\n enabledDates: [],\n daysOfWeekDisabled: [],\n disabledTimeIntervals: [],\n disabledHours: [],\n enabledHours: [],\n },\n display: {\n icons: {\n type: 'icons',\n time: 'fas fa-clock',\n date: 'fas fa-calendar',\n up: 'fas fa-arrow-up',\n down: 'fas fa-arrow-down',\n previous: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n today: 'fas fa-calendar-check',\n clear: 'fas fa-trash',\n close: 'fas fa-times',\n },\n sideBySide: false,\n calendarWeeks: false,\n viewMode: 'calendar',\n toolbarPlacement: 'bottom',\n keepOpen: false,\n buttons: {\n today: false,\n clear: false,\n close: false,\n },\n components: {\n calendar: true,\n date: true,\n month: true,\n year: true,\n decades: true,\n clock: true,\n hours: true,\n minutes: true,\n seconds: false,\n useTwentyfourHour: false,\n },\n inline: false,\n },\n stepping: 1,\n useCurrent: true,\n defaultDate: undefined,\n localization: {\n today: 'Go to today',\n clear: 'Clear selection',\n close: 'Close the picker',\n selectMonth: 'Select Month',\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n selectYear: 'Select Year',\n previousYear: 'Previous Year',\n nextYear: 'Next Year',\n selectDecade: 'Select Decade',\n previousDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n previousCentury: 'Previous Century',\n nextCentury: 'Next Century',\n pickHour: 'Pick Hour',\n incrementHour: 'Increment Hour',\n decrementHour: 'Decrement Hour',\n pickMinute: 'Pick Minute',\n incrementMinute: 'Increment Minute',\n decrementMinute: 'Decrement Minute',\n pickSecond: 'Pick Second',\n incrementSecond: 'Increment Second',\n decrementSecond: 'Decrement Second',\n toggleMeridiem: 'Toggle Meridiem',\n selectTime: 'Select Time',\n selectDate: 'Select Date',\n dayViewHeaderFormat: 'long',\n locale: 'default',\n },\n keepInvalid: false,\n debug: false,\n allowInputToggle: false,\n viewDate: new DateTime(),\n multipleDates: false,\n multipleDatesSeparator: '; ',\n promptTimeOnDateChange: false,\n promptTimeOnDateChangeTransitionDelay: 200,\n hooks: {\n inputParse: undefined,\n inputFormat: undefined,\n },\n};\n\nconst DatePickerModes: {\n name: string;\n className: string;\n unit: Unit;\n step: number;\n}[] = [\n {\n name: 'calendar',\n className: Namespace.css.daysContainer,\n unit: Unit.month,\n step: 1,\n },\n {\n name: 'months',\n className: Namespace.css.monthsContainer,\n unit: Unit.year,\n step: 1,\n },\n {\n name: 'years',\n className: Namespace.css.yearsContainer,\n unit: Unit.year,\n step: 10,\n },\n {\n name: 'decades',\n className: Namespace.css.decadesContainer,\n unit: Unit.year,\n step: 100,\n },\n];\n\nexport { DefaultOptions, DatePickerModes, Namespace };\n","import Namespace from '../namespace';\n\n/**\n * Provides a collapse functionality to the view changes\n */\nexport default class Collapse {\n private timeOut;\n\n /**\n * Flips the show/hide state of `target`\n * @param target html element to affect.\n */\n toggle(target: HTMLElement, callback = undefined) {\n if (target.classList.contains(Namespace.css.show)) {\n this.hide(target, callback);\n } else {\n this.show(target, callback);\n }\n }\n\n /**\n * If `target` is not already showing, then show after the animation.\n * @param target\n */\n show(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse, Namespace.css.show);\n target.style.height = '';\n this.timeOut = null;\n if (callback) callback();\n };\n\n target.style.height = '0';\n target.classList.remove(Namespace.css.collapse);\n target.classList.add(Namespace.css.collapsing);\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n target.style.height = `${target.scrollHeight}px`;\n }\n\n /**\n * If `target` is not already hidden, then hide after the animation.\n * @param target HTML Element\n */\n hide(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n !target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse);\n this.timeOut = null;\n };\n\n target.style.height = `${target.getBoundingClientRect()['height']}px`;\n\n const reflow = (element) => element.offsetHeight;\n\n reflow(target);\n\n target.classList.remove(Namespace.css.collapse, Namespace.css.show);\n target.classList.add(Namespace.css.collapsing);\n target.style.height = '';\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n }\n\n /**\n * Gets the transition duration from the `element` by getting css properties\n * `transition-duration` and `transition-delay`\n * @param element HTML Element\n */\n private getTransitionDurationFromElement = (element: HTMLElement) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } =\n window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) +\n Number.parseFloat(transitionDelay)) *\n 1000\n );\n };\n}\n","import { DatePickerModes } from './conts.js';\nimport { DateTime, Unit } from './datetime';\nimport { TempusDominus } from './tempus-dominus';\nimport Collapse from './display/collapse';\nimport Namespace from './namespace';\n\n/**\n *\n */\nexport default class Actions {\n private _context: TempusDominus;\n private collapse: Collapse;\n\n constructor(context: TempusDominus) {\n this._context = context;\n this.collapse = new Collapse();\n }\n\n /**\n * Performs the selected `action`. See ActionTypes\n * @param e This is normally a click event\n * @param action If not provided, then look for a [data-action]\n */\n do(e: any, action?: ActionTypes) {\n const currentTarget = e.currentTarget;\n if (currentTarget.classList.contains(Namespace.css.disabled)) return false;\n action = action || currentTarget.dataset.action;\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n /**\n * Common function to manipulate {@link lastPicked} by `unit`\n * @param unit\n * @param value Value to change by\n */\n const manipulateAndSet = (unit: Unit, value = 1) => {\n const newDate = lastPicked.manipulate(value, unit);\n if (this._context._validation.isValid(newDate, unit)) {\n this._context.dates._setValue(\n newDate,\n this._context.dates.lastPickedIndex\n );\n }\n };\n\n switch (action) {\n case ActionTypes.next:\n case ActionTypes.previous:\n const { unit, step } = DatePickerModes[this._context._currentViewMode];\n if (action === ActionTypes.next)\n this._context._viewDate.manipulate(step, unit);\n else this._context._viewDate.manipulate(step * -1, unit);\n this._context._viewUpdate(unit);\n\n this._context._display._showMode();\n break;\n case ActionTypes.pickerSwitch:\n this._context._display._showMode(1);\n this._context._viewUpdate(\n DatePickerModes[this._context._currentViewMode].unit\n );\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.selectMonth:\n case ActionTypes.selectYear:\n case ActionTypes.selectDecade:\n const value = +currentTarget.dataset.value;\n switch (action) {\n case ActionTypes.selectMonth:\n this._context._viewDate.month = value;\n this._context._viewUpdate(Unit.month);\n break;\n case ActionTypes.selectYear:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n case ActionTypes.selectDecade:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n }\n\n if (\n this._context._currentViewMode === this._context._minViewModeNumber\n ) {\n this._context.dates._setValue(\n this._context._viewDate,\n this._context.dates.lastPickedIndex\n );\n if (!this._context._options.display.inline) {\n this._context._display.hide();\n }\n } else {\n this._context._display._showMode(-1);\n }\n break;\n case ActionTypes.selectDay:\n const day = this._context._viewDate.clone;\n if (currentTarget.classList.contains(Namespace.css.old)) {\n day.manipulate(-1, Unit.month);\n }\n if (currentTarget.classList.contains(Namespace.css.new)) {\n day.manipulate(1, Unit.month);\n }\n\n day.date = +currentTarget.dataset.day;\n let index = 0;\n if (this._context._options.multipleDates) {\n index = this._context.dates.pickedIndex(day, Unit.date);\n if (index !== -1) {\n this._context.dates._setValue(null, index); //deselect multi-date\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex + 1\n );\n }\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex\n );\n }\n\n if (\n !this._context._display._hasTime &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline &&\n !this._context._options.multipleDates\n ) {\n this._context._display.hide();\n }\n break;\n case ActionTypes.selectHour:\n let hour = +currentTarget.dataset.value;\n if (\n lastPicked.hours >= 12 &&\n !this._context._options.display.components.useTwentyfourHour\n )\n hour += 12;\n lastPicked.hours = hour;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.minutes &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectMinute:\n lastPicked.minutes = +currentTarget.dataset.value;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.seconds &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectSecond:\n lastPicked.seconds = +currentTarget.dataset.value;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.incrementHours:\n manipulateAndSet(Unit.hours);\n break;\n case ActionTypes.incrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping);\n break;\n case ActionTypes.incrementSeconds:\n manipulateAndSet(Unit.seconds);\n break;\n case ActionTypes.decrementHours:\n manipulateAndSet(Unit.hours, -1);\n break;\n case ActionTypes.decrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping * -1);\n break;\n case ActionTypes.decrementSeconds:\n manipulateAndSet(Unit.seconds, -1);\n break;\n case ActionTypes.toggleMeridiem:\n manipulateAndSet(\n Unit.hours,\n this._context.dates.lastPicked.hours >= 12 ? -12 : 12\n );\n break;\n case ActionTypes.togglePicker:\n this._context._display.widget\n .querySelectorAll(\n `.${Namespace.css.dateContainer}, .${Namespace.css.timeContainer}`\n )\n .forEach((htmlElement: HTMLElement) =>\n this.collapse.toggle(htmlElement)\n );\n if (\n currentTarget.getAttribute('title') ===\n this._context._options.localization.selectDate\n ) {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectTime\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.time\n ).outerHTML;\n\n this._context._display._updateCalendarHeader();\n } else {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectDate\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.date\n ).outerHTML;\n this.do(e, ActionTypes.showClock);\n this._context._display._update('clock');\n }\n break;\n case ActionTypes.showClock:\n case ActionTypes.showHours:\n case ActionTypes.showMinutes:\n case ActionTypes.showSeconds:\n this._context._display.widget\n .querySelectorAll(`.${Namespace.css.timeContainer} > div`)\n .forEach(\n (htmlElement: HTMLElement) => (htmlElement.style.display = 'none')\n );\n\n let classToUse = '';\n switch (action) {\n case ActionTypes.showClock:\n classToUse = Namespace.css.clockContainer;\n this._context._display._update('clock');\n break;\n case ActionTypes.showHours:\n classToUse = Namespace.css.hourContainer;\n this._context._display._update(Unit.hours);\n break;\n case ActionTypes.showMinutes:\n classToUse = Namespace.css.minuteContainer;\n this._context._display._update(Unit.minutes);\n break;\n case ActionTypes.showSeconds:\n classToUse = Namespace.css.secondContainer;\n this._context._display._update(Unit.seconds);\n break;\n }\n\n ((\n this._context._display.widget.getElementsByClassName(classToUse)[0]\n )).style.display = 'grid';\n break;\n case ActionTypes.clear:\n this._context.dates._setValue(null);\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.close:\n this._context._display.hide();\n break;\n case ActionTypes.today:\n const today = new DateTime().setLocale(\n this._context._options.localization.locale\n );\n this._context._viewDate = today;\n if (this._context._validation.isValid(today, Unit.date))\n this._context.dates._setValue(\n today,\n this._context.dates.lastPickedIndex\n );\n break;\n }\n }\n}\n\nexport enum ActionTypes {\n next = 'next',\n previous = 'previous',\n pickerSwitch = 'pickerSwitch',\n selectMonth = 'selectMonth',\n selectYear = 'selectYear',\n selectDecade = 'selectDecade',\n selectDay = 'selectDay',\n selectHour = 'selectHour',\n selectMinute = 'selectMinute',\n selectSecond = 'selectSecond',\n incrementHours = 'incrementHours',\n incrementMinutes = 'incrementMinutes',\n incrementSeconds = 'incrementSeconds',\n decrementHours = 'decrementHours',\n decrementMinutes = 'decrementMinutes',\n decrementSeconds = 'decrementSeconds',\n toggleMeridiem = 'toggleMeridiem',\n togglePicker = 'togglePicker',\n showClock = 'showClock',\n showHours = 'showHours',\n showMinutes = 'showMinutes',\n showSeconds = 'showSeconds',\n clear = 'clear',\n close = 'close',\n today = 'today',\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `date`\r\n */\r\nexport default class DateDisplay {\r\n private _context: TempusDominus;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.daysContainer);\r\n\r\n container.append(...this._daysOfTheWeek());\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(Namespace.css.calendarWeeks, Namespace.css.noHighlight);\r\n container.appendChild(div);\r\n }\r\n\r\n for (let i = 0; i < 42; i++) {\r\n if (i !== 0 && i % 7 === 0) {\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n container.appendChild(div);\r\n }\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDay);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update(): void {\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.daysContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.daysContainer,\r\n this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n })\r\n );\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(-1, Unit.month),\r\n Unit.month\r\n )\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(1, Unit.month),\r\n Unit.month\r\n )\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.month)\r\n .startOf('weekDay')\r\n .manipulate(12, Unit.hours);\r\n\r\n container\r\n .querySelectorAll(\r\n `[data-action=\"${ActionTypes.selectDay}\"], .${Namespace.css.calendarWeeks}`\r\n )\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (\r\n this._context._options.display.calendarWeeks &&\r\n containerClone.classList.contains(Namespace.css.calendarWeeks)\r\n ) {\r\n if (containerClone.innerText === '#') return;\r\n containerClone.innerText = `${innerDate.week}`;\r\n return;\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.day);\r\n\r\n if (innerDate.isBefore(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.old);\r\n }\r\n if (innerDate.isAfter(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.new);\r\n }\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.date)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.date)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n if (innerDate.isSame(new DateTime(), Unit.date)) {\r\n classes.push(Namespace.css.today);\r\n }\r\n if (innerDate.weekDay === 0 || innerDate.weekDay === 6) {\r\n classes.push(Namespace.css.weekend);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`\r\n );\r\n containerClone.setAttribute(\r\n 'data-day',\r\n `${innerDate.date}`\r\n );\r\n containerClone.innerText = innerDate.format({ day: \"numeric\" });\r\n innerDate.manipulate(1, Unit.date);\r\n });\r\n }\r\n\r\n /***\r\n * Generates an html row that contains the days of the week.\r\n * @private\r\n */\r\n private _daysOfTheWeek(): HTMLElement[] {\r\n let innerDate = this._context._viewDate.clone\r\n .startOf('weekDay')\r\n .startOf(Unit.date);\r\n const row = [];\r\n document.createElement('div');\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = '#';\r\n row.push(htmlDivElement);\r\n }\r\n\r\n for (let i = 0; i < 7; i++) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.dayOfTheWeek,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = innerDate.format({ weekday: 'short' });\r\n innerDate.manipulate(1, Unit.date);\r\n row.push(htmlDivElement);\r\n }\r\n\r\n return row;\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `month`\n */\nexport default class MonthDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.monthsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMonth);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.monthsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.monthsContainer,\n this._context._viewDate.format({ year: 'numeric' })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.year),\n Unit.year\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.year),\n Unit.year\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone.startOf(Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMonth}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.month);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.month)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.month)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${index}`);\n containerClone.innerText = `${innerDate.format({ month: 'short' })}`;\n innerDate.manipulate(1, Unit.month);\n });\n }\n}\n","import { DateTime, DateTimeFormatOptions } from './datetime';\nimport Namespace from './namespace';\nimport { DefaultOptions } from './conts';\nimport { TempusDominus } from './tempus-dominus';\n\nexport default interface Options {\n restrictions: {\n minDate: DateTime;\n maxDate: DateTime;\n enabledDates: DateTime[];\n disabledDates: DateTime[];\n enabledHours: number[];\n disabledHours: number[];\n disabledTimeIntervals: { from: DateTime; to: DateTime }[];\n daysOfWeekDisabled: number[];\n };\n display: {\n toolbarPlacement: 'top' | 'bottom';\n components: {\n calendar: boolean;\n date: boolean;\n month: boolean;\n year: boolean;\n decades: boolean;\n clock: boolean;\n hours: boolean;\n minutes: boolean;\n seconds: boolean;\n useTwentyfourHour: boolean;\n };\n buttons: { today: boolean; close: boolean; clear: boolean };\n calendarWeeks: boolean;\n icons: {\n date: string;\n next: string;\n previous: string;\n today: string;\n clear: string;\n time: string;\n up: string;\n type: 'icons' | 'sprites';\n down: string;\n close: string;\n };\n viewMode: 'clock' | 'calendar' | 'months' | 'years' | 'decades';\n sideBySide: boolean;\n inline: boolean;\n keepOpen: boolean;\n };\n stepping: number;\n useCurrent: boolean;\n defaultDate: DateTime;\n localization: {\n nextMonth: string;\n pickHour: string;\n incrementSecond: string;\n nextDecade: string;\n selectDecade: string;\n dayViewHeaderFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n decrementHour: string;\n selectDate: string;\n incrementHour: string;\n previousCentury: string;\n decrementSecond: string;\n today: string;\n previousMonth: string;\n selectYear: string;\n pickSecond: string;\n nextCentury: string;\n close: string;\n incrementMinute: string;\n selectTime: string;\n clear: string;\n toggleMeridiem: string;\n selectMonth: string;\n decrementMinute: string;\n pickMinute: string;\n nextYear: string;\n previousYear: string;\n previousDecade: string;\n locale: string;\n };\n keepInvalid: boolean;\n debug: boolean;\n allowInputToggle: boolean;\n viewDate: DateTime;\n multipleDates: boolean;\n multipleDatesSeparator: string;\n promptTimeOnDateChange: boolean;\n promptTimeOnDateChangeTransitionDelay: number;\n hooks: {\n inputParse: (context: TempusDominus, value: any) => DateTime;\n inputFormat: (context: TempusDominus, date: DateTime) => string;\n };\n}\n\nexport class OptionConverter {\n static _mergeOptions(providedOptions: Options, mergeTo: Options): Options {\n const newOptions = {} as Options;\n let path = '';\n const ignoreProperties = ['inputParse', 'inputFormat'];\n\n const processKey = (key, value, providedType, defaultType) => {\n switch (key) {\n case 'defaultDate': {\n const dateTime = this._dateConversion(value, 'defaultDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'defaultDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'viewDate': {\n const dateTime = this._dateConversion(value, 'viewDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'viewDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'minDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.minDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.minDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'maxDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.maxDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.maxDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'disabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.disabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.disabledHours',\n 0,\n 23\n );\n return value;\n case 'enabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.enabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.enabledHours',\n 0,\n 23\n );\n return value;\n case 'daysOfWeekDisabled':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.daysOfWeekDisabled',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 6).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.daysOfWeekDisabled',\n 0,\n 6\n );\n return value;\n case 'enabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.enabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.disabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledTimeIntervals':\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n key,\n providedType,\n 'array of { from: DateTime|Date, to: DateTime|Date }'\n );\n }\n const valueObject = value as { from: any; to: any }[];\n for (let i = 0; i < valueObject.length; i++) {\n Object.keys(valueObject[i]).forEach((vk) => {\n const subOptionName = `${key}[${i}].${vk}`;\n let d = valueObject[i][vk];\n const dateTime = this._dateConversion(d, subOptionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n subOptionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n valueObject[i][vk] = dateTime;\n });\n }\n return valueObject;\n case 'toolbarPlacement':\n case 'type':\n case 'viewMode':\n case 'dayViewHeaderFormat':\n const optionValues = {\n toolbarPlacement: ['top', 'bottom', 'default'],\n type: ['icons', 'sprites'],\n viewMode: ['clock', 'calendar', 'months', 'years', 'decades'],\n dayViewHeaderFormat: [\n 'numeric',\n '2-digit',\n 'long',\n 'short',\n 'narrow',\n ],\n };\n const keyOptions = optionValues[key];\n if (!keyOptions.includes(value))\n Namespace.errorMessages.unexpectedOptionValue(\n path.substring(1),\n value,\n keyOptions\n );\n\n return value;\n case 'inputParse':\n case 'inputFormat':\n return value;\n default:\n switch (defaultType) {\n case 'boolean':\n return value === 'true' || value === true;\n case 'number':\n return +value;\n case 'string':\n return value.toString();\n case 'object':\n return {};\n case 'function':\n return value;\n default:\n Namespace.errorMessages.typeMismatch(\n path.substring(1),\n providedType,\n defaultType\n );\n }\n }\n };\n\n /**\n * The spread operator caused sub keys to be missing after merging.\n * This is to fix that issue by using spread on the child objects first.\n * Also handles complex options like disabledDates\n * @param provided An option from new providedOptions\n * @param mergeOption Default option to compare types against\n * @param copyTo Destination object. This was add to prevent reference copies\n */\n const spread = (provided, mergeOption, copyTo) => {\n const unsupportedOptions = Object.keys(provided).filter(\n (x) => !Object.keys(mergeOption).includes(x)\n );\n if (unsupportedOptions.length > 0) {\n const flattenedOptions = OptionConverter._flattenDefaultOptions;\n\n const errors = unsupportedOptions.map((x) => {\n let error = `\"${path.substring(1)}.${x}\" in not a known option.`;\n let didYouMean = flattenedOptions.find((y) => y.includes(x));\n if (didYouMean) error += `Did you mean \"${didYouMean}\"?`;\n return error;\n });\n Namespace.errorMessages.unexpectedOptions(errors);\n }\n Object.keys(mergeOption).forEach((key) => {\n const defaultOptionValue = mergeOption[key];\n let providedType = typeof provided[key];\n let defaultType = typeof defaultOptionValue;\n let value = provided[key];\n if (!provided.hasOwnProperty(key)) {\n if (\n defaultType === 'undefined' ||\n (value?.length === 0 && Array.isArray(defaultOptionValue))\n ) {\n copyTo[key] = defaultOptionValue;\n return;\n }\n provided[key] = defaultOptionValue;\n value = provided[key];\n }\n path += `.${key}`;\n copyTo[key] = processKey(key, value, providedType, defaultType);\n\n if (\n typeof defaultOptionValue !== 'object' ||\n ignoreProperties.includes(key)\n ) {\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n return;\n }\n if (!Array.isArray(provided[key])) {\n spread(provided[key], defaultOptionValue, copyTo[key]);\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n }\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n });\n };\n spread(providedOptions, mergeTo, newOptions);\n\n return newOptions;\n }\n\n static _dataToOptions(element, options: Options): Options {\n const eData = element.dataset;\n if (\n !eData ||\n Object.keys(eData).length === 0 ||\n eData.constructor !== DOMStringMap\n )\n return options;\n let dataOptions = {} as Options;\n\n // because dataset returns camelCase including the 'td' key the option\n // key won't align\n const objectToNormalized = (object) => {\n const lowered = {};\n Object.keys(object).forEach((x) => {\n lowered[x.toLowerCase()] = x;\n });\n\n return lowered;\n };\n\n const rabbitHole = (\n split: string[],\n index: number,\n optionSubgroup: {},\n value: any\n ) => {\n // first round = display { ... }\n const normalizedOptions = objectToNormalized(optionSubgroup);\n\n const keyOption = normalizedOptions[split[index].toLowerCase()];\n const internalObject = {};\n\n if (keyOption === undefined) return internalObject;\n\n // if this is another object, continue down the rabbit hole\n if (optionSubgroup[keyOption].constructor === Object) {\n index++;\n internalObject[keyOption] = rabbitHole(\n split,\n index,\n optionSubgroup[keyOption],\n value\n );\n } else {\n internalObject[keyOption] = value;\n }\n return internalObject;\n };\n const optionsLower = objectToNormalized(options);\n\n Object.keys(eData)\n .filter((x) => x.startsWith(Namespace.dataKey))\n .map((x) => x.substring(2))\n .forEach((key) => {\n let keyOption = optionsLower[key.toLowerCase()];\n\n // dataset merges dashes to camelCase... yay\n // i.e. key = display_components_seconds\n if (key.includes('_')) {\n // [display, components, seconds]\n const split = key.split('_');\n // display\n keyOption = optionsLower[split[0].toLowerCase()];\n if (\n keyOption !== undefined &&\n options[keyOption].constructor === Object\n ) {\n dataOptions[keyOption] = rabbitHole(\n split,\n 1,\n options[keyOption],\n eData[`td${key}`]\n );\n }\n }\n // or key = multipleDate\n else if (keyOption !== undefined) {\n dataOptions[keyOption] = eData[`td${key}`];\n }\n });\n\n return this._mergeOptions(dataOptions, options);\n }\n\n /**\n * Attempts to prove `d` is a DateTime or Date or can be converted into one.\n * @param d If a string will attempt creating a date from it.\n * @private\n */\n static _dateTypeCheck(d: any): DateTime | null {\n if (d.constructor.name === DateTime.name) return d;\n if (d.constructor.name === Date.name) {\n return DateTime.convert(d);\n }\n if (typeof d === typeof '') {\n const dateTime = new DateTime(d);\n if (JSON.stringify(dateTime) === 'null') {\n return null;\n }\n return dateTime;\n }\n return null;\n }\n\n /**\n * Type checks that `value` is an array of Date or DateTime\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckDateArray(optionName: string, value, providedType: string) {\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of DateTime or Date'\n );\n }\n for (let i = 0; i < value.length; i++) {\n let d = value[i];\n const dateTime = this._dateConversion(d, optionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n value[i] = dateTime;\n }\n }\n\n /**\n * Type checks that `value` is an array of numbers\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckNumberArray(\n optionName: string,\n value,\n providedType: string\n ) {\n if (!Array.isArray(value) || value.find((x) => typeof x !== typeof 0)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of numbers'\n );\n }\n return;\n }\n\n /**\n * Attempts to convert `d` to a DateTime object\n * @param d value to convert\n * @param optionName Provides text to error messages e.g. disabledDates\n */\n static _dateConversion(d: any, optionName: string) {\n if (typeof d === typeof '' && optionName !== 'input') {\n Namespace.errorMessages.dateString();\n }\n\n const converted = this._dateTypeCheck(d);\n\n if (!converted) {\n Namespace.errorMessages.failedToParseDate(\n optionName,\n d,\n optionName === 'input'\n );\n }\n return converted;\n }\n\n private static _flatback: string[];\n\n private static get _flattenDefaultOptions(): string[] {\n if (this._flatback) return this._flatback;\n const deepKeys = (t, pre = []) =>\n Array.isArray(t)\n ? []\n : Object(t) === t\n ? Object.entries(t).flatMap(([k, v]) => deepKeys(v, [...pre, k]))\n : pre.join('.');\n\n this._flatback = deepKeys(DefaultOptions);\n\n return this._flatback;\n }\n\n /**\n * Some options conflict like min/max date. Verify that these kinds of options\n * are set correctly.\n * @param config\n */\n static _validateConflcits(config: Options) {\n if (config.restrictions.minDate && config.restrictions.maxDate) {\n if (config.restrictions.minDate.isAfter(config.restrictions.maxDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'minDate is after maxDate'\n );\n }\n\n if (config.restrictions.maxDate.isBefore(config.restrictions.minDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'maxDate is before minDate'\n );\n }\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport { ChangeEvent, FailEvent } from './event-types';\nimport { OptionConverter } from './options';\n\nexport default class Dates {\n private _dates: DateTime[] = [];\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Returns the array of selected dates\n */\n get picked(): DateTime[] {\n return this._dates;\n }\n\n /**\n * Returns the last picked value.\n */\n get lastPicked(): DateTime {\n return this._dates[this.lastPickedIndex];\n }\n\n /**\n * Returns the length of picked dates -1 or 0 if none are selected.\n */\n get lastPickedIndex(): number {\n if (this._dates.length === 0) return 0;\n return this._dates.length - 1;\n }\n\n /**\n * Adds a new DateTime to selected dates array\n * @param date\n */\n add(date: DateTime): void {\n this._dates.push(date);\n }\n\n /**\n * Tries to convert the provided value to a DateTime object.\n * If value is null|undefined then clear the value of the provided index (or 0).\n * @param value Value to convert or null|undefined\n * @param index When using multidates this is the index in the array\n * @param from Used in the warning message, useful for debugging.\n */\n set(value: any, index?: number, from: string = 'date.set') {\n if (!value) this._setValue(value, index);\n const converted = OptionConverter._dateConversion(value, from);\n if (converted) this._setValue(converted, index);\n }\n\n /**\n * Returns true if the `targetDate` is part of the selected dates array.\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n isPicked(targetDate: DateTime, unit?: Unit): boolean {\n if (!unit) return this._dates.find((x) => x === targetDate) !== undefined;\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return (\n this._dates\n .map((x) => x.format(format))\n .find((x) => x === innerDateFormatted) !== undefined\n );\n }\n\n /**\n * Returns the index at which `targetDate` is in the array.\n * This is used for updating or removing a date when multi-date is used\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n pickedIndex(targetDate: DateTime, unit?: Unit): number {\n if (!unit) return this._dates.indexOf(targetDate);\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return this._dates.map((x) => x.format(format)).indexOf(innerDateFormatted);\n }\n\n /**\n * Clears all selected dates.\n */\n clear() {\n this._context._unset = true;\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate: this.lastPicked,\n isClear: true,\n isValid: true,\n } as ChangeEvent);\n this._dates = [];\n }\n\n /**\n * Find the \"book end\" years given a `year` and a `factor`\n * @param factor e.g. 100 for decades\n * @param year e.g. 2021\n */\n static getStartEndYear(\n factor: number,\n year: number\n ): [number, number, number] {\n const step = factor / 10,\n startYear = Math.floor(year / factor) * factor,\n endYear = startYear + step * 9,\n focusValue = Math.floor(year / step) * step;\n return [startYear, endYear, focusValue];\n }\n\n /**\n * Do not use direectly. Attempts to either clear or set the `target` date at `index`.\n * If the `target` is null then the date will be cleared.\n * If multi-date is being used then it will be removed from the array.\n * If `target` is valid and multi-date is used then if `index` is\n * provided the date at that index will be replaced, otherwise it is appended.\n * @param target\n * @param index\n */\n _setValue(target?: DateTime, index?: number): void {\n const noIndex = typeof index === 'undefined',\n isClear = !target && noIndex;\n let oldDate = this._context._unset ? null : this._dates[index];\n if (!oldDate && !this._context._unset && noIndex && isClear) {\n oldDate = this.lastPicked;\n }\n\n const updateInput = () => {\n if (!this._context._input) return;\n\n let newValue = this._context._options.hooks.inputFormat(\n this._context,\n target\n );\n if (this._context._options.multipleDates) {\n newValue = this._dates\n .map((d) =>\n this._context._options.hooks.inputFormat(this._context, d)\n )\n .join(this._context._options.multipleDatesSeparator);\n }\n if (this._context._input.value != newValue)\n this._context._input.value = newValue;\n };\n\n if (target && oldDate?.isSame(target)) {\n updateInput();\n return;\n }\n\n // case of calling setValue(null)\n if (!target) {\n if (\n !this._context._options.multipleDates ||\n this._dates.length === 1 ||\n isClear\n ) {\n this._context._unset = true;\n this._dates = [];\n } else {\n this._dates.splice(index, 1);\n }\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n\n updateInput();\n this._context._display._update('all');\n return;\n }\n\n index = index || 0;\n target = target.clone;\n\n // minute stepping is being used, force the minute to the closest value\n if (this._context._options.stepping !== 1) {\n target.minutes =\n Math.round(target.minutes / this._context._options.stepping) *\n this._context._options.stepping;\n target.seconds = 0;\n }\n\n if (this._context._validation.isValid(target)) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._unset = false;\n this._context._display._update('all');\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n return;\n }\n\n if (this._context._options.keepInvalid) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: false,\n } as ChangeEvent);\n }\n this._context._triggerEvent({\n type: Namespace.events.error,\n reason: Namespace.errorMessages.failedToSetInvalidDate,\n date: target,\n oldDate,\n } as FailEvent);\n }\n\n /**\n * Returns a format object based on the granularity of `unit`\n * @param unit\n */\n static getFormatByUnit(unit: Unit): object {\n switch (unit) {\n case 'date':\n return { dateStyle: 'short' };\n case 'month':\n return {\n month: 'numeric',\n year: 'numeric',\n };\n case 'year':\n return { year: 'numeric' };\n }\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\nimport Dates from '../../dates';\r\n\r\n/**\r\n * Creates and updates the grid for `year`\r\n */\r\nexport default class YearDisplay {\r\n private _context: TempusDominus;\r\n private _startYear: DateTime;\r\n private _endYear: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.yearsContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectYear);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 10,\r\n this._context._viewDate.year\r\n );\r\n this._startYear = this._context._viewDate.clone.manipulate(-1, Unit.year);\r\n this._endYear = this._context._viewDate.clone.manipulate(10, Unit.year);\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.yearsContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.yearsContainer,\r\n `${this._startYear.format({ year: 'numeric' })}-${this._endYear.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startYear, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endYear, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.year)\r\n .manipulate(-1, Unit.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectYear}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n let classes = [];\r\n classes.push(Namespace.css.year);\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.year)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.year)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute('data-value', `${innerDate.year}`);\r\n containerClone.innerText = innerDate.format({ year: \"numeric\" });\r\n\r\n innerDate.manipulate(1, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport Dates from '../../dates';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `seconds`\r\n */\r\nexport default class DecadeDisplay {\r\n private _context: TempusDominus;\r\n private _startDecade: DateTime;\r\n private _endDecade: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker() {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.decadesContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDecade);\r\n container.appendChild(div);\r\n }\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 100,\r\n this._context._viewDate.year\r\n );\r\n this._startDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._startDecade.year = start;\r\n this._endDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._endDecade.year = end;\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.decadesContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.decadesContainer,\r\n `${this._startDecade.format({ year: 'numeric' })}-${this._endDecade.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startDecade, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endDecade, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n const pickedYears = this._context.dates.picked.map((x) => x.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectDecade}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (index === 0) {\r\n containerClone.classList.add(Namespace.css.old);\r\n if (this._startDecade.year - 10 < 0) {\r\n containerClone.textContent = ' ';\r\n previous.classList.add(Namespace.css.disabled);\r\n containerClone.classList.add(Namespace.css.disabled);\r\n containerClone.setAttribute('data-value', ``);\r\n return;\r\n } else {\r\n containerClone.innerText = this._startDecade.clone.manipulate(-10, Unit.year).format({ year: 'numeric' });\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n return;\r\n }\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.decade);\r\n const startDecadeYear = this._startDecade.year;\r\n const endDecadeYear = this._startDecade.year + 9;\r\n\r\n if (\r\n !this._context._unset &&\r\n pickedYears.filter((x) => x >= startDecadeYear && x <= endDecadeYear)\r\n .length > 0\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n containerClone.innerText = `${this._startDecade.format({ year: 'numeric' })}`;\r\n\r\n this._startDecade.manipulate(10, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates the clock display\n */\nexport default class TimeDisplay {\n private _context: TempusDominus;\n private _gridColumns = '';\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the clock display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.clockContainer);\n\n container.append(...this._grid());\n\n return container;\n }\n\n /**\n * Populates the various elements with in the clock display\n * like the current hour and if the manipulation icons are enabled.\n * @private\n */\n _update(): void {\n const timesDiv = (\n this._context._display.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0]\n );\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n timesDiv\n .querySelectorAll('.disabled')\n .forEach((element) => element.classList.remove(Namespace.css.disabled));\n\n if (this._context._options.display.components.hours) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.hours}]`\n ).innerText = this._context._options.display.components.useTwentyfourHour\n ? lastPicked.hoursFormatted\n : lastPicked.twelveHoursFormatted;\n }\n\n if (this._context._options.display.components.minutes) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.minutes}]`\n ).innerText = lastPicked.minutesFormatted;\n }\n\n if (this._context._options.display.components.seconds) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.seconds}]`\n ).innerText = lastPicked.secondsFormatted;\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n const toggle = timesDiv.querySelector(\n `[data-action=${ActionTypes.toggleMeridiem}]`\n );\n\n toggle.innerText = lastPicked.meridiem();\n\n if (\n !this._context._validation.isValid(\n lastPicked.clone.manipulate(\n lastPicked.hours >= 12 ? -12 : 12,\n Unit.hours\n )\n )\n ) {\n toggle.classList.add(Namespace.css.disabled);\n } else {\n toggle.classList.remove(Namespace.css.disabled);\n }\n }\n\n timesDiv.style.gridTemplateAreas = `\"${this._gridColumns}\"`;\n }\n\n /**\n * Creates the table for the clock display depending on what options are selected.\n * @private\n */\n private _grid(): HTMLElement[] {\n this._gridColumns = '';\n const top = [],\n middle = [],\n bottom = [],\n separator = document.createElement('div'),\n upIcon = this._context._display._iconTag(\n this._context._options.display.icons.up\n ),\n downIcon = this._context._display._iconTag(\n this._context._options.display.icons.down\n );\n\n separator.classList.add(Namespace.css.separator, Namespace.css.noHighlight);\n const separatorColon = separator.cloneNode(true);\n separatorColon.innerHTML = ':';\n\n const getSeparator = (colon = false): HTMLElement => {\n return colon\n ? separatorColon.cloneNode(true)\n : separator.cloneNode(true);\n };\n\n if (this._context._options.display.components.hours) {\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.incrementHours);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickHour\n );\n divElement.setAttribute('data-action', ActionTypes.showHours);\n divElement.setAttribute('data-time-component', Unit.hours);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.decrementHours);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n this._gridColumns += 'a';\n }\n\n if (this._context._options.display.components.minutes) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.hours) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.incrementMinutes);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickMinute\n );\n divElement.setAttribute('data-action', ActionTypes.showMinutes);\n divElement.setAttribute('data-time-component', Unit.minutes);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.decrementMinutes);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (this._context._options.display.components.seconds) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.minutes) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.incrementSeconds);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickSecond\n );\n divElement.setAttribute('data-action', ActionTypes.showSeconds);\n divElement.setAttribute('data-time-component', Unit.seconds);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.decrementSeconds);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n this._gridColumns += ' a';\n let divElement = getSeparator();\n top.push(divElement);\n\n let button = document.createElement('button');\n button.setAttribute(\n 'title',\n this._context._options.localization.toggleMeridiem\n );\n button.setAttribute('data-action', ActionTypes.toggleMeridiem);\n button.setAttribute('tabindex', '-1');\n button.classList.add(Namespace.css.toggleMeridiem);\n\n divElement = document.createElement('div');\n divElement.classList.add(Namespace.css.noHighlight);\n divElement.appendChild(button);\n middle.push(divElement);\n\n divElement = getSeparator();\n bottom.push(divElement);\n }\n\n this._gridColumns = this._gridColumns.trim();\n\n return [...top, ...middle, ...bottom];\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `hours`\n */\nexport default class HourDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.hourContainer);\n\n for (\n let i = 0;\n i <\n (this._context._options.display.components.useTwentyfourHour ? 24 : 12);\n i++\n ) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectHour);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.hourContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.date);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectHour}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.hour);\n\n if (!this._context._validation.isValid(innerDate, Unit.hours)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.hours}`);\n containerClone.innerText = this._context._options.display.components\n .useTwentyfourHour\n ? innerDate.hoursFormatted\n : innerDate.twelveHoursFormatted;\n innerDate.manipulate(1, Unit.hours);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `minutes`\n */\nexport default class MinuteDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.minuteContainer);\n\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n for (let i = 0; i < 60 / step; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMinute);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.minuteContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.hours);\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMinute}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.minute);\n\n if (!this._context._validation.isValid(innerDate, Unit.minutes)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.minutes}`);\n containerClone.innerText = innerDate.minutesFormatted;\n innerDate.manipulate(step, Unit.minutes);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class secondDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.secondContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectSecond);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.secondContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.minutes);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectSecond}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.second);\n\n if (!this._context._validation.isValid(innerDate, Unit.seconds)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.seconds}`);\n containerClone.innerText = innerDate.secondsFormatted;\n innerDate.manipulate(5, Unit.seconds);\n });\n }\n}\n","import DateDisplay from './calendar/date-display';\nimport MonthDisplay from './calendar/month-display';\nimport YearDisplay from './calendar/year-display';\nimport DecadeDisplay from './calendar/decade-display';\nimport TimeDisplay from './time/time-display';\nimport HourDisplay from './time/hour-display';\nimport MinuteDisplay from './time/minute-display';\nimport SecondDisplay from './time/second-display';\nimport { DateTime, Unit } from '../datetime';\nimport { DatePickerModes } from '../conts';\nimport { TempusDominus } from '../tempus-dominus';\nimport { ActionTypes } from '../actions';\nimport { createPopper } from '@popperjs/core';\nimport Namespace from '../namespace';\nimport { HideEvent } from '../event-types';\n\n/**\n * Main class for all things display related.\n */\nexport default class Display {\n private _context: TempusDominus;\n private _dateDisplay: DateDisplay;\n private _monthDisplay: MonthDisplay;\n private _yearDisplay: YearDisplay;\n private _decadeDisplay: DecadeDisplay;\n private _timeDisplay: TimeDisplay;\n private _widget: HTMLElement;\n private _hourDisplay: HourDisplay;\n private _minuteDisplay: MinuteDisplay;\n private _secondDisplay: SecondDisplay;\n private _popperInstance: any;\n private _isVisible = false;\n\n constructor(context: TempusDominus) {\n this._context = context;\n this._dateDisplay = new DateDisplay(context);\n this._monthDisplay = new MonthDisplay(context);\n this._yearDisplay = new YearDisplay(context);\n this._decadeDisplay = new DecadeDisplay(context);\n this._timeDisplay = new TimeDisplay(context);\n this._hourDisplay = new HourDisplay(context);\n this._minuteDisplay = new MinuteDisplay(context);\n this._secondDisplay = new SecondDisplay(context);\n\n this._widget = undefined;\n }\n\n /**\n * Returns the widget body or undefined\n * @private\n */\n get widget(): HTMLElement | undefined {\n return this._widget;\n }\n\n /**\n * Returns this visible state of the picker (shown)\n */\n get isVisible() {\n return this._isVisible;\n }\n\n /**\n * Updates the table for a particular unit. Used when an option as changed or\n * whenever the class list might need to be refreshed.\n * @param unit\n * @private\n */\n _update(unit: Unit | 'clock' | 'calendar' | 'all'): void {\n if (!this.widget) return;\n //todo do I want some kind of error catching or other guards here?\n switch (unit) {\n case Unit.seconds:\n this._secondDisplay._update();\n break;\n case Unit.minutes:\n this._minuteDisplay._update();\n break;\n case Unit.hours:\n this._hourDisplay._update();\n break;\n case Unit.date:\n this._dateDisplay._update();\n break;\n case Unit.month:\n this._monthDisplay._update();\n break;\n case Unit.year:\n this._yearDisplay._update();\n break;\n case 'clock':\n this._timeDisplay._update();\n this._update(Unit.hours);\n this._update(Unit.minutes);\n this._update(Unit.seconds);\n break;\n case 'calendar':\n this._update(Unit.date);\n this._update(Unit.year);\n this._update(Unit.month);\n this._decadeDisplay._update();\n this._updateCalendarHeader();\n break;\n case 'all':\n if (this._hasTime) {\n this._update('clock');\n }\n if (this._hasDate) {\n this._update('calendar');\n }\n }\n }\n\n /**\n * Shows the picker and creates a Popper instance if needed.\n * Add document click event to hide when clicking outside the picker.\n * @fires Events#show\n */\n show(): void {\n if (this.widget == undefined) {\n if (\n this._context._options.useCurrent &&\n !this._context._options.defaultDate &&\n !this._context._input?.value\n ) {\n //todo in the td4 branch a pr changed this to allow granularity\n const date = new DateTime().setLocale(\n this._context._options.localization.locale\n );\n if (!this._context._options.keepInvalid) {\n let tries = 0;\n let direction = 1;\n if (this._context._options.restrictions.maxDate?.isBefore(date)) {\n direction = -1;\n }\n while (!this._context._validation.isValid(date)) {\n date.manipulate(direction, Unit.date);\n if (tries > 31) break;\n tries++;\n }\n }\n this._context.dates._setValue(date);\n }\n\n if (this._context._options.defaultDate) {\n this._context.dates._setValue(this._context._options.defaultDate);\n }\n\n this._buildWidget();\n if (this._hasDate) {\n this._showMode();\n }\n\n if (!this._context._options.display.inline) {\n document.body.appendChild(this.widget);\n\n this._popperInstance = createPopper(\n this._context._element,\n this.widget,\n {\n modifiers: [{ name: 'eventListeners', enabled: true }],\n //#2400\n placement:\n document.documentElement.dir === 'rtl'\n ? 'bottom-end'\n : 'bottom-start',\n }\n );\n } else {\n this._context._element.appendChild(this.widget);\n }\n\n if (this._context._options.display.viewMode == 'clock') {\n this._context._action.do(\n {\n currentTarget: this.widget.querySelector(\n `.${Namespace.css.timeContainer}`\n ),\n },\n ActionTypes.showClock\n );\n }\n\n this.widget\n .querySelectorAll('[data-action]')\n .forEach((element) =>\n element.addEventListener('click', this._actionsClickEvent)\n );\n\n // show the clock when using sideBySide\n if (this._context._options.display.sideBySide) {\n this._timeDisplay._update();\n (\n this.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0] as HTMLElement\n ).style.display = 'grid';\n }\n }\n\n this.widget.classList.add(Namespace.css.show);\n if (!this._context._options.display.inline) {\n this._popperInstance.update();\n document.addEventListener('click', this._documentClickEvent);\n }\n this._context._triggerEvent({ type: Namespace.events.show });\n this._isVisible = true;\n }\n\n /**\n * Changes the calendar view mode. E.g. month <-> year\n * @param direction -/+ number to move currentViewMode\n * @private\n */\n _showMode(direction?: number): void {\n if (!this.widget) {\n return;\n }\n if (direction) {\n const max = Math.max(\n this._context._minViewModeNumber,\n Math.min(3, this._context._currentViewMode + direction)\n );\n if (this._context._currentViewMode == max) return;\n this._context._currentViewMode = max;\n }\n\n this.widget\n .querySelectorAll(\n `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div:not(.${Namespace.css.clockContainer})`\n )\n .forEach((e: HTMLElement) => (e.style.display = 'none'));\n\n const datePickerMode = DatePickerModes[this._context._currentViewMode];\n let picker: HTMLElement = this.widget.querySelector(\n `.${datePickerMode.className}`\n );\n\n switch (datePickerMode.className) {\n case Namespace.css.decadesContainer:\n this._decadeDisplay._update();\n break;\n case Namespace.css.yearsContainer:\n this._yearDisplay._update();\n break;\n case Namespace.css.monthsContainer:\n this._monthDisplay._update();\n break;\n case Namespace.css.daysContainer:\n this._dateDisplay._update();\n break;\n }\n\n picker.style.display = 'grid';\n this._updateCalendarHeader();\n }\n\n _updateCalendarHeader() {\n const showing = [\n ...this.widget.querySelector(\n `.${Namespace.css.dateContainer} div[style*=\"display: grid\"]`\n ).classList,\n ].find((x) => x.startsWith(Namespace.css.dateContainer));\n\n const [previous, switcher, next] = this._context._display.widget\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switch (showing) {\n case Namespace.css.decadesContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousCentury\n );\n switcher.setAttribute('title', '');\n next.setAttribute(\n 'title',\n this._context._options.localization.nextCentury\n );\n break;\n case Namespace.css.yearsContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousDecade\n );\n switcher.setAttribute(\n 'title',\n this._context._options.localization.selectDecade\n );\n next.setAttribute(\n 'title',\n this._context._options.localization.nextDecade\n );\n break;\n case Namespace.css.monthsContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousYear\n );\n switcher.setAttribute(\n 'title',\n this._context._options.localization.selectYear\n );\n next.setAttribute(\n 'title',\n this._context._options.localization.nextYear\n );\n break;\n case Namespace.css.daysContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousMonth\n );\n switcher.setAttribute(\n 'title',\n this._context._options.localization.selectMonth\n );\n next.setAttribute(\n 'title',\n this._context._options.localization.nextMonth\n );\n switcher.innerText = this._context._viewDate.format({\n month: this._context._options.localization.dayViewHeaderFormat,\n });\n break;\n }\n switcher.innerText = switcher.getAttribute(showing);\n }\n\n /**\n * Hides the picker if needed.\n * Remove document click event to hide when clicking outside the picker.\n * @fires Events#hide\n */\n hide(): void {\n if (!this.widget || !this._isVisible) return;\n\n this.widget.classList.remove(Namespace.css.show);\n\n if (this._isVisible) {\n this._context._triggerEvent({\n type: Namespace.events.hide,\n date: this._context._unset\n ? null\n : this._context.dates.lastPicked\n ? this._context.dates.lastPicked.clone\n : void 0,\n } as HideEvent);\n this._isVisible = false;\n }\n\n document.removeEventListener('click', this._documentClickEvent);\n }\n\n /**\n * Toggles the picker's open state. Fires a show/hide event depending.\n */\n toggle() {\n return this._isVisible ? this.hide() : this.show();\n }\n\n /**\n * Removes document and data-action click listener and reset the widget\n * @private\n */\n _dispose() {\n document.removeEventListener('click', this._documentClickEvent);\n if (!this.widget) return;\n this.widget\n .querySelectorAll('[data-action]')\n .forEach((element) =>\n element.removeEventListener('click', this._actionsClickEvent)\n );\n this.widget.parentNode.removeChild(this.widget);\n this._widget = undefined;\n }\n\n /**\n * Builds the widgets html template.\n * @private\n */\n private _buildWidget(): HTMLElement {\n const template = document.createElement('div');\n template.classList.add(Namespace.css.widget);\n\n const dateView = document.createElement('div');\n dateView.classList.add(Namespace.css.dateContainer);\n dateView.append(\n this._headTemplate,\n this._decadeDisplay._picker,\n this._yearDisplay._picker,\n this._monthDisplay._picker,\n this._dateDisplay._picker\n );\n\n const timeView = document.createElement('div');\n timeView.classList.add(Namespace.css.timeContainer);\n timeView.appendChild(this._timeDisplay._picker);\n timeView.appendChild(this._hourDisplay._picker);\n timeView.appendChild(this._minuteDisplay._picker);\n timeView.appendChild(this._secondDisplay._picker);\n\n const toolbar = document.createElement('div');\n toolbar.classList.add(Namespace.css.toolbar);\n toolbar.append(...this._toolbar);\n\n if (this._context._options.display.inline) {\n template.classList.add(Namespace.css.inline);\n }\n\n if (this._context._options.display.calendarWeeks) {\n template.classList.add('calendarWeeks');\n }\n\n if (\n this._context._options.display.sideBySide &&\n this._hasDate &&\n this._hasTime\n ) {\n template.classList.add(Namespace.css.sideBySide);\n if (this._context._options.display.toolbarPlacement === 'top') {\n template.appendChild(toolbar);\n }\n const row = document.createElement('div');\n row.classList.add('td-row');\n dateView.classList.add('td-half');\n timeView.classList.add('td-half');\n\n row.appendChild(dateView);\n row.appendChild(timeView);\n template.appendChild(row);\n if (this._context._options.display.toolbarPlacement === 'bottom') {\n template.appendChild(toolbar);\n }\n this._widget = template;\n return;\n }\n\n if (this._context._options.display.toolbarPlacement === 'top') {\n template.appendChild(toolbar);\n }\n\n if (this._hasDate) {\n if (this._hasTime) {\n dateView.classList.add(Namespace.css.collapse);\n if (this._context._options.display.viewMode !== 'clock')\n dateView.classList.add(Namespace.css.show);\n }\n template.appendChild(dateView);\n }\n\n if (this._hasTime) {\n if (this._hasDate) {\n timeView.classList.add(Namespace.css.collapse);\n if (this._context._options.display.viewMode === 'clock')\n timeView.classList.add(Namespace.css.show);\n }\n template.appendChild(timeView);\n }\n\n if (this._context._options.display.toolbarPlacement === 'bottom') {\n template.appendChild(toolbar);\n }\n\n const arrow = document.createElement('div');\n arrow.classList.add('arrow');\n arrow.setAttribute('data-popper-arrow', '');\n template.appendChild(arrow);\n\n this._widget = template;\n }\n\n /**\n * Returns true if the hours, minutes, or seconds component is turned on\n */\n get _hasTime(): boolean {\n return (\n this._context._options.display.components.clock &&\n (this._context._options.display.components.hours ||\n this._context._options.display.components.minutes ||\n this._context._options.display.components.seconds)\n );\n }\n\n /**\n * Returns true if the year, month, or date component is turned on\n */\n get _hasDate(): boolean {\n return (\n this._context._options.display.components.calendar &&\n (this._context._options.display.components.year ||\n this._context._options.display.components.month ||\n this._context._options.display.components.date)\n );\n }\n\n /**\n * Get the toolbar html based on options like buttons.today\n * @private\n */\n get _toolbar(): HTMLElement[] {\n const toolbar = [];\n\n if (this._context._options.display.buttons.today) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.today);\n div.setAttribute('title', this._context._options.localization.today);\n\n div.appendChild(\n this._iconTag(this._context._options.display.icons.today)\n );\n toolbar.push(div);\n }\n if (\n !this._context._options.display.sideBySide &&\n this._hasDate &&\n this._hasTime\n ) {\n let title, icon;\n if (this._context._options.display.viewMode === 'clock') {\n title = this._context._options.localization.selectDate;\n icon = this._context._options.display.icons.date;\n } else {\n title = this._context._options.localization.selectTime;\n icon = this._context._options.display.icons.time;\n }\n\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.togglePicker);\n div.setAttribute('title', title);\n\n div.appendChild(this._iconTag(icon));\n toolbar.push(div);\n }\n if (this._context._options.display.buttons.clear) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.clear);\n div.setAttribute('title', this._context._options.localization.clear);\n\n div.appendChild(\n this._iconTag(this._context._options.display.icons.clear)\n );\n toolbar.push(div);\n }\n if (this._context._options.display.buttons.close) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.close);\n div.setAttribute('title', this._context._options.localization.close);\n\n div.appendChild(\n this._iconTag(this._context._options.display.icons.close)\n );\n toolbar.push(div);\n }\n\n return toolbar;\n }\n\n /***\n * Builds the base header template with next and previous icons\n * @private\n */\n get _headTemplate(): HTMLElement {\n const calendarHeader = document.createElement('div');\n calendarHeader.classList.add(Namespace.css.calendarHeader);\n\n const previous = document.createElement('div');\n previous.classList.add(Namespace.css.previous);\n previous.setAttribute('data-action', ActionTypes.previous);\n previous.appendChild(\n this._iconTag(this._context._options.display.icons.previous)\n );\n\n const switcher = document.createElement('div');\n switcher.classList.add(Namespace.css.switch);\n switcher.setAttribute('data-action', ActionTypes.pickerSwitch);\n\n const next = document.createElement('div');\n next.classList.add(Namespace.css.next);\n next.setAttribute('data-action', ActionTypes.next);\n next.appendChild(this._iconTag(this._context._options.display.icons.next));\n\n calendarHeader.append(previous, switcher, next);\n return calendarHeader;\n }\n\n /**\n * Builds an icon tag as either an ``\n * or with icons.type is `sprites` then an svg tag instead\n * @param iconClass\n * @private\n */\n _iconTag(iconClass: string): HTMLElement {\n if (this._context._options.display.icons.type === 'sprites') {\n const svg = document.createElement('svg');\n svg.innerHTML = ``;\n return svg;\n }\n const icon = document.createElement('i');\n DOMTokenList.prototype.add.apply(icon.classList, iconClass.split(' '));\n return icon;\n }\n\n /**\n * A document click event to hide the widget if click is outside\n * @private\n * @param e MouseEvent\n */\n private _documentClickEvent = (e: MouseEvent) => {\n if (this._context._options.debug || (window as any).debug) return;\n\n if (\n this._isVisible &&\n !e.composedPath().includes(this.widget) && // click inside the widget\n !e.composedPath()?.includes(this._context._element) // click on the element\n ) {\n this.hide();\n }\n };\n\n /**\n * Click event for any action like selecting a date\n * @param e MouseEvent\n * @private\n */\n private _actionsClickEvent = (e: MouseEvent) => {\n this._context._action.do(e);\n };\n\n /**\n * Causes the widget to get rebuilt on next show. If the picker is already open\n * then hide and reshow it.\n * @private\n */\n _rebuild() {\n const wasVisible = this._isVisible;\n if (wasVisible) this.hide();\n this._dispose();\n if (wasVisible) {\n this.show();\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Dates from './dates';\n\n/**\n * Main class for date validation rules based on the options provided.\n */\nexport default class Validation {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Checks to see if the target date is valid based on the rules provided in the options.\n * Granularity can be provide to chek portions of the date instead of the whole.\n * @param targetDate\n * @param granularity\n */\n isValid(targetDate: DateTime, granularity?: Unit): boolean {\n if (\n this._context._options.restrictions.disabledDates.length > 0 &&\n this._isInDisabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledDates.length > 0 &&\n !this._isInEnabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.daysOfWeekDisabled?.length > 0 &&\n this._context._options.restrictions.daysOfWeekDisabled.indexOf(\n targetDate.weekDay\n ) !== -1\n ) {\n return false;\n }\n\n if (\n this._context._options.restrictions.minDate &&\n targetDate.isBefore(\n this._context._options.restrictions.minDate,\n granularity\n )\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.maxDate &&\n targetDate.isAfter(\n this._context._options.restrictions.maxDate,\n granularity\n )\n ) {\n return false;\n }\n\n if (\n granularity === Unit.hours ||\n granularity === Unit.minutes ||\n granularity === Unit.seconds\n ) {\n if (\n this._context._options.restrictions.disabledHours.length > 0 &&\n this._isInDisabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledHours.length > 0 &&\n !this._isInEnabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.disabledTimeIntervals.length > 0\n ) {\n for (\n let i = 0;\n i < this._context._options.restrictions.disabledTimeIntervals.length;\n i++\n ) {\n if (\n targetDate.isBetween(\n this._context._options.restrictions.disabledTimeIntervals[i].from,\n this._context._options.restrictions.disabledTimeIntervals[i].to\n )\n )\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Checks to see if the disabledDates option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInDisabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledDates ||\n this._context._options.restrictions.disabledDates.length === 0\n )\n return false;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.disabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the enabledDates option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInEnabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledDates ||\n this._context._options.restrictions.enabledDates.length === 0\n )\n return true;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.enabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the disabledHours option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInDisabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledHours ||\n this._context._options.restrictions.disabledHours.length === 0\n )\n return false;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.disabledHours.find(\n (x) => x === formattedDate\n );\n }\n\n /**\n * Checks to see if the enabledHours option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInEnabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledHours ||\n this._context._options.restrictions.enabledHours.length === 0\n )\n return true;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.enabledHours.find(\n (x) => x === formattedDate\n );\n }\n}\n","import Display from './display/index';\nimport Validation from './validation';\nimport Dates from './dates';\nimport Actions, { ActionTypes } from './actions';\nimport { DatePickerModes, DefaultOptions } from './conts';\nimport { DateTime, DateTimeFormatOptions, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options, { OptionConverter } from './options';\nimport {\n BaseEvent,\n ChangeEvent,\n ViewUpdateEvent,\n FailEvent,\n} from './event-types';\n\n/**\n * A robust and powerful date/time picker component.\n */\nclass TempusDominus {\n dates: Dates;\n\n _options: Options;\n _currentViewMode = 0;\n _subscribers: { [key: string]: ((event: any) => {})[] } = {};\n _element: HTMLElement;\n _input: HTMLInputElement;\n _unset: boolean;\n _minViewModeNumber = 0;\n _display: Display;\n _validation: Validation;\n _action: Actions;\n private _isDisabled = false;\n private _notifyChangeEventContext = 0;\n private _toggle: HTMLElement;\n private _currentPromptTimeTimeout: any;\n\n constructor(element: HTMLElement, options: Options = {} as Options) {\n if (!element) {\n Namespace.errorMessages.mustProvideElement;\n }\n this._element = element;\n this._options = this._initializeOptions(options, DefaultOptions, true);\n this._viewDate.setLocale(this._options.localization.locale);\n this._unset = true;\n\n this._display = new Display(this);\n this._validation = new Validation(this);\n this.dates = new Dates(this);\n this._action = new Actions(this);\n\n this._initializeInput();\n this._initializeToggle();\n\n if (this._options.display.inline) this._display.show();\n }\n\n _viewDate = new DateTime();\n\n get viewDate() {\n return this._viewDate;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Update the picker options. If `reset` is provide `options` will be merged with DefaultOptions instead.\n * @param options\n * @param reset\n * @public\n */\n updateOptions(options, reset = false): void {\n if (reset) this._options = this._initializeOptions(options, DefaultOptions);\n else this._options = this._initializeOptions(options, this._options);\n this._display._rebuild();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Toggles the picker open or closed. If the picker is disabled, nothing will happen.\n * @public\n */\n toggle(): void {\n if (this._isDisabled) return;\n this._display.toggle();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Shows the picker unless the picker is disabled.\n * @public\n */\n show(): void {\n if (this._isDisabled) return;\n this._display.show();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker unless the picker is disabled.\n * @public\n */\n hide(): void {\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Disables the picker and the target input field.\n * @public\n */\n disable(): void {\n this._isDisabled = true;\n // todo this might be undesired. If a dev disables the input field to\n // only allow using the picker, this will break that.\n this._input?.setAttribute('disabled', 'disabled');\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Enables the picker and the target input field.\n * @public\n */\n enable(): void {\n this._isDisabled = false;\n this._input?.removeAttribute('disabled');\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Clears all the selected dates\n * @public\n */\n clear(): void {\n this.dates.clear();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Allows for a direct subscription to picker events, without having to use addEventListener on the element.\n * @param eventTypes See Namespace.Events\n * @param callbacks Function to call when event is triggered\n * @public\n */\n subscribe(\n eventTypes: string | string[],\n callbacks: (event: any) => void | ((event: any) => void)[]\n ): { unsubscribe: void }[] {\n if (typeof eventTypes === 'string') {\n eventTypes = [eventTypes];\n }\n let callBackArray = [];\n if (!Array.isArray(callbacks)) {\n callBackArray = [callbacks];\n } else {\n callBackArray = callbacks;\n }\n\n if (eventTypes.length !== callBackArray.length) {\n Namespace.errorMessages.subscribeMismatch;\n }\n\n const returnArray = [];\n\n for (let i = 0; i < eventTypes.length; i++) {\n const eventType = eventTypes[i];\n if (!Array.isArray(this._subscribers[eventType])) {\n this._subscribers[eventType] = [];\n }\n\n this._subscribers[eventType].push(callBackArray[i]);\n\n returnArray.push({\n unsubscribe: this._unsubscribe.bind(\n this,\n eventType,\n this._subscribers[eventType].length - 1\n ),\n });\n\n if (eventTypes.length === 1) {\n return returnArray[0];\n }\n }\n\n return returnArray;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker and removes event listeners\n */\n dispose() {\n this._display.hide();\n // this will clear the document click event listener\n this._display._dispose();\n this._input?.removeEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input?.removeEventListener('click', this._toggleClickEvent);\n }\n this._toggle.removeEventListener('click', this._toggleClickEvent);\n this._subscribers = {};\n }\n\n /**\n * Triggers an event like ChangeEvent when the picker has updated the value\n * of a selected date.\n * @param event Accepts a BaseEvent object.\n * @private\n */\n _triggerEvent(event: BaseEvent) {\n // checking hasOwnProperty because the BasicEvent also falls through here otherwise\n if ((event as ChangeEvent) && event.hasOwnProperty('date')) {\n const { date, oldDate, isClear } = event as ChangeEvent;\n // this was to prevent a max call stack error\n // https://github.com/tempusdominus/core/commit/15a280507f5277b31b0b3319ab1edc7c19a000fb\n // todo see if this is still needed or if there's a cleaner way\n this._notifyChangeEventContext++;\n if (\n (date && oldDate && date.isSame(oldDate)) ||\n (!isClear && !date && !oldDate) ||\n this._notifyChangeEventContext > 1\n ) {\n this._notifyChangeEventContext = 0;\n return;\n }\n this._handleAfterChangeEvent(event as ChangeEvent);\n }\n\n this._element.dispatchEvent(\n new CustomEvent(event.type, { detail: event as any })\n );\n\n if ((window as any).jQuery) {\n const $ = (window as any).jQuery;\n $(this._element).trigger(event);\n }\n\n const publish = () => {\n // return if event is not subscribed\n if (!Array.isArray(this._subscribers[event.type])) {\n return;\n }\n\n // Trigger callback for each subscriber\n this._subscribers[event.type].forEach((callback) => {\n callback(event);\n });\n };\n\n publish();\n\n this._notifyChangeEventContext = 0;\n }\n\n /**\n * Fires a ViewUpdate event when, for example, the month view is changed.\n * @param {Unit} unit\n * @private\n */\n _viewUpdate(unit: Unit) {\n this._triggerEvent({\n type: Namespace.events.update,\n change: unit,\n viewDate: this._viewDate.clone,\n } as ViewUpdateEvent);\n }\n\n private _unsubscribe(eventName, index) {\n this._subscribers[eventName].splice(index, 1);\n }\n\n /**\n * Merges two Option objects together and validates options type\n * @param config new Options\n * @param mergeTo Options to merge into\n * @param includeDataset When true, the elements data-td attributes will be included in the\n * @private\n */\n private _initializeOptions(\n config: Options,\n mergeTo: Options,\n includeDataset = false\n ): Options {\n config = OptionConverter._mergeOptions(config, mergeTo);\n if (includeDataset)\n config = OptionConverter._dataToOptions(this._element, config);\n\n OptionConverter._validateConflcits(config);\n\n config.viewDate = config.viewDate.setLocale(config.localization.locale);\n\n if (!this._viewDate.isSame(config.viewDate)) {\n this._viewDate = config.viewDate;\n }\n\n /**\n * Sets the minimum view allowed by the picker. For example the case of only\n * allowing year and month to be selected but not date.\n */\n if (config.display.components.year) {\n this._minViewModeNumber = 2;\n }\n if (config.display.components.month) {\n this._minViewModeNumber = 1;\n }\n if (config.display.components.date) {\n this._minViewModeNumber = 0;\n }\n\n this._currentViewMode = Math.max(\n this._minViewModeNumber,\n this._currentViewMode\n );\n\n // Update view mode if needed\n if (\n DatePickerModes[this._currentViewMode].name !== config.display.viewMode\n ) {\n this._currentViewMode = Math.max(\n DatePickerModes.findIndex((x) => x.name === config.display.viewMode),\n this._minViewModeNumber\n );\n }\n\n // defaults the input format based on the components enabled\n if (config.hooks.inputFormat === undefined) {\n const components = config.display.components;\n config.hooks.inputFormat = (_, date: DateTime) => {\n return date.format({\n year: components.calendar && components.year ? 'numeric' : undefined,\n month:\n components.calendar && components.month ? '2-digit' : undefined,\n day: components.calendar && components.date ? '2-digit' : undefined,\n hour:\n components.clock && components.hours\n ? components.useTwentyfourHour\n ? '2-digit'\n : 'numeric'\n : undefined,\n minute:\n components.clock && components.minutes ? '2-digit' : undefined,\n second:\n components.clock && components.seconds ? '2-digit' : undefined,\n hour12: !components.useTwentyfourHour,\n });\n };\n }\n\n if (this._display?.isVisible) {\n this._display._update('all');\n }\n\n return config;\n }\n\n /**\n * Checks if an input field is being used, attempts to locate one and sets an\n * event listener if found.\n * @private\n */\n private _initializeInput() {\n\n if (this._element.tagName == 'INPUT') {\n this._input = this._element as HTMLInputElement;\n } else {\n let query = this._element.dataset.tdTargetInput;\n if (query == undefined || query == 'nearest') {\n this._input = this._element.querySelector('input');\n } else {\n this._input = this._element.querySelector(query);\n }\n }\n\n if (!this._input) return;\n\n this._input.addEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input.addEventListener('click', this._toggleClickEvent);\n }\n\n if (this._input.value) {\n this._inputChangeEvent();\n }\n }\n\n /**\n * Attempts to locate a toggle for the picker and sets an event listener\n * @private\n */\n private _initializeToggle() {\n if (this._options.display.inline) return;\n let query = this._element.dataset.tdTargetToggle;\n if (query == 'nearest') {\n query = '[data-td-toggle=\"datetimepicker\"]';\n }\n this._toggle =\n query == undefined ? this._element : this._element.querySelector(query);\n this._toggle.addEventListener('click', this._toggleClickEvent);\n }\n\n /**\n * If the option is enabled this will render the clock view after a date pick.\n * @param e change event\n * @private\n */\n private _handleAfterChangeEvent(e: ChangeEvent) {\n if (\n // options is disabled\n !this._options.promptTimeOnDateChange ||\n this._options.display.inline ||\n this._options.display.sideBySide ||\n // time is disabled\n !this._display._hasTime ||\n // clock component is already showing\n this._display.widget\n ?.getElementsByClassName(Namespace.css.show)[0]\n .classList.contains(Namespace.css.timeContainer)\n )\n return;\n\n // First time ever. If useCurrent option is set to true (default), do nothing\n // because the first date is selected automatically.\n // or date didn't change (time did) or date changed because time did.\n if (\n (!e.oldDate && this._options.useCurrent) ||\n (e.oldDate && e.date?.isSame(e.oldDate))\n ) {\n return;\n }\n\n clearTimeout(this._currentPromptTimeTimeout);\n this._currentPromptTimeTimeout = setTimeout(() => {\n if (this._display.widget) {\n this._action.do(\n {\n currentTarget: this._display.widget.querySelector(\n `.${Namespace.css.switch} div`\n ),\n },\n ActionTypes.togglePicker\n );\n }\n }, this._options.promptTimeOnDateChangeTransitionDelay);\n }\n\n /**\n * Event for when the input field changes. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _inputChangeEvent = () => {\n const setViewDate = () => {\n if (this.dates.lastPicked) this._viewDate = this.dates.lastPicked;\n };\n\n const value = this._input.value;\n if (this._options.multipleDates) {\n try {\n const valueSplit = value.split(this._options.multipleDatesSeparator);\n for (let i = 0; i < valueSplit.length; i++) {\n if (this._options.hooks.inputParse) {\n this.dates.set(\n this._options.hooks.inputParse(this, valueSplit[i]),\n i,\n 'input'\n );\n } else {\n this.dates.set(valueSplit[i], i, 'input');\n }\n }\n setViewDate();\n } catch {\n console.warn(\n 'TD: Something went wrong trying to set the multidate values from the input field.'\n );\n }\n } else {\n if (this._options.hooks.inputParse) {\n this.dates.set(this._options.hooks.inputParse(this, value), 0, 'input');\n } else {\n this.dates.set(value, 0, 'input');\n }\n setViewDate();\n }\n };\n\n /**\n * Event for when the toggle is clicked. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _toggleClickEvent = () => {\n this.toggle();\n };\n}\n\nexport {\n TempusDominus,\n Namespace,\n DefaultOptions,\n DateTime,\n Options,\n Unit,\n DateTimeFormatOptions,\n};\n"],"names":["Unit","SecondDisplay","createPopper"],"mappings":";;;;;;;;;;;AAAYA;IAAZ,WAAY,IAAI;QACd,2BAAmB,CAAA;QACnB,2BAAmB,CAAA;QACnB,uBAAe,CAAA;QACf,qBAAa,CAAA;QACb,uBAAe,CAAA;QACf,qBAAa,CAAA;IACf,CAAC,EAPWA,YAAI,KAAJA,YAAI,QAOf;IAOD;;;;UAIa,QAAS,SAAQ,IAAI;QAAlC;;;;;YAIE,WAAM,GAAG,SAAS,CAAC;SA6YpB;;;;;QAvYC,SAAS,CAAC,KAAa;YACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,OAAO,IAAI,CAAC;SACb;;;;;;QAOD,OAAO,OAAO,CAAC,IAAU;YACvB,IAAI,CAAC,IAAI;gBAAE,MAAM,oBAAoB,CAAC;YACtC,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,OAAO,EAAE,EACd,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,UAAU,EAAE,EACjB,IAAI,CAAC,UAAU,EAAE,EACjB,IAAI,CAAC,eAAe,EAAE,CACvB,CAAC;SACH;;;;QAKD,IAAI,KAAK;YACP,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,eAAe,EAAE,CACvB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC1B;;;;;;;QAQD,OAAO,CAAC,IAAsB;YAC5B,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,SAAS,IAAI,gBAAgB,CAAC;YAClE,QAAQ,IAAI;gBACV,KAAK,SAAS;oBACZ,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;oBACxB,MAAM;gBACR,KAAK,SAAS;oBACZ,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACtB,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBACzB,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC1B,MAAM;gBACR,KAAK,SAAS;oBACZ,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACxB,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;oBAC7C,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACxB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAChB,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACxB,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACpB,MAAM;aACT;YACD,OAAO,IAAI,CAAC;SACb;;;;;;;QAQD,KAAK,CAAC,IAAsB;YAC1B,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,SAAS,IAAI,gBAAgB,CAAC;YAClE,QAAQ,IAAI;gBACV,KAAK,SAAS;oBACZ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;gBACR,KAAK,SAAS;oBACZ,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;oBACzB,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;oBAC7B,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;oBAC/B,MAAM;gBACR,KAAK,SAAS;oBACZ,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACxB,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;oBAC7C,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,CAAC,KAAK,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACtB,IAAI,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,CAAC;oBAC/B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAChB,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,CAAC,KAAK,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACtB,IAAI,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;oBAC9B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAChB,MAAM;aACT;YACD,OAAO,IAAI,CAAC;SACb;;;;;;;;QASD,UAAU,CAAC,KAAa,EAAE,IAAU;YAClC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,SAAS,IAAI,gBAAgB,CAAC;YAClE,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;YACpB,OAAO,IAAI,CAAC;SACb;;;;;;;;QASD,MAAM,CAAC,QAA+B,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM;YAC1D,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC/D;;;;;;;QAQD,QAAQ,CAAC,OAAiB,EAAE,IAAW;YACrC,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;YACrD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,SAAS,IAAI,gBAAgB,CAAC;YAClE,QACE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAC1E;SACH;;;;;;;QAQD,OAAO,CAAC,OAAiB,EAAE,IAAW;YACpC,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;YACrD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,SAAS,IAAI,gBAAgB,CAAC;YAClE,QACE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAC1E;SACH;;;;;;;QAQD,MAAM,CAAC,OAAiB,EAAE,IAAW;YACnC,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;YACvD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,SAAS,IAAI,gBAAgB,CAAC;YAClE,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACpC,QACE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EACtE;SACH;;;;;;;;;QAUD,SAAS,CACP,IAAc,EACd,KAAe,EACf,IAAW,EACX,cAAyC,IAAI;YAE7C,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,SAAS,IAAI,gBAAgB,CAAC;YAC1E,MAAM,eAAe,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;YAC/C,MAAM,gBAAgB,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;YAEhD,QACE,CAAC,CAAC,eAAe;kBACb,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;kBACxB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;iBAC3B,gBAAgB;sBACb,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;sBAC1B,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;iBAChC,CAAC,eAAe;sBACb,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;sBACzB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;qBAC1B,gBAAgB;0BACb,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;0BACzB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EACnC;SACH;;;;;;QAOD,KAAK,CACH,MAAM,GAAG,IAAI,CAAC,MAAM,EACpB,WAAgB,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE;YAExD,MAAM,KAAK,GAAG,EAAE,CAAC;YACjB,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC;iBACtC,aAAa,CAAC,IAAI,CAAC;iBACnB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;iBACnC,OAAO,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7C,OAAO,KAAK,CAAC;SACd;;;;QAKD,IAAI,OAAO;YACT,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;SAC1B;;;;QAKD,IAAI,OAAO,CAAC,KAAa;YACvB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SACxB;;;;QAKD,IAAI,gBAAgB;YAClB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;SAC3C;;;;QAKD,IAAI,OAAO;YACT,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;SAC1B;;;;QAKD,IAAI,OAAO,CAAC,KAAa;YACvB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SACxB;;;;QAKD,IAAI,gBAAgB;YAClB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;SAC3C;;;;QAKD,IAAI,KAAK;YACP,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;SACxB;;;;QAKD,IAAI,KAAK,CAAC,KAAa;YACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACtB;;;;QAKD,IAAI,cAAc;YAChB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;SACzC;;;;QAKD,IAAI,oBAAoB;YACtB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;SACvD;;;;;;;QAQD,QAAQ,CAAC,SAAiB,IAAI,CAAC,MAAM;;YACnC,OAAO,MAAA,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;gBACrC,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,IAAI;aACN,CAAC;iBACN,aAAa,CAAC,IAAI,CAAC;iBACnB,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,0CAAE,KAAK,CAAC;SAC/C;;;;QAKD,IAAI,IAAI;YACN,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;SACvB;;;;QAKD,IAAI,IAAI,CAAC,KAAa;YACpB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SACrB;;;;QAKD,IAAI,aAAa;YACf,OAAO,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1D;;;;;QAMD,IAAI,IAAI;YACN,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9C,WAAW,CAAC,OAAO,CACjB,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CACzD,CAAC;YACF,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;SAC7E;;;;QAKD,IAAI,OAAO;YACT,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;SACtB;;;;QAKD,IAAI,KAAK;YACP,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;SACxB;;;;QAKD,IAAI,KAAK,CAAC,KAAa;YACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACtB;;;;QAKD,IAAI,cAAc;YAChB,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;SACjE;;;;QAKD,IAAI,IAAI;YACN,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;SAC3B;;;;QAKD,IAAI,IAAI,CAAC,KAAa;YACpB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACzB;;;UChaU,OAAQ,SAAQ,KAAK;KAEjC;UAEY,aAAa;QAA1B;YACU,SAAI,GAAG,KAAK,CAAC;;;;;;;YAmJrB,2BAAsB,GAAG,4BAA4B,CAAC;;;;;YAMtD,uBAAkB,GAAG,0BAA0B,CAAC;;SAGjD;;;;;;QApJC,gBAAgB,CAAC,UAAkB;YACjC,MAAM,KAAK,GAAG,IAAI,OAAO,CACvB,GAAG,IAAI,CAAC,IAAI,uBAAuB,UAAU,iCAAiC,CAC/E,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;;QAMD,iBAAiB,CAAC,UAAoB;YACpC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpE,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;;;;;;QAUD,qBAAqB,CACnB,UAAkB,EAClB,QAAgB,EAChB,YAAsB;YAEtB,MAAM,KAAK,GAAG,IAAI,OAAO,CACvB,GACE,IAAI,CAAC,IACP,6BAA6B,UAAU,gCAAgC,QAAQ,wBAAwB,YAAY,CAAC,IAAI,CACtH,IAAI,CACL,EAAE,CACJ,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;;;;;;QAUD,YAAY,CAAC,UAAkB,EAAE,OAAe,EAAE,YAAoB;YACpE,MAAM,KAAK,GAAG,IAAI,OAAO,CACvB,GAAG,IAAI,CAAC,IAAI,oBAAoB,UAAU,kBAAkB,OAAO,4BAA4B,YAAY,EAAE,CAC9G,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;;;;;QASD,gBAAgB,CAAC,UAAkB,EAAE,KAAa,EAAE,KAAa;YAC/D,MAAM,KAAK,GAAG,IAAI,OAAO,CACvB,GAAG,IAAI,CAAC,IAAI,IAAI,UAAU,wCAAwC,KAAK,QAAQ,KAAK,GAAG,CACxF,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;;;;;QASD,iBAAiB,CAAC,UAAkB,EAAE,IAAS,EAAE,IAAI,GAAG,KAAK;YAC3D,MAAM,KAAK,GAAG,IAAI,OAAO,CACvB,GAAG,IAAI,CAAC,IAAI,+BAA+B,IAAI,mBAAmB,UAAU,GAAG,CAChF,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,IAAI,CAAC,IAAI;gBAAE,MAAM,KAAK,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACrB;;;;QAKD,kBAAkB;YAChB,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,2BAA2B,CAAC,CAAC;YACnE,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;;QAMD,iBAAiB;YACf,MAAM,KAAK,GAAG,IAAI,OAAO,CACvB,GAAG,IAAI,CAAC,IAAI,+DAA+D,CAC5E,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;QAKD,wBAAwB,CAAC,OAAgB;YACvC,MAAM,KAAK,GAAG,IAAI,OAAO,CACvB,GAAG,IAAI,CAAC,IAAI,uDAAuD,OAAO,EAAE,CAC7E,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;;QAMD,UAAU;YACR,OAAO,CAAC,IAAI,CACV,GAAG,IAAI,CAAC,IAAI,uFAAuF,CACpG,CAAC;SACH;;;IC/IH;IACA,MAAM,IAAI,GAAG,gBAAgB,EAC3B,OAAO,GAAG,cAAc,EACxB,OAAO,GAAG,IAAI,CAAC;IAEjB;;;IAGA,MAAM,MAAM;QAAZ;YACE,QAAG,GAAG,IAAI,OAAO,EAAE,CAAC;;;;;YAMpB,WAAM,GAAG,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC;;;;;YAM7B,WAAM,GAAG,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC;;;;;YAM7B,UAAK,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;;;;;YAM3B,SAAI,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;;;;;YAMzB,SAAI,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;;;YAKzB,SAAI,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;YACzB,UAAK,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,UAAK,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,YAAO,GAAG,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC;SAChC;KAAA;IAED,MAAM,GAAG;QAAT;;;;YAIE,WAAM,GAAG,GAAG,IAAI,SAAS,CAAC;;;;YAK1B,mBAAc,GAAG,iBAAiB,CAAC;;;;YAKnC,WAAM,GAAG,eAAe,CAAC;;;;YAKzB,YAAO,GAAG,SAAS,CAAC;;;;YAKpB,gBAAW,GAAG,cAAc,CAAC;;;;YAK7B,eAAU,GAAG,gBAAgB,CAAC;;;;YAK9B,aAAQ,GAAG,UAAU,CAAC;;;;YAKtB,SAAI,GAAG,MAAM,CAAC;;;;;YAMd,aAAQ,GAAG,UAAU,CAAC;;;;;YAMtB,QAAG,GAAG,KAAK,CAAC;;;;;YAMZ,QAAG,GAAG,KAAK,CAAC;;;;YAKZ,WAAM,GAAG,QAAQ,CAAC;;;;;YAOlB,kBAAa,GAAG,gBAAgB,CAAC;;;;YAKjC,qBAAgB,GAAG,GAAG,IAAI,CAAC,aAAa,UAAU,CAAC;;;;YAKnD,WAAM,GAAG,QAAQ,CAAC;;;;YAKlB,mBAAc,GAAG,GAAG,IAAI,CAAC,aAAa,QAAQ,CAAC;;;;YAK/C,SAAI,GAAG,MAAM,CAAC;;;;YAKd,oBAAe,GAAG,GAAG,IAAI,CAAC,aAAa,SAAS,CAAC;;;;YAKjD,UAAK,GAAG,OAAO,CAAC;;;;YAKhB,kBAAa,GAAG,GAAG,IAAI,CAAC,aAAa,OAAO,CAAC;;;;YAK7C,QAAG,GAAG,KAAK,CAAC;;;;;YAMZ,kBAAa,GAAG,IAAI,CAAC;;;;YAKrB,iBAAY,GAAG,KAAK,CAAC;;;;YAKrB,UAAK,GAAG,OAAO,CAAC;;;;YAKhB,YAAO,GAAG,SAAS,CAAC;;;;;;YASpB,kBAAa,GAAG,gBAAgB,CAAC;;;;YAKjC,cAAS,GAAG,WAAW,CAAC;;;;YAKxB,mBAAc,GAAG,GAAG,IAAI,CAAC,aAAa,QAAQ,CAAC;;;;YAK/C,kBAAa,GAAG,GAAG,IAAI,CAAC,aAAa,OAAO,CAAC;;;;YAK7C,oBAAe,GAAG,GAAG,IAAI,CAAC,aAAa,SAAS,CAAC;;;;YAKjD,oBAAe,GAAG,GAAG,IAAI,CAAC,aAAa,SAAS,CAAC;;;;YAKjD,SAAI,GAAG,MAAM,CAAC;;;;YAKd,WAAM,GAAG,QAAQ,CAAC;;;;YAKlB,WAAM,GAAG,QAAQ,CAAC;;;;YAKlB,mBAAc,GAAG,gBAAgB,CAAC;;;;;;YASlC,SAAI,GAAG,MAAM,CAAC;;;;;YAMd,eAAU,GAAG,eAAe,CAAC;;;;YAK7B,aAAQ,GAAG,aAAa,CAAC;;;;;YAOzB,WAAM,GAAG,QAAQ,CAAC;SACnB;KAAA;UAEoB,SAAS;;IACrB,cAAI,GAAG,IAAI,CAAC;IACnB;IACO,iBAAO,GAAG,OAAO,CAAC;IAClB,iBAAO,GAAG,OAAO,CAAC;IAElB,gBAAM,GAAG,IAAI,MAAM,EAAE,CAAC;IAEtB,aAAG,GAAG,IAAI,GAAG,EAAE,CAAC;IAEhB,uBAAa,GAAG,IAAI,aAAa,EAAE;;UC/QtC,cAAc,GAAY;QAC9B,YAAY,EAAE;YACZ,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,SAAS;YAClB,aAAa,EAAE,EAAE;YACjB,YAAY,EAAE,EAAE;YAChB,kBAAkB,EAAE,EAAE;YACtB,qBAAqB,EAAE,EAAE;YACzB,aAAa,EAAE,EAAE;YACjB,YAAY,EAAE,EAAE;SACjB;QACD,OAAO,EAAE;YACP,KAAK,EAAE;gBACL,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,iBAAiB;gBACvB,EAAE,EAAE,iBAAiB;gBACrB,IAAI,EAAE,mBAAmB;gBACzB,QAAQ,EAAE,qBAAqB;gBAC/B,IAAI,EAAE,sBAAsB;gBAC5B,KAAK,EAAE,uBAAuB;gBAC9B,KAAK,EAAE,cAAc;gBACrB,KAAK,EAAE,cAAc;aACtB;YACD,UAAU,EAAE,KAAK;YACjB,aAAa,EAAE,KAAK;YACpB,QAAQ,EAAE,UAAU;YACpB,gBAAgB,EAAE,QAAQ;YAC1B,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE;gBACP,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,KAAK;aACb;YACD,UAAU,EAAE;gBACV,QAAQ,EAAE,IAAI;gBACd,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,IAAI;gBACX,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,KAAK;gBACd,iBAAiB,EAAE,KAAK;aACzB;YACD,MAAM,EAAE,KAAK;SACd;QACD,QAAQ,EAAE,CAAC;QACX,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,SAAS;QACtB,YAAY,EAAE;YACZ,KAAK,EAAE,aAAa;YACpB,KAAK,EAAE,iBAAiB;YACxB,KAAK,EAAE,kBAAkB;YACzB,WAAW,EAAE,cAAc;YAC3B,aAAa,EAAE,gBAAgB;YAC/B,SAAS,EAAE,YAAY;YACvB,UAAU,EAAE,aAAa;YACzB,YAAY,EAAE,eAAe;YAC7B,QAAQ,EAAE,WAAW;YACrB,YAAY,EAAE,eAAe;YAC7B,cAAc,EAAE,iBAAiB;YACjC,UAAU,EAAE,aAAa;YACzB,eAAe,EAAE,kBAAkB;YACnC,WAAW,EAAE,cAAc;YAC3B,QAAQ,EAAE,WAAW;YACrB,aAAa,EAAE,gBAAgB;YAC/B,aAAa,EAAE,gBAAgB;YAC/B,UAAU,EAAE,aAAa;YACzB,eAAe,EAAE,kBAAkB;YACnC,eAAe,EAAE,kBAAkB;YACnC,UAAU,EAAE,aAAa;YACzB,eAAe,EAAE,kBAAkB;YACnC,eAAe,EAAE,kBAAkB;YACnC,cAAc,EAAE,iBAAiB;YACjC,UAAU,EAAE,aAAa;YACzB,UAAU,EAAE,aAAa;YACzB,mBAAmB,EAAE,MAAM;YAC3B,MAAM,EAAE,SAAS;SAClB;QACD,WAAW,EAAE,KAAK;QAClB,KAAK,EAAE,KAAK;QACZ,gBAAgB,EAAE,KAAK;QACvB,QAAQ,EAAE,IAAI,QAAQ,EAAE;QACxB,aAAa,EAAE,KAAK;QACpB,sBAAsB,EAAE,IAAI;QAC5B,sBAAsB,EAAE,KAAK;QAC7B,qCAAqC,EAAE,GAAG;QAC1C,KAAK,EAAE;YACL,UAAU,EAAE,SAAS;YACrB,WAAW,EAAE,SAAS;SACvB;MACD;IAEF,MAAM,eAAe,GAKf;QACJ;YACE,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,aAAa;YACtC,IAAI,EAAEA,YAAI,CAAC,KAAK;YAChB,IAAI,EAAE,CAAC;SACR;QACD;YACE,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,eAAe;YACxC,IAAI,EAAEA,YAAI,CAAC,IAAI;YACf,IAAI,EAAE,CAAC;SACR;QACD;YACE,IAAI,EAAE,OAAO;YACb,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,cAAc;YACvC,IAAI,EAAEA,YAAI,CAAC,IAAI;YACf,IAAI,EAAE,EAAE;SACT;QACD;YACE,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,gBAAgB;YACzC,IAAI,EAAEA,YAAI,CAAC,IAAI;YACf,IAAI,EAAE,GAAG;SACV;KACF;;IC/HD;;;UAGqB,QAAQ;QAA7B;;;;;;YAmFU,qCAAgC,GAAG,CAAC,OAAoB;gBAC9D,IAAI,CAAC,OAAO,EAAE;oBACZ,OAAO,CAAC,CAAC;iBACV;;gBAGD,IAAI,EAAE,kBAAkB,EAAE,eAAe,EAAE,GACzC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBAEnC,MAAM,uBAAuB,GAAG,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;gBACtE,MAAM,oBAAoB,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;;gBAGhE,IAAI,CAAC,uBAAuB,IAAI,CAAC,oBAAoB,EAAE;oBACrD,OAAO,CAAC,CAAC;iBACV;;gBAGD,kBAAkB,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtD,eAAe,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEhD,QACE,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC;oBACpC,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC;oBACpC,IAAI,EACJ;aACH,CAAC;SACH;;;;;QAvGC,MAAM,CAAC,MAAmB,EAAE,QAAQ,GAAG,SAAS;YAC9C,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBACjD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;aAC7B;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;aAC7B;SACF;;;;;QAMD,IAAI,CAAC,MAAmB,EAAE,QAAQ,GAAG,SAAS;YAC5C,IACE,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;gBACnD,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;gBAE7C,OAAO;YAET,MAAM,QAAQ,GAAG;gBACf,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAClD,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACjE,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;gBACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,IAAI,QAAQ;oBAAE,QAAQ,EAAE,CAAC;aAC1B,CAAC;YAEF,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;YAC1B,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAE/C,IAAI,CAAC,OAAO,GAAG,UAAU,CACvB,QAAQ,EACR,IAAI,CAAC,gCAAgC,CAAC,MAAM,CAAC,CAC9C,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,IAAI,CAAC;SAClD;;;;;QAMD,IAAI,CAAC,MAAmB,EAAE,QAAQ,GAAG,SAAS;YAC5C,IACE,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;gBACnD,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;gBAE9C,OAAO;YAET,MAAM,QAAQ,GAAG;gBACf,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAClD,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;aACrB,CAAC;YAEF,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;YAEtE,MAAM,MAAM,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC;YAEjD,MAAM,CAAC,MAAM,CAAC,CAAC;YAEf,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC/C,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;YAEzB,IAAI,CAAC,OAAO,GAAG,UAAU,CACvB,QAAQ,EACR,IAAI,CAAC,gCAAgC,CAAC,MAAM,CAAC,CAC9C,CAAC;SACH;;;IC3EH;;;UAGqB,OAAO;QAI1B,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;SAChC;;;;;;QAOD,EAAE,CAAC,CAAM,EAAE,MAAoB;YAC7B,MAAM,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC;YACtC,IAAI,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC3E,MAAM,GAAG,MAAM,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;YAChD,MAAM,UAAU,GAAG,CACjB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EACzD,KAAK,CAAC;;;;;;YAOR,MAAM,gBAAgB,GAAG,CAAC,IAAU,EAAE,KAAK,GAAG,CAAC;gBAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACnD,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;oBACpD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CACpC,CAAC;iBACH;aACF,CAAC;YAEF,QAAQ,MAAM;gBACZ,KAAK,WAAW,CAAC,IAAI,CAAC;gBACtB,KAAK,WAAW,CAAC,QAAQ;oBACvB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;oBACvE,IAAI,MAAM,KAAK,WAAW,CAAC,IAAI;wBAC7B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;;wBAC5C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBACzD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBAEhC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;oBACnC,MAAM;gBACR,KAAK,WAAW,CAAC,YAAY;oBAC3B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;oBACpC,IAAI,CAAC,QAAQ,CAAC,WAAW,CACvB,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,IAAI,CACrD,CAAC;oBACF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;oBAC/C,MAAM;gBACR,KAAK,WAAW,CAAC,WAAW,CAAC;gBAC7B,KAAK,WAAW,CAAC,UAAU,CAAC;gBAC5B,KAAK,WAAW,CAAC,YAAY;oBAC3B,MAAM,KAAK,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;oBAC3C,QAAQ,MAAM;wBACZ,KAAK,WAAW,CAAC,WAAW;4BAC1B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;4BACtC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAACA,YAAI,CAAC,KAAK,CAAC,CAAC;4BACtC,MAAM;wBACR,KAAK,WAAW,CAAC,UAAU;4BACzB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC;4BACrC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;4BACrC,MAAM;wBACR,KAAK,WAAW,CAAC,YAAY;4BAC3B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC;4BACrC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;4BACrC,MAAM;qBACT;oBAED,IACE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,KAAK,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EACnE;wBACA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,IAAI,CAAC,QAAQ,CAAC,SAAS,EACvB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CACpC,CAAC;wBACF,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE;4BAC1C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;yBAC/B;qBACF;yBAAM;wBACL,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;qBACtC;oBACD,MAAM;gBACR,KAAK,WAAW,CAAC,SAAS;oBACxB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC;oBAC1C,IAAI,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;wBACvD,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,CAAC;qBAChC;oBACD,IAAI,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;wBACvD,GAAG,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,CAAC;qBAC/B;oBAED,GAAG,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC;oBACtC,IAAI,KAAK,GAAG,CAAC,CAAC;oBACd,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE;wBACxC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;wBACxD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;4BAChB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;yBAC5C;6BAAM;4BACL,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,GAAG,EACH,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,GAAG,CAAC,CACxC,CAAC;yBACH;qBACF;yBAAM;wBACL,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,GAAG,EACH,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CACpC,CAAC;qBACH;oBAED,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ;wBAChC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ;wBACxC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;wBACtC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EACrC;wBACA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;qBAC/B;oBACD,MAAM;gBACR,KAAK,WAAW,CAAC,UAAU;oBACzB,IAAI,IAAI,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;oBACxC,IACE,UAAU,CAAC,KAAK,IAAI,EAAE;wBACtB,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB;wBAE5D,IAAI,IAAI,EAAE,CAAC;oBACb,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;oBACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,UAAU,EACV,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CACpC,CAAC;oBACF,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB;wBAC3D,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO;wBAClD,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ;wBACxC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EACtC;wBACA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;qBAC/B;yBAAM;wBACL,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;qBACnC;oBACD,MAAM;gBACR,KAAK,WAAW,CAAC,YAAY;oBAC3B,UAAU,CAAC,OAAO,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;oBAClD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,UAAU,EACV,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CACpC,CAAC;oBACF,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB;wBAC3D,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO;wBAClD,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ;wBACxC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EACtC;wBACA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;qBAC/B;yBAAM;wBACL,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;qBACnC;oBACD,MAAM;gBACR,KAAK,WAAW,CAAC,YAAY;oBAC3B,UAAU,CAAC,OAAO,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;oBAClD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,UAAU,EACV,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CACpC,CAAC;oBACF,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB;wBAC3D,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ;wBACxC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EACtC;wBACA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;qBAC/B;yBAAM;wBACL,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;qBACnC;oBACD,MAAM;gBACR,KAAK,WAAW,CAAC,cAAc;oBAC7B,gBAAgB,CAACA,YAAI,CAAC,KAAK,CAAC,CAAC;oBAC7B,MAAM;gBACR,KAAK,WAAW,CAAC,gBAAgB;oBAC/B,gBAAgB,CAACA,YAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBAChE,MAAM;gBACR,KAAK,WAAW,CAAC,gBAAgB;oBAC/B,gBAAgB,CAACA,YAAI,CAAC,OAAO,CAAC,CAAC;oBAC/B,MAAM;gBACR,KAAK,WAAW,CAAC,cAAc;oBAC7B,gBAAgB,CAACA,YAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;oBACjC,MAAM;gBACR,KAAK,WAAW,CAAC,gBAAgB;oBAC/B,gBAAgB,CAACA,YAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;oBACrE,MAAM;gBACR,KAAK,WAAW,CAAC,gBAAgB;oBAC/B,gBAAgB,CAACA,YAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;oBACnC,MAAM;gBACR,KAAK,WAAW,CAAC,cAAc;oBAC7B,gBAAgB,CACdA,YAAI,CAAC,KAAK,EACV,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CACtD,CAAC;oBACF,MAAM;gBACR,KAAK,WAAW,CAAC,YAAY;oBAC3B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM;yBAC1B,gBAAgB,CACf,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa,MAAM,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,CACnE;yBACA,OAAO,CAAC,CAAC,WAAwB,KAChC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAClC,CAAC;oBACJ,IACE,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC;wBACnC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,EAC9C;wBACA,aAAa,CAAC,YAAY,CACxB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAC/C,CAAC;wBACF,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CACvD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAC1C,CAAC,SAAS,CAAC;wBAEZ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;qBAChD;yBAAM;wBACL,aAAa,CAAC,YAAY,CACxB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAC/C,CAAC;wBACF,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CACvD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAC1C,CAAC,SAAS,CAAC;wBACZ,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;wBAClC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;qBACzC;oBACD,MAAM;gBACR,KAAK,WAAW,CAAC,SAAS,CAAC;gBAC3B,KAAK,WAAW,CAAC,SAAS,CAAC;gBAC3B,KAAK,WAAW,CAAC,WAAW,CAAC;gBAC7B,KAAK,WAAW,CAAC,WAAW;oBAC1B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM;yBAC1B,gBAAgB,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAC;yBACzD,OAAO,CACN,CAAC,WAAwB,MAAM,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,CACnE,CAAC;oBAEJ,IAAI,UAAU,GAAG,EAAE,CAAC;oBACpB,QAAQ,MAAM;wBACZ,KAAK,WAAW,CAAC,SAAS;4BACxB,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC;4BAC1C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;4BACxC,MAAM;wBACR,KAAK,WAAW,CAAC,SAAS;4BACxB,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC;4BACzC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAACA,YAAI,CAAC,KAAK,CAAC,CAAC;4BAC3C,MAAM;wBACR,KAAK,WAAW,CAAC,WAAW;4BAC1B,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC;4BAC3C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAACA,YAAI,CAAC,OAAO,CAAC,CAAC;4BAC7C,MAAM;wBACR,KAAK,WAAW,CAAC,WAAW;4BAC1B,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC;4BAC3C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAACA,YAAI,CAAC,OAAO,CAAC,CAAC;4BAC7C,MAAM;qBACT;oBAEa,CACZ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAClE,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;oBAC1B,MAAM;gBACR,KAAK,WAAW,CAAC,KAAK;oBACpB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBACpC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;oBAC/C,MAAM;gBACR,KAAK,WAAW,CAAC,KAAK;oBACpB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAC9B,MAAM;gBACR,KAAK,WAAW,CAAC,KAAK;oBACpB,MAAM,KAAK,GAAG,IAAI,QAAQ,EAAE,CAAC,SAAS,CACpC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAC3C,CAAC;oBACF,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;oBAChC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAEA,YAAI,CAAC,IAAI,CAAC;wBACrD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,KAAK,EACL,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CACpC,CAAC;oBACJ,MAAM;aACT;SACF;KACF;IAED,IAAY,WA0BX;IA1BD,WAAY,WAAW;QACrB,4BAAa,CAAA;QACb,oCAAqB,CAAA;QACrB,4CAA6B,CAAA;QAC7B,0CAA2B,CAAA;QAC3B,wCAAyB,CAAA;QACzB,4CAA6B,CAAA;QAC7B,sCAAuB,CAAA;QACvB,wCAAyB,CAAA;QACzB,4CAA6B,CAAA;QAC7B,4CAA6B,CAAA;QAC7B,gDAAiC,CAAA;QACjC,oDAAqC,CAAA;QACrC,oDAAqC,CAAA;QACrC,gDAAiC,CAAA;QACjC,oDAAqC,CAAA;QACrC,oDAAqC,CAAA;QACrC,gDAAiC,CAAA;QACjC,4CAA6B,CAAA;QAC7B,sCAAuB,CAAA;QACvB,sCAAuB,CAAA;QACvB,0CAA2B,CAAA;QAC3B,0CAA2B,CAAA;QAC3B,8BAAe,CAAA;QACf,8BAAe,CAAA;QACf,8BAAe,CAAA;IACjB,CAAC,EA1BW,WAAW,KAAX,WAAW;;IC1SvB;;;UAGqB,WAAW;QAG9B,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAErD,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;YAE3C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE;gBAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAC1E,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;oBAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE;wBAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;wBAC1C,GAAG,CAAC,SAAS,CAAC,GAAG,CACf,SAAS,CAAC,GAAG,CAAC,aAAa,EAC3B,SAAS,CAAC,GAAG,CAAC,WAAW,CAC1B,CAAC;wBACF,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;qBAC5B;iBACF;gBAED,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;gBACvD,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YAED,OAAO,SAAS,CAAC;SAClB;;;;;QAMD,OAAO;YACL,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CACpE,SAAS,CAAC,GAAG,CAAC,aAAa,CAC5B,CAAC,CAAC,CAAC,CAAC;YACL,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,aAAa;iBACvD,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;iBACvD,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAE/B,QAAQ,CAAC,YAAY,CACnB,SAAS,CAAC,GAAG,CAAC,aAAa,EAC3B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC;gBAC7B,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,mBAAmB;aAC/D,CAAC,CACH,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAC/B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,EACxDA,YAAI,CAAC,KAAK,CACX;kBACG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBACjD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEnD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAC/B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,EACvDA,YAAI,CAAC,KAAK,CACX;kBACG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBAC7C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE/C,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK;iBAC1C,OAAO,CAACA,YAAI,CAAC,KAAK,CAAC;iBACnB,OAAO,CAAC,SAAS,CAAC;iBAClB,UAAU,CAAC,EAAE,EAAEA,YAAI,CAAC,KAAK,CAAC,CAAC;YAE9B,SAAS;iBACN,gBAAgB,CACf,iBAAiB,WAAW,CAAC,SAAS,QAAQ,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,CAC5E;iBACA,OAAO,CAAC,CAAC,cAA2B,EAAE,KAAK;gBAC1C,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa;oBAC5C,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,EAC9D;oBACA,IAAI,cAAc,CAAC,SAAS,KAAK,GAAG;wBAAE,OAAO;oBAC7C,cAAc,CAAC,SAAS,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;oBAC/C,OAAO;iBACR;gBAED,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAEhC,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAEA,YAAI,CAAC,KAAK,CAAC,EAAE;oBAC3D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBACjC;gBACD,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAEA,YAAI,CAAC,KAAK,CAAC,EAAE;oBAC1D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBACjC;gBAED,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;oBACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAEA,YAAI,CAAC,IAAI,CAAC,EAClD;oBACA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBACpC;gBACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAEA,YAAI,CAAC,IAAI,CAAC,EAAE;oBAC5D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACtC;gBACD,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,QAAQ,EAAE,EAAEA,YAAI,CAAC,IAAI,CAAC,EAAE;oBAC/C,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;iBACnC;gBACD,IAAI,SAAS,CAAC,OAAO,KAAK,CAAC,IAAI,SAAS,CAAC,OAAO,KAAK,CAAC,EAAE;oBACtD,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;iBACrC;gBAED,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC7D,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBACzC,cAAc,CAAC,YAAY,CACzB,YAAY,EACZ,GAAG,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,cAAc,IAAI,SAAS,CAAC,aAAa,EAAE,CAC3E,CAAC;gBACF,cAAc,CAAC,YAAY,CACzB,UAAU,EACV,GAAG,SAAS,CAAC,IAAI,EAAE,CACpB,CAAC;gBACF,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;gBAChE,SAAS,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;aACpC,CAAC,CAAC;SACN;;;;;QAMO,cAAc;YACpB,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK;iBAC1C,OAAO,CAAC,SAAS,CAAC;iBAClB,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;YACtB,MAAM,GAAG,GAAG,EAAE,CAAC;YACf,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAE9B,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE;gBAChD,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACrD,cAAc,CAAC,SAAS,CAAC,GAAG,CAC1B,SAAS,CAAC,GAAG,CAAC,aAAa,EAC3B,SAAS,CAAC,GAAG,CAAC,WAAW,CAC1B,CAAC;gBACF,cAAc,CAAC,SAAS,GAAG,GAAG,CAAC;gBAC/B,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aAC1B;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC1B,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACrD,cAAc,CAAC,SAAS,CAAC,GAAG,CAC1B,SAAS,CAAC,GAAG,CAAC,YAAY,EAC1B,SAAS,CAAC,GAAG,CAAC,WAAW,CAC1B,CAAC;gBACF,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;gBAClE,SAAS,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;gBACnC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aAC1B;YAED,OAAO,GAAG,CAAC;SACZ;;;IC5KH;;;UAGqB,YAAY;QAG/B,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAEvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;gBACzD,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YAED,OAAO,SAAS,CAAC;SAClB;;;;;QAMD,OAAO;YACL,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CACpE,SAAS,CAAC,GAAG,CAAC,eAAe,CAC9B,CAAC,CAAC,CAAC,CAAC;YACL,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,aAAa;iBACvD,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;iBACvD,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAE/B,QAAQ,CAAC,YAAY,CACnB,SAAS,CAAC,GAAG,CAAC,eAAe,EAC7B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CACpD,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAC/B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,EACvDA,YAAI,CAAC,IAAI,CACV;kBACG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBACjD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEnD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAC/B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,EACtDA,YAAI,CAAC,IAAI,CACV;kBACG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBAC7C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE/C,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;YAEjE,SAAS;iBACN,gBAAgB,CAAC,iBAAiB,WAAW,CAAC,WAAW,IAAI,CAAC;iBAC9D,OAAO,CAAC,CAAC,cAA2B,EAAE,KAAK;gBAC1C,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAElC,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;oBACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAEA,YAAI,CAAC,KAAK,CAAC,EACnD;oBACA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBACpC;gBACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAEA,YAAI,CAAC,KAAK,CAAC,EAAE;oBAC7D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACtC;gBAED,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC7D,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBACzC,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;gBACtD,cAAc,CAAC,SAAS,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;gBACrE,SAAS,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,CAAC;aACrC,CAAC,CAAC;SACN;;;UCSU,eAAe;QAC1B,OAAO,aAAa,CAAC,eAAwB,EAAE,OAAgB;YAC7D,MAAM,UAAU,GAAG,EAAa,CAAC;YACjC,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,MAAM,gBAAgB,GAAG,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;YAEvD,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW;gBACvD,QAAQ,GAAG;oBACT,KAAK,aAAa,EAAE;wBAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;wBAC5D,IAAI,QAAQ,KAAK,SAAS,EAAE;4BAC1B,OAAO,QAAQ,CAAC;yBACjB;wBACD,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,aAAa,EACb,YAAY,EACZ,kBAAkB,CACnB,CAAC;qBACH;oBACD,KAAK,UAAU,EAAE;wBACf,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;wBACzD,IAAI,QAAQ,KAAK,SAAS,EAAE;4BAC1B,OAAO,QAAQ,CAAC;yBACjB;wBACD,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,UAAU,EACV,YAAY,EACZ,kBAAkB,CACnB,CAAC;qBACH;oBACD,KAAK,SAAS,EAAE;wBACd,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,KAAK,CAAC;yBACd;wBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;wBACrE,IAAI,QAAQ,KAAK,SAAS,EAAE;4BAC1B,OAAO,QAAQ,CAAC;yBACjB;wBACD,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,CACnB,CAAC;qBACH;oBACD,KAAK,SAAS,EAAE;wBACd,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,KAAK,CAAC;yBACd;wBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;wBACrE,IAAI,QAAQ,KAAK,SAAS,EAAE;4BAC1B,OAAO,QAAQ,CAAC;yBACjB;wBACD,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,CACnB,CAAC;qBACH;oBACD,KAAK,eAAe;wBAClB,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,EAAE,CAAC;yBACX;wBACD,IAAI,CAAC,qBAAqB,CACxB,4BAA4B,EAC5B,KAAK,EACL,YAAY,CACb,CAAC;wBACF,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;4BACjD,SAAS,CAAC,aAAa,CAAC,gBAAgB,CACtC,4BAA4B,EAC5B,CAAC,EACD,EAAE,CACH,CAAC;wBACJ,OAAO,KAAK,CAAC;oBACf,KAAK,cAAc;wBACjB,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,EAAE,CAAC;yBACX;wBACD,IAAI,CAAC,qBAAqB,CACxB,2BAA2B,EAC3B,KAAK,EACL,YAAY,CACb,CAAC;wBACF,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;4BACjD,SAAS,CAAC,aAAa,CAAC,gBAAgB,CACtC,2BAA2B,EAC3B,CAAC,EACD,EAAE,CACH,CAAC;wBACJ,OAAO,KAAK,CAAC;oBACf,KAAK,oBAAoB;wBACvB,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,EAAE,CAAC;yBACX;wBACD,IAAI,CAAC,qBAAqB,CACxB,iCAAiC,EACjC,KAAK,EACL,YAAY,CACb,CAAC;wBACF,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;4BAChD,SAAS,CAAC,aAAa,CAAC,gBAAgB,CACtC,iCAAiC,EACjC,CAAC,EACD,CAAC,CACF,CAAC;wBACJ,OAAO,KAAK,CAAC;oBACf,KAAK,cAAc;wBACjB,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,EAAE,CAAC;yBACX;wBACD,IAAI,CAAC,mBAAmB,CACtB,2BAA2B,EAC3B,KAAK,EACL,YAAY,CACb,CAAC;wBACF,OAAO,KAAK,CAAC;oBACf,KAAK,eAAe;wBAClB,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,EAAE,CAAC;yBACX;wBACD,IAAI,CAAC,mBAAmB,CACtB,4BAA4B,EAC5B,KAAK,EACL,YAAY,CACb,CAAC;wBACF,OAAO,KAAK,CAAC;oBACf,KAAK,uBAAuB;wBAC1B,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,EAAE,CAAC;yBACX;wBACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;4BACzB,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,GAAG,EACH,YAAY,EACZ,qDAAqD,CACtD,CAAC;yBACH;wBACD,MAAM,WAAW,GAAG,KAAiC,CAAC;wBACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAC3C,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;gCACrC,MAAM,aAAa,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;gCAC3C,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gCAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;gCACxD,IAAI,CAAC,QAAQ,EAAE;oCACb,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,aAAa,EACb,OAAO,CAAC,EACR,kBAAkB,CACnB,CAAC;iCACH;gCACD,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;6BAC/B,CAAC,CAAC;yBACJ;wBACD,OAAO,WAAW,CAAC;oBACrB,KAAK,kBAAkB,CAAC;oBACxB,KAAK,MAAM,CAAC;oBACZ,KAAK,UAAU,CAAC;oBAChB,KAAK,qBAAqB;wBACxB,MAAM,YAAY,GAAG;4BACnB,gBAAgB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC;4BAC9C,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;4BAC1B,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;4BAC7D,mBAAmB,EAAE;gCACnB,SAAS;gCACT,SAAS;gCACT,MAAM;gCACN,OAAO;gCACP,QAAQ;6BACT;yBACF,CAAC;wBACF,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;wBACrC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;4BAC7B,SAAS,CAAC,aAAa,CAAC,qBAAqB,CAC3C,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EACjB,KAAK,EACL,UAAU,CACX,CAAC;wBAEJ,OAAO,KAAK,CAAC;oBACf,KAAK,YAAY,CAAC;oBAClB,KAAK,aAAa;wBAChB,OAAO,KAAK,CAAC;oBACf;wBACE,QAAQ,WAAW;4BACjB,KAAK,SAAS;gCACZ,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,CAAC;4BAC5C,KAAK,QAAQ;gCACX,OAAO,CAAC,KAAK,CAAC;4BAChB,KAAK,QAAQ;gCACX,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;4BAC1B,KAAK,QAAQ;gCACX,OAAO,EAAE,CAAC;4BACZ,KAAK,UAAU;gCACb,OAAO,KAAK,CAAC;4BACf;gCACE,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EACjB,YAAY,EACZ,WAAW,CACZ,CAAC;yBACL;iBACJ;aACF,CAAC;;;;;;;;;YAUF,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM;gBAC3C,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CACrD,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC7C,CAAC;gBACF,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;oBACjC,MAAM,gBAAgB,GAAG,eAAe,CAAC,sBAAsB,CAAC;oBAEhE,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;wBACtC,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC;wBACjE,IAAI,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC7D,IAAI,UAAU;4BAAE,KAAK,IAAI,iBAAiB,UAAU,IAAI,CAAC;wBACzD,OAAO,KAAK,CAAC;qBACd,CAAC,CAAC;oBACH,SAAS,CAAC,aAAa,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;iBACnD;gBACD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG;oBACnC,MAAM,kBAAkB,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;oBAC5C,IAAI,YAAY,GAAG,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;oBACxC,IAAI,WAAW,GAAG,OAAO,kBAAkB,CAAC;oBAC5C,IAAI,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;oBAC1B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;wBACjC,IACE,WAAW,KAAK,WAAW;6BAC1B,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,MAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,EAC1D;4BACA,MAAM,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC;4BACjC,OAAO;yBACR;wBACD,QAAQ,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC;wBACnC,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;qBACvB;oBACD,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;oBAClB,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;oBAEhE,IACE,OAAO,kBAAkB,KAAK,QAAQ;wBACtC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAC9B;wBACA,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;wBACtD,OAAO;qBACR;oBACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;wBACjC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;wBACvD,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;qBACvD;oBACD,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;iBACvD,CAAC,CAAC;aACJ,CAAC;YACF,MAAM,CAAC,eAAe,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;YAE7C,OAAO,UAAU,CAAC;SACnB;QAED,OAAO,cAAc,CAAC,OAAO,EAAE,OAAgB;YAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;YAC9B,IACE,CAAC,KAAK;gBACN,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;gBAC/B,KAAK,CAAC,WAAW,KAAK,YAAY;gBAElC,OAAO,OAAO,CAAC;YACjB,IAAI,WAAW,GAAG,EAAa,CAAC;;;YAIhC,MAAM,kBAAkB,GAAG,CAAC,MAAM;gBAChC,MAAM,OAAO,GAAG,EAAE,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC5B,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC;iBAC9B,CAAC,CAAC;gBAEH,OAAO,OAAO,CAAC;aAChB,CAAC;YAEF,MAAM,UAAU,GAAG,CACjB,KAAe,EACf,KAAa,EACb,cAAkB,EAClB,KAAU;;gBAGV,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;gBAE7D,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;gBAChE,MAAM,cAAc,GAAG,EAAE,CAAC;gBAE1B,IAAI,SAAS,KAAK,SAAS;oBAAE,OAAO,cAAc,CAAC;;gBAGnD,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC,WAAW,KAAK,MAAM,EAAE;oBACpD,KAAK,EAAE,CAAC;oBACR,cAAc,CAAC,SAAS,CAAC,GAAG,UAAU,CACpC,KAAK,EACL,KAAK,EACL,cAAc,CAAC,SAAS,CAAC,EACzB,KAAK,CACN,CAAC;iBACH;qBAAM;oBACL,cAAc,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;iBACnC;gBACD,OAAO,cAAc,CAAC;aACvB,CAAC;YACF,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAEjD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;iBACf,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;iBAC9C,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;iBAC1B,OAAO,CAAC,CAAC,GAAG;gBACX,IAAI,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;;;gBAIhD,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;;oBAErB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;oBAE7B,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;oBACjD,IACE,SAAS,KAAK,SAAS;wBACvB,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,KAAK,MAAM,EACzC;wBACA,WAAW,CAAC,SAAS,CAAC,GAAG,UAAU,CACjC,KAAK,EACL,CAAC,EACD,OAAO,CAAC,SAAS,CAAC,EAClB,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAClB,CAAC;qBACH;iBACF;;qBAEI,IAAI,SAAS,KAAK,SAAS,EAAE;oBAChC,WAAW,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;iBAC5C;aACF,CAAC,CAAC;YAEL,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;SACjD;;;;;;QAOD,OAAO,cAAc,CAAC,CAAM;YAC1B,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI;gBAAE,OAAO,CAAC,CAAC;YACnD,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;gBACpC,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;aAC5B;YACD,IAAI,OAAO,CAAC,KAAK,OAAO,EAAE,EAAE;gBAC1B,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,MAAM,EAAE;oBACvC,OAAO,IAAI,CAAC;iBACb;gBACD,OAAO,QAAQ,CAAC;aACjB;YACD,OAAO,IAAI,CAAC;SACb;;;;;;;QAQD,OAAO,mBAAmB,CAAC,UAAkB,EAAE,KAAK,EAAE,YAAoB;YACxE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACzB,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,UAAU,EACV,YAAY,EACZ,2BAA2B,CAC5B,CAAC;aACH;YACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACrC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;gBACrD,IAAI,CAAC,QAAQ,EAAE;oBACb,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,UAAU,EACV,OAAO,CAAC,EACR,kBAAkB,CACnB,CAAC;iBACH;gBACD,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;aACrB;SACF;;;;;;;QAQD,OAAO,qBAAqB,CAC1B,UAAkB,EAClB,KAAK,EACL,YAAoB;YAEpB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,EAAE;gBACrE,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,UAAU,EACV,YAAY,EACZ,kBAAkB,CACnB,CAAC;aACH;YACD,OAAO;SACR;;;;;;QAOD,OAAO,eAAe,CAAC,CAAM,EAAE,UAAkB;YAC/C,IAAI,OAAO,CAAC,KAAK,OAAO,EAAE,IAAI,UAAU,KAAK,OAAO,EAAE;gBACpD,SAAS,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;aACtC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAEzC,IAAI,CAAC,SAAS,EAAE;gBACd,SAAS,CAAC,aAAa,CAAC,iBAAiB,CACvC,UAAU,EACV,CAAC,EACD,UAAU,KAAK,OAAO,CACvB,CAAC;aACH;YACD,OAAO,SAAS,CAAC;SAClB;QAIO,WAAW,sBAAsB;YACvC,IAAI,IAAI,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC,SAAS,CAAC;YAC1C,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,KAC3B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;kBACZ,EAAE;kBACF,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;sBACf,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;sBAC/D,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEpB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC;YAE1C,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;;;;;;QAOD,OAAO,kBAAkB,CAAC,MAAe;YACvC,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE;gBAC9D,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;oBACpE,SAAS,CAAC,aAAa,CAAC,wBAAwB,CAC9C,0BAA0B,CAC3B,CAAC;iBACH;gBAED,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;oBACrE,SAAS,CAAC,aAAa,CAAC,wBAAwB,CAC9C,2BAA2B,CAC5B,CAAC;iBACH;aACF;SACF;;;UCtjBkB,KAAK;QAIxB,YAAY,OAAsB;YAH1B,WAAM,GAAe,EAAE,CAAC;YAI9B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;QAKD,IAAI,MAAM;YACR,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;;;;QAKD,IAAI,UAAU;YACZ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SAC1C;;;;QAKD,IAAI,eAAe;YACjB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;SAC/B;;;;;QAMD,GAAG,CAAC,IAAc;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACxB;;;;;;;;QASD,GAAG,CAAC,KAAU,EAAE,KAAc,EAAE,OAAe,UAAU;YACvD,IAAI,CAAC,KAAK;gBAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACzC,MAAM,SAAS,GAAG,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC/D,IAAI,SAAS;gBAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;SACjD;;;;;;;QAQD,QAAQ,CAAC,UAAoB,EAAE,IAAW;YACxC,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,UAAU,CAAC,KAAK,SAAS,CAAC;YAE1E,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAE3C,IAAI,kBAAkB,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEnD,QACE,IAAI,CAAC,MAAM;iBACR,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;iBAC5B,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,kBAAkB,CAAC,KAAK,SAAS,EACtD;SACH;;;;;;;;QASD,WAAW,CAAC,UAAoB,EAAE,IAAW;YAC3C,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAElD,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAE3C,IAAI,kBAAkB,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEnD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;SAC7E;;;;QAKD,KAAK;YACH,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;gBAC1B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM;gBAC7B,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,IAAI,CAAC,UAAU;gBACxB,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,IAAI;aACC,CAAC,CAAC;YAClB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;SAClB;;;;;;QAOD,OAAO,eAAe,CACpB,MAAc,EACd,IAAY;YAEZ,MAAM,IAAI,GAAG,MAAM,GAAG,EAAE,EACtB,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,MAAM,EAC9C,OAAO,GAAG,SAAS,GAAG,IAAI,GAAG,CAAC,EAC9B,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YAC9C,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;SACzC;;;;;;;;;;QAWD,SAAS,CAAC,MAAiB,EAAE,KAAc;YACzC,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,WAAW,EAC1C,OAAO,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC;YAC/B,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/D,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,OAAO,IAAI,OAAO,EAAE;gBAC3D,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;aAC3B;YAED,MAAM,WAAW,GAAG;gBAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;oBAAE,OAAO;gBAElC,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CACrD,IAAI,CAAC,QAAQ,EACb,MAAM,CACP,CAAC;gBACF,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE;oBACxC,QAAQ,GAAG,IAAI,CAAC,MAAM;yBACnB,GAAG,CAAC,CAAC,CAAC,KACL,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAC3D;yBACA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;iBACxD;gBACD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,QAAQ;oBACxC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC;aACzC,CAAC;YAEF,IAAI,MAAM,KAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAC,MAAM,CAAC,CAAA,EAAE;gBACrC,WAAW,EAAE,CAAC;gBACd,OAAO;aACR;;YAGD,IAAI,CAAC,MAAM,EAAE;gBACX,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa;oBACrC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;oBACxB,OAAO,EACP;oBACA,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;oBAC5B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;iBAClB;qBAAM;oBACL,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;iBAC9B;gBACD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;oBAC1B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM;oBAC7B,IAAI,EAAE,SAAS;oBACf,OAAO;oBACP,OAAO;oBACP,OAAO,EAAE,IAAI;iBACC,CAAC,CAAC;gBAElB,WAAW,EAAE,CAAC;gBACd,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACtC,OAAO;aACR;YAED,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC;YACnB,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;;YAGtB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,KAAK,CAAC,EAAE;gBACzC,MAAM,CAAC,OAAO;oBACZ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;wBAC5D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAClC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;aACpB;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;gBAC5B,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;gBAEvC,WAAW,EAAE,CAAC;gBAEd,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;gBAC7B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;oBAC1B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM;oBAC7B,IAAI,EAAE,MAAM;oBACZ,OAAO;oBACP,OAAO;oBACP,OAAO,EAAE,IAAI;iBACC,CAAC,CAAC;gBAClB,OAAO;aACR;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE;gBACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;gBAC5B,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;gBAEvC,WAAW,EAAE,CAAC;gBAEd,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;oBAC1B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM;oBAC7B,IAAI,EAAE,MAAM;oBACZ,OAAO;oBACP,OAAO;oBACP,OAAO,EAAE,KAAK;iBACA,CAAC,CAAC;aACnB;YACD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;gBAC1B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK;gBAC5B,MAAM,EAAE,SAAS,CAAC,aAAa,CAAC,sBAAsB;gBACtD,IAAI,EAAE,MAAM;gBACZ,OAAO;aACK,CAAC,CAAC;SACjB;;;;;QAMD,OAAO,eAAe,CAAC,IAAU;YAC/B,QAAQ,IAAI;gBACV,KAAK,MAAM;oBACT,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;gBAChC,KAAK,OAAO;oBACV,OAAO;wBACL,KAAK,EAAE,SAAS;wBAChB,IAAI,EAAE,SAAS;qBAChB,CAAC;gBACJ,KAAK,MAAM;oBACT,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;aAC9B;SACF;;;IC3PH;;;UAGqB,WAAW;QAK9B,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAEtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;gBACxD,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YAED,OAAO,SAAS,CAAC;SAClB;;;;;QAMD,OAAO;YACgB,KAAK,CAAC,eAAe,CACxC,EAAE,EACF,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAC5B;YACF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;YAC1E,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;YAExE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CACpE,SAAS,CAAC,GAAG,CAAC,cAAc,CAC7B,CAAC,CAAC,CAAC,CAAC;YACL,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,aAAa;iBACvD,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;iBACvD,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAE/B,QAAQ,CAAC,YAAY,CACnB,SAAS,CAAC,GAAG,CAAC,cAAc,EAC5B,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAC9F,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAEA,YAAI,CAAC,IAAI,CAAC;kBACzD,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBACjD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAEA,YAAI,CAAC,IAAI,CAAC;kBACvD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBAC7C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE/C,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK;iBAC1C,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC;iBAClB,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;YAE7B,SAAS;iBACN,gBAAgB,CAAC,iBAAiB,WAAW,CAAC,UAAU,IAAI,CAAC;iBAC7D,OAAO,CAAC,CAAC,cAA2B,EAAE,KAAK;gBAC1C,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAEjC,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;oBACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAEA,YAAI,CAAC,IAAI,CAAC,EAClD;oBACA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBACpC;gBACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAEA,YAAI,CAAC,IAAI,CAAC,EAAE;oBAC5D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACtC;gBAED,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC7D,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBACzC,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC/D,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;gBAEjE,SAAS,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;aACpC,CAAC,CAAC;SACN;;;ICvFH;;;UAGqB,aAAa;QAKhC,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAExD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC1D,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YACD,OAAO,SAAS,CAAC;SAClB;;;;;QAMD,OAAO;YACL,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,eAAe,CACxC,GAAG,EACH,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAC7B,CAAC;YACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;YACrE,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;YACnE,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC;YAE3B,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CACpE,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAC/B,CAAC,CAAC,CAAC,CAAC;YACL,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,aAAa;iBACvD,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;iBACvD,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAE/B,QAAQ,CAAC,YAAY,CACnB,SAAS,CAAC,GAAG,CAAC,gBAAgB,EAC9B,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAClG,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAEA,YAAI,CAAC,IAAI,CAAC;kBAC3D,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBACjD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAEA,YAAI,CAAC,IAAI,CAAC;kBACzD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBAC7C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE/C,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;YAElE,SAAS;iBACN,gBAAgB,CAAC,iBAAiB,WAAW,CAAC,YAAY,IAAI,CAAC;iBAC/D,OAAO,CAAC,CAAC,cAA2B,EAAE,KAAK;gBAC1C,IAAI,KAAK,KAAK,CAAC,EAAE;oBACf,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAChD,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC,EAAE;wBACnC,cAAc,CAAC,WAAW,GAAG,GAAG,CAAC;wBACjC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBAC/C,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBACrD,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;wBAC9C,OAAO;qBACR;yBAAM;wBACL,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;wBAC1G,cAAc,CAAC,YAAY,CACzB,YAAY,EACZ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAC5B,CAAC;wBACF,OAAO;qBACR;iBACF;gBAED,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACnC,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;gBAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC;gBAEjD,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;oBACrB,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,eAAe,IAAI,CAAC,IAAI,aAAa,CAAC;yBAClE,MAAM,GAAG,CAAC,EACb;oBACA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBACpC;gBAED,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC7D,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBACzC,cAAc,CAAC,YAAY,CACzB,YAAY,EACZ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAC5B,CAAC;gBACF,cAAc,CAAC,SAAS,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;gBAE9E,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;aAC7C,CAAC,CAAC;SACN;;;IC5GH;;;UAGqB,WAAW;QAG9B,YAAY,OAAsB;YAD1B,iBAAY,GAAG,EAAE,CAAC;YAExB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAEtD,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAElC,OAAO,SAAS,CAAC;SAClB;;;;;;QAOD,OAAO;YACL,MAAM,QAAQ,IACZ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CAClD,SAAS,CAAC,GAAG,CAAC,cAAc,CAC7B,CAAC,CAAC,CAAC,CACL,CAAC;YACF,MAAM,UAAU,GAAG,CACjB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EACzD,KAAK,CAAC;YAER,QAAQ;iBACL,gBAAgB,CAAC,WAAW,CAAC;iBAC7B,OAAO,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YAE1E,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE;gBACnD,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAChC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,EACvDA,YAAI,CAAC,KAAK,CACX,EACD;oBACA,QAAQ;yBACL,aAAa,CAAC,gBAAgB,WAAW,CAAC,cAAc,GAAG,CAAC;yBAC5D,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC1C;gBAED,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAChC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,EACxDA,YAAI,CAAC,KAAK,CACX,EACD;oBACA,QAAQ;yBACL,aAAa,CAAC,gBAAgB,WAAW,CAAC,cAAc,GAAG,CAAC;yBAC5D,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC1C;gBACD,QAAQ,CAAC,aAAa,CACpB,wBAAwBA,YAAI,CAAC,KAAK,GAAG,CACtC,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB;sBACrE,UAAU,CAAC,cAAc;sBACzB,UAAU,CAAC,oBAAoB,CAAC;aACrC;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE;gBACrD,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAChC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,OAAO,CAAC,EACzDA,YAAI,CAAC,OAAO,CACb,EACD;oBACA,QAAQ;yBACL,aAAa,CAAC,gBAAgB,WAAW,CAAC,gBAAgB,GAAG,CAAC;yBAC9D,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC1C;gBAED,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAChC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,OAAO,CAAC,EAC1DA,YAAI,CAAC,OAAO,CACb,EACD;oBACA,QAAQ;yBACL,aAAa,CAAC,gBAAgB,WAAW,CAAC,gBAAgB,GAAG,CAAC;yBAC9D,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC1C;gBACD,QAAQ,CAAC,aAAa,CACpB,wBAAwBA,YAAI,CAAC,OAAO,GAAG,CACxC,CAAC,SAAS,GAAG,UAAU,CAAC,gBAAgB,CAAC;aAC3C;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE;gBACrD,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAChC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,OAAO,CAAC,EACzDA,YAAI,CAAC,OAAO,CACb,EACD;oBACA,QAAQ;yBACL,aAAa,CAAC,gBAAgB,WAAW,CAAC,gBAAgB,GAAG,CAAC;yBAC9D,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC1C;gBAED,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAChC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,OAAO,CAAC,EAC1DA,YAAI,CAAC,OAAO,CACb,EACD;oBACA,QAAQ;yBACL,aAAa,CAAC,gBAAgB,WAAW,CAAC,gBAAgB,GAAG,CAAC;yBAC9D,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC1C;gBACD,QAAQ,CAAC,aAAa,CACpB,wBAAwBA,YAAI,CAAC,OAAO,GAAG,CACxC,CAAC,SAAS,GAAG,UAAU,CAAC,gBAAgB,CAAC;aAC3C;YAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE;gBAChE,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CACnC,gBAAgB,WAAW,CAAC,cAAc,GAAG,CAC9C,CAAC;gBAEF,MAAM,CAAC,SAAS,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;gBAEzC,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAChC,UAAU,CAAC,KAAK,CAAC,UAAU,CACzB,UAAU,CAAC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,EACjCA,YAAI,CAAC,KAAK,CACX,CACF,EACD;oBACA,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC9C;qBAAM;oBACL,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACjD;aACF;YAED,QAAQ,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC;SAC7D;;;;;QAMO,KAAK;YACX,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,EAAE,EACZ,MAAM,GAAG,EAAE,EACX,MAAM,GAAG,EAAE,EACX,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,EACzC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CACtC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CACxC,EACD,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CACxC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAC1C,CAAC;YAEJ,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC5E,MAAM,cAAc,GAAgB,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC9D,cAAc,CAAC,SAAS,GAAG,GAAG,CAAC;YAE/B,MAAM,YAAY,GAAG,CAAC,KAAK,GAAG,KAAK;gBACjC,OAAO,KAAK;sBACK,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC;sBAC9B,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aAC5C,CAAC;YAEF,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE;gBACnD,IAAI,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC/C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAClD,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;gBACnE,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/C,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAErB,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAC7C,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;gBAC9D,UAAU,CAAC,YAAY,CAAC,qBAAqB,EAAEA,YAAI,CAAC,KAAK,CAAC,CAAC;gBAC3D,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAExB,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAClD,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;gBACnE,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBACjD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACxB,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC;aAC1B;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE;gBACrD,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;gBAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE;oBACnD,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;oBACzB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;oBAChC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;oBAC5B,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;iBAC3B;gBACD,IAAI,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC/C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,CACpD,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBACrE,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/C,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAErB,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAC/C,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;gBAChE,UAAU,CAAC,YAAY,CAAC,qBAAqB,EAAEA,YAAI,CAAC,OAAO,CAAC,CAAC;gBAC7D,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAExB,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,CACpD,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBACrE,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBACjD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACzB;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE;gBACrD,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;gBAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE;oBACrD,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;oBACzB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;oBAChC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;oBAC5B,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;iBAC3B;gBACD,IAAI,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC/C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,CACpD,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBACrE,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/C,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAErB,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAC/C,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;gBAChE,UAAU,CAAC,YAAY,CAAC,qBAAqB,EAAEA,YAAI,CAAC,OAAO,CAAC,CAAC;gBAC7D,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAExB,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,CACpD,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBACrE,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBACjD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACzB;YAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE;gBAChE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;gBAC1B,IAAI,UAAU,GAAG,YAAY,EAAE,CAAC;gBAChC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAErB,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAC9C,MAAM,CAAC,YAAY,CACjB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,CACnD,CAAC;gBACF,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;gBAC/D,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBACtC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBAEnD,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACpD,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAExB,UAAU,GAAG,YAAY,EAAE,CAAC;gBAC5B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACzB;YAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YAE7C,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC;SACvC;;;IChTH;;;UAGqB,WAAW;QAG9B,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAErD,KACE,IAAI,CAAC,GAAG,CAAC,EACT,CAAC;iBACA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB,GAAG,EAAE,GAAG,EAAE,CAAC,EACvE,CAAC,EAAE,EACH;gBACA,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;gBACxD,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YAED,OAAO,SAAS,CAAC;SAClB;;;;;QAMD,OAAO;YACL,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CACpE,SAAS,CAAC,GAAG,CAAC,aAAa,CAC5B,CAAC,CAAC,CAAC,CAAC;YACL,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;YAEjE,SAAS;iBACN,gBAAgB,CAAC,iBAAiB,WAAW,CAAC,UAAU,IAAI,CAAC;iBAC7D,OAAO,CAAC,CAAC,cAA2B,EAAE,KAAK;gBAC1C,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAEjC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAEA,YAAI,CAAC,KAAK,CAAC,EAAE;oBAC7D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACtC;gBAED,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC7D,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBACzC,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;gBAChE,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;qBACjE,iBAAiB;sBAChB,SAAS,CAAC,cAAc;sBACxB,SAAS,CAAC,oBAAoB,CAAC;gBACnC,SAAS,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,CAAC;aACrC,CAAC,CAAC;SACN;;;IC7DH;;;UAGqB,aAAa;QAGhC,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAEvD,IAAI,IAAI,GACN,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,KAAK,CAAC;kBACjC,CAAC;kBACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;gBAClC,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC1D,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YAED,OAAO,SAAS,CAAC;SAClB;;;;;QAMD,OAAO;YACL,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CACpE,SAAS,CAAC,GAAG,CAAC,eAAe,CAC9B,CAAC,CAAC,CAAC,CAAC;YACL,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAACA,YAAI,CAAC,KAAK,CAAC,CAAC;YAClE,IAAI,IAAI,GACN,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,KAAK,CAAC;kBACjC,CAAC;kBACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAEtC,SAAS;iBACN,gBAAgB,CAAC,iBAAiB,WAAW,CAAC,YAAY,IAAI,CAAC;iBAC/D,OAAO,CAAC,CAAC,cAA2B,EAAE,KAAK;gBAC1C,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAEnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAEA,YAAI,CAAC,OAAO,CAAC,EAAE;oBAC/D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACtC;gBAED,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC7D,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBACzC,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;gBAClE,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC,gBAAgB,CAAC;gBACtD,SAAS,CAAC,UAAU,CAAC,IAAI,EAAEA,YAAI,CAAC,OAAO,CAAC,CAAC;aAC1C,CAAC,CAAC;SACN;;;IC7DH;;;UAGqB,aAAa;QAGhC,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAEvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC1D,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YAED,OAAO,SAAS,CAAC;SAClB;;;;;QAMD,OAAO;YACL,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CACpE,SAAS,CAAC,GAAG,CAAC,eAAe,CAC9B,CAAC,CAAC,CAAC,CAAC;YACL,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAACA,YAAI,CAAC,OAAO,CAAC,CAAC;YAEpE,SAAS;iBACN,gBAAgB,CAAC,iBAAiB,WAAW,CAAC,YAAY,IAAI,CAAC;iBAC/D,OAAO,CAAC,CAAC,cAA2B,EAAE,KAAK;gBAC1C,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAEnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAEA,YAAI,CAAC,OAAO,CAAC,EAAE;oBAC/D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACtC;gBAED,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC7D,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBACzC,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;gBAClE,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC,gBAAgB,CAAC;gBACtD,SAAS,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,OAAO,CAAC,CAAC;aACvC,CAAC,CAAC;SACN;;;IC1CH;;;UAGqB,OAAO;QAc1B,YAAY,OAAsB;YAF1B,eAAU,GAAG,KAAK,CAAC;;;;;;YAikBnB,wBAAmB,GAAG,CAAC,CAAa;;gBAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAK,MAAc,CAAC,KAAK;oBAAE,OAAO;gBAElE,IACE,IAAI,CAAC,UAAU;oBACf,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;oBACvC,EAAC,MAAA,CAAC,CAAC,YAAY,EAAE,0CAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;kBACnD;oBACA,IAAI,CAAC,IAAI,EAAE,CAAC;iBACb;aACF,CAAC;;;;;;YAOM,uBAAkB,GAAG,CAAC,CAAa;gBACzC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aAC7B,CAAC;YAjlBA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;YAC7C,IAAI,CAAC,aAAa,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;YAC7C,IAAI,CAAC,cAAc,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;YACjD,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;YAC7C,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;YAC7C,IAAI,CAAC,cAAc,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;YACjD,IAAI,CAAC,cAAc,GAAG,IAAIC,aAAa,CAAC,OAAO,CAAC,CAAC;YAEjD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;SAC1B;;;;;QAMD,IAAI,MAAM;YACR,OAAO,IAAI,CAAC,OAAO,CAAC;SACrB;;;;QAKD,IAAI,SAAS;YACX,OAAO,IAAI,CAAC,UAAU,CAAC;SACxB;;;;;;;QAQD,OAAO,CAAC,IAAyC;YAC/C,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;;YAEzB,QAAQ,IAAI;gBACV,KAAKD,YAAI,CAAC,OAAO;oBACf,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;oBAC9B,MAAM;gBACR,KAAKA,YAAI,CAAC,OAAO;oBACf,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;oBAC9B,MAAM;gBACR,KAAKA,YAAI,CAAC,KAAK;oBACb,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAC5B,MAAM;gBACR,KAAKA,YAAI,CAAC,IAAI;oBACZ,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAC5B,MAAM;gBACR,KAAKA,YAAI,CAAC,KAAK;oBACb,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;oBAC7B,MAAM;gBACR,KAAKA,YAAI,CAAC,IAAI;oBACZ,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAC5B,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAC5B,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,KAAK,CAAC,CAAC;oBACzB,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,OAAO,CAAC,CAAC;oBAC3B,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,OAAO,CAAC,CAAC;oBAC3B,MAAM;gBACR,KAAK,UAAU;oBACb,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACxB,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACxB,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,KAAK,CAAC,CAAC;oBACzB,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;oBAC9B,IAAI,CAAC,qBAAqB,EAAE,CAAC;oBAC7B,MAAM;gBACR,KAAK,KAAK;oBACR,IAAI,IAAI,CAAC,QAAQ,EAAE;wBACjB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;qBACvB;oBACD,IAAI,IAAI,CAAC,QAAQ,EAAE;wBACjB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;qBAC1B;aACJ;SACF;;;;;;QAOD,IAAI;;YACF,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE;gBAC5B,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU;oBACjC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW;oBACnC,EAAC,MAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,0CAAE,KAAK,CAAA,EAC5B;;oBAEA,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC,SAAS,CACnC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAC3C,CAAC;oBACF,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE;wBACvC,IAAI,KAAK,GAAG,CAAC,CAAC;wBACd,IAAI,SAAS,GAAG,CAAC,CAAC;wBAClB,IAAI,MAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,0CAAE,QAAQ,CAAC,IAAI,CAAC,EAAE;4BAC/D,SAAS,GAAG,CAAC,CAAC,CAAC;yBAChB;wBACD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;4BAC/C,IAAI,CAAC,UAAU,CAAC,SAAS,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;4BACtC,IAAI,KAAK,GAAG,EAAE;gCAAE,MAAM;4BACtB,KAAK,EAAE,CAAC;yBACT;qBACF;oBACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;iBACrC;gBAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE;oBACtC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;iBACnE;gBAED,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACjB,IAAI,CAAC,SAAS,EAAE,CAAC;iBAClB;gBAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE;oBAC1C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAEvC,IAAI,CAAC,eAAe,GAAGE,iBAAY,CACjC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EACtB,IAAI,CAAC,MAAM,EACX;wBACE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;wBAEtD,SAAS,EACP,QAAQ,CAAC,eAAe,CAAC,GAAG,KAAK,KAAK;8BAClC,YAAY;8BACZ,cAAc;qBACrB,CACF,CAAC;iBACH;qBAAM;oBACL,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBACjD;gBAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,EAAE;oBACtD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CACtB;wBACE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CACtC,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,CAClC;qBACF,EACD,WAAW,CAAC,SAAS,CACtB,CAAC;iBACH;gBAED,IAAI,CAAC,MAAM;qBACR,gBAAgB,CAAC,eAAe,CAAC;qBACjC,OAAO,CAAC,CAAC,OAAO,KACf,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAC3D,CAAC;;gBAGJ,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE;oBAC7C,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAE1B,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAChC,SAAS,CAAC,GAAG,CAAC,cAAc,CAC7B,CAAC,CAAC,CACJ,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;iBAC1B;aACF;YAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE;gBAC1C,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;gBAC9B,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;aAC9D;YACD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SACxB;;;;;;QAOD,SAAS,CAAC,SAAkB;YAC1B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAChB,OAAO;aACR;YACD,IAAI,SAAS,EAAE;gBACb,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAClB,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAChC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,GAAG,SAAS,CAAC,CACxD,CAAC;gBACF,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,GAAG;oBAAE,OAAO;gBAClD,IAAI,CAAC,QAAQ,CAAC,gBAAgB,GAAG,GAAG,CAAC;aACtC;YAED,IAAI,CAAC,MAAM;iBACR,gBAAgB,CACf,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa,eAAe,SAAS,CAAC,GAAG,CAAC,cAAc,OAAO,SAAS,CAAC,GAAG,CAAC,aAAa,eAAe,SAAS,CAAC,GAAG,CAAC,cAAc,GAAG,CAC3J;iBACA,OAAO,CAAC,CAAC,CAAc,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;YAE3D,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YACvE,IAAI,MAAM,GAAgB,IAAI,CAAC,MAAM,CAAC,aAAa,CACjD,IAAI,cAAc,CAAC,SAAS,EAAE,CAC/B,CAAC;YAEF,QAAQ,cAAc,CAAC,SAAS;gBAC9B,KAAK,SAAS,CAAC,GAAG,CAAC,gBAAgB;oBACjC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;oBAC9B,MAAM;gBACR,KAAK,SAAS,CAAC,GAAG,CAAC,cAAc;oBAC/B,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAC5B,MAAM;gBACR,KAAK,SAAS,CAAC,GAAG,CAAC,eAAe;oBAChC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;oBAC7B,MAAM;gBACR,KAAK,SAAS,CAAC,GAAG,CAAC,aAAa;oBAC9B,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAC5B,MAAM;aACT;YAED,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAC9B,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B;QAED,qBAAqB;YACnB,MAAM,OAAO,GAAG;gBACd,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAC1B,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa,8BAA8B,CAC9D,CAAC,SAAS;aACZ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;YAEzD,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM;iBAC7D,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;iBACvD,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAE/B,QAAQ,OAAO;gBACb,KAAK,SAAS,CAAC,GAAG,CAAC,gBAAgB;oBACjC,QAAQ,CAAC,YAAY,CACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,CACpD,CAAC;oBACF,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;oBACnC,IAAI,CAAC,YAAY,CACf,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAChD,CAAC;oBACF,MAAM;gBACR,KAAK,SAAS,CAAC,GAAG,CAAC,cAAc;oBAC/B,QAAQ,CAAC,YAAY,CACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,CACnD,CAAC;oBACF,QAAQ,CAAC,YAAY,CACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CACjD,CAAC;oBACF,IAAI,CAAC,YAAY,CACf,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAC/C,CAAC;oBACF,MAAM;gBACR,KAAK,SAAS,CAAC,GAAG,CAAC,eAAe;oBAChC,QAAQ,CAAC,YAAY,CACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CACjD,CAAC;oBACF,QAAQ,CAAC,YAAY,CACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAC/C,CAAC;oBACF,IAAI,CAAC,YAAY,CACf,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAC7C,CAAC;oBACF,MAAM;gBACR,KAAK,SAAS,CAAC,GAAG,CAAC,aAAa;oBAC9B,QAAQ,CAAC,YAAY,CACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAClD,CAAC;oBACF,QAAQ,CAAC,YAAY,CACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAChD,CAAC;oBACF,IAAI,CAAC,YAAY,CACf,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAC9C,CAAC;oBACF,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC;wBAClD,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,mBAAmB;qBAC/D,CAAC,CAAC;oBACH,MAAM;aACT;YACD,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;SACrD;;;;;;QAOD,IAAI;YACF,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,OAAO;YAE7C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEjD,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;oBAC1B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI;oBAC3B,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;0BACtB,IAAI;0BACJ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU;8BAC9B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK;8BACpC,KAAK,CAAC;iBACE,CAAC,CAAC;gBAChB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;aACzB;YAED,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;SACjE;;;;QAKD,MAAM;YACJ,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;SACpD;;;;;QAMD,QAAQ;YACN,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAChE,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACzB,IAAI,CAAC,MAAM;iBACR,gBAAgB,CAAC,eAAe,CAAC;iBACjC,OAAO,CAAC,CAAC,OAAO,KACf,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAC9D,CAAC;YACJ,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;SAC1B;;;;;QAMO,YAAY;YAClB,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAE7C,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACpD,QAAQ,CAAC,MAAM,CACb,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,CAAC,OAAO,EAC3B,IAAI,CAAC,YAAY,CAAC,OAAO,EACzB,IAAI,CAAC,aAAa,CAAC,OAAO,EAC1B,IAAI,CAAC,YAAY,CAAC,OAAO,CAC1B,CAAC;YAEF,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACpD,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAChD,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAChD,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAClD,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAElD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC9C,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7C,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEjC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE;gBACzC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;aAC9C;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE;gBAChD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;aACzC;YAED,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;gBACzC,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,QAAQ,EACb;gBACA,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBACjD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,KAAK,KAAK,EAAE;oBAC7D,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;iBAC/B;gBACD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC5B,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAClC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAElC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAC1B,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAC1B,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,KAAK,QAAQ,EAAE;oBAChE,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;iBAC/B;gBACD,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;gBACxB,OAAO;aACR;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,KAAK,KAAK,EAAE;gBAC7D,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;aAC/B;YAED,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACjB,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;wBACrD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;iBAC9C;gBACD,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;aAChC;YAED,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACjB,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;wBACrD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;iBAC9C;gBACD,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;aAChC;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,KAAK,QAAQ,EAAE;gBAChE,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;aAC/B;YAED,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC5C,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7B,KAAK,CAAC,YAAY,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;YAC5C,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAE5B,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;SACzB;;;;QAKD,IAAI,QAAQ;YACV,QACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK;iBAC9C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK;oBAC9C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO;oBACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EACpD;SACH;;;;QAKD,IAAI,QAAQ;YACV,QACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ;iBACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI;oBAC7C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK;oBAC/C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EACjD;SACH;;;;;QAMD,IAAI,QAAQ;YACV,MAAM,OAAO,GAAG,EAAE,CAAC;YAEnB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;gBAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;gBACnD,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAErE,GAAG,CAAC,WAAW,CACb,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAC1D,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACnB;YACD,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;gBAC1C,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,QAAQ,EACb;gBACA,IAAI,KAAK,EAAE,IAAI,CAAC;gBAChB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;oBACvD,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC;oBACvD,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;iBAClD;qBAAM;oBACL,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC;oBACvD,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;iBAClD;gBAED,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC1D,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAEjC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;gBACrC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACnB;YACD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;gBAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;gBACnD,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAErE,GAAG,CAAC,WAAW,CACb,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAC1D,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACnB;YACD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;gBAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;gBACnD,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAErE,GAAG,CAAC,WAAW,CACb,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAC1D,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACnB;YAED,OAAO,OAAO,CAAC;SAChB;;;;;QAMD,IAAI,aAAa;YACf,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACrD,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAE3D,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC/C,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC3D,QAAQ,CAAC,WAAW,CAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAC7D,CAAC;YAEF,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC7C,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;YAE/D,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC3C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAE3E,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YAChD,OAAO,cAAc,CAAC;SACvB;;;;;;;QAQD,QAAQ,CAAC,SAAiB;YACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;gBAC3D,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,SAAS,GAAG,oBAAoB,SAAS,UAAU,CAAC;gBACxD,OAAO,GAAG,CAAC;aACZ;YACD,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACzC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YACvE,OAAO,IAAI,CAAC;SACb;;;;;;QAiCD,QAAQ;YACN,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YACnC,IAAI,UAAU;gBAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,UAAU,EAAE;gBACd,IAAI,CAAC,IAAI,EAAE,CAAC;aACb;SACF;;;IC7nBH;;;UAGqB,UAAU;QAG7B,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;;;QAQD,OAAO,CAAC,UAAoB,EAAE,WAAkB;;YAC9C,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;gBAC5D,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EACnC;gBACA,OAAO,KAAK,CAAC;aACd;YACD,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;gBAC3D,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EACnC;gBACA,OAAO,KAAK,CAAC;aACd;YACD,IACE,CAAA,MAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,kBAAkB,0CAAE,MAAM,IAAG,CAAC;gBAClE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAC5D,UAAU,CAAC,OAAO,CACnB,KAAK,CAAC,CAAC,EACR;gBACA,OAAO,KAAK,CAAC;aACd;YAED,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO;gBAC3C,UAAU,CAAC,QAAQ,CACjB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAC3C,WAAW,CACZ,EACD;gBACA,OAAO,KAAK,CAAC;aACd;YACD,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO;gBAC3C,UAAU,CAAC,OAAO,CAChB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAC3C,WAAW,CACZ,EACD;gBACA,OAAO,KAAK,CAAC;aACd;YAED,IACE,WAAW,KAAKF,YAAI,CAAC,KAAK;gBAC1B,WAAW,KAAKA,YAAI,CAAC,OAAO;gBAC5B,WAAW,KAAKA,YAAI,CAAC,OAAO,EAC5B;gBACA,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;oBAC5D,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EACnC;oBACA,OAAO,KAAK,CAAC;iBACd;gBACD,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;oBAC3D,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EACnC;oBACA,OAAO,KAAK,CAAC;iBACd;gBACD,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,EACpE;oBACA,KACE,IAAI,CAAC,GAAG,CAAC,EACT,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,qBAAqB,CAAC,MAAM,EACpE,CAAC,EAAE,EACH;wBACA,IACE,UAAU,CAAC,SAAS,CAClB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAAI,EACjE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,EAAE,CAChE;4BAED,OAAO,KAAK,CAAC;qBAChB;iBACF;aACF;YAED,OAAO,IAAI,CAAC;SACb;;;;;;;QAQO,kBAAkB,CAAC,QAAkB;YAC3C,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa;gBAClD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC;gBAE9D,OAAO,KAAK,CAAC;YACf,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACxE,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa;iBACrD,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC,CAAC;iBACtD,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,aAAa,CAAC,CAAC;SACrC;;;;;;;QAQO,iBAAiB,CAAC,QAAkB;YAC1C,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY;gBACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;gBAE7D,OAAO,IAAI,CAAC;YACd,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACxE,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY;iBACpD,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC,CAAC;iBACtD,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,aAAa,CAAC,CAAC;SACrC;;;;;;;QAQO,kBAAkB,CAAC,QAAkB;YAC3C,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa;gBAClD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC;gBAE9D,OAAO,KAAK,CAAC;YACf,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC;YACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAC3D,CAAC,CAAC,KAAK,CAAC,KAAK,aAAa,CAC3B,CAAC;SACH;;;;;;;QAQO,iBAAiB,CAAC,QAAkB;YAC1C,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY;gBACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;gBAE7D,OAAO,IAAI,CAAC;YACd,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC;YACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAC1D,CAAC,CAAC,KAAK,CAAC,KAAK,aAAa,CAC3B,CAAC;SACH;;;IC3JH;;;IAGA,MAAM,aAAa;QAkBjB,YAAY,OAAoB,EAAE,UAAmB,EAAa;YAdlE,qBAAgB,GAAG,CAAC,CAAC;YACrB,iBAAY,GAA8C,EAAE,CAAC;YAI7D,uBAAkB,GAAG,CAAC,CAAC;YAIf,gBAAW,GAAG,KAAK,CAAC;YACpB,8BAAyB,GAAG,CAAC,CAAC;YAwBtC,cAAS,GAAG,IAAI,QAAQ,EAAE,CAAC;;;;;;YA0YnB,sBAAiB,GAAG;gBAC1B,MAAM,WAAW,GAAG;oBAClB,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU;wBAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;iBACnE,CAAC;gBAEF,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBAChC,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;oBAC/B,IAAI;wBACF,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;wBACrE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE;gCAClC,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EACnD,CAAC,EACD,OAAO,CACR,CAAC;6BACH;iCAAM;gCACL,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;6BAC3C;yBACF;wBACD,WAAW,EAAE,CAAC;qBACf;oBAAC,WAAM;wBACN,OAAO,CAAC,IAAI,CACV,mFAAmF,CACpF,CAAC;qBACH;iBACF;qBAAM;oBACL,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE;wBAClC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;qBACzE;yBAAM;wBACL,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;qBACnC;oBACD,WAAW,EAAE,CAAC;iBACf;aACF,CAAC;;;;;;YAOM,sBAAiB,GAAG;gBAC1B,IAAI,CAAC,MAAM,EAAE,CAAC;aACf,CAAC;YAxcA,IAAI,CAAC,OAAO,EAAE;gBACZ,SAAS,CAAC,aAAa,CAAC,kBAAkB,CAAC;aAC5C;YACD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;YACvE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YAEnB,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,CAAC,WAAW,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;YAEjC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAEzB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;gBAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACxD;QAID,IAAI,QAAQ;YACV,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;;;;;;;;QASD,aAAa,CAAC,OAAO,EAAE,KAAK,GAAG,KAAK;YAClC,IAAI,KAAK;gBAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;;gBACvE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;SAC1B;;;;;;QAOD,MAAM;YACJ,IAAI,IAAI,CAAC,WAAW;gBAAE,OAAO;YAC7B,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;SACxB;;;;;;QAOD,IAAI;YACF,IAAI,IAAI,CAAC,WAAW;gBAAE,OAAO;YAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACtB;;;;;;QAOD,IAAI;YACF,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACtB;;;;;;QAOD,OAAO;;YACL,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;;;YAGxB,MAAA,IAAI,CAAC,MAAM,0CAAE,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAClD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACtB;;;;;;QAOD,MAAM;;YACJ,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,MAAA,IAAI,CAAC,MAAM,0CAAE,eAAe,CAAC,UAAU,CAAC,CAAC;SAC1C;;;;;;QAOD,KAAK;YACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;SACpB;;;;;;;;QASD,SAAS,CACP,UAA6B,EAC7B,SAA0D;YAE1D,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;gBAClC,UAAU,GAAG,CAAC,UAAU,CAAC,CAAC;aAC3B;YACD,IAAI,aAAa,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;gBAC7B,aAAa,GAAG,CAAC,SAAS,CAAC,CAAC;aAC7B;iBAAM;gBACL,aAAa,GAAG,SAAS,CAAC;aAC3B;YAED,IAAI,UAAU,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM,EAAE;gBAC9C,SAAS,CAAC,aAAa,CAAC,iBAAiB,CAAC;aAC3C;YAED,MAAM,WAAW,GAAG,EAAE,CAAC;YAEvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC1C,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE;oBAChD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;iBACnC;gBAED,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEpD,WAAW,CAAC,IAAI,CAAC;oBACf,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CACjC,IAAI,EACJ,SAAS,EACT,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CACxC;iBACF,CAAC,CAAC;gBAEH,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC3B,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;iBACvB;aACF;YAED,OAAO,WAAW,CAAC;SACpB;;;;;QAMD,OAAO;;YACL,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;;YAErB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACzB,MAAA,IAAI,CAAC,MAAM,0CAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACnE,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;gBAClC,MAAA,IAAI,CAAC,MAAM,0CAAE,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;aACnE;YACD,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAClE,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;SACxB;;;;;;;QAQD,aAAa,CAAC,KAAgB;;YAE5B,IAAK,KAAqB,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;gBAC1D,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAoB,CAAC;;;;gBAIxD,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBACjC,IACE,CAAC,IAAI,IAAI,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;qBACvC,CAAC,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC;oBAC/B,IAAI,CAAC,yBAAyB,GAAG,CAAC,EAClC;oBACA,IAAI,CAAC,yBAAyB,GAAG,CAAC,CAAC;oBACnC,OAAO;iBACR;gBACD,IAAI,CAAC,uBAAuB,CAAC,KAAoB,CAAC,CAAC;aACpD;YAED,IAAI,CAAC,QAAQ,CAAC,aAAa,CACzB,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,KAAY,EAAE,CAAC,CACtD,CAAC;YAEF,IAAK,MAAc,CAAC,MAAM,EAAE;gBAC1B,MAAM,CAAC,GAAI,MAAc,CAAC,MAAM,CAAC;gBACjC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aACjC;YAED,MAAM,OAAO,GAAG;;gBAEd,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;oBACjD,OAAO;iBACR;;gBAGD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ;oBAC7C,QAAQ,CAAC,KAAK,CAAC,CAAC;iBACjB,CAAC,CAAC;aACJ,CAAC;YAEF,OAAO,EAAE,CAAC;YAEV,IAAI,CAAC,yBAAyB,GAAG,CAAC,CAAC;SACpC;;;;;;QAOD,WAAW,CAAC,IAAU;YACpB,IAAI,CAAC,aAAa,CAAC;gBACjB,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM;gBAC7B,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK;aACZ,CAAC,CAAC;SACvB;QAEO,YAAY,CAAC,SAAS,EAAE,KAAK;YACnC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SAC/C;;;;;;;;QASO,kBAAkB,CACxB,MAAe,EACf,OAAgB,EAChB,cAAc,GAAG,KAAK;;YAEtB,MAAM,GAAG,eAAe,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACxD,IAAI,cAAc;gBAChB,MAAM,GAAG,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAEjE,eAAe,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAE3C,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAExE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;gBAC3C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;aAClC;;;;;YAMD,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE;gBAClC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;aAC7B;YACD,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE;gBACnC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;aAC7B;YACD,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE;gBAClC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;aAC7B;YAED,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAC9B,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,gBAAgB,CACtB,CAAC;;YAGF,IACE,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,CAAC,QAAQ,EACvE;gBACA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAC9B,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EACpE,IAAI,CAAC,kBAAkB,CACxB,CAAC;aACH;;YAGD,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE;gBAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;gBAC7C,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,IAAc;oBAC3C,OAAO,IAAI,CAAC,MAAM,CAAC;wBACjB,IAAI,EAAE,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,IAAI,GAAG,SAAS,GAAG,SAAS;wBACpE,KAAK,EACH,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,KAAK,GAAG,SAAS,GAAG,SAAS;wBACjE,GAAG,EAAE,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,IAAI,GAAG,SAAS,GAAG,SAAS;wBACnE,IAAI,EACF,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK;8BAChC,UAAU,CAAC,iBAAiB;kCAC1B,SAAS;kCACT,SAAS;8BACX,SAAS;wBACf,MAAM,EACJ,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,OAAO,GAAG,SAAS,GAAG,SAAS;wBAChE,MAAM,EACJ,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,OAAO,GAAG,SAAS,GAAG,SAAS;wBAChE,MAAM,EAAE,CAAC,UAAU,CAAC,iBAAiB;qBACtC,CAAC,CAAC;iBACJ,CAAC;aACH;YAED,IAAI,MAAA,IAAI,CAAC,QAAQ,0CAAE,SAAS,EAAE;gBAC5B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aAC9B;YAED,OAAO,MAAM,CAAC;SACf;;;;;;QAOO,gBAAgB;YAEtB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,OAAO,EAAE;gBACpC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAA4B,CAAC;aACjD;iBAAM;gBACL,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC;gBAChD,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,SAAS,EAAE;oBAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;iBACpD;qBAAM;oBACL,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;iBAClD;aACF;YAED,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEzB,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC/D,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;gBAClC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;aAC/D;YAED,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;gBACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;aAC1B;SACF;;;;;QAMO,iBAAiB;YACvB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;gBAAE,OAAO;YACzC,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC;YACjD,IAAI,KAAK,IAAI,SAAS,EAAE;gBACtB,KAAK,GAAG,mCAAmC,CAAC;aAC7C;YACD,IAAI,CAAC,OAAO;gBACV,KAAK,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC1E,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;SAChE;;;;;;QAOO,uBAAuB,CAAC,CAAc;;YAC5C;;YAEE,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB;gBACrC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;gBAC5B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;;gBAEhC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ;;;gBAEvB,MAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,0CAChB,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAC7C,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;gBAElD,OAAO;;;;YAKT,IACE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU;iBACtC,CAAC,CAAC,OAAO,KAAI,MAAA,CAAC,CAAC,IAAI,0CAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA,CAAC,EACxC;gBACA,OAAO;aACR;YAED,YAAY,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAC7C,IAAI,CAAC,yBAAyB,GAAG,UAAU,CAAC;gBAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;oBACxB,IAAI,CAAC,OAAO,CAAC,EAAE,CACb;wBACE,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAC/C,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,MAAM,CAC/B;qBACF,EACD,WAAW,CAAC,YAAY,CACzB,CAAC;iBACH;aACF,EAAE,IAAI,CAAC,QAAQ,CAAC,qCAAqC,CAAC,CAAC;SACzD;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/docs/6/change-log.html b/docs/6/change-log.html index 9dd6646f0..a0bb6319a 100644 --- a/docs/6/change-log.html +++ b/docs/6/change-log.html @@ -239,6 +239,7 @@

    Bug fixes

  • Fixed doc issue
  • Fixed input value for real this time. #2387
  • Fixed keepOpen
  • +
  • Fixed widget positioning with rtl #2400
diff --git a/docs/6/js/search.json b/docs/6/js/search.json index 5fb8e086e..366540630 100644 --- a/docs/6/js/search.json +++ b/docs/6/js/search.json @@ -2,7 +2,7 @@ { "file": "change-log.html", "title": "Change Log", - "body": "version alpha new cleaned up css a bit got rid of the popper arrow and aligned picker to start element breaking display.inputformat now takes function not an intl format it has also been moved hooks.inputformat by default will be executed that uses selected date(s based on components added hooks.inputparse merged number localization thanks hkvstore bug fixes fix for parsing issue from comparing constructor names faatihi fixed doc input value real this time keepopen created method set(value any index string date.set tries conver provided then set or if using multidate esm output exposed unit datetimeformatoptions datetime class renamed toggleperiod togglemeridiem am/pm button dealing with values/changes when calling hide widget hasn't built shown yet meridiem pr hour selection component grid clicks year display after selecting decade field had setting defaultdate option date object general returns which is extended javascript no longer jquery momentjs bootstrap events have interfaces configuration tooltip tooltip.prevmonth localization.previousmonth tooltip.prevyear localization.previousyear tooltip.prevdecade localization.previousdecade tooltip.prevcentury localization.previouscentury dayviewheaderformat localization.dayviewheaderformat month e.g long locale removed usestrict timezone collapse extraformats widgetparent widgetpositioning changed viewmode times days clock calendar allowmultidate multidateseparator multipledates multipledatesseparator following restrictions mindate maxdate disableddates enableddates daysofweekdisabled disabledhours enabledhours readonly disabledtimeintervals sidebyside calendarweeks toolbarplacement buttons icons inline array check dateoptions data hid allowing looping through properties keybindings might come back later ignorereadonly focusonshow styles tip all values are in namespace.css consts.ts file bootstrap-datetimepicker-widget tempus-dominus-widget tempusdominus-bootstrap-datetimepicker-widget-with-calendar-weeks tempus-dominus-with-calendar-weeks v input-group data-toggle=\"datetimepicker cursor type pointer datepicker date-container datepicker-decades date-container-decades datepicker-years date-container-years datepicker-months date-container-months datepicker-days date-container-days prev previous data-day data-value consistent other views usetwentyfour timepicker time-container timepicker-hour time-container-hour timepicker-minute time-container-minute timepicker-second time-container-second saas called tempus-dominus.scss build deleted as it's required isinvalid isvalid flipped boolean event emits undefined instead false being cleared plugin.name datetimepicker tempus-dominus root namespace td was rewrite taking some pending pull requests along unfortunately i didn't do very good job at documenting those changes changlog v2-v can read here", + "body": "version alpha new cleaned up css a bit got rid of the popper arrow and aligned picker to start element breaking display.inputformat now takes function not an intl format it has also been moved hooks.inputformat by default will be executed that uses selected date(s based on components added hooks.inputparse merged number localization thanks hkvstore bug fixes fix for parsing issue from comparing constructor names faatihi fixed doc input value real this time keepopen widget positioning with rtl created method set(value any index string date.set tries conver provided then set or if using multidate esm output exposed unit datetimeformatoptions datetime class renamed toggleperiod togglemeridiem am/pm button dealing values/changes when calling hide hasn't built shown yet meridiem pr hour selection component grid clicks year display after selecting decade field had setting defaultdate option date object general returns which is extended javascript no longer jquery momentjs bootstrap events have interfaces configuration tooltip tooltip.prevmonth localization.previousmonth tooltip.prevyear localization.previousyear tooltip.prevdecade localization.previousdecade tooltip.prevcentury localization.previouscentury dayviewheaderformat localization.dayviewheaderformat month e.g long locale removed usestrict timezone collapse extraformats widgetparent widgetpositioning changed viewmode times days clock calendar allowmultidate multidateseparator multipledates multipledatesseparator following restrictions mindate maxdate disableddates enableddates daysofweekdisabled disabledhours enabledhours readonly disabledtimeintervals sidebyside calendarweeks toolbarplacement buttons icons inline array check dateoptions data hid allowing looping through properties keybindings might come back later ignorereadonly focusonshow styles tip all values are in namespace.css consts.ts file bootstrap-datetimepicker-widget tempus-dominus-widget tempusdominus-bootstrap-datetimepicker-widget-with-calendar-weeks tempus-dominus-with-calendar-weeks v input-group data-toggle=\"datetimepicker cursor type pointer datepicker date-container datepicker-decades date-container-decades datepicker-years date-container-years datepicker-months date-container-months datepicker-days date-container-days prev previous data-day data-value consistent other views usetwentyfour timepicker time-container timepicker-hour time-container-hour timepicker-minute time-container-minute timepicker-second time-container-second saas called tempus-dominus.scss build deleted as it's required isinvalid isvalid flipped boolean event emits undefined instead false being cleared plugin.name datetimepicker tempus-dominus root namespace td was rewrite taking some pending pull requests along unfortunately i didn't do very good job at documenting those changes changlog v2-v can read here", "postDate": "07/20/2021", "updateDate": "07/20/2021", "excerpt": "An overview of changes between different version of tempus dominus\n ", @@ -38,7 +38,7 @@ { "file": "test.html", "title": "Examples", - "body": "version removes the need for an input field bootstrap jquery and momemntjs if you still check out examples minimum setup all is element to atach picker html javascript events span id='icon-only class='log-event style='display inline-block i class='fas fa-calendar fa-9x'>russian localefromtorussian localefromto { if (!this._context._input) return; - let newValue = this._context._options.hooks.inputFormat(target); + let newValue = this._context._options.hooks.inputFormat(this._context, target); if (this._context._options.multipleDates) { newValue = this._dates - .map((d) => this._context._options.hooks.inputFormat(d)) + .map((d) => this._context._options.hooks.inputFormat(this._context, d)) .join(this._context._options.multipleDatesSeparator); } if (this._context._input.value != newValue) this._context._input.value = newValue; }; + if (target && (oldDate === null || oldDate === void 0 ? void 0 : oldDate.isSame(target))) { + updateInput(); + return; + } // case of calling setValue(null) if (!target) { if (!this._context._options.multipleDates || @@ -2395,9 +2398,7 @@ class Display { */ this._documentClickEvent = (e) => { var _a; - if (this._context._options.display.keepOpen || - this._context._options.debug || - window.debug) + if (this._context._options.debug || window.debug) return; if (this._isVisible && !e.composedPath().includes(this.widget) && // click inside the widget @@ -2527,16 +2528,11 @@ class Display { if (!this._context._options.display.inline) { document.body.appendChild(this.widget); this._popperInstance = createPopper(this._context._element, this.widget, { - modifiers: [ - /* { - name: 'offset', - options: { - offset: [2, 8], - }, - },*/ - { name: 'eventListeners', enabled: true }, - ], - placement: 'bottom-start', + modifiers: [{ name: 'eventListeners', enabled: true }], + //#2400 + placement: document.documentElement.dir === 'rtl' + ? 'bottom-end' + : 'bottom-start', }); } else { @@ -3008,7 +3004,7 @@ class TempusDominus { const valueSplit = value.split(this._options.multipleDatesSeparator); for (let i = 0; i < valueSplit.length; i++) { if (this._options.hooks.inputParse) { - this.dates.set(this._options.hooks.inputParse(valueSplit[i]), i, 'input'); + this.dates.set(this._options.hooks.inputParse(this, valueSplit[i]), i, 'input'); } else { this.dates.set(valueSplit[i], i, 'input'); @@ -3022,7 +3018,7 @@ class TempusDominus { } else { if (this._options.hooks.inputParse) { - this.dates.set(this._options.hooks.inputParse(value), 0, 'input'); + this.dates.set(this._options.hooks.inputParse(this, value), 0, 'input'); } else { this.dates.set(value, 0, 'input'); @@ -3276,7 +3272,7 @@ class TempusDominus { // defaults the input format based on the components enabled if (config.hooks.inputFormat === undefined) { const components = config.display.components; - config.hooks.inputFormat = (date) => { + config.hooks.inputFormat = (_, date) => { return date.format({ year: components.calendar && components.year ? 'numeric' : undefined, month: components.calendar && components.month ? '2-digit' : undefined, diff --git a/docs/6/js/tempus-dominus.esm.js.map b/docs/6/js/tempus-dominus.esm.js.map index 27a9b970b..63b55e2ad 100644 --- a/docs/6/js/tempus-dominus.esm.js.map +++ b/docs/6/js/tempus-dominus.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"tempus-dominus.esm.js","sources":["../../src/js/datetime.ts","../../src/js/errors.ts","../../src/js/namespace.ts","../../src/js/conts.ts","../../src/js/display/collapse.ts","../../src/js/actions.ts","../../src/js/display/calendar/date-display.ts","../../src/js/display/calendar/month-display.ts","../../src/js/options.ts","../../src/js/dates.ts","../../src/js/display/calendar/year-display.ts","../../src/js/display/calendar/decade-display.ts","../../src/js/display/time/time-display.ts","../../src/js/display/time/hour-display.ts","../../src/js/display/time/minute-display.ts","../../src/js/display/time/second-display.ts","../../src/js/display/index.ts","../../src/js/validation.ts","../../src/js/tempus-dominus.ts"],"sourcesContent":["export enum Unit {\r\n seconds = 'seconds',\r\n minutes = 'minutes',\r\n hours = 'hours',\r\n date = 'date',\r\n month = 'month',\r\n year = 'year',\r\n}\r\n\r\nexport interface DateTimeFormatOptions extends Intl.DateTimeFormatOptions {\r\n timeStyle?: 'short' | 'medium' | 'long';\r\n dateStyle?: 'short' | 'medium' | 'long' | 'full';\r\n}\r\n\r\n/**\r\n * For the most part this object behaves exactly the same way\r\n * as the native Date object with a little extra spice.\r\n */\r\nexport class DateTime extends Date {\r\n /**\r\n * Used with Intl.DateTimeFormat\r\n */\r\n locale = 'default';\r\n\r\n /**\r\n * Chainable way to set the {@link locale}\r\n * @param value\r\n */\r\n setLocale(value: string): this {\r\n this.locale = value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Converts a plain JS date object to a DateTime object.\r\n * Doing this allows access to format, etc.\r\n * @param date\r\n */\r\n static convert(date: Date): DateTime {\r\n if (!date) throw `A date is required`;\r\n return new DateTime(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate(),\r\n date.getHours(),\r\n date.getMinutes(),\r\n date.getSeconds(),\r\n date.getMilliseconds()\r\n );\r\n }\r\n\r\n /**\r\n * Native date manipulations are not pure functions. This function creates a duplicate of the DateTime object.\r\n */\r\n get clone() {\r\n return new DateTime(\r\n this.year,\r\n this.month,\r\n this.date,\r\n this.hours,\r\n this.minutes,\r\n this.seconds,\r\n this.getMilliseconds()\r\n ).setLocale(this.locale);\r\n }\r\n\r\n /**\r\n * Sets the current date to the start of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).startOf('month')\r\n * would return April 1, 2021, 12:00:00.000 AM (midnight)\r\n * @param unit\r\n */\r\n startOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(0);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(0, 0);\r\n break;\r\n case 'hours':\r\n this.setMinutes(0, 0, 0);\r\n break;\r\n case 'date':\r\n this.setHours(0, 0, 0, 0);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(0 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.startOf(Unit.date);\r\n this.setDate(1);\r\n break;\r\n case 'year':\r\n this.startOf(Unit.date);\r\n this.setMonth(0, 1);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the current date to the end of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).endOf('month')\r\n * would return April 30, 2021, 11:59:59.999 PM\r\n * @param unit\r\n */\r\n endOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(999);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(59, 999);\r\n break;\r\n case 'hours':\r\n this.setMinutes(59, 59, 999);\r\n break;\r\n case 'date':\r\n this.setHours(23, 59, 59, 999);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(6 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.month);\r\n this.setDate(0);\r\n break;\r\n case 'year':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.year);\r\n this.setDate(0);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Change a {@link unit} value. Value can be positive or negative\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).manipulate(1, 'month')\r\n * would return May 30, 2021, 11:45:32.984 AM\r\n * @param value A positive or negative number\r\n * @param unit\r\n */\r\n manipulate(value: number, unit: Unit): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n this[unit] += value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns a string format.\r\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat\r\n * for valid templates and locale objects\r\n * @param template An object. Uses browser defaults otherwise.\r\n * @param locale Can be a string or an array of strings. Uses browser defaults otherwise.\r\n */\r\n format(template: DateTimeFormatOptions, locale = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, template).format(this);\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is before this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isBefore(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() < compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() < compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is after this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isAfter(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() > compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() > compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is same this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isSame(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() === compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n compare = DateTime.convert(compare);\r\n return (\r\n this.clone.startOf(unit).valueOf() === compare.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Check if this is between two other DateTimes, optionally looking at unit scale. The match is exclusive.\r\n * @param left\r\n * @param right\r\n * @param unit.\r\n * @param inclusivity. A [ indicates inclusion of a value. A ( indicates exclusion.\r\n * If the inclusivity parameter is used, both indicators must be passed.\r\n */\r\n isBetween(\r\n left: DateTime,\r\n right: DateTime,\r\n unit?: Unit,\r\n inclusivity: '()' | '[]' | '(]' | '[)' = '()'\r\n ): boolean {\r\n if (unit && this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n const leftInclusivity = inclusivity[0] === '(';\r\n const rightInclusivity = inclusivity[1] === ')';\r\n\r\n return (\r\n ((leftInclusivity\r\n ? this.isAfter(left, unit)\r\n : !this.isBefore(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isBefore(right, unit)\r\n : !this.isAfter(right, unit))) ||\r\n ((leftInclusivity\r\n ? this.isBefore(left, unit)\r\n : !this.isAfter(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isAfter(right, unit)\r\n : !this.isBefore(right, unit)))\r\n );\r\n }\r\n\r\n /**\r\n * Returns flattened object of the date. Does not include literals\r\n * @param locale\r\n * @param template\r\n */\r\n parts(\r\n locale = this.locale,\r\n template: any = { dateStyle: 'full', timeStyle: 'long' }\r\n ) {\r\n const parts = {};\r\n new Intl.DateTimeFormat(locale, template)\r\n .formatToParts(this)\r\n .filter((x) => x.type !== 'literal')\r\n .forEach((x) => (parts[x.type] = x.value));\r\n return parts;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getSeconds()\r\n */\r\n get seconds(): number {\r\n return this.getSeconds();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setSeconds()\r\n */\r\n set seconds(value: number) {\r\n this.setSeconds(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get secondsFormatted(): string {\r\n return this.format({ second: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMinutes()\r\n */\r\n get minutes(): number {\r\n return this.getMinutes();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMinutes()\r\n */\r\n set minutes(value: number) {\r\n this.setMinutes(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get minutesFormatted(): string {\r\n return this.format({ minute: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getHours()\r\n */\r\n get hours(): number {\r\n return this.getHours();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setHours()\r\n */\r\n set hours(value: number) {\r\n this.setHours(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get hoursFormatted(): string {\r\n return this.format({ hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Returns two digit hours but in twelve hour mode e.g. 13 -> 1\r\n */\r\n get twelveHoursFormatted(): string {\r\n return this.format({ hour12: true, hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Get the meridiem of the date. E.g. AM or PM.\r\n * If the {@link locale} provides a \"dayPeriod\" then this will be returned,\r\n * otherwise it will return AM or PM.\r\n * @param locale\r\n */\r\n meridiem(locale: string = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, {\r\n hour: 'numeric',\r\n hour12: true,\r\n } as any)\r\n .formatToParts(this)\r\n .find((p) => p.type === 'dayPeriod')?.value;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDate()\r\n */\r\n get date(): number {\r\n return this.getDate();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setDate()\r\n */\r\n set date(value: number) {\r\n this.setDate(value);\r\n }\r\n\r\n /**\r\n * Return two digit date\r\n */\r\n get dateFormatted(): string {\r\n return this.date < 10 ? `0${this.date}` : `${this.date}`;\r\n }\r\n\r\n // https://github.com/you-dont-need/You-Dont-Need-Momentjs#week-of-year\r\n /**\r\n * Gets the week of the year\r\n */\r\n get week(): number {\r\n const startOfYear = new Date(this.year, 0, 1);\r\n startOfYear.setDate(\r\n startOfYear.getDate() + (1 - (startOfYear.getDay() % 7))\r\n );\r\n return Math.round((this.valueOf() - startOfYear.valueOf()) / 604800000) + 1;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDay()\r\n */\r\n get weekDay(): number {\r\n return this.getDay();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMonth()\r\n */\r\n get month(): number {\r\n return this.getMonth();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMonth()\r\n */\r\n set month(value: number) {\r\n this.setMonth(value);\r\n }\r\n\r\n /**\r\n * Return two digit, human expected month. E.g. January = 1, December = 12\r\n */\r\n get monthFormatted(): string {\r\n return this.month + 1 < 10 ? `0${this.month}` : `${this.month}`;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getFullYear()\r\n */\r\n get year(): number {\r\n return this.getFullYear();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setFullYear()\r\n */\r\n set year(value: number) {\r\n this.setFullYear(value);\r\n }\r\n}\r\n","import Namespace from './namespace';\n\nexport class TdError extends Error {\n code: number;\n}\n\nexport class ErrorMessages {\n private base = 'TD:';\n\n //#region out to console\n\n /**\n * Throws an error indicating that a key in the options object is invalid.\n * @param optionName\n */\n unexpectedOption(optionName: string) {\n const error = new TdError(\n `${this.base} Unexpected option: ${optionName} does not match a known option.`\n );\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error indicating that one more keys in the options object is invalid.\n * @param optionName\n */\n unexpectedOptions(optionName: string[]) {\n const error = new TdError(`${this.base}: ${optionName.join(', ')}`);\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error when an option is provide an unsupported value.\n * For example a value of 'cheese' for toolbarPlacement which only supports\n * 'top', 'bottom', 'default'.\n * @param optionName\n * @param badValue\n * @param validOptions\n */\n unexpectedOptionValue(\n optionName: string,\n badValue: string,\n validOptions: string[]\n ) {\n const error = new TdError(\n `${\n this.base\n } Unexpected option value: ${optionName} does not accept a value of \"${badValue}\". Valid values are: ${validOptions.join(\n ', '\n )}`\n );\n error.code = 2;\n throw error;\n }\n\n /**\n * Throws an error when an option value is the wrong type.\n * For example a string value was provided to multipleDates which only\n * supports true or false.\n * @param optionName\n * @param badType\n * @param expectedType\n */\n typeMismatch(optionName: string, badType: string, expectedType: string) {\n const error = new TdError(\n `${this.base} Mismatch types: ${optionName} has a type of ${badType} instead of the required ${expectedType}`\n );\n error.code = 3;\n throw error;\n }\n\n /**\n * Throws an error when an option value is outside of the expected range.\n * For example restrictions.daysOfWeekDisabled excepts a value between 0 and 6.\n * @param optionName\n * @param lower\n * @param upper\n */\n numbersOutOfRage(optionName: string, lower: number, upper: number) {\n const error = new TdError(\n `${this.base} ${optionName} expected an array of number between ${lower} and ${upper}.`\n );\n error.code = 4;\n throw error;\n }\n\n /**\n * Throws an error when a value for a date options couldn't be parsed. Either\n * the option was an invalide string or an invalid Date object.\n * @param optionName\n * @param date\n * @param soft If true, logs a warning instead of an error.\n */\n failedToParseDate(optionName: string, date: any, soft = false) {\n const error = new TdError(\n `${this.base} Could not correctly parse \"${date}\" to a date for ${optionName}.`\n );\n error.code = 5;\n if (!soft) throw error;\n console.warn(error);\n }\n\n /**\n * Throws when an element to attach to was not provided in the constructor.\n */\n mustProvideElement() {\n const error = new TdError(`${this.base} No element was provided.`);\n error.code = 6;\n throw error;\n }\n\n /**\n * Throws if providing an array for the events to subscribe method doesn't have\n * the same number of callbacks. E.g., subscribe([1,2], [1])\n */\n subscribeMismatch() {\n const error = new TdError(\n `${this.base} The subscribed events does not match the number of callbacks`\n );\n error.code = 7;\n throw error;\n }\n\n /**\n * Throws if the configuration has conflicting rules e.g. minDate is after maxDate\n */\n conflictingConfiguration(message?: string) {\n const error = new TdError(\n `${this.base} A configuration value conflicts with another rule. ${message}`\n );\n error.code = 8;\n throw error;\n }\n\n /**\n * Logs a warning if a date option value is provided as a string, instead of\n * a date/datetime object.\n */\n dateString() {\n console.warn(\n `${this.base} Using a string for date options is not recommended unless you specify an ISO string.`\n );\n }\n\n //#endregion\n\n //#region used with notify.error\n\n /**\n * Used with an Error Event type if the user selects a date that\n * fails restriction validation.\n */\n failedToSetInvalidDate = 'Failed to set invalid date';\n\n /**\n * Used with an Error Event type when a user changes the value of the\n * input field directly, and does not provide a valid date.\n */\n failedToParseInput = 'Failed parse input field';\n\n //#endregion\n}\n","import { ErrorMessages } from './errors';\n// this is not the way I want this to stay but nested classes seemed to blown up once its compiled.\nconst NAME = 'tempus-dominus',\n version = '6.0.0-alpha1',\n dataKey = 'td';\n\n/**\n * Events\n */\nclass Events {\n key = `.${dataKey}`;\n\n /**\n * Change event. Fired when the user selects a date.\n * See also EventTypes.ChangeEvent\n */\n change = `change${this.key}`;\n\n /**\n * Emit when the view changes for example from month view to the year view.\n * See also EventTypes.ViewUpdateEvent\n */\n update = `update${this.key}`;\n\n /**\n * Emits when a selected date or value from the input field fails to meet the provided validation rules.\n * See also EventTypes.FailEvent\n */\n error = `error${this.key}`;\n\n /**\n * Show event\n * @event Events#show\n */\n show = `show${this.key}`;\n\n /**\n * Hide event\n * @event Events#hide\n */\n hide = `hide${this.key}`;\n\n // blur and focus are used in the jQuery provider but are otherwise unused.\n // keyup/down will be used later for keybinding options\n\n blur = `blur${this.key}`;\n focus = `focus${this.key}`;\n keyup = `keyup${this.key}`;\n keydown = `keydown${this.key}`;\n}\n\nclass Css {\n /**\n * The outer element for the widget.\n */\n widget = `${NAME}-widget`;\n\n /**\n * Hold the previous, next and switcher divs\n */\n calendarHeader = 'calendar-header';\n\n /**\n * The element for the action to change the calendar view. E.g. month -> year.\n */\n switch = 'picker-switch';\n\n /**\n * The elements for all of the toolbar options\n */\n toolbar = 'toolbar';\n\n /**\n * Disables the hover and rounding affect.\n */\n noHighlight = 'no-highlight';\n\n /**\n * Applied to the widget element when the side by side option is in use.\n */\n sideBySide = 'timepicker-sbs';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> July\n */\n previous = 'previous';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> September\n */\n next = 'next';\n\n /**\n * Applied to any action that would violate any restriction options. ALso applied\n * to an input field if the disabled function is called.\n */\n disabled = 'disabled';\n\n /**\n * Applied to any date that is less than requested view,\n * e.g. the last day of the previous month.\n */\n old = 'old';\n\n /**\n * Applied to any date that is greater than of requested view,\n * e.g. the last day of the previous month.\n */\n new = 'new';\n\n /**\n * Applied to any date that is currently selected.\n */\n active = 'active';\n\n //#region date element\n\n /**\n * The outer most element for the calendar view.\n */\n dateContainer = 'date-container';\n\n /**\n * The outer most element for the decades view.\n */\n decadesContainer = `${this.dateContainer}-decades`;\n\n /**\n * Applied to elements within the decades container, e.g. 2020, 2030\n */\n decade = 'decade';\n\n /**\n * The outer most element for the years view.\n */\n yearsContainer = `${this.dateContainer}-years`;\n\n /**\n * Applied to elements within the years container, e.g. 2021, 2021\n */\n year = 'year';\n\n /**\n * The outer most element for the month view.\n */\n monthsContainer = `${this.dateContainer}-months`;\n\n /**\n * Applied to elements within the month container, e.g. January, February\n */\n month = 'month';\n\n /**\n * The outer most element for the calendar view.\n */\n daysContainer = `${this.dateContainer}-days`;\n\n /**\n * Applied to elements within the day container, e.g. 1, 2..31\n */\n day = 'day';\n\n /**\n * If display.calendarWeeks is enabled, a column displaying the week of year\n * is shown. This class is applied to each cell in that column.\n */\n calendarWeeks = 'cw';\n\n /**\n * Applied to the first row of the calendar view, e.g. Sunday, Monday\n */\n dayOfTheWeek = 'dow';\n\n /**\n * Applied to the current date on the calendar view.\n */\n today = 'today';\n\n /**\n * Applied to the locale's weekend dates on the calendar view, e.g. Sunday, Saturday\n */\n weekend = 'weekend';\n\n //#endregion\n\n //#region time element\n\n /**\n * The outer most element for all time related elements.\n */\n timeContainer = 'time-container';\n\n /**\n * Applied the separator columns between time elements, e.g. hour *:* minute *:* second\n */\n separator = 'separator';\n\n /**\n * The outer most element for the clock view.\n */\n clockContainer = `${this.timeContainer}-clock`;\n\n /**\n * The outer most element for the hours selection view.\n */\n hourContainer = `${this.timeContainer}-hour`;\n\n /**\n * The outer most element for the minutes selection view.\n */\n minuteContainer = `${this.timeContainer}-minute`;\n\n /**\n * The outer most element for the seconds selection view.\n */\n secondContainer = `${this.timeContainer}-second`;\n\n /**\n * Applied to each element in the hours selection view.\n */\n hour = 'hour';\n\n /**\n * Applied to each element in the minutes selection view.\n */\n minute = 'minute';\n\n /**\n * Applied to each element in the seconds selection view.\n */\n second = 'second';\n\n /**\n * Applied AM/PM toggle button.\n */\n toggleMeridiem = 'toggleMeridiem';\n\n //#endregion\n\n //#region collapse\n\n /**\n * Applied the element of the current view mode, e.g. calendar or clock.\n */\n show = 'show';\n\n /**\n * Applied to the currently showing view mode during a transition\n * between calendar and clock views\n */\n collapsing = 'td-collapsing';\n\n /**\n * Applied to the currently hidden view mode.\n */\n collapse = 'td-collapse';\n\n //#endregion\n\n /**\n * Applied to the widget when the option display.inline is enabled.\n */\n inline = 'inline';\n}\n\nexport default class Namespace {\n static NAME = NAME;\n // noinspection JSUnusedGlobalSymbols\n static version = version;\n static dataKey = dataKey;\n\n static events = new Events();\n\n static css = new Css();\n\n static errorMessages = new ErrorMessages();\n}\n","import { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options from './options';\n\nconst DefaultOptions: Options = {\n restrictions: {\n minDate: undefined,\n maxDate: undefined,\n disabledDates: [],\n enabledDates: [],\n daysOfWeekDisabled: [],\n disabledTimeIntervals: [],\n disabledHours: [],\n enabledHours: [],\n },\n display: {\n icons: {\n type: 'icons',\n time: 'fas fa-clock',\n date: 'fas fa-calendar',\n up: 'fas fa-arrow-up',\n down: 'fas fa-arrow-down',\n previous: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n today: 'fas fa-calendar-check',\n clear: 'fas fa-trash',\n close: 'fas fa-times',\n },\n sideBySide: false,\n calendarWeeks: false,\n viewMode: 'calendar',\n toolbarPlacement: 'bottom',\n keepOpen: false,\n buttons: {\n today: false,\n clear: false,\n close: false,\n },\n components: {\n calendar: true,\n date: true,\n month: true,\n year: true,\n decades: true,\n clock: true,\n hours: true,\n minutes: true,\n seconds: false,\n useTwentyfourHour: false,\n },\n inline: false,\n },\n stepping: 1,\n useCurrent: true,\n defaultDate: undefined,\n localization: {\n today: 'Go to today',\n clear: 'Clear selection',\n close: 'Close the picker',\n selectMonth: 'Select Month',\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n selectYear: 'Select Year',\n previousYear: 'Previous Year',\n nextYear: 'Next Year',\n selectDecade: 'Select Decade',\n previousDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n previousCentury: 'Previous Century',\n nextCentury: 'Next Century',\n pickHour: 'Pick Hour',\n incrementHour: 'Increment Hour',\n decrementHour: 'Decrement Hour',\n pickMinute: 'Pick Minute',\n incrementMinute: 'Increment Minute',\n decrementMinute: 'Decrement Minute',\n pickSecond: 'Pick Second',\n incrementSecond: 'Increment Second',\n decrementSecond: 'Decrement Second',\n toggleMeridiem: 'Toggle Meridiem',\n selectTime: 'Select Time',\n selectDate: 'Select Date',\n dayViewHeaderFormat: 'long',\n locale: 'default',\n },\n keepInvalid: false,\n debug: false,\n allowInputToggle: false,\n viewDate: new DateTime(),\n multipleDates: false,\n multipleDatesSeparator: '; ',\n promptTimeOnDateChange: false,\n promptTimeOnDateChangeTransitionDelay: 200,\n hooks: {\n inputParse: undefined,\n inputFormat: undefined,\n },\n};\n\nconst DatePickerModes: {\n name: string;\n className: string;\n unit: Unit;\n step: number;\n}[] = [\n {\n name: 'calendar',\n className: Namespace.css.daysContainer,\n unit: Unit.month,\n step: 1,\n },\n {\n name: 'months',\n className: Namespace.css.monthsContainer,\n unit: Unit.year,\n step: 1,\n },\n {\n name: 'years',\n className: Namespace.css.yearsContainer,\n unit: Unit.year,\n step: 10,\n },\n {\n name: 'decades',\n className: Namespace.css.decadesContainer,\n unit: Unit.year,\n step: 100,\n },\n];\n\nexport { DefaultOptions, DatePickerModes, Namespace };\n","import Namespace from '../namespace';\n\n/**\n * Provides a collapse functionality to the view changes\n */\nexport default class Collapse {\n private timeOut;\n\n /**\n * Flips the show/hide state of `target`\n * @param target html element to affect.\n */\n toggle(target: HTMLElement, callback = undefined) {\n if (target.classList.contains(Namespace.css.show)) {\n this.hide(target, callback);\n } else {\n this.show(target, callback);\n }\n }\n\n /**\n * If `target` is not already showing, then show after the animation.\n * @param target\n */\n show(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse, Namespace.css.show);\n target.style.height = '';\n this.timeOut = null;\n if (callback) callback();\n };\n\n target.style.height = '0';\n target.classList.remove(Namespace.css.collapse);\n target.classList.add(Namespace.css.collapsing);\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n target.style.height = `${target.scrollHeight}px`;\n }\n\n /**\n * If `target` is not already hidden, then hide after the animation.\n * @param target HTML Element\n */\n hide(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n !target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse);\n this.timeOut = null;\n };\n\n target.style.height = `${target.getBoundingClientRect()['height']}px`;\n\n const reflow = (element) => element.offsetHeight;\n\n reflow(target);\n\n target.classList.remove(Namespace.css.collapse, Namespace.css.show);\n target.classList.add(Namespace.css.collapsing);\n target.style.height = '';\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n }\n\n /**\n * Gets the transition duration from the `element` by getting css properties\n * `transition-duration` and `transition-delay`\n * @param element HTML Element\n */\n private getTransitionDurationFromElement = (element: HTMLElement) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } =\n window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) +\n Number.parseFloat(transitionDelay)) *\n 1000\n );\n };\n}\n","import { DatePickerModes } from './conts.js';\nimport { DateTime, Unit } from './datetime';\nimport { TempusDominus } from './tempus-dominus';\nimport Collapse from './display/collapse';\nimport Namespace from './namespace';\n\n/**\n *\n */\nexport default class Actions {\n private _context: TempusDominus;\n private collapse: Collapse;\n\n constructor(context: TempusDominus) {\n this._context = context;\n this.collapse = new Collapse();\n }\n\n /**\n * Performs the selected `action`. See ActionTypes\n * @param e This is normally a click event\n * @param action If not provided, then look for a [data-action]\n */\n do(e: any, action?: ActionTypes) {\n const currentTarget = e.currentTarget;\n if (currentTarget.classList.contains(Namespace.css.disabled)) return false;\n action = action || currentTarget.dataset.action;\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n /**\n * Common function to manipulate {@link lastPicked} by `unit`\n * @param unit\n * @param value Value to change by\n */\n const manipulateAndSet = (unit: Unit, value = 1) => {\n const newDate = lastPicked.manipulate(value, unit);\n if (this._context._validation.isValid(newDate, unit)) {\n this._context.dates._setValue(\n newDate,\n this._context.dates.lastPickedIndex\n );\n }\n };\n\n switch (action) {\n case ActionTypes.next:\n case ActionTypes.previous:\n const { unit, step } = DatePickerModes[this._context._currentViewMode];\n if (action === ActionTypes.next)\n this._context._viewDate.manipulate(step, unit);\n else this._context._viewDate.manipulate(step * -1, unit);\n this._context._viewUpdate(unit);\n\n this._context._display._showMode();\n break;\n case ActionTypes.pickerSwitch:\n this._context._display._showMode(1);\n this._context._viewUpdate(\n DatePickerModes[this._context._currentViewMode].unit\n );\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.selectMonth:\n case ActionTypes.selectYear:\n case ActionTypes.selectDecade:\n const value = +currentTarget.dataset.value;\n switch (action) {\n case ActionTypes.selectMonth:\n this._context._viewDate.month = value;\n this._context._viewUpdate(Unit.month);\n break;\n case ActionTypes.selectYear:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n case ActionTypes.selectDecade:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n }\n\n if (\n this._context._currentViewMode === this._context._minViewModeNumber\n ) {\n this._context.dates._setValue(\n this._context._viewDate,\n this._context.dates.lastPickedIndex\n );\n if (!this._context._options.display.inline) {\n this._context._display.hide();\n }\n } else {\n this._context._display._showMode(-1);\n }\n break;\n case ActionTypes.selectDay:\n const day = this._context._viewDate.clone;\n if (currentTarget.classList.contains(Namespace.css.old)) {\n day.manipulate(-1, Unit.month);\n }\n if (currentTarget.classList.contains(Namespace.css.new)) {\n day.manipulate(1, Unit.month);\n }\n\n day.date = +currentTarget.dataset.day;\n let index = 0;\n if (this._context._options.multipleDates) {\n index = this._context.dates.pickedIndex(day, Unit.date);\n if (index !== -1) {\n this._context.dates._setValue(null, index); //deselect multi-date\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex + 1\n );\n }\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex\n );\n }\n\n if (\n !this._context._display._hasTime &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline &&\n !this._context._options.multipleDates\n ) {\n this._context._display.hide();\n }\n break;\n case ActionTypes.selectHour:\n let hour = +currentTarget.dataset.value;\n if (\n lastPicked.hours >= 12 &&\n !this._context._options.display.components.useTwentyfourHour\n )\n hour += 12;\n lastPicked.hours = hour;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.minutes &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectMinute:\n lastPicked.minutes = +currentTarget.dataset.value;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.seconds &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectSecond:\n lastPicked.seconds = +currentTarget.innerText;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.incrementHours:\n manipulateAndSet(Unit.hours);\n break;\n case ActionTypes.incrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping);\n break;\n case ActionTypes.incrementSeconds:\n manipulateAndSet(Unit.seconds);\n break;\n case ActionTypes.decrementHours:\n manipulateAndSet(Unit.hours, -1);\n break;\n case ActionTypes.decrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping * -1);\n break;\n case ActionTypes.decrementSeconds:\n manipulateAndSet(Unit.seconds, -1);\n break;\n case ActionTypes.toggleMeridiem:\n manipulateAndSet(\n Unit.hours,\n this._context.dates.lastPicked.hours >= 12 ? -12 : 12\n );\n break;\n case ActionTypes.togglePicker:\n this._context._display.widget\n .querySelectorAll(\n `.${Namespace.css.dateContainer}, .${Namespace.css.timeContainer}`\n )\n .forEach((htmlElement: HTMLElement) =>\n this.collapse.toggle(htmlElement)\n );\n if (\n currentTarget.getAttribute('title') ===\n this._context._options.localization.selectDate\n ) {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectTime\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.time\n ).outerHTML;\n\n this._context._display._updateCalendarHeader();\n } else {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectDate\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.date\n ).outerHTML;\n this.do(e, ActionTypes.showClock);\n this._context._display._update('clock');\n }\n break;\n case ActionTypes.showClock:\n case ActionTypes.showHours:\n case ActionTypes.showMinutes:\n case ActionTypes.showSeconds:\n this._context._display.widget\n .querySelectorAll(`.${Namespace.css.timeContainer} > div`)\n .forEach(\n (htmlElement: HTMLElement) => (htmlElement.style.display = 'none')\n );\n\n let classToUse = '';\n switch (action) {\n case ActionTypes.showClock:\n classToUse = Namespace.css.clockContainer;\n this._context._display._update('clock');\n break;\n case ActionTypes.showHours:\n classToUse = Namespace.css.hourContainer;\n this._context._display._update(Unit.hours);\n break;\n case ActionTypes.showMinutes:\n classToUse = Namespace.css.minuteContainer;\n this._context._display._update(Unit.minutes);\n break;\n case ActionTypes.showSeconds:\n classToUse = Namespace.css.secondContainer;\n this._context._display._update(Unit.seconds);\n break;\n }\n\n ((\n this._context._display.widget.getElementsByClassName(classToUse)[0]\n )).style.display = 'grid';\n break;\n case ActionTypes.clear:\n this._context.dates._setValue(null);\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.close:\n this._context._display.hide();\n break;\n case ActionTypes.today:\n const today = new DateTime().setLocale(\n this._context._options.localization.locale\n );\n this._context._viewDate = today;\n if (this._context._validation.isValid(today, Unit.date))\n this._context.dates._setValue(\n today,\n this._context.dates.lastPickedIndex\n );\n break;\n }\n }\n}\n\nexport enum ActionTypes {\n next = 'next',\n previous = 'previous',\n pickerSwitch = 'pickerSwitch',\n selectMonth = 'selectMonth',\n selectYear = 'selectYear',\n selectDecade = 'selectDecade',\n selectDay = 'selectDay',\n selectHour = 'selectHour',\n selectMinute = 'selectMinute',\n selectSecond = 'selectSecond',\n incrementHours = 'incrementHours',\n incrementMinutes = 'incrementMinutes',\n incrementSeconds = 'incrementSeconds',\n decrementHours = 'decrementHours',\n decrementMinutes = 'decrementMinutes',\n decrementSeconds = 'decrementSeconds',\n toggleMeridiem = 'toggleMeridiem',\n togglePicker = 'togglePicker',\n showClock = 'showClock',\n showHours = 'showHours',\n showMinutes = 'showMinutes',\n showSeconds = 'showSeconds',\n clear = 'clear',\n close = 'close',\n today = 'today',\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `date`\r\n */\r\nexport default class DateDisplay {\r\n private _context: TempusDominus;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.daysContainer);\r\n\r\n container.append(...this._daysOfTheWeek());\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(Namespace.css.calendarWeeks, Namespace.css.noHighlight);\r\n container.appendChild(div);\r\n }\r\n\r\n for (let i = 0; i < 42; i++) {\r\n if (i !== 0 && i % 7 === 0) {\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n container.appendChild(div);\r\n }\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDay);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update(): void {\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.daysContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.daysContainer,\r\n this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n })\r\n );\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(-1, Unit.month),\r\n Unit.month\r\n )\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(1, Unit.month),\r\n Unit.month\r\n )\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.month)\r\n .startOf('weekDay')\r\n .manipulate(12, Unit.hours);\r\n\r\n container\r\n .querySelectorAll(\r\n `[data-action=\"${ActionTypes.selectDay}\"], .${Namespace.css.calendarWeeks}`\r\n )\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (\r\n this._context._options.display.calendarWeeks &&\r\n containerClone.classList.contains(Namespace.css.calendarWeeks)\r\n ) {\r\n if (containerClone.innerText === '#') return;\r\n containerClone.innerText = `${innerDate.week}`;\r\n return;\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.day);\r\n\r\n if (innerDate.isBefore(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.old);\r\n }\r\n if (innerDate.isAfter(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.new);\r\n }\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.date)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.date)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n if (innerDate.isSame(new DateTime(), Unit.date)) {\r\n classes.push(Namespace.css.today);\r\n }\r\n if (innerDate.weekDay === 0 || innerDate.weekDay === 6) {\r\n classes.push(Namespace.css.weekend);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`\r\n );\r\n containerClone.setAttribute(\r\n 'data-day',\r\n `${innerDate.date}`\r\n );\r\n containerClone.innerText = innerDate.format({ day: \"numeric\" });\r\n innerDate.manipulate(1, Unit.date);\r\n });\r\n }\r\n\r\n /***\r\n * Generates an html row that contains the days of the week.\r\n * @private\r\n */\r\n private _daysOfTheWeek(): HTMLElement[] {\r\n let innerDate = this._context._viewDate.clone\r\n .startOf('weekDay')\r\n .startOf(Unit.date);\r\n const row = [];\r\n document.createElement('div');\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = '#';\r\n row.push(htmlDivElement);\r\n }\r\n\r\n for (let i = 0; i < 7; i++) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.dayOfTheWeek,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = innerDate.format({ weekday: 'short' });\r\n innerDate.manipulate(1, Unit.date);\r\n row.push(htmlDivElement);\r\n }\r\n\r\n return row;\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `month`\n */\nexport default class MonthDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.monthsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMonth);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.monthsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.monthsContainer,\n this._context._viewDate.format({ year: 'numeric' })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.year),\n Unit.year\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.year),\n Unit.year\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone.startOf(Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMonth}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.month);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.month)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.month)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${index}`);\n containerClone.innerText = `${innerDate.format({ month: 'short' })}`;\n innerDate.manipulate(1, Unit.month);\n });\n }\n}\n","import { DateTime, DateTimeFormatOptions } from './datetime';\nimport Namespace from './namespace';\nimport { DefaultOptions } from './conts';\n\nexport default interface Options {\n restrictions: {\n minDate: DateTime;\n maxDate: DateTime;\n enabledDates: DateTime[];\n disabledDates: DateTime[];\n enabledHours: number[];\n disabledHours: number[];\n disabledTimeIntervals: { from: DateTime; to: DateTime }[];\n daysOfWeekDisabled: number[];\n };\n display: {\n toolbarPlacement: 'top' | 'bottom';\n components: {\n calendar: boolean;\n date: boolean;\n month: boolean;\n year: boolean;\n decades: boolean;\n clock: boolean;\n hours: boolean;\n minutes: boolean;\n seconds: boolean;\n useTwentyfourHour: boolean;\n };\n buttons: { today: boolean; close: boolean; clear: boolean };\n calendarWeeks: boolean;\n icons: {\n date: string;\n next: string;\n previous: string;\n today: string;\n clear: string;\n time: string;\n up: string;\n type: 'icons' | 'sprites';\n down: string;\n close: string;\n };\n viewMode: 'clock' | 'calendar' | 'months' | 'years' | 'decades';\n sideBySide: boolean;\n inline: boolean;\n keepOpen: boolean;\n };\n stepping: number;\n useCurrent: boolean;\n defaultDate: DateTime;\n localization: {\n nextMonth: string;\n pickHour: string;\n incrementSecond: string;\n nextDecade: string;\n selectDecade: string;\n dayViewHeaderFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n decrementHour: string;\n selectDate: string;\n incrementHour: string;\n previousCentury: string;\n decrementSecond: string;\n today: string;\n previousMonth: string;\n selectYear: string;\n pickSecond: string;\n nextCentury: string;\n close: string;\n incrementMinute: string;\n selectTime: string;\n clear: string;\n toggleMeridiem: string;\n selectMonth: string;\n decrementMinute: string;\n pickMinute: string;\n nextYear: string;\n previousYear: string;\n previousDecade: string;\n locale: string;\n };\n keepInvalid: boolean;\n debug: boolean;\n allowInputToggle: boolean;\n viewDate: DateTime;\n multipleDates: boolean;\n multipleDatesSeparator: string;\n promptTimeOnDateChange: boolean;\n promptTimeOnDateChangeTransitionDelay: number;\n hooks: {\n inputParse: (value: any) => DateTime;\n inputFormat: (date: DateTime) => string;\n };\n}\n\nexport class OptionConverter {\n static _mergeOptions(providedOptions: Options, mergeTo: Options): Options {\n const newOptions = {} as Options;\n let path = '';\n const ignoreProperties = ['inputParse', 'inputFormat'];\n\n const processKey = (key, value, providedType, defaultType) => {\n switch (key) {\n case 'defaultDate': {\n const dateTime = this._dateConversion(value, 'defaultDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'defaultDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'viewDate': {\n const dateTime = this._dateConversion(value, 'viewDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'viewDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'minDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.minDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.minDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'maxDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.maxDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.maxDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'disabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.disabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.disabledHours',\n 0,\n 23\n );\n return value;\n case 'enabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.enabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.enabledHours',\n 0,\n 23\n );\n return value;\n case 'daysOfWeekDisabled':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.daysOfWeekDisabled',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 6).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.daysOfWeekDisabled',\n 0,\n 6\n );\n return value;\n case 'enabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.enabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.disabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledTimeIntervals':\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n key,\n providedType,\n 'array of { from: DateTime|Date, to: DateTime|Date }'\n );\n }\n const valueObject = value as { from: any; to: any }[];\n for (let i = 0; i < valueObject.length; i++) {\n Object.keys(valueObject[i]).forEach((vk) => {\n const subOptionName = `${key}[${i}].${vk}`;\n let d = valueObject[i][vk];\n const dateTime = this._dateConversion(d, subOptionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n subOptionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n valueObject[i][vk] = dateTime;\n });\n }\n return valueObject;\n case 'toolbarPlacement':\n case 'type':\n case 'viewMode':\n case 'dayViewHeaderFormat':\n const optionValues = {\n toolbarPlacement: ['top', 'bottom', 'default'],\n type: ['icons', 'sprites'],\n viewMode: ['clock', 'calendar', 'months', 'years', 'decades'],\n dayViewHeaderFormat: [\n 'numeric',\n '2-digit',\n 'long',\n 'short',\n 'narrow',\n ],\n };\n const keyOptions = optionValues[key];\n if (!keyOptions.includes(value))\n Namespace.errorMessages.unexpectedOptionValue(\n path.substring(1),\n value,\n keyOptions\n );\n\n return value;\n case 'inputParse':\n case 'inputFormat':\n return value;\n default:\n switch (defaultType) {\n case 'boolean':\n return value === 'true' || value === true;\n case 'number':\n return +value;\n case 'string':\n return value.toString();\n case 'object':\n return {};\n case 'function':\n return value;\n default:\n Namespace.errorMessages.typeMismatch(\n path.substring(1),\n providedType,\n defaultType\n );\n }\n }\n };\n\n /**\n * The spread operator caused sub keys to be missing after merging.\n * This is to fix that issue by using spread on the child objects first.\n * Also handles complex options like disabledDates\n * @param provided An option from new providedOptions\n * @param mergeOption Default option to compare types against\n * @param copyTo Destination object. This was add to prevent reference copies\n */\n const spread = (provided, mergeOption, copyTo) => {\n const unsupportedOptions = Object.keys(provided).filter(\n (x) => !Object.keys(mergeOption).includes(x)\n );\n if (unsupportedOptions.length > 0) {\n const flattenedOptions = OptionConverter._flattenDefaultOptions;\n\n const errors = unsupportedOptions.map((x) => {\n let error = `\"${path.substring(1)}.${x}\" in not a known option.`;\n let didYouMean = flattenedOptions.find((y) => y.includes(x));\n if (didYouMean) error += `Did you mean \"${didYouMean}\"?`;\n return error;\n });\n Namespace.errorMessages.unexpectedOptions(errors);\n }\n Object.keys(mergeOption).forEach((key) => {\n const defaultOptionValue = mergeOption[key];\n let providedType = typeof provided[key];\n let defaultType = typeof defaultOptionValue;\n let value = provided[key];\n if (!provided.hasOwnProperty(key)) {\n if (\n defaultType === 'undefined' ||\n (value?.length === 0 && Array.isArray(defaultOptionValue))\n ) {\n copyTo[key] = defaultOptionValue;\n return;\n }\n provided[key] = defaultOptionValue;\n value = provided[key];\n }\n path += `.${key}`;\n copyTo[key] = processKey(key, value, providedType, defaultType);\n\n if (typeof defaultOptionValue !== 'object' || ignoreProperties.includes(key)) {\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n return;\n }\n if (!Array.isArray(provided[key])) {\n spread(provided[key], defaultOptionValue, copyTo[key]);\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n }\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n });\n };\n spread(providedOptions, mergeTo, newOptions);\n\n return newOptions;\n }\n\n static _dataToOptions(element, options: Options): Options {\n const eData = element.dataset;\n if (\n !eData ||\n Object.keys(eData).length === 0 ||\n eData.constructor !== DOMStringMap\n )\n return options;\n let dataOptions = {} as Options;\n\n // because dataset returns camelCase including the 'td' key the option\n // key won't align\n const objectToNormalized = (object) => {\n const lowered = {};\n Object.keys(object).forEach((x) => {\n lowered[x.toLowerCase()] = x;\n });\n\n return lowered;\n };\n\n const rabbitHole = (\n split: string[],\n index: number,\n optionSubgroup: {},\n value: any\n ) => {\n // first round = display { ... }\n const normalizedOptions = objectToNormalized(optionSubgroup);\n\n const keyOption = normalizedOptions[split[index].toLowerCase()];\n const internalObject = {};\n\n if (keyOption === undefined) return internalObject;\n\n // if this is another object, continue down the rabbit hole\n if (optionSubgroup[keyOption].constructor === Object) {\n index++;\n internalObject[keyOption] = rabbitHole(\n split,\n index,\n optionSubgroup[keyOption],\n value\n );\n } else {\n internalObject[keyOption] = value;\n }\n return internalObject;\n };\n const optionsLower = objectToNormalized(options);\n\n Object.keys(eData)\n .filter((x) => x.startsWith(Namespace.dataKey))\n .map((x) => x.substring(2))\n .forEach((key) => {\n let keyOption = optionsLower[key.toLowerCase()];\n\n // dataset merges dashes to camelCase... yay\n // i.e. key = display_components_seconds\n if (key.includes('_')) {\n // [display, components, seconds]\n const split = key.split('_');\n // display\n keyOption = optionsLower[split[0].toLowerCase()];\n if (\n keyOption !== undefined &&\n options[keyOption].constructor === Object\n ) {\n dataOptions[keyOption] = rabbitHole(\n split,\n 1,\n options[keyOption],\n eData[`td${key}`]\n );\n }\n }\n // or key = multipleDate\n else if (keyOption !== undefined) {\n dataOptions[keyOption] = eData[`td${key}`];\n }\n });\n\n return this._mergeOptions(dataOptions, options);\n }\n\n /**\n * Attempts to prove `d` is a DateTime or Date or can be converted into one.\n * @param d If a string will attempt creating a date from it.\n * @private\n */\n static _dateTypeCheck(d: any): DateTime | null {\n if (d.constructor.name === DateTime.name) return d;\n if (d.constructor.name === Date.name) {\n return DateTime.convert(d);\n }\n if (typeof d === typeof '') {\n const dateTime = new DateTime(d);\n if (JSON.stringify(dateTime) === 'null') {\n return null;\n }\n return dateTime;\n }\n return null;\n }\n\n /**\n * Type checks that `value` is an array of Date or DateTime\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckDateArray(optionName: string, value, providedType: string) {\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of DateTime or Date'\n );\n }\n for (let i = 0; i < value.length; i++) {\n let d = value[i];\n const dateTime = this._dateConversion(d, optionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n value[i] = dateTime;\n }\n }\n\n /**\n * Type checks that `value` is an array of numbers\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckNumberArray(\n optionName: string,\n value,\n providedType: string\n ) {\n if (!Array.isArray(value) || value.find((x) => typeof x !== typeof 0)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of numbers'\n );\n }\n return;\n }\n\n /**\n * Attempts to convert `d` to a DateTime object\n * @param d value to convert\n * @param optionName Provides text to error messages e.g. disabledDates\n */\n static _dateConversion(d: any, optionName: string) {\n if (typeof d === typeof '' && optionName !== 'input') {\n Namespace.errorMessages.dateString();\n }\n\n const converted = this._dateTypeCheck(d);\n\n if (!converted) {\n Namespace.errorMessages.failedToParseDate(\n optionName,\n d,\n optionName === 'input'\n );\n }\n return converted;\n }\n\n private static _flatback: string[];\n\n private static get _flattenDefaultOptions(): string[] {\n if (this._flatback) return this._flatback;\n const deepKeys = (t, pre = []) =>\n Array.isArray(t)\n ? []\n : Object(t) === t\n ? Object.entries(t).flatMap(([k, v]) => deepKeys(v, [...pre, k]))\n : pre.join('.');\n\n this._flatback = deepKeys(DefaultOptions);\n\n return this._flatback;\n }\n\n /**\n * Some options conflict like min/max date. Verify that these kinds of options\n * are set correctly.\n * @param config\n */\n static _validateConflcits(config: Options) {\n if (config.restrictions.minDate && config.restrictions.maxDate) {\n if (config.restrictions.minDate.isAfter(config.restrictions.maxDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'minDate is after maxDate'\n );\n }\n\n if (config.restrictions.maxDate.isBefore(config.restrictions.minDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'maxDate is before minDate'\n );\n }\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport { ChangeEvent, FailEvent } from './event-types';\nimport { OptionConverter } from './options';\n\nexport default class Dates {\n private _dates: DateTime[] = [];\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Returns the array of selected dates\n */\n get picked(): DateTime[] {\n return this._dates;\n }\n\n /**\n * Returns the last picked value.\n */\n get lastPicked(): DateTime {\n return this._dates[this.lastPickedIndex];\n }\n\n /**\n * Returns the length of picked dates -1 or 0 if none are selected.\n */\n get lastPickedIndex(): number {\n if (this._dates.length === 0) return 0;\n return this._dates.length - 1;\n }\n\n /**\n * Adds a new DateTime to selected dates array\n * @param date\n */\n add(date: DateTime): void {\n this._dates.push(date);\n }\n\n /**\n * Tries to convert the provided value to a DateTime object.\n * If value is null|undefined then clear the value of the provided index (or 0).\n * @param value Value to convert or null|undefined\n * @param index When using multidates this is the index in the array\n * @param from Used in the warning message, useful for debugging.\n */\n set(value: any, index?: number, from: string = 'date.set') {\n if (!value) this._setValue(value, index);\n const converted = OptionConverter._dateConversion(value, from);\n if (converted) this._setValue(converted, index);\n }\n\n /**\n * Returns true if the `targetDate` is part of the selected dates array.\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n isPicked(targetDate: DateTime, unit?: Unit): boolean {\n if (!unit) return this._dates.find((x) => x === targetDate) !== undefined;\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return (\n this._dates\n .map((x) => x.format(format))\n .find((x) => x === innerDateFormatted) !== undefined\n );\n }\n\n /**\n * Returns the index at which `targetDate` is in the array.\n * This is used for updating or removing a date when multi-date is used\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n pickedIndex(targetDate: DateTime, unit?: Unit): number {\n if (!unit) return this._dates.indexOf(targetDate);\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return this._dates.map((x) => x.format(format)).indexOf(innerDateFormatted);\n }\n\n /**\n * Clears all selected dates.\n */\n clear() {\n this._context._unset = true;\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate: this.lastPicked,\n isClear: true,\n isValid: true,\n } as ChangeEvent);\n this._dates = [];\n }\n\n /**\n * Find the \"book end\" years given a `year` and a `factor`\n * @param factor e.g. 100 for decades\n * @param year e.g. 2021\n */\n static getStartEndYear(\n factor: number,\n year: number\n ): [number, number, number] {\n const step = factor / 10,\n startYear = Math.floor(year / factor) * factor,\n endYear = startYear + step * 9,\n focusValue = Math.floor(year / step) * step;\n return [startYear, endYear, focusValue];\n }\n\n /**\n * Do not use direectly. Attempts to either clear or set the `target` date at `index`.\n * If the `target` is null then the date will be cleared.\n * If multi-date is being used then it will be removed from the array.\n * If `target` is valid and multi-date is used then if `index` is\n * provided the date at that index will be replaced, otherwise it is appended.\n * @param target\n * @param index\n */\n _setValue(target?: DateTime, index?: number): void {\n const noIndex = typeof index === 'undefined',\n isClear = !target && noIndex;\n let oldDate = this._context._unset ? null : this._dates[index];\n if (!oldDate && !this._context._unset && noIndex && isClear) {\n oldDate = this.lastPicked;\n }\n\n if (target && oldDate?.isSame(target)) return;\n\n const updateInput = () => {\n if (!this._context._input) return;\n\n let newValue = this._context._options.hooks.inputFormat(target);\n if (this._context._options.multipleDates) {\n newValue = this._dates\n .map((d) => this._context._options.hooks.inputFormat(d))\n .join(this._context._options.multipleDatesSeparator);\n }\n if (this._context._input.value != newValue)\n this._context._input.value = newValue;\n };\n\n // case of calling setValue(null)\n if (!target) {\n if (\n !this._context._options.multipleDates ||\n this._dates.length === 1 ||\n isClear\n ) {\n this._context._unset = true;\n this._dates = [];\n } else {\n this._dates.splice(index, 1);\n }\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n\n updateInput();\n this._context._display._update('all');\n return;\n }\n\n index = index || 0;\n target = target.clone;\n\n // minute stepping is being used, force the minute to the closest value\n if (this._context._options.stepping !== 1) {\n target.minutes =\n Math.round(target.minutes / this._context._options.stepping) *\n this._context._options.stepping;\n target.seconds = 0;\n }\n\n if (this._context._validation.isValid(target)) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._unset = false;\n this._context._display._update('all');\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n return;\n }\n\n if (this._context._options.keepInvalid) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: false,\n } as ChangeEvent);\n }\n this._context._triggerEvent({\n type: Namespace.events.error,\n reason: Namespace.errorMessages.failedToSetInvalidDate,\n date: target,\n oldDate,\n } as FailEvent);\n }\n\n /**\n * Returns a format object based on the granularity of `unit`\n * @param unit\n */\n static getFormatByUnit(unit: Unit): object {\n switch (unit) {\n case 'date':\n return { dateStyle: 'short' };\n case 'month':\n return {\n month: 'numeric',\n year: 'numeric',\n };\n case 'year':\n return { year: 'numeric' };\n }\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\nimport Dates from '../../dates';\r\n\r\n/**\r\n * Creates and updates the grid for `year`\r\n */\r\nexport default class YearDisplay {\r\n private _context: TempusDominus;\r\n private _startYear: DateTime;\r\n private _endYear: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.yearsContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectYear);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 10,\r\n this._context._viewDate.year\r\n );\r\n this._startYear = this._context._viewDate.clone.manipulate(-1, Unit.year);\r\n this._endYear = this._context._viewDate.clone.manipulate(10, Unit.year);\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.yearsContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.yearsContainer,\r\n `${this._startYear.format({ year: 'numeric' })}-${this._endYear.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startYear, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endYear, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.year)\r\n .manipulate(-1, Unit.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectYear}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n let classes = [];\r\n classes.push(Namespace.css.year);\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.year)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.year)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute('data-value', `${innerDate.year}`);\r\n containerClone.innerText = innerDate.format({ year: \"numeric\" });\r\n\r\n innerDate.manipulate(1, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport Dates from '../../dates';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `seconds`\r\n */\r\nexport default class DecadeDisplay {\r\n private _context: TempusDominus;\r\n private _startDecade: DateTime;\r\n private _endDecade: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker() {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.decadesContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDecade);\r\n container.appendChild(div);\r\n }\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 100,\r\n this._context._viewDate.year\r\n );\r\n this._startDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._startDecade.year = start;\r\n this._endDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._endDecade.year = end;\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.decadesContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.decadesContainer,\r\n `${this._startDecade.format({ year: 'numeric' })}-${this._endDecade.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startDecade, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endDecade, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n const pickedYears = this._context.dates.picked.map((x) => x.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectDecade}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (index === 0) {\r\n containerClone.classList.add(Namespace.css.old);\r\n if (this._startDecade.year - 10 < 0) {\r\n containerClone.textContent = ' ';\r\n previous.classList.add(Namespace.css.disabled);\r\n containerClone.classList.add(Namespace.css.disabled);\r\n containerClone.setAttribute('data-value', ``);\r\n return;\r\n } else {\r\n containerClone.innerText = this._startDecade.clone.manipulate(-10, Unit.year).format({ year: 'numeric' });\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n return;\r\n }\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.decade);\r\n const startDecadeYear = this._startDecade.year;\r\n const endDecadeYear = this._startDecade.year + 9;\r\n\r\n if (\r\n !this._context._unset &&\r\n pickedYears.filter((x) => x >= startDecadeYear && x <= endDecadeYear)\r\n .length > 0\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n containerClone.innerText = `${this._startDecade.format({ year: 'numeric' })}`;\r\n\r\n this._startDecade.manipulate(10, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates the clock display\n */\nexport default class TimeDisplay {\n private _context: TempusDominus;\n private _gridColumns = '';\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the clock display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.clockContainer);\n\n container.append(...this._grid());\n\n return container;\n }\n\n /**\n * Populates the various elements with in the clock display\n * like the current hour and if the manipulation icons are enabled.\n * @private\n */\n _update(): void {\n const timesDiv = (\n this._context._display.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0]\n );\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n timesDiv\n .querySelectorAll('.disabled')\n .forEach((element) => element.classList.remove(Namespace.css.disabled));\n\n if (this._context._options.display.components.hours) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.hours}]`\n ).innerText = this._context._options.display.components.useTwentyfourHour\n ? lastPicked.hoursFormatted\n : lastPicked.twelveHoursFormatted;\n }\n\n if (this._context._options.display.components.minutes) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.minutes}]`\n ).innerText = lastPicked.minutesFormatted;\n }\n\n if (this._context._options.display.components.seconds) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.seconds}]`\n ).innerText = lastPicked.secondsFormatted;\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n const toggle = timesDiv.querySelector(\n `[data-action=${ActionTypes.toggleMeridiem}]`\n );\n\n toggle.innerText = lastPicked.meridiem();\n\n if (\n !this._context._validation.isValid(\n lastPicked.clone.manipulate(\n lastPicked.hours >= 12 ? -12 : 12,\n Unit.hours\n )\n )\n ) {\n toggle.classList.add(Namespace.css.disabled);\n } else {\n toggle.classList.remove(Namespace.css.disabled);\n }\n }\n\n timesDiv.style.gridTemplateAreas = `\"${this._gridColumns}\"`;\n }\n\n /**\n * Creates the table for the clock display depending on what options are selected.\n * @private\n */\n private _grid(): HTMLElement[] {\n this._gridColumns = '';\n const top = [],\n middle = [],\n bottom = [],\n separator = document.createElement('div'),\n upIcon = this._context._display._iconTag(\n this._context._options.display.icons.up\n ),\n downIcon = this._context._display._iconTag(\n this._context._options.display.icons.down\n );\n\n separator.classList.add(Namespace.css.separator, Namespace.css.noHighlight);\n const separatorColon = separator.cloneNode(true);\n separatorColon.innerHTML = ':';\n\n const getSeparator = (colon = false): HTMLElement => {\n return colon\n ? separatorColon.cloneNode(true)\n : separator.cloneNode(true);\n };\n\n if (this._context._options.display.components.hours) {\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.incrementHours);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickHour\n );\n divElement.setAttribute('data-action', ActionTypes.showHours);\n divElement.setAttribute('data-time-component', Unit.hours);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.decrementHours);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n this._gridColumns += 'a';\n }\n\n if (this._context._options.display.components.minutes) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.hours) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.incrementMinutes);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickMinute\n );\n divElement.setAttribute('data-action', ActionTypes.showMinutes);\n divElement.setAttribute('data-time-component', Unit.minutes);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.decrementMinutes);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (this._context._options.display.components.seconds) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.minutes) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.incrementSeconds);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickSecond\n );\n divElement.setAttribute('data-action', ActionTypes.showSeconds);\n divElement.setAttribute('data-time-component', Unit.seconds);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.decrementSeconds);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n this._gridColumns += ' a';\n let divElement = getSeparator();\n top.push(divElement);\n\n let button = document.createElement('button');\n button.setAttribute(\n 'title',\n this._context._options.localization.toggleMeridiem\n );\n button.setAttribute('data-action', ActionTypes.toggleMeridiem);\n button.setAttribute('tabindex', '-1');\n button.classList.add(Namespace.css.toggleMeridiem);\n\n divElement = document.createElement('div');\n divElement.classList.add(Namespace.css.noHighlight);\n divElement.appendChild(button);\n middle.push(divElement);\n\n divElement = getSeparator();\n bottom.push(divElement);\n }\n\n this._gridColumns = this._gridColumns.trim();\n\n return [...top, ...middle, ...bottom];\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `hours`\n */\nexport default class HourDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.hourContainer);\n\n for (\n let i = 0;\n i <\n (this._context._options.display.components.useTwentyfourHour ? 24 : 12);\n i++\n ) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectHour);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.hourContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.date);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectHour}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.hour);\n\n if (!this._context._validation.isValid(innerDate, Unit.hours)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.hours}`);\n containerClone.innerText = this._context._options.display.components\n .useTwentyfourHour\n ? innerDate.hoursFormatted\n : innerDate.twelveHoursFormatted;\n innerDate.manipulate(1, Unit.hours);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `minutes`\n */\nexport default class MinuteDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.minuteContainer);\n\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n for (let i = 0; i < 60 / step; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMinute);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.minuteContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.hours);\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMinute}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.minute);\n\n if (!this._context._validation.isValid(innerDate, Unit.minutes)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.minutes}`);\n containerClone.innerText = innerDate.minutesFormatted;\n innerDate.manipulate(step, Unit.minutes);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class secondDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.secondContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectSecond);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.secondContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.minutes);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectSecond}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.second);\n\n if (!this._context._validation.isValid(innerDate, Unit.seconds)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.seconds}`);\n containerClone.innerText = innerDate.secondsFormatted;\n innerDate.manipulate(5, Unit.seconds);\n });\n }\n}\n","import DateDisplay from './calendar/date-display';\r\nimport MonthDisplay from './calendar/month-display';\r\nimport YearDisplay from './calendar/year-display';\r\nimport DecadeDisplay from './calendar/decade-display';\r\nimport TimeDisplay from './time/time-display';\r\nimport HourDisplay from './time/hour-display';\r\nimport MinuteDisplay from './time/minute-display';\r\nimport SecondDisplay from './time/second-display';\r\nimport { DateTime, Unit } from '../datetime';\r\nimport { DatePickerModes } from '../conts';\r\nimport { TempusDominus } from '../tempus-dominus';\r\nimport { ActionTypes } from '../actions';\r\nimport { createPopper } from '@popperjs/core';\r\nimport Namespace from '../namespace';\r\nimport { HideEvent } from '../event-types';\r\n\r\n/**\r\n * Main class for all things display related.\r\n */\r\nexport default class Display {\r\n private _context: TempusDominus;\r\n private _dateDisplay: DateDisplay;\r\n private _monthDisplay: MonthDisplay;\r\n private _yearDisplay: YearDisplay;\r\n private _decadeDisplay: DecadeDisplay;\r\n private _timeDisplay: TimeDisplay;\r\n private _widget: HTMLElement;\r\n private _hourDisplay: HourDisplay;\r\n private _minuteDisplay: MinuteDisplay;\r\n private _secondDisplay: SecondDisplay;\r\n private _popperInstance: any;\r\n private _isVisible = false;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this._dateDisplay = new DateDisplay(context);\r\n this._monthDisplay = new MonthDisplay(context);\r\n this._yearDisplay = new YearDisplay(context);\r\n this._decadeDisplay = new DecadeDisplay(context);\r\n this._timeDisplay = new TimeDisplay(context);\r\n this._hourDisplay = new HourDisplay(context);\r\n this._minuteDisplay = new MinuteDisplay(context);\r\n this._secondDisplay = new SecondDisplay(context);\r\n\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Returns the widget body or undefined\r\n * @private\r\n */\r\n get widget(): HTMLElement | undefined {\r\n return this._widget;\r\n }\r\n\r\n /**\r\n * Returns this visible state of the picker (shown)\r\n */\r\n get isVisible() {\r\n return this._isVisible;\r\n }\r\n\r\n /**\r\n * Updates the table for a particular unit. Used when an option as changed or\r\n * whenever the class list might need to be refreshed.\r\n * @param unit\r\n * @private\r\n */\r\n _update(unit: Unit | 'clock' | 'calendar' | 'all'): void {\r\n if (!this.widget) return;\r\n //todo do I want some kind of error catching or other guards here?\r\n switch (unit) {\r\n case Unit.seconds:\r\n this._secondDisplay._update();\r\n break;\r\n case Unit.minutes:\r\n this._minuteDisplay._update();\r\n break;\r\n case Unit.hours:\r\n this._hourDisplay._update();\r\n break;\r\n case Unit.date:\r\n this._dateDisplay._update();\r\n break;\r\n case Unit.month:\r\n this._monthDisplay._update();\r\n break;\r\n case Unit.year:\r\n this._yearDisplay._update();\r\n break;\r\n case 'clock':\r\n this._timeDisplay._update();\r\n this._update(Unit.hours);\r\n this._update(Unit.minutes);\r\n this._update(Unit.seconds);\r\n break;\r\n case 'calendar':\r\n this._update(Unit.date);\r\n this._update(Unit.year);\r\n this._update(Unit.month);\r\n this._decadeDisplay._update();\r\n this._updateCalendarHeader();\r\n break;\r\n case 'all':\r\n if (this._hasTime) {\r\n this._update('clock');\r\n }\r\n if (this._hasDate) {\r\n this._update('calendar');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Shows the picker and creates a Popper instance if needed.\r\n * Add document click event to hide when clicking outside the picker.\r\n * @fires Events#show\r\n */\r\n show(): void {\r\n if (this.widget == undefined) {\r\n if (\r\n this._context._options.useCurrent &&\r\n !this._context._options.defaultDate &&\r\n !this._context._input?.value\r\n ) {\r\n //todo in the td4 branch a pr changed this to allow granularity\r\n const date = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n if (!this._context._options.keepInvalid) {\r\n let tries = 0;\r\n let direction = 1;\r\n if (this._context._options.restrictions.maxDate?.isBefore(date)) {\r\n direction = -1;\r\n }\r\n while (!this._context._validation.isValid(date)) {\r\n date.manipulate(direction, Unit.date);\r\n if (tries > 31) break;\r\n tries++;\r\n }\r\n }\r\n this._context.dates._setValue(date);\r\n }\r\n\r\n if (this._context._options.defaultDate) {\r\n this._context.dates._setValue(this._context._options.defaultDate);\r\n }\r\n\r\n this._buildWidget();\r\n if (this._hasDate) {\r\n this._showMode();\r\n }\r\n\r\n if (!this._context._options.display.inline) {\r\n document.body.appendChild(this.widget);\r\n\r\n this._popperInstance = createPopper(\r\n this._context._element,\r\n this.widget,\r\n {\r\n modifiers: [\r\n /* {\r\n name: 'offset',\r\n options: {\r\n offset: [2, 8],\r\n },\r\n },*/\r\n { name: 'eventListeners', enabled: true },\r\n ],\r\n placement: 'bottom-start',\r\n }\r\n );\r\n } else {\r\n this._context._element.appendChild(this.widget);\r\n }\r\n\r\n if (this._context._options.display.viewMode == 'clock') {\r\n this._context._action.do(\r\n {\r\n currentTarget: this.widget.querySelector(\r\n `.${Namespace.css.timeContainer}`\r\n ),\r\n },\r\n ActionTypes.showClock\r\n );\r\n }\r\n\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.addEventListener('click', this._actionsClickEvent)\r\n );\r\n\r\n // show the clock when using sideBySide\r\n if (this._context._options.display.sideBySide) {\r\n this._timeDisplay._update();\r\n (\r\n this.widget.getElementsByClassName(\r\n Namespace.css.clockContainer\r\n )[0] as HTMLElement\r\n ).style.display = 'grid';\r\n }\r\n }\r\n\r\n this.widget.classList.add(Namespace.css.show);\r\n if (!this._context._options.display.inline) {\r\n this._popperInstance.update();\r\n document.addEventListener('click', this._documentClickEvent);\r\n }\r\n this._context._triggerEvent({ type: Namespace.events.show });\r\n this._isVisible = true;\r\n }\r\n\r\n /**\r\n * Changes the calendar view mode. E.g. month <-> year\r\n * @param direction -/+ number to move currentViewMode\r\n * @private\r\n */\r\n _showMode(direction?: number): void {\r\n if (!this.widget) {\r\n return;\r\n }\r\n if (direction) {\r\n const max = Math.max(\r\n this._context._minViewModeNumber,\r\n Math.min(3, this._context._currentViewMode + direction)\r\n );\r\n if (this._context._currentViewMode == max) return;\r\n this._context._currentViewMode = max;\r\n }\r\n\r\n this.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div:not(.${Namespace.css.clockContainer})`\r\n )\r\n .forEach((e: HTMLElement) => (e.style.display = 'none'));\r\n\r\n const datePickerMode = DatePickerModes[this._context._currentViewMode];\r\n let picker: HTMLElement = this.widget.querySelector(\r\n `.${datePickerMode.className}`\r\n );\r\n\r\n switch (datePickerMode.className) {\r\n case Namespace.css.decadesContainer:\r\n this._decadeDisplay._update();\r\n break;\r\n case Namespace.css.yearsContainer:\r\n this._yearDisplay._update();\r\n break;\r\n case Namespace.css.monthsContainer:\r\n this._monthDisplay._update();\r\n break;\r\n case Namespace.css.daysContainer:\r\n this._dateDisplay._update();\r\n break;\r\n }\r\n\r\n picker.style.display = 'grid';\r\n this._updateCalendarHeader();\r\n }\r\n\r\n _updateCalendarHeader() {\r\n const showing = [\r\n ...this.widget.querySelector(\r\n `.${Namespace.css.dateContainer} div[style*=\"display: grid\"]`\r\n ).classList,\r\n ].find((x) => x.startsWith(Namespace.css.dateContainer));\r\n\r\n const [previous, switcher, next] = this._context._display.widget\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switch (showing) {\r\n case Namespace.css.decadesContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousCentury\r\n );\r\n switcher.setAttribute('title', '');\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextCentury\r\n );\r\n break;\r\n case Namespace.css.yearsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousDecade\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDecade\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextDecade\r\n );\r\n break;\r\n case Namespace.css.monthsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousYear\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectYear\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextYear\r\n );\r\n break;\r\n case Namespace.css.daysContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousMonth\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectMonth\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextMonth\r\n );\r\n switcher.innerText = this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n });\r\n break;\r\n }\r\n switcher.innerText = switcher.getAttribute(showing);\r\n }\r\n\r\n /**\r\n * Hides the picker if needed.\r\n * Remove document click event to hide when clicking outside the picker.\r\n * @fires Events#hide\r\n */\r\n hide(): void {\r\n if (!this.widget || !this._isVisible) return;\r\n\r\n this.widget.classList.remove(Namespace.css.show);\r\n\r\n if (this._isVisible) {\r\n this._context._triggerEvent({\r\n type: Namespace.events.hide,\r\n date: this._context._unset\r\n ? null\r\n : this._context.dates.lastPicked\r\n ? this._context.dates.lastPicked.clone\r\n : void 0,\r\n } as HideEvent);\r\n this._isVisible = false;\r\n }\r\n\r\n document.removeEventListener('click', this._documentClickEvent);\r\n }\r\n\r\n /**\r\n * Toggles the picker's open state. Fires a show/hide event depending.\r\n */\r\n toggle() {\r\n return this._isVisible ? this.hide() : this.show();\r\n }\r\n\r\n /**\r\n * Removes document and data-action click listener and reset the widget\r\n * @private\r\n */\r\n _dispose() {\r\n document.removeEventListener('click', this._documentClickEvent);\r\n if (!this.widget) return;\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.removeEventListener('click', this._actionsClickEvent)\r\n );\r\n this.widget.parentNode.removeChild(this.widget);\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Builds the widgets html template.\r\n * @private\r\n */\r\n private _buildWidget(): HTMLElement {\r\n const template = document.createElement('div');\r\n template.classList.add(Namespace.css.widget);\r\n\r\n const dateView = document.createElement('div');\r\n dateView.classList.add(Namespace.css.dateContainer);\r\n dateView.append(\r\n this._headTemplate,\r\n this._decadeDisplay._picker,\r\n this._yearDisplay._picker,\r\n this._monthDisplay._picker,\r\n this._dateDisplay._picker\r\n );\r\n\r\n const timeView = document.createElement('div');\r\n timeView.classList.add(Namespace.css.timeContainer);\r\n timeView.appendChild(this._timeDisplay._picker);\r\n timeView.appendChild(this._hourDisplay._picker);\r\n timeView.appendChild(this._minuteDisplay._picker);\r\n timeView.appendChild(this._secondDisplay._picker);\r\n\r\n const toolbar = document.createElement('div');\r\n toolbar.classList.add(Namespace.css.toolbar);\r\n toolbar.append(...this._toolbar);\r\n\r\n if (this._context._options.display.inline) {\r\n template.classList.add(Namespace.css.inline);\r\n }\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n template.classList.add('calendarWeeks');\r\n }\r\n\r\n if (\r\n this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n template.classList.add(Namespace.css.sideBySide);\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n const row = document.createElement('div');\r\n row.classList.add('td-row');\r\n dateView.classList.add('td-half');\r\n timeView.classList.add('td-half');\r\n\r\n row.appendChild(dateView);\r\n row.appendChild(timeView);\r\n template.appendChild(row);\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n this._widget = template;\r\n return;\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n if (this._hasDate) {\r\n if (this._hasTime) {\r\n dateView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode !== 'clock')\r\n dateView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(dateView);\r\n }\r\n\r\n if (this._hasTime) {\r\n if (this._hasDate) {\r\n timeView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode === 'clock')\r\n timeView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(timeView);\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n const arrow = document.createElement('div');\r\n arrow.classList.add('arrow');\r\n arrow.setAttribute('data-popper-arrow', '');\r\n template.appendChild(arrow);\r\n\r\n this._widget = template;\r\n }\r\n\r\n /**\r\n * Returns true if the hours, minutes, or seconds component is turned on\r\n */\r\n get _hasTime(): boolean {\r\n return (\r\n this._context._options.display.components.clock &&\r\n (this._context._options.display.components.hours ||\r\n this._context._options.display.components.minutes ||\r\n this._context._options.display.components.seconds)\r\n );\r\n }\r\n\r\n /**\r\n * Returns true if the year, month, or date component is turned on\r\n */\r\n get _hasDate(): boolean {\r\n return (\r\n this._context._options.display.components.calendar &&\r\n (this._context._options.display.components.year ||\r\n this._context._options.display.components.month ||\r\n this._context._options.display.components.date)\r\n );\r\n }\r\n\r\n /**\r\n * Get the toolbar html based on options like buttons.today\r\n * @private\r\n */\r\n get _toolbar(): HTMLElement[] {\r\n const toolbar = [];\r\n\r\n if (this._context._options.display.buttons.today) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.today);\r\n div.setAttribute('title', this._context._options.localization.today);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.today)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (\r\n !this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n let title, icon;\r\n if (this._context._options.display.viewMode === 'clock') {\r\n title = this._context._options.localization.selectDate;\r\n icon = this._context._options.display.icons.date;\r\n } else {\r\n title = this._context._options.localization.selectTime;\r\n icon = this._context._options.display.icons.time;\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.togglePicker);\r\n div.setAttribute('title', title);\r\n\r\n div.appendChild(this._iconTag(icon));\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.clear) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.clear);\r\n div.setAttribute('title', this._context._options.localization.clear);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.clear)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.close) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.close);\r\n div.setAttribute('title', this._context._options.localization.close);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.close)\r\n );\r\n toolbar.push(div);\r\n }\r\n\r\n return toolbar;\r\n }\r\n\r\n /***\r\n * Builds the base header template with next and previous icons\r\n * @private\r\n */\r\n get _headTemplate(): HTMLElement {\r\n const calendarHeader = document.createElement('div');\r\n calendarHeader.classList.add(Namespace.css.calendarHeader);\r\n\r\n const previous = document.createElement('div');\r\n previous.classList.add(Namespace.css.previous);\r\n previous.setAttribute('data-action', ActionTypes.previous);\r\n previous.appendChild(\r\n this._iconTag(this._context._options.display.icons.previous)\r\n );\r\n\r\n const switcher = document.createElement('div');\r\n switcher.classList.add(Namespace.css.switch);\r\n switcher.setAttribute('data-action', ActionTypes.pickerSwitch);\r\n\r\n const next = document.createElement('div');\r\n next.classList.add(Namespace.css.next);\r\n next.setAttribute('data-action', ActionTypes.next);\r\n next.appendChild(this._iconTag(this._context._options.display.icons.next));\r\n\r\n calendarHeader.append(previous, switcher, next);\r\n return calendarHeader;\r\n }\r\n\r\n /**\r\n * Builds an icon tag as either an ``\r\n * or with icons.type is `sprites` then an svg tag instead\r\n * @param iconClass\r\n * @private\r\n */\r\n _iconTag(iconClass: string): HTMLElement {\r\n if (this._context._options.display.icons.type === 'sprites') {\r\n const svg = document.createElement('svg');\r\n svg.innerHTML = ``;\r\n return svg;\r\n }\r\n const icon = document.createElement('i');\r\n DOMTokenList.prototype.add.apply(icon.classList, iconClass.split(' '));\r\n return icon;\r\n }\r\n\r\n /**\r\n * A document click event to hide the widget if click is outside\r\n * @private\r\n * @param e MouseEvent\r\n */\r\n private _documentClickEvent = (e: MouseEvent) => {\r\n if (this._context._options.display.keepOpen ||\r\n this._context._options.debug ||\r\n (window as any).debug) return;\r\n\r\n if (\r\n this._isVisible &&\r\n !e.composedPath().includes(this.widget) && // click inside the widget\r\n !e.composedPath()?.includes(this._context._element) // click on the element\r\n ) {\r\n this.hide();\r\n }\r\n };\r\n\r\n /**\r\n * Click event for any action like selecting a date\r\n * @param e MouseEvent\r\n * @private\r\n */\r\n private _actionsClickEvent = (e: MouseEvent) => {\r\n this._context._action.do(e);\r\n };\r\n\r\n /**\r\n * Causes the widget to get rebuilt on next show. If the picker is already open\r\n * then hide and reshow it.\r\n * @private\r\n */\r\n _rebuild() {\r\n const wasVisible = this._isVisible;\r\n if (wasVisible) this.hide();\r\n this._dispose();\r\n if (wasVisible) {\r\n this.show();\r\n }\r\n }\r\n}\r\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Dates from './dates';\n\n/**\n * Main class for date validation rules based on the options provided.\n */\nexport default class Validation {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Checks to see if the target date is valid based on the rules provided in the options.\n * Granularity can be provide to chek portions of the date instead of the whole.\n * @param targetDate\n * @param granularity\n */\n isValid(targetDate: DateTime, granularity?: Unit): boolean {\n if (\n this._context._options.restrictions.disabledDates.length > 0 &&\n this._isInDisabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledDates.length > 0 &&\n !this._isInEnabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.daysOfWeekDisabled?.length > 0 &&\n this._context._options.restrictions.daysOfWeekDisabled.indexOf(\n targetDate.weekDay\n ) !== -1\n ) {\n return false;\n }\n\n if (\n this._context._options.restrictions.minDate &&\n targetDate.isBefore(\n this._context._options.restrictions.minDate,\n granularity\n )\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.maxDate &&\n targetDate.isAfter(\n this._context._options.restrictions.maxDate,\n granularity\n )\n ) {\n return false;\n }\n\n if (\n granularity === Unit.hours ||\n granularity === Unit.minutes ||\n granularity === Unit.seconds\n ) {\n if (\n this._context._options.restrictions.disabledHours.length > 0 &&\n this._isInDisabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledHours.length > 0 &&\n !this._isInEnabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.disabledTimeIntervals.length > 0\n ) {\n for (\n let i = 0;\n i < this._context._options.restrictions.disabledTimeIntervals.length;\n i++\n ) {\n if (\n targetDate.isBetween(\n this._context._options.restrictions.disabledTimeIntervals[i].from,\n this._context._options.restrictions.disabledTimeIntervals[i].to\n )\n )\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Checks to see if the disabledDates option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInDisabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledDates ||\n this._context._options.restrictions.disabledDates.length === 0\n )\n return false;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.disabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the enabledDates option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInEnabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledDates ||\n this._context._options.restrictions.enabledDates.length === 0\n )\n return true;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.enabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the disabledHours option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInDisabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledHours ||\n this._context._options.restrictions.disabledHours.length === 0\n )\n return false;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.disabledHours.find(\n (x) => x === formattedDate\n );\n }\n\n /**\n * Checks to see if the enabledHours option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInEnabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledHours ||\n this._context._options.restrictions.enabledHours.length === 0\n )\n return true;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.enabledHours.find(\n (x) => x === formattedDate\n );\n }\n}\n","import Display from './display/index';\nimport Validation from './validation';\nimport Dates from './dates';\nimport Actions, { ActionTypes } from './actions';\nimport { DatePickerModes, DefaultOptions } from './conts';\nimport { DateTime, DateTimeFormatOptions, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options, { OptionConverter } from './options';\nimport {\n BaseEvent,\n ChangeEvent,\n ViewUpdateEvent,\n FailEvent,\n} from './event-types';\n\n/**\n * A robust and powerful date/time picker component.\n */\nclass TempusDominus {\n dates: Dates;\n\n _options: Options;\n _currentViewMode = 0;\n _subscribers: { [key: string]: ((event: any) => {})[] } = {};\n _element: HTMLElement;\n _input: HTMLInputElement;\n _unset: boolean;\n _minViewModeNumber = 0;\n _display: Display;\n _validation: Validation;\n _action: Actions;\n private _isDisabled = false;\n private _notifyChangeEventContext = 0;\n private _toggle: HTMLElement;\n private _currentPromptTimeTimeout: any;\n\n constructor(element: HTMLElement, options: Options = {} as Options) {\n if (!element) {\n Namespace.errorMessages.mustProvideElement;\n }\n this._element = element;\n this._options = this._initializeOptions(options, DefaultOptions, true);\n this._viewDate.setLocale(this._options.localization.locale);\n this._unset = true;\n\n this._display = new Display(this);\n this._validation = new Validation(this);\n this.dates = new Dates(this);\n this._action = new Actions(this);\n\n this._initializeInput();\n this._initializeToggle();\n\n if (this._options.display.inline) this._display.show();\n }\n\n _viewDate = new DateTime();\n\n get viewDate() {\n return this._viewDate;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Update the picker options. If `reset` is provide `options` will be merged with DefaultOptions instead.\n * @param options\n * @param reset\n * @public\n */\n updateOptions(options, reset = false): void {\n if (reset) this._options = this._initializeOptions(options, DefaultOptions);\n else this._options = this._initializeOptions(options, this._options);\n this._display._rebuild();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Toggles the picker open or closed. If the picker is disabled, nothing will happen.\n * @public\n */\n toggle(): void {\n if (this._isDisabled) return;\n this._display.toggle();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Shows the picker unless the picker is disabled.\n * @public\n */\n show(): void {\n if (this._isDisabled) return;\n this._display.show();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker unless the picker is disabled.\n * @public\n */\n hide(): void {\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Disables the picker and the target input field.\n * @public\n */\n disable(): void {\n this._isDisabled = true;\n // todo this might be undesired. If a dev disables the input field to\n // only allow using the picker, this will break that.\n this._input?.setAttribute('disabled', 'disabled');\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Enables the picker and the target input field.\n * @public\n */\n enable(): void {\n this._isDisabled = false;\n this._input?.removeAttribute('disabled');\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Clears all the selected dates\n * @public\n */\n clear(): void {\n this.dates.clear();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Allows for a direct subscription to picker events, without having to use addEventListener on the element.\n * @param eventTypes See Namespace.Events\n * @param callbacks Function to call when event is triggered\n * @public\n */\n subscribe(\n eventTypes: string | string[],\n callbacks: (event: any) => void | ((event: any) => void)[]\n ): { unsubscribe: void }[] {\n if (typeof eventTypes === 'string') {\n eventTypes = [eventTypes];\n }\n let callBackArray = [];\n if (!Array.isArray(callbacks)) {\n callBackArray = [callbacks];\n } else {\n callBackArray = callbacks;\n }\n\n if (eventTypes.length !== callBackArray.length) {\n Namespace.errorMessages.subscribeMismatch;\n }\n\n const returnArray = [];\n\n for (let i = 0; i < eventTypes.length; i++) {\n const eventType = eventTypes[i];\n if (!Array.isArray(this._subscribers[eventType])) {\n this._subscribers[eventType] = [];\n }\n\n this._subscribers[eventType].push(callBackArray[i]);\n\n returnArray.push({\n unsubscribe: this._unsubscribe.bind(\n this,\n eventType,\n this._subscribers[eventType].length - 1\n ),\n });\n\n if (eventTypes.length === 1) {\n return returnArray[0];\n }\n }\n\n return returnArray;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker and removes event listeners\n */\n dispose() {\n this._display.hide();\n // this will clear the document click event listener\n this._display._dispose();\n this._input?.removeEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input?.removeEventListener('click', this._toggleClickEvent);\n }\n this._toggle.removeEventListener('click', this._toggleClickEvent);\n this._subscribers = {};\n }\n\n /**\n * Triggers an event like ChangeEvent when the picker has updated the value\n * of a selected date.\n * @param event Accepts a BaseEvent object.\n * @private\n */\n _triggerEvent(event: BaseEvent) {\n // checking hasOwnProperty because the BasicEvent also falls through here otherwise\n if ((event as ChangeEvent) && event.hasOwnProperty('date')) {\n const { date, oldDate, isClear } = event as ChangeEvent;\n // this was to prevent a max call stack error\n // https://github.com/tempusdominus/core/commit/15a280507f5277b31b0b3319ab1edc7c19a000fb\n // todo see if this is still needed or if there's a cleaner way\n this._notifyChangeEventContext++;\n if (\n (date && oldDate && date.isSame(oldDate)) ||\n (!isClear && !date && !oldDate) ||\n this._notifyChangeEventContext > 1\n ) {\n this._notifyChangeEventContext = 0;\n return;\n }\n this._handleAfterChangeEvent(event as ChangeEvent);\n }\n\n this._element.dispatchEvent(\n new CustomEvent(event.type, { detail: event as any })\n );\n\n if ((window as any).jQuery) {\n const $ = (window as any).jQuery;\n $(this._element).trigger(event);\n }\n\n const publish = () => {\n // return if event is not subscribed\n if (!Array.isArray(this._subscribers[event.type])) {\n return;\n }\n\n // Trigger callback for each subscriber\n this._subscribers[event.type].forEach((callback) => {\n callback(event);\n });\n };\n\n publish();\n\n this._notifyChangeEventContext = 0;\n }\n\n /**\n * Fires a ViewUpdate event when, for example, the month view is changed.\n * @param {Unit} unit\n * @private\n */\n _viewUpdate(unit: Unit) {\n this._triggerEvent({\n type: Namespace.events.update,\n change: unit,\n viewDate: this._viewDate.clone,\n } as ViewUpdateEvent);\n }\n\n private _unsubscribe(eventName, index) {\n this._subscribers[eventName].splice(index, 1);\n }\n\n /**\n * Merges two Option objects together and validates options type\n * @param config new Options\n * @param mergeTo Options to merge into\n * @param includeDataset When true, the elements data-td attributes will be included in the\n * @private\n */\n private _initializeOptions(\n config: Options,\n mergeTo: Options,\n includeDataset = false\n ): Options {\n config = OptionConverter._mergeOptions(config, mergeTo);\n if (includeDataset)\n config = OptionConverter._dataToOptions(this._element, config);\n\n OptionConverter._validateConflcits(config);\n\n config.viewDate = config.viewDate.setLocale(config.localization.locale);\n\n if (!this._viewDate.isSame(config.viewDate)) {\n this._viewDate = config.viewDate;\n }\n\n /**\n * Sets the minimum view allowed by the picker. For example the case of only\n * allowing year and month to be selected but not date.\n */\n if (config.display.components.year) {\n this._minViewModeNumber = 2;\n }\n if (config.display.components.month) {\n this._minViewModeNumber = 1;\n }\n if (config.display.components.date) {\n this._minViewModeNumber = 0;\n }\n\n this._currentViewMode = Math.max(\n this._minViewModeNumber,\n this._currentViewMode\n );\n\n // Update view mode if needed\n if (\n DatePickerModes[this._currentViewMode].name !== config.display.viewMode\n ) {\n this._currentViewMode = Math.max(\n DatePickerModes.findIndex((x) => x.name === config.display.viewMode),\n this._minViewModeNumber\n );\n }\n\n // defaults the input format based on the components enabled\n if (config.hooks.inputFormat === undefined) {\n const components = config.display.components;\n config.hooks.inputFormat = (date: DateTime) => {\n return date.format({\n year: components.calendar && components.year ? 'numeric' : undefined,\n month:\n components.calendar && components.month ? '2-digit' : undefined,\n day: components.calendar && components.date ? '2-digit' : undefined,\n hour:\n components.clock && components.hours\n ? components.useTwentyfourHour\n ? '2-digit'\n : 'numeric'\n : undefined,\n minute:\n components.clock && components.minutes ? '2-digit' : undefined,\n second:\n components.clock && components.seconds ? '2-digit' : undefined,\n hour12: !components.useTwentyfourHour,\n });\n };\n }\n\n if (this._display?.isVisible) {\n this._display._update('all');\n }\n\n return config;\n }\n\n /**\n * Checks if an input field is being used, attempts to locate one and sets an\n * event listener if found.\n * @private\n */\n private _initializeInput() {\n if (this._element.tagName == 'INPUT') {\n this._input = this._element as HTMLInputElement;\n } else {\n let query = this._element.dataset.tdTargetInput;\n if (query == undefined || query == 'nearest') {\n this._input = this._element.querySelector('input');\n } else {\n this._input = this._element.querySelector(query);\n }\n }\n\n if (!this._input) return;\n\n this._input.addEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input.addEventListener('click', this._toggleClickEvent);\n }\n\n if (this._input.value) {\n this._inputChangeEvent();\n }\n }\n\n /**\n * Attempts to locate a toggle for the picker and sets an event listener\n * @private\n */\n private _initializeToggle() {\n if (this._options.display.inline) return;\n let query = this._element.dataset.tdTargetToggle;\n if (query == 'nearest') {\n query = '[data-td-toggle=\"datetimepicker\"]';\n }\n this._toggle =\n query == undefined ? this._element : this._element.querySelector(query);\n this._toggle.addEventListener('click', this._toggleClickEvent);\n }\n\n /**\n * If the option is enabled this will render the clock view after a date pick.\n * @param e change event\n * @private\n */\n private _handleAfterChangeEvent(e: ChangeEvent) {\n if (\n // options is disabled\n !this._options.promptTimeOnDateChange ||\n this._options.display.inline ||\n this._options.display.sideBySide ||\n // time is disabled\n !this._display._hasTime ||\n // clock component is already showing\n this._display.widget\n ?.getElementsByClassName(Namespace.css.show)[0]\n .classList.contains(Namespace.css.timeContainer)\n )\n return;\n\n // First time ever. If useCurrent option is set to true (default), do nothing\n // because the first date is selected automatically.\n // or date didn't change (time did) or date changed because time did.\n if (\n (!e.oldDate && this._options.useCurrent) ||\n (e.oldDate && e.date?.isSame(e.oldDate))\n ) {\n return;\n }\n\n clearTimeout(this._currentPromptTimeTimeout);\n this._currentPromptTimeTimeout = setTimeout(() => {\n if (this._display.widget) {\n this._action.do(\n {\n currentTarget: this._display.widget.querySelector(\n `.${Namespace.css.switch} div`\n ),\n },\n ActionTypes.togglePicker\n );\n }\n }, this._options.promptTimeOnDateChangeTransitionDelay);\n }\n\n /**\n * Event for when the input field changes. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _inputChangeEvent = () => {\n const setViewDate = () => {\n if (this.dates.lastPicked) this._viewDate = this.dates.lastPicked;\n };\n\n const value = this._input.value;\n if (this._options.multipleDates) {\n try {\n const valueSplit = value.split(this._options.multipleDatesSeparator);\n for (let i = 0; i < valueSplit.length; i++) {\n if (this._options.hooks.inputParse) {\n this.dates.set(\n this._options.hooks.inputParse(valueSplit[i]),\n i,\n 'input'\n );\n } else {\n this.dates.set(valueSplit[i], i, 'input');\n }\n }\n setViewDate();\n } catch {\n console.warn(\n 'TD: Something went wrong trying to set the multidate values from the input field.'\n );\n }\n } else {\n if (this._options.hooks.inputParse) {\n this.dates.set(this._options.hooks.inputParse(value), 0, 'input');\n } else {\n this.dates.set(value, 0, 'input');\n }\n setViewDate();\n }\n };\n\n /**\n * Event for when the toggle is clicked. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _toggleClickEvent = () => {\n this.toggle();\n };\n}\n\nexport {\n TempusDominus,\n Namespace,\n DefaultOptions,\n DateTime,\n Options,\n Unit,\n DateTimeFormatOptions,\n};\n"],"names":["SecondDisplay"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tempus-dominus.esm.js","sources":["../../src/js/datetime.ts","../../src/js/errors.ts","../../src/js/namespace.ts","../../src/js/conts.ts","../../src/js/display/collapse.ts","../../src/js/actions.ts","../../src/js/display/calendar/date-display.ts","../../src/js/display/calendar/month-display.ts","../../src/js/options.ts","../../src/js/dates.ts","../../src/js/display/calendar/year-display.ts","../../src/js/display/calendar/decade-display.ts","../../src/js/display/time/time-display.ts","../../src/js/display/time/hour-display.ts","../../src/js/display/time/minute-display.ts","../../src/js/display/time/second-display.ts","../../src/js/display/index.ts","../../src/js/validation.ts","../../src/js/tempus-dominus.ts"],"sourcesContent":["export enum Unit {\r\n seconds = 'seconds',\r\n minutes = 'minutes',\r\n hours = 'hours',\r\n date = 'date',\r\n month = 'month',\r\n year = 'year',\r\n}\r\n\r\nexport interface DateTimeFormatOptions extends Intl.DateTimeFormatOptions {\r\n timeStyle?: 'short' | 'medium' | 'long';\r\n dateStyle?: 'short' | 'medium' | 'long' | 'full';\r\n}\r\n\r\n/**\r\n * For the most part this object behaves exactly the same way\r\n * as the native Date object with a little extra spice.\r\n */\r\nexport class DateTime extends Date {\r\n /**\r\n * Used with Intl.DateTimeFormat\r\n */\r\n locale = 'default';\r\n\r\n /**\r\n * Chainable way to set the {@link locale}\r\n * @param value\r\n */\r\n setLocale(value: string): this {\r\n this.locale = value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Converts a plain JS date object to a DateTime object.\r\n * Doing this allows access to format, etc.\r\n * @param date\r\n */\r\n static convert(date: Date): DateTime {\r\n if (!date) throw `A date is required`;\r\n return new DateTime(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate(),\r\n date.getHours(),\r\n date.getMinutes(),\r\n date.getSeconds(),\r\n date.getMilliseconds()\r\n );\r\n }\r\n\r\n /**\r\n * Native date manipulations are not pure functions. This function creates a duplicate of the DateTime object.\r\n */\r\n get clone() {\r\n return new DateTime(\r\n this.year,\r\n this.month,\r\n this.date,\r\n this.hours,\r\n this.minutes,\r\n this.seconds,\r\n this.getMilliseconds()\r\n ).setLocale(this.locale);\r\n }\r\n\r\n /**\r\n * Sets the current date to the start of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).startOf('month')\r\n * would return April 1, 2021, 12:00:00.000 AM (midnight)\r\n * @param unit\r\n */\r\n startOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(0);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(0, 0);\r\n break;\r\n case 'hours':\r\n this.setMinutes(0, 0, 0);\r\n break;\r\n case 'date':\r\n this.setHours(0, 0, 0, 0);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(0 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.startOf(Unit.date);\r\n this.setDate(1);\r\n break;\r\n case 'year':\r\n this.startOf(Unit.date);\r\n this.setMonth(0, 1);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the current date to the end of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).endOf('month')\r\n * would return April 30, 2021, 11:59:59.999 PM\r\n * @param unit\r\n */\r\n endOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(999);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(59, 999);\r\n break;\r\n case 'hours':\r\n this.setMinutes(59, 59, 999);\r\n break;\r\n case 'date':\r\n this.setHours(23, 59, 59, 999);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(6 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.month);\r\n this.setDate(0);\r\n break;\r\n case 'year':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.year);\r\n this.setDate(0);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Change a {@link unit} value. Value can be positive or negative\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).manipulate(1, 'month')\r\n * would return May 30, 2021, 11:45:32.984 AM\r\n * @param value A positive or negative number\r\n * @param unit\r\n */\r\n manipulate(value: number, unit: Unit): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n this[unit] += value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns a string format.\r\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat\r\n * for valid templates and locale objects\r\n * @param template An object. Uses browser defaults otherwise.\r\n * @param locale Can be a string or an array of strings. Uses browser defaults otherwise.\r\n */\r\n format(template: DateTimeFormatOptions, locale = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, template).format(this);\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is before this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isBefore(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() < compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() < compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is after this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isAfter(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() > compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() > compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is same this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isSame(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() === compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n compare = DateTime.convert(compare);\r\n return (\r\n this.clone.startOf(unit).valueOf() === compare.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Check if this is between two other DateTimes, optionally looking at unit scale. The match is exclusive.\r\n * @param left\r\n * @param right\r\n * @param unit.\r\n * @param inclusivity. A [ indicates inclusion of a value. A ( indicates exclusion.\r\n * If the inclusivity parameter is used, both indicators must be passed.\r\n */\r\n isBetween(\r\n left: DateTime,\r\n right: DateTime,\r\n unit?: Unit,\r\n inclusivity: '()' | '[]' | '(]' | '[)' = '()'\r\n ): boolean {\r\n if (unit && this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n const leftInclusivity = inclusivity[0] === '(';\r\n const rightInclusivity = inclusivity[1] === ')';\r\n\r\n return (\r\n ((leftInclusivity\r\n ? this.isAfter(left, unit)\r\n : !this.isBefore(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isBefore(right, unit)\r\n : !this.isAfter(right, unit))) ||\r\n ((leftInclusivity\r\n ? this.isBefore(left, unit)\r\n : !this.isAfter(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isAfter(right, unit)\r\n : !this.isBefore(right, unit)))\r\n );\r\n }\r\n\r\n /**\r\n * Returns flattened object of the date. Does not include literals\r\n * @param locale\r\n * @param template\r\n */\r\n parts(\r\n locale = this.locale,\r\n template: any = { dateStyle: 'full', timeStyle: 'long' }\r\n ) {\r\n const parts = {};\r\n new Intl.DateTimeFormat(locale, template)\r\n .formatToParts(this)\r\n .filter((x) => x.type !== 'literal')\r\n .forEach((x) => (parts[x.type] = x.value));\r\n return parts;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getSeconds()\r\n */\r\n get seconds(): number {\r\n return this.getSeconds();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setSeconds()\r\n */\r\n set seconds(value: number) {\r\n this.setSeconds(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get secondsFormatted(): string {\r\n return this.format({ second: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMinutes()\r\n */\r\n get minutes(): number {\r\n return this.getMinutes();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMinutes()\r\n */\r\n set minutes(value: number) {\r\n this.setMinutes(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get minutesFormatted(): string {\r\n return this.format({ minute: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getHours()\r\n */\r\n get hours(): number {\r\n return this.getHours();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setHours()\r\n */\r\n set hours(value: number) {\r\n this.setHours(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get hoursFormatted(): string {\r\n return this.format({ hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Returns two digit hours but in twelve hour mode e.g. 13 -> 1\r\n */\r\n get twelveHoursFormatted(): string {\r\n return this.format({ hour12: true, hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Get the meridiem of the date. E.g. AM or PM.\r\n * If the {@link locale} provides a \"dayPeriod\" then this will be returned,\r\n * otherwise it will return AM or PM.\r\n * @param locale\r\n */\r\n meridiem(locale: string = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, {\r\n hour: 'numeric',\r\n hour12: true,\r\n } as any)\r\n .formatToParts(this)\r\n .find((p) => p.type === 'dayPeriod')?.value;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDate()\r\n */\r\n get date(): number {\r\n return this.getDate();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setDate()\r\n */\r\n set date(value: number) {\r\n this.setDate(value);\r\n }\r\n\r\n /**\r\n * Return two digit date\r\n */\r\n get dateFormatted(): string {\r\n return this.date < 10 ? `0${this.date}` : `${this.date}`;\r\n }\r\n\r\n // https://github.com/you-dont-need/You-Dont-Need-Momentjs#week-of-year\r\n /**\r\n * Gets the week of the year\r\n */\r\n get week(): number {\r\n const startOfYear = new Date(this.year, 0, 1);\r\n startOfYear.setDate(\r\n startOfYear.getDate() + (1 - (startOfYear.getDay() % 7))\r\n );\r\n return Math.round((this.valueOf() - startOfYear.valueOf()) / 604800000) + 1;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDay()\r\n */\r\n get weekDay(): number {\r\n return this.getDay();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMonth()\r\n */\r\n get month(): number {\r\n return this.getMonth();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMonth()\r\n */\r\n set month(value: number) {\r\n this.setMonth(value);\r\n }\r\n\r\n /**\r\n * Return two digit, human expected month. E.g. January = 1, December = 12\r\n */\r\n get monthFormatted(): string {\r\n return this.month + 1 < 10 ? `0${this.month}` : `${this.month}`;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getFullYear()\r\n */\r\n get year(): number {\r\n return this.getFullYear();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setFullYear()\r\n */\r\n set year(value: number) {\r\n this.setFullYear(value);\r\n }\r\n}\r\n","import Namespace from './namespace';\n\nexport class TdError extends Error {\n code: number;\n}\n\nexport class ErrorMessages {\n private base = 'TD:';\n\n //#region out to console\n\n /**\n * Throws an error indicating that a key in the options object is invalid.\n * @param optionName\n */\n unexpectedOption(optionName: string) {\n const error = new TdError(\n `${this.base} Unexpected option: ${optionName} does not match a known option.`\n );\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error indicating that one more keys in the options object is invalid.\n * @param optionName\n */\n unexpectedOptions(optionName: string[]) {\n const error = new TdError(`${this.base}: ${optionName.join(', ')}`);\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error when an option is provide an unsupported value.\n * For example a value of 'cheese' for toolbarPlacement which only supports\n * 'top', 'bottom', 'default'.\n * @param optionName\n * @param badValue\n * @param validOptions\n */\n unexpectedOptionValue(\n optionName: string,\n badValue: string,\n validOptions: string[]\n ) {\n const error = new TdError(\n `${\n this.base\n } Unexpected option value: ${optionName} does not accept a value of \"${badValue}\". Valid values are: ${validOptions.join(\n ', '\n )}`\n );\n error.code = 2;\n throw error;\n }\n\n /**\n * Throws an error when an option value is the wrong type.\n * For example a string value was provided to multipleDates which only\n * supports true or false.\n * @param optionName\n * @param badType\n * @param expectedType\n */\n typeMismatch(optionName: string, badType: string, expectedType: string) {\n const error = new TdError(\n `${this.base} Mismatch types: ${optionName} has a type of ${badType} instead of the required ${expectedType}`\n );\n error.code = 3;\n throw error;\n }\n\n /**\n * Throws an error when an option value is outside of the expected range.\n * For example restrictions.daysOfWeekDisabled excepts a value between 0 and 6.\n * @param optionName\n * @param lower\n * @param upper\n */\n numbersOutOfRage(optionName: string, lower: number, upper: number) {\n const error = new TdError(\n `${this.base} ${optionName} expected an array of number between ${lower} and ${upper}.`\n );\n error.code = 4;\n throw error;\n }\n\n /**\n * Throws an error when a value for a date options couldn't be parsed. Either\n * the option was an invalide string or an invalid Date object.\n * @param optionName\n * @param date\n * @param soft If true, logs a warning instead of an error.\n */\n failedToParseDate(optionName: string, date: any, soft = false) {\n const error = new TdError(\n `${this.base} Could not correctly parse \"${date}\" to a date for ${optionName}.`\n );\n error.code = 5;\n if (!soft) throw error;\n console.warn(error);\n }\n\n /**\n * Throws when an element to attach to was not provided in the constructor.\n */\n mustProvideElement() {\n const error = new TdError(`${this.base} No element was provided.`);\n error.code = 6;\n throw error;\n }\n\n /**\n * Throws if providing an array for the events to subscribe method doesn't have\n * the same number of callbacks. E.g., subscribe([1,2], [1])\n */\n subscribeMismatch() {\n const error = new TdError(\n `${this.base} The subscribed events does not match the number of callbacks`\n );\n error.code = 7;\n throw error;\n }\n\n /**\n * Throws if the configuration has conflicting rules e.g. minDate is after maxDate\n */\n conflictingConfiguration(message?: string) {\n const error = new TdError(\n `${this.base} A configuration value conflicts with another rule. ${message}`\n );\n error.code = 8;\n throw error;\n }\n\n /**\n * Logs a warning if a date option value is provided as a string, instead of\n * a date/datetime object.\n */\n dateString() {\n console.warn(\n `${this.base} Using a string for date options is not recommended unless you specify an ISO string.`\n );\n }\n\n //#endregion\n\n //#region used with notify.error\n\n /**\n * Used with an Error Event type if the user selects a date that\n * fails restriction validation.\n */\n failedToSetInvalidDate = 'Failed to set invalid date';\n\n /**\n * Used with an Error Event type when a user changes the value of the\n * input field directly, and does not provide a valid date.\n */\n failedToParseInput = 'Failed parse input field';\n\n //#endregion\n}\n","import { ErrorMessages } from './errors';\n// this is not the way I want this to stay but nested classes seemed to blown up once its compiled.\nconst NAME = 'tempus-dominus',\n version = '6.0.0-alpha1',\n dataKey = 'td';\n\n/**\n * Events\n */\nclass Events {\n key = `.${dataKey}`;\n\n /**\n * Change event. Fired when the user selects a date.\n * See also EventTypes.ChangeEvent\n */\n change = `change${this.key}`;\n\n /**\n * Emit when the view changes for example from month view to the year view.\n * See also EventTypes.ViewUpdateEvent\n */\n update = `update${this.key}`;\n\n /**\n * Emits when a selected date or value from the input field fails to meet the provided validation rules.\n * See also EventTypes.FailEvent\n */\n error = `error${this.key}`;\n\n /**\n * Show event\n * @event Events#show\n */\n show = `show${this.key}`;\n\n /**\n * Hide event\n * @event Events#hide\n */\n hide = `hide${this.key}`;\n\n // blur and focus are used in the jQuery provider but are otherwise unused.\n // keyup/down will be used later for keybinding options\n\n blur = `blur${this.key}`;\n focus = `focus${this.key}`;\n keyup = `keyup${this.key}`;\n keydown = `keydown${this.key}`;\n}\n\nclass Css {\n /**\n * The outer element for the widget.\n */\n widget = `${NAME}-widget`;\n\n /**\n * Hold the previous, next and switcher divs\n */\n calendarHeader = 'calendar-header';\n\n /**\n * The element for the action to change the calendar view. E.g. month -> year.\n */\n switch = 'picker-switch';\n\n /**\n * The elements for all of the toolbar options\n */\n toolbar = 'toolbar';\n\n /**\n * Disables the hover and rounding affect.\n */\n noHighlight = 'no-highlight';\n\n /**\n * Applied to the widget element when the side by side option is in use.\n */\n sideBySide = 'timepicker-sbs';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> July\n */\n previous = 'previous';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> September\n */\n next = 'next';\n\n /**\n * Applied to any action that would violate any restriction options. ALso applied\n * to an input field if the disabled function is called.\n */\n disabled = 'disabled';\n\n /**\n * Applied to any date that is less than requested view,\n * e.g. the last day of the previous month.\n */\n old = 'old';\n\n /**\n * Applied to any date that is greater than of requested view,\n * e.g. the last day of the previous month.\n */\n new = 'new';\n\n /**\n * Applied to any date that is currently selected.\n */\n active = 'active';\n\n //#region date element\n\n /**\n * The outer most element for the calendar view.\n */\n dateContainer = 'date-container';\n\n /**\n * The outer most element for the decades view.\n */\n decadesContainer = `${this.dateContainer}-decades`;\n\n /**\n * Applied to elements within the decades container, e.g. 2020, 2030\n */\n decade = 'decade';\n\n /**\n * The outer most element for the years view.\n */\n yearsContainer = `${this.dateContainer}-years`;\n\n /**\n * Applied to elements within the years container, e.g. 2021, 2021\n */\n year = 'year';\n\n /**\n * The outer most element for the month view.\n */\n monthsContainer = `${this.dateContainer}-months`;\n\n /**\n * Applied to elements within the month container, e.g. January, February\n */\n month = 'month';\n\n /**\n * The outer most element for the calendar view.\n */\n daysContainer = `${this.dateContainer}-days`;\n\n /**\n * Applied to elements within the day container, e.g. 1, 2..31\n */\n day = 'day';\n\n /**\n * If display.calendarWeeks is enabled, a column displaying the week of year\n * is shown. This class is applied to each cell in that column.\n */\n calendarWeeks = 'cw';\n\n /**\n * Applied to the first row of the calendar view, e.g. Sunday, Monday\n */\n dayOfTheWeek = 'dow';\n\n /**\n * Applied to the current date on the calendar view.\n */\n today = 'today';\n\n /**\n * Applied to the locale's weekend dates on the calendar view, e.g. Sunday, Saturday\n */\n weekend = 'weekend';\n\n //#endregion\n\n //#region time element\n\n /**\n * The outer most element for all time related elements.\n */\n timeContainer = 'time-container';\n\n /**\n * Applied the separator columns between time elements, e.g. hour *:* minute *:* second\n */\n separator = 'separator';\n\n /**\n * The outer most element for the clock view.\n */\n clockContainer = `${this.timeContainer}-clock`;\n\n /**\n * The outer most element for the hours selection view.\n */\n hourContainer = `${this.timeContainer}-hour`;\n\n /**\n * The outer most element for the minutes selection view.\n */\n minuteContainer = `${this.timeContainer}-minute`;\n\n /**\n * The outer most element for the seconds selection view.\n */\n secondContainer = `${this.timeContainer}-second`;\n\n /**\n * Applied to each element in the hours selection view.\n */\n hour = 'hour';\n\n /**\n * Applied to each element in the minutes selection view.\n */\n minute = 'minute';\n\n /**\n * Applied to each element in the seconds selection view.\n */\n second = 'second';\n\n /**\n * Applied AM/PM toggle button.\n */\n toggleMeridiem = 'toggleMeridiem';\n\n //#endregion\n\n //#region collapse\n\n /**\n * Applied the element of the current view mode, e.g. calendar or clock.\n */\n show = 'show';\n\n /**\n * Applied to the currently showing view mode during a transition\n * between calendar and clock views\n */\n collapsing = 'td-collapsing';\n\n /**\n * Applied to the currently hidden view mode.\n */\n collapse = 'td-collapse';\n\n //#endregion\n\n /**\n * Applied to the widget when the option display.inline is enabled.\n */\n inline = 'inline';\n}\n\nexport default class Namespace {\n static NAME = NAME;\n // noinspection JSUnusedGlobalSymbols\n static version = version;\n static dataKey = dataKey;\n\n static events = new Events();\n\n static css = new Css();\n\n static errorMessages = new ErrorMessages();\n}\n","import { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options from './options';\n\nconst DefaultOptions: Options = {\n restrictions: {\n minDate: undefined,\n maxDate: undefined,\n disabledDates: [],\n enabledDates: [],\n daysOfWeekDisabled: [],\n disabledTimeIntervals: [],\n disabledHours: [],\n enabledHours: [],\n },\n display: {\n icons: {\n type: 'icons',\n time: 'fas fa-clock',\n date: 'fas fa-calendar',\n up: 'fas fa-arrow-up',\n down: 'fas fa-arrow-down',\n previous: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n today: 'fas fa-calendar-check',\n clear: 'fas fa-trash',\n close: 'fas fa-times',\n },\n sideBySide: false,\n calendarWeeks: false,\n viewMode: 'calendar',\n toolbarPlacement: 'bottom',\n keepOpen: false,\n buttons: {\n today: false,\n clear: false,\n close: false,\n },\n components: {\n calendar: true,\n date: true,\n month: true,\n year: true,\n decades: true,\n clock: true,\n hours: true,\n minutes: true,\n seconds: false,\n useTwentyfourHour: false,\n },\n inline: false,\n },\n stepping: 1,\n useCurrent: true,\n defaultDate: undefined,\n localization: {\n today: 'Go to today',\n clear: 'Clear selection',\n close: 'Close the picker',\n selectMonth: 'Select Month',\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n selectYear: 'Select Year',\n previousYear: 'Previous Year',\n nextYear: 'Next Year',\n selectDecade: 'Select Decade',\n previousDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n previousCentury: 'Previous Century',\n nextCentury: 'Next Century',\n pickHour: 'Pick Hour',\n incrementHour: 'Increment Hour',\n decrementHour: 'Decrement Hour',\n pickMinute: 'Pick Minute',\n incrementMinute: 'Increment Minute',\n decrementMinute: 'Decrement Minute',\n pickSecond: 'Pick Second',\n incrementSecond: 'Increment Second',\n decrementSecond: 'Decrement Second',\n toggleMeridiem: 'Toggle Meridiem',\n selectTime: 'Select Time',\n selectDate: 'Select Date',\n dayViewHeaderFormat: 'long',\n locale: 'default',\n },\n keepInvalid: false,\n debug: false,\n allowInputToggle: false,\n viewDate: new DateTime(),\n multipleDates: false,\n multipleDatesSeparator: '; ',\n promptTimeOnDateChange: false,\n promptTimeOnDateChangeTransitionDelay: 200,\n hooks: {\n inputParse: undefined,\n inputFormat: undefined,\n },\n};\n\nconst DatePickerModes: {\n name: string;\n className: string;\n unit: Unit;\n step: number;\n}[] = [\n {\n name: 'calendar',\n className: Namespace.css.daysContainer,\n unit: Unit.month,\n step: 1,\n },\n {\n name: 'months',\n className: Namespace.css.monthsContainer,\n unit: Unit.year,\n step: 1,\n },\n {\n name: 'years',\n className: Namespace.css.yearsContainer,\n unit: Unit.year,\n step: 10,\n },\n {\n name: 'decades',\n className: Namespace.css.decadesContainer,\n unit: Unit.year,\n step: 100,\n },\n];\n\nexport { DefaultOptions, DatePickerModes, Namespace };\n","import Namespace from '../namespace';\n\n/**\n * Provides a collapse functionality to the view changes\n */\nexport default class Collapse {\n private timeOut;\n\n /**\n * Flips the show/hide state of `target`\n * @param target html element to affect.\n */\n toggle(target: HTMLElement, callback = undefined) {\n if (target.classList.contains(Namespace.css.show)) {\n this.hide(target, callback);\n } else {\n this.show(target, callback);\n }\n }\n\n /**\n * If `target` is not already showing, then show after the animation.\n * @param target\n */\n show(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse, Namespace.css.show);\n target.style.height = '';\n this.timeOut = null;\n if (callback) callback();\n };\n\n target.style.height = '0';\n target.classList.remove(Namespace.css.collapse);\n target.classList.add(Namespace.css.collapsing);\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n target.style.height = `${target.scrollHeight}px`;\n }\n\n /**\n * If `target` is not already hidden, then hide after the animation.\n * @param target HTML Element\n */\n hide(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n !target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse);\n this.timeOut = null;\n };\n\n target.style.height = `${target.getBoundingClientRect()['height']}px`;\n\n const reflow = (element) => element.offsetHeight;\n\n reflow(target);\n\n target.classList.remove(Namespace.css.collapse, Namespace.css.show);\n target.classList.add(Namespace.css.collapsing);\n target.style.height = '';\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n }\n\n /**\n * Gets the transition duration from the `element` by getting css properties\n * `transition-duration` and `transition-delay`\n * @param element HTML Element\n */\n private getTransitionDurationFromElement = (element: HTMLElement) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } =\n window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) +\n Number.parseFloat(transitionDelay)) *\n 1000\n );\n };\n}\n","import { DatePickerModes } from './conts.js';\nimport { DateTime, Unit } from './datetime';\nimport { TempusDominus } from './tempus-dominus';\nimport Collapse from './display/collapse';\nimport Namespace from './namespace';\n\n/**\n *\n */\nexport default class Actions {\n private _context: TempusDominus;\n private collapse: Collapse;\n\n constructor(context: TempusDominus) {\n this._context = context;\n this.collapse = new Collapse();\n }\n\n /**\n * Performs the selected `action`. See ActionTypes\n * @param e This is normally a click event\n * @param action If not provided, then look for a [data-action]\n */\n do(e: any, action?: ActionTypes) {\n const currentTarget = e.currentTarget;\n if (currentTarget.classList.contains(Namespace.css.disabled)) return false;\n action = action || currentTarget.dataset.action;\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n /**\n * Common function to manipulate {@link lastPicked} by `unit`\n * @param unit\n * @param value Value to change by\n */\n const manipulateAndSet = (unit: Unit, value = 1) => {\n const newDate = lastPicked.manipulate(value, unit);\n if (this._context._validation.isValid(newDate, unit)) {\n this._context.dates._setValue(\n newDate,\n this._context.dates.lastPickedIndex\n );\n }\n };\n\n switch (action) {\n case ActionTypes.next:\n case ActionTypes.previous:\n const { unit, step } = DatePickerModes[this._context._currentViewMode];\n if (action === ActionTypes.next)\n this._context._viewDate.manipulate(step, unit);\n else this._context._viewDate.manipulate(step * -1, unit);\n this._context._viewUpdate(unit);\n\n this._context._display._showMode();\n break;\n case ActionTypes.pickerSwitch:\n this._context._display._showMode(1);\n this._context._viewUpdate(\n DatePickerModes[this._context._currentViewMode].unit\n );\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.selectMonth:\n case ActionTypes.selectYear:\n case ActionTypes.selectDecade:\n const value = +currentTarget.dataset.value;\n switch (action) {\n case ActionTypes.selectMonth:\n this._context._viewDate.month = value;\n this._context._viewUpdate(Unit.month);\n break;\n case ActionTypes.selectYear:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n case ActionTypes.selectDecade:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n }\n\n if (\n this._context._currentViewMode === this._context._minViewModeNumber\n ) {\n this._context.dates._setValue(\n this._context._viewDate,\n this._context.dates.lastPickedIndex\n );\n if (!this._context._options.display.inline) {\n this._context._display.hide();\n }\n } else {\n this._context._display._showMode(-1);\n }\n break;\n case ActionTypes.selectDay:\n const day = this._context._viewDate.clone;\n if (currentTarget.classList.contains(Namespace.css.old)) {\n day.manipulate(-1, Unit.month);\n }\n if (currentTarget.classList.contains(Namespace.css.new)) {\n day.manipulate(1, Unit.month);\n }\n\n day.date = +currentTarget.dataset.day;\n let index = 0;\n if (this._context._options.multipleDates) {\n index = this._context.dates.pickedIndex(day, Unit.date);\n if (index !== -1) {\n this._context.dates._setValue(null, index); //deselect multi-date\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex + 1\n );\n }\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex\n );\n }\n\n if (\n !this._context._display._hasTime &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline &&\n !this._context._options.multipleDates\n ) {\n this._context._display.hide();\n }\n break;\n case ActionTypes.selectHour:\n let hour = +currentTarget.dataset.value;\n if (\n lastPicked.hours >= 12 &&\n !this._context._options.display.components.useTwentyfourHour\n )\n hour += 12;\n lastPicked.hours = hour;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.minutes &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectMinute:\n lastPicked.minutes = +currentTarget.dataset.value;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.seconds &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectSecond:\n lastPicked.seconds = +currentTarget.dataset.value;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.incrementHours:\n manipulateAndSet(Unit.hours);\n break;\n case ActionTypes.incrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping);\n break;\n case ActionTypes.incrementSeconds:\n manipulateAndSet(Unit.seconds);\n break;\n case ActionTypes.decrementHours:\n manipulateAndSet(Unit.hours, -1);\n break;\n case ActionTypes.decrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping * -1);\n break;\n case ActionTypes.decrementSeconds:\n manipulateAndSet(Unit.seconds, -1);\n break;\n case ActionTypes.toggleMeridiem:\n manipulateAndSet(\n Unit.hours,\n this._context.dates.lastPicked.hours >= 12 ? -12 : 12\n );\n break;\n case ActionTypes.togglePicker:\n this._context._display.widget\n .querySelectorAll(\n `.${Namespace.css.dateContainer}, .${Namespace.css.timeContainer}`\n )\n .forEach((htmlElement: HTMLElement) =>\n this.collapse.toggle(htmlElement)\n );\n if (\n currentTarget.getAttribute('title') ===\n this._context._options.localization.selectDate\n ) {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectTime\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.time\n ).outerHTML;\n\n this._context._display._updateCalendarHeader();\n } else {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectDate\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.date\n ).outerHTML;\n this.do(e, ActionTypes.showClock);\n this._context._display._update('clock');\n }\n break;\n case ActionTypes.showClock:\n case ActionTypes.showHours:\n case ActionTypes.showMinutes:\n case ActionTypes.showSeconds:\n this._context._display.widget\n .querySelectorAll(`.${Namespace.css.timeContainer} > div`)\n .forEach(\n (htmlElement: HTMLElement) => (htmlElement.style.display = 'none')\n );\n\n let classToUse = '';\n switch (action) {\n case ActionTypes.showClock:\n classToUse = Namespace.css.clockContainer;\n this._context._display._update('clock');\n break;\n case ActionTypes.showHours:\n classToUse = Namespace.css.hourContainer;\n this._context._display._update(Unit.hours);\n break;\n case ActionTypes.showMinutes:\n classToUse = Namespace.css.minuteContainer;\n this._context._display._update(Unit.minutes);\n break;\n case ActionTypes.showSeconds:\n classToUse = Namespace.css.secondContainer;\n this._context._display._update(Unit.seconds);\n break;\n }\n\n ((\n this._context._display.widget.getElementsByClassName(classToUse)[0]\n )).style.display = 'grid';\n break;\n case ActionTypes.clear:\n this._context.dates._setValue(null);\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.close:\n this._context._display.hide();\n break;\n case ActionTypes.today:\n const today = new DateTime().setLocale(\n this._context._options.localization.locale\n );\n this._context._viewDate = today;\n if (this._context._validation.isValid(today, Unit.date))\n this._context.dates._setValue(\n today,\n this._context.dates.lastPickedIndex\n );\n break;\n }\n }\n}\n\nexport enum ActionTypes {\n next = 'next',\n previous = 'previous',\n pickerSwitch = 'pickerSwitch',\n selectMonth = 'selectMonth',\n selectYear = 'selectYear',\n selectDecade = 'selectDecade',\n selectDay = 'selectDay',\n selectHour = 'selectHour',\n selectMinute = 'selectMinute',\n selectSecond = 'selectSecond',\n incrementHours = 'incrementHours',\n incrementMinutes = 'incrementMinutes',\n incrementSeconds = 'incrementSeconds',\n decrementHours = 'decrementHours',\n decrementMinutes = 'decrementMinutes',\n decrementSeconds = 'decrementSeconds',\n toggleMeridiem = 'toggleMeridiem',\n togglePicker = 'togglePicker',\n showClock = 'showClock',\n showHours = 'showHours',\n showMinutes = 'showMinutes',\n showSeconds = 'showSeconds',\n clear = 'clear',\n close = 'close',\n today = 'today',\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `date`\r\n */\r\nexport default class DateDisplay {\r\n private _context: TempusDominus;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.daysContainer);\r\n\r\n container.append(...this._daysOfTheWeek());\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(Namespace.css.calendarWeeks, Namespace.css.noHighlight);\r\n container.appendChild(div);\r\n }\r\n\r\n for (let i = 0; i < 42; i++) {\r\n if (i !== 0 && i % 7 === 0) {\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n container.appendChild(div);\r\n }\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDay);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update(): void {\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.daysContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.daysContainer,\r\n this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n })\r\n );\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(-1, Unit.month),\r\n Unit.month\r\n )\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(1, Unit.month),\r\n Unit.month\r\n )\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.month)\r\n .startOf('weekDay')\r\n .manipulate(12, Unit.hours);\r\n\r\n container\r\n .querySelectorAll(\r\n `[data-action=\"${ActionTypes.selectDay}\"], .${Namespace.css.calendarWeeks}`\r\n )\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (\r\n this._context._options.display.calendarWeeks &&\r\n containerClone.classList.contains(Namespace.css.calendarWeeks)\r\n ) {\r\n if (containerClone.innerText === '#') return;\r\n containerClone.innerText = `${innerDate.week}`;\r\n return;\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.day);\r\n\r\n if (innerDate.isBefore(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.old);\r\n }\r\n if (innerDate.isAfter(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.new);\r\n }\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.date)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.date)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n if (innerDate.isSame(new DateTime(), Unit.date)) {\r\n classes.push(Namespace.css.today);\r\n }\r\n if (innerDate.weekDay === 0 || innerDate.weekDay === 6) {\r\n classes.push(Namespace.css.weekend);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`\r\n );\r\n containerClone.setAttribute(\r\n 'data-day',\r\n `${innerDate.date}`\r\n );\r\n containerClone.innerText = innerDate.format({ day: \"numeric\" });\r\n innerDate.manipulate(1, Unit.date);\r\n });\r\n }\r\n\r\n /***\r\n * Generates an html row that contains the days of the week.\r\n * @private\r\n */\r\n private _daysOfTheWeek(): HTMLElement[] {\r\n let innerDate = this._context._viewDate.clone\r\n .startOf('weekDay')\r\n .startOf(Unit.date);\r\n const row = [];\r\n document.createElement('div');\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = '#';\r\n row.push(htmlDivElement);\r\n }\r\n\r\n for (let i = 0; i < 7; i++) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.dayOfTheWeek,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = innerDate.format({ weekday: 'short' });\r\n innerDate.manipulate(1, Unit.date);\r\n row.push(htmlDivElement);\r\n }\r\n\r\n return row;\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `month`\n */\nexport default class MonthDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.monthsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMonth);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.monthsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.monthsContainer,\n this._context._viewDate.format({ year: 'numeric' })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.year),\n Unit.year\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.year),\n Unit.year\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone.startOf(Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMonth}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.month);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.month)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.month)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${index}`);\n containerClone.innerText = `${innerDate.format({ month: 'short' })}`;\n innerDate.manipulate(1, Unit.month);\n });\n }\n}\n","import { DateTime, DateTimeFormatOptions } from './datetime';\nimport Namespace from './namespace';\nimport { DefaultOptions } from './conts';\nimport { TempusDominus } from './tempus-dominus';\n\nexport default interface Options {\n restrictions: {\n minDate: DateTime;\n maxDate: DateTime;\n enabledDates: DateTime[];\n disabledDates: DateTime[];\n enabledHours: number[];\n disabledHours: number[];\n disabledTimeIntervals: { from: DateTime; to: DateTime }[];\n daysOfWeekDisabled: number[];\n };\n display: {\n toolbarPlacement: 'top' | 'bottom';\n components: {\n calendar: boolean;\n date: boolean;\n month: boolean;\n year: boolean;\n decades: boolean;\n clock: boolean;\n hours: boolean;\n minutes: boolean;\n seconds: boolean;\n useTwentyfourHour: boolean;\n };\n buttons: { today: boolean; close: boolean; clear: boolean };\n calendarWeeks: boolean;\n icons: {\n date: string;\n next: string;\n previous: string;\n today: string;\n clear: string;\n time: string;\n up: string;\n type: 'icons' | 'sprites';\n down: string;\n close: string;\n };\n viewMode: 'clock' | 'calendar' | 'months' | 'years' | 'decades';\n sideBySide: boolean;\n inline: boolean;\n keepOpen: boolean;\n };\n stepping: number;\n useCurrent: boolean;\n defaultDate: DateTime;\n localization: {\n nextMonth: string;\n pickHour: string;\n incrementSecond: string;\n nextDecade: string;\n selectDecade: string;\n dayViewHeaderFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n decrementHour: string;\n selectDate: string;\n incrementHour: string;\n previousCentury: string;\n decrementSecond: string;\n today: string;\n previousMonth: string;\n selectYear: string;\n pickSecond: string;\n nextCentury: string;\n close: string;\n incrementMinute: string;\n selectTime: string;\n clear: string;\n toggleMeridiem: string;\n selectMonth: string;\n decrementMinute: string;\n pickMinute: string;\n nextYear: string;\n previousYear: string;\n previousDecade: string;\n locale: string;\n };\n keepInvalid: boolean;\n debug: boolean;\n allowInputToggle: boolean;\n viewDate: DateTime;\n multipleDates: boolean;\n multipleDatesSeparator: string;\n promptTimeOnDateChange: boolean;\n promptTimeOnDateChangeTransitionDelay: number;\n hooks: {\n inputParse: (context: TempusDominus, value: any) => DateTime;\n inputFormat: (context: TempusDominus, date: DateTime) => string;\n };\n}\n\nexport class OptionConverter {\n static _mergeOptions(providedOptions: Options, mergeTo: Options): Options {\n const newOptions = {} as Options;\n let path = '';\n const ignoreProperties = ['inputParse', 'inputFormat'];\n\n const processKey = (key, value, providedType, defaultType) => {\n switch (key) {\n case 'defaultDate': {\n const dateTime = this._dateConversion(value, 'defaultDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'defaultDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'viewDate': {\n const dateTime = this._dateConversion(value, 'viewDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'viewDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'minDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.minDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.minDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'maxDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.maxDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.maxDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'disabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.disabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.disabledHours',\n 0,\n 23\n );\n return value;\n case 'enabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.enabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.enabledHours',\n 0,\n 23\n );\n return value;\n case 'daysOfWeekDisabled':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.daysOfWeekDisabled',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 6).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.daysOfWeekDisabled',\n 0,\n 6\n );\n return value;\n case 'enabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.enabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.disabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledTimeIntervals':\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n key,\n providedType,\n 'array of { from: DateTime|Date, to: DateTime|Date }'\n );\n }\n const valueObject = value as { from: any; to: any }[];\n for (let i = 0; i < valueObject.length; i++) {\n Object.keys(valueObject[i]).forEach((vk) => {\n const subOptionName = `${key}[${i}].${vk}`;\n let d = valueObject[i][vk];\n const dateTime = this._dateConversion(d, subOptionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n subOptionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n valueObject[i][vk] = dateTime;\n });\n }\n return valueObject;\n case 'toolbarPlacement':\n case 'type':\n case 'viewMode':\n case 'dayViewHeaderFormat':\n const optionValues = {\n toolbarPlacement: ['top', 'bottom', 'default'],\n type: ['icons', 'sprites'],\n viewMode: ['clock', 'calendar', 'months', 'years', 'decades'],\n dayViewHeaderFormat: [\n 'numeric',\n '2-digit',\n 'long',\n 'short',\n 'narrow',\n ],\n };\n const keyOptions = optionValues[key];\n if (!keyOptions.includes(value))\n Namespace.errorMessages.unexpectedOptionValue(\n path.substring(1),\n value,\n keyOptions\n );\n\n return value;\n case 'inputParse':\n case 'inputFormat':\n return value;\n default:\n switch (defaultType) {\n case 'boolean':\n return value === 'true' || value === true;\n case 'number':\n return +value;\n case 'string':\n return value.toString();\n case 'object':\n return {};\n case 'function':\n return value;\n default:\n Namespace.errorMessages.typeMismatch(\n path.substring(1),\n providedType,\n defaultType\n );\n }\n }\n };\n\n /**\n * The spread operator caused sub keys to be missing after merging.\n * This is to fix that issue by using spread on the child objects first.\n * Also handles complex options like disabledDates\n * @param provided An option from new providedOptions\n * @param mergeOption Default option to compare types against\n * @param copyTo Destination object. This was add to prevent reference copies\n */\n const spread = (provided, mergeOption, copyTo) => {\n const unsupportedOptions = Object.keys(provided).filter(\n (x) => !Object.keys(mergeOption).includes(x)\n );\n if (unsupportedOptions.length > 0) {\n const flattenedOptions = OptionConverter._flattenDefaultOptions;\n\n const errors = unsupportedOptions.map((x) => {\n let error = `\"${path.substring(1)}.${x}\" in not a known option.`;\n let didYouMean = flattenedOptions.find((y) => y.includes(x));\n if (didYouMean) error += `Did you mean \"${didYouMean}\"?`;\n return error;\n });\n Namespace.errorMessages.unexpectedOptions(errors);\n }\n Object.keys(mergeOption).forEach((key) => {\n const defaultOptionValue = mergeOption[key];\n let providedType = typeof provided[key];\n let defaultType = typeof defaultOptionValue;\n let value = provided[key];\n if (!provided.hasOwnProperty(key)) {\n if (\n defaultType === 'undefined' ||\n (value?.length === 0 && Array.isArray(defaultOptionValue))\n ) {\n copyTo[key] = defaultOptionValue;\n return;\n }\n provided[key] = defaultOptionValue;\n value = provided[key];\n }\n path += `.${key}`;\n copyTo[key] = processKey(key, value, providedType, defaultType);\n\n if (\n typeof defaultOptionValue !== 'object' ||\n ignoreProperties.includes(key)\n ) {\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n return;\n }\n if (!Array.isArray(provided[key])) {\n spread(provided[key], defaultOptionValue, copyTo[key]);\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n }\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n });\n };\n spread(providedOptions, mergeTo, newOptions);\n\n return newOptions;\n }\n\n static _dataToOptions(element, options: Options): Options {\n const eData = element.dataset;\n if (\n !eData ||\n Object.keys(eData).length === 0 ||\n eData.constructor !== DOMStringMap\n )\n return options;\n let dataOptions = {} as Options;\n\n // because dataset returns camelCase including the 'td' key the option\n // key won't align\n const objectToNormalized = (object) => {\n const lowered = {};\n Object.keys(object).forEach((x) => {\n lowered[x.toLowerCase()] = x;\n });\n\n return lowered;\n };\n\n const rabbitHole = (\n split: string[],\n index: number,\n optionSubgroup: {},\n value: any\n ) => {\n // first round = display { ... }\n const normalizedOptions = objectToNormalized(optionSubgroup);\n\n const keyOption = normalizedOptions[split[index].toLowerCase()];\n const internalObject = {};\n\n if (keyOption === undefined) return internalObject;\n\n // if this is another object, continue down the rabbit hole\n if (optionSubgroup[keyOption].constructor === Object) {\n index++;\n internalObject[keyOption] = rabbitHole(\n split,\n index,\n optionSubgroup[keyOption],\n value\n );\n } else {\n internalObject[keyOption] = value;\n }\n return internalObject;\n };\n const optionsLower = objectToNormalized(options);\n\n Object.keys(eData)\n .filter((x) => x.startsWith(Namespace.dataKey))\n .map((x) => x.substring(2))\n .forEach((key) => {\n let keyOption = optionsLower[key.toLowerCase()];\n\n // dataset merges dashes to camelCase... yay\n // i.e. key = display_components_seconds\n if (key.includes('_')) {\n // [display, components, seconds]\n const split = key.split('_');\n // display\n keyOption = optionsLower[split[0].toLowerCase()];\n if (\n keyOption !== undefined &&\n options[keyOption].constructor === Object\n ) {\n dataOptions[keyOption] = rabbitHole(\n split,\n 1,\n options[keyOption],\n eData[`td${key}`]\n );\n }\n }\n // or key = multipleDate\n else if (keyOption !== undefined) {\n dataOptions[keyOption] = eData[`td${key}`];\n }\n });\n\n return this._mergeOptions(dataOptions, options);\n }\n\n /**\n * Attempts to prove `d` is a DateTime or Date or can be converted into one.\n * @param d If a string will attempt creating a date from it.\n * @private\n */\n static _dateTypeCheck(d: any): DateTime | null {\n if (d.constructor.name === DateTime.name) return d;\n if (d.constructor.name === Date.name) {\n return DateTime.convert(d);\n }\n if (typeof d === typeof '') {\n const dateTime = new DateTime(d);\n if (JSON.stringify(dateTime) === 'null') {\n return null;\n }\n return dateTime;\n }\n return null;\n }\n\n /**\n * Type checks that `value` is an array of Date or DateTime\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckDateArray(optionName: string, value, providedType: string) {\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of DateTime or Date'\n );\n }\n for (let i = 0; i < value.length; i++) {\n let d = value[i];\n const dateTime = this._dateConversion(d, optionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n value[i] = dateTime;\n }\n }\n\n /**\n * Type checks that `value` is an array of numbers\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckNumberArray(\n optionName: string,\n value,\n providedType: string\n ) {\n if (!Array.isArray(value) || value.find((x) => typeof x !== typeof 0)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of numbers'\n );\n }\n return;\n }\n\n /**\n * Attempts to convert `d` to a DateTime object\n * @param d value to convert\n * @param optionName Provides text to error messages e.g. disabledDates\n */\n static _dateConversion(d: any, optionName: string) {\n if (typeof d === typeof '' && optionName !== 'input') {\n Namespace.errorMessages.dateString();\n }\n\n const converted = this._dateTypeCheck(d);\n\n if (!converted) {\n Namespace.errorMessages.failedToParseDate(\n optionName,\n d,\n optionName === 'input'\n );\n }\n return converted;\n }\n\n private static _flatback: string[];\n\n private static get _flattenDefaultOptions(): string[] {\n if (this._flatback) return this._flatback;\n const deepKeys = (t, pre = []) =>\n Array.isArray(t)\n ? []\n : Object(t) === t\n ? Object.entries(t).flatMap(([k, v]) => deepKeys(v, [...pre, k]))\n : pre.join('.');\n\n this._flatback = deepKeys(DefaultOptions);\n\n return this._flatback;\n }\n\n /**\n * Some options conflict like min/max date. Verify that these kinds of options\n * are set correctly.\n * @param config\n */\n static _validateConflcits(config: Options) {\n if (config.restrictions.minDate && config.restrictions.maxDate) {\n if (config.restrictions.minDate.isAfter(config.restrictions.maxDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'minDate is after maxDate'\n );\n }\n\n if (config.restrictions.maxDate.isBefore(config.restrictions.minDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'maxDate is before minDate'\n );\n }\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport { ChangeEvent, FailEvent } from './event-types';\nimport { OptionConverter } from './options';\n\nexport default class Dates {\n private _dates: DateTime[] = [];\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Returns the array of selected dates\n */\n get picked(): DateTime[] {\n return this._dates;\n }\n\n /**\n * Returns the last picked value.\n */\n get lastPicked(): DateTime {\n return this._dates[this.lastPickedIndex];\n }\n\n /**\n * Returns the length of picked dates -1 or 0 if none are selected.\n */\n get lastPickedIndex(): number {\n if (this._dates.length === 0) return 0;\n return this._dates.length - 1;\n }\n\n /**\n * Adds a new DateTime to selected dates array\n * @param date\n */\n add(date: DateTime): void {\n this._dates.push(date);\n }\n\n /**\n * Tries to convert the provided value to a DateTime object.\n * If value is null|undefined then clear the value of the provided index (or 0).\n * @param value Value to convert or null|undefined\n * @param index When using multidates this is the index in the array\n * @param from Used in the warning message, useful for debugging.\n */\n set(value: any, index?: number, from: string = 'date.set') {\n if (!value) this._setValue(value, index);\n const converted = OptionConverter._dateConversion(value, from);\n if (converted) this._setValue(converted, index);\n }\n\n /**\n * Returns true if the `targetDate` is part of the selected dates array.\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n isPicked(targetDate: DateTime, unit?: Unit): boolean {\n if (!unit) return this._dates.find((x) => x === targetDate) !== undefined;\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return (\n this._dates\n .map((x) => x.format(format))\n .find((x) => x === innerDateFormatted) !== undefined\n );\n }\n\n /**\n * Returns the index at which `targetDate` is in the array.\n * This is used for updating or removing a date when multi-date is used\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n pickedIndex(targetDate: DateTime, unit?: Unit): number {\n if (!unit) return this._dates.indexOf(targetDate);\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return this._dates.map((x) => x.format(format)).indexOf(innerDateFormatted);\n }\n\n /**\n * Clears all selected dates.\n */\n clear() {\n this._context._unset = true;\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate: this.lastPicked,\n isClear: true,\n isValid: true,\n } as ChangeEvent);\n this._dates = [];\n }\n\n /**\n * Find the \"book end\" years given a `year` and a `factor`\n * @param factor e.g. 100 for decades\n * @param year e.g. 2021\n */\n static getStartEndYear(\n factor: number,\n year: number\n ): [number, number, number] {\n const step = factor / 10,\n startYear = Math.floor(year / factor) * factor,\n endYear = startYear + step * 9,\n focusValue = Math.floor(year / step) * step;\n return [startYear, endYear, focusValue];\n }\n\n /**\n * Do not use direectly. Attempts to either clear or set the `target` date at `index`.\n * If the `target` is null then the date will be cleared.\n * If multi-date is being used then it will be removed from the array.\n * If `target` is valid and multi-date is used then if `index` is\n * provided the date at that index will be replaced, otherwise it is appended.\n * @param target\n * @param index\n */\n _setValue(target?: DateTime, index?: number): void {\n const noIndex = typeof index === 'undefined',\n isClear = !target && noIndex;\n let oldDate = this._context._unset ? null : this._dates[index];\n if (!oldDate && !this._context._unset && noIndex && isClear) {\n oldDate = this.lastPicked;\n }\n\n const updateInput = () => {\n if (!this._context._input) return;\n\n let newValue = this._context._options.hooks.inputFormat(\n this._context,\n target\n );\n if (this._context._options.multipleDates) {\n newValue = this._dates\n .map((d) =>\n this._context._options.hooks.inputFormat(this._context, d)\n )\n .join(this._context._options.multipleDatesSeparator);\n }\n if (this._context._input.value != newValue)\n this._context._input.value = newValue;\n };\n\n if (target && oldDate?.isSame(target)) {\n updateInput();\n return;\n }\n\n // case of calling setValue(null)\n if (!target) {\n if (\n !this._context._options.multipleDates ||\n this._dates.length === 1 ||\n isClear\n ) {\n this._context._unset = true;\n this._dates = [];\n } else {\n this._dates.splice(index, 1);\n }\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n\n updateInput();\n this._context._display._update('all');\n return;\n }\n\n index = index || 0;\n target = target.clone;\n\n // minute stepping is being used, force the minute to the closest value\n if (this._context._options.stepping !== 1) {\n target.minutes =\n Math.round(target.minutes / this._context._options.stepping) *\n this._context._options.stepping;\n target.seconds = 0;\n }\n\n if (this._context._validation.isValid(target)) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._unset = false;\n this._context._display._update('all');\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n return;\n }\n\n if (this._context._options.keepInvalid) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: false,\n } as ChangeEvent);\n }\n this._context._triggerEvent({\n type: Namespace.events.error,\n reason: Namespace.errorMessages.failedToSetInvalidDate,\n date: target,\n oldDate,\n } as FailEvent);\n }\n\n /**\n * Returns a format object based on the granularity of `unit`\n * @param unit\n */\n static getFormatByUnit(unit: Unit): object {\n switch (unit) {\n case 'date':\n return { dateStyle: 'short' };\n case 'month':\n return {\n month: 'numeric',\n year: 'numeric',\n };\n case 'year':\n return { year: 'numeric' };\n }\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\nimport Dates from '../../dates';\r\n\r\n/**\r\n * Creates and updates the grid for `year`\r\n */\r\nexport default class YearDisplay {\r\n private _context: TempusDominus;\r\n private _startYear: DateTime;\r\n private _endYear: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.yearsContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectYear);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 10,\r\n this._context._viewDate.year\r\n );\r\n this._startYear = this._context._viewDate.clone.manipulate(-1, Unit.year);\r\n this._endYear = this._context._viewDate.clone.manipulate(10, Unit.year);\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.yearsContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.yearsContainer,\r\n `${this._startYear.format({ year: 'numeric' })}-${this._endYear.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startYear, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endYear, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.year)\r\n .manipulate(-1, Unit.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectYear}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n let classes = [];\r\n classes.push(Namespace.css.year);\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.year)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.year)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute('data-value', `${innerDate.year}`);\r\n containerClone.innerText = innerDate.format({ year: \"numeric\" });\r\n\r\n innerDate.manipulate(1, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport Dates from '../../dates';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `seconds`\r\n */\r\nexport default class DecadeDisplay {\r\n private _context: TempusDominus;\r\n private _startDecade: DateTime;\r\n private _endDecade: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker() {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.decadesContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDecade);\r\n container.appendChild(div);\r\n }\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 100,\r\n this._context._viewDate.year\r\n );\r\n this._startDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._startDecade.year = start;\r\n this._endDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._endDecade.year = end;\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.decadesContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.decadesContainer,\r\n `${this._startDecade.format({ year: 'numeric' })}-${this._endDecade.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startDecade, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endDecade, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n const pickedYears = this._context.dates.picked.map((x) => x.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectDecade}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (index === 0) {\r\n containerClone.classList.add(Namespace.css.old);\r\n if (this._startDecade.year - 10 < 0) {\r\n containerClone.textContent = ' ';\r\n previous.classList.add(Namespace.css.disabled);\r\n containerClone.classList.add(Namespace.css.disabled);\r\n containerClone.setAttribute('data-value', ``);\r\n return;\r\n } else {\r\n containerClone.innerText = this._startDecade.clone.manipulate(-10, Unit.year).format({ year: 'numeric' });\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n return;\r\n }\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.decade);\r\n const startDecadeYear = this._startDecade.year;\r\n const endDecadeYear = this._startDecade.year + 9;\r\n\r\n if (\r\n !this._context._unset &&\r\n pickedYears.filter((x) => x >= startDecadeYear && x <= endDecadeYear)\r\n .length > 0\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n containerClone.innerText = `${this._startDecade.format({ year: 'numeric' })}`;\r\n\r\n this._startDecade.manipulate(10, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates the clock display\n */\nexport default class TimeDisplay {\n private _context: TempusDominus;\n private _gridColumns = '';\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the clock display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.clockContainer);\n\n container.append(...this._grid());\n\n return container;\n }\n\n /**\n * Populates the various elements with in the clock display\n * like the current hour and if the manipulation icons are enabled.\n * @private\n */\n _update(): void {\n const timesDiv = (\n this._context._display.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0]\n );\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n timesDiv\n .querySelectorAll('.disabled')\n .forEach((element) => element.classList.remove(Namespace.css.disabled));\n\n if (this._context._options.display.components.hours) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.hours}]`\n ).innerText = this._context._options.display.components.useTwentyfourHour\n ? lastPicked.hoursFormatted\n : lastPicked.twelveHoursFormatted;\n }\n\n if (this._context._options.display.components.minutes) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.minutes}]`\n ).innerText = lastPicked.minutesFormatted;\n }\n\n if (this._context._options.display.components.seconds) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.seconds}]`\n ).innerText = lastPicked.secondsFormatted;\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n const toggle = timesDiv.querySelector(\n `[data-action=${ActionTypes.toggleMeridiem}]`\n );\n\n toggle.innerText = lastPicked.meridiem();\n\n if (\n !this._context._validation.isValid(\n lastPicked.clone.manipulate(\n lastPicked.hours >= 12 ? -12 : 12,\n Unit.hours\n )\n )\n ) {\n toggle.classList.add(Namespace.css.disabled);\n } else {\n toggle.classList.remove(Namespace.css.disabled);\n }\n }\n\n timesDiv.style.gridTemplateAreas = `\"${this._gridColumns}\"`;\n }\n\n /**\n * Creates the table for the clock display depending on what options are selected.\n * @private\n */\n private _grid(): HTMLElement[] {\n this._gridColumns = '';\n const top = [],\n middle = [],\n bottom = [],\n separator = document.createElement('div'),\n upIcon = this._context._display._iconTag(\n this._context._options.display.icons.up\n ),\n downIcon = this._context._display._iconTag(\n this._context._options.display.icons.down\n );\n\n separator.classList.add(Namespace.css.separator, Namespace.css.noHighlight);\n const separatorColon = separator.cloneNode(true);\n separatorColon.innerHTML = ':';\n\n const getSeparator = (colon = false): HTMLElement => {\n return colon\n ? separatorColon.cloneNode(true)\n : separator.cloneNode(true);\n };\n\n if (this._context._options.display.components.hours) {\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.incrementHours);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickHour\n );\n divElement.setAttribute('data-action', ActionTypes.showHours);\n divElement.setAttribute('data-time-component', Unit.hours);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.decrementHours);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n this._gridColumns += 'a';\n }\n\n if (this._context._options.display.components.minutes) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.hours) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.incrementMinutes);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickMinute\n );\n divElement.setAttribute('data-action', ActionTypes.showMinutes);\n divElement.setAttribute('data-time-component', Unit.minutes);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.decrementMinutes);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (this._context._options.display.components.seconds) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.minutes) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.incrementSeconds);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickSecond\n );\n divElement.setAttribute('data-action', ActionTypes.showSeconds);\n divElement.setAttribute('data-time-component', Unit.seconds);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.decrementSeconds);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n this._gridColumns += ' a';\n let divElement = getSeparator();\n top.push(divElement);\n\n let button = document.createElement('button');\n button.setAttribute(\n 'title',\n this._context._options.localization.toggleMeridiem\n );\n button.setAttribute('data-action', ActionTypes.toggleMeridiem);\n button.setAttribute('tabindex', '-1');\n button.classList.add(Namespace.css.toggleMeridiem);\n\n divElement = document.createElement('div');\n divElement.classList.add(Namespace.css.noHighlight);\n divElement.appendChild(button);\n middle.push(divElement);\n\n divElement = getSeparator();\n bottom.push(divElement);\n }\n\n this._gridColumns = this._gridColumns.trim();\n\n return [...top, ...middle, ...bottom];\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `hours`\n */\nexport default class HourDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.hourContainer);\n\n for (\n let i = 0;\n i <\n (this._context._options.display.components.useTwentyfourHour ? 24 : 12);\n i++\n ) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectHour);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.hourContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.date);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectHour}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.hour);\n\n if (!this._context._validation.isValid(innerDate, Unit.hours)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.hours}`);\n containerClone.innerText = this._context._options.display.components\n .useTwentyfourHour\n ? innerDate.hoursFormatted\n : innerDate.twelveHoursFormatted;\n innerDate.manipulate(1, Unit.hours);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `minutes`\n */\nexport default class MinuteDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.minuteContainer);\n\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n for (let i = 0; i < 60 / step; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMinute);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.minuteContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.hours);\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMinute}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.minute);\n\n if (!this._context._validation.isValid(innerDate, Unit.minutes)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.minutes}`);\n containerClone.innerText = innerDate.minutesFormatted;\n innerDate.manipulate(step, Unit.minutes);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class secondDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.secondContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectSecond);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.secondContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.minutes);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectSecond}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.second);\n\n if (!this._context._validation.isValid(innerDate, Unit.seconds)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.seconds}`);\n containerClone.innerText = innerDate.secondsFormatted;\n innerDate.manipulate(5, Unit.seconds);\n });\n }\n}\n","import DateDisplay from './calendar/date-display';\nimport MonthDisplay from './calendar/month-display';\nimport YearDisplay from './calendar/year-display';\nimport DecadeDisplay from './calendar/decade-display';\nimport TimeDisplay from './time/time-display';\nimport HourDisplay from './time/hour-display';\nimport MinuteDisplay from './time/minute-display';\nimport SecondDisplay from './time/second-display';\nimport { DateTime, Unit } from '../datetime';\nimport { DatePickerModes } from '../conts';\nimport { TempusDominus } from '../tempus-dominus';\nimport { ActionTypes } from '../actions';\nimport { createPopper } from '@popperjs/core';\nimport Namespace from '../namespace';\nimport { HideEvent } from '../event-types';\n\n/**\n * Main class for all things display related.\n */\nexport default class Display {\n private _context: TempusDominus;\n private _dateDisplay: DateDisplay;\n private _monthDisplay: MonthDisplay;\n private _yearDisplay: YearDisplay;\n private _decadeDisplay: DecadeDisplay;\n private _timeDisplay: TimeDisplay;\n private _widget: HTMLElement;\n private _hourDisplay: HourDisplay;\n private _minuteDisplay: MinuteDisplay;\n private _secondDisplay: SecondDisplay;\n private _popperInstance: any;\n private _isVisible = false;\n\n constructor(context: TempusDominus) {\n this._context = context;\n this._dateDisplay = new DateDisplay(context);\n this._monthDisplay = new MonthDisplay(context);\n this._yearDisplay = new YearDisplay(context);\n this._decadeDisplay = new DecadeDisplay(context);\n this._timeDisplay = new TimeDisplay(context);\n this._hourDisplay = new HourDisplay(context);\n this._minuteDisplay = new MinuteDisplay(context);\n this._secondDisplay = new SecondDisplay(context);\n\n this._widget = undefined;\n }\n\n /**\n * Returns the widget body or undefined\n * @private\n */\n get widget(): HTMLElement | undefined {\n return this._widget;\n }\n\n /**\n * Returns this visible state of the picker (shown)\n */\n get isVisible() {\n return this._isVisible;\n }\n\n /**\n * Updates the table for a particular unit. Used when an option as changed or\n * whenever the class list might need to be refreshed.\n * @param unit\n * @private\n */\n _update(unit: Unit | 'clock' | 'calendar' | 'all'): void {\n if (!this.widget) return;\n //todo do I want some kind of error catching or other guards here?\n switch (unit) {\n case Unit.seconds:\n this._secondDisplay._update();\n break;\n case Unit.minutes:\n this._minuteDisplay._update();\n break;\n case Unit.hours:\n this._hourDisplay._update();\n break;\n case Unit.date:\n this._dateDisplay._update();\n break;\n case Unit.month:\n this._monthDisplay._update();\n break;\n case Unit.year:\n this._yearDisplay._update();\n break;\n case 'clock':\n this._timeDisplay._update();\n this._update(Unit.hours);\n this._update(Unit.minutes);\n this._update(Unit.seconds);\n break;\n case 'calendar':\n this._update(Unit.date);\n this._update(Unit.year);\n this._update(Unit.month);\n this._decadeDisplay._update();\n this._updateCalendarHeader();\n break;\n case 'all':\n if (this._hasTime) {\n this._update('clock');\n }\n if (this._hasDate) {\n this._update('calendar');\n }\n }\n }\n\n /**\n * Shows the picker and creates a Popper instance if needed.\n * Add document click event to hide when clicking outside the picker.\n * @fires Events#show\n */\n show(): void {\n if (this.widget == undefined) {\n if (\n this._context._options.useCurrent &&\n !this._context._options.defaultDate &&\n !this._context._input?.value\n ) {\n //todo in the td4 branch a pr changed this to allow granularity\n const date = new DateTime().setLocale(\n this._context._options.localization.locale\n );\n if (!this._context._options.keepInvalid) {\n let tries = 0;\n let direction = 1;\n if (this._context._options.restrictions.maxDate?.isBefore(date)) {\n direction = -1;\n }\n while (!this._context._validation.isValid(date)) {\n date.manipulate(direction, Unit.date);\n if (tries > 31) break;\n tries++;\n }\n }\n this._context.dates._setValue(date);\n }\n\n if (this._context._options.defaultDate) {\n this._context.dates._setValue(this._context._options.defaultDate);\n }\n\n this._buildWidget();\n if (this._hasDate) {\n this._showMode();\n }\n\n if (!this._context._options.display.inline) {\n document.body.appendChild(this.widget);\n\n this._popperInstance = createPopper(\n this._context._element,\n this.widget,\n {\n modifiers: [{ name: 'eventListeners', enabled: true }],\n //#2400\n placement:\n document.documentElement.dir === 'rtl'\n ? 'bottom-end'\n : 'bottom-start',\n }\n );\n } else {\n this._context._element.appendChild(this.widget);\n }\n\n if (this._context._options.display.viewMode == 'clock') {\n this._context._action.do(\n {\n currentTarget: this.widget.querySelector(\n `.${Namespace.css.timeContainer}`\n ),\n },\n ActionTypes.showClock\n );\n }\n\n this.widget\n .querySelectorAll('[data-action]')\n .forEach((element) =>\n element.addEventListener('click', this._actionsClickEvent)\n );\n\n // show the clock when using sideBySide\n if (this._context._options.display.sideBySide) {\n this._timeDisplay._update();\n (\n this.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0] as HTMLElement\n ).style.display = 'grid';\n }\n }\n\n this.widget.classList.add(Namespace.css.show);\n if (!this._context._options.display.inline) {\n this._popperInstance.update();\n document.addEventListener('click', this._documentClickEvent);\n }\n this._context._triggerEvent({ type: Namespace.events.show });\n this._isVisible = true;\n }\n\n /**\n * Changes the calendar view mode. E.g. month <-> year\n * @param direction -/+ number to move currentViewMode\n * @private\n */\n _showMode(direction?: number): void {\n if (!this.widget) {\n return;\n }\n if (direction) {\n const max = Math.max(\n this._context._minViewModeNumber,\n Math.min(3, this._context._currentViewMode + direction)\n );\n if (this._context._currentViewMode == max) return;\n this._context._currentViewMode = max;\n }\n\n this.widget\n .querySelectorAll(\n `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div:not(.${Namespace.css.clockContainer})`\n )\n .forEach((e: HTMLElement) => (e.style.display = 'none'));\n\n const datePickerMode = DatePickerModes[this._context._currentViewMode];\n let picker: HTMLElement = this.widget.querySelector(\n `.${datePickerMode.className}`\n );\n\n switch (datePickerMode.className) {\n case Namespace.css.decadesContainer:\n this._decadeDisplay._update();\n break;\n case Namespace.css.yearsContainer:\n this._yearDisplay._update();\n break;\n case Namespace.css.monthsContainer:\n this._monthDisplay._update();\n break;\n case Namespace.css.daysContainer:\n this._dateDisplay._update();\n break;\n }\n\n picker.style.display = 'grid';\n this._updateCalendarHeader();\n }\n\n _updateCalendarHeader() {\n const showing = [\n ...this.widget.querySelector(\n `.${Namespace.css.dateContainer} div[style*=\"display: grid\"]`\n ).classList,\n ].find((x) => x.startsWith(Namespace.css.dateContainer));\n\n const [previous, switcher, next] = this._context._display.widget\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switch (showing) {\n case Namespace.css.decadesContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousCentury\n );\n switcher.setAttribute('title', '');\n next.setAttribute(\n 'title',\n this._context._options.localization.nextCentury\n );\n break;\n case Namespace.css.yearsContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousDecade\n );\n switcher.setAttribute(\n 'title',\n this._context._options.localization.selectDecade\n );\n next.setAttribute(\n 'title',\n this._context._options.localization.nextDecade\n );\n break;\n case Namespace.css.monthsContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousYear\n );\n switcher.setAttribute(\n 'title',\n this._context._options.localization.selectYear\n );\n next.setAttribute(\n 'title',\n this._context._options.localization.nextYear\n );\n break;\n case Namespace.css.daysContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousMonth\n );\n switcher.setAttribute(\n 'title',\n this._context._options.localization.selectMonth\n );\n next.setAttribute(\n 'title',\n this._context._options.localization.nextMonth\n );\n switcher.innerText = this._context._viewDate.format({\n month: this._context._options.localization.dayViewHeaderFormat,\n });\n break;\n }\n switcher.innerText = switcher.getAttribute(showing);\n }\n\n /**\n * Hides the picker if needed.\n * Remove document click event to hide when clicking outside the picker.\n * @fires Events#hide\n */\n hide(): void {\n if (!this.widget || !this._isVisible) return;\n\n this.widget.classList.remove(Namespace.css.show);\n\n if (this._isVisible) {\n this._context._triggerEvent({\n type: Namespace.events.hide,\n date: this._context._unset\n ? null\n : this._context.dates.lastPicked\n ? this._context.dates.lastPicked.clone\n : void 0,\n } as HideEvent);\n this._isVisible = false;\n }\n\n document.removeEventListener('click', this._documentClickEvent);\n }\n\n /**\n * Toggles the picker's open state. Fires a show/hide event depending.\n */\n toggle() {\n return this._isVisible ? this.hide() : this.show();\n }\n\n /**\n * Removes document and data-action click listener and reset the widget\n * @private\n */\n _dispose() {\n document.removeEventListener('click', this._documentClickEvent);\n if (!this.widget) return;\n this.widget\n .querySelectorAll('[data-action]')\n .forEach((element) =>\n element.removeEventListener('click', this._actionsClickEvent)\n );\n this.widget.parentNode.removeChild(this.widget);\n this._widget = undefined;\n }\n\n /**\n * Builds the widgets html template.\n * @private\n */\n private _buildWidget(): HTMLElement {\n const template = document.createElement('div');\n template.classList.add(Namespace.css.widget);\n\n const dateView = document.createElement('div');\n dateView.classList.add(Namespace.css.dateContainer);\n dateView.append(\n this._headTemplate,\n this._decadeDisplay._picker,\n this._yearDisplay._picker,\n this._monthDisplay._picker,\n this._dateDisplay._picker\n );\n\n const timeView = document.createElement('div');\n timeView.classList.add(Namespace.css.timeContainer);\n timeView.appendChild(this._timeDisplay._picker);\n timeView.appendChild(this._hourDisplay._picker);\n timeView.appendChild(this._minuteDisplay._picker);\n timeView.appendChild(this._secondDisplay._picker);\n\n const toolbar = document.createElement('div');\n toolbar.classList.add(Namespace.css.toolbar);\n toolbar.append(...this._toolbar);\n\n if (this._context._options.display.inline) {\n template.classList.add(Namespace.css.inline);\n }\n\n if (this._context._options.display.calendarWeeks) {\n template.classList.add('calendarWeeks');\n }\n\n if (\n this._context._options.display.sideBySide &&\n this._hasDate &&\n this._hasTime\n ) {\n template.classList.add(Namespace.css.sideBySide);\n if (this._context._options.display.toolbarPlacement === 'top') {\n template.appendChild(toolbar);\n }\n const row = document.createElement('div');\n row.classList.add('td-row');\n dateView.classList.add('td-half');\n timeView.classList.add('td-half');\n\n row.appendChild(dateView);\n row.appendChild(timeView);\n template.appendChild(row);\n if (this._context._options.display.toolbarPlacement === 'bottom') {\n template.appendChild(toolbar);\n }\n this._widget = template;\n return;\n }\n\n if (this._context._options.display.toolbarPlacement === 'top') {\n template.appendChild(toolbar);\n }\n\n if (this._hasDate) {\n if (this._hasTime) {\n dateView.classList.add(Namespace.css.collapse);\n if (this._context._options.display.viewMode !== 'clock')\n dateView.classList.add(Namespace.css.show);\n }\n template.appendChild(dateView);\n }\n\n if (this._hasTime) {\n if (this._hasDate) {\n timeView.classList.add(Namespace.css.collapse);\n if (this._context._options.display.viewMode === 'clock')\n timeView.classList.add(Namespace.css.show);\n }\n template.appendChild(timeView);\n }\n\n if (this._context._options.display.toolbarPlacement === 'bottom') {\n template.appendChild(toolbar);\n }\n\n const arrow = document.createElement('div');\n arrow.classList.add('arrow');\n arrow.setAttribute('data-popper-arrow', '');\n template.appendChild(arrow);\n\n this._widget = template;\n }\n\n /**\n * Returns true if the hours, minutes, or seconds component is turned on\n */\n get _hasTime(): boolean {\n return (\n this._context._options.display.components.clock &&\n (this._context._options.display.components.hours ||\n this._context._options.display.components.minutes ||\n this._context._options.display.components.seconds)\n );\n }\n\n /**\n * Returns true if the year, month, or date component is turned on\n */\n get _hasDate(): boolean {\n return (\n this._context._options.display.components.calendar &&\n (this._context._options.display.components.year ||\n this._context._options.display.components.month ||\n this._context._options.display.components.date)\n );\n }\n\n /**\n * Get the toolbar html based on options like buttons.today\n * @private\n */\n get _toolbar(): HTMLElement[] {\n const toolbar = [];\n\n if (this._context._options.display.buttons.today) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.today);\n div.setAttribute('title', this._context._options.localization.today);\n\n div.appendChild(\n this._iconTag(this._context._options.display.icons.today)\n );\n toolbar.push(div);\n }\n if (\n !this._context._options.display.sideBySide &&\n this._hasDate &&\n this._hasTime\n ) {\n let title, icon;\n if (this._context._options.display.viewMode === 'clock') {\n title = this._context._options.localization.selectDate;\n icon = this._context._options.display.icons.date;\n } else {\n title = this._context._options.localization.selectTime;\n icon = this._context._options.display.icons.time;\n }\n\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.togglePicker);\n div.setAttribute('title', title);\n\n div.appendChild(this._iconTag(icon));\n toolbar.push(div);\n }\n if (this._context._options.display.buttons.clear) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.clear);\n div.setAttribute('title', this._context._options.localization.clear);\n\n div.appendChild(\n this._iconTag(this._context._options.display.icons.clear)\n );\n toolbar.push(div);\n }\n if (this._context._options.display.buttons.close) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.close);\n div.setAttribute('title', this._context._options.localization.close);\n\n div.appendChild(\n this._iconTag(this._context._options.display.icons.close)\n );\n toolbar.push(div);\n }\n\n return toolbar;\n }\n\n /***\n * Builds the base header template with next and previous icons\n * @private\n */\n get _headTemplate(): HTMLElement {\n const calendarHeader = document.createElement('div');\n calendarHeader.classList.add(Namespace.css.calendarHeader);\n\n const previous = document.createElement('div');\n previous.classList.add(Namespace.css.previous);\n previous.setAttribute('data-action', ActionTypes.previous);\n previous.appendChild(\n this._iconTag(this._context._options.display.icons.previous)\n );\n\n const switcher = document.createElement('div');\n switcher.classList.add(Namespace.css.switch);\n switcher.setAttribute('data-action', ActionTypes.pickerSwitch);\n\n const next = document.createElement('div');\n next.classList.add(Namespace.css.next);\n next.setAttribute('data-action', ActionTypes.next);\n next.appendChild(this._iconTag(this._context._options.display.icons.next));\n\n calendarHeader.append(previous, switcher, next);\n return calendarHeader;\n }\n\n /**\n * Builds an icon tag as either an ``\n * or with icons.type is `sprites` then an svg tag instead\n * @param iconClass\n * @private\n */\n _iconTag(iconClass: string): HTMLElement {\n if (this._context._options.display.icons.type === 'sprites') {\n const svg = document.createElement('svg');\n svg.innerHTML = ``;\n return svg;\n }\n const icon = document.createElement('i');\n DOMTokenList.prototype.add.apply(icon.classList, iconClass.split(' '));\n return icon;\n }\n\n /**\n * A document click event to hide the widget if click is outside\n * @private\n * @param e MouseEvent\n */\n private _documentClickEvent = (e: MouseEvent) => {\n if (this._context._options.debug || (window as any).debug) return;\n\n if (\n this._isVisible &&\n !e.composedPath().includes(this.widget) && // click inside the widget\n !e.composedPath()?.includes(this._context._element) // click on the element\n ) {\n this.hide();\n }\n };\n\n /**\n * Click event for any action like selecting a date\n * @param e MouseEvent\n * @private\n */\n private _actionsClickEvent = (e: MouseEvent) => {\n this._context._action.do(e);\n };\n\n /**\n * Causes the widget to get rebuilt on next show. If the picker is already open\n * then hide and reshow it.\n * @private\n */\n _rebuild() {\n const wasVisible = this._isVisible;\n if (wasVisible) this.hide();\n this._dispose();\n if (wasVisible) {\n this.show();\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Dates from './dates';\n\n/**\n * Main class for date validation rules based on the options provided.\n */\nexport default class Validation {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Checks to see if the target date is valid based on the rules provided in the options.\n * Granularity can be provide to chek portions of the date instead of the whole.\n * @param targetDate\n * @param granularity\n */\n isValid(targetDate: DateTime, granularity?: Unit): boolean {\n if (\n this._context._options.restrictions.disabledDates.length > 0 &&\n this._isInDisabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledDates.length > 0 &&\n !this._isInEnabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.daysOfWeekDisabled?.length > 0 &&\n this._context._options.restrictions.daysOfWeekDisabled.indexOf(\n targetDate.weekDay\n ) !== -1\n ) {\n return false;\n }\n\n if (\n this._context._options.restrictions.minDate &&\n targetDate.isBefore(\n this._context._options.restrictions.minDate,\n granularity\n )\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.maxDate &&\n targetDate.isAfter(\n this._context._options.restrictions.maxDate,\n granularity\n )\n ) {\n return false;\n }\n\n if (\n granularity === Unit.hours ||\n granularity === Unit.minutes ||\n granularity === Unit.seconds\n ) {\n if (\n this._context._options.restrictions.disabledHours.length > 0 &&\n this._isInDisabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledHours.length > 0 &&\n !this._isInEnabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.disabledTimeIntervals.length > 0\n ) {\n for (\n let i = 0;\n i < this._context._options.restrictions.disabledTimeIntervals.length;\n i++\n ) {\n if (\n targetDate.isBetween(\n this._context._options.restrictions.disabledTimeIntervals[i].from,\n this._context._options.restrictions.disabledTimeIntervals[i].to\n )\n )\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Checks to see if the disabledDates option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInDisabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledDates ||\n this._context._options.restrictions.disabledDates.length === 0\n )\n return false;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.disabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the enabledDates option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInEnabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledDates ||\n this._context._options.restrictions.enabledDates.length === 0\n )\n return true;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.enabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the disabledHours option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInDisabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledHours ||\n this._context._options.restrictions.disabledHours.length === 0\n )\n return false;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.disabledHours.find(\n (x) => x === formattedDate\n );\n }\n\n /**\n * Checks to see if the enabledHours option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInEnabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledHours ||\n this._context._options.restrictions.enabledHours.length === 0\n )\n return true;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.enabledHours.find(\n (x) => x === formattedDate\n );\n }\n}\n","import Display from './display/index';\nimport Validation from './validation';\nimport Dates from './dates';\nimport Actions, { ActionTypes } from './actions';\nimport { DatePickerModes, DefaultOptions } from './conts';\nimport { DateTime, DateTimeFormatOptions, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options, { OptionConverter } from './options';\nimport {\n BaseEvent,\n ChangeEvent,\n ViewUpdateEvent,\n FailEvent,\n} from './event-types';\n\n/**\n * A robust and powerful date/time picker component.\n */\nclass TempusDominus {\n dates: Dates;\n\n _options: Options;\n _currentViewMode = 0;\n _subscribers: { [key: string]: ((event: any) => {})[] } = {};\n _element: HTMLElement;\n _input: HTMLInputElement;\n _unset: boolean;\n _minViewModeNumber = 0;\n _display: Display;\n _validation: Validation;\n _action: Actions;\n private _isDisabled = false;\n private _notifyChangeEventContext = 0;\n private _toggle: HTMLElement;\n private _currentPromptTimeTimeout: any;\n\n constructor(element: HTMLElement, options: Options = {} as Options) {\n if (!element) {\n Namespace.errorMessages.mustProvideElement;\n }\n this._element = element;\n this._options = this._initializeOptions(options, DefaultOptions, true);\n this._viewDate.setLocale(this._options.localization.locale);\n this._unset = true;\n\n this._display = new Display(this);\n this._validation = new Validation(this);\n this.dates = new Dates(this);\n this._action = new Actions(this);\n\n this._initializeInput();\n this._initializeToggle();\n\n if (this._options.display.inline) this._display.show();\n }\n\n _viewDate = new DateTime();\n\n get viewDate() {\n return this._viewDate;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Update the picker options. If `reset` is provide `options` will be merged with DefaultOptions instead.\n * @param options\n * @param reset\n * @public\n */\n updateOptions(options, reset = false): void {\n if (reset) this._options = this._initializeOptions(options, DefaultOptions);\n else this._options = this._initializeOptions(options, this._options);\n this._display._rebuild();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Toggles the picker open or closed. If the picker is disabled, nothing will happen.\n * @public\n */\n toggle(): void {\n if (this._isDisabled) return;\n this._display.toggle();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Shows the picker unless the picker is disabled.\n * @public\n */\n show(): void {\n if (this._isDisabled) return;\n this._display.show();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker unless the picker is disabled.\n * @public\n */\n hide(): void {\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Disables the picker and the target input field.\n * @public\n */\n disable(): void {\n this._isDisabled = true;\n // todo this might be undesired. If a dev disables the input field to\n // only allow using the picker, this will break that.\n this._input?.setAttribute('disabled', 'disabled');\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Enables the picker and the target input field.\n * @public\n */\n enable(): void {\n this._isDisabled = false;\n this._input?.removeAttribute('disabled');\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Clears all the selected dates\n * @public\n */\n clear(): void {\n this.dates.clear();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Allows for a direct subscription to picker events, without having to use addEventListener on the element.\n * @param eventTypes See Namespace.Events\n * @param callbacks Function to call when event is triggered\n * @public\n */\n subscribe(\n eventTypes: string | string[],\n callbacks: (event: any) => void | ((event: any) => void)[]\n ): { unsubscribe: void }[] {\n if (typeof eventTypes === 'string') {\n eventTypes = [eventTypes];\n }\n let callBackArray = [];\n if (!Array.isArray(callbacks)) {\n callBackArray = [callbacks];\n } else {\n callBackArray = callbacks;\n }\n\n if (eventTypes.length !== callBackArray.length) {\n Namespace.errorMessages.subscribeMismatch;\n }\n\n const returnArray = [];\n\n for (let i = 0; i < eventTypes.length; i++) {\n const eventType = eventTypes[i];\n if (!Array.isArray(this._subscribers[eventType])) {\n this._subscribers[eventType] = [];\n }\n\n this._subscribers[eventType].push(callBackArray[i]);\n\n returnArray.push({\n unsubscribe: this._unsubscribe.bind(\n this,\n eventType,\n this._subscribers[eventType].length - 1\n ),\n });\n\n if (eventTypes.length === 1) {\n return returnArray[0];\n }\n }\n\n return returnArray;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker and removes event listeners\n */\n dispose() {\n this._display.hide();\n // this will clear the document click event listener\n this._display._dispose();\n this._input?.removeEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input?.removeEventListener('click', this._toggleClickEvent);\n }\n this._toggle.removeEventListener('click', this._toggleClickEvent);\n this._subscribers = {};\n }\n\n /**\n * Triggers an event like ChangeEvent when the picker has updated the value\n * of a selected date.\n * @param event Accepts a BaseEvent object.\n * @private\n */\n _triggerEvent(event: BaseEvent) {\n // checking hasOwnProperty because the BasicEvent also falls through here otherwise\n if ((event as ChangeEvent) && event.hasOwnProperty('date')) {\n const { date, oldDate, isClear } = event as ChangeEvent;\n // this was to prevent a max call stack error\n // https://github.com/tempusdominus/core/commit/15a280507f5277b31b0b3319ab1edc7c19a000fb\n // todo see if this is still needed or if there's a cleaner way\n this._notifyChangeEventContext++;\n if (\n (date && oldDate && date.isSame(oldDate)) ||\n (!isClear && !date && !oldDate) ||\n this._notifyChangeEventContext > 1\n ) {\n this._notifyChangeEventContext = 0;\n return;\n }\n this._handleAfterChangeEvent(event as ChangeEvent);\n }\n\n this._element.dispatchEvent(\n new CustomEvent(event.type, { detail: event as any })\n );\n\n if ((window as any).jQuery) {\n const $ = (window as any).jQuery;\n $(this._element).trigger(event);\n }\n\n const publish = () => {\n // return if event is not subscribed\n if (!Array.isArray(this._subscribers[event.type])) {\n return;\n }\n\n // Trigger callback for each subscriber\n this._subscribers[event.type].forEach((callback) => {\n callback(event);\n });\n };\n\n publish();\n\n this._notifyChangeEventContext = 0;\n }\n\n /**\n * Fires a ViewUpdate event when, for example, the month view is changed.\n * @param {Unit} unit\n * @private\n */\n _viewUpdate(unit: Unit) {\n this._triggerEvent({\n type: Namespace.events.update,\n change: unit,\n viewDate: this._viewDate.clone,\n } as ViewUpdateEvent);\n }\n\n private _unsubscribe(eventName, index) {\n this._subscribers[eventName].splice(index, 1);\n }\n\n /**\n * Merges two Option objects together and validates options type\n * @param config new Options\n * @param mergeTo Options to merge into\n * @param includeDataset When true, the elements data-td attributes will be included in the\n * @private\n */\n private _initializeOptions(\n config: Options,\n mergeTo: Options,\n includeDataset = false\n ): Options {\n config = OptionConverter._mergeOptions(config, mergeTo);\n if (includeDataset)\n config = OptionConverter._dataToOptions(this._element, config);\n\n OptionConverter._validateConflcits(config);\n\n config.viewDate = config.viewDate.setLocale(config.localization.locale);\n\n if (!this._viewDate.isSame(config.viewDate)) {\n this._viewDate = config.viewDate;\n }\n\n /**\n * Sets the minimum view allowed by the picker. For example the case of only\n * allowing year and month to be selected but not date.\n */\n if (config.display.components.year) {\n this._minViewModeNumber = 2;\n }\n if (config.display.components.month) {\n this._minViewModeNumber = 1;\n }\n if (config.display.components.date) {\n this._minViewModeNumber = 0;\n }\n\n this._currentViewMode = Math.max(\n this._minViewModeNumber,\n this._currentViewMode\n );\n\n // Update view mode if needed\n if (\n DatePickerModes[this._currentViewMode].name !== config.display.viewMode\n ) {\n this._currentViewMode = Math.max(\n DatePickerModes.findIndex((x) => x.name === config.display.viewMode),\n this._minViewModeNumber\n );\n }\n\n // defaults the input format based on the components enabled\n if (config.hooks.inputFormat === undefined) {\n const components = config.display.components;\n config.hooks.inputFormat = (_, date: DateTime) => {\n return date.format({\n year: components.calendar && components.year ? 'numeric' : undefined,\n month:\n components.calendar && components.month ? '2-digit' : undefined,\n day: components.calendar && components.date ? '2-digit' : undefined,\n hour:\n components.clock && components.hours\n ? components.useTwentyfourHour\n ? '2-digit'\n : 'numeric'\n : undefined,\n minute:\n components.clock && components.minutes ? '2-digit' : undefined,\n second:\n components.clock && components.seconds ? '2-digit' : undefined,\n hour12: !components.useTwentyfourHour,\n });\n };\n }\n\n if (this._display?.isVisible) {\n this._display._update('all');\n }\n\n return config;\n }\n\n /**\n * Checks if an input field is being used, attempts to locate one and sets an\n * event listener if found.\n * @private\n */\n private _initializeInput() {\n\n if (this._element.tagName == 'INPUT') {\n this._input = this._element as HTMLInputElement;\n } else {\n let query = this._element.dataset.tdTargetInput;\n if (query == undefined || query == 'nearest') {\n this._input = this._element.querySelector('input');\n } else {\n this._input = this._element.querySelector(query);\n }\n }\n\n if (!this._input) return;\n\n this._input.addEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input.addEventListener('click', this._toggleClickEvent);\n }\n\n if (this._input.value) {\n this._inputChangeEvent();\n }\n }\n\n /**\n * Attempts to locate a toggle for the picker and sets an event listener\n * @private\n */\n private _initializeToggle() {\n if (this._options.display.inline) return;\n let query = this._element.dataset.tdTargetToggle;\n if (query == 'nearest') {\n query = '[data-td-toggle=\"datetimepicker\"]';\n }\n this._toggle =\n query == undefined ? this._element : this._element.querySelector(query);\n this._toggle.addEventListener('click', this._toggleClickEvent);\n }\n\n /**\n * If the option is enabled this will render the clock view after a date pick.\n * @param e change event\n * @private\n */\n private _handleAfterChangeEvent(e: ChangeEvent) {\n if (\n // options is disabled\n !this._options.promptTimeOnDateChange ||\n this._options.display.inline ||\n this._options.display.sideBySide ||\n // time is disabled\n !this._display._hasTime ||\n // clock component is already showing\n this._display.widget\n ?.getElementsByClassName(Namespace.css.show)[0]\n .classList.contains(Namespace.css.timeContainer)\n )\n return;\n\n // First time ever. If useCurrent option is set to true (default), do nothing\n // because the first date is selected automatically.\n // or date didn't change (time did) or date changed because time did.\n if (\n (!e.oldDate && this._options.useCurrent) ||\n (e.oldDate && e.date?.isSame(e.oldDate))\n ) {\n return;\n }\n\n clearTimeout(this._currentPromptTimeTimeout);\n this._currentPromptTimeTimeout = setTimeout(() => {\n if (this._display.widget) {\n this._action.do(\n {\n currentTarget: this._display.widget.querySelector(\n `.${Namespace.css.switch} div`\n ),\n },\n ActionTypes.togglePicker\n );\n }\n }, this._options.promptTimeOnDateChangeTransitionDelay);\n }\n\n /**\n * Event for when the input field changes. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _inputChangeEvent = () => {\n const setViewDate = () => {\n if (this.dates.lastPicked) this._viewDate = this.dates.lastPicked;\n };\n\n const value = this._input.value;\n if (this._options.multipleDates) {\n try {\n const valueSplit = value.split(this._options.multipleDatesSeparator);\n for (let i = 0; i < valueSplit.length; i++) {\n if (this._options.hooks.inputParse) {\n this.dates.set(\n this._options.hooks.inputParse(this, valueSplit[i]),\n i,\n 'input'\n );\n } else {\n this.dates.set(valueSplit[i], i, 'input');\n }\n }\n setViewDate();\n } catch {\n console.warn(\n 'TD: Something went wrong trying to set the multidate values from the input field.'\n );\n }\n } else {\n if (this._options.hooks.inputParse) {\n this.dates.set(this._options.hooks.inputParse(this, value), 0, 'input');\n } else {\n this.dates.set(value, 0, 'input');\n }\n setViewDate();\n }\n };\n\n /**\n * Event for when the toggle is clicked. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _toggleClickEvent = () => {\n this.toggle();\n };\n}\n\nexport {\n TempusDominus,\n Namespace,\n DefaultOptions,\n DateTime,\n Options,\n Unit,\n DateTimeFormatOptions,\n};\n"],"names":["SecondDisplay"],"mappings":"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"} \ No newline at end of file diff --git a/docs/6/js/tempus-dominus.js b/docs/6/js/tempus-dominus.js index 828cb7567..bee2e455c 100644 --- a/docs/6/js/tempus-dominus.js +++ b/docs/6/js/tempus-dominus.js @@ -1060,7 +1060,7 @@ } break; case ActionTypes.selectSecond: - lastPicked.seconds = +currentTarget.innerText; + lastPicked.seconds = +currentTarget.dataset.value; this._context.dates._setValue(lastPicked, this._context.dates.lastPickedIndex); if (this._context._options.display.components.useTwentyfourHour && !this._context._options.display.keepOpen && @@ -1537,7 +1537,8 @@ } path += `.${key}`; copyTo[key] = processKey(key, value, providedType, defaultType); - if (typeof defaultOptionValue !== 'object' || ignoreProperties.includes(key)) { + if (typeof defaultOptionValue !== 'object' || + ignoreProperties.includes(key)) { path = path.substring(0, path.lastIndexOf(`.${key}`)); return; } @@ -1816,20 +1817,22 @@ if (!oldDate && !this._context._unset && noIndex && isClear) { oldDate = this.lastPicked; } - if (target && (oldDate === null || oldDate === void 0 ? void 0 : oldDate.isSame(target))) - return; const updateInput = () => { if (!this._context._input) return; - let newValue = this._context._options.hooks.inputFormat(target); + let newValue = this._context._options.hooks.inputFormat(this._context, target); if (this._context._options.multipleDates) { newValue = this._dates - .map((d) => this._context._options.hooks.inputFormat(d)) + .map((d) => this._context._options.hooks.inputFormat(this._context, d)) .join(this._context._options.multipleDatesSeparator); } if (this._context._input.value != newValue) this._context._input.value = newValue; }; + if (target && (oldDate === null || oldDate === void 0 ? void 0 : oldDate.isSame(target))) { + updateInput(); + return; + } // case of calling setValue(null) if (!target) { if (!this._context._options.multipleDates || @@ -2399,9 +2402,7 @@ */ this._documentClickEvent = (e) => { var _a; - if (this._context._options.display.keepOpen || - this._context._options.debug || - window.debug) + if (this._context._options.debug || window.debug) return; if (this._isVisible && !e.composedPath().includes(this.widget) && // click inside the widget @@ -2531,16 +2532,11 @@ if (!this._context._options.display.inline) { document.body.appendChild(this.widget); this._popperInstance = core.createPopper(this._context._element, this.widget, { - modifiers: [ - /* { - name: 'offset', - options: { - offset: [2, 8], - }, - },*/ - { name: 'eventListeners', enabled: true }, - ], - placement: 'bottom-start', + modifiers: [{ name: 'eventListeners', enabled: true }], + //#2400 + placement: document.documentElement.dir === 'rtl' + ? 'bottom-end' + : 'bottom-start', }); } else { @@ -3012,7 +3008,7 @@ const valueSplit = value.split(this._options.multipleDatesSeparator); for (let i = 0; i < valueSplit.length; i++) { if (this._options.hooks.inputParse) { - this.dates.set(this._options.hooks.inputParse(valueSplit[i]), i, 'input'); + this.dates.set(this._options.hooks.inputParse(this, valueSplit[i]), i, 'input'); } else { this.dates.set(valueSplit[i], i, 'input'); @@ -3026,7 +3022,7 @@ } else { if (this._options.hooks.inputParse) { - this.dates.set(this._options.hooks.inputParse(value), 0, 'input'); + this.dates.set(this._options.hooks.inputParse(this, value), 0, 'input'); } else { this.dates.set(value, 0, 'input'); @@ -3280,7 +3276,7 @@ // defaults the input format based on the components enabled if (config.hooks.inputFormat === undefined) { const components = config.display.components; - config.hooks.inputFormat = (date) => { + config.hooks.inputFormat = (_, date) => { return date.format({ year: components.calendar && components.year ? 'numeric' : undefined, month: components.calendar && components.month ? '2-digit' : undefined, diff --git a/docs/6/js/tempus-dominus.js.map b/docs/6/js/tempus-dominus.js.map index 1d8e3abe1..e768a0ca5 100644 --- a/docs/6/js/tempus-dominus.js.map +++ b/docs/6/js/tempus-dominus.js.map @@ -1 +1 @@ -{"version":3,"file":"tempus-dominus.js","sources":["../../src/js/datetime.ts","../../src/js/errors.ts","../../src/js/namespace.ts","../../src/js/conts.ts","../../src/js/display/collapse.ts","../../src/js/actions.ts","../../src/js/display/calendar/date-display.ts","../../src/js/display/calendar/month-display.ts","../../src/js/options.ts","../../src/js/dates.ts","../../src/js/display/calendar/year-display.ts","../../src/js/display/calendar/decade-display.ts","../../src/js/display/time/time-display.ts","../../src/js/display/time/hour-display.ts","../../src/js/display/time/minute-display.ts","../../src/js/display/time/second-display.ts","../../src/js/display/index.ts","../../src/js/validation.ts","../../src/js/tempus-dominus.ts"],"sourcesContent":["export enum Unit {\r\n seconds = 'seconds',\r\n minutes = 'minutes',\r\n hours = 'hours',\r\n date = 'date',\r\n month = 'month',\r\n year = 'year',\r\n}\r\n\r\nexport interface DateTimeFormatOptions extends Intl.DateTimeFormatOptions {\r\n timeStyle?: 'short' | 'medium' | 'long';\r\n dateStyle?: 'short' | 'medium' | 'long' | 'full';\r\n}\r\n\r\n/**\r\n * For the most part this object behaves exactly the same way\r\n * as the native Date object with a little extra spice.\r\n */\r\nexport class DateTime extends Date {\r\n /**\r\n * Used with Intl.DateTimeFormat\r\n */\r\n locale = 'default';\r\n\r\n /**\r\n * Chainable way to set the {@link locale}\r\n * @param value\r\n */\r\n setLocale(value: string): this {\r\n this.locale = value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Converts a plain JS date object to a DateTime object.\r\n * Doing this allows access to format, etc.\r\n * @param date\r\n */\r\n static convert(date: Date): DateTime {\r\n if (!date) throw `A date is required`;\r\n return new DateTime(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate(),\r\n date.getHours(),\r\n date.getMinutes(),\r\n date.getSeconds(),\r\n date.getMilliseconds()\r\n );\r\n }\r\n\r\n /**\r\n * Native date manipulations are not pure functions. This function creates a duplicate of the DateTime object.\r\n */\r\n get clone() {\r\n return new DateTime(\r\n this.year,\r\n this.month,\r\n this.date,\r\n this.hours,\r\n this.minutes,\r\n this.seconds,\r\n this.getMilliseconds()\r\n ).setLocale(this.locale);\r\n }\r\n\r\n /**\r\n * Sets the current date to the start of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).startOf('month')\r\n * would return April 1, 2021, 12:00:00.000 AM (midnight)\r\n * @param unit\r\n */\r\n startOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(0);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(0, 0);\r\n break;\r\n case 'hours':\r\n this.setMinutes(0, 0, 0);\r\n break;\r\n case 'date':\r\n this.setHours(0, 0, 0, 0);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(0 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.startOf(Unit.date);\r\n this.setDate(1);\r\n break;\r\n case 'year':\r\n this.startOf(Unit.date);\r\n this.setMonth(0, 1);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the current date to the end of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).endOf('month')\r\n * would return April 30, 2021, 11:59:59.999 PM\r\n * @param unit\r\n */\r\n endOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(999);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(59, 999);\r\n break;\r\n case 'hours':\r\n this.setMinutes(59, 59, 999);\r\n break;\r\n case 'date':\r\n this.setHours(23, 59, 59, 999);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(6 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.month);\r\n this.setDate(0);\r\n break;\r\n case 'year':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.year);\r\n this.setDate(0);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Change a {@link unit} value. Value can be positive or negative\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).manipulate(1, 'month')\r\n * would return May 30, 2021, 11:45:32.984 AM\r\n * @param value A positive or negative number\r\n * @param unit\r\n */\r\n manipulate(value: number, unit: Unit): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n this[unit] += value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns a string format.\r\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat\r\n * for valid templates and locale objects\r\n * @param template An object. Uses browser defaults otherwise.\r\n * @param locale Can be a string or an array of strings. Uses browser defaults otherwise.\r\n */\r\n format(template: DateTimeFormatOptions, locale = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, template).format(this);\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is before this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isBefore(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() < compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() < compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is after this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isAfter(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() > compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() > compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is same this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isSame(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() === compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n compare = DateTime.convert(compare);\r\n return (\r\n this.clone.startOf(unit).valueOf() === compare.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Check if this is between two other DateTimes, optionally looking at unit scale. The match is exclusive.\r\n * @param left\r\n * @param right\r\n * @param unit.\r\n * @param inclusivity. A [ indicates inclusion of a value. A ( indicates exclusion.\r\n * If the inclusivity parameter is used, both indicators must be passed.\r\n */\r\n isBetween(\r\n left: DateTime,\r\n right: DateTime,\r\n unit?: Unit,\r\n inclusivity: '()' | '[]' | '(]' | '[)' = '()'\r\n ): boolean {\r\n if (unit && this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n const leftInclusivity = inclusivity[0] === '(';\r\n const rightInclusivity = inclusivity[1] === ')';\r\n\r\n return (\r\n ((leftInclusivity\r\n ? this.isAfter(left, unit)\r\n : !this.isBefore(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isBefore(right, unit)\r\n : !this.isAfter(right, unit))) ||\r\n ((leftInclusivity\r\n ? this.isBefore(left, unit)\r\n : !this.isAfter(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isAfter(right, unit)\r\n : !this.isBefore(right, unit)))\r\n );\r\n }\r\n\r\n /**\r\n * Returns flattened object of the date. Does not include literals\r\n * @param locale\r\n * @param template\r\n */\r\n parts(\r\n locale = this.locale,\r\n template: any = { dateStyle: 'full', timeStyle: 'long' }\r\n ) {\r\n const parts = {};\r\n new Intl.DateTimeFormat(locale, template)\r\n .formatToParts(this)\r\n .filter((x) => x.type !== 'literal')\r\n .forEach((x) => (parts[x.type] = x.value));\r\n return parts;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getSeconds()\r\n */\r\n get seconds(): number {\r\n return this.getSeconds();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setSeconds()\r\n */\r\n set seconds(value: number) {\r\n this.setSeconds(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get secondsFormatted(): string {\r\n return this.format({ second: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMinutes()\r\n */\r\n get minutes(): number {\r\n return this.getMinutes();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMinutes()\r\n */\r\n set minutes(value: number) {\r\n this.setMinutes(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get minutesFormatted(): string {\r\n return this.format({ minute: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getHours()\r\n */\r\n get hours(): number {\r\n return this.getHours();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setHours()\r\n */\r\n set hours(value: number) {\r\n this.setHours(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get hoursFormatted(): string {\r\n return this.format({ hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Returns two digit hours but in twelve hour mode e.g. 13 -> 1\r\n */\r\n get twelveHoursFormatted(): string {\r\n return this.format({ hour12: true, hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Get the meridiem of the date. E.g. AM or PM.\r\n * If the {@link locale} provides a \"dayPeriod\" then this will be returned,\r\n * otherwise it will return AM or PM.\r\n * @param locale\r\n */\r\n meridiem(locale: string = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, {\r\n hour: 'numeric',\r\n hour12: true,\r\n } as any)\r\n .formatToParts(this)\r\n .find((p) => p.type === 'dayPeriod')?.value;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDate()\r\n */\r\n get date(): number {\r\n return this.getDate();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setDate()\r\n */\r\n set date(value: number) {\r\n this.setDate(value);\r\n }\r\n\r\n /**\r\n * Return two digit date\r\n */\r\n get dateFormatted(): string {\r\n return this.date < 10 ? `0${this.date}` : `${this.date}`;\r\n }\r\n\r\n // https://github.com/you-dont-need/You-Dont-Need-Momentjs#week-of-year\r\n /**\r\n * Gets the week of the year\r\n */\r\n get week(): number {\r\n const startOfYear = new Date(this.year, 0, 1);\r\n startOfYear.setDate(\r\n startOfYear.getDate() + (1 - (startOfYear.getDay() % 7))\r\n );\r\n return Math.round((this.valueOf() - startOfYear.valueOf()) / 604800000) + 1;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDay()\r\n */\r\n get weekDay(): number {\r\n return this.getDay();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMonth()\r\n */\r\n get month(): number {\r\n return this.getMonth();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMonth()\r\n */\r\n set month(value: number) {\r\n this.setMonth(value);\r\n }\r\n\r\n /**\r\n * Return two digit, human expected month. E.g. January = 1, December = 12\r\n */\r\n get monthFormatted(): string {\r\n return this.month + 1 < 10 ? `0${this.month}` : `${this.month}`;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getFullYear()\r\n */\r\n get year(): number {\r\n return this.getFullYear();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setFullYear()\r\n */\r\n set year(value: number) {\r\n this.setFullYear(value);\r\n }\r\n}\r\n","import Namespace from './namespace';\n\nexport class TdError extends Error {\n code: number;\n}\n\nexport class ErrorMessages {\n private base = 'TD:';\n\n //#region out to console\n\n /**\n * Throws an error indicating that a key in the options object is invalid.\n * @param optionName\n */\n unexpectedOption(optionName: string) {\n const error = new TdError(\n `${this.base} Unexpected option: ${optionName} does not match a known option.`\n );\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error indicating that one more keys in the options object is invalid.\n * @param optionName\n */\n unexpectedOptions(optionName: string[]) {\n const error = new TdError(`${this.base}: ${optionName.join(', ')}`);\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error when an option is provide an unsupported value.\n * For example a value of 'cheese' for toolbarPlacement which only supports\n * 'top', 'bottom', 'default'.\n * @param optionName\n * @param badValue\n * @param validOptions\n */\n unexpectedOptionValue(\n optionName: string,\n badValue: string,\n validOptions: string[]\n ) {\n const error = new TdError(\n `${\n this.base\n } Unexpected option value: ${optionName} does not accept a value of \"${badValue}\". Valid values are: ${validOptions.join(\n ', '\n )}`\n );\n error.code = 2;\n throw error;\n }\n\n /**\n * Throws an error when an option value is the wrong type.\n * For example a string value was provided to multipleDates which only\n * supports true or false.\n * @param optionName\n * @param badType\n * @param expectedType\n */\n typeMismatch(optionName: string, badType: string, expectedType: string) {\n const error = new TdError(\n `${this.base} Mismatch types: ${optionName} has a type of ${badType} instead of the required ${expectedType}`\n );\n error.code = 3;\n throw error;\n }\n\n /**\n * Throws an error when an option value is outside of the expected range.\n * For example restrictions.daysOfWeekDisabled excepts a value between 0 and 6.\n * @param optionName\n * @param lower\n * @param upper\n */\n numbersOutOfRage(optionName: string, lower: number, upper: number) {\n const error = new TdError(\n `${this.base} ${optionName} expected an array of number between ${lower} and ${upper}.`\n );\n error.code = 4;\n throw error;\n }\n\n /**\n * Throws an error when a value for a date options couldn't be parsed. Either\n * the option was an invalide string or an invalid Date object.\n * @param optionName\n * @param date\n * @param soft If true, logs a warning instead of an error.\n */\n failedToParseDate(optionName: string, date: any, soft = false) {\n const error = new TdError(\n `${this.base} Could not correctly parse \"${date}\" to a date for ${optionName}.`\n );\n error.code = 5;\n if (!soft) throw error;\n console.warn(error);\n }\n\n /**\n * Throws when an element to attach to was not provided in the constructor.\n */\n mustProvideElement() {\n const error = new TdError(`${this.base} No element was provided.`);\n error.code = 6;\n throw error;\n }\n\n /**\n * Throws if providing an array for the events to subscribe method doesn't have\n * the same number of callbacks. E.g., subscribe([1,2], [1])\n */\n subscribeMismatch() {\n const error = new TdError(\n `${this.base} The subscribed events does not match the number of callbacks`\n );\n error.code = 7;\n throw error;\n }\n\n /**\n * Throws if the configuration has conflicting rules e.g. minDate is after maxDate\n */\n conflictingConfiguration(message?: string) {\n const error = new TdError(\n `${this.base} A configuration value conflicts with another rule. ${message}`\n );\n error.code = 8;\n throw error;\n }\n\n /**\n * Logs a warning if a date option value is provided as a string, instead of\n * a date/datetime object.\n */\n dateString() {\n console.warn(\n `${this.base} Using a string for date options is not recommended unless you specify an ISO string.`\n );\n }\n\n //#endregion\n\n //#region used with notify.error\n\n /**\n * Used with an Error Event type if the user selects a date that\n * fails restriction validation.\n */\n failedToSetInvalidDate = 'Failed to set invalid date';\n\n /**\n * Used with an Error Event type when a user changes the value of the\n * input field directly, and does not provide a valid date.\n */\n failedToParseInput = 'Failed parse input field';\n\n //#endregion\n}\n","import { ErrorMessages } from './errors';\n// this is not the way I want this to stay but nested classes seemed to blown up once its compiled.\nconst NAME = 'tempus-dominus',\n version = '6.0.0-alpha1',\n dataKey = 'td';\n\n/**\n * Events\n */\nclass Events {\n key = `.${dataKey}`;\n\n /**\n * Change event. Fired when the user selects a date.\n * See also EventTypes.ChangeEvent\n */\n change = `change${this.key}`;\n\n /**\n * Emit when the view changes for example from month view to the year view.\n * See also EventTypes.ViewUpdateEvent\n */\n update = `update${this.key}`;\n\n /**\n * Emits when a selected date or value from the input field fails to meet the provided validation rules.\n * See also EventTypes.FailEvent\n */\n error = `error${this.key}`;\n\n /**\n * Show event\n * @event Events#show\n */\n show = `show${this.key}`;\n\n /**\n * Hide event\n * @event Events#hide\n */\n hide = `hide${this.key}`;\n\n // blur and focus are used in the jQuery provider but are otherwise unused.\n // keyup/down will be used later for keybinding options\n\n blur = `blur${this.key}`;\n focus = `focus${this.key}`;\n keyup = `keyup${this.key}`;\n keydown = `keydown${this.key}`;\n}\n\nclass Css {\n /**\n * The outer element for the widget.\n */\n widget = `${NAME}-widget`;\n\n /**\n * Hold the previous, next and switcher divs\n */\n calendarHeader = 'calendar-header';\n\n /**\n * The element for the action to change the calendar view. E.g. month -> year.\n */\n switch = 'picker-switch';\n\n /**\n * The elements for all of the toolbar options\n */\n toolbar = 'toolbar';\n\n /**\n * Disables the hover and rounding affect.\n */\n noHighlight = 'no-highlight';\n\n /**\n * Applied to the widget element when the side by side option is in use.\n */\n sideBySide = 'timepicker-sbs';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> July\n */\n previous = 'previous';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> September\n */\n next = 'next';\n\n /**\n * Applied to any action that would violate any restriction options. ALso applied\n * to an input field if the disabled function is called.\n */\n disabled = 'disabled';\n\n /**\n * Applied to any date that is less than requested view,\n * e.g. the last day of the previous month.\n */\n old = 'old';\n\n /**\n * Applied to any date that is greater than of requested view,\n * e.g. the last day of the previous month.\n */\n new = 'new';\n\n /**\n * Applied to any date that is currently selected.\n */\n active = 'active';\n\n //#region date element\n\n /**\n * The outer most element for the calendar view.\n */\n dateContainer = 'date-container';\n\n /**\n * The outer most element for the decades view.\n */\n decadesContainer = `${this.dateContainer}-decades`;\n\n /**\n * Applied to elements within the decades container, e.g. 2020, 2030\n */\n decade = 'decade';\n\n /**\n * The outer most element for the years view.\n */\n yearsContainer = `${this.dateContainer}-years`;\n\n /**\n * Applied to elements within the years container, e.g. 2021, 2021\n */\n year = 'year';\n\n /**\n * The outer most element for the month view.\n */\n monthsContainer = `${this.dateContainer}-months`;\n\n /**\n * Applied to elements within the month container, e.g. January, February\n */\n month = 'month';\n\n /**\n * The outer most element for the calendar view.\n */\n daysContainer = `${this.dateContainer}-days`;\n\n /**\n * Applied to elements within the day container, e.g. 1, 2..31\n */\n day = 'day';\n\n /**\n * If display.calendarWeeks is enabled, a column displaying the week of year\n * is shown. This class is applied to each cell in that column.\n */\n calendarWeeks = 'cw';\n\n /**\n * Applied to the first row of the calendar view, e.g. Sunday, Monday\n */\n dayOfTheWeek = 'dow';\n\n /**\n * Applied to the current date on the calendar view.\n */\n today = 'today';\n\n /**\n * Applied to the locale's weekend dates on the calendar view, e.g. Sunday, Saturday\n */\n weekend = 'weekend';\n\n //#endregion\n\n //#region time element\n\n /**\n * The outer most element for all time related elements.\n */\n timeContainer = 'time-container';\n\n /**\n * Applied the separator columns between time elements, e.g. hour *:* minute *:* second\n */\n separator = 'separator';\n\n /**\n * The outer most element for the clock view.\n */\n clockContainer = `${this.timeContainer}-clock`;\n\n /**\n * The outer most element for the hours selection view.\n */\n hourContainer = `${this.timeContainer}-hour`;\n\n /**\n * The outer most element for the minutes selection view.\n */\n minuteContainer = `${this.timeContainer}-minute`;\n\n /**\n * The outer most element for the seconds selection view.\n */\n secondContainer = `${this.timeContainer}-second`;\n\n /**\n * Applied to each element in the hours selection view.\n */\n hour = 'hour';\n\n /**\n * Applied to each element in the minutes selection view.\n */\n minute = 'minute';\n\n /**\n * Applied to each element in the seconds selection view.\n */\n second = 'second';\n\n /**\n * Applied AM/PM toggle button.\n */\n toggleMeridiem = 'toggleMeridiem';\n\n //#endregion\n\n //#region collapse\n\n /**\n * Applied the element of the current view mode, e.g. calendar or clock.\n */\n show = 'show';\n\n /**\n * Applied to the currently showing view mode during a transition\n * between calendar and clock views\n */\n collapsing = 'td-collapsing';\n\n /**\n * Applied to the currently hidden view mode.\n */\n collapse = 'td-collapse';\n\n //#endregion\n\n /**\n * Applied to the widget when the option display.inline is enabled.\n */\n inline = 'inline';\n}\n\nexport default class Namespace {\n static NAME = NAME;\n // noinspection JSUnusedGlobalSymbols\n static version = version;\n static dataKey = dataKey;\n\n static events = new Events();\n\n static css = new Css();\n\n static errorMessages = new ErrorMessages();\n}\n","import { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options from './options';\n\nconst DefaultOptions: Options = {\n restrictions: {\n minDate: undefined,\n maxDate: undefined,\n disabledDates: [],\n enabledDates: [],\n daysOfWeekDisabled: [],\n disabledTimeIntervals: [],\n disabledHours: [],\n enabledHours: [],\n },\n display: {\n icons: {\n type: 'icons',\n time: 'fas fa-clock',\n date: 'fas fa-calendar',\n up: 'fas fa-arrow-up',\n down: 'fas fa-arrow-down',\n previous: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n today: 'fas fa-calendar-check',\n clear: 'fas fa-trash',\n close: 'fas fa-times',\n },\n sideBySide: false,\n calendarWeeks: false,\n viewMode: 'calendar',\n toolbarPlacement: 'bottom',\n keepOpen: false,\n buttons: {\n today: false,\n clear: false,\n close: false,\n },\n components: {\n calendar: true,\n date: true,\n month: true,\n year: true,\n decades: true,\n clock: true,\n hours: true,\n minutes: true,\n seconds: false,\n useTwentyfourHour: false,\n },\n inline: false,\n },\n stepping: 1,\n useCurrent: true,\n defaultDate: undefined,\n localization: {\n today: 'Go to today',\n clear: 'Clear selection',\n close: 'Close the picker',\n selectMonth: 'Select Month',\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n selectYear: 'Select Year',\n previousYear: 'Previous Year',\n nextYear: 'Next Year',\n selectDecade: 'Select Decade',\n previousDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n previousCentury: 'Previous Century',\n nextCentury: 'Next Century',\n pickHour: 'Pick Hour',\n incrementHour: 'Increment Hour',\n decrementHour: 'Decrement Hour',\n pickMinute: 'Pick Minute',\n incrementMinute: 'Increment Minute',\n decrementMinute: 'Decrement Minute',\n pickSecond: 'Pick Second',\n incrementSecond: 'Increment Second',\n decrementSecond: 'Decrement Second',\n toggleMeridiem: 'Toggle Meridiem',\n selectTime: 'Select Time',\n selectDate: 'Select Date',\n dayViewHeaderFormat: 'long',\n locale: 'default',\n },\n keepInvalid: false,\n debug: false,\n allowInputToggle: false,\n viewDate: new DateTime(),\n multipleDates: false,\n multipleDatesSeparator: '; ',\n promptTimeOnDateChange: false,\n promptTimeOnDateChangeTransitionDelay: 200,\n hooks: {\n inputParse: undefined,\n inputFormat: undefined,\n },\n};\n\nconst DatePickerModes: {\n name: string;\n className: string;\n unit: Unit;\n step: number;\n}[] = [\n {\n name: 'calendar',\n className: Namespace.css.daysContainer,\n unit: Unit.month,\n step: 1,\n },\n {\n name: 'months',\n className: Namespace.css.monthsContainer,\n unit: Unit.year,\n step: 1,\n },\n {\n name: 'years',\n className: Namespace.css.yearsContainer,\n unit: Unit.year,\n step: 10,\n },\n {\n name: 'decades',\n className: Namespace.css.decadesContainer,\n unit: Unit.year,\n step: 100,\n },\n];\n\nexport { DefaultOptions, DatePickerModes, Namespace };\n","import Namespace from '../namespace';\n\n/**\n * Provides a collapse functionality to the view changes\n */\nexport default class Collapse {\n private timeOut;\n\n /**\n * Flips the show/hide state of `target`\n * @param target html element to affect.\n */\n toggle(target: HTMLElement, callback = undefined) {\n if (target.classList.contains(Namespace.css.show)) {\n this.hide(target, callback);\n } else {\n this.show(target, callback);\n }\n }\n\n /**\n * If `target` is not already showing, then show after the animation.\n * @param target\n */\n show(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse, Namespace.css.show);\n target.style.height = '';\n this.timeOut = null;\n if (callback) callback();\n };\n\n target.style.height = '0';\n target.classList.remove(Namespace.css.collapse);\n target.classList.add(Namespace.css.collapsing);\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n target.style.height = `${target.scrollHeight}px`;\n }\n\n /**\n * If `target` is not already hidden, then hide after the animation.\n * @param target HTML Element\n */\n hide(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n !target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse);\n this.timeOut = null;\n };\n\n target.style.height = `${target.getBoundingClientRect()['height']}px`;\n\n const reflow = (element) => element.offsetHeight;\n\n reflow(target);\n\n target.classList.remove(Namespace.css.collapse, Namespace.css.show);\n target.classList.add(Namespace.css.collapsing);\n target.style.height = '';\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n }\n\n /**\n * Gets the transition duration from the `element` by getting css properties\n * `transition-duration` and `transition-delay`\n * @param element HTML Element\n */\n private getTransitionDurationFromElement = (element: HTMLElement) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } =\n window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) +\n Number.parseFloat(transitionDelay)) *\n 1000\n );\n };\n}\n","import { DatePickerModes } from './conts.js';\nimport { DateTime, Unit } from './datetime';\nimport { TempusDominus } from './tempus-dominus';\nimport Collapse from './display/collapse';\nimport Namespace from './namespace';\n\n/**\n *\n */\nexport default class Actions {\n private _context: TempusDominus;\n private collapse: Collapse;\n\n constructor(context: TempusDominus) {\n this._context = context;\n this.collapse = new Collapse();\n }\n\n /**\n * Performs the selected `action`. See ActionTypes\n * @param e This is normally a click event\n * @param action If not provided, then look for a [data-action]\n */\n do(e: any, action?: ActionTypes) {\n const currentTarget = e.currentTarget;\n if (currentTarget.classList.contains(Namespace.css.disabled)) return false;\n action = action || currentTarget.dataset.action;\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n /**\n * Common function to manipulate {@link lastPicked} by `unit`\n * @param unit\n * @param value Value to change by\n */\n const manipulateAndSet = (unit: Unit, value = 1) => {\n const newDate = lastPicked.manipulate(value, unit);\n if (this._context._validation.isValid(newDate, unit)) {\n this._context.dates._setValue(\n newDate,\n this._context.dates.lastPickedIndex\n );\n }\n };\n\n switch (action) {\n case ActionTypes.next:\n case ActionTypes.previous:\n const { unit, step } = DatePickerModes[this._context._currentViewMode];\n if (action === ActionTypes.next)\n this._context._viewDate.manipulate(step, unit);\n else this._context._viewDate.manipulate(step * -1, unit);\n this._context._viewUpdate(unit);\n\n this._context._display._showMode();\n break;\n case ActionTypes.pickerSwitch:\n this._context._display._showMode(1);\n this._context._viewUpdate(\n DatePickerModes[this._context._currentViewMode].unit\n );\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.selectMonth:\n case ActionTypes.selectYear:\n case ActionTypes.selectDecade:\n const value = +currentTarget.dataset.value;\n switch (action) {\n case ActionTypes.selectMonth:\n this._context._viewDate.month = value;\n this._context._viewUpdate(Unit.month);\n break;\n case ActionTypes.selectYear:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n case ActionTypes.selectDecade:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n }\n\n if (\n this._context._currentViewMode === this._context._minViewModeNumber\n ) {\n this._context.dates._setValue(\n this._context._viewDate,\n this._context.dates.lastPickedIndex\n );\n if (!this._context._options.display.inline) {\n this._context._display.hide();\n }\n } else {\n this._context._display._showMode(-1);\n }\n break;\n case ActionTypes.selectDay:\n const day = this._context._viewDate.clone;\n if (currentTarget.classList.contains(Namespace.css.old)) {\n day.manipulate(-1, Unit.month);\n }\n if (currentTarget.classList.contains(Namespace.css.new)) {\n day.manipulate(1, Unit.month);\n }\n\n day.date = +currentTarget.dataset.day;\n let index = 0;\n if (this._context._options.multipleDates) {\n index = this._context.dates.pickedIndex(day, Unit.date);\n if (index !== -1) {\n this._context.dates._setValue(null, index); //deselect multi-date\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex + 1\n );\n }\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex\n );\n }\n\n if (\n !this._context._display._hasTime &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline &&\n !this._context._options.multipleDates\n ) {\n this._context._display.hide();\n }\n break;\n case ActionTypes.selectHour:\n let hour = +currentTarget.dataset.value;\n if (\n lastPicked.hours >= 12 &&\n !this._context._options.display.components.useTwentyfourHour\n )\n hour += 12;\n lastPicked.hours = hour;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.minutes &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectMinute:\n lastPicked.minutes = +currentTarget.dataset.value;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.seconds &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectSecond:\n lastPicked.seconds = +currentTarget.innerText;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.incrementHours:\n manipulateAndSet(Unit.hours);\n break;\n case ActionTypes.incrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping);\n break;\n case ActionTypes.incrementSeconds:\n manipulateAndSet(Unit.seconds);\n break;\n case ActionTypes.decrementHours:\n manipulateAndSet(Unit.hours, -1);\n break;\n case ActionTypes.decrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping * -1);\n break;\n case ActionTypes.decrementSeconds:\n manipulateAndSet(Unit.seconds, -1);\n break;\n case ActionTypes.toggleMeridiem:\n manipulateAndSet(\n Unit.hours,\n this._context.dates.lastPicked.hours >= 12 ? -12 : 12\n );\n break;\n case ActionTypes.togglePicker:\n this._context._display.widget\n .querySelectorAll(\n `.${Namespace.css.dateContainer}, .${Namespace.css.timeContainer}`\n )\n .forEach((htmlElement: HTMLElement) =>\n this.collapse.toggle(htmlElement)\n );\n if (\n currentTarget.getAttribute('title') ===\n this._context._options.localization.selectDate\n ) {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectTime\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.time\n ).outerHTML;\n\n this._context._display._updateCalendarHeader();\n } else {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectDate\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.date\n ).outerHTML;\n this.do(e, ActionTypes.showClock);\n this._context._display._update('clock');\n }\n break;\n case ActionTypes.showClock:\n case ActionTypes.showHours:\n case ActionTypes.showMinutes:\n case ActionTypes.showSeconds:\n this._context._display.widget\n .querySelectorAll(`.${Namespace.css.timeContainer} > div`)\n .forEach(\n (htmlElement: HTMLElement) => (htmlElement.style.display = 'none')\n );\n\n let classToUse = '';\n switch (action) {\n case ActionTypes.showClock:\n classToUse = Namespace.css.clockContainer;\n this._context._display._update('clock');\n break;\n case ActionTypes.showHours:\n classToUse = Namespace.css.hourContainer;\n this._context._display._update(Unit.hours);\n break;\n case ActionTypes.showMinutes:\n classToUse = Namespace.css.minuteContainer;\n this._context._display._update(Unit.minutes);\n break;\n case ActionTypes.showSeconds:\n classToUse = Namespace.css.secondContainer;\n this._context._display._update(Unit.seconds);\n break;\n }\n\n ((\n this._context._display.widget.getElementsByClassName(classToUse)[0]\n )).style.display = 'grid';\n break;\n case ActionTypes.clear:\n this._context.dates._setValue(null);\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.close:\n this._context._display.hide();\n break;\n case ActionTypes.today:\n const today = new DateTime().setLocale(\n this._context._options.localization.locale\n );\n this._context._viewDate = today;\n if (this._context._validation.isValid(today, Unit.date))\n this._context.dates._setValue(\n today,\n this._context.dates.lastPickedIndex\n );\n break;\n }\n }\n}\n\nexport enum ActionTypes {\n next = 'next',\n previous = 'previous',\n pickerSwitch = 'pickerSwitch',\n selectMonth = 'selectMonth',\n selectYear = 'selectYear',\n selectDecade = 'selectDecade',\n selectDay = 'selectDay',\n selectHour = 'selectHour',\n selectMinute = 'selectMinute',\n selectSecond = 'selectSecond',\n incrementHours = 'incrementHours',\n incrementMinutes = 'incrementMinutes',\n incrementSeconds = 'incrementSeconds',\n decrementHours = 'decrementHours',\n decrementMinutes = 'decrementMinutes',\n decrementSeconds = 'decrementSeconds',\n toggleMeridiem = 'toggleMeridiem',\n togglePicker = 'togglePicker',\n showClock = 'showClock',\n showHours = 'showHours',\n showMinutes = 'showMinutes',\n showSeconds = 'showSeconds',\n clear = 'clear',\n close = 'close',\n today = 'today',\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `date`\r\n */\r\nexport default class DateDisplay {\r\n private _context: TempusDominus;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.daysContainer);\r\n\r\n container.append(...this._daysOfTheWeek());\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(Namespace.css.calendarWeeks, Namespace.css.noHighlight);\r\n container.appendChild(div);\r\n }\r\n\r\n for (let i = 0; i < 42; i++) {\r\n if (i !== 0 && i % 7 === 0) {\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n container.appendChild(div);\r\n }\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDay);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update(): void {\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.daysContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.daysContainer,\r\n this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n })\r\n );\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(-1, Unit.month),\r\n Unit.month\r\n )\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(1, Unit.month),\r\n Unit.month\r\n )\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.month)\r\n .startOf('weekDay')\r\n .manipulate(12, Unit.hours);\r\n\r\n container\r\n .querySelectorAll(\r\n `[data-action=\"${ActionTypes.selectDay}\"], .${Namespace.css.calendarWeeks}`\r\n )\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (\r\n this._context._options.display.calendarWeeks &&\r\n containerClone.classList.contains(Namespace.css.calendarWeeks)\r\n ) {\r\n if (containerClone.innerText === '#') return;\r\n containerClone.innerText = `${innerDate.week}`;\r\n return;\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.day);\r\n\r\n if (innerDate.isBefore(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.old);\r\n }\r\n if (innerDate.isAfter(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.new);\r\n }\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.date)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.date)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n if (innerDate.isSame(new DateTime(), Unit.date)) {\r\n classes.push(Namespace.css.today);\r\n }\r\n if (innerDate.weekDay === 0 || innerDate.weekDay === 6) {\r\n classes.push(Namespace.css.weekend);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`\r\n );\r\n containerClone.setAttribute(\r\n 'data-day',\r\n `${innerDate.date}`\r\n );\r\n containerClone.innerText = innerDate.format({ day: \"numeric\" });\r\n innerDate.manipulate(1, Unit.date);\r\n });\r\n }\r\n\r\n /***\r\n * Generates an html row that contains the days of the week.\r\n * @private\r\n */\r\n private _daysOfTheWeek(): HTMLElement[] {\r\n let innerDate = this._context._viewDate.clone\r\n .startOf('weekDay')\r\n .startOf(Unit.date);\r\n const row = [];\r\n document.createElement('div');\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = '#';\r\n row.push(htmlDivElement);\r\n }\r\n\r\n for (let i = 0; i < 7; i++) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.dayOfTheWeek,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = innerDate.format({ weekday: 'short' });\r\n innerDate.manipulate(1, Unit.date);\r\n row.push(htmlDivElement);\r\n }\r\n\r\n return row;\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `month`\n */\nexport default class MonthDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.monthsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMonth);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.monthsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.monthsContainer,\n this._context._viewDate.format({ year: 'numeric' })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.year),\n Unit.year\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.year),\n Unit.year\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone.startOf(Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMonth}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.month);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.month)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.month)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${index}`);\n containerClone.innerText = `${innerDate.format({ month: 'short' })}`;\n innerDate.manipulate(1, Unit.month);\n });\n }\n}\n","import { DateTime, DateTimeFormatOptions } from './datetime';\nimport Namespace from './namespace';\nimport { DefaultOptions } from './conts';\n\nexport default interface Options {\n restrictions: {\n minDate: DateTime;\n maxDate: DateTime;\n enabledDates: DateTime[];\n disabledDates: DateTime[];\n enabledHours: number[];\n disabledHours: number[];\n disabledTimeIntervals: { from: DateTime; to: DateTime }[];\n daysOfWeekDisabled: number[];\n };\n display: {\n toolbarPlacement: 'top' | 'bottom';\n components: {\n calendar: boolean;\n date: boolean;\n month: boolean;\n year: boolean;\n decades: boolean;\n clock: boolean;\n hours: boolean;\n minutes: boolean;\n seconds: boolean;\n useTwentyfourHour: boolean;\n };\n buttons: { today: boolean; close: boolean; clear: boolean };\n calendarWeeks: boolean;\n icons: {\n date: string;\n next: string;\n previous: string;\n today: string;\n clear: string;\n time: string;\n up: string;\n type: 'icons' | 'sprites';\n down: string;\n close: string;\n };\n viewMode: 'clock' | 'calendar' | 'months' | 'years' | 'decades';\n sideBySide: boolean;\n inline: boolean;\n keepOpen: boolean;\n };\n stepping: number;\n useCurrent: boolean;\n defaultDate: DateTime;\n localization: {\n nextMonth: string;\n pickHour: string;\n incrementSecond: string;\n nextDecade: string;\n selectDecade: string;\n dayViewHeaderFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n decrementHour: string;\n selectDate: string;\n incrementHour: string;\n previousCentury: string;\n decrementSecond: string;\n today: string;\n previousMonth: string;\n selectYear: string;\n pickSecond: string;\n nextCentury: string;\n close: string;\n incrementMinute: string;\n selectTime: string;\n clear: string;\n toggleMeridiem: string;\n selectMonth: string;\n decrementMinute: string;\n pickMinute: string;\n nextYear: string;\n previousYear: string;\n previousDecade: string;\n locale: string;\n };\n keepInvalid: boolean;\n debug: boolean;\n allowInputToggle: boolean;\n viewDate: DateTime;\n multipleDates: boolean;\n multipleDatesSeparator: string;\n promptTimeOnDateChange: boolean;\n promptTimeOnDateChangeTransitionDelay: number;\n hooks: {\n inputParse: (value: any) => DateTime;\n inputFormat: (date: DateTime) => string;\n };\n}\n\nexport class OptionConverter {\n static _mergeOptions(providedOptions: Options, mergeTo: Options): Options {\n const newOptions = {} as Options;\n let path = '';\n const ignoreProperties = ['inputParse', 'inputFormat'];\n\n const processKey = (key, value, providedType, defaultType) => {\n switch (key) {\n case 'defaultDate': {\n const dateTime = this._dateConversion(value, 'defaultDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'defaultDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'viewDate': {\n const dateTime = this._dateConversion(value, 'viewDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'viewDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'minDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.minDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.minDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'maxDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.maxDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.maxDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'disabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.disabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.disabledHours',\n 0,\n 23\n );\n return value;\n case 'enabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.enabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.enabledHours',\n 0,\n 23\n );\n return value;\n case 'daysOfWeekDisabled':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.daysOfWeekDisabled',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 6).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.daysOfWeekDisabled',\n 0,\n 6\n );\n return value;\n case 'enabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.enabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.disabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledTimeIntervals':\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n key,\n providedType,\n 'array of { from: DateTime|Date, to: DateTime|Date }'\n );\n }\n const valueObject = value as { from: any; to: any }[];\n for (let i = 0; i < valueObject.length; i++) {\n Object.keys(valueObject[i]).forEach((vk) => {\n const subOptionName = `${key}[${i}].${vk}`;\n let d = valueObject[i][vk];\n const dateTime = this._dateConversion(d, subOptionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n subOptionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n valueObject[i][vk] = dateTime;\n });\n }\n return valueObject;\n case 'toolbarPlacement':\n case 'type':\n case 'viewMode':\n case 'dayViewHeaderFormat':\n const optionValues = {\n toolbarPlacement: ['top', 'bottom', 'default'],\n type: ['icons', 'sprites'],\n viewMode: ['clock', 'calendar', 'months', 'years', 'decades'],\n dayViewHeaderFormat: [\n 'numeric',\n '2-digit',\n 'long',\n 'short',\n 'narrow',\n ],\n };\n const keyOptions = optionValues[key];\n if (!keyOptions.includes(value))\n Namespace.errorMessages.unexpectedOptionValue(\n path.substring(1),\n value,\n keyOptions\n );\n\n return value;\n case 'inputParse':\n case 'inputFormat':\n return value;\n default:\n switch (defaultType) {\n case 'boolean':\n return value === 'true' || value === true;\n case 'number':\n return +value;\n case 'string':\n return value.toString();\n case 'object':\n return {};\n case 'function':\n return value;\n default:\n Namespace.errorMessages.typeMismatch(\n path.substring(1),\n providedType,\n defaultType\n );\n }\n }\n };\n\n /**\n * The spread operator caused sub keys to be missing after merging.\n * This is to fix that issue by using spread on the child objects first.\n * Also handles complex options like disabledDates\n * @param provided An option from new providedOptions\n * @param mergeOption Default option to compare types against\n * @param copyTo Destination object. This was add to prevent reference copies\n */\n const spread = (provided, mergeOption, copyTo) => {\n const unsupportedOptions = Object.keys(provided).filter(\n (x) => !Object.keys(mergeOption).includes(x)\n );\n if (unsupportedOptions.length > 0) {\n const flattenedOptions = OptionConverter._flattenDefaultOptions;\n\n const errors = unsupportedOptions.map((x) => {\n let error = `\"${path.substring(1)}.${x}\" in not a known option.`;\n let didYouMean = flattenedOptions.find((y) => y.includes(x));\n if (didYouMean) error += `Did you mean \"${didYouMean}\"?`;\n return error;\n });\n Namespace.errorMessages.unexpectedOptions(errors);\n }\n Object.keys(mergeOption).forEach((key) => {\n const defaultOptionValue = mergeOption[key];\n let providedType = typeof provided[key];\n let defaultType = typeof defaultOptionValue;\n let value = provided[key];\n if (!provided.hasOwnProperty(key)) {\n if (\n defaultType === 'undefined' ||\n (value?.length === 0 && Array.isArray(defaultOptionValue))\n ) {\n copyTo[key] = defaultOptionValue;\n return;\n }\n provided[key] = defaultOptionValue;\n value = provided[key];\n }\n path += `.${key}`;\n copyTo[key] = processKey(key, value, providedType, defaultType);\n\n if (typeof defaultOptionValue !== 'object' || ignoreProperties.includes(key)) {\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n return;\n }\n if (!Array.isArray(provided[key])) {\n spread(provided[key], defaultOptionValue, copyTo[key]);\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n }\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n });\n };\n spread(providedOptions, mergeTo, newOptions);\n\n return newOptions;\n }\n\n static _dataToOptions(element, options: Options): Options {\n const eData = element.dataset;\n if (\n !eData ||\n Object.keys(eData).length === 0 ||\n eData.constructor !== DOMStringMap\n )\n return options;\n let dataOptions = {} as Options;\n\n // because dataset returns camelCase including the 'td' key the option\n // key won't align\n const objectToNormalized = (object) => {\n const lowered = {};\n Object.keys(object).forEach((x) => {\n lowered[x.toLowerCase()] = x;\n });\n\n return lowered;\n };\n\n const rabbitHole = (\n split: string[],\n index: number,\n optionSubgroup: {},\n value: any\n ) => {\n // first round = display { ... }\n const normalizedOptions = objectToNormalized(optionSubgroup);\n\n const keyOption = normalizedOptions[split[index].toLowerCase()];\n const internalObject = {};\n\n if (keyOption === undefined) return internalObject;\n\n // if this is another object, continue down the rabbit hole\n if (optionSubgroup[keyOption].constructor === Object) {\n index++;\n internalObject[keyOption] = rabbitHole(\n split,\n index,\n optionSubgroup[keyOption],\n value\n );\n } else {\n internalObject[keyOption] = value;\n }\n return internalObject;\n };\n const optionsLower = objectToNormalized(options);\n\n Object.keys(eData)\n .filter((x) => x.startsWith(Namespace.dataKey))\n .map((x) => x.substring(2))\n .forEach((key) => {\n let keyOption = optionsLower[key.toLowerCase()];\n\n // dataset merges dashes to camelCase... yay\n // i.e. key = display_components_seconds\n if (key.includes('_')) {\n // [display, components, seconds]\n const split = key.split('_');\n // display\n keyOption = optionsLower[split[0].toLowerCase()];\n if (\n keyOption !== undefined &&\n options[keyOption].constructor === Object\n ) {\n dataOptions[keyOption] = rabbitHole(\n split,\n 1,\n options[keyOption],\n eData[`td${key}`]\n );\n }\n }\n // or key = multipleDate\n else if (keyOption !== undefined) {\n dataOptions[keyOption] = eData[`td${key}`];\n }\n });\n\n return this._mergeOptions(dataOptions, options);\n }\n\n /**\n * Attempts to prove `d` is a DateTime or Date or can be converted into one.\n * @param d If a string will attempt creating a date from it.\n * @private\n */\n static _dateTypeCheck(d: any): DateTime | null {\n if (d.constructor.name === DateTime.name) return d;\n if (d.constructor.name === Date.name) {\n return DateTime.convert(d);\n }\n if (typeof d === typeof '') {\n const dateTime = new DateTime(d);\n if (JSON.stringify(dateTime) === 'null') {\n return null;\n }\n return dateTime;\n }\n return null;\n }\n\n /**\n * Type checks that `value` is an array of Date or DateTime\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckDateArray(optionName: string, value, providedType: string) {\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of DateTime or Date'\n );\n }\n for (let i = 0; i < value.length; i++) {\n let d = value[i];\n const dateTime = this._dateConversion(d, optionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n value[i] = dateTime;\n }\n }\n\n /**\n * Type checks that `value` is an array of numbers\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckNumberArray(\n optionName: string,\n value,\n providedType: string\n ) {\n if (!Array.isArray(value) || value.find((x) => typeof x !== typeof 0)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of numbers'\n );\n }\n return;\n }\n\n /**\n * Attempts to convert `d` to a DateTime object\n * @param d value to convert\n * @param optionName Provides text to error messages e.g. disabledDates\n */\n static _dateConversion(d: any, optionName: string) {\n if (typeof d === typeof '' && optionName !== 'input') {\n Namespace.errorMessages.dateString();\n }\n\n const converted = this._dateTypeCheck(d);\n\n if (!converted) {\n Namespace.errorMessages.failedToParseDate(\n optionName,\n d,\n optionName === 'input'\n );\n }\n return converted;\n }\n\n private static _flatback: string[];\n\n private static get _flattenDefaultOptions(): string[] {\n if (this._flatback) return this._flatback;\n const deepKeys = (t, pre = []) =>\n Array.isArray(t)\n ? []\n : Object(t) === t\n ? Object.entries(t).flatMap(([k, v]) => deepKeys(v, [...pre, k]))\n : pre.join('.');\n\n this._flatback = deepKeys(DefaultOptions);\n\n return this._flatback;\n }\n\n /**\n * Some options conflict like min/max date. Verify that these kinds of options\n * are set correctly.\n * @param config\n */\n static _validateConflcits(config: Options) {\n if (config.restrictions.minDate && config.restrictions.maxDate) {\n if (config.restrictions.minDate.isAfter(config.restrictions.maxDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'minDate is after maxDate'\n );\n }\n\n if (config.restrictions.maxDate.isBefore(config.restrictions.minDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'maxDate is before minDate'\n );\n }\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport { ChangeEvent, FailEvent } from './event-types';\nimport { OptionConverter } from './options';\n\nexport default class Dates {\n private _dates: DateTime[] = [];\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Returns the array of selected dates\n */\n get picked(): DateTime[] {\n return this._dates;\n }\n\n /**\n * Returns the last picked value.\n */\n get lastPicked(): DateTime {\n return this._dates[this.lastPickedIndex];\n }\n\n /**\n * Returns the length of picked dates -1 or 0 if none are selected.\n */\n get lastPickedIndex(): number {\n if (this._dates.length === 0) return 0;\n return this._dates.length - 1;\n }\n\n /**\n * Adds a new DateTime to selected dates array\n * @param date\n */\n add(date: DateTime): void {\n this._dates.push(date);\n }\n\n /**\n * Tries to convert the provided value to a DateTime object.\n * If value is null|undefined then clear the value of the provided index (or 0).\n * @param value Value to convert or null|undefined\n * @param index When using multidates this is the index in the array\n * @param from Used in the warning message, useful for debugging.\n */\n set(value: any, index?: number, from: string = 'date.set') {\n if (!value) this._setValue(value, index);\n const converted = OptionConverter._dateConversion(value, from);\n if (converted) this._setValue(converted, index);\n }\n\n /**\n * Returns true if the `targetDate` is part of the selected dates array.\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n isPicked(targetDate: DateTime, unit?: Unit): boolean {\n if (!unit) return this._dates.find((x) => x === targetDate) !== undefined;\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return (\n this._dates\n .map((x) => x.format(format))\n .find((x) => x === innerDateFormatted) !== undefined\n );\n }\n\n /**\n * Returns the index at which `targetDate` is in the array.\n * This is used for updating or removing a date when multi-date is used\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n pickedIndex(targetDate: DateTime, unit?: Unit): number {\n if (!unit) return this._dates.indexOf(targetDate);\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return this._dates.map((x) => x.format(format)).indexOf(innerDateFormatted);\n }\n\n /**\n * Clears all selected dates.\n */\n clear() {\n this._context._unset = true;\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate: this.lastPicked,\n isClear: true,\n isValid: true,\n } as ChangeEvent);\n this._dates = [];\n }\n\n /**\n * Find the \"book end\" years given a `year` and a `factor`\n * @param factor e.g. 100 for decades\n * @param year e.g. 2021\n */\n static getStartEndYear(\n factor: number,\n year: number\n ): [number, number, number] {\n const step = factor / 10,\n startYear = Math.floor(year / factor) * factor,\n endYear = startYear + step * 9,\n focusValue = Math.floor(year / step) * step;\n return [startYear, endYear, focusValue];\n }\n\n /**\n * Do not use direectly. Attempts to either clear or set the `target` date at `index`.\n * If the `target` is null then the date will be cleared.\n * If multi-date is being used then it will be removed from the array.\n * If `target` is valid and multi-date is used then if `index` is\n * provided the date at that index will be replaced, otherwise it is appended.\n * @param target\n * @param index\n */\n _setValue(target?: DateTime, index?: number): void {\n const noIndex = typeof index === 'undefined',\n isClear = !target && noIndex;\n let oldDate = this._context._unset ? null : this._dates[index];\n if (!oldDate && !this._context._unset && noIndex && isClear) {\n oldDate = this.lastPicked;\n }\n\n if (target && oldDate?.isSame(target)) return;\n\n const updateInput = () => {\n if (!this._context._input) return;\n\n let newValue = this._context._options.hooks.inputFormat(target);\n if (this._context._options.multipleDates) {\n newValue = this._dates\n .map((d) => this._context._options.hooks.inputFormat(d))\n .join(this._context._options.multipleDatesSeparator);\n }\n if (this._context._input.value != newValue)\n this._context._input.value = newValue;\n };\n\n // case of calling setValue(null)\n if (!target) {\n if (\n !this._context._options.multipleDates ||\n this._dates.length === 1 ||\n isClear\n ) {\n this._context._unset = true;\n this._dates = [];\n } else {\n this._dates.splice(index, 1);\n }\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n\n updateInput();\n this._context._display._update('all');\n return;\n }\n\n index = index || 0;\n target = target.clone;\n\n // minute stepping is being used, force the minute to the closest value\n if (this._context._options.stepping !== 1) {\n target.minutes =\n Math.round(target.minutes / this._context._options.stepping) *\n this._context._options.stepping;\n target.seconds = 0;\n }\n\n if (this._context._validation.isValid(target)) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._unset = false;\n this._context._display._update('all');\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n return;\n }\n\n if (this._context._options.keepInvalid) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: false,\n } as ChangeEvent);\n }\n this._context._triggerEvent({\n type: Namespace.events.error,\n reason: Namespace.errorMessages.failedToSetInvalidDate,\n date: target,\n oldDate,\n } as FailEvent);\n }\n\n /**\n * Returns a format object based on the granularity of `unit`\n * @param unit\n */\n static getFormatByUnit(unit: Unit): object {\n switch (unit) {\n case 'date':\n return { dateStyle: 'short' };\n case 'month':\n return {\n month: 'numeric',\n year: 'numeric',\n };\n case 'year':\n return { year: 'numeric' };\n }\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\nimport Dates from '../../dates';\r\n\r\n/**\r\n * Creates and updates the grid for `year`\r\n */\r\nexport default class YearDisplay {\r\n private _context: TempusDominus;\r\n private _startYear: DateTime;\r\n private _endYear: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.yearsContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectYear);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 10,\r\n this._context._viewDate.year\r\n );\r\n this._startYear = this._context._viewDate.clone.manipulate(-1, Unit.year);\r\n this._endYear = this._context._viewDate.clone.manipulate(10, Unit.year);\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.yearsContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.yearsContainer,\r\n `${this._startYear.format({ year: 'numeric' })}-${this._endYear.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startYear, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endYear, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.year)\r\n .manipulate(-1, Unit.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectYear}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n let classes = [];\r\n classes.push(Namespace.css.year);\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.year)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.year)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute('data-value', `${innerDate.year}`);\r\n containerClone.innerText = innerDate.format({ year: \"numeric\" });\r\n\r\n innerDate.manipulate(1, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport Dates from '../../dates';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `seconds`\r\n */\r\nexport default class DecadeDisplay {\r\n private _context: TempusDominus;\r\n private _startDecade: DateTime;\r\n private _endDecade: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker() {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.decadesContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDecade);\r\n container.appendChild(div);\r\n }\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 100,\r\n this._context._viewDate.year\r\n );\r\n this._startDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._startDecade.year = start;\r\n this._endDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._endDecade.year = end;\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.decadesContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.decadesContainer,\r\n `${this._startDecade.format({ year: 'numeric' })}-${this._endDecade.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startDecade, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endDecade, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n const pickedYears = this._context.dates.picked.map((x) => x.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectDecade}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (index === 0) {\r\n containerClone.classList.add(Namespace.css.old);\r\n if (this._startDecade.year - 10 < 0) {\r\n containerClone.textContent = ' ';\r\n previous.classList.add(Namespace.css.disabled);\r\n containerClone.classList.add(Namespace.css.disabled);\r\n containerClone.setAttribute('data-value', ``);\r\n return;\r\n } else {\r\n containerClone.innerText = this._startDecade.clone.manipulate(-10, Unit.year).format({ year: 'numeric' });\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n return;\r\n }\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.decade);\r\n const startDecadeYear = this._startDecade.year;\r\n const endDecadeYear = this._startDecade.year + 9;\r\n\r\n if (\r\n !this._context._unset &&\r\n pickedYears.filter((x) => x >= startDecadeYear && x <= endDecadeYear)\r\n .length > 0\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n containerClone.innerText = `${this._startDecade.format({ year: 'numeric' })}`;\r\n\r\n this._startDecade.manipulate(10, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates the clock display\n */\nexport default class TimeDisplay {\n private _context: TempusDominus;\n private _gridColumns = '';\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the clock display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.clockContainer);\n\n container.append(...this._grid());\n\n return container;\n }\n\n /**\n * Populates the various elements with in the clock display\n * like the current hour and if the manipulation icons are enabled.\n * @private\n */\n _update(): void {\n const timesDiv = (\n this._context._display.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0]\n );\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n timesDiv\n .querySelectorAll('.disabled')\n .forEach((element) => element.classList.remove(Namespace.css.disabled));\n\n if (this._context._options.display.components.hours) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.hours}]`\n ).innerText = this._context._options.display.components.useTwentyfourHour\n ? lastPicked.hoursFormatted\n : lastPicked.twelveHoursFormatted;\n }\n\n if (this._context._options.display.components.minutes) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.minutes}]`\n ).innerText = lastPicked.minutesFormatted;\n }\n\n if (this._context._options.display.components.seconds) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.seconds}]`\n ).innerText = lastPicked.secondsFormatted;\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n const toggle = timesDiv.querySelector(\n `[data-action=${ActionTypes.toggleMeridiem}]`\n );\n\n toggle.innerText = lastPicked.meridiem();\n\n if (\n !this._context._validation.isValid(\n lastPicked.clone.manipulate(\n lastPicked.hours >= 12 ? -12 : 12,\n Unit.hours\n )\n )\n ) {\n toggle.classList.add(Namespace.css.disabled);\n } else {\n toggle.classList.remove(Namespace.css.disabled);\n }\n }\n\n timesDiv.style.gridTemplateAreas = `\"${this._gridColumns}\"`;\n }\n\n /**\n * Creates the table for the clock display depending on what options are selected.\n * @private\n */\n private _grid(): HTMLElement[] {\n this._gridColumns = '';\n const top = [],\n middle = [],\n bottom = [],\n separator = document.createElement('div'),\n upIcon = this._context._display._iconTag(\n this._context._options.display.icons.up\n ),\n downIcon = this._context._display._iconTag(\n this._context._options.display.icons.down\n );\n\n separator.classList.add(Namespace.css.separator, Namespace.css.noHighlight);\n const separatorColon = separator.cloneNode(true);\n separatorColon.innerHTML = ':';\n\n const getSeparator = (colon = false): HTMLElement => {\n return colon\n ? separatorColon.cloneNode(true)\n : separator.cloneNode(true);\n };\n\n if (this._context._options.display.components.hours) {\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.incrementHours);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickHour\n );\n divElement.setAttribute('data-action', ActionTypes.showHours);\n divElement.setAttribute('data-time-component', Unit.hours);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.decrementHours);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n this._gridColumns += 'a';\n }\n\n if (this._context._options.display.components.minutes) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.hours) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.incrementMinutes);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickMinute\n );\n divElement.setAttribute('data-action', ActionTypes.showMinutes);\n divElement.setAttribute('data-time-component', Unit.minutes);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.decrementMinutes);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (this._context._options.display.components.seconds) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.minutes) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.incrementSeconds);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickSecond\n );\n divElement.setAttribute('data-action', ActionTypes.showSeconds);\n divElement.setAttribute('data-time-component', Unit.seconds);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.decrementSeconds);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n this._gridColumns += ' a';\n let divElement = getSeparator();\n top.push(divElement);\n\n let button = document.createElement('button');\n button.setAttribute(\n 'title',\n this._context._options.localization.toggleMeridiem\n );\n button.setAttribute('data-action', ActionTypes.toggleMeridiem);\n button.setAttribute('tabindex', '-1');\n button.classList.add(Namespace.css.toggleMeridiem);\n\n divElement = document.createElement('div');\n divElement.classList.add(Namespace.css.noHighlight);\n divElement.appendChild(button);\n middle.push(divElement);\n\n divElement = getSeparator();\n bottom.push(divElement);\n }\n\n this._gridColumns = this._gridColumns.trim();\n\n return [...top, ...middle, ...bottom];\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `hours`\n */\nexport default class HourDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.hourContainer);\n\n for (\n let i = 0;\n i <\n (this._context._options.display.components.useTwentyfourHour ? 24 : 12);\n i++\n ) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectHour);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.hourContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.date);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectHour}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.hour);\n\n if (!this._context._validation.isValid(innerDate, Unit.hours)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.hours}`);\n containerClone.innerText = this._context._options.display.components\n .useTwentyfourHour\n ? innerDate.hoursFormatted\n : innerDate.twelveHoursFormatted;\n innerDate.manipulate(1, Unit.hours);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `minutes`\n */\nexport default class MinuteDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.minuteContainer);\n\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n for (let i = 0; i < 60 / step; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMinute);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.minuteContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.hours);\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMinute}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.minute);\n\n if (!this._context._validation.isValid(innerDate, Unit.minutes)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.minutes}`);\n containerClone.innerText = innerDate.minutesFormatted;\n innerDate.manipulate(step, Unit.minutes);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class secondDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.secondContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectSecond);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.secondContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.minutes);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectSecond}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.second);\n\n if (!this._context._validation.isValid(innerDate, Unit.seconds)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.seconds}`);\n containerClone.innerText = innerDate.secondsFormatted;\n innerDate.manipulate(5, Unit.seconds);\n });\n }\n}\n","import DateDisplay from './calendar/date-display';\r\nimport MonthDisplay from './calendar/month-display';\r\nimport YearDisplay from './calendar/year-display';\r\nimport DecadeDisplay from './calendar/decade-display';\r\nimport TimeDisplay from './time/time-display';\r\nimport HourDisplay from './time/hour-display';\r\nimport MinuteDisplay from './time/minute-display';\r\nimport SecondDisplay from './time/second-display';\r\nimport { DateTime, Unit } from '../datetime';\r\nimport { DatePickerModes } from '../conts';\r\nimport { TempusDominus } from '../tempus-dominus';\r\nimport { ActionTypes } from '../actions';\r\nimport { createPopper } from '@popperjs/core';\r\nimport Namespace from '../namespace';\r\nimport { HideEvent } from '../event-types';\r\n\r\n/**\r\n * Main class for all things display related.\r\n */\r\nexport default class Display {\r\n private _context: TempusDominus;\r\n private _dateDisplay: DateDisplay;\r\n private _monthDisplay: MonthDisplay;\r\n private _yearDisplay: YearDisplay;\r\n private _decadeDisplay: DecadeDisplay;\r\n private _timeDisplay: TimeDisplay;\r\n private _widget: HTMLElement;\r\n private _hourDisplay: HourDisplay;\r\n private _minuteDisplay: MinuteDisplay;\r\n private _secondDisplay: SecondDisplay;\r\n private _popperInstance: any;\r\n private _isVisible = false;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this._dateDisplay = new DateDisplay(context);\r\n this._monthDisplay = new MonthDisplay(context);\r\n this._yearDisplay = new YearDisplay(context);\r\n this._decadeDisplay = new DecadeDisplay(context);\r\n this._timeDisplay = new TimeDisplay(context);\r\n this._hourDisplay = new HourDisplay(context);\r\n this._minuteDisplay = new MinuteDisplay(context);\r\n this._secondDisplay = new SecondDisplay(context);\r\n\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Returns the widget body or undefined\r\n * @private\r\n */\r\n get widget(): HTMLElement | undefined {\r\n return this._widget;\r\n }\r\n\r\n /**\r\n * Returns this visible state of the picker (shown)\r\n */\r\n get isVisible() {\r\n return this._isVisible;\r\n }\r\n\r\n /**\r\n * Updates the table for a particular unit. Used when an option as changed or\r\n * whenever the class list might need to be refreshed.\r\n * @param unit\r\n * @private\r\n */\r\n _update(unit: Unit | 'clock' | 'calendar' | 'all'): void {\r\n if (!this.widget) return;\r\n //todo do I want some kind of error catching or other guards here?\r\n switch (unit) {\r\n case Unit.seconds:\r\n this._secondDisplay._update();\r\n break;\r\n case Unit.minutes:\r\n this._minuteDisplay._update();\r\n break;\r\n case Unit.hours:\r\n this._hourDisplay._update();\r\n break;\r\n case Unit.date:\r\n this._dateDisplay._update();\r\n break;\r\n case Unit.month:\r\n this._monthDisplay._update();\r\n break;\r\n case Unit.year:\r\n this._yearDisplay._update();\r\n break;\r\n case 'clock':\r\n this._timeDisplay._update();\r\n this._update(Unit.hours);\r\n this._update(Unit.minutes);\r\n this._update(Unit.seconds);\r\n break;\r\n case 'calendar':\r\n this._update(Unit.date);\r\n this._update(Unit.year);\r\n this._update(Unit.month);\r\n this._decadeDisplay._update();\r\n this._updateCalendarHeader();\r\n break;\r\n case 'all':\r\n if (this._hasTime) {\r\n this._update('clock');\r\n }\r\n if (this._hasDate) {\r\n this._update('calendar');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Shows the picker and creates a Popper instance if needed.\r\n * Add document click event to hide when clicking outside the picker.\r\n * @fires Events#show\r\n */\r\n show(): void {\r\n if (this.widget == undefined) {\r\n if (\r\n this._context._options.useCurrent &&\r\n !this._context._options.defaultDate &&\r\n !this._context._input?.value\r\n ) {\r\n //todo in the td4 branch a pr changed this to allow granularity\r\n const date = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n if (!this._context._options.keepInvalid) {\r\n let tries = 0;\r\n let direction = 1;\r\n if (this._context._options.restrictions.maxDate?.isBefore(date)) {\r\n direction = -1;\r\n }\r\n while (!this._context._validation.isValid(date)) {\r\n date.manipulate(direction, Unit.date);\r\n if (tries > 31) break;\r\n tries++;\r\n }\r\n }\r\n this._context.dates._setValue(date);\r\n }\r\n\r\n if (this._context._options.defaultDate) {\r\n this._context.dates._setValue(this._context._options.defaultDate);\r\n }\r\n\r\n this._buildWidget();\r\n if (this._hasDate) {\r\n this._showMode();\r\n }\r\n\r\n if (!this._context._options.display.inline) {\r\n document.body.appendChild(this.widget);\r\n\r\n this._popperInstance = createPopper(\r\n this._context._element,\r\n this.widget,\r\n {\r\n modifiers: [\r\n /* {\r\n name: 'offset',\r\n options: {\r\n offset: [2, 8],\r\n },\r\n },*/\r\n { name: 'eventListeners', enabled: true },\r\n ],\r\n placement: 'bottom-start',\r\n }\r\n );\r\n } else {\r\n this._context._element.appendChild(this.widget);\r\n }\r\n\r\n if (this._context._options.display.viewMode == 'clock') {\r\n this._context._action.do(\r\n {\r\n currentTarget: this.widget.querySelector(\r\n `.${Namespace.css.timeContainer}`\r\n ),\r\n },\r\n ActionTypes.showClock\r\n );\r\n }\r\n\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.addEventListener('click', this._actionsClickEvent)\r\n );\r\n\r\n // show the clock when using sideBySide\r\n if (this._context._options.display.sideBySide) {\r\n this._timeDisplay._update();\r\n (\r\n this.widget.getElementsByClassName(\r\n Namespace.css.clockContainer\r\n )[0] as HTMLElement\r\n ).style.display = 'grid';\r\n }\r\n }\r\n\r\n this.widget.classList.add(Namespace.css.show);\r\n if (!this._context._options.display.inline) {\r\n this._popperInstance.update();\r\n document.addEventListener('click', this._documentClickEvent);\r\n }\r\n this._context._triggerEvent({ type: Namespace.events.show });\r\n this._isVisible = true;\r\n }\r\n\r\n /**\r\n * Changes the calendar view mode. E.g. month <-> year\r\n * @param direction -/+ number to move currentViewMode\r\n * @private\r\n */\r\n _showMode(direction?: number): void {\r\n if (!this.widget) {\r\n return;\r\n }\r\n if (direction) {\r\n const max = Math.max(\r\n this._context._minViewModeNumber,\r\n Math.min(3, this._context._currentViewMode + direction)\r\n );\r\n if (this._context._currentViewMode == max) return;\r\n this._context._currentViewMode = max;\r\n }\r\n\r\n this.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div:not(.${Namespace.css.clockContainer})`\r\n )\r\n .forEach((e: HTMLElement) => (e.style.display = 'none'));\r\n\r\n const datePickerMode = DatePickerModes[this._context._currentViewMode];\r\n let picker: HTMLElement = this.widget.querySelector(\r\n `.${datePickerMode.className}`\r\n );\r\n\r\n switch (datePickerMode.className) {\r\n case Namespace.css.decadesContainer:\r\n this._decadeDisplay._update();\r\n break;\r\n case Namespace.css.yearsContainer:\r\n this._yearDisplay._update();\r\n break;\r\n case Namespace.css.monthsContainer:\r\n this._monthDisplay._update();\r\n break;\r\n case Namespace.css.daysContainer:\r\n this._dateDisplay._update();\r\n break;\r\n }\r\n\r\n picker.style.display = 'grid';\r\n this._updateCalendarHeader();\r\n }\r\n\r\n _updateCalendarHeader() {\r\n const showing = [\r\n ...this.widget.querySelector(\r\n `.${Namespace.css.dateContainer} div[style*=\"display: grid\"]`\r\n ).classList,\r\n ].find((x) => x.startsWith(Namespace.css.dateContainer));\r\n\r\n const [previous, switcher, next] = this._context._display.widget\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switch (showing) {\r\n case Namespace.css.decadesContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousCentury\r\n );\r\n switcher.setAttribute('title', '');\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextCentury\r\n );\r\n break;\r\n case Namespace.css.yearsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousDecade\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDecade\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextDecade\r\n );\r\n break;\r\n case Namespace.css.monthsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousYear\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectYear\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextYear\r\n );\r\n break;\r\n case Namespace.css.daysContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousMonth\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectMonth\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextMonth\r\n );\r\n switcher.innerText = this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n });\r\n break;\r\n }\r\n switcher.innerText = switcher.getAttribute(showing);\r\n }\r\n\r\n /**\r\n * Hides the picker if needed.\r\n * Remove document click event to hide when clicking outside the picker.\r\n * @fires Events#hide\r\n */\r\n hide(): void {\r\n if (!this.widget || !this._isVisible) return;\r\n\r\n this.widget.classList.remove(Namespace.css.show);\r\n\r\n if (this._isVisible) {\r\n this._context._triggerEvent({\r\n type: Namespace.events.hide,\r\n date: this._context._unset\r\n ? null\r\n : this._context.dates.lastPicked\r\n ? this._context.dates.lastPicked.clone\r\n : void 0,\r\n } as HideEvent);\r\n this._isVisible = false;\r\n }\r\n\r\n document.removeEventListener('click', this._documentClickEvent);\r\n }\r\n\r\n /**\r\n * Toggles the picker's open state. Fires a show/hide event depending.\r\n */\r\n toggle() {\r\n return this._isVisible ? this.hide() : this.show();\r\n }\r\n\r\n /**\r\n * Removes document and data-action click listener and reset the widget\r\n * @private\r\n */\r\n _dispose() {\r\n document.removeEventListener('click', this._documentClickEvent);\r\n if (!this.widget) return;\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.removeEventListener('click', this._actionsClickEvent)\r\n );\r\n this.widget.parentNode.removeChild(this.widget);\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Builds the widgets html template.\r\n * @private\r\n */\r\n private _buildWidget(): HTMLElement {\r\n const template = document.createElement('div');\r\n template.classList.add(Namespace.css.widget);\r\n\r\n const dateView = document.createElement('div');\r\n dateView.classList.add(Namespace.css.dateContainer);\r\n dateView.append(\r\n this._headTemplate,\r\n this._decadeDisplay._picker,\r\n this._yearDisplay._picker,\r\n this._monthDisplay._picker,\r\n this._dateDisplay._picker\r\n );\r\n\r\n const timeView = document.createElement('div');\r\n timeView.classList.add(Namespace.css.timeContainer);\r\n timeView.appendChild(this._timeDisplay._picker);\r\n timeView.appendChild(this._hourDisplay._picker);\r\n timeView.appendChild(this._minuteDisplay._picker);\r\n timeView.appendChild(this._secondDisplay._picker);\r\n\r\n const toolbar = document.createElement('div');\r\n toolbar.classList.add(Namespace.css.toolbar);\r\n toolbar.append(...this._toolbar);\r\n\r\n if (this._context._options.display.inline) {\r\n template.classList.add(Namespace.css.inline);\r\n }\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n template.classList.add('calendarWeeks');\r\n }\r\n\r\n if (\r\n this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n template.classList.add(Namespace.css.sideBySide);\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n const row = document.createElement('div');\r\n row.classList.add('td-row');\r\n dateView.classList.add('td-half');\r\n timeView.classList.add('td-half');\r\n\r\n row.appendChild(dateView);\r\n row.appendChild(timeView);\r\n template.appendChild(row);\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n this._widget = template;\r\n return;\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n if (this._hasDate) {\r\n if (this._hasTime) {\r\n dateView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode !== 'clock')\r\n dateView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(dateView);\r\n }\r\n\r\n if (this._hasTime) {\r\n if (this._hasDate) {\r\n timeView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode === 'clock')\r\n timeView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(timeView);\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n const arrow = document.createElement('div');\r\n arrow.classList.add('arrow');\r\n arrow.setAttribute('data-popper-arrow', '');\r\n template.appendChild(arrow);\r\n\r\n this._widget = template;\r\n }\r\n\r\n /**\r\n * Returns true if the hours, minutes, or seconds component is turned on\r\n */\r\n get _hasTime(): boolean {\r\n return (\r\n this._context._options.display.components.clock &&\r\n (this._context._options.display.components.hours ||\r\n this._context._options.display.components.minutes ||\r\n this._context._options.display.components.seconds)\r\n );\r\n }\r\n\r\n /**\r\n * Returns true if the year, month, or date component is turned on\r\n */\r\n get _hasDate(): boolean {\r\n return (\r\n this._context._options.display.components.calendar &&\r\n (this._context._options.display.components.year ||\r\n this._context._options.display.components.month ||\r\n this._context._options.display.components.date)\r\n );\r\n }\r\n\r\n /**\r\n * Get the toolbar html based on options like buttons.today\r\n * @private\r\n */\r\n get _toolbar(): HTMLElement[] {\r\n const toolbar = [];\r\n\r\n if (this._context._options.display.buttons.today) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.today);\r\n div.setAttribute('title', this._context._options.localization.today);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.today)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (\r\n !this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n let title, icon;\r\n if (this._context._options.display.viewMode === 'clock') {\r\n title = this._context._options.localization.selectDate;\r\n icon = this._context._options.display.icons.date;\r\n } else {\r\n title = this._context._options.localization.selectTime;\r\n icon = this._context._options.display.icons.time;\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.togglePicker);\r\n div.setAttribute('title', title);\r\n\r\n div.appendChild(this._iconTag(icon));\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.clear) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.clear);\r\n div.setAttribute('title', this._context._options.localization.clear);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.clear)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.close) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.close);\r\n div.setAttribute('title', this._context._options.localization.close);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.close)\r\n );\r\n toolbar.push(div);\r\n }\r\n\r\n return toolbar;\r\n }\r\n\r\n /***\r\n * Builds the base header template with next and previous icons\r\n * @private\r\n */\r\n get _headTemplate(): HTMLElement {\r\n const calendarHeader = document.createElement('div');\r\n calendarHeader.classList.add(Namespace.css.calendarHeader);\r\n\r\n const previous = document.createElement('div');\r\n previous.classList.add(Namespace.css.previous);\r\n previous.setAttribute('data-action', ActionTypes.previous);\r\n previous.appendChild(\r\n this._iconTag(this._context._options.display.icons.previous)\r\n );\r\n\r\n const switcher = document.createElement('div');\r\n switcher.classList.add(Namespace.css.switch);\r\n switcher.setAttribute('data-action', ActionTypes.pickerSwitch);\r\n\r\n const next = document.createElement('div');\r\n next.classList.add(Namespace.css.next);\r\n next.setAttribute('data-action', ActionTypes.next);\r\n next.appendChild(this._iconTag(this._context._options.display.icons.next));\r\n\r\n calendarHeader.append(previous, switcher, next);\r\n return calendarHeader;\r\n }\r\n\r\n /**\r\n * Builds an icon tag as either an ``\r\n * or with icons.type is `sprites` then an svg tag instead\r\n * @param iconClass\r\n * @private\r\n */\r\n _iconTag(iconClass: string): HTMLElement {\r\n if (this._context._options.display.icons.type === 'sprites') {\r\n const svg = document.createElement('svg');\r\n svg.innerHTML = ``;\r\n return svg;\r\n }\r\n const icon = document.createElement('i');\r\n DOMTokenList.prototype.add.apply(icon.classList, iconClass.split(' '));\r\n return icon;\r\n }\r\n\r\n /**\r\n * A document click event to hide the widget if click is outside\r\n * @private\r\n * @param e MouseEvent\r\n */\r\n private _documentClickEvent = (e: MouseEvent) => {\r\n if (this._context._options.display.keepOpen ||\r\n this._context._options.debug ||\r\n (window as any).debug) return;\r\n\r\n if (\r\n this._isVisible &&\r\n !e.composedPath().includes(this.widget) && // click inside the widget\r\n !e.composedPath()?.includes(this._context._element) // click on the element\r\n ) {\r\n this.hide();\r\n }\r\n };\r\n\r\n /**\r\n * Click event for any action like selecting a date\r\n * @param e MouseEvent\r\n * @private\r\n */\r\n private _actionsClickEvent = (e: MouseEvent) => {\r\n this._context._action.do(e);\r\n };\r\n\r\n /**\r\n * Causes the widget to get rebuilt on next show. If the picker is already open\r\n * then hide and reshow it.\r\n * @private\r\n */\r\n _rebuild() {\r\n const wasVisible = this._isVisible;\r\n if (wasVisible) this.hide();\r\n this._dispose();\r\n if (wasVisible) {\r\n this.show();\r\n }\r\n }\r\n}\r\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Dates from './dates';\n\n/**\n * Main class for date validation rules based on the options provided.\n */\nexport default class Validation {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Checks to see if the target date is valid based on the rules provided in the options.\n * Granularity can be provide to chek portions of the date instead of the whole.\n * @param targetDate\n * @param granularity\n */\n isValid(targetDate: DateTime, granularity?: Unit): boolean {\n if (\n this._context._options.restrictions.disabledDates.length > 0 &&\n this._isInDisabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledDates.length > 0 &&\n !this._isInEnabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.daysOfWeekDisabled?.length > 0 &&\n this._context._options.restrictions.daysOfWeekDisabled.indexOf(\n targetDate.weekDay\n ) !== -1\n ) {\n return false;\n }\n\n if (\n this._context._options.restrictions.minDate &&\n targetDate.isBefore(\n this._context._options.restrictions.minDate,\n granularity\n )\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.maxDate &&\n targetDate.isAfter(\n this._context._options.restrictions.maxDate,\n granularity\n )\n ) {\n return false;\n }\n\n if (\n granularity === Unit.hours ||\n granularity === Unit.minutes ||\n granularity === Unit.seconds\n ) {\n if (\n this._context._options.restrictions.disabledHours.length > 0 &&\n this._isInDisabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledHours.length > 0 &&\n !this._isInEnabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.disabledTimeIntervals.length > 0\n ) {\n for (\n let i = 0;\n i < this._context._options.restrictions.disabledTimeIntervals.length;\n i++\n ) {\n if (\n targetDate.isBetween(\n this._context._options.restrictions.disabledTimeIntervals[i].from,\n this._context._options.restrictions.disabledTimeIntervals[i].to\n )\n )\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Checks to see if the disabledDates option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInDisabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledDates ||\n this._context._options.restrictions.disabledDates.length === 0\n )\n return false;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.disabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the enabledDates option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInEnabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledDates ||\n this._context._options.restrictions.enabledDates.length === 0\n )\n return true;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.enabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the disabledHours option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInDisabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledHours ||\n this._context._options.restrictions.disabledHours.length === 0\n )\n return false;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.disabledHours.find(\n (x) => x === formattedDate\n );\n }\n\n /**\n * Checks to see if the enabledHours option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInEnabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledHours ||\n this._context._options.restrictions.enabledHours.length === 0\n )\n return true;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.enabledHours.find(\n (x) => x === formattedDate\n );\n }\n}\n","import Display from './display/index';\nimport Validation from './validation';\nimport Dates from './dates';\nimport Actions, { ActionTypes } from './actions';\nimport { DatePickerModes, DefaultOptions } from './conts';\nimport { DateTime, DateTimeFormatOptions, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options, { OptionConverter } from './options';\nimport {\n BaseEvent,\n ChangeEvent,\n ViewUpdateEvent,\n FailEvent,\n} from './event-types';\n\n/**\n * A robust and powerful date/time picker component.\n */\nclass TempusDominus {\n dates: Dates;\n\n _options: Options;\n _currentViewMode = 0;\n _subscribers: { [key: string]: ((event: any) => {})[] } = {};\n _element: HTMLElement;\n _input: HTMLInputElement;\n _unset: boolean;\n _minViewModeNumber = 0;\n _display: Display;\n _validation: Validation;\n _action: Actions;\n private _isDisabled = false;\n private _notifyChangeEventContext = 0;\n private _toggle: HTMLElement;\n private _currentPromptTimeTimeout: any;\n\n constructor(element: HTMLElement, options: Options = {} as Options) {\n if (!element) {\n Namespace.errorMessages.mustProvideElement;\n }\n this._element = element;\n this._options = this._initializeOptions(options, DefaultOptions, true);\n this._viewDate.setLocale(this._options.localization.locale);\n this._unset = true;\n\n this._display = new Display(this);\n this._validation = new Validation(this);\n this.dates = new Dates(this);\n this._action = new Actions(this);\n\n this._initializeInput();\n this._initializeToggle();\n\n if (this._options.display.inline) this._display.show();\n }\n\n _viewDate = new DateTime();\n\n get viewDate() {\n return this._viewDate;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Update the picker options. If `reset` is provide `options` will be merged with DefaultOptions instead.\n * @param options\n * @param reset\n * @public\n */\n updateOptions(options, reset = false): void {\n if (reset) this._options = this._initializeOptions(options, DefaultOptions);\n else this._options = this._initializeOptions(options, this._options);\n this._display._rebuild();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Toggles the picker open or closed. If the picker is disabled, nothing will happen.\n * @public\n */\n toggle(): void {\n if (this._isDisabled) return;\n this._display.toggle();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Shows the picker unless the picker is disabled.\n * @public\n */\n show(): void {\n if (this._isDisabled) return;\n this._display.show();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker unless the picker is disabled.\n * @public\n */\n hide(): void {\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Disables the picker and the target input field.\n * @public\n */\n disable(): void {\n this._isDisabled = true;\n // todo this might be undesired. If a dev disables the input field to\n // only allow using the picker, this will break that.\n this._input?.setAttribute('disabled', 'disabled');\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Enables the picker and the target input field.\n * @public\n */\n enable(): void {\n this._isDisabled = false;\n this._input?.removeAttribute('disabled');\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Clears all the selected dates\n * @public\n */\n clear(): void {\n this.dates.clear();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Allows for a direct subscription to picker events, without having to use addEventListener on the element.\n * @param eventTypes See Namespace.Events\n * @param callbacks Function to call when event is triggered\n * @public\n */\n subscribe(\n eventTypes: string | string[],\n callbacks: (event: any) => void | ((event: any) => void)[]\n ): { unsubscribe: void }[] {\n if (typeof eventTypes === 'string') {\n eventTypes = [eventTypes];\n }\n let callBackArray = [];\n if (!Array.isArray(callbacks)) {\n callBackArray = [callbacks];\n } else {\n callBackArray = callbacks;\n }\n\n if (eventTypes.length !== callBackArray.length) {\n Namespace.errorMessages.subscribeMismatch;\n }\n\n const returnArray = [];\n\n for (let i = 0; i < eventTypes.length; i++) {\n const eventType = eventTypes[i];\n if (!Array.isArray(this._subscribers[eventType])) {\n this._subscribers[eventType] = [];\n }\n\n this._subscribers[eventType].push(callBackArray[i]);\n\n returnArray.push({\n unsubscribe: this._unsubscribe.bind(\n this,\n eventType,\n this._subscribers[eventType].length - 1\n ),\n });\n\n if (eventTypes.length === 1) {\n return returnArray[0];\n }\n }\n\n return returnArray;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker and removes event listeners\n */\n dispose() {\n this._display.hide();\n // this will clear the document click event listener\n this._display._dispose();\n this._input?.removeEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input?.removeEventListener('click', this._toggleClickEvent);\n }\n this._toggle.removeEventListener('click', this._toggleClickEvent);\n this._subscribers = {};\n }\n\n /**\n * Triggers an event like ChangeEvent when the picker has updated the value\n * of a selected date.\n * @param event Accepts a BaseEvent object.\n * @private\n */\n _triggerEvent(event: BaseEvent) {\n // checking hasOwnProperty because the BasicEvent also falls through here otherwise\n if ((event as ChangeEvent) && event.hasOwnProperty('date')) {\n const { date, oldDate, isClear } = event as ChangeEvent;\n // this was to prevent a max call stack error\n // https://github.com/tempusdominus/core/commit/15a280507f5277b31b0b3319ab1edc7c19a000fb\n // todo see if this is still needed or if there's a cleaner way\n this._notifyChangeEventContext++;\n if (\n (date && oldDate && date.isSame(oldDate)) ||\n (!isClear && !date && !oldDate) ||\n this._notifyChangeEventContext > 1\n ) {\n this._notifyChangeEventContext = 0;\n return;\n }\n this._handleAfterChangeEvent(event as ChangeEvent);\n }\n\n this._element.dispatchEvent(\n new CustomEvent(event.type, { detail: event as any })\n );\n\n if ((window as any).jQuery) {\n const $ = (window as any).jQuery;\n $(this._element).trigger(event);\n }\n\n const publish = () => {\n // return if event is not subscribed\n if (!Array.isArray(this._subscribers[event.type])) {\n return;\n }\n\n // Trigger callback for each subscriber\n this._subscribers[event.type].forEach((callback) => {\n callback(event);\n });\n };\n\n publish();\n\n this._notifyChangeEventContext = 0;\n }\n\n /**\n * Fires a ViewUpdate event when, for example, the month view is changed.\n * @param {Unit} unit\n * @private\n */\n _viewUpdate(unit: Unit) {\n this._triggerEvent({\n type: Namespace.events.update,\n change: unit,\n viewDate: this._viewDate.clone,\n } as ViewUpdateEvent);\n }\n\n private _unsubscribe(eventName, index) {\n this._subscribers[eventName].splice(index, 1);\n }\n\n /**\n * Merges two Option objects together and validates options type\n * @param config new Options\n * @param mergeTo Options to merge into\n * @param includeDataset When true, the elements data-td attributes will be included in the\n * @private\n */\n private _initializeOptions(\n config: Options,\n mergeTo: Options,\n includeDataset = false\n ): Options {\n config = OptionConverter._mergeOptions(config, mergeTo);\n if (includeDataset)\n config = OptionConverter._dataToOptions(this._element, config);\n\n OptionConverter._validateConflcits(config);\n\n config.viewDate = config.viewDate.setLocale(config.localization.locale);\n\n if (!this._viewDate.isSame(config.viewDate)) {\n this._viewDate = config.viewDate;\n }\n\n /**\n * Sets the minimum view allowed by the picker. For example the case of only\n * allowing year and month to be selected but not date.\n */\n if (config.display.components.year) {\n this._minViewModeNumber = 2;\n }\n if (config.display.components.month) {\n this._minViewModeNumber = 1;\n }\n if (config.display.components.date) {\n this._minViewModeNumber = 0;\n }\n\n this._currentViewMode = Math.max(\n this._minViewModeNumber,\n this._currentViewMode\n );\n\n // Update view mode if needed\n if (\n DatePickerModes[this._currentViewMode].name !== config.display.viewMode\n ) {\n this._currentViewMode = Math.max(\n DatePickerModes.findIndex((x) => x.name === config.display.viewMode),\n this._minViewModeNumber\n );\n }\n\n // defaults the input format based on the components enabled\n if (config.hooks.inputFormat === undefined) {\n const components = config.display.components;\n config.hooks.inputFormat = (date: DateTime) => {\n return date.format({\n year: components.calendar && components.year ? 'numeric' : undefined,\n month:\n components.calendar && components.month ? '2-digit' : undefined,\n day: components.calendar && components.date ? '2-digit' : undefined,\n hour:\n components.clock && components.hours\n ? components.useTwentyfourHour\n ? '2-digit'\n : 'numeric'\n : undefined,\n minute:\n components.clock && components.minutes ? '2-digit' : undefined,\n second:\n components.clock && components.seconds ? '2-digit' : undefined,\n hour12: !components.useTwentyfourHour,\n });\n };\n }\n\n if (this._display?.isVisible) {\n this._display._update('all');\n }\n\n return config;\n }\n\n /**\n * Checks if an input field is being used, attempts to locate one and sets an\n * event listener if found.\n * @private\n */\n private _initializeInput() {\n if (this._element.tagName == 'INPUT') {\n this._input = this._element as HTMLInputElement;\n } else {\n let query = this._element.dataset.tdTargetInput;\n if (query == undefined || query == 'nearest') {\n this._input = this._element.querySelector('input');\n } else {\n this._input = this._element.querySelector(query);\n }\n }\n\n if (!this._input) return;\n\n this._input.addEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input.addEventListener('click', this._toggleClickEvent);\n }\n\n if (this._input.value) {\n this._inputChangeEvent();\n }\n }\n\n /**\n * Attempts to locate a toggle for the picker and sets an event listener\n * @private\n */\n private _initializeToggle() {\n if (this._options.display.inline) return;\n let query = this._element.dataset.tdTargetToggle;\n if (query == 'nearest') {\n query = '[data-td-toggle=\"datetimepicker\"]';\n }\n this._toggle =\n query == undefined ? this._element : this._element.querySelector(query);\n this._toggle.addEventListener('click', this._toggleClickEvent);\n }\n\n /**\n * If the option is enabled this will render the clock view after a date pick.\n * @param e change event\n * @private\n */\n private _handleAfterChangeEvent(e: ChangeEvent) {\n if (\n // options is disabled\n !this._options.promptTimeOnDateChange ||\n this._options.display.inline ||\n this._options.display.sideBySide ||\n // time is disabled\n !this._display._hasTime ||\n // clock component is already showing\n this._display.widget\n ?.getElementsByClassName(Namespace.css.show)[0]\n .classList.contains(Namespace.css.timeContainer)\n )\n return;\n\n // First time ever. If useCurrent option is set to true (default), do nothing\n // because the first date is selected automatically.\n // or date didn't change (time did) or date changed because time did.\n if (\n (!e.oldDate && this._options.useCurrent) ||\n (e.oldDate && e.date?.isSame(e.oldDate))\n ) {\n return;\n }\n\n clearTimeout(this._currentPromptTimeTimeout);\n this._currentPromptTimeTimeout = setTimeout(() => {\n if (this._display.widget) {\n this._action.do(\n {\n currentTarget: this._display.widget.querySelector(\n `.${Namespace.css.switch} div`\n ),\n },\n ActionTypes.togglePicker\n );\n }\n }, this._options.promptTimeOnDateChangeTransitionDelay);\n }\n\n /**\n * Event for when the input field changes. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _inputChangeEvent = () => {\n const setViewDate = () => {\n if (this.dates.lastPicked) this._viewDate = this.dates.lastPicked;\n };\n\n const value = this._input.value;\n if (this._options.multipleDates) {\n try {\n const valueSplit = value.split(this._options.multipleDatesSeparator);\n for (let i = 0; i < valueSplit.length; i++) {\n if (this._options.hooks.inputParse) {\n this.dates.set(\n this._options.hooks.inputParse(valueSplit[i]),\n i,\n 'input'\n );\n } else {\n this.dates.set(valueSplit[i], i, 'input');\n }\n }\n setViewDate();\n } catch {\n console.warn(\n 'TD: Something went wrong trying to set the multidate values from the input field.'\n );\n }\n } else {\n if (this._options.hooks.inputParse) {\n this.dates.set(this._options.hooks.inputParse(value), 0, 'input');\n } else {\n this.dates.set(value, 0, 'input');\n }\n setViewDate();\n }\n };\n\n /**\n * Event for when the toggle is clicked. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _toggleClickEvent = () => {\n this.toggle();\n };\n}\n\nexport {\n TempusDominus,\n Namespace,\n DefaultOptions,\n DateTime,\n Options,\n Unit,\n DateTimeFormatOptions,\n};\n"],"names":["Unit","SecondDisplay","createPopper"],"mappings":";;;;;;;;;;;AAAYA;IAAZ,WAAY,IAAI;QACd,2BAAmB,CAAA;QACnB,2BAAmB,CAAA;QACnB,uBAAe,CAAA;QACf,qBAAa,CAAA;QACb,uBAAe,CAAA;QACf,qBAAa,CAAA;IACf,CAAC,EAPWA,YAAI,KAAJA,YAAI,QAOf;IAOD;;;;UAIa,QAAS,SAAQ,IAAI;QAAlC;;;;;YAIE,WAAM,GAAG,SAAS,CAAC;SA6YpB;;;;;QAvYC,SAAS,CAAC,KAAa;YACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,OAAO,IAAI,CAAC;SACb;;;;;;QAOD,OAAO,OAAO,CAAC,IAAU;YACvB,IAAI,CAAC,IAAI;gBAAE,MAAM,oBAAoB,CAAC;YACtC,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,OAAO,EAAE,EACd,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,UAAU,EAAE,EACjB,IAAI,CAAC,UAAU,EAAE,EACjB,IAAI,CAAC,eAAe,EAAE,CACvB,CAAC;SACH;;;;QAKD,IAAI,KAAK;YACP,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,eAAe,EAAE,CACvB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC1B;;;;;;;QAQD,OAAO,CAAC,IAAsB;YAC5B,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,SAAS,IAAI,gBAAgB,CAAC;YAClE,QAAQ,IAAI;gBACV,KAAK,SAAS;oBACZ,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;oBACxB,MAAM;gBACR,KAAK,SAAS;oBACZ,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACtB,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBACzB,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC1B,MAAM;gBACR,KAAK,SAAS;oBACZ,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACxB,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;oBAC7C,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACxB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAChB,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACxB,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACpB,MAAM;aACT;YACD,OAAO,IAAI,CAAC;SACb;;;;;;;QAQD,KAAK,CAAC,IAAsB;YAC1B,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,SAAS,IAAI,gBAAgB,CAAC;YAClE,QAAQ,IAAI;gBACV,KAAK,SAAS;oBACZ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;gBACR,KAAK,SAAS;oBACZ,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;oBACzB,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;oBAC7B,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;oBAC/B,MAAM;gBACR,KAAK,SAAS;oBACZ,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACxB,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;oBAC7C,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,CAAC,KAAK,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACtB,IAAI,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,CAAC;oBAC/B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAChB,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,CAAC,KAAK,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACtB,IAAI,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;oBAC9B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAChB,MAAM;aACT;YACD,OAAO,IAAI,CAAC;SACb;;;;;;;;QASD,UAAU,CAAC,KAAa,EAAE,IAAU;YAClC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,SAAS,IAAI,gBAAgB,CAAC;YAClE,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;YACpB,OAAO,IAAI,CAAC;SACb;;;;;;;;QASD,MAAM,CAAC,QAA+B,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM;YAC1D,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC/D;;;;;;;QAQD,QAAQ,CAAC,OAAiB,EAAE,IAAW;YACrC,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;YACrD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,SAAS,IAAI,gBAAgB,CAAC;YAClE,QACE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAC1E;SACH;;;;;;;QAQD,OAAO,CAAC,OAAiB,EAAE,IAAW;YACpC,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;YACrD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,SAAS,IAAI,gBAAgB,CAAC;YAClE,QACE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAC1E;SACH;;;;;;;QAQD,MAAM,CAAC,OAAiB,EAAE,IAAW;YACnC,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;YACvD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,SAAS,IAAI,gBAAgB,CAAC;YAClE,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACpC,QACE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EACtE;SACH;;;;;;;;;QAUD,SAAS,CACP,IAAc,EACd,KAAe,EACf,IAAW,EACX,cAAyC,IAAI;YAE7C,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,SAAS,IAAI,gBAAgB,CAAC;YAC1E,MAAM,eAAe,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;YAC/C,MAAM,gBAAgB,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;YAEhD,QACE,CAAC,CAAC,eAAe;kBACb,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;kBACxB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;iBAC3B,gBAAgB;sBACb,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;sBAC1B,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;iBAChC,CAAC,eAAe;sBACb,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;sBACzB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;qBAC1B,gBAAgB;0BACb,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;0BACzB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EACnC;SACH;;;;;;QAOD,KAAK,CACH,MAAM,GAAG,IAAI,CAAC,MAAM,EACpB,WAAgB,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE;YAExD,MAAM,KAAK,GAAG,EAAE,CAAC;YACjB,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC;iBACtC,aAAa,CAAC,IAAI,CAAC;iBACnB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;iBACnC,OAAO,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7C,OAAO,KAAK,CAAC;SACd;;;;QAKD,IAAI,OAAO;YACT,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;SAC1B;;;;QAKD,IAAI,OAAO,CAAC,KAAa;YACvB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SACxB;;;;QAKD,IAAI,gBAAgB;YAClB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;SAC3C;;;;QAKD,IAAI,OAAO;YACT,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;SAC1B;;;;QAKD,IAAI,OAAO,CAAC,KAAa;YACvB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SACxB;;;;QAKD,IAAI,gBAAgB;YAClB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;SAC3C;;;;QAKD,IAAI,KAAK;YACP,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;SACxB;;;;QAKD,IAAI,KAAK,CAAC,KAAa;YACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACtB;;;;QAKD,IAAI,cAAc;YAChB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;SACzC;;;;QAKD,IAAI,oBAAoB;YACtB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;SACvD;;;;;;;QAQD,QAAQ,CAAC,SAAiB,IAAI,CAAC,MAAM;;YACnC,OAAO,MAAA,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;gBACrC,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,IAAI;aACN,CAAC;iBACN,aAAa,CAAC,IAAI,CAAC;iBACnB,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,0CAAE,KAAK,CAAC;SAC/C;;;;QAKD,IAAI,IAAI;YACN,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;SACvB;;;;QAKD,IAAI,IAAI,CAAC,KAAa;YACpB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SACrB;;;;QAKD,IAAI,aAAa;YACf,OAAO,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1D;;;;;QAMD,IAAI,IAAI;YACN,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9C,WAAW,CAAC,OAAO,CACjB,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CACzD,CAAC;YACF,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;SAC7E;;;;QAKD,IAAI,OAAO;YACT,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;SACtB;;;;QAKD,IAAI,KAAK;YACP,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;SACxB;;;;QAKD,IAAI,KAAK,CAAC,KAAa;YACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACtB;;;;QAKD,IAAI,cAAc;YAChB,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;SACjE;;;;QAKD,IAAI,IAAI;YACN,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;SAC3B;;;;QAKD,IAAI,IAAI,CAAC,KAAa;YACpB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACzB;;;UChaU,OAAQ,SAAQ,KAAK;KAEjC;UAEY,aAAa;QAA1B;YACU,SAAI,GAAG,KAAK,CAAC;;;;;;;YAmJrB,2BAAsB,GAAG,4BAA4B,CAAC;;;;;YAMtD,uBAAkB,GAAG,0BAA0B,CAAC;;SAGjD;;;;;;QApJC,gBAAgB,CAAC,UAAkB;YACjC,MAAM,KAAK,GAAG,IAAI,OAAO,CACvB,GAAG,IAAI,CAAC,IAAI,uBAAuB,UAAU,iCAAiC,CAC/E,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;;QAMD,iBAAiB,CAAC,UAAoB;YACpC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpE,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;;;;;;QAUD,qBAAqB,CACnB,UAAkB,EAClB,QAAgB,EAChB,YAAsB;YAEtB,MAAM,KAAK,GAAG,IAAI,OAAO,CACvB,GACE,IAAI,CAAC,IACP,6BAA6B,UAAU,gCAAgC,QAAQ,wBAAwB,YAAY,CAAC,IAAI,CACtH,IAAI,CACL,EAAE,CACJ,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;;;;;;QAUD,YAAY,CAAC,UAAkB,EAAE,OAAe,EAAE,YAAoB;YACpE,MAAM,KAAK,GAAG,IAAI,OAAO,CACvB,GAAG,IAAI,CAAC,IAAI,oBAAoB,UAAU,kBAAkB,OAAO,4BAA4B,YAAY,EAAE,CAC9G,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;;;;;QASD,gBAAgB,CAAC,UAAkB,EAAE,KAAa,EAAE,KAAa;YAC/D,MAAM,KAAK,GAAG,IAAI,OAAO,CACvB,GAAG,IAAI,CAAC,IAAI,IAAI,UAAU,wCAAwC,KAAK,QAAQ,KAAK,GAAG,CACxF,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;;;;;QASD,iBAAiB,CAAC,UAAkB,EAAE,IAAS,EAAE,IAAI,GAAG,KAAK;YAC3D,MAAM,KAAK,GAAG,IAAI,OAAO,CACvB,GAAG,IAAI,CAAC,IAAI,+BAA+B,IAAI,mBAAmB,UAAU,GAAG,CAChF,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,IAAI,CAAC,IAAI;gBAAE,MAAM,KAAK,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACrB;;;;QAKD,kBAAkB;YAChB,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,2BAA2B,CAAC,CAAC;YACnE,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;;QAMD,iBAAiB;YACf,MAAM,KAAK,GAAG,IAAI,OAAO,CACvB,GAAG,IAAI,CAAC,IAAI,+DAA+D,CAC5E,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;QAKD,wBAAwB,CAAC,OAAgB;YACvC,MAAM,KAAK,GAAG,IAAI,OAAO,CACvB,GAAG,IAAI,CAAC,IAAI,uDAAuD,OAAO,EAAE,CAC7E,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;;QAMD,UAAU;YACR,OAAO,CAAC,IAAI,CACV,GAAG,IAAI,CAAC,IAAI,uFAAuF,CACpG,CAAC;SACH;;;IC/IH;IACA,MAAM,IAAI,GAAG,gBAAgB,EAC3B,OAAO,GAAG,cAAc,EACxB,OAAO,GAAG,IAAI,CAAC;IAEjB;;;IAGA,MAAM,MAAM;QAAZ;YACE,QAAG,GAAG,IAAI,OAAO,EAAE,CAAC;;;;;YAMpB,WAAM,GAAG,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC;;;;;YAM7B,WAAM,GAAG,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC;;;;;YAM7B,UAAK,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;;;;;YAM3B,SAAI,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;;;;;YAMzB,SAAI,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;;;YAKzB,SAAI,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;YACzB,UAAK,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,UAAK,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,YAAO,GAAG,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC;SAChC;KAAA;IAED,MAAM,GAAG;QAAT;;;;YAIE,WAAM,GAAG,GAAG,IAAI,SAAS,CAAC;;;;YAK1B,mBAAc,GAAG,iBAAiB,CAAC;;;;YAKnC,WAAM,GAAG,eAAe,CAAC;;;;YAKzB,YAAO,GAAG,SAAS,CAAC;;;;YAKpB,gBAAW,GAAG,cAAc,CAAC;;;;YAK7B,eAAU,GAAG,gBAAgB,CAAC;;;;YAK9B,aAAQ,GAAG,UAAU,CAAC;;;;YAKtB,SAAI,GAAG,MAAM,CAAC;;;;;YAMd,aAAQ,GAAG,UAAU,CAAC;;;;;YAMtB,QAAG,GAAG,KAAK,CAAC;;;;;YAMZ,QAAG,GAAG,KAAK,CAAC;;;;YAKZ,WAAM,GAAG,QAAQ,CAAC;;;;;YAOlB,kBAAa,GAAG,gBAAgB,CAAC;;;;YAKjC,qBAAgB,GAAG,GAAG,IAAI,CAAC,aAAa,UAAU,CAAC;;;;YAKnD,WAAM,GAAG,QAAQ,CAAC;;;;YAKlB,mBAAc,GAAG,GAAG,IAAI,CAAC,aAAa,QAAQ,CAAC;;;;YAK/C,SAAI,GAAG,MAAM,CAAC;;;;YAKd,oBAAe,GAAG,GAAG,IAAI,CAAC,aAAa,SAAS,CAAC;;;;YAKjD,UAAK,GAAG,OAAO,CAAC;;;;YAKhB,kBAAa,GAAG,GAAG,IAAI,CAAC,aAAa,OAAO,CAAC;;;;YAK7C,QAAG,GAAG,KAAK,CAAC;;;;;YAMZ,kBAAa,GAAG,IAAI,CAAC;;;;YAKrB,iBAAY,GAAG,KAAK,CAAC;;;;YAKrB,UAAK,GAAG,OAAO,CAAC;;;;YAKhB,YAAO,GAAG,SAAS,CAAC;;;;;;YASpB,kBAAa,GAAG,gBAAgB,CAAC;;;;YAKjC,cAAS,GAAG,WAAW,CAAC;;;;YAKxB,mBAAc,GAAG,GAAG,IAAI,CAAC,aAAa,QAAQ,CAAC;;;;YAK/C,kBAAa,GAAG,GAAG,IAAI,CAAC,aAAa,OAAO,CAAC;;;;YAK7C,oBAAe,GAAG,GAAG,IAAI,CAAC,aAAa,SAAS,CAAC;;;;YAKjD,oBAAe,GAAG,GAAG,IAAI,CAAC,aAAa,SAAS,CAAC;;;;YAKjD,SAAI,GAAG,MAAM,CAAC;;;;YAKd,WAAM,GAAG,QAAQ,CAAC;;;;YAKlB,WAAM,GAAG,QAAQ,CAAC;;;;YAKlB,mBAAc,GAAG,gBAAgB,CAAC;;;;;;YASlC,SAAI,GAAG,MAAM,CAAC;;;;;YAMd,eAAU,GAAG,eAAe,CAAC;;;;YAK7B,aAAQ,GAAG,aAAa,CAAC;;;;;YAOzB,WAAM,GAAG,QAAQ,CAAC;SACnB;KAAA;UAEoB,SAAS;;IACrB,cAAI,GAAG,IAAI,CAAC;IACnB;IACO,iBAAO,GAAG,OAAO,CAAC;IAClB,iBAAO,GAAG,OAAO,CAAC;IAElB,gBAAM,GAAG,IAAI,MAAM,EAAE,CAAC;IAEtB,aAAG,GAAG,IAAI,GAAG,EAAE,CAAC;IAEhB,uBAAa,GAAG,IAAI,aAAa,EAAE;;UC/QtC,cAAc,GAAY;QAC9B,YAAY,EAAE;YACZ,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,SAAS;YAClB,aAAa,EAAE,EAAE;YACjB,YAAY,EAAE,EAAE;YAChB,kBAAkB,EAAE,EAAE;YACtB,qBAAqB,EAAE,EAAE;YACzB,aAAa,EAAE,EAAE;YACjB,YAAY,EAAE,EAAE;SACjB;QACD,OAAO,EAAE;YACP,KAAK,EAAE;gBACL,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,iBAAiB;gBACvB,EAAE,EAAE,iBAAiB;gBACrB,IAAI,EAAE,mBAAmB;gBACzB,QAAQ,EAAE,qBAAqB;gBAC/B,IAAI,EAAE,sBAAsB;gBAC5B,KAAK,EAAE,uBAAuB;gBAC9B,KAAK,EAAE,cAAc;gBACrB,KAAK,EAAE,cAAc;aACtB;YACD,UAAU,EAAE,KAAK;YACjB,aAAa,EAAE,KAAK;YACpB,QAAQ,EAAE,UAAU;YACpB,gBAAgB,EAAE,QAAQ;YAC1B,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE;gBACP,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,KAAK;aACb;YACD,UAAU,EAAE;gBACV,QAAQ,EAAE,IAAI;gBACd,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,IAAI;gBACX,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,KAAK;gBACd,iBAAiB,EAAE,KAAK;aACzB;YACD,MAAM,EAAE,KAAK;SACd;QACD,QAAQ,EAAE,CAAC;QACX,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,SAAS;QACtB,YAAY,EAAE;YACZ,KAAK,EAAE,aAAa;YACpB,KAAK,EAAE,iBAAiB;YACxB,KAAK,EAAE,kBAAkB;YACzB,WAAW,EAAE,cAAc;YAC3B,aAAa,EAAE,gBAAgB;YAC/B,SAAS,EAAE,YAAY;YACvB,UAAU,EAAE,aAAa;YACzB,YAAY,EAAE,eAAe;YAC7B,QAAQ,EAAE,WAAW;YACrB,YAAY,EAAE,eAAe;YAC7B,cAAc,EAAE,iBAAiB;YACjC,UAAU,EAAE,aAAa;YACzB,eAAe,EAAE,kBAAkB;YACnC,WAAW,EAAE,cAAc;YAC3B,QAAQ,EAAE,WAAW;YACrB,aAAa,EAAE,gBAAgB;YAC/B,aAAa,EAAE,gBAAgB;YAC/B,UAAU,EAAE,aAAa;YACzB,eAAe,EAAE,kBAAkB;YACnC,eAAe,EAAE,kBAAkB;YACnC,UAAU,EAAE,aAAa;YACzB,eAAe,EAAE,kBAAkB;YACnC,eAAe,EAAE,kBAAkB;YACnC,cAAc,EAAE,iBAAiB;YACjC,UAAU,EAAE,aAAa;YACzB,UAAU,EAAE,aAAa;YACzB,mBAAmB,EAAE,MAAM;YAC3B,MAAM,EAAE,SAAS;SAClB;QACD,WAAW,EAAE,KAAK;QAClB,KAAK,EAAE,KAAK;QACZ,gBAAgB,EAAE,KAAK;QACvB,QAAQ,EAAE,IAAI,QAAQ,EAAE;QACxB,aAAa,EAAE,KAAK;QACpB,sBAAsB,EAAE,IAAI;QAC5B,sBAAsB,EAAE,KAAK;QAC7B,qCAAqC,EAAE,GAAG;QAC1C,KAAK,EAAE;YACL,UAAU,EAAE,SAAS;YACrB,WAAW,EAAE,SAAS;SACvB;MACD;IAEF,MAAM,eAAe,GAKf;QACJ;YACE,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,aAAa;YACtC,IAAI,EAAEA,YAAI,CAAC,KAAK;YAChB,IAAI,EAAE,CAAC;SACR;QACD;YACE,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,eAAe;YACxC,IAAI,EAAEA,YAAI,CAAC,IAAI;YACf,IAAI,EAAE,CAAC;SACR;QACD;YACE,IAAI,EAAE,OAAO;YACb,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,cAAc;YACvC,IAAI,EAAEA,YAAI,CAAC,IAAI;YACf,IAAI,EAAE,EAAE;SACT;QACD;YACE,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,gBAAgB;YACzC,IAAI,EAAEA,YAAI,CAAC,IAAI;YACf,IAAI,EAAE,GAAG;SACV;KACF;;IC/HD;;;UAGqB,QAAQ;QAA7B;;;;;;YAmFU,qCAAgC,GAAG,CAAC,OAAoB;gBAC9D,IAAI,CAAC,OAAO,EAAE;oBACZ,OAAO,CAAC,CAAC;iBACV;;gBAGD,IAAI,EAAE,kBAAkB,EAAE,eAAe,EAAE,GACzC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBAEnC,MAAM,uBAAuB,GAAG,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;gBACtE,MAAM,oBAAoB,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;;gBAGhE,IAAI,CAAC,uBAAuB,IAAI,CAAC,oBAAoB,EAAE;oBACrD,OAAO,CAAC,CAAC;iBACV;;gBAGD,kBAAkB,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtD,eAAe,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEhD,QACE,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC;oBACpC,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC;oBACpC,IAAI,EACJ;aACH,CAAC;SACH;;;;;QAvGC,MAAM,CAAC,MAAmB,EAAE,QAAQ,GAAG,SAAS;YAC9C,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBACjD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;aAC7B;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;aAC7B;SACF;;;;;QAMD,IAAI,CAAC,MAAmB,EAAE,QAAQ,GAAG,SAAS;YAC5C,IACE,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;gBACnD,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;gBAE7C,OAAO;YAET,MAAM,QAAQ,GAAG;gBACf,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAClD,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACjE,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;gBACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,IAAI,QAAQ;oBAAE,QAAQ,EAAE,CAAC;aAC1B,CAAC;YAEF,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;YAC1B,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAE/C,IAAI,CAAC,OAAO,GAAG,UAAU,CACvB,QAAQ,EACR,IAAI,CAAC,gCAAgC,CAAC,MAAM,CAAC,CAC9C,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,IAAI,CAAC;SAClD;;;;;QAMD,IAAI,CAAC,MAAmB,EAAE,QAAQ,GAAG,SAAS;YAC5C,IACE,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;gBACnD,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;gBAE9C,OAAO;YAET,MAAM,QAAQ,GAAG;gBACf,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAClD,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;aACrB,CAAC;YAEF,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;YAEtE,MAAM,MAAM,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC;YAEjD,MAAM,CAAC,MAAM,CAAC,CAAC;YAEf,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC/C,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;YAEzB,IAAI,CAAC,OAAO,GAAG,UAAU,CACvB,QAAQ,EACR,IAAI,CAAC,gCAAgC,CAAC,MAAM,CAAC,CAC9C,CAAC;SACH;;;IC3EH;;;UAGqB,OAAO;QAI1B,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;SAChC;;;;;;QAOD,EAAE,CAAC,CAAM,EAAE,MAAoB;YAC7B,MAAM,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC;YACtC,IAAI,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC3E,MAAM,GAAG,MAAM,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;YAChD,MAAM,UAAU,GAAG,CACjB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EACzD,KAAK,CAAC;;;;;;YAOR,MAAM,gBAAgB,GAAG,CAAC,IAAU,EAAE,KAAK,GAAG,CAAC;gBAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACnD,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;oBACpD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CACpC,CAAC;iBACH;aACF,CAAC;YAEF,QAAQ,MAAM;gBACZ,KAAK,WAAW,CAAC,IAAI,CAAC;gBACtB,KAAK,WAAW,CAAC,QAAQ;oBACvB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;oBACvE,IAAI,MAAM,KAAK,WAAW,CAAC,IAAI;wBAC7B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;;wBAC5C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBACzD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBAEhC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;oBACnC,MAAM;gBACR,KAAK,WAAW,CAAC,YAAY;oBAC3B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;oBACpC,IAAI,CAAC,QAAQ,CAAC,WAAW,CACvB,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,IAAI,CACrD,CAAC;oBACF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;oBAC/C,MAAM;gBACR,KAAK,WAAW,CAAC,WAAW,CAAC;gBAC7B,KAAK,WAAW,CAAC,UAAU,CAAC;gBAC5B,KAAK,WAAW,CAAC,YAAY;oBAC3B,MAAM,KAAK,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;oBAC3C,QAAQ,MAAM;wBACZ,KAAK,WAAW,CAAC,WAAW;4BAC1B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;4BACtC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAACA,YAAI,CAAC,KAAK,CAAC,CAAC;4BACtC,MAAM;wBACR,KAAK,WAAW,CAAC,UAAU;4BACzB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC;4BACrC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;4BACrC,MAAM;wBACR,KAAK,WAAW,CAAC,YAAY;4BAC3B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC;4BACrC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;4BACrC,MAAM;qBACT;oBAED,IACE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,KAAK,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EACnE;wBACA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,IAAI,CAAC,QAAQ,CAAC,SAAS,EACvB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CACpC,CAAC;wBACF,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE;4BAC1C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;yBAC/B;qBACF;yBAAM;wBACL,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;qBACtC;oBACD,MAAM;gBACR,KAAK,WAAW,CAAC,SAAS;oBACxB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC;oBAC1C,IAAI,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;wBACvD,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,CAAC;qBAChC;oBACD,IAAI,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;wBACvD,GAAG,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,CAAC;qBAC/B;oBAED,GAAG,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC;oBACtC,IAAI,KAAK,GAAG,CAAC,CAAC;oBACd,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE;wBACxC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;wBACxD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;4BAChB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;yBAC5C;6BAAM;4BACL,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,GAAG,EACH,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,GAAG,CAAC,CACxC,CAAC;yBACH;qBACF;yBAAM;wBACL,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,GAAG,EACH,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CACpC,CAAC;qBACH;oBAED,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ;wBAChC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ;wBACxC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;wBACtC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EACrC;wBACA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;qBAC/B;oBACD,MAAM;gBACR,KAAK,WAAW,CAAC,UAAU;oBACzB,IAAI,IAAI,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;oBACxC,IACE,UAAU,CAAC,KAAK,IAAI,EAAE;wBACtB,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB;wBAE5D,IAAI,IAAI,EAAE,CAAC;oBACb,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;oBACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,UAAU,EACV,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CACpC,CAAC;oBACF,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB;wBAC3D,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO;wBAClD,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ;wBACxC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EACtC;wBACA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;qBAC/B;yBAAM;wBACL,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;qBACnC;oBACD,MAAM;gBACR,KAAK,WAAW,CAAC,YAAY;oBAC3B,UAAU,CAAC,OAAO,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;oBAClD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,UAAU,EACV,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CACpC,CAAC;oBACF,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB;wBAC3D,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO;wBAClD,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ;wBACxC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EACtC;wBACA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;qBAC/B;yBAAM;wBACL,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;qBACnC;oBACD,MAAM;gBACR,KAAK,WAAW,CAAC,YAAY;oBAC3B,UAAU,CAAC,OAAO,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC;oBAC9C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,UAAU,EACV,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CACpC,CAAC;oBACF,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB;wBAC3D,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ;wBACxC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EACtC;wBACA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;qBAC/B;yBAAM;wBACL,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;qBACnC;oBACD,MAAM;gBACR,KAAK,WAAW,CAAC,cAAc;oBAC7B,gBAAgB,CAACA,YAAI,CAAC,KAAK,CAAC,CAAC;oBAC7B,MAAM;gBACR,KAAK,WAAW,CAAC,gBAAgB;oBAC/B,gBAAgB,CAACA,YAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBAChE,MAAM;gBACR,KAAK,WAAW,CAAC,gBAAgB;oBAC/B,gBAAgB,CAACA,YAAI,CAAC,OAAO,CAAC,CAAC;oBAC/B,MAAM;gBACR,KAAK,WAAW,CAAC,cAAc;oBAC7B,gBAAgB,CAACA,YAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;oBACjC,MAAM;gBACR,KAAK,WAAW,CAAC,gBAAgB;oBAC/B,gBAAgB,CAACA,YAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;oBACrE,MAAM;gBACR,KAAK,WAAW,CAAC,gBAAgB;oBAC/B,gBAAgB,CAACA,YAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;oBACnC,MAAM;gBACR,KAAK,WAAW,CAAC,cAAc;oBAC7B,gBAAgB,CACdA,YAAI,CAAC,KAAK,EACV,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CACtD,CAAC;oBACF,MAAM;gBACR,KAAK,WAAW,CAAC,YAAY;oBAC3B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM;yBAC1B,gBAAgB,CACf,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa,MAAM,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,CACnE;yBACA,OAAO,CAAC,CAAC,WAAwB,KAChC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAClC,CAAC;oBACJ,IACE,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC;wBACnC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,EAC9C;wBACA,aAAa,CAAC,YAAY,CACxB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAC/C,CAAC;wBACF,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CACvD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAC1C,CAAC,SAAS,CAAC;wBAEZ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;qBAChD;yBAAM;wBACL,aAAa,CAAC,YAAY,CACxB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAC/C,CAAC;wBACF,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CACvD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAC1C,CAAC,SAAS,CAAC;wBACZ,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;wBAClC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;qBACzC;oBACD,MAAM;gBACR,KAAK,WAAW,CAAC,SAAS,CAAC;gBAC3B,KAAK,WAAW,CAAC,SAAS,CAAC;gBAC3B,KAAK,WAAW,CAAC,WAAW,CAAC;gBAC7B,KAAK,WAAW,CAAC,WAAW;oBAC1B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM;yBAC1B,gBAAgB,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAC;yBACzD,OAAO,CACN,CAAC,WAAwB,MAAM,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,CACnE,CAAC;oBAEJ,IAAI,UAAU,GAAG,EAAE,CAAC;oBACpB,QAAQ,MAAM;wBACZ,KAAK,WAAW,CAAC,SAAS;4BACxB,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC;4BAC1C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;4BACxC,MAAM;wBACR,KAAK,WAAW,CAAC,SAAS;4BACxB,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC;4BACzC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAACA,YAAI,CAAC,KAAK,CAAC,CAAC;4BAC3C,MAAM;wBACR,KAAK,WAAW,CAAC,WAAW;4BAC1B,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC;4BAC3C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAACA,YAAI,CAAC,OAAO,CAAC,CAAC;4BAC7C,MAAM;wBACR,KAAK,WAAW,CAAC,WAAW;4BAC1B,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC;4BAC3C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAACA,YAAI,CAAC,OAAO,CAAC,CAAC;4BAC7C,MAAM;qBACT;oBAEa,CACZ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAClE,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;oBAC1B,MAAM;gBACR,KAAK,WAAW,CAAC,KAAK;oBACpB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBACpC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;oBAC/C,MAAM;gBACR,KAAK,WAAW,CAAC,KAAK;oBACpB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAC9B,MAAM;gBACR,KAAK,WAAW,CAAC,KAAK;oBACpB,MAAM,KAAK,GAAG,IAAI,QAAQ,EAAE,CAAC,SAAS,CACpC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAC3C,CAAC;oBACF,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;oBAChC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAEA,YAAI,CAAC,IAAI,CAAC;wBACrD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,KAAK,EACL,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CACpC,CAAC;oBACJ,MAAM;aACT;SACF;KACF;IAED,IAAY,WA0BX;IA1BD,WAAY,WAAW;QACrB,4BAAa,CAAA;QACb,oCAAqB,CAAA;QACrB,4CAA6B,CAAA;QAC7B,0CAA2B,CAAA;QAC3B,wCAAyB,CAAA;QACzB,4CAA6B,CAAA;QAC7B,sCAAuB,CAAA;QACvB,wCAAyB,CAAA;QACzB,4CAA6B,CAAA;QAC7B,4CAA6B,CAAA;QAC7B,gDAAiC,CAAA;QACjC,oDAAqC,CAAA;QACrC,oDAAqC,CAAA;QACrC,gDAAiC,CAAA;QACjC,oDAAqC,CAAA;QACrC,oDAAqC,CAAA;QACrC,gDAAiC,CAAA;QACjC,4CAA6B,CAAA;QAC7B,sCAAuB,CAAA;QACvB,sCAAuB,CAAA;QACvB,0CAA2B,CAAA;QAC3B,0CAA2B,CAAA;QAC3B,8BAAe,CAAA;QACf,8BAAe,CAAA;QACf,8BAAe,CAAA;IACjB,CAAC,EA1BW,WAAW,KAAX,WAAW;;IC1SvB;;;UAGqB,WAAW;QAG9B,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAErD,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;YAE3C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE;gBAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAC1E,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;oBAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE;wBAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;wBAC1C,GAAG,CAAC,SAAS,CAAC,GAAG,CACf,SAAS,CAAC,GAAG,CAAC,aAAa,EAC3B,SAAS,CAAC,GAAG,CAAC,WAAW,CAC1B,CAAC;wBACF,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;qBAC5B;iBACF;gBAED,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;gBACvD,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YAED,OAAO,SAAS,CAAC;SAClB;;;;;QAMD,OAAO;YACL,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CACpE,SAAS,CAAC,GAAG,CAAC,aAAa,CAC5B,CAAC,CAAC,CAAC,CAAC;YACL,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,aAAa;iBACvD,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;iBACvD,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAE/B,QAAQ,CAAC,YAAY,CACnB,SAAS,CAAC,GAAG,CAAC,aAAa,EAC3B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC;gBAC7B,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,mBAAmB;aAC/D,CAAC,CACH,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAC/B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,EACxDA,YAAI,CAAC,KAAK,CACX;kBACG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBACjD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEnD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAC/B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,EACvDA,YAAI,CAAC,KAAK,CACX;kBACG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBAC7C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE/C,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK;iBAC1C,OAAO,CAACA,YAAI,CAAC,KAAK,CAAC;iBACnB,OAAO,CAAC,SAAS,CAAC;iBAClB,UAAU,CAAC,EAAE,EAAEA,YAAI,CAAC,KAAK,CAAC,CAAC;YAE9B,SAAS;iBACN,gBAAgB,CACf,iBAAiB,WAAW,CAAC,SAAS,QAAQ,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,CAC5E;iBACA,OAAO,CAAC,CAAC,cAA2B,EAAE,KAAK;gBAC1C,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa;oBAC5C,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,EAC9D;oBACA,IAAI,cAAc,CAAC,SAAS,KAAK,GAAG;wBAAE,OAAO;oBAC7C,cAAc,CAAC,SAAS,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;oBAC/C,OAAO;iBACR;gBAED,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAEhC,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAEA,YAAI,CAAC,KAAK,CAAC,EAAE;oBAC3D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBACjC;gBACD,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAEA,YAAI,CAAC,KAAK,CAAC,EAAE;oBAC1D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBACjC;gBAED,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;oBACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAEA,YAAI,CAAC,IAAI,CAAC,EAClD;oBACA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBACpC;gBACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAEA,YAAI,CAAC,IAAI,CAAC,EAAE;oBAC5D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACtC;gBACD,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,QAAQ,EAAE,EAAEA,YAAI,CAAC,IAAI,CAAC,EAAE;oBAC/C,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;iBACnC;gBACD,IAAI,SAAS,CAAC,OAAO,KAAK,CAAC,IAAI,SAAS,CAAC,OAAO,KAAK,CAAC,EAAE;oBACtD,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;iBACrC;gBAED,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC7D,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBACzC,cAAc,CAAC,YAAY,CACzB,YAAY,EACZ,GAAG,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,cAAc,IAAI,SAAS,CAAC,aAAa,EAAE,CAC3E,CAAC;gBACF,cAAc,CAAC,YAAY,CACzB,UAAU,EACV,GAAG,SAAS,CAAC,IAAI,EAAE,CACpB,CAAC;gBACF,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;gBAChE,SAAS,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;aACpC,CAAC,CAAC;SACN;;;;;QAMO,cAAc;YACpB,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK;iBAC1C,OAAO,CAAC,SAAS,CAAC;iBAClB,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;YACtB,MAAM,GAAG,GAAG,EAAE,CAAC;YACf,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAE9B,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE;gBAChD,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACrD,cAAc,CAAC,SAAS,CAAC,GAAG,CAC1B,SAAS,CAAC,GAAG,CAAC,aAAa,EAC3B,SAAS,CAAC,GAAG,CAAC,WAAW,CAC1B,CAAC;gBACF,cAAc,CAAC,SAAS,GAAG,GAAG,CAAC;gBAC/B,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aAC1B;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC1B,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACrD,cAAc,CAAC,SAAS,CAAC,GAAG,CAC1B,SAAS,CAAC,GAAG,CAAC,YAAY,EAC1B,SAAS,CAAC,GAAG,CAAC,WAAW,CAC1B,CAAC;gBACF,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;gBAClE,SAAS,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;gBACnC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aAC1B;YAED,OAAO,GAAG,CAAC;SACZ;;;IC5KH;;;UAGqB,YAAY;QAG/B,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAEvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;gBACzD,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YAED,OAAO,SAAS,CAAC;SAClB;;;;;QAMD,OAAO;YACL,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CACpE,SAAS,CAAC,GAAG,CAAC,eAAe,CAC9B,CAAC,CAAC,CAAC,CAAC;YACL,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,aAAa;iBACvD,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;iBACvD,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAE/B,QAAQ,CAAC,YAAY,CACnB,SAAS,CAAC,GAAG,CAAC,eAAe,EAC7B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CACpD,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAC/B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,EACvDA,YAAI,CAAC,IAAI,CACV;kBACG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBACjD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEnD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAC/B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,EACtDA,YAAI,CAAC,IAAI,CACV;kBACG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBAC7C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE/C,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;YAEjE,SAAS;iBACN,gBAAgB,CAAC,iBAAiB,WAAW,CAAC,WAAW,IAAI,CAAC;iBAC9D,OAAO,CAAC,CAAC,cAA2B,EAAE,KAAK;gBAC1C,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAElC,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;oBACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAEA,YAAI,CAAC,KAAK,CAAC,EACnD;oBACA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBACpC;gBACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAEA,YAAI,CAAC,KAAK,CAAC,EAAE;oBAC7D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACtC;gBAED,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC7D,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBACzC,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;gBACtD,cAAc,CAAC,SAAS,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;gBACrE,SAAS,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,CAAC;aACrC,CAAC,CAAC;SACN;;;UCQU,eAAe;QAC1B,OAAO,aAAa,CAAC,eAAwB,EAAE,OAAgB;YAC7D,MAAM,UAAU,GAAG,EAAa,CAAC;YACjC,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,MAAM,gBAAgB,GAAG,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;YAEvD,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW;gBACvD,QAAQ,GAAG;oBACT,KAAK,aAAa,EAAE;wBAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;wBAC5D,IAAI,QAAQ,KAAK,SAAS,EAAE;4BAC1B,OAAO,QAAQ,CAAC;yBACjB;wBACD,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,aAAa,EACb,YAAY,EACZ,kBAAkB,CACnB,CAAC;qBACH;oBACD,KAAK,UAAU,EAAE;wBACf,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;wBACzD,IAAI,QAAQ,KAAK,SAAS,EAAE;4BAC1B,OAAO,QAAQ,CAAC;yBACjB;wBACD,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,UAAU,EACV,YAAY,EACZ,kBAAkB,CACnB,CAAC;qBACH;oBACD,KAAK,SAAS,EAAE;wBACd,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,KAAK,CAAC;yBACd;wBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;wBACrE,IAAI,QAAQ,KAAK,SAAS,EAAE;4BAC1B,OAAO,QAAQ,CAAC;yBACjB;wBACD,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,CACnB,CAAC;qBACH;oBACD,KAAK,SAAS,EAAE;wBACd,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,KAAK,CAAC;yBACd;wBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;wBACrE,IAAI,QAAQ,KAAK,SAAS,EAAE;4BAC1B,OAAO,QAAQ,CAAC;yBACjB;wBACD,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,CACnB,CAAC;qBACH;oBACD,KAAK,eAAe;wBAClB,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,EAAE,CAAC;yBACX;wBACD,IAAI,CAAC,qBAAqB,CACxB,4BAA4B,EAC5B,KAAK,EACL,YAAY,CACb,CAAC;wBACF,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;4BACjD,SAAS,CAAC,aAAa,CAAC,gBAAgB,CACtC,4BAA4B,EAC5B,CAAC,EACD,EAAE,CACH,CAAC;wBACJ,OAAO,KAAK,CAAC;oBACf,KAAK,cAAc;wBACjB,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,EAAE,CAAC;yBACX;wBACD,IAAI,CAAC,qBAAqB,CACxB,2BAA2B,EAC3B,KAAK,EACL,YAAY,CACb,CAAC;wBACF,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;4BACjD,SAAS,CAAC,aAAa,CAAC,gBAAgB,CACtC,2BAA2B,EAC3B,CAAC,EACD,EAAE,CACH,CAAC;wBACJ,OAAO,KAAK,CAAC;oBACf,KAAK,oBAAoB;wBACvB,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,EAAE,CAAC;yBACX;wBACD,IAAI,CAAC,qBAAqB,CACxB,iCAAiC,EACjC,KAAK,EACL,YAAY,CACb,CAAC;wBACF,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;4BAChD,SAAS,CAAC,aAAa,CAAC,gBAAgB,CACtC,iCAAiC,EACjC,CAAC,EACD,CAAC,CACF,CAAC;wBACJ,OAAO,KAAK,CAAC;oBACf,KAAK,cAAc;wBACjB,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,EAAE,CAAC;yBACX;wBACD,IAAI,CAAC,mBAAmB,CACtB,2BAA2B,EAC3B,KAAK,EACL,YAAY,CACb,CAAC;wBACF,OAAO,KAAK,CAAC;oBACf,KAAK,eAAe;wBAClB,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,EAAE,CAAC;yBACX;wBACD,IAAI,CAAC,mBAAmB,CACtB,4BAA4B,EAC5B,KAAK,EACL,YAAY,CACb,CAAC;wBACF,OAAO,KAAK,CAAC;oBACf,KAAK,uBAAuB;wBAC1B,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,EAAE,CAAC;yBACX;wBACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;4BACzB,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,GAAG,EACH,YAAY,EACZ,qDAAqD,CACtD,CAAC;yBACH;wBACD,MAAM,WAAW,GAAG,KAAiC,CAAC;wBACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAC3C,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;gCACrC,MAAM,aAAa,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;gCAC3C,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gCAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;gCACxD,IAAI,CAAC,QAAQ,EAAE;oCACb,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,aAAa,EACb,OAAO,CAAC,EACR,kBAAkB,CACnB,CAAC;iCACH;gCACD,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;6BAC/B,CAAC,CAAC;yBACJ;wBACD,OAAO,WAAW,CAAC;oBACrB,KAAK,kBAAkB,CAAC;oBACxB,KAAK,MAAM,CAAC;oBACZ,KAAK,UAAU,CAAC;oBAChB,KAAK,qBAAqB;wBACxB,MAAM,YAAY,GAAG;4BACnB,gBAAgB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC;4BAC9C,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;4BAC1B,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;4BAC7D,mBAAmB,EAAE;gCACnB,SAAS;gCACT,SAAS;gCACT,MAAM;gCACN,OAAO;gCACP,QAAQ;6BACT;yBACF,CAAC;wBACF,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;wBACrC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;4BAC7B,SAAS,CAAC,aAAa,CAAC,qBAAqB,CAC3C,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EACjB,KAAK,EACL,UAAU,CACX,CAAC;wBAEJ,OAAO,KAAK,CAAC;oBACf,KAAK,YAAY,CAAC;oBAClB,KAAK,aAAa;wBAChB,OAAO,KAAK,CAAC;oBACf;wBACE,QAAQ,WAAW;4BACjB,KAAK,SAAS;gCACZ,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,CAAC;4BAC5C,KAAK,QAAQ;gCACX,OAAO,CAAC,KAAK,CAAC;4BAChB,KAAK,QAAQ;gCACX,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;4BAC1B,KAAK,QAAQ;gCACX,OAAO,EAAE,CAAC;4BACZ,KAAK,UAAU;gCACb,OAAO,KAAK,CAAC;4BACf;gCACE,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EACjB,YAAY,EACZ,WAAW,CACZ,CAAC;yBACL;iBACJ;aACF,CAAC;;;;;;;;;YAUF,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM;gBAC3C,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CACrD,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC7C,CAAC;gBACF,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;oBACjC,MAAM,gBAAgB,GAAG,eAAe,CAAC,sBAAsB,CAAC;oBAEhE,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;wBACtC,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC;wBACjE,IAAI,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC7D,IAAI,UAAU;4BAAE,KAAK,IAAI,iBAAiB,UAAU,IAAI,CAAC;wBACzD,OAAO,KAAK,CAAC;qBACd,CAAC,CAAC;oBACH,SAAS,CAAC,aAAa,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;iBACnD;gBACD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG;oBACnC,MAAM,kBAAkB,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;oBAC5C,IAAI,YAAY,GAAG,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;oBACxC,IAAI,WAAW,GAAG,OAAO,kBAAkB,CAAC;oBAC5C,IAAI,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;oBAC1B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;wBACjC,IACE,WAAW,KAAK,WAAW;6BAC1B,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,MAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,EAC1D;4BACA,MAAM,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC;4BACjC,OAAO;yBACR;wBACD,QAAQ,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC;wBACnC,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;qBACvB;oBACD,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;oBAClB,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;oBAEhE,IAAI,OAAO,kBAAkB,KAAK,QAAQ,IAAI,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;wBAC5E,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;wBACtD,OAAO;qBACR;oBACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;wBACjC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;wBACvD,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;qBACvD;oBACD,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;iBACvD,CAAC,CAAC;aACJ,CAAC;YACF,MAAM,CAAC,eAAe,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;YAE7C,OAAO,UAAU,CAAC;SACnB;QAED,OAAO,cAAc,CAAC,OAAO,EAAE,OAAgB;YAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;YAC9B,IACE,CAAC,KAAK;gBACN,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;gBAC/B,KAAK,CAAC,WAAW,KAAK,YAAY;gBAElC,OAAO,OAAO,CAAC;YACjB,IAAI,WAAW,GAAG,EAAa,CAAC;;;YAIhC,MAAM,kBAAkB,GAAG,CAAC,MAAM;gBAChC,MAAM,OAAO,GAAG,EAAE,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC5B,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC;iBAC9B,CAAC,CAAC;gBAEH,OAAO,OAAO,CAAC;aAChB,CAAC;YAEF,MAAM,UAAU,GAAG,CACjB,KAAe,EACf,KAAa,EACb,cAAkB,EAClB,KAAU;;gBAGV,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;gBAE7D,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;gBAChE,MAAM,cAAc,GAAG,EAAE,CAAC;gBAE1B,IAAI,SAAS,KAAK,SAAS;oBAAE,OAAO,cAAc,CAAC;;gBAGnD,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC,WAAW,KAAK,MAAM,EAAE;oBACpD,KAAK,EAAE,CAAC;oBACR,cAAc,CAAC,SAAS,CAAC,GAAG,UAAU,CACpC,KAAK,EACL,KAAK,EACL,cAAc,CAAC,SAAS,CAAC,EACzB,KAAK,CACN,CAAC;iBACH;qBAAM;oBACL,cAAc,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;iBACnC;gBACD,OAAO,cAAc,CAAC;aACvB,CAAC;YACF,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAEjD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;iBACf,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;iBAC9C,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;iBAC1B,OAAO,CAAC,CAAC,GAAG;gBACX,IAAI,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;;;gBAIhD,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;;oBAErB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;oBAE7B,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;oBACjD,IACE,SAAS,KAAK,SAAS;wBACvB,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,KAAK,MAAM,EACzC;wBACA,WAAW,CAAC,SAAS,CAAC,GAAG,UAAU,CACjC,KAAK,EACL,CAAC,EACD,OAAO,CAAC,SAAS,CAAC,EAClB,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAClB,CAAC;qBACH;iBACF;;qBAEI,IAAI,SAAS,KAAK,SAAS,EAAE;oBAChC,WAAW,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;iBAC5C;aACF,CAAC,CAAC;YAEL,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;SACjD;;;;;;QAOD,OAAO,cAAc,CAAC,CAAM;YAC1B,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI;gBAAE,OAAO,CAAC,CAAC;YACnD,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;gBACpC,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;aAC5B;YACD,IAAI,OAAO,CAAC,KAAK,OAAO,EAAE,EAAE;gBAC1B,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,MAAM,EAAE;oBACvC,OAAO,IAAI,CAAC;iBACb;gBACD,OAAO,QAAQ,CAAC;aACjB;YACD,OAAO,IAAI,CAAC;SACb;;;;;;;QAQD,OAAO,mBAAmB,CAAC,UAAkB,EAAE,KAAK,EAAE,YAAoB;YACxE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACzB,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,UAAU,EACV,YAAY,EACZ,2BAA2B,CAC5B,CAAC;aACH;YACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACrC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;gBACrD,IAAI,CAAC,QAAQ,EAAE;oBACb,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,UAAU,EACV,OAAO,CAAC,EACR,kBAAkB,CACnB,CAAC;iBACH;gBACD,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;aACrB;SACF;;;;;;;QAQD,OAAO,qBAAqB,CAC1B,UAAkB,EAClB,KAAK,EACL,YAAoB;YAEpB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,EAAE;gBACrE,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,UAAU,EACV,YAAY,EACZ,kBAAkB,CACnB,CAAC;aACH;YACD,OAAO;SACR;;;;;;QAOD,OAAO,eAAe,CAAC,CAAM,EAAE,UAAkB;YAC/C,IAAI,OAAO,CAAC,KAAK,OAAO,EAAE,IAAI,UAAU,KAAK,OAAO,EAAE;gBACpD,SAAS,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;aACtC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAEzC,IAAI,CAAC,SAAS,EAAE;gBACd,SAAS,CAAC,aAAa,CAAC,iBAAiB,CACvC,UAAU,EACV,CAAC,EACD,UAAU,KAAK,OAAO,CACvB,CAAC;aACH;YACD,OAAO,SAAS,CAAC;SAClB;QAIO,WAAW,sBAAsB;YACvC,IAAI,IAAI,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC,SAAS,CAAC;YAC1C,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,KAC3B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;kBACZ,EAAE;kBACF,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;sBACf,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;sBAC/D,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEpB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC;YAE1C,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;;;;;;QAOD,OAAO,kBAAkB,CAAC,MAAe;YACvC,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE;gBAC9D,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;oBACpE,SAAS,CAAC,aAAa,CAAC,wBAAwB,CAC9C,0BAA0B,CAC3B,CAAC;iBACH;gBAED,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;oBACrE,SAAS,CAAC,aAAa,CAAC,wBAAwB,CAC9C,2BAA2B,CAC5B,CAAC;iBACH;aACF;SACF;;;UCljBkB,KAAK;QAIxB,YAAY,OAAsB;YAH1B,WAAM,GAAe,EAAE,CAAC;YAI9B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;QAKD,IAAI,MAAM;YACR,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;;;;QAKD,IAAI,UAAU;YACZ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SAC1C;;;;QAKD,IAAI,eAAe;YACjB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;SAC/B;;;;;QAMD,GAAG,CAAC,IAAc;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACxB;;;;;;;;QASD,GAAG,CAAC,KAAU,EAAE,KAAc,EAAE,OAAe,UAAU;YACvD,IAAI,CAAC,KAAK;gBAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACzC,MAAM,SAAS,GAAG,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC/D,IAAI,SAAS;gBAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;SACjD;;;;;;;QAQD,QAAQ,CAAC,UAAoB,EAAE,IAAW;YACxC,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,UAAU,CAAC,KAAK,SAAS,CAAC;YAE1E,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAE3C,IAAI,kBAAkB,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEnD,QACE,IAAI,CAAC,MAAM;iBACR,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;iBAC5B,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,kBAAkB,CAAC,KAAK,SAAS,EACtD;SACH;;;;;;;;QASD,WAAW,CAAC,UAAoB,EAAE,IAAW;YAC3C,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAElD,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAE3C,IAAI,kBAAkB,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEnD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;SAC7E;;;;QAKD,KAAK;YACH,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;gBAC1B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM;gBAC7B,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,IAAI,CAAC,UAAU;gBACxB,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,IAAI;aACC,CAAC,CAAC;YAClB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;SAClB;;;;;;QAOD,OAAO,eAAe,CACpB,MAAc,EACd,IAAY;YAEZ,MAAM,IAAI,GAAG,MAAM,GAAG,EAAE,EACtB,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,MAAM,EAC9C,OAAO,GAAG,SAAS,GAAG,IAAI,GAAG,CAAC,EAC9B,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YAC9C,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;SACzC;;;;;;;;;;QAWD,SAAS,CAAC,MAAiB,EAAE,KAAc;YACzC,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,WAAW,EAC1C,OAAO,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC;YAC/B,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/D,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,OAAO,IAAI,OAAO,EAAE;gBAC3D,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;aAC3B;YAED,IAAI,MAAM,KAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAC,MAAM,CAAC,CAAA;gBAAE,OAAO;YAE9C,MAAM,WAAW,GAAG;gBAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;oBAAE,OAAO;gBAElC,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAChE,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE;oBACxC,QAAQ,GAAG,IAAI,CAAC,MAAM;yBACnB,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;yBACvD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;iBACxD;gBACD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,QAAQ;oBACxC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC;aACzC,CAAC;;YAGF,IAAI,CAAC,MAAM,EAAE;gBACX,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa;oBACrC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;oBACxB,OAAO,EACP;oBACA,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;oBAC5B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;iBAClB;qBAAM;oBACL,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;iBAC9B;gBACD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;oBAC1B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM;oBAC7B,IAAI,EAAE,SAAS;oBACf,OAAO;oBACP,OAAO;oBACP,OAAO,EAAE,IAAI;iBACC,CAAC,CAAC;gBAElB,WAAW,EAAE,CAAC;gBACd,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACtC,OAAO;aACR;YAED,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC;YACnB,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;;YAGtB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,KAAK,CAAC,EAAE;gBACzC,MAAM,CAAC,OAAO;oBACZ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;wBAC5D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAClC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;aACpB;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;gBAC5B,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;gBAEvC,WAAW,EAAE,CAAC;gBAEd,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;gBAC7B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;oBAC1B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM;oBAC7B,IAAI,EAAE,MAAM;oBACZ,OAAO;oBACP,OAAO;oBACP,OAAO,EAAE,IAAI;iBACC,CAAC,CAAC;gBAClB,OAAO;aACR;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE;gBACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;gBAC5B,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;gBAEvC,WAAW,EAAE,CAAC;gBAEd,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;oBAC1B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM;oBAC7B,IAAI,EAAE,MAAM;oBACZ,OAAO;oBACP,OAAO;oBACP,OAAO,EAAE,KAAK;iBACA,CAAC,CAAC;aACnB;YACD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;gBAC1B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK;gBAC5B,MAAM,EAAE,SAAS,CAAC,aAAa,CAAC,sBAAsB;gBACtD,IAAI,EAAE,MAAM;gBACZ,OAAO;aACK,CAAC,CAAC;SACjB;;;;;QAMD,OAAO,eAAe,CAAC,IAAU;YAC/B,QAAQ,IAAI;gBACV,KAAK,MAAM;oBACT,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;gBAChC,KAAK,OAAO;oBACV,OAAO;wBACL,KAAK,EAAE,SAAS;wBAChB,IAAI,EAAE,SAAS;qBAChB,CAAC;gBACJ,KAAK,MAAM;oBACT,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;aAC9B;SACF;;;ICnPH;;;UAGqB,WAAW;QAK9B,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAEtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;gBACxD,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YAED,OAAO,SAAS,CAAC;SAClB;;;;;QAMD,OAAO;YACgB,KAAK,CAAC,eAAe,CACxC,EAAE,EACF,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAC5B;YACF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;YAC1E,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;YAExE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CACpE,SAAS,CAAC,GAAG,CAAC,cAAc,CAC7B,CAAC,CAAC,CAAC,CAAC;YACL,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,aAAa;iBACvD,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;iBACvD,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAE/B,QAAQ,CAAC,YAAY,CACnB,SAAS,CAAC,GAAG,CAAC,cAAc,EAC5B,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAC9F,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAEA,YAAI,CAAC,IAAI,CAAC;kBACzD,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBACjD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAEA,YAAI,CAAC,IAAI,CAAC;kBACvD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBAC7C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE/C,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK;iBAC1C,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC;iBAClB,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;YAE7B,SAAS;iBACN,gBAAgB,CAAC,iBAAiB,WAAW,CAAC,UAAU,IAAI,CAAC;iBAC7D,OAAO,CAAC,CAAC,cAA2B,EAAE,KAAK;gBAC1C,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAEjC,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;oBACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAEA,YAAI,CAAC,IAAI,CAAC,EAClD;oBACA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBACpC;gBACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAEA,YAAI,CAAC,IAAI,CAAC,EAAE;oBAC5D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACtC;gBAED,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC7D,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBACzC,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC/D,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;gBAEjE,SAAS,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;aACpC,CAAC,CAAC;SACN;;;ICvFH;;;UAGqB,aAAa;QAKhC,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAExD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC1D,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YACD,OAAO,SAAS,CAAC;SAClB;;;;;QAMD,OAAO;YACL,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,eAAe,CACxC,GAAG,EACH,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAC7B,CAAC;YACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;YACrE,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;YACnE,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC;YAE3B,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CACpE,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAC/B,CAAC,CAAC,CAAC,CAAC;YACL,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,aAAa;iBACvD,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;iBACvD,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAE/B,QAAQ,CAAC,YAAY,CACnB,SAAS,CAAC,GAAG,CAAC,gBAAgB,EAC9B,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAClG,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAEA,YAAI,CAAC,IAAI,CAAC;kBAC3D,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBACjD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAEA,YAAI,CAAC,IAAI,CAAC;kBACzD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBAC7C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE/C,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;YAElE,SAAS;iBACN,gBAAgB,CAAC,iBAAiB,WAAW,CAAC,YAAY,IAAI,CAAC;iBAC/D,OAAO,CAAC,CAAC,cAA2B,EAAE,KAAK;gBAC1C,IAAI,KAAK,KAAK,CAAC,EAAE;oBACf,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAChD,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC,EAAE;wBACnC,cAAc,CAAC,WAAW,GAAG,GAAG,CAAC;wBACjC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBAC/C,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBACrD,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;wBAC9C,OAAO;qBACR;yBAAM;wBACL,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;wBAC1G,cAAc,CAAC,YAAY,CACzB,YAAY,EACZ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAC5B,CAAC;wBACF,OAAO;qBACR;iBACF;gBAED,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACnC,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;gBAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC;gBAEjD,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;oBACrB,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,eAAe,IAAI,CAAC,IAAI,aAAa,CAAC;yBAClE,MAAM,GAAG,CAAC,EACb;oBACA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBACpC;gBAED,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC7D,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBACzC,cAAc,CAAC,YAAY,CACzB,YAAY,EACZ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAC5B,CAAC;gBACF,cAAc,CAAC,SAAS,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;gBAE9E,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;aAC7C,CAAC,CAAC;SACN;;;IC5GH;;;UAGqB,WAAW;QAG9B,YAAY,OAAsB;YAD1B,iBAAY,GAAG,EAAE,CAAC;YAExB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAEtD,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAElC,OAAO,SAAS,CAAC;SAClB;;;;;;QAOD,OAAO;YACL,MAAM,QAAQ,IACZ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CAClD,SAAS,CAAC,GAAG,CAAC,cAAc,CAC7B,CAAC,CAAC,CAAC,CACL,CAAC;YACF,MAAM,UAAU,GAAG,CACjB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EACzD,KAAK,CAAC;YAER,QAAQ;iBACL,gBAAgB,CAAC,WAAW,CAAC;iBAC7B,OAAO,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YAE1E,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE;gBACnD,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAChC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,EACvDA,YAAI,CAAC,KAAK,CACX,EACD;oBACA,QAAQ;yBACL,aAAa,CAAC,gBAAgB,WAAW,CAAC,cAAc,GAAG,CAAC;yBAC5D,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC1C;gBAED,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAChC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,EACxDA,YAAI,CAAC,KAAK,CACX,EACD;oBACA,QAAQ;yBACL,aAAa,CAAC,gBAAgB,WAAW,CAAC,cAAc,GAAG,CAAC;yBAC5D,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC1C;gBACD,QAAQ,CAAC,aAAa,CACpB,wBAAwBA,YAAI,CAAC,KAAK,GAAG,CACtC,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB;sBACrE,UAAU,CAAC,cAAc;sBACzB,UAAU,CAAC,oBAAoB,CAAC;aACrC;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE;gBACrD,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAChC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,OAAO,CAAC,EACzDA,YAAI,CAAC,OAAO,CACb,EACD;oBACA,QAAQ;yBACL,aAAa,CAAC,gBAAgB,WAAW,CAAC,gBAAgB,GAAG,CAAC;yBAC9D,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC1C;gBAED,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAChC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,OAAO,CAAC,EAC1DA,YAAI,CAAC,OAAO,CACb,EACD;oBACA,QAAQ;yBACL,aAAa,CAAC,gBAAgB,WAAW,CAAC,gBAAgB,GAAG,CAAC;yBAC9D,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC1C;gBACD,QAAQ,CAAC,aAAa,CACpB,wBAAwBA,YAAI,CAAC,OAAO,GAAG,CACxC,CAAC,SAAS,GAAG,UAAU,CAAC,gBAAgB,CAAC;aAC3C;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE;gBACrD,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAChC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,OAAO,CAAC,EACzDA,YAAI,CAAC,OAAO,CACb,EACD;oBACA,QAAQ;yBACL,aAAa,CAAC,gBAAgB,WAAW,CAAC,gBAAgB,GAAG,CAAC;yBAC9D,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC1C;gBAED,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAChC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,OAAO,CAAC,EAC1DA,YAAI,CAAC,OAAO,CACb,EACD;oBACA,QAAQ;yBACL,aAAa,CAAC,gBAAgB,WAAW,CAAC,gBAAgB,GAAG,CAAC;yBAC9D,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC1C;gBACD,QAAQ,CAAC,aAAa,CACpB,wBAAwBA,YAAI,CAAC,OAAO,GAAG,CACxC,CAAC,SAAS,GAAG,UAAU,CAAC,gBAAgB,CAAC;aAC3C;YAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE;gBAChE,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CACnC,gBAAgB,WAAW,CAAC,cAAc,GAAG,CAC9C,CAAC;gBAEF,MAAM,CAAC,SAAS,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;gBAEzC,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAChC,UAAU,CAAC,KAAK,CAAC,UAAU,CACzB,UAAU,CAAC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,EACjCA,YAAI,CAAC,KAAK,CACX,CACF,EACD;oBACA,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC9C;qBAAM;oBACL,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACjD;aACF;YAED,QAAQ,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC;SAC7D;;;;;QAMO,KAAK;YACX,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,EAAE,EACZ,MAAM,GAAG,EAAE,EACX,MAAM,GAAG,EAAE,EACX,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,EACzC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CACtC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CACxC,EACD,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CACxC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAC1C,CAAC;YAEJ,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC5E,MAAM,cAAc,GAAgB,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC9D,cAAc,CAAC,SAAS,GAAG,GAAG,CAAC;YAE/B,MAAM,YAAY,GAAG,CAAC,KAAK,GAAG,KAAK;gBACjC,OAAO,KAAK;sBACK,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC;sBAC9B,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aAC5C,CAAC;YAEF,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE;gBACnD,IAAI,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC/C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAClD,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;gBACnE,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/C,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAErB,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAC7C,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;gBAC9D,UAAU,CAAC,YAAY,CAAC,qBAAqB,EAAEA,YAAI,CAAC,KAAK,CAAC,CAAC;gBAC3D,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAExB,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAClD,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;gBACnE,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBACjD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACxB,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC;aAC1B;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE;gBACrD,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;gBAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE;oBACnD,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;oBACzB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;oBAChC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;oBAC5B,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;iBAC3B;gBACD,IAAI,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC/C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,CACpD,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBACrE,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/C,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAErB,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAC/C,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;gBAChE,UAAU,CAAC,YAAY,CAAC,qBAAqB,EAAEA,YAAI,CAAC,OAAO,CAAC,CAAC;gBAC7D,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAExB,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,CACpD,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBACrE,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBACjD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACzB;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE;gBACrD,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;gBAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE;oBACrD,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;oBACzB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;oBAChC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;oBAC5B,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;iBAC3B;gBACD,IAAI,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC/C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,CACpD,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBACrE,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/C,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAErB,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAC/C,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;gBAChE,UAAU,CAAC,YAAY,CAAC,qBAAqB,EAAEA,YAAI,CAAC,OAAO,CAAC,CAAC;gBAC7D,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAExB,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,CACpD,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBACrE,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBACjD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACzB;YAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE;gBAChE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;gBAC1B,IAAI,UAAU,GAAG,YAAY,EAAE,CAAC;gBAChC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAErB,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAC9C,MAAM,CAAC,YAAY,CACjB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,CACnD,CAAC;gBACF,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;gBAC/D,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBACtC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBAEnD,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACpD,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAExB,UAAU,GAAG,YAAY,EAAE,CAAC;gBAC5B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACzB;YAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YAE7C,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC;SACvC;;;IChTH;;;UAGqB,WAAW;QAG9B,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAErD,KACE,IAAI,CAAC,GAAG,CAAC,EACT,CAAC;iBACA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB,GAAG,EAAE,GAAG,EAAE,CAAC,EACvE,CAAC,EAAE,EACH;gBACA,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;gBACxD,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YAED,OAAO,SAAS,CAAC;SAClB;;;;;QAMD,OAAO;YACL,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CACpE,SAAS,CAAC,GAAG,CAAC,aAAa,CAC5B,CAAC,CAAC,CAAC,CAAC;YACL,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;YAEjE,SAAS;iBACN,gBAAgB,CAAC,iBAAiB,WAAW,CAAC,UAAU,IAAI,CAAC;iBAC7D,OAAO,CAAC,CAAC,cAA2B,EAAE,KAAK;gBAC1C,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAEjC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAEA,YAAI,CAAC,KAAK,CAAC,EAAE;oBAC7D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACtC;gBAED,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC7D,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBACzC,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;gBAChE,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;qBACjE,iBAAiB;sBAChB,SAAS,CAAC,cAAc;sBACxB,SAAS,CAAC,oBAAoB,CAAC;gBACnC,SAAS,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,CAAC;aACrC,CAAC,CAAC;SACN;;;IC7DH;;;UAGqB,aAAa;QAGhC,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAEvD,IAAI,IAAI,GACN,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,KAAK,CAAC;kBACjC,CAAC;kBACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;gBAClC,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC1D,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YAED,OAAO,SAAS,CAAC;SAClB;;;;;QAMD,OAAO;YACL,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CACpE,SAAS,CAAC,GAAG,CAAC,eAAe,CAC9B,CAAC,CAAC,CAAC,CAAC;YACL,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAACA,YAAI,CAAC,KAAK,CAAC,CAAC;YAClE,IAAI,IAAI,GACN,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,KAAK,CAAC;kBACjC,CAAC;kBACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAEtC,SAAS;iBACN,gBAAgB,CAAC,iBAAiB,WAAW,CAAC,YAAY,IAAI,CAAC;iBAC/D,OAAO,CAAC,CAAC,cAA2B,EAAE,KAAK;gBAC1C,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAEnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAEA,YAAI,CAAC,OAAO,CAAC,EAAE;oBAC/D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACtC;gBAED,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC7D,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBACzC,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;gBAClE,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC,gBAAgB,CAAC;gBACtD,SAAS,CAAC,UAAU,CAAC,IAAI,EAAEA,YAAI,CAAC,OAAO,CAAC,CAAC;aAC1C,CAAC,CAAC;SACN;;;IC7DH;;;UAGqB,aAAa;QAGhC,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAEvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC1D,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YAED,OAAO,SAAS,CAAC;SAClB;;;;;QAMD,OAAO;YACL,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CACpE,SAAS,CAAC,GAAG,CAAC,eAAe,CAC9B,CAAC,CAAC,CAAC,CAAC;YACL,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAACA,YAAI,CAAC,OAAO,CAAC,CAAC;YAEpE,SAAS;iBACN,gBAAgB,CAAC,iBAAiB,WAAW,CAAC,YAAY,IAAI,CAAC;iBAC/D,OAAO,CAAC,CAAC,cAA2B,EAAE,KAAK;gBAC1C,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAEnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAEA,YAAI,CAAC,OAAO,CAAC,EAAE;oBAC/D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACtC;gBAED,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC7D,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBACzC,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;gBAClE,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC,gBAAgB,CAAC;gBACtD,SAAS,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,OAAO,CAAC,CAAC;aACvC,CAAC,CAAC;SACN;;;IC1CH;;;UAGqB,OAAO;QAc1B,YAAY,OAAsB;YAF1B,eAAU,GAAG,KAAK,CAAC;;;;;;YAqkBnB,wBAAmB,GAAG,CAAC,CAAa;;gBAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ;oBACzC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK;oBAC3B,MAAc,CAAC,KAAK;oBAAE,OAAO;gBAEhC,IACE,IAAI,CAAC,UAAU;oBACf,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;oBACvC,EAAC,MAAA,CAAC,CAAC,YAAY,EAAE,0CAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;kBACnD;oBACA,IAAI,CAAC,IAAI,EAAE,CAAC;iBACb;aACF,CAAC;;;;;;YAOM,uBAAkB,GAAG,CAAC,CAAa;gBACzC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aAC7B,CAAC;YAvlBA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;YAC7C,IAAI,CAAC,aAAa,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;YAC7C,IAAI,CAAC,cAAc,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;YACjD,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;YAC7C,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;YAC7C,IAAI,CAAC,cAAc,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;YACjD,IAAI,CAAC,cAAc,GAAG,IAAIC,aAAa,CAAC,OAAO,CAAC,CAAC;YAEjD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;SAC1B;;;;;QAMD,IAAI,MAAM;YACR,OAAO,IAAI,CAAC,OAAO,CAAC;SACrB;;;;QAKD,IAAI,SAAS;YACX,OAAO,IAAI,CAAC,UAAU,CAAC;SACxB;;;;;;;QAQD,OAAO,CAAC,IAAyC;YAC/C,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;;YAEzB,QAAQ,IAAI;gBACV,KAAKD,YAAI,CAAC,OAAO;oBACf,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;oBAC9B,MAAM;gBACR,KAAKA,YAAI,CAAC,OAAO;oBACf,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;oBAC9B,MAAM;gBACR,KAAKA,YAAI,CAAC,KAAK;oBACb,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAC5B,MAAM;gBACR,KAAKA,YAAI,CAAC,IAAI;oBACZ,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAC5B,MAAM;gBACR,KAAKA,YAAI,CAAC,KAAK;oBACb,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;oBAC7B,MAAM;gBACR,KAAKA,YAAI,CAAC,IAAI;oBACZ,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAC5B,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAC5B,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,KAAK,CAAC,CAAC;oBACzB,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,OAAO,CAAC,CAAC;oBAC3B,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,OAAO,CAAC,CAAC;oBAC3B,MAAM;gBACR,KAAK,UAAU;oBACb,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACxB,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACxB,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,KAAK,CAAC,CAAC;oBACzB,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;oBAC9B,IAAI,CAAC,qBAAqB,EAAE,CAAC;oBAC7B,MAAM;gBACR,KAAK,KAAK;oBACR,IAAI,IAAI,CAAC,QAAQ,EAAE;wBACjB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;qBACvB;oBACD,IAAI,IAAI,CAAC,QAAQ,EAAE;wBACjB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;qBAC1B;aACJ;SACF;;;;;;QAOD,IAAI;;YACF,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE;gBAC5B,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU;oBACjC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW;oBACnC,EAAC,MAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,0CAAE,KAAK,CAAA,EAC5B;;oBAEA,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC,SAAS,CACnC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAC3C,CAAC;oBACF,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE;wBACvC,IAAI,KAAK,GAAG,CAAC,CAAC;wBACd,IAAI,SAAS,GAAG,CAAC,CAAC;wBAClB,IAAI,MAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,0CAAE,QAAQ,CAAC,IAAI,CAAC,EAAE;4BAC/D,SAAS,GAAG,CAAC,CAAC,CAAC;yBAChB;wBACD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;4BAC/C,IAAI,CAAC,UAAU,CAAC,SAAS,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;4BACtC,IAAI,KAAK,GAAG,EAAE;gCAAE,MAAM;4BACtB,KAAK,EAAE,CAAC;yBACT;qBACF;oBACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;iBACrC;gBAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE;oBACtC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;iBACnE;gBAED,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACjB,IAAI,CAAC,SAAS,EAAE,CAAC;iBAClB;gBAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE;oBAC1C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAEvC,IAAI,CAAC,eAAe,GAAGE,iBAAY,CACjC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EACtB,IAAI,CAAC,MAAM,EACX;wBACE,SAAS,EAAE;;;;;;;4BAOT,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE;yBAC1C;wBACD,SAAS,EAAE,cAAc;qBAC1B,CACF,CAAC;iBACH;qBAAM;oBACL,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBACjD;gBAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,EAAE;oBACtD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CACtB;wBACE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CACtC,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,CAClC;qBACF,EACD,WAAW,CAAC,SAAS,CACtB,CAAC;iBACH;gBAED,IAAI,CAAC,MAAM;qBACR,gBAAgB,CAAC,eAAe,CAAC;qBACjC,OAAO,CAAC,CAAC,OAAO,KACf,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAC3D,CAAC;;gBAGJ,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE;oBAC7C,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAE1B,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAChC,SAAS,CAAC,GAAG,CAAC,cAAc,CAC7B,CAAC,CAAC,CACJ,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;iBAC1B;aACF;YAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE;gBAC1C,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;gBAC9B,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;aAC9D;YACD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SACxB;;;;;;QAOD,SAAS,CAAC,SAAkB;YAC1B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAChB,OAAO;aACR;YACD,IAAI,SAAS,EAAE;gBACb,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAClB,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAChC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,GAAG,SAAS,CAAC,CACxD,CAAC;gBACF,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,GAAG;oBAAE,OAAO;gBAClD,IAAI,CAAC,QAAQ,CAAC,gBAAgB,GAAG,GAAG,CAAC;aACtC;YAED,IAAI,CAAC,MAAM;iBACR,gBAAgB,CACf,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa,eAAe,SAAS,CAAC,GAAG,CAAC,cAAc,OAAO,SAAS,CAAC,GAAG,CAAC,aAAa,eAAe,SAAS,CAAC,GAAG,CAAC,cAAc,GAAG,CAC3J;iBACA,OAAO,CAAC,CAAC,CAAc,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;YAE3D,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YACvE,IAAI,MAAM,GAAgB,IAAI,CAAC,MAAM,CAAC,aAAa,CACjD,IAAI,cAAc,CAAC,SAAS,EAAE,CAC/B,CAAC;YAEF,QAAQ,cAAc,CAAC,SAAS;gBAC9B,KAAK,SAAS,CAAC,GAAG,CAAC,gBAAgB;oBACjC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;oBAC9B,MAAM;gBACR,KAAK,SAAS,CAAC,GAAG,CAAC,cAAc;oBAC/B,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAC5B,MAAM;gBACR,KAAK,SAAS,CAAC,GAAG,CAAC,eAAe;oBAChC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;oBAC7B,MAAM;gBACR,KAAK,SAAS,CAAC,GAAG,CAAC,aAAa;oBAC9B,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAC5B,MAAM;aACT;YAED,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAC9B,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B;QAED,qBAAqB;YACnB,MAAM,OAAO,GAAG;gBACd,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAC1B,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa,8BAA8B,CAC9D,CAAC,SAAS;aACZ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;YAEzD,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM;iBAC7D,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;iBACvD,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAE/B,QAAQ,OAAO;gBACb,KAAK,SAAS,CAAC,GAAG,CAAC,gBAAgB;oBACjC,QAAQ,CAAC,YAAY,CACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,CACpD,CAAC;oBACF,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;oBACnC,IAAI,CAAC,YAAY,CACf,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAChD,CAAC;oBACF,MAAM;gBACR,KAAK,SAAS,CAAC,GAAG,CAAC,cAAc;oBAC/B,QAAQ,CAAC,YAAY,CACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,CACnD,CAAC;oBACF,QAAQ,CAAC,YAAY,CACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CACjD,CAAC;oBACF,IAAI,CAAC,YAAY,CACf,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAC/C,CAAC;oBACF,MAAM;gBACR,KAAK,SAAS,CAAC,GAAG,CAAC,eAAe;oBAChC,QAAQ,CAAC,YAAY,CACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CACjD,CAAC;oBACF,QAAQ,CAAC,YAAY,CACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAC/C,CAAC;oBACF,IAAI,CAAC,YAAY,CACf,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAC7C,CAAC;oBACF,MAAM;gBACR,KAAK,SAAS,CAAC,GAAG,CAAC,aAAa;oBAC9B,QAAQ,CAAC,YAAY,CACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAClD,CAAC;oBACF,QAAQ,CAAC,YAAY,CACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAChD,CAAC;oBACF,IAAI,CAAC,YAAY,CACf,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAC9C,CAAC;oBACF,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC;wBAClD,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,mBAAmB;qBAC/D,CAAC,CAAC;oBACH,MAAM;aACT;YACD,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;SACrD;;;;;;QAOD,IAAI;YACF,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,OAAO;YAE7C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEjD,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;oBAC1B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI;oBAC3B,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;0BACtB,IAAI;0BACJ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU;8BAC9B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK;8BACpC,KAAK,CAAC;iBACE,CAAC,CAAC;gBAChB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;aACzB;YAED,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;SACjE;;;;QAKD,MAAM;YACJ,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;SACpD;;;;;QAMD,QAAQ;YACN,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAChE,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACzB,IAAI,CAAC,MAAM;iBACR,gBAAgB,CAAC,eAAe,CAAC;iBACjC,OAAO,CAAC,CAAC,OAAO,KACf,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAC9D,CAAC;YACJ,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;SAC1B;;;;;QAMO,YAAY;YAClB,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAE7C,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACpD,QAAQ,CAAC,MAAM,CACb,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,CAAC,OAAO,EAC3B,IAAI,CAAC,YAAY,CAAC,OAAO,EACzB,IAAI,CAAC,aAAa,CAAC,OAAO,EAC1B,IAAI,CAAC,YAAY,CAAC,OAAO,CAC1B,CAAC;YAEF,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACpD,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAChD,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAChD,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAClD,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAElD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC9C,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7C,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEjC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE;gBACzC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;aAC9C;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE;gBAChD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;aACzC;YAED,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;gBACzC,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,QAAQ,EACb;gBACA,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBACjD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,KAAK,KAAK,EAAE;oBAC7D,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;iBAC/B;gBACD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC5B,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAClC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAElC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAC1B,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAC1B,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,KAAK,QAAQ,EAAE;oBAChE,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;iBAC/B;gBACD,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;gBACxB,OAAO;aACR;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,KAAK,KAAK,EAAE;gBAC7D,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;aAC/B;YAED,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACjB,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;wBACrD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;iBAC9C;gBACD,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;aAChC;YAED,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACjB,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;wBACrD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;iBAC9C;gBACD,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;aAChC;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,KAAK,QAAQ,EAAE;gBAChE,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;aAC/B;YAED,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC5C,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7B,KAAK,CAAC,YAAY,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;YAC5C,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAE5B,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;SACzB;;;;QAKD,IAAI,QAAQ;YACV,QACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK;iBAC9C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK;oBAC9C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO;oBACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EACpD;SACH;;;;QAKD,IAAI,QAAQ;YACV,QACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ;iBACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI;oBAC7C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK;oBAC/C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EACjD;SACH;;;;;QAMD,IAAI,QAAQ;YACV,MAAM,OAAO,GAAG,EAAE,CAAC;YAEnB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;gBAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;gBACnD,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAErE,GAAG,CAAC,WAAW,CACb,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAC1D,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACnB;YACD,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;gBAC1C,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,QAAQ,EACb;gBACA,IAAI,KAAK,EAAE,IAAI,CAAC;gBAChB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;oBACvD,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC;oBACvD,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;iBAClD;qBAAM;oBACL,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC;oBACvD,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;iBAClD;gBAED,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC1D,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAEjC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;gBACrC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACnB;YACD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;gBAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;gBACnD,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAErE,GAAG,CAAC,WAAW,CACb,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAC1D,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACnB;YACD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;gBAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;gBACnD,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAErE,GAAG,CAAC,WAAW,CACb,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAC1D,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACnB;YAED,OAAO,OAAO,CAAC;SAChB;;;;;QAMD,IAAI,aAAa;YACf,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACrD,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAE3D,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC/C,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC3D,QAAQ,CAAC,WAAW,CAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAC7D,CAAC;YAEF,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC7C,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;YAE/D,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC3C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAE3E,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YAChD,OAAO,cAAc,CAAC;SACvB;;;;;;;QAQD,QAAQ,CAAC,SAAiB;YACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;gBAC3D,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,SAAS,GAAG,oBAAoB,SAAS,UAAU,CAAC;gBACxD,OAAO,GAAG,CAAC;aACZ;YACD,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACzC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YACvE,OAAO,IAAI,CAAC;SACb;;;;;;QAmCD,QAAQ;YACN,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YACnC,IAAI,UAAU;gBAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,UAAU,EAAE;gBACd,IAAI,CAAC,IAAI,EAAE,CAAC;aACb;SACF;;;ICnoBH;;;UAGqB,UAAU;QAG7B,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;;;QAQD,OAAO,CAAC,UAAoB,EAAE,WAAkB;;YAC9C,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;gBAC5D,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EACnC;gBACA,OAAO,KAAK,CAAC;aACd;YACD,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;gBAC3D,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EACnC;gBACA,OAAO,KAAK,CAAC;aACd;YACD,IACE,CAAA,MAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,kBAAkB,0CAAE,MAAM,IAAG,CAAC;gBAClE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAC5D,UAAU,CAAC,OAAO,CACnB,KAAK,CAAC,CAAC,EACR;gBACA,OAAO,KAAK,CAAC;aACd;YAED,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO;gBAC3C,UAAU,CAAC,QAAQ,CACjB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAC3C,WAAW,CACZ,EACD;gBACA,OAAO,KAAK,CAAC;aACd;YACD,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO;gBAC3C,UAAU,CAAC,OAAO,CAChB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAC3C,WAAW,CACZ,EACD;gBACA,OAAO,KAAK,CAAC;aACd;YAED,IACE,WAAW,KAAKF,YAAI,CAAC,KAAK;gBAC1B,WAAW,KAAKA,YAAI,CAAC,OAAO;gBAC5B,WAAW,KAAKA,YAAI,CAAC,OAAO,EAC5B;gBACA,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;oBAC5D,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EACnC;oBACA,OAAO,KAAK,CAAC;iBACd;gBACD,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;oBAC3D,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EACnC;oBACA,OAAO,KAAK,CAAC;iBACd;gBACD,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,EACpE;oBACA,KACE,IAAI,CAAC,GAAG,CAAC,EACT,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,qBAAqB,CAAC,MAAM,EACpE,CAAC,EAAE,EACH;wBACA,IACE,UAAU,CAAC,SAAS,CAClB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAAI,EACjE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,EAAE,CAChE;4BAED,OAAO,KAAK,CAAC;qBAChB;iBACF;aACF;YAED,OAAO,IAAI,CAAC;SACb;;;;;;;QAQO,kBAAkB,CAAC,QAAkB;YAC3C,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa;gBAClD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC;gBAE9D,OAAO,KAAK,CAAC;YACf,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACxE,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa;iBACrD,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC,CAAC;iBACtD,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,aAAa,CAAC,CAAC;SACrC;;;;;;;QAQO,iBAAiB,CAAC,QAAkB;YAC1C,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY;gBACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;gBAE7D,OAAO,IAAI,CAAC;YACd,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACxE,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY;iBACpD,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC,CAAC;iBACtD,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,aAAa,CAAC,CAAC;SACrC;;;;;;;QAQO,kBAAkB,CAAC,QAAkB;YAC3C,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa;gBAClD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC;gBAE9D,OAAO,KAAK,CAAC;YACf,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC;YACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAC3D,CAAC,CAAC,KAAK,CAAC,KAAK,aAAa,CAC3B,CAAC;SACH;;;;;;;QAQO,iBAAiB,CAAC,QAAkB;YAC1C,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY;gBACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;gBAE7D,OAAO,IAAI,CAAC;YACd,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC;YACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAC1D,CAAC,CAAC,KAAK,CAAC,KAAK,aAAa,CAC3B,CAAC;SACH;;;IC3JH;;;IAGA,MAAM,aAAa;QAkBjB,YAAY,OAAoB,EAAE,UAAmB,EAAa;YAdlE,qBAAgB,GAAG,CAAC,CAAC;YACrB,iBAAY,GAA8C,EAAE,CAAC;YAI7D,uBAAkB,GAAG,CAAC,CAAC;YAIf,gBAAW,GAAG,KAAK,CAAC;YACpB,8BAAyB,GAAG,CAAC,CAAC;YAwBtC,cAAS,GAAG,IAAI,QAAQ,EAAE,CAAC;;;;;;YAyYnB,sBAAiB,GAAG;gBAC1B,MAAM,WAAW,GAAG;oBAClB,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU;wBAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;iBACnE,CAAC;gBAEF,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBAChC,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;oBAC/B,IAAI;wBACF,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;wBACrE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE;gCAClC,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAC7C,CAAC,EACD,OAAO,CACR,CAAC;6BACH;iCAAM;gCACL,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;6BAC3C;yBACF;wBACD,WAAW,EAAE,CAAC;qBACf;oBAAC,WAAM;wBACN,OAAO,CAAC,IAAI,CACV,mFAAmF,CACpF,CAAC;qBACH;iBACF;qBAAM;oBACL,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE;wBAClC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;qBACnE;yBAAM;wBACL,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;qBACnC;oBACD,WAAW,EAAE,CAAC;iBACf;aACF,CAAC;;;;;;YAOM,sBAAiB,GAAG;gBAC1B,IAAI,CAAC,MAAM,EAAE,CAAC;aACf,CAAC;YAvcA,IAAI,CAAC,OAAO,EAAE;gBACZ,SAAS,CAAC,aAAa,CAAC,kBAAkB,CAAC;aAC5C;YACD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;YACvE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YAEnB,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,CAAC,WAAW,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;YAEjC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAEzB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;gBAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACxD;QAID,IAAI,QAAQ;YACV,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;;;;;;;;QASD,aAAa,CAAC,OAAO,EAAE,KAAK,GAAG,KAAK;YAClC,IAAI,KAAK;gBAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;;gBACvE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;SAC1B;;;;;;QAOD,MAAM;YACJ,IAAI,IAAI,CAAC,WAAW;gBAAE,OAAO;YAC7B,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;SACxB;;;;;;QAOD,IAAI;YACF,IAAI,IAAI,CAAC,WAAW;gBAAE,OAAO;YAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACtB;;;;;;QAOD,IAAI;YACF,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACtB;;;;;;QAOD,OAAO;;YACL,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;;;YAGxB,MAAA,IAAI,CAAC,MAAM,0CAAE,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAClD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACtB;;;;;;QAOD,MAAM;;YACJ,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,MAAA,IAAI,CAAC,MAAM,0CAAE,eAAe,CAAC,UAAU,CAAC,CAAC;SAC1C;;;;;;QAOD,KAAK;YACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;SACpB;;;;;;;;QASD,SAAS,CACP,UAA6B,EAC7B,SAA0D;YAE1D,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;gBAClC,UAAU,GAAG,CAAC,UAAU,CAAC,CAAC;aAC3B;YACD,IAAI,aAAa,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;gBAC7B,aAAa,GAAG,CAAC,SAAS,CAAC,CAAC;aAC7B;iBAAM;gBACL,aAAa,GAAG,SAAS,CAAC;aAC3B;YAED,IAAI,UAAU,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM,EAAE;gBAC9C,SAAS,CAAC,aAAa,CAAC,iBAAiB,CAAC;aAC3C;YAED,MAAM,WAAW,GAAG,EAAE,CAAC;YAEvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC1C,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE;oBAChD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;iBACnC;gBAED,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEpD,WAAW,CAAC,IAAI,CAAC;oBACf,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CACjC,IAAI,EACJ,SAAS,EACT,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CACxC;iBACF,CAAC,CAAC;gBAEH,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC3B,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;iBACvB;aACF;YAED,OAAO,WAAW,CAAC;SACpB;;;;;QAMD,OAAO;;YACL,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;;YAErB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACzB,MAAA,IAAI,CAAC,MAAM,0CAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACnE,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;gBAClC,MAAA,IAAI,CAAC,MAAM,0CAAE,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;aACnE;YACD,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAClE,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;SACxB;;;;;;;QAQD,aAAa,CAAC,KAAgB;;YAE5B,IAAK,KAAqB,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;gBAC1D,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAoB,CAAC;;;;gBAIxD,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBACjC,IACE,CAAC,IAAI,IAAI,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;qBACvC,CAAC,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC;oBAC/B,IAAI,CAAC,yBAAyB,GAAG,CAAC,EAClC;oBACA,IAAI,CAAC,yBAAyB,GAAG,CAAC,CAAC;oBACnC,OAAO;iBACR;gBACD,IAAI,CAAC,uBAAuB,CAAC,KAAoB,CAAC,CAAC;aACpD;YAED,IAAI,CAAC,QAAQ,CAAC,aAAa,CACzB,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,KAAY,EAAE,CAAC,CACtD,CAAC;YAEF,IAAK,MAAc,CAAC,MAAM,EAAE;gBAC1B,MAAM,CAAC,GAAI,MAAc,CAAC,MAAM,CAAC;gBACjC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aACjC;YAED,MAAM,OAAO,GAAG;;gBAEd,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;oBACjD,OAAO;iBACR;;gBAGD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ;oBAC7C,QAAQ,CAAC,KAAK,CAAC,CAAC;iBACjB,CAAC,CAAC;aACJ,CAAC;YAEF,OAAO,EAAE,CAAC;YAEV,IAAI,CAAC,yBAAyB,GAAG,CAAC,CAAC;SACpC;;;;;;QAOD,WAAW,CAAC,IAAU;YACpB,IAAI,CAAC,aAAa,CAAC;gBACjB,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM;gBAC7B,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK;aACZ,CAAC,CAAC;SACvB;QAEO,YAAY,CAAC,SAAS,EAAE,KAAK;YACnC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SAC/C;;;;;;;;QASO,kBAAkB,CACxB,MAAe,EACf,OAAgB,EAChB,cAAc,GAAG,KAAK;;YAEtB,MAAM,GAAG,eAAe,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACxD,IAAI,cAAc;gBAChB,MAAM,GAAG,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAEjE,eAAe,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAE3C,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAExE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;gBAC3C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;aAClC;;;;;YAMD,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE;gBAClC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;aAC7B;YACD,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE;gBACnC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;aAC7B;YACD,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE;gBAClC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;aAC7B;YAED,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAC9B,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,gBAAgB,CACtB,CAAC;;YAGF,IACE,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,CAAC,QAAQ,EACvE;gBACA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAC9B,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EACpE,IAAI,CAAC,kBAAkB,CACxB,CAAC;aACH;;YAGD,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE;gBAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;gBAC7C,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,IAAc;oBACxC,OAAO,IAAI,CAAC,MAAM,CAAC;wBACjB,IAAI,EAAE,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,IAAI,GAAG,SAAS,GAAG,SAAS;wBACpE,KAAK,EACH,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,KAAK,GAAG,SAAS,GAAG,SAAS;wBACjE,GAAG,EAAE,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,IAAI,GAAG,SAAS,GAAG,SAAS;wBACnE,IAAI,EACF,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK;8BAChC,UAAU,CAAC,iBAAiB;kCAC1B,SAAS;kCACT,SAAS;8BACX,SAAS;wBACf,MAAM,EACJ,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,OAAO,GAAG,SAAS,GAAG,SAAS;wBAChE,MAAM,EACJ,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,OAAO,GAAG,SAAS,GAAG,SAAS;wBAChE,MAAM,EAAE,CAAC,UAAU,CAAC,iBAAiB;qBACtC,CAAC,CAAC;iBACJ,CAAC;aACH;YAED,IAAI,MAAA,IAAI,CAAC,QAAQ,0CAAE,SAAS,EAAE;gBAC5B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aAC9B;YAED,OAAO,MAAM,CAAC;SACf;;;;;;QAOO,gBAAgB;YACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,OAAO,EAAE;gBACpC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAA4B,CAAC;aACjD;iBAAM;gBACL,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC;gBAChD,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,SAAS,EAAE;oBAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;iBACpD;qBAAM;oBACL,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;iBAClD;aACF;YAED,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEzB,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC/D,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;gBAClC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;aAC/D;YAED,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;gBACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;aAC1B;SACF;;;;;QAMO,iBAAiB;YACvB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;gBAAE,OAAO;YACzC,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC;YACjD,IAAI,KAAK,IAAI,SAAS,EAAE;gBACtB,KAAK,GAAG,mCAAmC,CAAC;aAC7C;YACD,IAAI,CAAC,OAAO;gBACV,KAAK,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC1E,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;SAChE;;;;;;QAOO,uBAAuB,CAAC,CAAc;;YAC5C;;YAEE,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB;gBACrC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;gBAC5B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;;gBAEhC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ;;;gBAEvB,MAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,0CAChB,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAC7C,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;gBAElD,OAAO;;;;YAKT,IACE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU;iBACtC,CAAC,CAAC,OAAO,KAAI,MAAA,CAAC,CAAC,IAAI,0CAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA,CAAC,EACxC;gBACA,OAAO;aACR;YAED,YAAY,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAC7C,IAAI,CAAC,yBAAyB,GAAG,UAAU,CAAC;gBAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;oBACxB,IAAI,CAAC,OAAO,CAAC,EAAE,CACb;wBACE,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAC/C,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,MAAM,CAC/B;qBACF,EACD,WAAW,CAAC,YAAY,CACzB,CAAC;iBACH;aACF,EAAE,IAAI,CAAC,QAAQ,CAAC,qCAAqC,CAAC,CAAC;SACzD;;;;;;;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"tempus-dominus.js","sources":["../../src/js/datetime.ts","../../src/js/errors.ts","../../src/js/namespace.ts","../../src/js/conts.ts","../../src/js/display/collapse.ts","../../src/js/actions.ts","../../src/js/display/calendar/date-display.ts","../../src/js/display/calendar/month-display.ts","../../src/js/options.ts","../../src/js/dates.ts","../../src/js/display/calendar/year-display.ts","../../src/js/display/calendar/decade-display.ts","../../src/js/display/time/time-display.ts","../../src/js/display/time/hour-display.ts","../../src/js/display/time/minute-display.ts","../../src/js/display/time/second-display.ts","../../src/js/display/index.ts","../../src/js/validation.ts","../../src/js/tempus-dominus.ts"],"sourcesContent":["export enum Unit {\r\n seconds = 'seconds',\r\n minutes = 'minutes',\r\n hours = 'hours',\r\n date = 'date',\r\n month = 'month',\r\n year = 'year',\r\n}\r\n\r\nexport interface DateTimeFormatOptions extends Intl.DateTimeFormatOptions {\r\n timeStyle?: 'short' | 'medium' | 'long';\r\n dateStyle?: 'short' | 'medium' | 'long' | 'full';\r\n}\r\n\r\n/**\r\n * For the most part this object behaves exactly the same way\r\n * as the native Date object with a little extra spice.\r\n */\r\nexport class DateTime extends Date {\r\n /**\r\n * Used with Intl.DateTimeFormat\r\n */\r\n locale = 'default';\r\n\r\n /**\r\n * Chainable way to set the {@link locale}\r\n * @param value\r\n */\r\n setLocale(value: string): this {\r\n this.locale = value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Converts a plain JS date object to a DateTime object.\r\n * Doing this allows access to format, etc.\r\n * @param date\r\n */\r\n static convert(date: Date): DateTime {\r\n if (!date) throw `A date is required`;\r\n return new DateTime(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate(),\r\n date.getHours(),\r\n date.getMinutes(),\r\n date.getSeconds(),\r\n date.getMilliseconds()\r\n );\r\n }\r\n\r\n /**\r\n * Native date manipulations are not pure functions. This function creates a duplicate of the DateTime object.\r\n */\r\n get clone() {\r\n return new DateTime(\r\n this.year,\r\n this.month,\r\n this.date,\r\n this.hours,\r\n this.minutes,\r\n this.seconds,\r\n this.getMilliseconds()\r\n ).setLocale(this.locale);\r\n }\r\n\r\n /**\r\n * Sets the current date to the start of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).startOf('month')\r\n * would return April 1, 2021, 12:00:00.000 AM (midnight)\r\n * @param unit\r\n */\r\n startOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(0);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(0, 0);\r\n break;\r\n case 'hours':\r\n this.setMinutes(0, 0, 0);\r\n break;\r\n case 'date':\r\n this.setHours(0, 0, 0, 0);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(0 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.startOf(Unit.date);\r\n this.setDate(1);\r\n break;\r\n case 'year':\r\n this.startOf(Unit.date);\r\n this.setMonth(0, 1);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the current date to the end of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).endOf('month')\r\n * would return April 30, 2021, 11:59:59.999 PM\r\n * @param unit\r\n */\r\n endOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(999);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(59, 999);\r\n break;\r\n case 'hours':\r\n this.setMinutes(59, 59, 999);\r\n break;\r\n case 'date':\r\n this.setHours(23, 59, 59, 999);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(6 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.month);\r\n this.setDate(0);\r\n break;\r\n case 'year':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.year);\r\n this.setDate(0);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Change a {@link unit} value. Value can be positive or negative\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).manipulate(1, 'month')\r\n * would return May 30, 2021, 11:45:32.984 AM\r\n * @param value A positive or negative number\r\n * @param unit\r\n */\r\n manipulate(value: number, unit: Unit): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n this[unit] += value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns a string format.\r\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat\r\n * for valid templates and locale objects\r\n * @param template An object. Uses browser defaults otherwise.\r\n * @param locale Can be a string or an array of strings. Uses browser defaults otherwise.\r\n */\r\n format(template: DateTimeFormatOptions, locale = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, template).format(this);\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is before this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isBefore(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() < compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() < compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is after this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isAfter(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() > compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() > compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is same this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isSame(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() === compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n compare = DateTime.convert(compare);\r\n return (\r\n this.clone.startOf(unit).valueOf() === compare.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Check if this is between two other DateTimes, optionally looking at unit scale. The match is exclusive.\r\n * @param left\r\n * @param right\r\n * @param unit.\r\n * @param inclusivity. A [ indicates inclusion of a value. A ( indicates exclusion.\r\n * If the inclusivity parameter is used, both indicators must be passed.\r\n */\r\n isBetween(\r\n left: DateTime,\r\n right: DateTime,\r\n unit?: Unit,\r\n inclusivity: '()' | '[]' | '(]' | '[)' = '()'\r\n ): boolean {\r\n if (unit && this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n const leftInclusivity = inclusivity[0] === '(';\r\n const rightInclusivity = inclusivity[1] === ')';\r\n\r\n return (\r\n ((leftInclusivity\r\n ? this.isAfter(left, unit)\r\n : !this.isBefore(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isBefore(right, unit)\r\n : !this.isAfter(right, unit))) ||\r\n ((leftInclusivity\r\n ? this.isBefore(left, unit)\r\n : !this.isAfter(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isAfter(right, unit)\r\n : !this.isBefore(right, unit)))\r\n );\r\n }\r\n\r\n /**\r\n * Returns flattened object of the date. Does not include literals\r\n * @param locale\r\n * @param template\r\n */\r\n parts(\r\n locale = this.locale,\r\n template: any = { dateStyle: 'full', timeStyle: 'long' }\r\n ) {\r\n const parts = {};\r\n new Intl.DateTimeFormat(locale, template)\r\n .formatToParts(this)\r\n .filter((x) => x.type !== 'literal')\r\n .forEach((x) => (parts[x.type] = x.value));\r\n return parts;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getSeconds()\r\n */\r\n get seconds(): number {\r\n return this.getSeconds();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setSeconds()\r\n */\r\n set seconds(value: number) {\r\n this.setSeconds(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get secondsFormatted(): string {\r\n return this.format({ second: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMinutes()\r\n */\r\n get minutes(): number {\r\n return this.getMinutes();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMinutes()\r\n */\r\n set minutes(value: number) {\r\n this.setMinutes(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get minutesFormatted(): string {\r\n return this.format({ minute: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getHours()\r\n */\r\n get hours(): number {\r\n return this.getHours();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setHours()\r\n */\r\n set hours(value: number) {\r\n this.setHours(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get hoursFormatted(): string {\r\n return this.format({ hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Returns two digit hours but in twelve hour mode e.g. 13 -> 1\r\n */\r\n get twelveHoursFormatted(): string {\r\n return this.format({ hour12: true, hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Get the meridiem of the date. E.g. AM or PM.\r\n * If the {@link locale} provides a \"dayPeriod\" then this will be returned,\r\n * otherwise it will return AM or PM.\r\n * @param locale\r\n */\r\n meridiem(locale: string = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, {\r\n hour: 'numeric',\r\n hour12: true,\r\n } as any)\r\n .formatToParts(this)\r\n .find((p) => p.type === 'dayPeriod')?.value;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDate()\r\n */\r\n get date(): number {\r\n return this.getDate();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setDate()\r\n */\r\n set date(value: number) {\r\n this.setDate(value);\r\n }\r\n\r\n /**\r\n * Return two digit date\r\n */\r\n get dateFormatted(): string {\r\n return this.date < 10 ? `0${this.date}` : `${this.date}`;\r\n }\r\n\r\n // https://github.com/you-dont-need/You-Dont-Need-Momentjs#week-of-year\r\n /**\r\n * Gets the week of the year\r\n */\r\n get week(): number {\r\n const startOfYear = new Date(this.year, 0, 1);\r\n startOfYear.setDate(\r\n startOfYear.getDate() + (1 - (startOfYear.getDay() % 7))\r\n );\r\n return Math.round((this.valueOf() - startOfYear.valueOf()) / 604800000) + 1;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDay()\r\n */\r\n get weekDay(): number {\r\n return this.getDay();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMonth()\r\n */\r\n get month(): number {\r\n return this.getMonth();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMonth()\r\n */\r\n set month(value: number) {\r\n this.setMonth(value);\r\n }\r\n\r\n /**\r\n * Return two digit, human expected month. E.g. January = 1, December = 12\r\n */\r\n get monthFormatted(): string {\r\n return this.month + 1 < 10 ? `0${this.month}` : `${this.month}`;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getFullYear()\r\n */\r\n get year(): number {\r\n return this.getFullYear();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setFullYear()\r\n */\r\n set year(value: number) {\r\n this.setFullYear(value);\r\n }\r\n}\r\n","import Namespace from './namespace';\n\nexport class TdError extends Error {\n code: number;\n}\n\nexport class ErrorMessages {\n private base = 'TD:';\n\n //#region out to console\n\n /**\n * Throws an error indicating that a key in the options object is invalid.\n * @param optionName\n */\n unexpectedOption(optionName: string) {\n const error = new TdError(\n `${this.base} Unexpected option: ${optionName} does not match a known option.`\n );\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error indicating that one more keys in the options object is invalid.\n * @param optionName\n */\n unexpectedOptions(optionName: string[]) {\n const error = new TdError(`${this.base}: ${optionName.join(', ')}`);\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error when an option is provide an unsupported value.\n * For example a value of 'cheese' for toolbarPlacement which only supports\n * 'top', 'bottom', 'default'.\n * @param optionName\n * @param badValue\n * @param validOptions\n */\n unexpectedOptionValue(\n optionName: string,\n badValue: string,\n validOptions: string[]\n ) {\n const error = new TdError(\n `${\n this.base\n } Unexpected option value: ${optionName} does not accept a value of \"${badValue}\". Valid values are: ${validOptions.join(\n ', '\n )}`\n );\n error.code = 2;\n throw error;\n }\n\n /**\n * Throws an error when an option value is the wrong type.\n * For example a string value was provided to multipleDates which only\n * supports true or false.\n * @param optionName\n * @param badType\n * @param expectedType\n */\n typeMismatch(optionName: string, badType: string, expectedType: string) {\n const error = new TdError(\n `${this.base} Mismatch types: ${optionName} has a type of ${badType} instead of the required ${expectedType}`\n );\n error.code = 3;\n throw error;\n }\n\n /**\n * Throws an error when an option value is outside of the expected range.\n * For example restrictions.daysOfWeekDisabled excepts a value between 0 and 6.\n * @param optionName\n * @param lower\n * @param upper\n */\n numbersOutOfRage(optionName: string, lower: number, upper: number) {\n const error = new TdError(\n `${this.base} ${optionName} expected an array of number between ${lower} and ${upper}.`\n );\n error.code = 4;\n throw error;\n }\n\n /**\n * Throws an error when a value for a date options couldn't be parsed. Either\n * the option was an invalide string or an invalid Date object.\n * @param optionName\n * @param date\n * @param soft If true, logs a warning instead of an error.\n */\n failedToParseDate(optionName: string, date: any, soft = false) {\n const error = new TdError(\n `${this.base} Could not correctly parse \"${date}\" to a date for ${optionName}.`\n );\n error.code = 5;\n if (!soft) throw error;\n console.warn(error);\n }\n\n /**\n * Throws when an element to attach to was not provided in the constructor.\n */\n mustProvideElement() {\n const error = new TdError(`${this.base} No element was provided.`);\n error.code = 6;\n throw error;\n }\n\n /**\n * Throws if providing an array for the events to subscribe method doesn't have\n * the same number of callbacks. E.g., subscribe([1,2], [1])\n */\n subscribeMismatch() {\n const error = new TdError(\n `${this.base} The subscribed events does not match the number of callbacks`\n );\n error.code = 7;\n throw error;\n }\n\n /**\n * Throws if the configuration has conflicting rules e.g. minDate is after maxDate\n */\n conflictingConfiguration(message?: string) {\n const error = new TdError(\n `${this.base} A configuration value conflicts with another rule. ${message}`\n );\n error.code = 8;\n throw error;\n }\n\n /**\n * Logs a warning if a date option value is provided as a string, instead of\n * a date/datetime object.\n */\n dateString() {\n console.warn(\n `${this.base} Using a string for date options is not recommended unless you specify an ISO string.`\n );\n }\n\n //#endregion\n\n //#region used with notify.error\n\n /**\n * Used with an Error Event type if the user selects a date that\n * fails restriction validation.\n */\n failedToSetInvalidDate = 'Failed to set invalid date';\n\n /**\n * Used with an Error Event type when a user changes the value of the\n * input field directly, and does not provide a valid date.\n */\n failedToParseInput = 'Failed parse input field';\n\n //#endregion\n}\n","import { ErrorMessages } from './errors';\n// this is not the way I want this to stay but nested classes seemed to blown up once its compiled.\nconst NAME = 'tempus-dominus',\n version = '6.0.0-alpha1',\n dataKey = 'td';\n\n/**\n * Events\n */\nclass Events {\n key = `.${dataKey}`;\n\n /**\n * Change event. Fired when the user selects a date.\n * See also EventTypes.ChangeEvent\n */\n change = `change${this.key}`;\n\n /**\n * Emit when the view changes for example from month view to the year view.\n * See also EventTypes.ViewUpdateEvent\n */\n update = `update${this.key}`;\n\n /**\n * Emits when a selected date or value from the input field fails to meet the provided validation rules.\n * See also EventTypes.FailEvent\n */\n error = `error${this.key}`;\n\n /**\n * Show event\n * @event Events#show\n */\n show = `show${this.key}`;\n\n /**\n * Hide event\n * @event Events#hide\n */\n hide = `hide${this.key}`;\n\n // blur and focus are used in the jQuery provider but are otherwise unused.\n // keyup/down will be used later for keybinding options\n\n blur = `blur${this.key}`;\n focus = `focus${this.key}`;\n keyup = `keyup${this.key}`;\n keydown = `keydown${this.key}`;\n}\n\nclass Css {\n /**\n * The outer element for the widget.\n */\n widget = `${NAME}-widget`;\n\n /**\n * Hold the previous, next and switcher divs\n */\n calendarHeader = 'calendar-header';\n\n /**\n * The element for the action to change the calendar view. E.g. month -> year.\n */\n switch = 'picker-switch';\n\n /**\n * The elements for all of the toolbar options\n */\n toolbar = 'toolbar';\n\n /**\n * Disables the hover and rounding affect.\n */\n noHighlight = 'no-highlight';\n\n /**\n * Applied to the widget element when the side by side option is in use.\n */\n sideBySide = 'timepicker-sbs';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> July\n */\n previous = 'previous';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> September\n */\n next = 'next';\n\n /**\n * Applied to any action that would violate any restriction options. ALso applied\n * to an input field if the disabled function is called.\n */\n disabled = 'disabled';\n\n /**\n * Applied to any date that is less than requested view,\n * e.g. the last day of the previous month.\n */\n old = 'old';\n\n /**\n * Applied to any date that is greater than of requested view,\n * e.g. the last day of the previous month.\n */\n new = 'new';\n\n /**\n * Applied to any date that is currently selected.\n */\n active = 'active';\n\n //#region date element\n\n /**\n * The outer most element for the calendar view.\n */\n dateContainer = 'date-container';\n\n /**\n * The outer most element for the decades view.\n */\n decadesContainer = `${this.dateContainer}-decades`;\n\n /**\n * Applied to elements within the decades container, e.g. 2020, 2030\n */\n decade = 'decade';\n\n /**\n * The outer most element for the years view.\n */\n yearsContainer = `${this.dateContainer}-years`;\n\n /**\n * Applied to elements within the years container, e.g. 2021, 2021\n */\n year = 'year';\n\n /**\n * The outer most element for the month view.\n */\n monthsContainer = `${this.dateContainer}-months`;\n\n /**\n * Applied to elements within the month container, e.g. January, February\n */\n month = 'month';\n\n /**\n * The outer most element for the calendar view.\n */\n daysContainer = `${this.dateContainer}-days`;\n\n /**\n * Applied to elements within the day container, e.g. 1, 2..31\n */\n day = 'day';\n\n /**\n * If display.calendarWeeks is enabled, a column displaying the week of year\n * is shown. This class is applied to each cell in that column.\n */\n calendarWeeks = 'cw';\n\n /**\n * Applied to the first row of the calendar view, e.g. Sunday, Monday\n */\n dayOfTheWeek = 'dow';\n\n /**\n * Applied to the current date on the calendar view.\n */\n today = 'today';\n\n /**\n * Applied to the locale's weekend dates on the calendar view, e.g. Sunday, Saturday\n */\n weekend = 'weekend';\n\n //#endregion\n\n //#region time element\n\n /**\n * The outer most element for all time related elements.\n */\n timeContainer = 'time-container';\n\n /**\n * Applied the separator columns between time elements, e.g. hour *:* minute *:* second\n */\n separator = 'separator';\n\n /**\n * The outer most element for the clock view.\n */\n clockContainer = `${this.timeContainer}-clock`;\n\n /**\n * The outer most element for the hours selection view.\n */\n hourContainer = `${this.timeContainer}-hour`;\n\n /**\n * The outer most element for the minutes selection view.\n */\n minuteContainer = `${this.timeContainer}-minute`;\n\n /**\n * The outer most element for the seconds selection view.\n */\n secondContainer = `${this.timeContainer}-second`;\n\n /**\n * Applied to each element in the hours selection view.\n */\n hour = 'hour';\n\n /**\n * Applied to each element in the minutes selection view.\n */\n minute = 'minute';\n\n /**\n * Applied to each element in the seconds selection view.\n */\n second = 'second';\n\n /**\n * Applied AM/PM toggle button.\n */\n toggleMeridiem = 'toggleMeridiem';\n\n //#endregion\n\n //#region collapse\n\n /**\n * Applied the element of the current view mode, e.g. calendar or clock.\n */\n show = 'show';\n\n /**\n * Applied to the currently showing view mode during a transition\n * between calendar and clock views\n */\n collapsing = 'td-collapsing';\n\n /**\n * Applied to the currently hidden view mode.\n */\n collapse = 'td-collapse';\n\n //#endregion\n\n /**\n * Applied to the widget when the option display.inline is enabled.\n */\n inline = 'inline';\n}\n\nexport default class Namespace {\n static NAME = NAME;\n // noinspection JSUnusedGlobalSymbols\n static version = version;\n static dataKey = dataKey;\n\n static events = new Events();\n\n static css = new Css();\n\n static errorMessages = new ErrorMessages();\n}\n","import { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options from './options';\n\nconst DefaultOptions: Options = {\n restrictions: {\n minDate: undefined,\n maxDate: undefined,\n disabledDates: [],\n enabledDates: [],\n daysOfWeekDisabled: [],\n disabledTimeIntervals: [],\n disabledHours: [],\n enabledHours: [],\n },\n display: {\n icons: {\n type: 'icons',\n time: 'fas fa-clock',\n date: 'fas fa-calendar',\n up: 'fas fa-arrow-up',\n down: 'fas fa-arrow-down',\n previous: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n today: 'fas fa-calendar-check',\n clear: 'fas fa-trash',\n close: 'fas fa-times',\n },\n sideBySide: false,\n calendarWeeks: false,\n viewMode: 'calendar',\n toolbarPlacement: 'bottom',\n keepOpen: false,\n buttons: {\n today: false,\n clear: false,\n close: false,\n },\n components: {\n calendar: true,\n date: true,\n month: true,\n year: true,\n decades: true,\n clock: true,\n hours: true,\n minutes: true,\n seconds: false,\n useTwentyfourHour: false,\n },\n inline: false,\n },\n stepping: 1,\n useCurrent: true,\n defaultDate: undefined,\n localization: {\n today: 'Go to today',\n clear: 'Clear selection',\n close: 'Close the picker',\n selectMonth: 'Select Month',\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n selectYear: 'Select Year',\n previousYear: 'Previous Year',\n nextYear: 'Next Year',\n selectDecade: 'Select Decade',\n previousDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n previousCentury: 'Previous Century',\n nextCentury: 'Next Century',\n pickHour: 'Pick Hour',\n incrementHour: 'Increment Hour',\n decrementHour: 'Decrement Hour',\n pickMinute: 'Pick Minute',\n incrementMinute: 'Increment Minute',\n decrementMinute: 'Decrement Minute',\n pickSecond: 'Pick Second',\n incrementSecond: 'Increment Second',\n decrementSecond: 'Decrement Second',\n toggleMeridiem: 'Toggle Meridiem',\n selectTime: 'Select Time',\n selectDate: 'Select Date',\n dayViewHeaderFormat: 'long',\n locale: 'default',\n },\n keepInvalid: false,\n debug: false,\n allowInputToggle: false,\n viewDate: new DateTime(),\n multipleDates: false,\n multipleDatesSeparator: '; ',\n promptTimeOnDateChange: false,\n promptTimeOnDateChangeTransitionDelay: 200,\n hooks: {\n inputParse: undefined,\n inputFormat: undefined,\n },\n};\n\nconst DatePickerModes: {\n name: string;\n className: string;\n unit: Unit;\n step: number;\n}[] = [\n {\n name: 'calendar',\n className: Namespace.css.daysContainer,\n unit: Unit.month,\n step: 1,\n },\n {\n name: 'months',\n className: Namespace.css.monthsContainer,\n unit: Unit.year,\n step: 1,\n },\n {\n name: 'years',\n className: Namespace.css.yearsContainer,\n unit: Unit.year,\n step: 10,\n },\n {\n name: 'decades',\n className: Namespace.css.decadesContainer,\n unit: Unit.year,\n step: 100,\n },\n];\n\nexport { DefaultOptions, DatePickerModes, Namespace };\n","import Namespace from '../namespace';\n\n/**\n * Provides a collapse functionality to the view changes\n */\nexport default class Collapse {\n private timeOut;\n\n /**\n * Flips the show/hide state of `target`\n * @param target html element to affect.\n */\n toggle(target: HTMLElement, callback = undefined) {\n if (target.classList.contains(Namespace.css.show)) {\n this.hide(target, callback);\n } else {\n this.show(target, callback);\n }\n }\n\n /**\n * If `target` is not already showing, then show after the animation.\n * @param target\n */\n show(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse, Namespace.css.show);\n target.style.height = '';\n this.timeOut = null;\n if (callback) callback();\n };\n\n target.style.height = '0';\n target.classList.remove(Namespace.css.collapse);\n target.classList.add(Namespace.css.collapsing);\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n target.style.height = `${target.scrollHeight}px`;\n }\n\n /**\n * If `target` is not already hidden, then hide after the animation.\n * @param target HTML Element\n */\n hide(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n !target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse);\n this.timeOut = null;\n };\n\n target.style.height = `${target.getBoundingClientRect()['height']}px`;\n\n const reflow = (element) => element.offsetHeight;\n\n reflow(target);\n\n target.classList.remove(Namespace.css.collapse, Namespace.css.show);\n target.classList.add(Namespace.css.collapsing);\n target.style.height = '';\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n }\n\n /**\n * Gets the transition duration from the `element` by getting css properties\n * `transition-duration` and `transition-delay`\n * @param element HTML Element\n */\n private getTransitionDurationFromElement = (element: HTMLElement) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } =\n window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) +\n Number.parseFloat(transitionDelay)) *\n 1000\n );\n };\n}\n","import { DatePickerModes } from './conts.js';\nimport { DateTime, Unit } from './datetime';\nimport { TempusDominus } from './tempus-dominus';\nimport Collapse from './display/collapse';\nimport Namespace from './namespace';\n\n/**\n *\n */\nexport default class Actions {\n private _context: TempusDominus;\n private collapse: Collapse;\n\n constructor(context: TempusDominus) {\n this._context = context;\n this.collapse = new Collapse();\n }\n\n /**\n * Performs the selected `action`. See ActionTypes\n * @param e This is normally a click event\n * @param action If not provided, then look for a [data-action]\n */\n do(e: any, action?: ActionTypes) {\n const currentTarget = e.currentTarget;\n if (currentTarget.classList.contains(Namespace.css.disabled)) return false;\n action = action || currentTarget.dataset.action;\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n /**\n * Common function to manipulate {@link lastPicked} by `unit`\n * @param unit\n * @param value Value to change by\n */\n const manipulateAndSet = (unit: Unit, value = 1) => {\n const newDate = lastPicked.manipulate(value, unit);\n if (this._context._validation.isValid(newDate, unit)) {\n this._context.dates._setValue(\n newDate,\n this._context.dates.lastPickedIndex\n );\n }\n };\n\n switch (action) {\n case ActionTypes.next:\n case ActionTypes.previous:\n const { unit, step } = DatePickerModes[this._context._currentViewMode];\n if (action === ActionTypes.next)\n this._context._viewDate.manipulate(step, unit);\n else this._context._viewDate.manipulate(step * -1, unit);\n this._context._viewUpdate(unit);\n\n this._context._display._showMode();\n break;\n case ActionTypes.pickerSwitch:\n this._context._display._showMode(1);\n this._context._viewUpdate(\n DatePickerModes[this._context._currentViewMode].unit\n );\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.selectMonth:\n case ActionTypes.selectYear:\n case ActionTypes.selectDecade:\n const value = +currentTarget.dataset.value;\n switch (action) {\n case ActionTypes.selectMonth:\n this._context._viewDate.month = value;\n this._context._viewUpdate(Unit.month);\n break;\n case ActionTypes.selectYear:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n case ActionTypes.selectDecade:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n }\n\n if (\n this._context._currentViewMode === this._context._minViewModeNumber\n ) {\n this._context.dates._setValue(\n this._context._viewDate,\n this._context.dates.lastPickedIndex\n );\n if (!this._context._options.display.inline) {\n this._context._display.hide();\n }\n } else {\n this._context._display._showMode(-1);\n }\n break;\n case ActionTypes.selectDay:\n const day = this._context._viewDate.clone;\n if (currentTarget.classList.contains(Namespace.css.old)) {\n day.manipulate(-1, Unit.month);\n }\n if (currentTarget.classList.contains(Namespace.css.new)) {\n day.manipulate(1, Unit.month);\n }\n\n day.date = +currentTarget.dataset.day;\n let index = 0;\n if (this._context._options.multipleDates) {\n index = this._context.dates.pickedIndex(day, Unit.date);\n if (index !== -1) {\n this._context.dates._setValue(null, index); //deselect multi-date\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex + 1\n );\n }\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex\n );\n }\n\n if (\n !this._context._display._hasTime &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline &&\n !this._context._options.multipleDates\n ) {\n this._context._display.hide();\n }\n break;\n case ActionTypes.selectHour:\n let hour = +currentTarget.dataset.value;\n if (\n lastPicked.hours >= 12 &&\n !this._context._options.display.components.useTwentyfourHour\n )\n hour += 12;\n lastPicked.hours = hour;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.minutes &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectMinute:\n lastPicked.minutes = +currentTarget.dataset.value;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.seconds &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectSecond:\n lastPicked.seconds = +currentTarget.dataset.value;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.incrementHours:\n manipulateAndSet(Unit.hours);\n break;\n case ActionTypes.incrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping);\n break;\n case ActionTypes.incrementSeconds:\n manipulateAndSet(Unit.seconds);\n break;\n case ActionTypes.decrementHours:\n manipulateAndSet(Unit.hours, -1);\n break;\n case ActionTypes.decrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping * -1);\n break;\n case ActionTypes.decrementSeconds:\n manipulateAndSet(Unit.seconds, -1);\n break;\n case ActionTypes.toggleMeridiem:\n manipulateAndSet(\n Unit.hours,\n this._context.dates.lastPicked.hours >= 12 ? -12 : 12\n );\n break;\n case ActionTypes.togglePicker:\n this._context._display.widget\n .querySelectorAll(\n `.${Namespace.css.dateContainer}, .${Namespace.css.timeContainer}`\n )\n .forEach((htmlElement: HTMLElement) =>\n this.collapse.toggle(htmlElement)\n );\n if (\n currentTarget.getAttribute('title') ===\n this._context._options.localization.selectDate\n ) {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectTime\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.time\n ).outerHTML;\n\n this._context._display._updateCalendarHeader();\n } else {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectDate\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.date\n ).outerHTML;\n this.do(e, ActionTypes.showClock);\n this._context._display._update('clock');\n }\n break;\n case ActionTypes.showClock:\n case ActionTypes.showHours:\n case ActionTypes.showMinutes:\n case ActionTypes.showSeconds:\n this._context._display.widget\n .querySelectorAll(`.${Namespace.css.timeContainer} > div`)\n .forEach(\n (htmlElement: HTMLElement) => (htmlElement.style.display = 'none')\n );\n\n let classToUse = '';\n switch (action) {\n case ActionTypes.showClock:\n classToUse = Namespace.css.clockContainer;\n this._context._display._update('clock');\n break;\n case ActionTypes.showHours:\n classToUse = Namespace.css.hourContainer;\n this._context._display._update(Unit.hours);\n break;\n case ActionTypes.showMinutes:\n classToUse = Namespace.css.minuteContainer;\n this._context._display._update(Unit.minutes);\n break;\n case ActionTypes.showSeconds:\n classToUse = Namespace.css.secondContainer;\n this._context._display._update(Unit.seconds);\n break;\n }\n\n ((\n this._context._display.widget.getElementsByClassName(classToUse)[0]\n )).style.display = 'grid';\n break;\n case ActionTypes.clear:\n this._context.dates._setValue(null);\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.close:\n this._context._display.hide();\n break;\n case ActionTypes.today:\n const today = new DateTime().setLocale(\n this._context._options.localization.locale\n );\n this._context._viewDate = today;\n if (this._context._validation.isValid(today, Unit.date))\n this._context.dates._setValue(\n today,\n this._context.dates.lastPickedIndex\n );\n break;\n }\n }\n}\n\nexport enum ActionTypes {\n next = 'next',\n previous = 'previous',\n pickerSwitch = 'pickerSwitch',\n selectMonth = 'selectMonth',\n selectYear = 'selectYear',\n selectDecade = 'selectDecade',\n selectDay = 'selectDay',\n selectHour = 'selectHour',\n selectMinute = 'selectMinute',\n selectSecond = 'selectSecond',\n incrementHours = 'incrementHours',\n incrementMinutes = 'incrementMinutes',\n incrementSeconds = 'incrementSeconds',\n decrementHours = 'decrementHours',\n decrementMinutes = 'decrementMinutes',\n decrementSeconds = 'decrementSeconds',\n toggleMeridiem = 'toggleMeridiem',\n togglePicker = 'togglePicker',\n showClock = 'showClock',\n showHours = 'showHours',\n showMinutes = 'showMinutes',\n showSeconds = 'showSeconds',\n clear = 'clear',\n close = 'close',\n today = 'today',\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `date`\r\n */\r\nexport default class DateDisplay {\r\n private _context: TempusDominus;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.daysContainer);\r\n\r\n container.append(...this._daysOfTheWeek());\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(Namespace.css.calendarWeeks, Namespace.css.noHighlight);\r\n container.appendChild(div);\r\n }\r\n\r\n for (let i = 0; i < 42; i++) {\r\n if (i !== 0 && i % 7 === 0) {\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n container.appendChild(div);\r\n }\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDay);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update(): void {\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.daysContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.daysContainer,\r\n this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n })\r\n );\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(-1, Unit.month),\r\n Unit.month\r\n )\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(1, Unit.month),\r\n Unit.month\r\n )\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.month)\r\n .startOf('weekDay')\r\n .manipulate(12, Unit.hours);\r\n\r\n container\r\n .querySelectorAll(\r\n `[data-action=\"${ActionTypes.selectDay}\"], .${Namespace.css.calendarWeeks}`\r\n )\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (\r\n this._context._options.display.calendarWeeks &&\r\n containerClone.classList.contains(Namespace.css.calendarWeeks)\r\n ) {\r\n if (containerClone.innerText === '#') return;\r\n containerClone.innerText = `${innerDate.week}`;\r\n return;\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.day);\r\n\r\n if (innerDate.isBefore(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.old);\r\n }\r\n if (innerDate.isAfter(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.new);\r\n }\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.date)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.date)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n if (innerDate.isSame(new DateTime(), Unit.date)) {\r\n classes.push(Namespace.css.today);\r\n }\r\n if (innerDate.weekDay === 0 || innerDate.weekDay === 6) {\r\n classes.push(Namespace.css.weekend);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`\r\n );\r\n containerClone.setAttribute(\r\n 'data-day',\r\n `${innerDate.date}`\r\n );\r\n containerClone.innerText = innerDate.format({ day: \"numeric\" });\r\n innerDate.manipulate(1, Unit.date);\r\n });\r\n }\r\n\r\n /***\r\n * Generates an html row that contains the days of the week.\r\n * @private\r\n */\r\n private _daysOfTheWeek(): HTMLElement[] {\r\n let innerDate = this._context._viewDate.clone\r\n .startOf('weekDay')\r\n .startOf(Unit.date);\r\n const row = [];\r\n document.createElement('div');\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = '#';\r\n row.push(htmlDivElement);\r\n }\r\n\r\n for (let i = 0; i < 7; i++) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.dayOfTheWeek,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = innerDate.format({ weekday: 'short' });\r\n innerDate.manipulate(1, Unit.date);\r\n row.push(htmlDivElement);\r\n }\r\n\r\n return row;\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `month`\n */\nexport default class MonthDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.monthsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMonth);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.monthsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.monthsContainer,\n this._context._viewDate.format({ year: 'numeric' })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.year),\n Unit.year\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.year),\n Unit.year\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone.startOf(Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMonth}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.month);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.month)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.month)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${index}`);\n containerClone.innerText = `${innerDate.format({ month: 'short' })}`;\n innerDate.manipulate(1, Unit.month);\n });\n }\n}\n","import { DateTime, DateTimeFormatOptions } from './datetime';\nimport Namespace from './namespace';\nimport { DefaultOptions } from './conts';\nimport { TempusDominus } from './tempus-dominus';\n\nexport default interface Options {\n restrictions: {\n minDate: DateTime;\n maxDate: DateTime;\n enabledDates: DateTime[];\n disabledDates: DateTime[];\n enabledHours: number[];\n disabledHours: number[];\n disabledTimeIntervals: { from: DateTime; to: DateTime }[];\n daysOfWeekDisabled: number[];\n };\n display: {\n toolbarPlacement: 'top' | 'bottom';\n components: {\n calendar: boolean;\n date: boolean;\n month: boolean;\n year: boolean;\n decades: boolean;\n clock: boolean;\n hours: boolean;\n minutes: boolean;\n seconds: boolean;\n useTwentyfourHour: boolean;\n };\n buttons: { today: boolean; close: boolean; clear: boolean };\n calendarWeeks: boolean;\n icons: {\n date: string;\n next: string;\n previous: string;\n today: string;\n clear: string;\n time: string;\n up: string;\n type: 'icons' | 'sprites';\n down: string;\n close: string;\n };\n viewMode: 'clock' | 'calendar' | 'months' | 'years' | 'decades';\n sideBySide: boolean;\n inline: boolean;\n keepOpen: boolean;\n };\n stepping: number;\n useCurrent: boolean;\n defaultDate: DateTime;\n localization: {\n nextMonth: string;\n pickHour: string;\n incrementSecond: string;\n nextDecade: string;\n selectDecade: string;\n dayViewHeaderFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n decrementHour: string;\n selectDate: string;\n incrementHour: string;\n previousCentury: string;\n decrementSecond: string;\n today: string;\n previousMonth: string;\n selectYear: string;\n pickSecond: string;\n nextCentury: string;\n close: string;\n incrementMinute: string;\n selectTime: string;\n clear: string;\n toggleMeridiem: string;\n selectMonth: string;\n decrementMinute: string;\n pickMinute: string;\n nextYear: string;\n previousYear: string;\n previousDecade: string;\n locale: string;\n };\n keepInvalid: boolean;\n debug: boolean;\n allowInputToggle: boolean;\n viewDate: DateTime;\n multipleDates: boolean;\n multipleDatesSeparator: string;\n promptTimeOnDateChange: boolean;\n promptTimeOnDateChangeTransitionDelay: number;\n hooks: {\n inputParse: (context: TempusDominus, value: any) => DateTime;\n inputFormat: (context: TempusDominus, date: DateTime) => string;\n };\n}\n\nexport class OptionConverter {\n static _mergeOptions(providedOptions: Options, mergeTo: Options): Options {\n const newOptions = {} as Options;\n let path = '';\n const ignoreProperties = ['inputParse', 'inputFormat'];\n\n const processKey = (key, value, providedType, defaultType) => {\n switch (key) {\n case 'defaultDate': {\n const dateTime = this._dateConversion(value, 'defaultDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'defaultDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'viewDate': {\n const dateTime = this._dateConversion(value, 'viewDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'viewDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'minDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.minDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.minDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'maxDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.maxDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.maxDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'disabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.disabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.disabledHours',\n 0,\n 23\n );\n return value;\n case 'enabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.enabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.enabledHours',\n 0,\n 23\n );\n return value;\n case 'daysOfWeekDisabled':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.daysOfWeekDisabled',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 6).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.daysOfWeekDisabled',\n 0,\n 6\n );\n return value;\n case 'enabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.enabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.disabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledTimeIntervals':\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n key,\n providedType,\n 'array of { from: DateTime|Date, to: DateTime|Date }'\n );\n }\n const valueObject = value as { from: any; to: any }[];\n for (let i = 0; i < valueObject.length; i++) {\n Object.keys(valueObject[i]).forEach((vk) => {\n const subOptionName = `${key}[${i}].${vk}`;\n let d = valueObject[i][vk];\n const dateTime = this._dateConversion(d, subOptionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n subOptionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n valueObject[i][vk] = dateTime;\n });\n }\n return valueObject;\n case 'toolbarPlacement':\n case 'type':\n case 'viewMode':\n case 'dayViewHeaderFormat':\n const optionValues = {\n toolbarPlacement: ['top', 'bottom', 'default'],\n type: ['icons', 'sprites'],\n viewMode: ['clock', 'calendar', 'months', 'years', 'decades'],\n dayViewHeaderFormat: [\n 'numeric',\n '2-digit',\n 'long',\n 'short',\n 'narrow',\n ],\n };\n const keyOptions = optionValues[key];\n if (!keyOptions.includes(value))\n Namespace.errorMessages.unexpectedOptionValue(\n path.substring(1),\n value,\n keyOptions\n );\n\n return value;\n case 'inputParse':\n case 'inputFormat':\n return value;\n default:\n switch (defaultType) {\n case 'boolean':\n return value === 'true' || value === true;\n case 'number':\n return +value;\n case 'string':\n return value.toString();\n case 'object':\n return {};\n case 'function':\n return value;\n default:\n Namespace.errorMessages.typeMismatch(\n path.substring(1),\n providedType,\n defaultType\n );\n }\n }\n };\n\n /**\n * The spread operator caused sub keys to be missing after merging.\n * This is to fix that issue by using spread on the child objects first.\n * Also handles complex options like disabledDates\n * @param provided An option from new providedOptions\n * @param mergeOption Default option to compare types against\n * @param copyTo Destination object. This was add to prevent reference copies\n */\n const spread = (provided, mergeOption, copyTo) => {\n const unsupportedOptions = Object.keys(provided).filter(\n (x) => !Object.keys(mergeOption).includes(x)\n );\n if (unsupportedOptions.length > 0) {\n const flattenedOptions = OptionConverter._flattenDefaultOptions;\n\n const errors = unsupportedOptions.map((x) => {\n let error = `\"${path.substring(1)}.${x}\" in not a known option.`;\n let didYouMean = flattenedOptions.find((y) => y.includes(x));\n if (didYouMean) error += `Did you mean \"${didYouMean}\"?`;\n return error;\n });\n Namespace.errorMessages.unexpectedOptions(errors);\n }\n Object.keys(mergeOption).forEach((key) => {\n const defaultOptionValue = mergeOption[key];\n let providedType = typeof provided[key];\n let defaultType = typeof defaultOptionValue;\n let value = provided[key];\n if (!provided.hasOwnProperty(key)) {\n if (\n defaultType === 'undefined' ||\n (value?.length === 0 && Array.isArray(defaultOptionValue))\n ) {\n copyTo[key] = defaultOptionValue;\n return;\n }\n provided[key] = defaultOptionValue;\n value = provided[key];\n }\n path += `.${key}`;\n copyTo[key] = processKey(key, value, providedType, defaultType);\n\n if (\n typeof defaultOptionValue !== 'object' ||\n ignoreProperties.includes(key)\n ) {\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n return;\n }\n if (!Array.isArray(provided[key])) {\n spread(provided[key], defaultOptionValue, copyTo[key]);\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n }\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n });\n };\n spread(providedOptions, mergeTo, newOptions);\n\n return newOptions;\n }\n\n static _dataToOptions(element, options: Options): Options {\n const eData = element.dataset;\n if (\n !eData ||\n Object.keys(eData).length === 0 ||\n eData.constructor !== DOMStringMap\n )\n return options;\n let dataOptions = {} as Options;\n\n // because dataset returns camelCase including the 'td' key the option\n // key won't align\n const objectToNormalized = (object) => {\n const lowered = {};\n Object.keys(object).forEach((x) => {\n lowered[x.toLowerCase()] = x;\n });\n\n return lowered;\n };\n\n const rabbitHole = (\n split: string[],\n index: number,\n optionSubgroup: {},\n value: any\n ) => {\n // first round = display { ... }\n const normalizedOptions = objectToNormalized(optionSubgroup);\n\n const keyOption = normalizedOptions[split[index].toLowerCase()];\n const internalObject = {};\n\n if (keyOption === undefined) return internalObject;\n\n // if this is another object, continue down the rabbit hole\n if (optionSubgroup[keyOption].constructor === Object) {\n index++;\n internalObject[keyOption] = rabbitHole(\n split,\n index,\n optionSubgroup[keyOption],\n value\n );\n } else {\n internalObject[keyOption] = value;\n }\n return internalObject;\n };\n const optionsLower = objectToNormalized(options);\n\n Object.keys(eData)\n .filter((x) => x.startsWith(Namespace.dataKey))\n .map((x) => x.substring(2))\n .forEach((key) => {\n let keyOption = optionsLower[key.toLowerCase()];\n\n // dataset merges dashes to camelCase... yay\n // i.e. key = display_components_seconds\n if (key.includes('_')) {\n // [display, components, seconds]\n const split = key.split('_');\n // display\n keyOption = optionsLower[split[0].toLowerCase()];\n if (\n keyOption !== undefined &&\n options[keyOption].constructor === Object\n ) {\n dataOptions[keyOption] = rabbitHole(\n split,\n 1,\n options[keyOption],\n eData[`td${key}`]\n );\n }\n }\n // or key = multipleDate\n else if (keyOption !== undefined) {\n dataOptions[keyOption] = eData[`td${key}`];\n }\n });\n\n return this._mergeOptions(dataOptions, options);\n }\n\n /**\n * Attempts to prove `d` is a DateTime or Date or can be converted into one.\n * @param d If a string will attempt creating a date from it.\n * @private\n */\n static _dateTypeCheck(d: any): DateTime | null {\n if (d.constructor.name === DateTime.name) return d;\n if (d.constructor.name === Date.name) {\n return DateTime.convert(d);\n }\n if (typeof d === typeof '') {\n const dateTime = new DateTime(d);\n if (JSON.stringify(dateTime) === 'null') {\n return null;\n }\n return dateTime;\n }\n return null;\n }\n\n /**\n * Type checks that `value` is an array of Date or DateTime\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckDateArray(optionName: string, value, providedType: string) {\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of DateTime or Date'\n );\n }\n for (let i = 0; i < value.length; i++) {\n let d = value[i];\n const dateTime = this._dateConversion(d, optionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n value[i] = dateTime;\n }\n }\n\n /**\n * Type checks that `value` is an array of numbers\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckNumberArray(\n optionName: string,\n value,\n providedType: string\n ) {\n if (!Array.isArray(value) || value.find((x) => typeof x !== typeof 0)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of numbers'\n );\n }\n return;\n }\n\n /**\n * Attempts to convert `d` to a DateTime object\n * @param d value to convert\n * @param optionName Provides text to error messages e.g. disabledDates\n */\n static _dateConversion(d: any, optionName: string) {\n if (typeof d === typeof '' && optionName !== 'input') {\n Namespace.errorMessages.dateString();\n }\n\n const converted = this._dateTypeCheck(d);\n\n if (!converted) {\n Namespace.errorMessages.failedToParseDate(\n optionName,\n d,\n optionName === 'input'\n );\n }\n return converted;\n }\n\n private static _flatback: string[];\n\n private static get _flattenDefaultOptions(): string[] {\n if (this._flatback) return this._flatback;\n const deepKeys = (t, pre = []) =>\n Array.isArray(t)\n ? []\n : Object(t) === t\n ? Object.entries(t).flatMap(([k, v]) => deepKeys(v, [...pre, k]))\n : pre.join('.');\n\n this._flatback = deepKeys(DefaultOptions);\n\n return this._flatback;\n }\n\n /**\n * Some options conflict like min/max date. Verify that these kinds of options\n * are set correctly.\n * @param config\n */\n static _validateConflcits(config: Options) {\n if (config.restrictions.minDate && config.restrictions.maxDate) {\n if (config.restrictions.minDate.isAfter(config.restrictions.maxDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'minDate is after maxDate'\n );\n }\n\n if (config.restrictions.maxDate.isBefore(config.restrictions.minDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'maxDate is before minDate'\n );\n }\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport { ChangeEvent, FailEvent } from './event-types';\nimport { OptionConverter } from './options';\n\nexport default class Dates {\n private _dates: DateTime[] = [];\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Returns the array of selected dates\n */\n get picked(): DateTime[] {\n return this._dates;\n }\n\n /**\n * Returns the last picked value.\n */\n get lastPicked(): DateTime {\n return this._dates[this.lastPickedIndex];\n }\n\n /**\n * Returns the length of picked dates -1 or 0 if none are selected.\n */\n get lastPickedIndex(): number {\n if (this._dates.length === 0) return 0;\n return this._dates.length - 1;\n }\n\n /**\n * Adds a new DateTime to selected dates array\n * @param date\n */\n add(date: DateTime): void {\n this._dates.push(date);\n }\n\n /**\n * Tries to convert the provided value to a DateTime object.\n * If value is null|undefined then clear the value of the provided index (or 0).\n * @param value Value to convert or null|undefined\n * @param index When using multidates this is the index in the array\n * @param from Used in the warning message, useful for debugging.\n */\n set(value: any, index?: number, from: string = 'date.set') {\n if (!value) this._setValue(value, index);\n const converted = OptionConverter._dateConversion(value, from);\n if (converted) this._setValue(converted, index);\n }\n\n /**\n * Returns true if the `targetDate` is part of the selected dates array.\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n isPicked(targetDate: DateTime, unit?: Unit): boolean {\n if (!unit) return this._dates.find((x) => x === targetDate) !== undefined;\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return (\n this._dates\n .map((x) => x.format(format))\n .find((x) => x === innerDateFormatted) !== undefined\n );\n }\n\n /**\n * Returns the index at which `targetDate` is in the array.\n * This is used for updating or removing a date when multi-date is used\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n pickedIndex(targetDate: DateTime, unit?: Unit): number {\n if (!unit) return this._dates.indexOf(targetDate);\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return this._dates.map((x) => x.format(format)).indexOf(innerDateFormatted);\n }\n\n /**\n * Clears all selected dates.\n */\n clear() {\n this._context._unset = true;\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate: this.lastPicked,\n isClear: true,\n isValid: true,\n } as ChangeEvent);\n this._dates = [];\n }\n\n /**\n * Find the \"book end\" years given a `year` and a `factor`\n * @param factor e.g. 100 for decades\n * @param year e.g. 2021\n */\n static getStartEndYear(\n factor: number,\n year: number\n ): [number, number, number] {\n const step = factor / 10,\n startYear = Math.floor(year / factor) * factor,\n endYear = startYear + step * 9,\n focusValue = Math.floor(year / step) * step;\n return [startYear, endYear, focusValue];\n }\n\n /**\n * Do not use direectly. Attempts to either clear or set the `target` date at `index`.\n * If the `target` is null then the date will be cleared.\n * If multi-date is being used then it will be removed from the array.\n * If `target` is valid and multi-date is used then if `index` is\n * provided the date at that index will be replaced, otherwise it is appended.\n * @param target\n * @param index\n */\n _setValue(target?: DateTime, index?: number): void {\n const noIndex = typeof index === 'undefined',\n isClear = !target && noIndex;\n let oldDate = this._context._unset ? null : this._dates[index];\n if (!oldDate && !this._context._unset && noIndex && isClear) {\n oldDate = this.lastPicked;\n }\n\n const updateInput = () => {\n if (!this._context._input) return;\n\n let newValue = this._context._options.hooks.inputFormat(\n this._context,\n target\n );\n if (this._context._options.multipleDates) {\n newValue = this._dates\n .map((d) =>\n this._context._options.hooks.inputFormat(this._context, d)\n )\n .join(this._context._options.multipleDatesSeparator);\n }\n if (this._context._input.value != newValue)\n this._context._input.value = newValue;\n };\n\n if (target && oldDate?.isSame(target)) {\n updateInput();\n return;\n }\n\n // case of calling setValue(null)\n if (!target) {\n if (\n !this._context._options.multipleDates ||\n this._dates.length === 1 ||\n isClear\n ) {\n this._context._unset = true;\n this._dates = [];\n } else {\n this._dates.splice(index, 1);\n }\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n\n updateInput();\n this._context._display._update('all');\n return;\n }\n\n index = index || 0;\n target = target.clone;\n\n // minute stepping is being used, force the minute to the closest value\n if (this._context._options.stepping !== 1) {\n target.minutes =\n Math.round(target.minutes / this._context._options.stepping) *\n this._context._options.stepping;\n target.seconds = 0;\n }\n\n if (this._context._validation.isValid(target)) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._unset = false;\n this._context._display._update('all');\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n return;\n }\n\n if (this._context._options.keepInvalid) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: false,\n } as ChangeEvent);\n }\n this._context._triggerEvent({\n type: Namespace.events.error,\n reason: Namespace.errorMessages.failedToSetInvalidDate,\n date: target,\n oldDate,\n } as FailEvent);\n }\n\n /**\n * Returns a format object based on the granularity of `unit`\n * @param unit\n */\n static getFormatByUnit(unit: Unit): object {\n switch (unit) {\n case 'date':\n return { dateStyle: 'short' };\n case 'month':\n return {\n month: 'numeric',\n year: 'numeric',\n };\n case 'year':\n return { year: 'numeric' };\n }\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\nimport Dates from '../../dates';\r\n\r\n/**\r\n * Creates and updates the grid for `year`\r\n */\r\nexport default class YearDisplay {\r\n private _context: TempusDominus;\r\n private _startYear: DateTime;\r\n private _endYear: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.yearsContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectYear);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 10,\r\n this._context._viewDate.year\r\n );\r\n this._startYear = this._context._viewDate.clone.manipulate(-1, Unit.year);\r\n this._endYear = this._context._viewDate.clone.manipulate(10, Unit.year);\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.yearsContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.yearsContainer,\r\n `${this._startYear.format({ year: 'numeric' })}-${this._endYear.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startYear, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endYear, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.year)\r\n .manipulate(-1, Unit.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectYear}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n let classes = [];\r\n classes.push(Namespace.css.year);\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.year)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.year)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute('data-value', `${innerDate.year}`);\r\n containerClone.innerText = innerDate.format({ year: \"numeric\" });\r\n\r\n innerDate.manipulate(1, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport Dates from '../../dates';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `seconds`\r\n */\r\nexport default class DecadeDisplay {\r\n private _context: TempusDominus;\r\n private _startDecade: DateTime;\r\n private _endDecade: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker() {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.decadesContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDecade);\r\n container.appendChild(div);\r\n }\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 100,\r\n this._context._viewDate.year\r\n );\r\n this._startDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._startDecade.year = start;\r\n this._endDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._endDecade.year = end;\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.decadesContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.decadesContainer,\r\n `${this._startDecade.format({ year: 'numeric' })}-${this._endDecade.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startDecade, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endDecade, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n const pickedYears = this._context.dates.picked.map((x) => x.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectDecade}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (index === 0) {\r\n containerClone.classList.add(Namespace.css.old);\r\n if (this._startDecade.year - 10 < 0) {\r\n containerClone.textContent = ' ';\r\n previous.classList.add(Namespace.css.disabled);\r\n containerClone.classList.add(Namespace.css.disabled);\r\n containerClone.setAttribute('data-value', ``);\r\n return;\r\n } else {\r\n containerClone.innerText = this._startDecade.clone.manipulate(-10, Unit.year).format({ year: 'numeric' });\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n return;\r\n }\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.decade);\r\n const startDecadeYear = this._startDecade.year;\r\n const endDecadeYear = this._startDecade.year + 9;\r\n\r\n if (\r\n !this._context._unset &&\r\n pickedYears.filter((x) => x >= startDecadeYear && x <= endDecadeYear)\r\n .length > 0\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n containerClone.innerText = `${this._startDecade.format({ year: 'numeric' })}`;\r\n\r\n this._startDecade.manipulate(10, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates the clock display\n */\nexport default class TimeDisplay {\n private _context: TempusDominus;\n private _gridColumns = '';\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the clock display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.clockContainer);\n\n container.append(...this._grid());\n\n return container;\n }\n\n /**\n * Populates the various elements with in the clock display\n * like the current hour and if the manipulation icons are enabled.\n * @private\n */\n _update(): void {\n const timesDiv = (\n this._context._display.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0]\n );\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n timesDiv\n .querySelectorAll('.disabled')\n .forEach((element) => element.classList.remove(Namespace.css.disabled));\n\n if (this._context._options.display.components.hours) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.hours}]`\n ).innerText = this._context._options.display.components.useTwentyfourHour\n ? lastPicked.hoursFormatted\n : lastPicked.twelveHoursFormatted;\n }\n\n if (this._context._options.display.components.minutes) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.minutes}]`\n ).innerText = lastPicked.minutesFormatted;\n }\n\n if (this._context._options.display.components.seconds) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.seconds}]`\n ).innerText = lastPicked.secondsFormatted;\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n const toggle = timesDiv.querySelector(\n `[data-action=${ActionTypes.toggleMeridiem}]`\n );\n\n toggle.innerText = lastPicked.meridiem();\n\n if (\n !this._context._validation.isValid(\n lastPicked.clone.manipulate(\n lastPicked.hours >= 12 ? -12 : 12,\n Unit.hours\n )\n )\n ) {\n toggle.classList.add(Namespace.css.disabled);\n } else {\n toggle.classList.remove(Namespace.css.disabled);\n }\n }\n\n timesDiv.style.gridTemplateAreas = `\"${this._gridColumns}\"`;\n }\n\n /**\n * Creates the table for the clock display depending on what options are selected.\n * @private\n */\n private _grid(): HTMLElement[] {\n this._gridColumns = '';\n const top = [],\n middle = [],\n bottom = [],\n separator = document.createElement('div'),\n upIcon = this._context._display._iconTag(\n this._context._options.display.icons.up\n ),\n downIcon = this._context._display._iconTag(\n this._context._options.display.icons.down\n );\n\n separator.classList.add(Namespace.css.separator, Namespace.css.noHighlight);\n const separatorColon = separator.cloneNode(true);\n separatorColon.innerHTML = ':';\n\n const getSeparator = (colon = false): HTMLElement => {\n return colon\n ? separatorColon.cloneNode(true)\n : separator.cloneNode(true);\n };\n\n if (this._context._options.display.components.hours) {\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.incrementHours);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickHour\n );\n divElement.setAttribute('data-action', ActionTypes.showHours);\n divElement.setAttribute('data-time-component', Unit.hours);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.decrementHours);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n this._gridColumns += 'a';\n }\n\n if (this._context._options.display.components.minutes) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.hours) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.incrementMinutes);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickMinute\n );\n divElement.setAttribute('data-action', ActionTypes.showMinutes);\n divElement.setAttribute('data-time-component', Unit.minutes);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.decrementMinutes);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (this._context._options.display.components.seconds) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.minutes) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.incrementSeconds);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickSecond\n );\n divElement.setAttribute('data-action', ActionTypes.showSeconds);\n divElement.setAttribute('data-time-component', Unit.seconds);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.decrementSeconds);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n this._gridColumns += ' a';\n let divElement = getSeparator();\n top.push(divElement);\n\n let button = document.createElement('button');\n button.setAttribute(\n 'title',\n this._context._options.localization.toggleMeridiem\n );\n button.setAttribute('data-action', ActionTypes.toggleMeridiem);\n button.setAttribute('tabindex', '-1');\n button.classList.add(Namespace.css.toggleMeridiem);\n\n divElement = document.createElement('div');\n divElement.classList.add(Namespace.css.noHighlight);\n divElement.appendChild(button);\n middle.push(divElement);\n\n divElement = getSeparator();\n bottom.push(divElement);\n }\n\n this._gridColumns = this._gridColumns.trim();\n\n return [...top, ...middle, ...bottom];\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `hours`\n */\nexport default class HourDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.hourContainer);\n\n for (\n let i = 0;\n i <\n (this._context._options.display.components.useTwentyfourHour ? 24 : 12);\n i++\n ) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectHour);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.hourContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.date);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectHour}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.hour);\n\n if (!this._context._validation.isValid(innerDate, Unit.hours)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.hours}`);\n containerClone.innerText = this._context._options.display.components\n .useTwentyfourHour\n ? innerDate.hoursFormatted\n : innerDate.twelveHoursFormatted;\n innerDate.manipulate(1, Unit.hours);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `minutes`\n */\nexport default class MinuteDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.minuteContainer);\n\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n for (let i = 0; i < 60 / step; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMinute);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.minuteContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.hours);\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMinute}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.minute);\n\n if (!this._context._validation.isValid(innerDate, Unit.minutes)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.minutes}`);\n containerClone.innerText = innerDate.minutesFormatted;\n innerDate.manipulate(step, Unit.minutes);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class secondDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.secondContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectSecond);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.secondContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.minutes);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectSecond}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.second);\n\n if (!this._context._validation.isValid(innerDate, Unit.seconds)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.seconds}`);\n containerClone.innerText = innerDate.secondsFormatted;\n innerDate.manipulate(5, Unit.seconds);\n });\n }\n}\n","import DateDisplay from './calendar/date-display';\nimport MonthDisplay from './calendar/month-display';\nimport YearDisplay from './calendar/year-display';\nimport DecadeDisplay from './calendar/decade-display';\nimport TimeDisplay from './time/time-display';\nimport HourDisplay from './time/hour-display';\nimport MinuteDisplay from './time/minute-display';\nimport SecondDisplay from './time/second-display';\nimport { DateTime, Unit } from '../datetime';\nimport { DatePickerModes } from '../conts';\nimport { TempusDominus } from '../tempus-dominus';\nimport { ActionTypes } from '../actions';\nimport { createPopper } from '@popperjs/core';\nimport Namespace from '../namespace';\nimport { HideEvent } from '../event-types';\n\n/**\n * Main class for all things display related.\n */\nexport default class Display {\n private _context: TempusDominus;\n private _dateDisplay: DateDisplay;\n private _monthDisplay: MonthDisplay;\n private _yearDisplay: YearDisplay;\n private _decadeDisplay: DecadeDisplay;\n private _timeDisplay: TimeDisplay;\n private _widget: HTMLElement;\n private _hourDisplay: HourDisplay;\n private _minuteDisplay: MinuteDisplay;\n private _secondDisplay: SecondDisplay;\n private _popperInstance: any;\n private _isVisible = false;\n\n constructor(context: TempusDominus) {\n this._context = context;\n this._dateDisplay = new DateDisplay(context);\n this._monthDisplay = new MonthDisplay(context);\n this._yearDisplay = new YearDisplay(context);\n this._decadeDisplay = new DecadeDisplay(context);\n this._timeDisplay = new TimeDisplay(context);\n this._hourDisplay = new HourDisplay(context);\n this._minuteDisplay = new MinuteDisplay(context);\n this._secondDisplay = new SecondDisplay(context);\n\n this._widget = undefined;\n }\n\n /**\n * Returns the widget body or undefined\n * @private\n */\n get widget(): HTMLElement | undefined {\n return this._widget;\n }\n\n /**\n * Returns this visible state of the picker (shown)\n */\n get isVisible() {\n return this._isVisible;\n }\n\n /**\n * Updates the table for a particular unit. Used when an option as changed or\n * whenever the class list might need to be refreshed.\n * @param unit\n * @private\n */\n _update(unit: Unit | 'clock' | 'calendar' | 'all'): void {\n if (!this.widget) return;\n //todo do I want some kind of error catching or other guards here?\n switch (unit) {\n case Unit.seconds:\n this._secondDisplay._update();\n break;\n case Unit.minutes:\n this._minuteDisplay._update();\n break;\n case Unit.hours:\n this._hourDisplay._update();\n break;\n case Unit.date:\n this._dateDisplay._update();\n break;\n case Unit.month:\n this._monthDisplay._update();\n break;\n case Unit.year:\n this._yearDisplay._update();\n break;\n case 'clock':\n this._timeDisplay._update();\n this._update(Unit.hours);\n this._update(Unit.minutes);\n this._update(Unit.seconds);\n break;\n case 'calendar':\n this._update(Unit.date);\n this._update(Unit.year);\n this._update(Unit.month);\n this._decadeDisplay._update();\n this._updateCalendarHeader();\n break;\n case 'all':\n if (this._hasTime) {\n this._update('clock');\n }\n if (this._hasDate) {\n this._update('calendar');\n }\n }\n }\n\n /**\n * Shows the picker and creates a Popper instance if needed.\n * Add document click event to hide when clicking outside the picker.\n * @fires Events#show\n */\n show(): void {\n if (this.widget == undefined) {\n if (\n this._context._options.useCurrent &&\n !this._context._options.defaultDate &&\n !this._context._input?.value\n ) {\n //todo in the td4 branch a pr changed this to allow granularity\n const date = new DateTime().setLocale(\n this._context._options.localization.locale\n );\n if (!this._context._options.keepInvalid) {\n let tries = 0;\n let direction = 1;\n if (this._context._options.restrictions.maxDate?.isBefore(date)) {\n direction = -1;\n }\n while (!this._context._validation.isValid(date)) {\n date.manipulate(direction, Unit.date);\n if (tries > 31) break;\n tries++;\n }\n }\n this._context.dates._setValue(date);\n }\n\n if (this._context._options.defaultDate) {\n this._context.dates._setValue(this._context._options.defaultDate);\n }\n\n this._buildWidget();\n if (this._hasDate) {\n this._showMode();\n }\n\n if (!this._context._options.display.inline) {\n document.body.appendChild(this.widget);\n\n this._popperInstance = createPopper(\n this._context._element,\n this.widget,\n {\n modifiers: [{ name: 'eventListeners', enabled: true }],\n //#2400\n placement:\n document.documentElement.dir === 'rtl'\n ? 'bottom-end'\n : 'bottom-start',\n }\n );\n } else {\n this._context._element.appendChild(this.widget);\n }\n\n if (this._context._options.display.viewMode == 'clock') {\n this._context._action.do(\n {\n currentTarget: this.widget.querySelector(\n `.${Namespace.css.timeContainer}`\n ),\n },\n ActionTypes.showClock\n );\n }\n\n this.widget\n .querySelectorAll('[data-action]')\n .forEach((element) =>\n element.addEventListener('click', this._actionsClickEvent)\n );\n\n // show the clock when using sideBySide\n if (this._context._options.display.sideBySide) {\n this._timeDisplay._update();\n (\n this.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0] as HTMLElement\n ).style.display = 'grid';\n }\n }\n\n this.widget.classList.add(Namespace.css.show);\n if (!this._context._options.display.inline) {\n this._popperInstance.update();\n document.addEventListener('click', this._documentClickEvent);\n }\n this._context._triggerEvent({ type: Namespace.events.show });\n this._isVisible = true;\n }\n\n /**\n * Changes the calendar view mode. E.g. month <-> year\n * @param direction -/+ number to move currentViewMode\n * @private\n */\n _showMode(direction?: number): void {\n if (!this.widget) {\n return;\n }\n if (direction) {\n const max = Math.max(\n this._context._minViewModeNumber,\n Math.min(3, this._context._currentViewMode + direction)\n );\n if (this._context._currentViewMode == max) return;\n this._context._currentViewMode = max;\n }\n\n this.widget\n .querySelectorAll(\n `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div:not(.${Namespace.css.clockContainer})`\n )\n .forEach((e: HTMLElement) => (e.style.display = 'none'));\n\n const datePickerMode = DatePickerModes[this._context._currentViewMode];\n let picker: HTMLElement = this.widget.querySelector(\n `.${datePickerMode.className}`\n );\n\n switch (datePickerMode.className) {\n case Namespace.css.decadesContainer:\n this._decadeDisplay._update();\n break;\n case Namespace.css.yearsContainer:\n this._yearDisplay._update();\n break;\n case Namespace.css.monthsContainer:\n this._monthDisplay._update();\n break;\n case Namespace.css.daysContainer:\n this._dateDisplay._update();\n break;\n }\n\n picker.style.display = 'grid';\n this._updateCalendarHeader();\n }\n\n _updateCalendarHeader() {\n const showing = [\n ...this.widget.querySelector(\n `.${Namespace.css.dateContainer} div[style*=\"display: grid\"]`\n ).classList,\n ].find((x) => x.startsWith(Namespace.css.dateContainer));\n\n const [previous, switcher, next] = this._context._display.widget\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switch (showing) {\n case Namespace.css.decadesContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousCentury\n );\n switcher.setAttribute('title', '');\n next.setAttribute(\n 'title',\n this._context._options.localization.nextCentury\n );\n break;\n case Namespace.css.yearsContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousDecade\n );\n switcher.setAttribute(\n 'title',\n this._context._options.localization.selectDecade\n );\n next.setAttribute(\n 'title',\n this._context._options.localization.nextDecade\n );\n break;\n case Namespace.css.monthsContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousYear\n );\n switcher.setAttribute(\n 'title',\n this._context._options.localization.selectYear\n );\n next.setAttribute(\n 'title',\n this._context._options.localization.nextYear\n );\n break;\n case Namespace.css.daysContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousMonth\n );\n switcher.setAttribute(\n 'title',\n this._context._options.localization.selectMonth\n );\n next.setAttribute(\n 'title',\n this._context._options.localization.nextMonth\n );\n switcher.innerText = this._context._viewDate.format({\n month: this._context._options.localization.dayViewHeaderFormat,\n });\n break;\n }\n switcher.innerText = switcher.getAttribute(showing);\n }\n\n /**\n * Hides the picker if needed.\n * Remove document click event to hide when clicking outside the picker.\n * @fires Events#hide\n */\n hide(): void {\n if (!this.widget || !this._isVisible) return;\n\n this.widget.classList.remove(Namespace.css.show);\n\n if (this._isVisible) {\n this._context._triggerEvent({\n type: Namespace.events.hide,\n date: this._context._unset\n ? null\n : this._context.dates.lastPicked\n ? this._context.dates.lastPicked.clone\n : void 0,\n } as HideEvent);\n this._isVisible = false;\n }\n\n document.removeEventListener('click', this._documentClickEvent);\n }\n\n /**\n * Toggles the picker's open state. Fires a show/hide event depending.\n */\n toggle() {\n return this._isVisible ? this.hide() : this.show();\n }\n\n /**\n * Removes document and data-action click listener and reset the widget\n * @private\n */\n _dispose() {\n document.removeEventListener('click', this._documentClickEvent);\n if (!this.widget) return;\n this.widget\n .querySelectorAll('[data-action]')\n .forEach((element) =>\n element.removeEventListener('click', this._actionsClickEvent)\n );\n this.widget.parentNode.removeChild(this.widget);\n this._widget = undefined;\n }\n\n /**\n * Builds the widgets html template.\n * @private\n */\n private _buildWidget(): HTMLElement {\n const template = document.createElement('div');\n template.classList.add(Namespace.css.widget);\n\n const dateView = document.createElement('div');\n dateView.classList.add(Namespace.css.dateContainer);\n dateView.append(\n this._headTemplate,\n this._decadeDisplay._picker,\n this._yearDisplay._picker,\n this._monthDisplay._picker,\n this._dateDisplay._picker\n );\n\n const timeView = document.createElement('div');\n timeView.classList.add(Namespace.css.timeContainer);\n timeView.appendChild(this._timeDisplay._picker);\n timeView.appendChild(this._hourDisplay._picker);\n timeView.appendChild(this._minuteDisplay._picker);\n timeView.appendChild(this._secondDisplay._picker);\n\n const toolbar = document.createElement('div');\n toolbar.classList.add(Namespace.css.toolbar);\n toolbar.append(...this._toolbar);\n\n if (this._context._options.display.inline) {\n template.classList.add(Namespace.css.inline);\n }\n\n if (this._context._options.display.calendarWeeks) {\n template.classList.add('calendarWeeks');\n }\n\n if (\n this._context._options.display.sideBySide &&\n this._hasDate &&\n this._hasTime\n ) {\n template.classList.add(Namespace.css.sideBySide);\n if (this._context._options.display.toolbarPlacement === 'top') {\n template.appendChild(toolbar);\n }\n const row = document.createElement('div');\n row.classList.add('td-row');\n dateView.classList.add('td-half');\n timeView.classList.add('td-half');\n\n row.appendChild(dateView);\n row.appendChild(timeView);\n template.appendChild(row);\n if (this._context._options.display.toolbarPlacement === 'bottom') {\n template.appendChild(toolbar);\n }\n this._widget = template;\n return;\n }\n\n if (this._context._options.display.toolbarPlacement === 'top') {\n template.appendChild(toolbar);\n }\n\n if (this._hasDate) {\n if (this._hasTime) {\n dateView.classList.add(Namespace.css.collapse);\n if (this._context._options.display.viewMode !== 'clock')\n dateView.classList.add(Namespace.css.show);\n }\n template.appendChild(dateView);\n }\n\n if (this._hasTime) {\n if (this._hasDate) {\n timeView.classList.add(Namespace.css.collapse);\n if (this._context._options.display.viewMode === 'clock')\n timeView.classList.add(Namespace.css.show);\n }\n template.appendChild(timeView);\n }\n\n if (this._context._options.display.toolbarPlacement === 'bottom') {\n template.appendChild(toolbar);\n }\n\n const arrow = document.createElement('div');\n arrow.classList.add('arrow');\n arrow.setAttribute('data-popper-arrow', '');\n template.appendChild(arrow);\n\n this._widget = template;\n }\n\n /**\n * Returns true if the hours, minutes, or seconds component is turned on\n */\n get _hasTime(): boolean {\n return (\n this._context._options.display.components.clock &&\n (this._context._options.display.components.hours ||\n this._context._options.display.components.minutes ||\n this._context._options.display.components.seconds)\n );\n }\n\n /**\n * Returns true if the year, month, or date component is turned on\n */\n get _hasDate(): boolean {\n return (\n this._context._options.display.components.calendar &&\n (this._context._options.display.components.year ||\n this._context._options.display.components.month ||\n this._context._options.display.components.date)\n );\n }\n\n /**\n * Get the toolbar html based on options like buttons.today\n * @private\n */\n get _toolbar(): HTMLElement[] {\n const toolbar = [];\n\n if (this._context._options.display.buttons.today) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.today);\n div.setAttribute('title', this._context._options.localization.today);\n\n div.appendChild(\n this._iconTag(this._context._options.display.icons.today)\n );\n toolbar.push(div);\n }\n if (\n !this._context._options.display.sideBySide &&\n this._hasDate &&\n this._hasTime\n ) {\n let title, icon;\n if (this._context._options.display.viewMode === 'clock') {\n title = this._context._options.localization.selectDate;\n icon = this._context._options.display.icons.date;\n } else {\n title = this._context._options.localization.selectTime;\n icon = this._context._options.display.icons.time;\n }\n\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.togglePicker);\n div.setAttribute('title', title);\n\n div.appendChild(this._iconTag(icon));\n toolbar.push(div);\n }\n if (this._context._options.display.buttons.clear) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.clear);\n div.setAttribute('title', this._context._options.localization.clear);\n\n div.appendChild(\n this._iconTag(this._context._options.display.icons.clear)\n );\n toolbar.push(div);\n }\n if (this._context._options.display.buttons.close) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.close);\n div.setAttribute('title', this._context._options.localization.close);\n\n div.appendChild(\n this._iconTag(this._context._options.display.icons.close)\n );\n toolbar.push(div);\n }\n\n return toolbar;\n }\n\n /***\n * Builds the base header template with next and previous icons\n * @private\n */\n get _headTemplate(): HTMLElement {\n const calendarHeader = document.createElement('div');\n calendarHeader.classList.add(Namespace.css.calendarHeader);\n\n const previous = document.createElement('div');\n previous.classList.add(Namespace.css.previous);\n previous.setAttribute('data-action', ActionTypes.previous);\n previous.appendChild(\n this._iconTag(this._context._options.display.icons.previous)\n );\n\n const switcher = document.createElement('div');\n switcher.classList.add(Namespace.css.switch);\n switcher.setAttribute('data-action', ActionTypes.pickerSwitch);\n\n const next = document.createElement('div');\n next.classList.add(Namespace.css.next);\n next.setAttribute('data-action', ActionTypes.next);\n next.appendChild(this._iconTag(this._context._options.display.icons.next));\n\n calendarHeader.append(previous, switcher, next);\n return calendarHeader;\n }\n\n /**\n * Builds an icon tag as either an ``\n * or with icons.type is `sprites` then an svg tag instead\n * @param iconClass\n * @private\n */\n _iconTag(iconClass: string): HTMLElement {\n if (this._context._options.display.icons.type === 'sprites') {\n const svg = document.createElement('svg');\n svg.innerHTML = ``;\n return svg;\n }\n const icon = document.createElement('i');\n DOMTokenList.prototype.add.apply(icon.classList, iconClass.split(' '));\n return icon;\n }\n\n /**\n * A document click event to hide the widget if click is outside\n * @private\n * @param e MouseEvent\n */\n private _documentClickEvent = (e: MouseEvent) => {\n if (this._context._options.debug || (window as any).debug) return;\n\n if (\n this._isVisible &&\n !e.composedPath().includes(this.widget) && // click inside the widget\n !e.composedPath()?.includes(this._context._element) // click on the element\n ) {\n this.hide();\n }\n };\n\n /**\n * Click event for any action like selecting a date\n * @param e MouseEvent\n * @private\n */\n private _actionsClickEvent = (e: MouseEvent) => {\n this._context._action.do(e);\n };\n\n /**\n * Causes the widget to get rebuilt on next show. If the picker is already open\n * then hide and reshow it.\n * @private\n */\n _rebuild() {\n const wasVisible = this._isVisible;\n if (wasVisible) this.hide();\n this._dispose();\n if (wasVisible) {\n this.show();\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Dates from './dates';\n\n/**\n * Main class for date validation rules based on the options provided.\n */\nexport default class Validation {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Checks to see if the target date is valid based on the rules provided in the options.\n * Granularity can be provide to chek portions of the date instead of the whole.\n * @param targetDate\n * @param granularity\n */\n isValid(targetDate: DateTime, granularity?: Unit): boolean {\n if (\n this._context._options.restrictions.disabledDates.length > 0 &&\n this._isInDisabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledDates.length > 0 &&\n !this._isInEnabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.daysOfWeekDisabled?.length > 0 &&\n this._context._options.restrictions.daysOfWeekDisabled.indexOf(\n targetDate.weekDay\n ) !== -1\n ) {\n return false;\n }\n\n if (\n this._context._options.restrictions.minDate &&\n targetDate.isBefore(\n this._context._options.restrictions.minDate,\n granularity\n )\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.maxDate &&\n targetDate.isAfter(\n this._context._options.restrictions.maxDate,\n granularity\n )\n ) {\n return false;\n }\n\n if (\n granularity === Unit.hours ||\n granularity === Unit.minutes ||\n granularity === Unit.seconds\n ) {\n if (\n this._context._options.restrictions.disabledHours.length > 0 &&\n this._isInDisabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledHours.length > 0 &&\n !this._isInEnabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.disabledTimeIntervals.length > 0\n ) {\n for (\n let i = 0;\n i < this._context._options.restrictions.disabledTimeIntervals.length;\n i++\n ) {\n if (\n targetDate.isBetween(\n this._context._options.restrictions.disabledTimeIntervals[i].from,\n this._context._options.restrictions.disabledTimeIntervals[i].to\n )\n )\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Checks to see if the disabledDates option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInDisabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledDates ||\n this._context._options.restrictions.disabledDates.length === 0\n )\n return false;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.disabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the enabledDates option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInEnabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledDates ||\n this._context._options.restrictions.enabledDates.length === 0\n )\n return true;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.enabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the disabledHours option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInDisabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledHours ||\n this._context._options.restrictions.disabledHours.length === 0\n )\n return false;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.disabledHours.find(\n (x) => x === formattedDate\n );\n }\n\n /**\n * Checks to see if the enabledHours option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInEnabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledHours ||\n this._context._options.restrictions.enabledHours.length === 0\n )\n return true;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.enabledHours.find(\n (x) => x === formattedDate\n );\n }\n}\n","import Display from './display/index';\nimport Validation from './validation';\nimport Dates from './dates';\nimport Actions, { ActionTypes } from './actions';\nimport { DatePickerModes, DefaultOptions } from './conts';\nimport { DateTime, DateTimeFormatOptions, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options, { OptionConverter } from './options';\nimport {\n BaseEvent,\n ChangeEvent,\n ViewUpdateEvent,\n FailEvent,\n} from './event-types';\n\n/**\n * A robust and powerful date/time picker component.\n */\nclass TempusDominus {\n dates: Dates;\n\n _options: Options;\n _currentViewMode = 0;\n _subscribers: { [key: string]: ((event: any) => {})[] } = {};\n _element: HTMLElement;\n _input: HTMLInputElement;\n _unset: boolean;\n _minViewModeNumber = 0;\n _display: Display;\n _validation: Validation;\n _action: Actions;\n private _isDisabled = false;\n private _notifyChangeEventContext = 0;\n private _toggle: HTMLElement;\n private _currentPromptTimeTimeout: any;\n\n constructor(element: HTMLElement, options: Options = {} as Options) {\n if (!element) {\n Namespace.errorMessages.mustProvideElement;\n }\n this._element = element;\n this._options = this._initializeOptions(options, DefaultOptions, true);\n this._viewDate.setLocale(this._options.localization.locale);\n this._unset = true;\n\n this._display = new Display(this);\n this._validation = new Validation(this);\n this.dates = new Dates(this);\n this._action = new Actions(this);\n\n this._initializeInput();\n this._initializeToggle();\n\n if (this._options.display.inline) this._display.show();\n }\n\n _viewDate = new DateTime();\n\n get viewDate() {\n return this._viewDate;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Update the picker options. If `reset` is provide `options` will be merged with DefaultOptions instead.\n * @param options\n * @param reset\n * @public\n */\n updateOptions(options, reset = false): void {\n if (reset) this._options = this._initializeOptions(options, DefaultOptions);\n else this._options = this._initializeOptions(options, this._options);\n this._display._rebuild();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Toggles the picker open or closed. If the picker is disabled, nothing will happen.\n * @public\n */\n toggle(): void {\n if (this._isDisabled) return;\n this._display.toggle();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Shows the picker unless the picker is disabled.\n * @public\n */\n show(): void {\n if (this._isDisabled) return;\n this._display.show();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker unless the picker is disabled.\n * @public\n */\n hide(): void {\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Disables the picker and the target input field.\n * @public\n */\n disable(): void {\n this._isDisabled = true;\n // todo this might be undesired. If a dev disables the input field to\n // only allow using the picker, this will break that.\n this._input?.setAttribute('disabled', 'disabled');\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Enables the picker and the target input field.\n * @public\n */\n enable(): void {\n this._isDisabled = false;\n this._input?.removeAttribute('disabled');\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Clears all the selected dates\n * @public\n */\n clear(): void {\n this.dates.clear();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Allows for a direct subscription to picker events, without having to use addEventListener on the element.\n * @param eventTypes See Namespace.Events\n * @param callbacks Function to call when event is triggered\n * @public\n */\n subscribe(\n eventTypes: string | string[],\n callbacks: (event: any) => void | ((event: any) => void)[]\n ): { unsubscribe: void }[] {\n if (typeof eventTypes === 'string') {\n eventTypes = [eventTypes];\n }\n let callBackArray = [];\n if (!Array.isArray(callbacks)) {\n callBackArray = [callbacks];\n } else {\n callBackArray = callbacks;\n }\n\n if (eventTypes.length !== callBackArray.length) {\n Namespace.errorMessages.subscribeMismatch;\n }\n\n const returnArray = [];\n\n for (let i = 0; i < eventTypes.length; i++) {\n const eventType = eventTypes[i];\n if (!Array.isArray(this._subscribers[eventType])) {\n this._subscribers[eventType] = [];\n }\n\n this._subscribers[eventType].push(callBackArray[i]);\n\n returnArray.push({\n unsubscribe: this._unsubscribe.bind(\n this,\n eventType,\n this._subscribers[eventType].length - 1\n ),\n });\n\n if (eventTypes.length === 1) {\n return returnArray[0];\n }\n }\n\n return returnArray;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker and removes event listeners\n */\n dispose() {\n this._display.hide();\n // this will clear the document click event listener\n this._display._dispose();\n this._input?.removeEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input?.removeEventListener('click', this._toggleClickEvent);\n }\n this._toggle.removeEventListener('click', this._toggleClickEvent);\n this._subscribers = {};\n }\n\n /**\n * Triggers an event like ChangeEvent when the picker has updated the value\n * of a selected date.\n * @param event Accepts a BaseEvent object.\n * @private\n */\n _triggerEvent(event: BaseEvent) {\n // checking hasOwnProperty because the BasicEvent also falls through here otherwise\n if ((event as ChangeEvent) && event.hasOwnProperty('date')) {\n const { date, oldDate, isClear } = event as ChangeEvent;\n // this was to prevent a max call stack error\n // https://github.com/tempusdominus/core/commit/15a280507f5277b31b0b3319ab1edc7c19a000fb\n // todo see if this is still needed or if there's a cleaner way\n this._notifyChangeEventContext++;\n if (\n (date && oldDate && date.isSame(oldDate)) ||\n (!isClear && !date && !oldDate) ||\n this._notifyChangeEventContext > 1\n ) {\n this._notifyChangeEventContext = 0;\n return;\n }\n this._handleAfterChangeEvent(event as ChangeEvent);\n }\n\n this._element.dispatchEvent(\n new CustomEvent(event.type, { detail: event as any })\n );\n\n if ((window as any).jQuery) {\n const $ = (window as any).jQuery;\n $(this._element).trigger(event);\n }\n\n const publish = () => {\n // return if event is not subscribed\n if (!Array.isArray(this._subscribers[event.type])) {\n return;\n }\n\n // Trigger callback for each subscriber\n this._subscribers[event.type].forEach((callback) => {\n callback(event);\n });\n };\n\n publish();\n\n this._notifyChangeEventContext = 0;\n }\n\n /**\n * Fires a ViewUpdate event when, for example, the month view is changed.\n * @param {Unit} unit\n * @private\n */\n _viewUpdate(unit: Unit) {\n this._triggerEvent({\n type: Namespace.events.update,\n change: unit,\n viewDate: this._viewDate.clone,\n } as ViewUpdateEvent);\n }\n\n private _unsubscribe(eventName, index) {\n this._subscribers[eventName].splice(index, 1);\n }\n\n /**\n * Merges two Option objects together and validates options type\n * @param config new Options\n * @param mergeTo Options to merge into\n * @param includeDataset When true, the elements data-td attributes will be included in the\n * @private\n */\n private _initializeOptions(\n config: Options,\n mergeTo: Options,\n includeDataset = false\n ): Options {\n config = OptionConverter._mergeOptions(config, mergeTo);\n if (includeDataset)\n config = OptionConverter._dataToOptions(this._element, config);\n\n OptionConverter._validateConflcits(config);\n\n config.viewDate = config.viewDate.setLocale(config.localization.locale);\n\n if (!this._viewDate.isSame(config.viewDate)) {\n this._viewDate = config.viewDate;\n }\n\n /**\n * Sets the minimum view allowed by the picker. For example the case of only\n * allowing year and month to be selected but not date.\n */\n if (config.display.components.year) {\n this._minViewModeNumber = 2;\n }\n if (config.display.components.month) {\n this._minViewModeNumber = 1;\n }\n if (config.display.components.date) {\n this._minViewModeNumber = 0;\n }\n\n this._currentViewMode = Math.max(\n this._minViewModeNumber,\n this._currentViewMode\n );\n\n // Update view mode if needed\n if (\n DatePickerModes[this._currentViewMode].name !== config.display.viewMode\n ) {\n this._currentViewMode = Math.max(\n DatePickerModes.findIndex((x) => x.name === config.display.viewMode),\n this._minViewModeNumber\n );\n }\n\n // defaults the input format based on the components enabled\n if (config.hooks.inputFormat === undefined) {\n const components = config.display.components;\n config.hooks.inputFormat = (_, date: DateTime) => {\n return date.format({\n year: components.calendar && components.year ? 'numeric' : undefined,\n month:\n components.calendar && components.month ? '2-digit' : undefined,\n day: components.calendar && components.date ? '2-digit' : undefined,\n hour:\n components.clock && components.hours\n ? components.useTwentyfourHour\n ? '2-digit'\n : 'numeric'\n : undefined,\n minute:\n components.clock && components.minutes ? '2-digit' : undefined,\n second:\n components.clock && components.seconds ? '2-digit' : undefined,\n hour12: !components.useTwentyfourHour,\n });\n };\n }\n\n if (this._display?.isVisible) {\n this._display._update('all');\n }\n\n return config;\n }\n\n /**\n * Checks if an input field is being used, attempts to locate one and sets an\n * event listener if found.\n * @private\n */\n private _initializeInput() {\n\n if (this._element.tagName == 'INPUT') {\n this._input = this._element as HTMLInputElement;\n } else {\n let query = this._element.dataset.tdTargetInput;\n if (query == undefined || query == 'nearest') {\n this._input = this._element.querySelector('input');\n } else {\n this._input = this._element.querySelector(query);\n }\n }\n\n if (!this._input) return;\n\n this._input.addEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input.addEventListener('click', this._toggleClickEvent);\n }\n\n if (this._input.value) {\n this._inputChangeEvent();\n }\n }\n\n /**\n * Attempts to locate a toggle for the picker and sets an event listener\n * @private\n */\n private _initializeToggle() {\n if (this._options.display.inline) return;\n let query = this._element.dataset.tdTargetToggle;\n if (query == 'nearest') {\n query = '[data-td-toggle=\"datetimepicker\"]';\n }\n this._toggle =\n query == undefined ? this._element : this._element.querySelector(query);\n this._toggle.addEventListener('click', this._toggleClickEvent);\n }\n\n /**\n * If the option is enabled this will render the clock view after a date pick.\n * @param e change event\n * @private\n */\n private _handleAfterChangeEvent(e: ChangeEvent) {\n if (\n // options is disabled\n !this._options.promptTimeOnDateChange ||\n this._options.display.inline ||\n this._options.display.sideBySide ||\n // time is disabled\n !this._display._hasTime ||\n // clock component is already showing\n this._display.widget\n ?.getElementsByClassName(Namespace.css.show)[0]\n .classList.contains(Namespace.css.timeContainer)\n )\n return;\n\n // First time ever. If useCurrent option is set to true (default), do nothing\n // because the first date is selected automatically.\n // or date didn't change (time did) or date changed because time did.\n if (\n (!e.oldDate && this._options.useCurrent) ||\n (e.oldDate && e.date?.isSame(e.oldDate))\n ) {\n return;\n }\n\n clearTimeout(this._currentPromptTimeTimeout);\n this._currentPromptTimeTimeout = setTimeout(() => {\n if (this._display.widget) {\n this._action.do(\n {\n currentTarget: this._display.widget.querySelector(\n `.${Namespace.css.switch} div`\n ),\n },\n ActionTypes.togglePicker\n );\n }\n }, this._options.promptTimeOnDateChangeTransitionDelay);\n }\n\n /**\n * Event for when the input field changes. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _inputChangeEvent = () => {\n const setViewDate = () => {\n if (this.dates.lastPicked) this._viewDate = this.dates.lastPicked;\n };\n\n const value = this._input.value;\n if (this._options.multipleDates) {\n try {\n const valueSplit = value.split(this._options.multipleDatesSeparator);\n for (let i = 0; i < valueSplit.length; i++) {\n if (this._options.hooks.inputParse) {\n this.dates.set(\n this._options.hooks.inputParse(this, valueSplit[i]),\n i,\n 'input'\n );\n } else {\n this.dates.set(valueSplit[i], i, 'input');\n }\n }\n setViewDate();\n } catch {\n console.warn(\n 'TD: Something went wrong trying to set the multidate values from the input field.'\n );\n }\n } else {\n if (this._options.hooks.inputParse) {\n this.dates.set(this._options.hooks.inputParse(this, value), 0, 'input');\n } else {\n this.dates.set(value, 0, 'input');\n }\n setViewDate();\n }\n };\n\n /**\n * Event for when the toggle is clicked. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _toggleClickEvent = () => {\n this.toggle();\n };\n}\n\nexport {\n TempusDominus,\n Namespace,\n DefaultOptions,\n DateTime,\n Options,\n Unit,\n DateTimeFormatOptions,\n};\n"],"names":["Unit","SecondDisplay","createPopper"],"mappings":";;;;;;;;;;;AAAYA;IAAZ,WAAY,IAAI;QACd,2BAAmB,CAAA;QACnB,2BAAmB,CAAA;QACnB,uBAAe,CAAA;QACf,qBAAa,CAAA;QACb,uBAAe,CAAA;QACf,qBAAa,CAAA;IACf,CAAC,EAPWA,YAAI,KAAJA,YAAI,QAOf;IAOD;;;;UAIa,QAAS,SAAQ,IAAI;QAAlC;;;;;YAIE,WAAM,GAAG,SAAS,CAAC;SA6YpB;;;;;QAvYC,SAAS,CAAC,KAAa;YACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,OAAO,IAAI,CAAC;SACb;;;;;;QAOD,OAAO,OAAO,CAAC,IAAU;YACvB,IAAI,CAAC,IAAI;gBAAE,MAAM,oBAAoB,CAAC;YACtC,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,OAAO,EAAE,EACd,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,UAAU,EAAE,EACjB,IAAI,CAAC,UAAU,EAAE,EACjB,IAAI,CAAC,eAAe,EAAE,CACvB,CAAC;SACH;;;;QAKD,IAAI,KAAK;YACP,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,eAAe,EAAE,CACvB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC1B;;;;;;;QAQD,OAAO,CAAC,IAAsB;YAC5B,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,SAAS,IAAI,gBAAgB,CAAC;YAClE,QAAQ,IAAI;gBACV,KAAK,SAAS;oBACZ,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;oBACxB,MAAM;gBACR,KAAK,SAAS;oBACZ,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACtB,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBACzB,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC1B,MAAM;gBACR,KAAK,SAAS;oBACZ,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACxB,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;oBAC7C,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACxB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAChB,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACxB,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACpB,MAAM;aACT;YACD,OAAO,IAAI,CAAC;SACb;;;;;;;QAQD,KAAK,CAAC,IAAsB;YAC1B,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,SAAS,IAAI,gBAAgB,CAAC;YAClE,QAAQ,IAAI;gBACV,KAAK,SAAS;oBACZ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;gBACR,KAAK,SAAS;oBACZ,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;oBACzB,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;oBAC7B,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;oBAC/B,MAAM;gBACR,KAAK,SAAS;oBACZ,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACxB,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;oBAC7C,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,CAAC,KAAK,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACtB,IAAI,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,CAAC;oBAC/B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAChB,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,CAAC,KAAK,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACtB,IAAI,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;oBAC9B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAChB,MAAM;aACT;YACD,OAAO,IAAI,CAAC;SACb;;;;;;;;QASD,UAAU,CAAC,KAAa,EAAE,IAAU;YAClC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,SAAS,IAAI,gBAAgB,CAAC;YAClE,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;YACpB,OAAO,IAAI,CAAC;SACb;;;;;;;;QASD,MAAM,CAAC,QAA+B,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM;YAC1D,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC/D;;;;;;;QAQD,QAAQ,CAAC,OAAiB,EAAE,IAAW;YACrC,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;YACrD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,SAAS,IAAI,gBAAgB,CAAC;YAClE,QACE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAC1E;SACH;;;;;;;QAQD,OAAO,CAAC,OAAiB,EAAE,IAAW;YACpC,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;YACrD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,SAAS,IAAI,gBAAgB,CAAC;YAClE,QACE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAC1E;SACH;;;;;;;QAQD,MAAM,CAAC,OAAiB,EAAE,IAAW;YACnC,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;YACvD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,SAAS,IAAI,gBAAgB,CAAC;YAClE,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACpC,QACE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EACtE;SACH;;;;;;;;;QAUD,SAAS,CACP,IAAc,EACd,KAAe,EACf,IAAW,EACX,cAAyC,IAAI;YAE7C,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,SAAS,IAAI,gBAAgB,CAAC;YAC1E,MAAM,eAAe,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;YAC/C,MAAM,gBAAgB,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;YAEhD,QACE,CAAC,CAAC,eAAe;kBACb,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;kBACxB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;iBAC3B,gBAAgB;sBACb,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;sBAC1B,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;iBAChC,CAAC,eAAe;sBACb,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;sBACzB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;qBAC1B,gBAAgB;0BACb,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;0BACzB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EACnC;SACH;;;;;;QAOD,KAAK,CACH,MAAM,GAAG,IAAI,CAAC,MAAM,EACpB,WAAgB,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE;YAExD,MAAM,KAAK,GAAG,EAAE,CAAC;YACjB,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC;iBACtC,aAAa,CAAC,IAAI,CAAC;iBACnB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;iBACnC,OAAO,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7C,OAAO,KAAK,CAAC;SACd;;;;QAKD,IAAI,OAAO;YACT,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;SAC1B;;;;QAKD,IAAI,OAAO,CAAC,KAAa;YACvB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SACxB;;;;QAKD,IAAI,gBAAgB;YAClB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;SAC3C;;;;QAKD,IAAI,OAAO;YACT,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;SAC1B;;;;QAKD,IAAI,OAAO,CAAC,KAAa;YACvB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SACxB;;;;QAKD,IAAI,gBAAgB;YAClB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;SAC3C;;;;QAKD,IAAI,KAAK;YACP,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;SACxB;;;;QAKD,IAAI,KAAK,CAAC,KAAa;YACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACtB;;;;QAKD,IAAI,cAAc;YAChB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;SACzC;;;;QAKD,IAAI,oBAAoB;YACtB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;SACvD;;;;;;;QAQD,QAAQ,CAAC,SAAiB,IAAI,CAAC,MAAM;;YACnC,OAAO,MAAA,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;gBACrC,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,IAAI;aACN,CAAC;iBACN,aAAa,CAAC,IAAI,CAAC;iBACnB,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,0CAAE,KAAK,CAAC;SAC/C;;;;QAKD,IAAI,IAAI;YACN,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;SACvB;;;;QAKD,IAAI,IAAI,CAAC,KAAa;YACpB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SACrB;;;;QAKD,IAAI,aAAa;YACf,OAAO,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1D;;;;;QAMD,IAAI,IAAI;YACN,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9C,WAAW,CAAC,OAAO,CACjB,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CACzD,CAAC;YACF,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;SAC7E;;;;QAKD,IAAI,OAAO;YACT,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;SACtB;;;;QAKD,IAAI,KAAK;YACP,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;SACxB;;;;QAKD,IAAI,KAAK,CAAC,KAAa;YACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACtB;;;;QAKD,IAAI,cAAc;YAChB,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;SACjE;;;;QAKD,IAAI,IAAI;YACN,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;SAC3B;;;;QAKD,IAAI,IAAI,CAAC,KAAa;YACpB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACzB;;;UChaU,OAAQ,SAAQ,KAAK;KAEjC;UAEY,aAAa;QAA1B;YACU,SAAI,GAAG,KAAK,CAAC;;;;;;;YAmJrB,2BAAsB,GAAG,4BAA4B,CAAC;;;;;YAMtD,uBAAkB,GAAG,0BAA0B,CAAC;;SAGjD;;;;;;QApJC,gBAAgB,CAAC,UAAkB;YACjC,MAAM,KAAK,GAAG,IAAI,OAAO,CACvB,GAAG,IAAI,CAAC,IAAI,uBAAuB,UAAU,iCAAiC,CAC/E,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;;QAMD,iBAAiB,CAAC,UAAoB;YACpC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpE,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;;;;;;QAUD,qBAAqB,CACnB,UAAkB,EAClB,QAAgB,EAChB,YAAsB;YAEtB,MAAM,KAAK,GAAG,IAAI,OAAO,CACvB,GACE,IAAI,CAAC,IACP,6BAA6B,UAAU,gCAAgC,QAAQ,wBAAwB,YAAY,CAAC,IAAI,CACtH,IAAI,CACL,EAAE,CACJ,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;;;;;;QAUD,YAAY,CAAC,UAAkB,EAAE,OAAe,EAAE,YAAoB;YACpE,MAAM,KAAK,GAAG,IAAI,OAAO,CACvB,GAAG,IAAI,CAAC,IAAI,oBAAoB,UAAU,kBAAkB,OAAO,4BAA4B,YAAY,EAAE,CAC9G,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;;;;;QASD,gBAAgB,CAAC,UAAkB,EAAE,KAAa,EAAE,KAAa;YAC/D,MAAM,KAAK,GAAG,IAAI,OAAO,CACvB,GAAG,IAAI,CAAC,IAAI,IAAI,UAAU,wCAAwC,KAAK,QAAQ,KAAK,GAAG,CACxF,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;;;;;QASD,iBAAiB,CAAC,UAAkB,EAAE,IAAS,EAAE,IAAI,GAAG,KAAK;YAC3D,MAAM,KAAK,GAAG,IAAI,OAAO,CACvB,GAAG,IAAI,CAAC,IAAI,+BAA+B,IAAI,mBAAmB,UAAU,GAAG,CAChF,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,IAAI,CAAC,IAAI;gBAAE,MAAM,KAAK,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACrB;;;;QAKD,kBAAkB;YAChB,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,2BAA2B,CAAC,CAAC;YACnE,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;;QAMD,iBAAiB;YACf,MAAM,KAAK,GAAG,IAAI,OAAO,CACvB,GAAG,IAAI,CAAC,IAAI,+DAA+D,CAC5E,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;QAKD,wBAAwB,CAAC,OAAgB;YACvC,MAAM,KAAK,GAAG,IAAI,OAAO,CACvB,GAAG,IAAI,CAAC,IAAI,uDAAuD,OAAO,EAAE,CAC7E,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;;QAMD,UAAU;YACR,OAAO,CAAC,IAAI,CACV,GAAG,IAAI,CAAC,IAAI,uFAAuF,CACpG,CAAC;SACH;;;IC/IH;IACA,MAAM,IAAI,GAAG,gBAAgB,EAC3B,OAAO,GAAG,cAAc,EACxB,OAAO,GAAG,IAAI,CAAC;IAEjB;;;IAGA,MAAM,MAAM;QAAZ;YACE,QAAG,GAAG,IAAI,OAAO,EAAE,CAAC;;;;;YAMpB,WAAM,GAAG,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC;;;;;YAM7B,WAAM,GAAG,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC;;;;;YAM7B,UAAK,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;;;;;YAM3B,SAAI,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;;;;;YAMzB,SAAI,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;;;YAKzB,SAAI,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;YACzB,UAAK,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,UAAK,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,YAAO,GAAG,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC;SAChC;KAAA;IAED,MAAM,GAAG;QAAT;;;;YAIE,WAAM,GAAG,GAAG,IAAI,SAAS,CAAC;;;;YAK1B,mBAAc,GAAG,iBAAiB,CAAC;;;;YAKnC,WAAM,GAAG,eAAe,CAAC;;;;YAKzB,YAAO,GAAG,SAAS,CAAC;;;;YAKpB,gBAAW,GAAG,cAAc,CAAC;;;;YAK7B,eAAU,GAAG,gBAAgB,CAAC;;;;YAK9B,aAAQ,GAAG,UAAU,CAAC;;;;YAKtB,SAAI,GAAG,MAAM,CAAC;;;;;YAMd,aAAQ,GAAG,UAAU,CAAC;;;;;YAMtB,QAAG,GAAG,KAAK,CAAC;;;;;YAMZ,QAAG,GAAG,KAAK,CAAC;;;;YAKZ,WAAM,GAAG,QAAQ,CAAC;;;;;YAOlB,kBAAa,GAAG,gBAAgB,CAAC;;;;YAKjC,qBAAgB,GAAG,GAAG,IAAI,CAAC,aAAa,UAAU,CAAC;;;;YAKnD,WAAM,GAAG,QAAQ,CAAC;;;;YAKlB,mBAAc,GAAG,GAAG,IAAI,CAAC,aAAa,QAAQ,CAAC;;;;YAK/C,SAAI,GAAG,MAAM,CAAC;;;;YAKd,oBAAe,GAAG,GAAG,IAAI,CAAC,aAAa,SAAS,CAAC;;;;YAKjD,UAAK,GAAG,OAAO,CAAC;;;;YAKhB,kBAAa,GAAG,GAAG,IAAI,CAAC,aAAa,OAAO,CAAC;;;;YAK7C,QAAG,GAAG,KAAK,CAAC;;;;;YAMZ,kBAAa,GAAG,IAAI,CAAC;;;;YAKrB,iBAAY,GAAG,KAAK,CAAC;;;;YAKrB,UAAK,GAAG,OAAO,CAAC;;;;YAKhB,YAAO,GAAG,SAAS,CAAC;;;;;;YASpB,kBAAa,GAAG,gBAAgB,CAAC;;;;YAKjC,cAAS,GAAG,WAAW,CAAC;;;;YAKxB,mBAAc,GAAG,GAAG,IAAI,CAAC,aAAa,QAAQ,CAAC;;;;YAK/C,kBAAa,GAAG,GAAG,IAAI,CAAC,aAAa,OAAO,CAAC;;;;YAK7C,oBAAe,GAAG,GAAG,IAAI,CAAC,aAAa,SAAS,CAAC;;;;YAKjD,oBAAe,GAAG,GAAG,IAAI,CAAC,aAAa,SAAS,CAAC;;;;YAKjD,SAAI,GAAG,MAAM,CAAC;;;;YAKd,WAAM,GAAG,QAAQ,CAAC;;;;YAKlB,WAAM,GAAG,QAAQ,CAAC;;;;YAKlB,mBAAc,GAAG,gBAAgB,CAAC;;;;;;YASlC,SAAI,GAAG,MAAM,CAAC;;;;;YAMd,eAAU,GAAG,eAAe,CAAC;;;;YAK7B,aAAQ,GAAG,aAAa,CAAC;;;;;YAOzB,WAAM,GAAG,QAAQ,CAAC;SACnB;KAAA;UAEoB,SAAS;;IACrB,cAAI,GAAG,IAAI,CAAC;IACnB;IACO,iBAAO,GAAG,OAAO,CAAC;IAClB,iBAAO,GAAG,OAAO,CAAC;IAElB,gBAAM,GAAG,IAAI,MAAM,EAAE,CAAC;IAEtB,aAAG,GAAG,IAAI,GAAG,EAAE,CAAC;IAEhB,uBAAa,GAAG,IAAI,aAAa,EAAE;;UC/QtC,cAAc,GAAY;QAC9B,YAAY,EAAE;YACZ,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,SAAS;YAClB,aAAa,EAAE,EAAE;YACjB,YAAY,EAAE,EAAE;YAChB,kBAAkB,EAAE,EAAE;YACtB,qBAAqB,EAAE,EAAE;YACzB,aAAa,EAAE,EAAE;YACjB,YAAY,EAAE,EAAE;SACjB;QACD,OAAO,EAAE;YACP,KAAK,EAAE;gBACL,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,iBAAiB;gBACvB,EAAE,EAAE,iBAAiB;gBACrB,IAAI,EAAE,mBAAmB;gBACzB,QAAQ,EAAE,qBAAqB;gBAC/B,IAAI,EAAE,sBAAsB;gBAC5B,KAAK,EAAE,uBAAuB;gBAC9B,KAAK,EAAE,cAAc;gBACrB,KAAK,EAAE,cAAc;aACtB;YACD,UAAU,EAAE,KAAK;YACjB,aAAa,EAAE,KAAK;YACpB,QAAQ,EAAE,UAAU;YACpB,gBAAgB,EAAE,QAAQ;YAC1B,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE;gBACP,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,KAAK;aACb;YACD,UAAU,EAAE;gBACV,QAAQ,EAAE,IAAI;gBACd,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,IAAI;gBACX,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,KAAK;gBACd,iBAAiB,EAAE,KAAK;aACzB;YACD,MAAM,EAAE,KAAK;SACd;QACD,QAAQ,EAAE,CAAC;QACX,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,SAAS;QACtB,YAAY,EAAE;YACZ,KAAK,EAAE,aAAa;YACpB,KAAK,EAAE,iBAAiB;YACxB,KAAK,EAAE,kBAAkB;YACzB,WAAW,EAAE,cAAc;YAC3B,aAAa,EAAE,gBAAgB;YAC/B,SAAS,EAAE,YAAY;YACvB,UAAU,EAAE,aAAa;YACzB,YAAY,EAAE,eAAe;YAC7B,QAAQ,EAAE,WAAW;YACrB,YAAY,EAAE,eAAe;YAC7B,cAAc,EAAE,iBAAiB;YACjC,UAAU,EAAE,aAAa;YACzB,eAAe,EAAE,kBAAkB;YACnC,WAAW,EAAE,cAAc;YAC3B,QAAQ,EAAE,WAAW;YACrB,aAAa,EAAE,gBAAgB;YAC/B,aAAa,EAAE,gBAAgB;YAC/B,UAAU,EAAE,aAAa;YACzB,eAAe,EAAE,kBAAkB;YACnC,eAAe,EAAE,kBAAkB;YACnC,UAAU,EAAE,aAAa;YACzB,eAAe,EAAE,kBAAkB;YACnC,eAAe,EAAE,kBAAkB;YACnC,cAAc,EAAE,iBAAiB;YACjC,UAAU,EAAE,aAAa;YACzB,UAAU,EAAE,aAAa;YACzB,mBAAmB,EAAE,MAAM;YAC3B,MAAM,EAAE,SAAS;SAClB;QACD,WAAW,EAAE,KAAK;QAClB,KAAK,EAAE,KAAK;QACZ,gBAAgB,EAAE,KAAK;QACvB,QAAQ,EAAE,IAAI,QAAQ,EAAE;QACxB,aAAa,EAAE,KAAK;QACpB,sBAAsB,EAAE,IAAI;QAC5B,sBAAsB,EAAE,KAAK;QAC7B,qCAAqC,EAAE,GAAG;QAC1C,KAAK,EAAE;YACL,UAAU,EAAE,SAAS;YACrB,WAAW,EAAE,SAAS;SACvB;MACD;IAEF,MAAM,eAAe,GAKf;QACJ;YACE,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,aAAa;YACtC,IAAI,EAAEA,YAAI,CAAC,KAAK;YAChB,IAAI,EAAE,CAAC;SACR;QACD;YACE,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,eAAe;YACxC,IAAI,EAAEA,YAAI,CAAC,IAAI;YACf,IAAI,EAAE,CAAC;SACR;QACD;YACE,IAAI,EAAE,OAAO;YACb,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,cAAc;YACvC,IAAI,EAAEA,YAAI,CAAC,IAAI;YACf,IAAI,EAAE,EAAE;SACT;QACD;YACE,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,gBAAgB;YACzC,IAAI,EAAEA,YAAI,CAAC,IAAI;YACf,IAAI,EAAE,GAAG;SACV;KACF;;IC/HD;;;UAGqB,QAAQ;QAA7B;;;;;;YAmFU,qCAAgC,GAAG,CAAC,OAAoB;gBAC9D,IAAI,CAAC,OAAO,EAAE;oBACZ,OAAO,CAAC,CAAC;iBACV;;gBAGD,IAAI,EAAE,kBAAkB,EAAE,eAAe,EAAE,GACzC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBAEnC,MAAM,uBAAuB,GAAG,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;gBACtE,MAAM,oBAAoB,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;;gBAGhE,IAAI,CAAC,uBAAuB,IAAI,CAAC,oBAAoB,EAAE;oBACrD,OAAO,CAAC,CAAC;iBACV;;gBAGD,kBAAkB,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtD,eAAe,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEhD,QACE,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC;oBACpC,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC;oBACpC,IAAI,EACJ;aACH,CAAC;SACH;;;;;QAvGC,MAAM,CAAC,MAAmB,EAAE,QAAQ,GAAG,SAAS;YAC9C,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBACjD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;aAC7B;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;aAC7B;SACF;;;;;QAMD,IAAI,CAAC,MAAmB,EAAE,QAAQ,GAAG,SAAS;YAC5C,IACE,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;gBACnD,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;gBAE7C,OAAO;YAET,MAAM,QAAQ,GAAG;gBACf,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAClD,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACjE,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;gBACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,IAAI,QAAQ;oBAAE,QAAQ,EAAE,CAAC;aAC1B,CAAC;YAEF,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;YAC1B,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAE/C,IAAI,CAAC,OAAO,GAAG,UAAU,CACvB,QAAQ,EACR,IAAI,CAAC,gCAAgC,CAAC,MAAM,CAAC,CAC9C,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,IAAI,CAAC;SAClD;;;;;QAMD,IAAI,CAAC,MAAmB,EAAE,QAAQ,GAAG,SAAS;YAC5C,IACE,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;gBACnD,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;gBAE9C,OAAO;YAET,MAAM,QAAQ,GAAG;gBACf,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAClD,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;aACrB,CAAC;YAEF,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;YAEtE,MAAM,MAAM,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC;YAEjD,MAAM,CAAC,MAAM,CAAC,CAAC;YAEf,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC/C,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;YAEzB,IAAI,CAAC,OAAO,GAAG,UAAU,CACvB,QAAQ,EACR,IAAI,CAAC,gCAAgC,CAAC,MAAM,CAAC,CAC9C,CAAC;SACH;;;IC3EH;;;UAGqB,OAAO;QAI1B,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;SAChC;;;;;;QAOD,EAAE,CAAC,CAAM,EAAE,MAAoB;YAC7B,MAAM,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC;YACtC,IAAI,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC3E,MAAM,GAAG,MAAM,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;YAChD,MAAM,UAAU,GAAG,CACjB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EACzD,KAAK,CAAC;;;;;;YAOR,MAAM,gBAAgB,GAAG,CAAC,IAAU,EAAE,KAAK,GAAG,CAAC;gBAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACnD,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;oBACpD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CACpC,CAAC;iBACH;aACF,CAAC;YAEF,QAAQ,MAAM;gBACZ,KAAK,WAAW,CAAC,IAAI,CAAC;gBACtB,KAAK,WAAW,CAAC,QAAQ;oBACvB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;oBACvE,IAAI,MAAM,KAAK,WAAW,CAAC,IAAI;wBAC7B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;;wBAC5C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBACzD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBAEhC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;oBACnC,MAAM;gBACR,KAAK,WAAW,CAAC,YAAY;oBAC3B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;oBACpC,IAAI,CAAC,QAAQ,CAAC,WAAW,CACvB,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,IAAI,CACrD,CAAC;oBACF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;oBAC/C,MAAM;gBACR,KAAK,WAAW,CAAC,WAAW,CAAC;gBAC7B,KAAK,WAAW,CAAC,UAAU,CAAC;gBAC5B,KAAK,WAAW,CAAC,YAAY;oBAC3B,MAAM,KAAK,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;oBAC3C,QAAQ,MAAM;wBACZ,KAAK,WAAW,CAAC,WAAW;4BAC1B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;4BACtC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAACA,YAAI,CAAC,KAAK,CAAC,CAAC;4BACtC,MAAM;wBACR,KAAK,WAAW,CAAC,UAAU;4BACzB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC;4BACrC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;4BACrC,MAAM;wBACR,KAAK,WAAW,CAAC,YAAY;4BAC3B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC;4BACrC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;4BACrC,MAAM;qBACT;oBAED,IACE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,KAAK,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EACnE;wBACA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,IAAI,CAAC,QAAQ,CAAC,SAAS,EACvB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CACpC,CAAC;wBACF,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE;4BAC1C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;yBAC/B;qBACF;yBAAM;wBACL,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;qBACtC;oBACD,MAAM;gBACR,KAAK,WAAW,CAAC,SAAS;oBACxB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC;oBAC1C,IAAI,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;wBACvD,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,CAAC;qBAChC;oBACD,IAAI,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;wBACvD,GAAG,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,CAAC;qBAC/B;oBAED,GAAG,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC;oBACtC,IAAI,KAAK,GAAG,CAAC,CAAC;oBACd,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE;wBACxC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;wBACxD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;4BAChB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;yBAC5C;6BAAM;4BACL,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,GAAG,EACH,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,GAAG,CAAC,CACxC,CAAC;yBACH;qBACF;yBAAM;wBACL,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,GAAG,EACH,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CACpC,CAAC;qBACH;oBAED,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ;wBAChC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ;wBACxC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;wBACtC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EACrC;wBACA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;qBAC/B;oBACD,MAAM;gBACR,KAAK,WAAW,CAAC,UAAU;oBACzB,IAAI,IAAI,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;oBACxC,IACE,UAAU,CAAC,KAAK,IAAI,EAAE;wBACtB,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB;wBAE5D,IAAI,IAAI,EAAE,CAAC;oBACb,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;oBACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,UAAU,EACV,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CACpC,CAAC;oBACF,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB;wBAC3D,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO;wBAClD,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ;wBACxC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EACtC;wBACA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;qBAC/B;yBAAM;wBACL,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;qBACnC;oBACD,MAAM;gBACR,KAAK,WAAW,CAAC,YAAY;oBAC3B,UAAU,CAAC,OAAO,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;oBAClD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,UAAU,EACV,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CACpC,CAAC;oBACF,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB;wBAC3D,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO;wBAClD,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ;wBACxC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EACtC;wBACA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;qBAC/B;yBAAM;wBACL,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;qBACnC;oBACD,MAAM;gBACR,KAAK,WAAW,CAAC,YAAY;oBAC3B,UAAU,CAAC,OAAO,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;oBAClD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,UAAU,EACV,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CACpC,CAAC;oBACF,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB;wBAC3D,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ;wBACxC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EACtC;wBACA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;qBAC/B;yBAAM;wBACL,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;qBACnC;oBACD,MAAM;gBACR,KAAK,WAAW,CAAC,cAAc;oBAC7B,gBAAgB,CAACA,YAAI,CAAC,KAAK,CAAC,CAAC;oBAC7B,MAAM;gBACR,KAAK,WAAW,CAAC,gBAAgB;oBAC/B,gBAAgB,CAACA,YAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBAChE,MAAM;gBACR,KAAK,WAAW,CAAC,gBAAgB;oBAC/B,gBAAgB,CAACA,YAAI,CAAC,OAAO,CAAC,CAAC;oBAC/B,MAAM;gBACR,KAAK,WAAW,CAAC,cAAc;oBAC7B,gBAAgB,CAACA,YAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;oBACjC,MAAM;gBACR,KAAK,WAAW,CAAC,gBAAgB;oBAC/B,gBAAgB,CAACA,YAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;oBACrE,MAAM;gBACR,KAAK,WAAW,CAAC,gBAAgB;oBAC/B,gBAAgB,CAACA,YAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;oBACnC,MAAM;gBACR,KAAK,WAAW,CAAC,cAAc;oBAC7B,gBAAgB,CACdA,YAAI,CAAC,KAAK,EACV,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CACtD,CAAC;oBACF,MAAM;gBACR,KAAK,WAAW,CAAC,YAAY;oBAC3B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM;yBAC1B,gBAAgB,CACf,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa,MAAM,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,CACnE;yBACA,OAAO,CAAC,CAAC,WAAwB,KAChC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAClC,CAAC;oBACJ,IACE,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC;wBACnC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,EAC9C;wBACA,aAAa,CAAC,YAAY,CACxB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAC/C,CAAC;wBACF,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CACvD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAC1C,CAAC,SAAS,CAAC;wBAEZ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;qBAChD;yBAAM;wBACL,aAAa,CAAC,YAAY,CACxB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAC/C,CAAC;wBACF,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CACvD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAC1C,CAAC,SAAS,CAAC;wBACZ,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;wBAClC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;qBACzC;oBACD,MAAM;gBACR,KAAK,WAAW,CAAC,SAAS,CAAC;gBAC3B,KAAK,WAAW,CAAC,SAAS,CAAC;gBAC3B,KAAK,WAAW,CAAC,WAAW,CAAC;gBAC7B,KAAK,WAAW,CAAC,WAAW;oBAC1B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM;yBAC1B,gBAAgB,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAC;yBACzD,OAAO,CACN,CAAC,WAAwB,MAAM,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,CACnE,CAAC;oBAEJ,IAAI,UAAU,GAAG,EAAE,CAAC;oBACpB,QAAQ,MAAM;wBACZ,KAAK,WAAW,CAAC,SAAS;4BACxB,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC;4BAC1C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;4BACxC,MAAM;wBACR,KAAK,WAAW,CAAC,SAAS;4BACxB,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC;4BACzC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAACA,YAAI,CAAC,KAAK,CAAC,CAAC;4BAC3C,MAAM;wBACR,KAAK,WAAW,CAAC,WAAW;4BAC1B,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC;4BAC3C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAACA,YAAI,CAAC,OAAO,CAAC,CAAC;4BAC7C,MAAM;wBACR,KAAK,WAAW,CAAC,WAAW;4BAC1B,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC;4BAC3C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAACA,YAAI,CAAC,OAAO,CAAC,CAAC;4BAC7C,MAAM;qBACT;oBAEa,CACZ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAClE,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;oBAC1B,MAAM;gBACR,KAAK,WAAW,CAAC,KAAK;oBACpB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBACpC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;oBAC/C,MAAM;gBACR,KAAK,WAAW,CAAC,KAAK;oBACpB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAC9B,MAAM;gBACR,KAAK,WAAW,CAAC,KAAK;oBACpB,MAAM,KAAK,GAAG,IAAI,QAAQ,EAAE,CAAC,SAAS,CACpC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAC3C,CAAC;oBACF,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;oBAChC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAEA,YAAI,CAAC,IAAI,CAAC;wBACrD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,KAAK,EACL,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CACpC,CAAC;oBACJ,MAAM;aACT;SACF;KACF;IAED,IAAY,WA0BX;IA1BD,WAAY,WAAW;QACrB,4BAAa,CAAA;QACb,oCAAqB,CAAA;QACrB,4CAA6B,CAAA;QAC7B,0CAA2B,CAAA;QAC3B,wCAAyB,CAAA;QACzB,4CAA6B,CAAA;QAC7B,sCAAuB,CAAA;QACvB,wCAAyB,CAAA;QACzB,4CAA6B,CAAA;QAC7B,4CAA6B,CAAA;QAC7B,gDAAiC,CAAA;QACjC,oDAAqC,CAAA;QACrC,oDAAqC,CAAA;QACrC,gDAAiC,CAAA;QACjC,oDAAqC,CAAA;QACrC,oDAAqC,CAAA;QACrC,gDAAiC,CAAA;QACjC,4CAA6B,CAAA;QAC7B,sCAAuB,CAAA;QACvB,sCAAuB,CAAA;QACvB,0CAA2B,CAAA;QAC3B,0CAA2B,CAAA;QAC3B,8BAAe,CAAA;QACf,8BAAe,CAAA;QACf,8BAAe,CAAA;IACjB,CAAC,EA1BW,WAAW,KAAX,WAAW;;IC1SvB;;;UAGqB,WAAW;QAG9B,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAErD,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;YAE3C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE;gBAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAC1E,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;oBAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE;wBAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;wBAC1C,GAAG,CAAC,SAAS,CAAC,GAAG,CACf,SAAS,CAAC,GAAG,CAAC,aAAa,EAC3B,SAAS,CAAC,GAAG,CAAC,WAAW,CAC1B,CAAC;wBACF,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;qBAC5B;iBACF;gBAED,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;gBACvD,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YAED,OAAO,SAAS,CAAC;SAClB;;;;;QAMD,OAAO;YACL,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CACpE,SAAS,CAAC,GAAG,CAAC,aAAa,CAC5B,CAAC,CAAC,CAAC,CAAC;YACL,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,aAAa;iBACvD,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;iBACvD,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAE/B,QAAQ,CAAC,YAAY,CACnB,SAAS,CAAC,GAAG,CAAC,aAAa,EAC3B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC;gBAC7B,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,mBAAmB;aAC/D,CAAC,CACH,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAC/B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,EACxDA,YAAI,CAAC,KAAK,CACX;kBACG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBACjD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEnD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAC/B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,EACvDA,YAAI,CAAC,KAAK,CACX;kBACG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBAC7C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE/C,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK;iBAC1C,OAAO,CAACA,YAAI,CAAC,KAAK,CAAC;iBACnB,OAAO,CAAC,SAAS,CAAC;iBAClB,UAAU,CAAC,EAAE,EAAEA,YAAI,CAAC,KAAK,CAAC,CAAC;YAE9B,SAAS;iBACN,gBAAgB,CACf,iBAAiB,WAAW,CAAC,SAAS,QAAQ,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,CAC5E;iBACA,OAAO,CAAC,CAAC,cAA2B,EAAE,KAAK;gBAC1C,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa;oBAC5C,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,EAC9D;oBACA,IAAI,cAAc,CAAC,SAAS,KAAK,GAAG;wBAAE,OAAO;oBAC7C,cAAc,CAAC,SAAS,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;oBAC/C,OAAO;iBACR;gBAED,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAEhC,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAEA,YAAI,CAAC,KAAK,CAAC,EAAE;oBAC3D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBACjC;gBACD,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAEA,YAAI,CAAC,KAAK,CAAC,EAAE;oBAC1D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBACjC;gBAED,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;oBACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAEA,YAAI,CAAC,IAAI,CAAC,EAClD;oBACA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBACpC;gBACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAEA,YAAI,CAAC,IAAI,CAAC,EAAE;oBAC5D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACtC;gBACD,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,QAAQ,EAAE,EAAEA,YAAI,CAAC,IAAI,CAAC,EAAE;oBAC/C,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;iBACnC;gBACD,IAAI,SAAS,CAAC,OAAO,KAAK,CAAC,IAAI,SAAS,CAAC,OAAO,KAAK,CAAC,EAAE;oBACtD,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;iBACrC;gBAED,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC7D,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBACzC,cAAc,CAAC,YAAY,CACzB,YAAY,EACZ,GAAG,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,cAAc,IAAI,SAAS,CAAC,aAAa,EAAE,CAC3E,CAAC;gBACF,cAAc,CAAC,YAAY,CACzB,UAAU,EACV,GAAG,SAAS,CAAC,IAAI,EAAE,CACpB,CAAC;gBACF,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;gBAChE,SAAS,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;aACpC,CAAC,CAAC;SACN;;;;;QAMO,cAAc;YACpB,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK;iBAC1C,OAAO,CAAC,SAAS,CAAC;iBAClB,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;YACtB,MAAM,GAAG,GAAG,EAAE,CAAC;YACf,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAE9B,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE;gBAChD,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACrD,cAAc,CAAC,SAAS,CAAC,GAAG,CAC1B,SAAS,CAAC,GAAG,CAAC,aAAa,EAC3B,SAAS,CAAC,GAAG,CAAC,WAAW,CAC1B,CAAC;gBACF,cAAc,CAAC,SAAS,GAAG,GAAG,CAAC;gBAC/B,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aAC1B;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC1B,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACrD,cAAc,CAAC,SAAS,CAAC,GAAG,CAC1B,SAAS,CAAC,GAAG,CAAC,YAAY,EAC1B,SAAS,CAAC,GAAG,CAAC,WAAW,CAC1B,CAAC;gBACF,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;gBAClE,SAAS,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;gBACnC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aAC1B;YAED,OAAO,GAAG,CAAC;SACZ;;;IC5KH;;;UAGqB,YAAY;QAG/B,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAEvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;gBACzD,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YAED,OAAO,SAAS,CAAC;SAClB;;;;;QAMD,OAAO;YACL,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CACpE,SAAS,CAAC,GAAG,CAAC,eAAe,CAC9B,CAAC,CAAC,CAAC,CAAC;YACL,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,aAAa;iBACvD,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;iBACvD,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAE/B,QAAQ,CAAC,YAAY,CACnB,SAAS,CAAC,GAAG,CAAC,eAAe,EAC7B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CACpD,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAC/B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,EACvDA,YAAI,CAAC,IAAI,CACV;kBACG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBACjD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEnD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAC/B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,EACtDA,YAAI,CAAC,IAAI,CACV;kBACG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBAC7C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE/C,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;YAEjE,SAAS;iBACN,gBAAgB,CAAC,iBAAiB,WAAW,CAAC,WAAW,IAAI,CAAC;iBAC9D,OAAO,CAAC,CAAC,cAA2B,EAAE,KAAK;gBAC1C,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAElC,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;oBACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAEA,YAAI,CAAC,KAAK,CAAC,EACnD;oBACA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBACpC;gBACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAEA,YAAI,CAAC,KAAK,CAAC,EAAE;oBAC7D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACtC;gBAED,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC7D,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBACzC,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;gBACtD,cAAc,CAAC,SAAS,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;gBACrE,SAAS,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,CAAC;aACrC,CAAC,CAAC;SACN;;;UCSU,eAAe;QAC1B,OAAO,aAAa,CAAC,eAAwB,EAAE,OAAgB;YAC7D,MAAM,UAAU,GAAG,EAAa,CAAC;YACjC,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,MAAM,gBAAgB,GAAG,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;YAEvD,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW;gBACvD,QAAQ,GAAG;oBACT,KAAK,aAAa,EAAE;wBAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;wBAC5D,IAAI,QAAQ,KAAK,SAAS,EAAE;4BAC1B,OAAO,QAAQ,CAAC;yBACjB;wBACD,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,aAAa,EACb,YAAY,EACZ,kBAAkB,CACnB,CAAC;qBACH;oBACD,KAAK,UAAU,EAAE;wBACf,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;wBACzD,IAAI,QAAQ,KAAK,SAAS,EAAE;4BAC1B,OAAO,QAAQ,CAAC;yBACjB;wBACD,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,UAAU,EACV,YAAY,EACZ,kBAAkB,CACnB,CAAC;qBACH;oBACD,KAAK,SAAS,EAAE;wBACd,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,KAAK,CAAC;yBACd;wBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;wBACrE,IAAI,QAAQ,KAAK,SAAS,EAAE;4BAC1B,OAAO,QAAQ,CAAC;yBACjB;wBACD,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,CACnB,CAAC;qBACH;oBACD,KAAK,SAAS,EAAE;wBACd,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,KAAK,CAAC;yBACd;wBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;wBACrE,IAAI,QAAQ,KAAK,SAAS,EAAE;4BAC1B,OAAO,QAAQ,CAAC;yBACjB;wBACD,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,CACnB,CAAC;qBACH;oBACD,KAAK,eAAe;wBAClB,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,EAAE,CAAC;yBACX;wBACD,IAAI,CAAC,qBAAqB,CACxB,4BAA4B,EAC5B,KAAK,EACL,YAAY,CACb,CAAC;wBACF,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;4BACjD,SAAS,CAAC,aAAa,CAAC,gBAAgB,CACtC,4BAA4B,EAC5B,CAAC,EACD,EAAE,CACH,CAAC;wBACJ,OAAO,KAAK,CAAC;oBACf,KAAK,cAAc;wBACjB,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,EAAE,CAAC;yBACX;wBACD,IAAI,CAAC,qBAAqB,CACxB,2BAA2B,EAC3B,KAAK,EACL,YAAY,CACb,CAAC;wBACF,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;4BACjD,SAAS,CAAC,aAAa,CAAC,gBAAgB,CACtC,2BAA2B,EAC3B,CAAC,EACD,EAAE,CACH,CAAC;wBACJ,OAAO,KAAK,CAAC;oBACf,KAAK,oBAAoB;wBACvB,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,EAAE,CAAC;yBACX;wBACD,IAAI,CAAC,qBAAqB,CACxB,iCAAiC,EACjC,KAAK,EACL,YAAY,CACb,CAAC;wBACF,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;4BAChD,SAAS,CAAC,aAAa,CAAC,gBAAgB,CACtC,iCAAiC,EACjC,CAAC,EACD,CAAC,CACF,CAAC;wBACJ,OAAO,KAAK,CAAC;oBACf,KAAK,cAAc;wBACjB,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,EAAE,CAAC;yBACX;wBACD,IAAI,CAAC,mBAAmB,CACtB,2BAA2B,EAC3B,KAAK,EACL,YAAY,CACb,CAAC;wBACF,OAAO,KAAK,CAAC;oBACf,KAAK,eAAe;wBAClB,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,EAAE,CAAC;yBACX;wBACD,IAAI,CAAC,mBAAmB,CACtB,4BAA4B,EAC5B,KAAK,EACL,YAAY,CACb,CAAC;wBACF,OAAO,KAAK,CAAC;oBACf,KAAK,uBAAuB;wBAC1B,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,EAAE,CAAC;yBACX;wBACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;4BACzB,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,GAAG,EACH,YAAY,EACZ,qDAAqD,CACtD,CAAC;yBACH;wBACD,MAAM,WAAW,GAAG,KAAiC,CAAC;wBACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAC3C,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;gCACrC,MAAM,aAAa,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;gCAC3C,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gCAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;gCACxD,IAAI,CAAC,QAAQ,EAAE;oCACb,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,aAAa,EACb,OAAO,CAAC,EACR,kBAAkB,CACnB,CAAC;iCACH;gCACD,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;6BAC/B,CAAC,CAAC;yBACJ;wBACD,OAAO,WAAW,CAAC;oBACrB,KAAK,kBAAkB,CAAC;oBACxB,KAAK,MAAM,CAAC;oBACZ,KAAK,UAAU,CAAC;oBAChB,KAAK,qBAAqB;wBACxB,MAAM,YAAY,GAAG;4BACnB,gBAAgB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC;4BAC9C,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;4BAC1B,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;4BAC7D,mBAAmB,EAAE;gCACnB,SAAS;gCACT,SAAS;gCACT,MAAM;gCACN,OAAO;gCACP,QAAQ;6BACT;yBACF,CAAC;wBACF,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;wBACrC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;4BAC7B,SAAS,CAAC,aAAa,CAAC,qBAAqB,CAC3C,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EACjB,KAAK,EACL,UAAU,CACX,CAAC;wBAEJ,OAAO,KAAK,CAAC;oBACf,KAAK,YAAY,CAAC;oBAClB,KAAK,aAAa;wBAChB,OAAO,KAAK,CAAC;oBACf;wBACE,QAAQ,WAAW;4BACjB,KAAK,SAAS;gCACZ,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,CAAC;4BAC5C,KAAK,QAAQ;gCACX,OAAO,CAAC,KAAK,CAAC;4BAChB,KAAK,QAAQ;gCACX,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;4BAC1B,KAAK,QAAQ;gCACX,OAAO,EAAE,CAAC;4BACZ,KAAK,UAAU;gCACb,OAAO,KAAK,CAAC;4BACf;gCACE,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EACjB,YAAY,EACZ,WAAW,CACZ,CAAC;yBACL;iBACJ;aACF,CAAC;;;;;;;;;YAUF,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM;gBAC3C,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CACrD,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC7C,CAAC;gBACF,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;oBACjC,MAAM,gBAAgB,GAAG,eAAe,CAAC,sBAAsB,CAAC;oBAEhE,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;wBACtC,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC;wBACjE,IAAI,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC7D,IAAI,UAAU;4BAAE,KAAK,IAAI,iBAAiB,UAAU,IAAI,CAAC;wBACzD,OAAO,KAAK,CAAC;qBACd,CAAC,CAAC;oBACH,SAAS,CAAC,aAAa,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;iBACnD;gBACD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG;oBACnC,MAAM,kBAAkB,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;oBAC5C,IAAI,YAAY,GAAG,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;oBACxC,IAAI,WAAW,GAAG,OAAO,kBAAkB,CAAC;oBAC5C,IAAI,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;oBAC1B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;wBACjC,IACE,WAAW,KAAK,WAAW;6BAC1B,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,MAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,EAC1D;4BACA,MAAM,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC;4BACjC,OAAO;yBACR;wBACD,QAAQ,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC;wBACnC,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;qBACvB;oBACD,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;oBAClB,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;oBAEhE,IACE,OAAO,kBAAkB,KAAK,QAAQ;wBACtC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAC9B;wBACA,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;wBACtD,OAAO;qBACR;oBACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;wBACjC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;wBACvD,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;qBACvD;oBACD,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;iBACvD,CAAC,CAAC;aACJ,CAAC;YACF,MAAM,CAAC,eAAe,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;YAE7C,OAAO,UAAU,CAAC;SACnB;QAED,OAAO,cAAc,CAAC,OAAO,EAAE,OAAgB;YAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;YAC9B,IACE,CAAC,KAAK;gBACN,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;gBAC/B,KAAK,CAAC,WAAW,KAAK,YAAY;gBAElC,OAAO,OAAO,CAAC;YACjB,IAAI,WAAW,GAAG,EAAa,CAAC;;;YAIhC,MAAM,kBAAkB,GAAG,CAAC,MAAM;gBAChC,MAAM,OAAO,GAAG,EAAE,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC5B,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC;iBAC9B,CAAC,CAAC;gBAEH,OAAO,OAAO,CAAC;aAChB,CAAC;YAEF,MAAM,UAAU,GAAG,CACjB,KAAe,EACf,KAAa,EACb,cAAkB,EAClB,KAAU;;gBAGV,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;gBAE7D,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;gBAChE,MAAM,cAAc,GAAG,EAAE,CAAC;gBAE1B,IAAI,SAAS,KAAK,SAAS;oBAAE,OAAO,cAAc,CAAC;;gBAGnD,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC,WAAW,KAAK,MAAM,EAAE;oBACpD,KAAK,EAAE,CAAC;oBACR,cAAc,CAAC,SAAS,CAAC,GAAG,UAAU,CACpC,KAAK,EACL,KAAK,EACL,cAAc,CAAC,SAAS,CAAC,EACzB,KAAK,CACN,CAAC;iBACH;qBAAM;oBACL,cAAc,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;iBACnC;gBACD,OAAO,cAAc,CAAC;aACvB,CAAC;YACF,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAEjD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;iBACf,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;iBAC9C,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;iBAC1B,OAAO,CAAC,CAAC,GAAG;gBACX,IAAI,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;;;gBAIhD,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;;oBAErB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;oBAE7B,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;oBACjD,IACE,SAAS,KAAK,SAAS;wBACvB,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,KAAK,MAAM,EACzC;wBACA,WAAW,CAAC,SAAS,CAAC,GAAG,UAAU,CACjC,KAAK,EACL,CAAC,EACD,OAAO,CAAC,SAAS,CAAC,EAClB,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAClB,CAAC;qBACH;iBACF;;qBAEI,IAAI,SAAS,KAAK,SAAS,EAAE;oBAChC,WAAW,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;iBAC5C;aACF,CAAC,CAAC;YAEL,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;SACjD;;;;;;QAOD,OAAO,cAAc,CAAC,CAAM;YAC1B,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI;gBAAE,OAAO,CAAC,CAAC;YACnD,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;gBACpC,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;aAC5B;YACD,IAAI,OAAO,CAAC,KAAK,OAAO,EAAE,EAAE;gBAC1B,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,MAAM,EAAE;oBACvC,OAAO,IAAI,CAAC;iBACb;gBACD,OAAO,QAAQ,CAAC;aACjB;YACD,OAAO,IAAI,CAAC;SACb;;;;;;;QAQD,OAAO,mBAAmB,CAAC,UAAkB,EAAE,KAAK,EAAE,YAAoB;YACxE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACzB,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,UAAU,EACV,YAAY,EACZ,2BAA2B,CAC5B,CAAC;aACH;YACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACrC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;gBACrD,IAAI,CAAC,QAAQ,EAAE;oBACb,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,UAAU,EACV,OAAO,CAAC,EACR,kBAAkB,CACnB,CAAC;iBACH;gBACD,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;aACrB;SACF;;;;;;;QAQD,OAAO,qBAAqB,CAC1B,UAAkB,EAClB,KAAK,EACL,YAAoB;YAEpB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,EAAE;gBACrE,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,UAAU,EACV,YAAY,EACZ,kBAAkB,CACnB,CAAC;aACH;YACD,OAAO;SACR;;;;;;QAOD,OAAO,eAAe,CAAC,CAAM,EAAE,UAAkB;YAC/C,IAAI,OAAO,CAAC,KAAK,OAAO,EAAE,IAAI,UAAU,KAAK,OAAO,EAAE;gBACpD,SAAS,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;aACtC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAEzC,IAAI,CAAC,SAAS,EAAE;gBACd,SAAS,CAAC,aAAa,CAAC,iBAAiB,CACvC,UAAU,EACV,CAAC,EACD,UAAU,KAAK,OAAO,CACvB,CAAC;aACH;YACD,OAAO,SAAS,CAAC;SAClB;QAIO,WAAW,sBAAsB;YACvC,IAAI,IAAI,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC,SAAS,CAAC;YAC1C,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,KAC3B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;kBACZ,EAAE;kBACF,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;sBACf,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;sBAC/D,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEpB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC;YAE1C,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;;;;;;QAOD,OAAO,kBAAkB,CAAC,MAAe;YACvC,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE;gBAC9D,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;oBACpE,SAAS,CAAC,aAAa,CAAC,wBAAwB,CAC9C,0BAA0B,CAC3B,CAAC;iBACH;gBAED,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;oBACrE,SAAS,CAAC,aAAa,CAAC,wBAAwB,CAC9C,2BAA2B,CAC5B,CAAC;iBACH;aACF;SACF;;;UCtjBkB,KAAK;QAIxB,YAAY,OAAsB;YAH1B,WAAM,GAAe,EAAE,CAAC;YAI9B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;QAKD,IAAI,MAAM;YACR,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;;;;QAKD,IAAI,UAAU;YACZ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SAC1C;;;;QAKD,IAAI,eAAe;YACjB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;SAC/B;;;;;QAMD,GAAG,CAAC,IAAc;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACxB;;;;;;;;QASD,GAAG,CAAC,KAAU,EAAE,KAAc,EAAE,OAAe,UAAU;YACvD,IAAI,CAAC,KAAK;gBAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACzC,MAAM,SAAS,GAAG,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC/D,IAAI,SAAS;gBAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;SACjD;;;;;;;QAQD,QAAQ,CAAC,UAAoB,EAAE,IAAW;YACxC,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,UAAU,CAAC,KAAK,SAAS,CAAC;YAE1E,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAE3C,IAAI,kBAAkB,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEnD,QACE,IAAI,CAAC,MAAM;iBACR,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;iBAC5B,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,kBAAkB,CAAC,KAAK,SAAS,EACtD;SACH;;;;;;;;QASD,WAAW,CAAC,UAAoB,EAAE,IAAW;YAC3C,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAElD,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAE3C,IAAI,kBAAkB,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEnD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;SAC7E;;;;QAKD,KAAK;YACH,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;gBAC1B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM;gBAC7B,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,IAAI,CAAC,UAAU;gBACxB,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,IAAI;aACC,CAAC,CAAC;YAClB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;SAClB;;;;;;QAOD,OAAO,eAAe,CACpB,MAAc,EACd,IAAY;YAEZ,MAAM,IAAI,GAAG,MAAM,GAAG,EAAE,EACtB,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,MAAM,EAC9C,OAAO,GAAG,SAAS,GAAG,IAAI,GAAG,CAAC,EAC9B,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YAC9C,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;SACzC;;;;;;;;;;QAWD,SAAS,CAAC,MAAiB,EAAE,KAAc;YACzC,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,WAAW,EAC1C,OAAO,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC;YAC/B,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/D,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,OAAO,IAAI,OAAO,EAAE;gBAC3D,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;aAC3B;YAED,MAAM,WAAW,GAAG;gBAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;oBAAE,OAAO;gBAElC,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CACrD,IAAI,CAAC,QAAQ,EACb,MAAM,CACP,CAAC;gBACF,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE;oBACxC,QAAQ,GAAG,IAAI,CAAC,MAAM;yBACnB,GAAG,CAAC,CAAC,CAAC,KACL,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAC3D;yBACA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;iBACxD;gBACD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,QAAQ;oBACxC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC;aACzC,CAAC;YAEF,IAAI,MAAM,KAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAC,MAAM,CAAC,CAAA,EAAE;gBACrC,WAAW,EAAE,CAAC;gBACd,OAAO;aACR;;YAGD,IAAI,CAAC,MAAM,EAAE;gBACX,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa;oBACrC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;oBACxB,OAAO,EACP;oBACA,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;oBAC5B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;iBAClB;qBAAM;oBACL,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;iBAC9B;gBACD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;oBAC1B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM;oBAC7B,IAAI,EAAE,SAAS;oBACf,OAAO;oBACP,OAAO;oBACP,OAAO,EAAE,IAAI;iBACC,CAAC,CAAC;gBAElB,WAAW,EAAE,CAAC;gBACd,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACtC,OAAO;aACR;YAED,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC;YACnB,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;;YAGtB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,KAAK,CAAC,EAAE;gBACzC,MAAM,CAAC,OAAO;oBACZ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;wBAC5D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAClC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;aACpB;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;gBAC5B,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;gBAEvC,WAAW,EAAE,CAAC;gBAEd,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;gBAC7B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;oBAC1B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM;oBAC7B,IAAI,EAAE,MAAM;oBACZ,OAAO;oBACP,OAAO;oBACP,OAAO,EAAE,IAAI;iBACC,CAAC,CAAC;gBAClB,OAAO;aACR;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE;gBACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;gBAC5B,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;gBAEvC,WAAW,EAAE,CAAC;gBAEd,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;oBAC1B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM;oBAC7B,IAAI,EAAE,MAAM;oBACZ,OAAO;oBACP,OAAO;oBACP,OAAO,EAAE,KAAK;iBACA,CAAC,CAAC;aACnB;YACD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;gBAC1B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK;gBAC5B,MAAM,EAAE,SAAS,CAAC,aAAa,CAAC,sBAAsB;gBACtD,IAAI,EAAE,MAAM;gBACZ,OAAO;aACK,CAAC,CAAC;SACjB;;;;;QAMD,OAAO,eAAe,CAAC,IAAU;YAC/B,QAAQ,IAAI;gBACV,KAAK,MAAM;oBACT,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;gBAChC,KAAK,OAAO;oBACV,OAAO;wBACL,KAAK,EAAE,SAAS;wBAChB,IAAI,EAAE,SAAS;qBAChB,CAAC;gBACJ,KAAK,MAAM;oBACT,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;aAC9B;SACF;;;IC3PH;;;UAGqB,WAAW;QAK9B,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAEtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;gBACxD,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YAED,OAAO,SAAS,CAAC;SAClB;;;;;QAMD,OAAO;YACgB,KAAK,CAAC,eAAe,CACxC,EAAE,EACF,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAC5B;YACF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;YAC1E,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;YAExE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CACpE,SAAS,CAAC,GAAG,CAAC,cAAc,CAC7B,CAAC,CAAC,CAAC,CAAC;YACL,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,aAAa;iBACvD,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;iBACvD,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAE/B,QAAQ,CAAC,YAAY,CACnB,SAAS,CAAC,GAAG,CAAC,cAAc,EAC5B,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAC9F,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAEA,YAAI,CAAC,IAAI,CAAC;kBACzD,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBACjD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAEA,YAAI,CAAC,IAAI,CAAC;kBACvD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBAC7C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE/C,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK;iBAC1C,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC;iBAClB,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;YAE7B,SAAS;iBACN,gBAAgB,CAAC,iBAAiB,WAAW,CAAC,UAAU,IAAI,CAAC;iBAC7D,OAAO,CAAC,CAAC,cAA2B,EAAE,KAAK;gBAC1C,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAEjC,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;oBACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAEA,YAAI,CAAC,IAAI,CAAC,EAClD;oBACA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBACpC;gBACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAEA,YAAI,CAAC,IAAI,CAAC,EAAE;oBAC5D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACtC;gBAED,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC7D,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBACzC,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC/D,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;gBAEjE,SAAS,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;aACpC,CAAC,CAAC;SACN;;;ICvFH;;;UAGqB,aAAa;QAKhC,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAExD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC1D,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YACD,OAAO,SAAS,CAAC;SAClB;;;;;QAMD,OAAO;YACL,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,eAAe,CACxC,GAAG,EACH,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAC7B,CAAC;YACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;YACrE,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;YACnE,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC;YAE3B,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CACpE,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAC/B,CAAC,CAAC,CAAC,CAAC;YACL,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,aAAa;iBACvD,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;iBACvD,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAE/B,QAAQ,CAAC,YAAY,CACnB,SAAS,CAAC,GAAG,CAAC,gBAAgB,EAC9B,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAClG,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAEA,YAAI,CAAC,IAAI,CAAC;kBAC3D,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBACjD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAEA,YAAI,CAAC,IAAI,CAAC;kBACzD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBAC7C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE/C,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;YAElE,SAAS;iBACN,gBAAgB,CAAC,iBAAiB,WAAW,CAAC,YAAY,IAAI,CAAC;iBAC/D,OAAO,CAAC,CAAC,cAA2B,EAAE,KAAK;gBAC1C,IAAI,KAAK,KAAK,CAAC,EAAE;oBACf,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAChD,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC,EAAE;wBACnC,cAAc,CAAC,WAAW,GAAG,GAAG,CAAC;wBACjC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBAC/C,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBACrD,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;wBAC9C,OAAO;qBACR;yBAAM;wBACL,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;wBAC1G,cAAc,CAAC,YAAY,CACzB,YAAY,EACZ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAC5B,CAAC;wBACF,OAAO;qBACR;iBACF;gBAED,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACnC,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;gBAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC;gBAEjD,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;oBACrB,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,eAAe,IAAI,CAAC,IAAI,aAAa,CAAC;yBAClE,MAAM,GAAG,CAAC,EACb;oBACA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBACpC;gBAED,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC7D,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBACzC,cAAc,CAAC,YAAY,CACzB,YAAY,EACZ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAC5B,CAAC;gBACF,cAAc,CAAC,SAAS,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;gBAE9E,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;aAC7C,CAAC,CAAC;SACN;;;IC5GH;;;UAGqB,WAAW;QAG9B,YAAY,OAAsB;YAD1B,iBAAY,GAAG,EAAE,CAAC;YAExB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAEtD,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAElC,OAAO,SAAS,CAAC;SAClB;;;;;;QAOD,OAAO;YACL,MAAM,QAAQ,IACZ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CAClD,SAAS,CAAC,GAAG,CAAC,cAAc,CAC7B,CAAC,CAAC,CAAC,CACL,CAAC;YACF,MAAM,UAAU,GAAG,CACjB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EACzD,KAAK,CAAC;YAER,QAAQ;iBACL,gBAAgB,CAAC,WAAW,CAAC;iBAC7B,OAAO,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YAE1E,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE;gBACnD,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAChC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,EACvDA,YAAI,CAAC,KAAK,CACX,EACD;oBACA,QAAQ;yBACL,aAAa,CAAC,gBAAgB,WAAW,CAAC,cAAc,GAAG,CAAC;yBAC5D,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC1C;gBAED,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAChC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,EACxDA,YAAI,CAAC,KAAK,CACX,EACD;oBACA,QAAQ;yBACL,aAAa,CAAC,gBAAgB,WAAW,CAAC,cAAc,GAAG,CAAC;yBAC5D,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC1C;gBACD,QAAQ,CAAC,aAAa,CACpB,wBAAwBA,YAAI,CAAC,KAAK,GAAG,CACtC,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB;sBACrE,UAAU,CAAC,cAAc;sBACzB,UAAU,CAAC,oBAAoB,CAAC;aACrC;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE;gBACrD,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAChC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,OAAO,CAAC,EACzDA,YAAI,CAAC,OAAO,CACb,EACD;oBACA,QAAQ;yBACL,aAAa,CAAC,gBAAgB,WAAW,CAAC,gBAAgB,GAAG,CAAC;yBAC9D,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC1C;gBAED,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAChC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,OAAO,CAAC,EAC1DA,YAAI,CAAC,OAAO,CACb,EACD;oBACA,QAAQ;yBACL,aAAa,CAAC,gBAAgB,WAAW,CAAC,gBAAgB,GAAG,CAAC;yBAC9D,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC1C;gBACD,QAAQ,CAAC,aAAa,CACpB,wBAAwBA,YAAI,CAAC,OAAO,GAAG,CACxC,CAAC,SAAS,GAAG,UAAU,CAAC,gBAAgB,CAAC;aAC3C;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE;gBACrD,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAChC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,OAAO,CAAC,EACzDA,YAAI,CAAC,OAAO,CACb,EACD;oBACA,QAAQ;yBACL,aAAa,CAAC,gBAAgB,WAAW,CAAC,gBAAgB,GAAG,CAAC;yBAC9D,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC1C;gBAED,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAChC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,OAAO,CAAC,EAC1DA,YAAI,CAAC,OAAO,CACb,EACD;oBACA,QAAQ;yBACL,aAAa,CAAC,gBAAgB,WAAW,CAAC,gBAAgB,GAAG,CAAC;yBAC9D,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC1C;gBACD,QAAQ,CAAC,aAAa,CACpB,wBAAwBA,YAAI,CAAC,OAAO,GAAG,CACxC,CAAC,SAAS,GAAG,UAAU,CAAC,gBAAgB,CAAC;aAC3C;YAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE;gBAChE,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CACnC,gBAAgB,WAAW,CAAC,cAAc,GAAG,CAC9C,CAAC;gBAEF,MAAM,CAAC,SAAS,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;gBAEzC,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAChC,UAAU,CAAC,KAAK,CAAC,UAAU,CACzB,UAAU,CAAC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,EACjCA,YAAI,CAAC,KAAK,CACX,CACF,EACD;oBACA,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC9C;qBAAM;oBACL,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACjD;aACF;YAED,QAAQ,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC;SAC7D;;;;;QAMO,KAAK;YACX,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,EAAE,EACZ,MAAM,GAAG,EAAE,EACX,MAAM,GAAG,EAAE,EACX,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,EACzC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CACtC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CACxC,EACD,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CACxC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAC1C,CAAC;YAEJ,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC5E,MAAM,cAAc,GAAgB,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC9D,cAAc,CAAC,SAAS,GAAG,GAAG,CAAC;YAE/B,MAAM,YAAY,GAAG,CAAC,KAAK,GAAG,KAAK;gBACjC,OAAO,KAAK;sBACK,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC;sBAC9B,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aAC5C,CAAC;YAEF,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE;gBACnD,IAAI,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC/C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAClD,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;gBACnE,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/C,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAErB,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAC7C,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;gBAC9D,UAAU,CAAC,YAAY,CAAC,qBAAqB,EAAEA,YAAI,CAAC,KAAK,CAAC,CAAC;gBAC3D,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAExB,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAClD,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;gBACnE,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBACjD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACxB,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC;aAC1B;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE;gBACrD,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;gBAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE;oBACnD,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;oBACzB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;oBAChC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;oBAC5B,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;iBAC3B;gBACD,IAAI,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC/C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,CACpD,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBACrE,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/C,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAErB,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAC/C,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;gBAChE,UAAU,CAAC,YAAY,CAAC,qBAAqB,EAAEA,YAAI,CAAC,OAAO,CAAC,CAAC;gBAC7D,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAExB,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,CACpD,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBACrE,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBACjD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACzB;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE;gBACrD,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;gBAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE;oBACrD,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;oBACzB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;oBAChC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;oBAC5B,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;iBAC3B;gBACD,IAAI,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC/C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,CACpD,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBACrE,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/C,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAErB,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAC/C,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;gBAChE,UAAU,CAAC,YAAY,CAAC,qBAAqB,EAAEA,YAAI,CAAC,OAAO,CAAC,CAAC;gBAC7D,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAExB,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,CACpD,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBACrE,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBACjD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACzB;YAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE;gBAChE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;gBAC1B,IAAI,UAAU,GAAG,YAAY,EAAE,CAAC;gBAChC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAErB,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAC9C,MAAM,CAAC,YAAY,CACjB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,CACnD,CAAC;gBACF,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;gBAC/D,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBACtC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBAEnD,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACpD,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAExB,UAAU,GAAG,YAAY,EAAE,CAAC;gBAC5B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACzB;YAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YAE7C,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC;SACvC;;;IChTH;;;UAGqB,WAAW;QAG9B,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAErD,KACE,IAAI,CAAC,GAAG,CAAC,EACT,CAAC;iBACA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB,GAAG,EAAE,GAAG,EAAE,CAAC,EACvE,CAAC,EAAE,EACH;gBACA,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;gBACxD,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YAED,OAAO,SAAS,CAAC;SAClB;;;;;QAMD,OAAO;YACL,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CACpE,SAAS,CAAC,GAAG,CAAC,aAAa,CAC5B,CAAC,CAAC,CAAC,CAAC;YACL,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;YAEjE,SAAS;iBACN,gBAAgB,CAAC,iBAAiB,WAAW,CAAC,UAAU,IAAI,CAAC;iBAC7D,OAAO,CAAC,CAAC,cAA2B,EAAE,KAAK;gBAC1C,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAEjC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAEA,YAAI,CAAC,KAAK,CAAC,EAAE;oBAC7D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACtC;gBAED,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC7D,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBACzC,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;gBAChE,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;qBACjE,iBAAiB;sBAChB,SAAS,CAAC,cAAc;sBACxB,SAAS,CAAC,oBAAoB,CAAC;gBACnC,SAAS,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,CAAC;aACrC,CAAC,CAAC;SACN;;;IC7DH;;;UAGqB,aAAa;QAGhC,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAEvD,IAAI,IAAI,GACN,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,KAAK,CAAC;kBACjC,CAAC;kBACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;gBAClC,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC1D,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YAED,OAAO,SAAS,CAAC;SAClB;;;;;QAMD,OAAO;YACL,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CACpE,SAAS,CAAC,GAAG,CAAC,eAAe,CAC9B,CAAC,CAAC,CAAC,CAAC;YACL,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAACA,YAAI,CAAC,KAAK,CAAC,CAAC;YAClE,IAAI,IAAI,GACN,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,KAAK,CAAC;kBACjC,CAAC;kBACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAEtC,SAAS;iBACN,gBAAgB,CAAC,iBAAiB,WAAW,CAAC,YAAY,IAAI,CAAC;iBAC/D,OAAO,CAAC,CAAC,cAA2B,EAAE,KAAK;gBAC1C,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAEnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAEA,YAAI,CAAC,OAAO,CAAC,EAAE;oBAC/D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACtC;gBAED,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC7D,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBACzC,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;gBAClE,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC,gBAAgB,CAAC;gBACtD,SAAS,CAAC,UAAU,CAAC,IAAI,EAAEA,YAAI,CAAC,OAAO,CAAC,CAAC;aAC1C,CAAC,CAAC;SACN;;;IC7DH;;;UAGqB,aAAa;QAGhC,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAEvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC1D,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YAED,OAAO,SAAS,CAAC;SAClB;;;;;QAMD,OAAO;YACL,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CACpE,SAAS,CAAC,GAAG,CAAC,eAAe,CAC9B,CAAC,CAAC,CAAC,CAAC;YACL,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAACA,YAAI,CAAC,OAAO,CAAC,CAAC;YAEpE,SAAS;iBACN,gBAAgB,CAAC,iBAAiB,WAAW,CAAC,YAAY,IAAI,CAAC;iBAC/D,OAAO,CAAC,CAAC,cAA2B,EAAE,KAAK;gBAC1C,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAEnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAEA,YAAI,CAAC,OAAO,CAAC,EAAE;oBAC/D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACtC;gBAED,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC7D,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBACzC,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;gBAClE,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC,gBAAgB,CAAC;gBACtD,SAAS,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,OAAO,CAAC,CAAC;aACvC,CAAC,CAAC;SACN;;;IC1CH;;;UAGqB,OAAO;QAc1B,YAAY,OAAsB;YAF1B,eAAU,GAAG,KAAK,CAAC;;;;;;YAikBnB,wBAAmB,GAAG,CAAC,CAAa;;gBAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAK,MAAc,CAAC,KAAK;oBAAE,OAAO;gBAElE,IACE,IAAI,CAAC,UAAU;oBACf,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;oBACvC,EAAC,MAAA,CAAC,CAAC,YAAY,EAAE,0CAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;kBACnD;oBACA,IAAI,CAAC,IAAI,EAAE,CAAC;iBACb;aACF,CAAC;;;;;;YAOM,uBAAkB,GAAG,CAAC,CAAa;gBACzC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aAC7B,CAAC;YAjlBA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;YAC7C,IAAI,CAAC,aAAa,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;YAC7C,IAAI,CAAC,cAAc,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;YACjD,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;YAC7C,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;YAC7C,IAAI,CAAC,cAAc,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;YACjD,IAAI,CAAC,cAAc,GAAG,IAAIC,aAAa,CAAC,OAAO,CAAC,CAAC;YAEjD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;SAC1B;;;;;QAMD,IAAI,MAAM;YACR,OAAO,IAAI,CAAC,OAAO,CAAC;SACrB;;;;QAKD,IAAI,SAAS;YACX,OAAO,IAAI,CAAC,UAAU,CAAC;SACxB;;;;;;;QAQD,OAAO,CAAC,IAAyC;YAC/C,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;;YAEzB,QAAQ,IAAI;gBACV,KAAKD,YAAI,CAAC,OAAO;oBACf,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;oBAC9B,MAAM;gBACR,KAAKA,YAAI,CAAC,OAAO;oBACf,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;oBAC9B,MAAM;gBACR,KAAKA,YAAI,CAAC,KAAK;oBACb,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAC5B,MAAM;gBACR,KAAKA,YAAI,CAAC,IAAI;oBACZ,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAC5B,MAAM;gBACR,KAAKA,YAAI,CAAC,KAAK;oBACb,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;oBAC7B,MAAM;gBACR,KAAKA,YAAI,CAAC,IAAI;oBACZ,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAC5B,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAC5B,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,KAAK,CAAC,CAAC;oBACzB,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,OAAO,CAAC,CAAC;oBAC3B,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,OAAO,CAAC,CAAC;oBAC3B,MAAM;gBACR,KAAK,UAAU;oBACb,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACxB,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACxB,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,KAAK,CAAC,CAAC;oBACzB,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;oBAC9B,IAAI,CAAC,qBAAqB,EAAE,CAAC;oBAC7B,MAAM;gBACR,KAAK,KAAK;oBACR,IAAI,IAAI,CAAC,QAAQ,EAAE;wBACjB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;qBACvB;oBACD,IAAI,IAAI,CAAC,QAAQ,EAAE;wBACjB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;qBAC1B;aACJ;SACF;;;;;;QAOD,IAAI;;YACF,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE;gBAC5B,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU;oBACjC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW;oBACnC,EAAC,MAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,0CAAE,KAAK,CAAA,EAC5B;;oBAEA,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC,SAAS,CACnC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAC3C,CAAC;oBACF,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE;wBACvC,IAAI,KAAK,GAAG,CAAC,CAAC;wBACd,IAAI,SAAS,GAAG,CAAC,CAAC;wBAClB,IAAI,MAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,0CAAE,QAAQ,CAAC,IAAI,CAAC,EAAE;4BAC/D,SAAS,GAAG,CAAC,CAAC,CAAC;yBAChB;wBACD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;4BAC/C,IAAI,CAAC,UAAU,CAAC,SAAS,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;4BACtC,IAAI,KAAK,GAAG,EAAE;gCAAE,MAAM;4BACtB,KAAK,EAAE,CAAC;yBACT;qBACF;oBACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;iBACrC;gBAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE;oBACtC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;iBACnE;gBAED,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACjB,IAAI,CAAC,SAAS,EAAE,CAAC;iBAClB;gBAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE;oBAC1C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAEvC,IAAI,CAAC,eAAe,GAAGE,iBAAY,CACjC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EACtB,IAAI,CAAC,MAAM,EACX;wBACE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;wBAEtD,SAAS,EACP,QAAQ,CAAC,eAAe,CAAC,GAAG,KAAK,KAAK;8BAClC,YAAY;8BACZ,cAAc;qBACrB,CACF,CAAC;iBACH;qBAAM;oBACL,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBACjD;gBAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,EAAE;oBACtD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CACtB;wBACE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CACtC,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,CAClC;qBACF,EACD,WAAW,CAAC,SAAS,CACtB,CAAC;iBACH;gBAED,IAAI,CAAC,MAAM;qBACR,gBAAgB,CAAC,eAAe,CAAC;qBACjC,OAAO,CAAC,CAAC,OAAO,KACf,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAC3D,CAAC;;gBAGJ,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE;oBAC7C,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAE1B,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAChC,SAAS,CAAC,GAAG,CAAC,cAAc,CAC7B,CAAC,CAAC,CACJ,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;iBAC1B;aACF;YAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE;gBAC1C,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;gBAC9B,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;aAC9D;YACD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SACxB;;;;;;QAOD,SAAS,CAAC,SAAkB;YAC1B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAChB,OAAO;aACR;YACD,IAAI,SAAS,EAAE;gBACb,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAClB,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAChC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,GAAG,SAAS,CAAC,CACxD,CAAC;gBACF,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,GAAG;oBAAE,OAAO;gBAClD,IAAI,CAAC,QAAQ,CAAC,gBAAgB,GAAG,GAAG,CAAC;aACtC;YAED,IAAI,CAAC,MAAM;iBACR,gBAAgB,CACf,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa,eAAe,SAAS,CAAC,GAAG,CAAC,cAAc,OAAO,SAAS,CAAC,GAAG,CAAC,aAAa,eAAe,SAAS,CAAC,GAAG,CAAC,cAAc,GAAG,CAC3J;iBACA,OAAO,CAAC,CAAC,CAAc,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;YAE3D,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YACvE,IAAI,MAAM,GAAgB,IAAI,CAAC,MAAM,CAAC,aAAa,CACjD,IAAI,cAAc,CAAC,SAAS,EAAE,CAC/B,CAAC;YAEF,QAAQ,cAAc,CAAC,SAAS;gBAC9B,KAAK,SAAS,CAAC,GAAG,CAAC,gBAAgB;oBACjC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;oBAC9B,MAAM;gBACR,KAAK,SAAS,CAAC,GAAG,CAAC,cAAc;oBAC/B,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAC5B,MAAM;gBACR,KAAK,SAAS,CAAC,GAAG,CAAC,eAAe;oBAChC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;oBAC7B,MAAM;gBACR,KAAK,SAAS,CAAC,GAAG,CAAC,aAAa;oBAC9B,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAC5B,MAAM;aACT;YAED,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAC9B,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B;QAED,qBAAqB;YACnB,MAAM,OAAO,GAAG;gBACd,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAC1B,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa,8BAA8B,CAC9D,CAAC,SAAS;aACZ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;YAEzD,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM;iBAC7D,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;iBACvD,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAE/B,QAAQ,OAAO;gBACb,KAAK,SAAS,CAAC,GAAG,CAAC,gBAAgB;oBACjC,QAAQ,CAAC,YAAY,CACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,CACpD,CAAC;oBACF,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;oBACnC,IAAI,CAAC,YAAY,CACf,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAChD,CAAC;oBACF,MAAM;gBACR,KAAK,SAAS,CAAC,GAAG,CAAC,cAAc;oBAC/B,QAAQ,CAAC,YAAY,CACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,CACnD,CAAC;oBACF,QAAQ,CAAC,YAAY,CACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CACjD,CAAC;oBACF,IAAI,CAAC,YAAY,CACf,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAC/C,CAAC;oBACF,MAAM;gBACR,KAAK,SAAS,CAAC,GAAG,CAAC,eAAe;oBAChC,QAAQ,CAAC,YAAY,CACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CACjD,CAAC;oBACF,QAAQ,CAAC,YAAY,CACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAC/C,CAAC;oBACF,IAAI,CAAC,YAAY,CACf,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAC7C,CAAC;oBACF,MAAM;gBACR,KAAK,SAAS,CAAC,GAAG,CAAC,aAAa;oBAC9B,QAAQ,CAAC,YAAY,CACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAClD,CAAC;oBACF,QAAQ,CAAC,YAAY,CACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAChD,CAAC;oBACF,IAAI,CAAC,YAAY,CACf,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAC9C,CAAC;oBACF,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC;wBAClD,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,mBAAmB;qBAC/D,CAAC,CAAC;oBACH,MAAM;aACT;YACD,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;SACrD;;;;;;QAOD,IAAI;YACF,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,OAAO;YAE7C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEjD,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;oBAC1B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI;oBAC3B,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;0BACtB,IAAI;0BACJ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU;8BAC9B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK;8BACpC,KAAK,CAAC;iBACE,CAAC,CAAC;gBAChB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;aACzB;YAED,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;SACjE;;;;QAKD,MAAM;YACJ,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;SACpD;;;;;QAMD,QAAQ;YACN,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAChE,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACzB,IAAI,CAAC,MAAM;iBACR,gBAAgB,CAAC,eAAe,CAAC;iBACjC,OAAO,CAAC,CAAC,OAAO,KACf,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAC9D,CAAC;YACJ,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;SAC1B;;;;;QAMO,YAAY;YAClB,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAE7C,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACpD,QAAQ,CAAC,MAAM,CACb,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,CAAC,OAAO,EAC3B,IAAI,CAAC,YAAY,CAAC,OAAO,EACzB,IAAI,CAAC,aAAa,CAAC,OAAO,EAC1B,IAAI,CAAC,YAAY,CAAC,OAAO,CAC1B,CAAC;YAEF,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACpD,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAChD,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAChD,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAClD,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAElD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC9C,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7C,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEjC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE;gBACzC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;aAC9C;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE;gBAChD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;aACzC;YAED,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;gBACzC,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,QAAQ,EACb;gBACA,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBACjD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,KAAK,KAAK,EAAE;oBAC7D,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;iBAC/B;gBACD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC5B,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAClC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAElC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAC1B,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAC1B,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,KAAK,QAAQ,EAAE;oBAChE,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;iBAC/B;gBACD,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;gBACxB,OAAO;aACR;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,KAAK,KAAK,EAAE;gBAC7D,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;aAC/B;YAED,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACjB,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;wBACrD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;iBAC9C;gBACD,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;aAChC;YAED,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACjB,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;wBACrD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;iBAC9C;gBACD,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;aAChC;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,KAAK,QAAQ,EAAE;gBAChE,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;aAC/B;YAED,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC5C,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7B,KAAK,CAAC,YAAY,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;YAC5C,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAE5B,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;SACzB;;;;QAKD,IAAI,QAAQ;YACV,QACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK;iBAC9C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK;oBAC9C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO;oBACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EACpD;SACH;;;;QAKD,IAAI,QAAQ;YACV,QACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ;iBACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI;oBAC7C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK;oBAC/C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EACjD;SACH;;;;;QAMD,IAAI,QAAQ;YACV,MAAM,OAAO,GAAG,EAAE,CAAC;YAEnB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;gBAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;gBACnD,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAErE,GAAG,CAAC,WAAW,CACb,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAC1D,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACnB;YACD,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;gBAC1C,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,QAAQ,EACb;gBACA,IAAI,KAAK,EAAE,IAAI,CAAC;gBAChB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;oBACvD,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC;oBACvD,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;iBAClD;qBAAM;oBACL,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC;oBACvD,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;iBAClD;gBAED,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC1D,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAEjC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;gBACrC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACnB;YACD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;gBAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;gBACnD,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAErE,GAAG,CAAC,WAAW,CACb,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAC1D,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACnB;YACD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;gBAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;gBACnD,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAErE,GAAG,CAAC,WAAW,CACb,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAC1D,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACnB;YAED,OAAO,OAAO,CAAC;SAChB;;;;;QAMD,IAAI,aAAa;YACf,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACrD,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAE3D,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC/C,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC3D,QAAQ,CAAC,WAAW,CAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAC7D,CAAC;YAEF,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC7C,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;YAE/D,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC3C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAE3E,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YAChD,OAAO,cAAc,CAAC;SACvB;;;;;;;QAQD,QAAQ,CAAC,SAAiB;YACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;gBAC3D,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,SAAS,GAAG,oBAAoB,SAAS,UAAU,CAAC;gBACxD,OAAO,GAAG,CAAC;aACZ;YACD,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACzC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YACvE,OAAO,IAAI,CAAC;SACb;;;;;;QAiCD,QAAQ;YACN,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YACnC,IAAI,UAAU;gBAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,UAAU,EAAE;gBACd,IAAI,CAAC,IAAI,EAAE,CAAC;aACb;SACF;;;IC7nBH;;;UAGqB,UAAU;QAG7B,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;;;QAQD,OAAO,CAAC,UAAoB,EAAE,WAAkB;;YAC9C,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;gBAC5D,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EACnC;gBACA,OAAO,KAAK,CAAC;aACd;YACD,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;gBAC3D,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EACnC;gBACA,OAAO,KAAK,CAAC;aACd;YACD,IACE,CAAA,MAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,kBAAkB,0CAAE,MAAM,IAAG,CAAC;gBAClE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAC5D,UAAU,CAAC,OAAO,CACnB,KAAK,CAAC,CAAC,EACR;gBACA,OAAO,KAAK,CAAC;aACd;YAED,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO;gBAC3C,UAAU,CAAC,QAAQ,CACjB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAC3C,WAAW,CACZ,EACD;gBACA,OAAO,KAAK,CAAC;aACd;YACD,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO;gBAC3C,UAAU,CAAC,OAAO,CAChB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAC3C,WAAW,CACZ,EACD;gBACA,OAAO,KAAK,CAAC;aACd;YAED,IACE,WAAW,KAAKF,YAAI,CAAC,KAAK;gBAC1B,WAAW,KAAKA,YAAI,CAAC,OAAO;gBAC5B,WAAW,KAAKA,YAAI,CAAC,OAAO,EAC5B;gBACA,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;oBAC5D,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EACnC;oBACA,OAAO,KAAK,CAAC;iBACd;gBACD,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;oBAC3D,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EACnC;oBACA,OAAO,KAAK,CAAC;iBACd;gBACD,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,EACpE;oBACA,KACE,IAAI,CAAC,GAAG,CAAC,EACT,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,qBAAqB,CAAC,MAAM,EACpE,CAAC,EAAE,EACH;wBACA,IACE,UAAU,CAAC,SAAS,CAClB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAAI,EACjE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,EAAE,CAChE;4BAED,OAAO,KAAK,CAAC;qBAChB;iBACF;aACF;YAED,OAAO,IAAI,CAAC;SACb;;;;;;;QAQO,kBAAkB,CAAC,QAAkB;YAC3C,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa;gBAClD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC;gBAE9D,OAAO,KAAK,CAAC;YACf,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACxE,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa;iBACrD,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC,CAAC;iBACtD,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,aAAa,CAAC,CAAC;SACrC;;;;;;;QAQO,iBAAiB,CAAC,QAAkB;YAC1C,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY;gBACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;gBAE7D,OAAO,IAAI,CAAC;YACd,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACxE,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY;iBACpD,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC,CAAC;iBACtD,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,aAAa,CAAC,CAAC;SACrC;;;;;;;QAQO,kBAAkB,CAAC,QAAkB;YAC3C,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa;gBAClD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC;gBAE9D,OAAO,KAAK,CAAC;YACf,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC;YACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAC3D,CAAC,CAAC,KAAK,CAAC,KAAK,aAAa,CAC3B,CAAC;SACH;;;;;;;QAQO,iBAAiB,CAAC,QAAkB;YAC1C,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY;gBACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;gBAE7D,OAAO,IAAI,CAAC;YACd,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC;YACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAC1D,CAAC,CAAC,KAAK,CAAC,KAAK,aAAa,CAC3B,CAAC;SACH;;;IC3JH;;;IAGA,MAAM,aAAa;QAkBjB,YAAY,OAAoB,EAAE,UAAmB,EAAa;YAdlE,qBAAgB,GAAG,CAAC,CAAC;YACrB,iBAAY,GAA8C,EAAE,CAAC;YAI7D,uBAAkB,GAAG,CAAC,CAAC;YAIf,gBAAW,GAAG,KAAK,CAAC;YACpB,8BAAyB,GAAG,CAAC,CAAC;YAwBtC,cAAS,GAAG,IAAI,QAAQ,EAAE,CAAC;;;;;;YA0YnB,sBAAiB,GAAG;gBAC1B,MAAM,WAAW,GAAG;oBAClB,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU;wBAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;iBACnE,CAAC;gBAEF,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBAChC,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;oBAC/B,IAAI;wBACF,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;wBACrE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE;gCAClC,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EACnD,CAAC,EACD,OAAO,CACR,CAAC;6BACH;iCAAM;gCACL,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;6BAC3C;yBACF;wBACD,WAAW,EAAE,CAAC;qBACf;oBAAC,WAAM;wBACN,OAAO,CAAC,IAAI,CACV,mFAAmF,CACpF,CAAC;qBACH;iBACF;qBAAM;oBACL,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE;wBAClC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;qBACzE;yBAAM;wBACL,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;qBACnC;oBACD,WAAW,EAAE,CAAC;iBACf;aACF,CAAC;;;;;;YAOM,sBAAiB,GAAG;gBAC1B,IAAI,CAAC,MAAM,EAAE,CAAC;aACf,CAAC;YAxcA,IAAI,CAAC,OAAO,EAAE;gBACZ,SAAS,CAAC,aAAa,CAAC,kBAAkB,CAAC;aAC5C;YACD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;YACvE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YAEnB,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,CAAC,WAAW,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;YAEjC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAEzB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;gBAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACxD;QAID,IAAI,QAAQ;YACV,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;;;;;;;;QASD,aAAa,CAAC,OAAO,EAAE,KAAK,GAAG,KAAK;YAClC,IAAI,KAAK;gBAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;;gBACvE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;SAC1B;;;;;;QAOD,MAAM;YACJ,IAAI,IAAI,CAAC,WAAW;gBAAE,OAAO;YAC7B,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;SACxB;;;;;;QAOD,IAAI;YACF,IAAI,IAAI,CAAC,WAAW;gBAAE,OAAO;YAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACtB;;;;;;QAOD,IAAI;YACF,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACtB;;;;;;QAOD,OAAO;;YACL,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;;;YAGxB,MAAA,IAAI,CAAC,MAAM,0CAAE,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAClD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACtB;;;;;;QAOD,MAAM;;YACJ,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,MAAA,IAAI,CAAC,MAAM,0CAAE,eAAe,CAAC,UAAU,CAAC,CAAC;SAC1C;;;;;;QAOD,KAAK;YACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;SACpB;;;;;;;;QASD,SAAS,CACP,UAA6B,EAC7B,SAA0D;YAE1D,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;gBAClC,UAAU,GAAG,CAAC,UAAU,CAAC,CAAC;aAC3B;YACD,IAAI,aAAa,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;gBAC7B,aAAa,GAAG,CAAC,SAAS,CAAC,CAAC;aAC7B;iBAAM;gBACL,aAAa,GAAG,SAAS,CAAC;aAC3B;YAED,IAAI,UAAU,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM,EAAE;gBAC9C,SAAS,CAAC,aAAa,CAAC,iBAAiB,CAAC;aAC3C;YAED,MAAM,WAAW,GAAG,EAAE,CAAC;YAEvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC1C,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE;oBAChD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;iBACnC;gBAED,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEpD,WAAW,CAAC,IAAI,CAAC;oBACf,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CACjC,IAAI,EACJ,SAAS,EACT,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CACxC;iBACF,CAAC,CAAC;gBAEH,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC3B,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;iBACvB;aACF;YAED,OAAO,WAAW,CAAC;SACpB;;;;;QAMD,OAAO;;YACL,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;;YAErB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACzB,MAAA,IAAI,CAAC,MAAM,0CAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACnE,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;gBAClC,MAAA,IAAI,CAAC,MAAM,0CAAE,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;aACnE;YACD,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAClE,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;SACxB;;;;;;;QAQD,aAAa,CAAC,KAAgB;;YAE5B,IAAK,KAAqB,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;gBAC1D,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAoB,CAAC;;;;gBAIxD,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBACjC,IACE,CAAC,IAAI,IAAI,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;qBACvC,CAAC,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC;oBAC/B,IAAI,CAAC,yBAAyB,GAAG,CAAC,EAClC;oBACA,IAAI,CAAC,yBAAyB,GAAG,CAAC,CAAC;oBACnC,OAAO;iBACR;gBACD,IAAI,CAAC,uBAAuB,CAAC,KAAoB,CAAC,CAAC;aACpD;YAED,IAAI,CAAC,QAAQ,CAAC,aAAa,CACzB,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,KAAY,EAAE,CAAC,CACtD,CAAC;YAEF,IAAK,MAAc,CAAC,MAAM,EAAE;gBAC1B,MAAM,CAAC,GAAI,MAAc,CAAC,MAAM,CAAC;gBACjC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aACjC;YAED,MAAM,OAAO,GAAG;;gBAEd,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;oBACjD,OAAO;iBACR;;gBAGD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ;oBAC7C,QAAQ,CAAC,KAAK,CAAC,CAAC;iBACjB,CAAC,CAAC;aACJ,CAAC;YAEF,OAAO,EAAE,CAAC;YAEV,IAAI,CAAC,yBAAyB,GAAG,CAAC,CAAC;SACpC;;;;;;QAOD,WAAW,CAAC,IAAU;YACpB,IAAI,CAAC,aAAa,CAAC;gBACjB,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM;gBAC7B,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK;aACZ,CAAC,CAAC;SACvB;QAEO,YAAY,CAAC,SAAS,EAAE,KAAK;YACnC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SAC/C;;;;;;;;QASO,kBAAkB,CACxB,MAAe,EACf,OAAgB,EAChB,cAAc,GAAG,KAAK;;YAEtB,MAAM,GAAG,eAAe,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACxD,IAAI,cAAc;gBAChB,MAAM,GAAG,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAEjE,eAAe,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAE3C,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAExE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;gBAC3C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;aAClC;;;;;YAMD,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE;gBAClC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;aAC7B;YACD,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE;gBACnC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;aAC7B;YACD,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE;gBAClC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;aAC7B;YAED,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAC9B,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,gBAAgB,CACtB,CAAC;;YAGF,IACE,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,CAAC,QAAQ,EACvE;gBACA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAC9B,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EACpE,IAAI,CAAC,kBAAkB,CACxB,CAAC;aACH;;YAGD,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE;gBAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;gBAC7C,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,IAAc;oBAC3C,OAAO,IAAI,CAAC,MAAM,CAAC;wBACjB,IAAI,EAAE,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,IAAI,GAAG,SAAS,GAAG,SAAS;wBACpE,KAAK,EACH,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,KAAK,GAAG,SAAS,GAAG,SAAS;wBACjE,GAAG,EAAE,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,IAAI,GAAG,SAAS,GAAG,SAAS;wBACnE,IAAI,EACF,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK;8BAChC,UAAU,CAAC,iBAAiB;kCAC1B,SAAS;kCACT,SAAS;8BACX,SAAS;wBACf,MAAM,EACJ,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,OAAO,GAAG,SAAS,GAAG,SAAS;wBAChE,MAAM,EACJ,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,OAAO,GAAG,SAAS,GAAG,SAAS;wBAChE,MAAM,EAAE,CAAC,UAAU,CAAC,iBAAiB;qBACtC,CAAC,CAAC;iBACJ,CAAC;aACH;YAED,IAAI,MAAA,IAAI,CAAC,QAAQ,0CAAE,SAAS,EAAE;gBAC5B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aAC9B;YAED,OAAO,MAAM,CAAC;SACf;;;;;;QAOO,gBAAgB;YAEtB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,OAAO,EAAE;gBACpC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAA4B,CAAC;aACjD;iBAAM;gBACL,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC;gBAChD,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,SAAS,EAAE;oBAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;iBACpD;qBAAM;oBACL,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;iBAClD;aACF;YAED,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEzB,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC/D,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;gBAClC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;aAC/D;YAED,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;gBACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;aAC1B;SACF;;;;;QAMO,iBAAiB;YACvB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;gBAAE,OAAO;YACzC,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC;YACjD,IAAI,KAAK,IAAI,SAAS,EAAE;gBACtB,KAAK,GAAG,mCAAmC,CAAC;aAC7C;YACD,IAAI,CAAC,OAAO;gBACV,KAAK,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC1E,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;SAChE;;;;;;QAOO,uBAAuB,CAAC,CAAc;;YAC5C;;YAEE,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB;gBACrC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;gBAC5B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;;gBAEhC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ;;;gBAEvB,MAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,0CAChB,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAC7C,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;gBAElD,OAAO;;;;YAKT,IACE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU;iBACtC,CAAC,CAAC,OAAO,KAAI,MAAA,CAAC,CAAC,IAAI,0CAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA,CAAC,EACxC;gBACA,OAAO;aACR;YAED,YAAY,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAC7C,IAAI,CAAC,yBAAyB,GAAG,UAAU,CAAC;gBAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;oBACxB,IAAI,CAAC,OAAO,CAAC,EAAE,CACb;wBACE,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAC/C,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,MAAM,CAC/B;qBACF,EACD,WAAW,CAAC,YAAY,CACzB,CAAC;iBACH;aACF,EAAE,IAAI,CAAC,QAAQ,CAAC,qCAAqC,CAAC,CAAC;SACzD;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/docs/6/options.html b/docs/6/options.html index 79d2b27a9..1ab9e635d 100644 --- a/docs/6/options.html +++ b/docs/6/options.html @@ -619,33 +619,36 @@

hooks<

inputFormat

- Accepts: (date: DateTime) => string or undefined Defaults: + Accepts: (context: TempusDominus, date: DateTime) => string or undefined + Defaults: undefined
Takes a function that turns the selected date(s) into a string. If not provided, Intl formatting will be - used based on configured components. + used based on configured components. The complete context is provided so you can access the input field itself + via context.input or any of the validation methods and so on.

Whenever the picker attempts to set the input value from a selection, it will call this function. An example that would set the value to an ISO string. Obviously, it's up to you how you want the results to be displayed.


-inputFormat:(date) => { return date.toISOString() }
+inputFormat:(context, date) => { return date.toISOString() }
 
         

inputParse

- Accepts: (value: any) => DateTime or undefined Defaults: + Accepts: (context: TempusDominus, value: any) => DateTime or undefined Defaults: undefined
Takes a function that turns the input value into a DateTime object. If not provided, the internal parsing - method will be used. + method will be used. The complete context is provided so you can access the input field itself + via context.input or any of the validation methods and so on.

Whenever the input value changes, this function will be called. The most simple example is just to attempt to parse the string.


-inputParse: (value) => { return new tempusDominus.DateTime(value) }
+inputParse: (context, value) => { return new tempusDominus.DateTime(value) }
 
         
diff --git a/docs/sitemap.xml b/docs/sitemap.xml index 1451e81e2..81e155897 100644 --- a/docs/sitemap.xml +++ b/docs/sitemap.xml @@ -1,7 +1,7 @@ https://getdatepicker.com -2021-10-07T15:59:17.122Z +2021-10-09T14:25:14.437Z 1.00 diff --git a/src/docs/partials/change-log.html b/src/docs/partials/change-log.html index 5a5afbb9b..592017f4c 100644 --- a/src/docs/partials/change-log.html +++ b/src/docs/partials/change-log.html @@ -15,6 +15,7 @@

Bug fixes

  • Fixed doc issue
  • Fixed input value for real this time. #2387
  • Fixed keepOpen
  • +
  • Fixed widget positioning with rtl #2400
  • diff --git a/src/docs/partials/examples/test.html b/src/docs/partials/examples/test.html deleted file mode 100644 index 3912031bf..000000000 --- a/src/docs/partials/examples/test.html +++ /dev/null @@ -1,1903 +0,0 @@ - -
    -

    - Version 6 removes the need for an input field, Bootstrap, jQuery and MomemntJs. -

    -

    - If you still need jQuery, check out the jQuery examples. -

    -
    -
    -

    Minimum Setup

    - -

    - All you need is an element to atach the picker to. -

    - -
    - -
    -
    -
    -           
    - <span
    -   id='icon-only'
    -   class='log-event'
    -   style='display: inline-block'
    - >
    -   <i class='fas fa-calendar fa-9x'></i>
    - </span>
    -           
    -         
    -
    -
    -
    -           
    - new tempusDominus.TempusDominus(document.getElementById('icon-only'));
    -           
    -         
    -
    -
    -
    - Events will display as you manipulate the picker. -
    -
    -
    -
    - -
    -
    -
    - - - -
    -
    -
    - -
    - -
    -

    Simple Setup

    - -

    - This is the simplest setup you can have with Bootstrap and Font Awesome 5. The picker defaults to FA 5 Solid - icons, however you can overwrite the defaults globally. -

    - -
    - -
    -
    -
    -           
    - <div
    -     class='input-group'
    -     id='datetimepicker1'
    -     data-td-target-input='nearest'
    -     data-td-target-toggle='nearest'
    - >
    -   <input
    -     id='datetimepicker1Input'
    -     type='text'
    -     class='form-control'
    -     data-td-target='#datetimepicker1'
    -   />
    -   <span
    -     class='input-group-text'
    -     data-td-target='#datetimepicker1'
    -     data-td-toggle='datetimepicker'
    -   >
    -     <span class='fas fa-calendar'></span>
    -   </span>
    - </div>
    -           
    -         
    -
    -
    -
    -           
    - new tempusDominus.TempusDominus(document.getElementById('datetimepicker1'));
    -           
    -         
    -
    -
    -
    - Events will display as you manipulate the picker. -
    -
    -
    -
    - -
    -
    -
    - -
    - - - - -
    -
    -
    -
    - -
    - -
    -

    Using Locales

    - -

    - You can provide localization options to override the tooltips as well as the day/month display. -

    -

    - You could also set this globally via tempusDominus.DefaultOptions.localization = { ... } or by - creating a variable e.g. const ru = { today:'Перейти сегодня' ... }; then provide the options as -

    -
    -         
    - new tempusDominus.TempusDominus(document.getElementById('datetimepicker2'), {
    -   localization: ru
    - }
    -         
    -     
    - -
    - -
    -
    -
    -           
    - <label for='datetimepicker2Input' class='form-label'>Russian locale</label>
    - <div
    -   class='input-group log-event'
    -   id='datetimepicker2'
    -   data-td-target-input='nearest'
    -   data-td-target-toggle='nearest'
    - >
    -   <input
    -     id='datetimepicker2Input'
    -     type='text'
    -     class='form-control'
    -     data-td-target='#datetimepicker2'
    -   />
    -   <span
    -     class='input-group-text'
    -     data-td-target='#datetimepicker2'
    -     data-td-toggle='datetimepicker'
    -   >
    -     <span class='fas fa-calendar'></span>
    -   </span>
    - </div>
    -           
    -         
    -
    -
    -
    -           
    - new tempusDominus.TempusDominus(document.getElementById('datetimepicker2'), {
    -     localization: {
    -       today: "Перейти сегодня",
    -       clear: 'Очистить выделение',
    -       close: 'Закрыть сборщик',
    -       selectMonth: 'Выбрать месяц',
    -       previousMonth: "Предыдущий месяц",
    -       nextMonth: "В следующем месяце",
    -       selectYear: 'Выбрать год',
    -       previousYear: 'Предыдущий год',
    -       nextYear: 'В следующем году',
    -       selectDecade: 'Выбрать десятилетие',
    -       previousDecade: 'Предыдущее десятилетие',
    -       nextDecade: 'Следующее десятилетие',
    -       previousCentury: 'Предыдущий век',
    -       nextCentury: 'Следующий век',
    -       pickHour: "Выберите час",
    -       incrementHour: 'Время увеличения',
    -       decrementHour: 'Уменьшить час',
    -       pickMinute: 'Выбрать минуту',
    -       incrementMinute: 'Минута приращения',
    -       decrementMinute: 'Уменьшить минуту',
    -       pickSecond: 'Выбрать второй',
    -       incrementSecond: 'Увеличение секунды',
    -       decrementSecond: 'Уменьшение секунды',
    -       toggleMeridiem: 'Переключить период',
    -       selectTime: 'Выбрать время',
    -       selectDate: 'Выбрать дату',
    -       dayViewHeaderFormat: 'long',
    -       locale: 'ru'
    -     }
    - });
    -           
    -         
    -
    -
    -
    - Events will display as you manipulate the picker. -
    -
    -
    -
    - -
    -
    -
    - -
    - - - - -
    -
    -
    -
    - -
    - -
    -

    Time Only

    - -

    - Version 6 no longer uses MomentJs so selecting the what to display is now done via the - display.components. -

    - -
    - -
    -
    -
    -           
    - <div
    -     class='input-group'
    -     id='datetimepicker3'
    -     data-td-target-input='nearest'
    -     data-td-target-toggle='nearest'
    - >
    -   <input
    -     id='datetimepicker3Input'
    -     type='text'
    -     class='form-control'
    -     data-td-target='#datetimepicker3'
    -   />
    -   <span
    -     class='input-group-text'
    -     data-td-target='#datetimepicker3'
    -     data-td-toggle='datetimepicker'
    -   >
    -     <span class='fas fa-clock'></span>
    -   </span>
    - </div>
    -           
    -         
    -
    -
    -
    -           
    - new tempusDominus.TempusDominus(document.getElementById('datetimepicker3'), {
    -   display: {
    -     viewMode: 'clock',
    -     components: {
    -       decades: false,
    -       year: false,
    -       month: false,
    -       date: false,
    -       hours: true,
    -       minutes: true,
    -       seconds: false
    -     }
    -   }
    - });
    -           
    -         
    -
    -
    -
    - Events will display as you manipulate the picker. -
    -
    -
    -
    - -
    -
    -
    - -
    - - - - -
    -
    -
    -
    - -
    - -
    -

    Date Only

    - -

    - Version 6 no longer uses MomentJs so selecting the what to display is now done via the - display.components. -

    - -
    - -
    -
    -
    -           
    - <div
    -     class='input-group'
    -     id='datetimepicker4'
    -     data-td-target-input='nearest'
    -     data-td-target-toggle='nearest'
    - >
    -   <input
    -     id='datetimepicker4Input'
    -     type='text'
    -     class='form-control'
    -     data-td-target='#datetimepicker4'
    -   />
    -   <span
    -     class='input-group-text'
    -     data-td-target='#datetimepicker4'
    -     data-td-toggle='datetimepicker'
    -   >
    -     <span class='fas fa-calendar'></span>
    -   </span>
    - </div>
    -           
    -         
    -
    -
    -
    -           
    - new tempusDominus.TempusDominus(document.getElementById('datetimepicker4'), {
    -   display: {
    -     viewMode: 'clock',
    -     components: {
    -       decades: true,
    -       year: true,
    -       month: true,
    -       date: true,
    -       hours: false,
    -       minutes: false,
    -       seconds: false,
    -     }
    -   }
    - });
    -           
    -         
    -
    -
    -
    - Events will display as you manipulate the picker. -
    -
    -
    -
    - -
    -
    -
    - -
    - - - - -
    -
    -
    -
    - -
    - -
    -

    Input Only

    - -

    - An input group and icon are not required for the picker to function, you can also simply use an input field. -

    - -
    - -
    -
    -
    -           
    - <div
    -     class='input-group'
    -     id='datetimepicker5'
    -     data-td-target-input='nearest'
    -     data-td-target-toggle='nearest'
    - >
    -   <input
    -     id='datetimepicker5Input'
    -     type='text'
    -     class='form-control'
    -     data-td-target='#datetimepicker5'
    -   />
    -   <span
    -     class='input-group-text'
    -     data-td-target='#datetimepicker5'
    -     data-td-toggle='datetimepicker'
    -   >
    -     <span class='fas fa-calendar'></span>
    -   </span>
    - </div>
    -           
    -         
    -
    -
    -
    -           
    - new tempusDominus.TempusDominus(document.getElementById('datetimepicker5'));
    -           
    -         
    -
    -
    -
    - Events will display as you manipulate the picker. -
    -
    -
    -
    - -
    -
    -
    - - -
    -
    -
    - -
    - -
    -

    Enabled/Disabled Dates

    - -

    - You can provide an array of dates to enable or dates to disable. -

    - -
    - -
    -
    -
    -           
    - <div
    -     class='input-group'
    -     id='enabledDisabled'
    -     data-td-target-input='nearest'
    -     data-td-target-toggle='nearest'
    - >
    -   <input
    -     id='enabledDisabledInput'
    -     type='text'
    -     class='form-control'
    -     data-td-target='#enabledDisabled'
    -   />
    -   <span
    -     class='input-group-text'
    -     data-td-target='#enabledDisabled'
    -     data-td-toggle='datetimepicker'
    -   >
    -     <span class='fas fa-calendar'></span>
    -   </span>
    - </div>
    -           
    -         
    -
    -
    -
    -           
    - const tomorrow = new Date();
    - tomorrow.setDate(tomorrow.getDate()+1);
    - new tempusDominus.TempusDominus(document.getElementById('enabledDisabled'), {
    -   restrictions: {
    -     disabledDates: [
    -       tomorrow,
    -       new tempusDominus.DateTime().manipulate(2, 'date')
    -     ]
    -   }
    - });
    -           
    -         
    -
    -
    -
    - Events will display as you manipulate the picker. -
    -
    -
    -
    - -
    -
    -
    - -
    - - - - -
    -
    -
    -
    - -
    - -
    -

    Linked pickers

    - -

    - You can use event listeners or the subscribe method to link two pickers together. For example, a hotel stay booking. -

    - -
    - -
    -
    -
    -           
    -<div class='row'>
    -	<div class='col-sm-6'>
    -	  <label for='linkedPickers1Input' class='form-label'>From</label>
    -	  <div
    -		class='input-group log-event'
    -		id='linkedPickers1'
    -		data-td-target-input='nearest'
    -		data-td-target-toggle='nearest'
    -	  >
    -		<input
    -		  id='linkedPickers1Input'
    -		  type='text'
    -		  class='form-control'
    -		  data-td-target='#linkedPickers1'
    -		/>
    -		<span
    -		  class='input-group-text'
    -		  data-td-target='#linkedPickers1'
    -		  data-td-toggle='datetimepicker'
    -		>
    -		   <span class='fas fa-calendar'></span>
    -		 </span>
    -	  </div>
    -	</div>
    -	<div class='col-sm-6'>
    -	  <label for='linkedPickers2Input' class='form-label'>To</label>
    -	  <div
    -		class='input-group log-event'
    -		id='linkedPickers2'
    -		data-td-target-input='nearest'
    -		data-td-target-toggle='nearest'
    -	  >
    -		<input
    -		  id='linkedPickers2Input'
    -		  type='text'
    -		  class='form-control'
    -		  data-td-target='#linkedPickers2'
    -		/>
    -		<span
    -		  class='input-group-text'
    -		  data-td-target='#linkedPickers2'
    -		  data-td-toggle='datetimepicker'
    -		>
    -		   <span class='fas fa-calendar'></span>
    -		 </span>
    -	  </div>
    -	</div>
    -</div>
    -           
    -         
    -
    -
    -
    -           
    -const linkedPicker1Element = document.getElementById('linkedPickers1');
    -const linked1 = new tempusDominus.TempusDominus(linkedPicker1Element);
    -const linked2 = new tempusDominus.TempusDominus(document.getElementById('linkedPickers2'), {
    -  useCurrent: false
    -});
    -
    -//using event listeners
    -linkedPicker1Element.addEventListener(tempusDominus.Namespace.events.change, (e) => {
    -  linked2.updateOptions({
    -    restrictions: {
    -      minDate: e.detail.date
    -    }
    -  });
    -});
    -
    -//using subscribe method
    -const subscription = linked2.subscribe(tempusDominus.Namespace.events.change, (e) => {
    -  linked1.updateOptions({
    -    restrictions: {
    -      maxDate: e.detail.date
    -    }
    -  });
    -});
    -
    -// event listener can be unsubscribed to:
    -// subscription.unsubscribe();
    -           
    -         
    -
    -
    -
    - Events will display as you manipulate the picker. -
    -
    -
    -
    - -
    -
    -
    - -
    - - - - -
    -
    -
    - -
    - - - - -
    -
    -
    -
    - -
    - -
    -

    Custom Icons

    - -

    - You can change the icons from the Font Awesome default to another icon - set like Bootstrap's Icon -

    - -
    - -
    -
    -
    -           
    - <div
    -     class='input-group'
    -     id='customIcons'
    -     data-td-target-input='nearest'
    -     data-td-target-toggle='nearest'
    - >
    -   <input
    -     id='customIconsInput'
    -     type='text'
    -     class='form-control'
    -     data-td-target='#customIcons'
    -   />
    -   <span
    -     class='input-group-text'
    -     data-td-target='#customIcons'
    -     data-td-toggle='datetimepicker'
    -   >
    -     <span class='bi bi-calendar'></span>
    -   </span>
    - </div>
    -           
    -         
    -
    -
    -
    -           
    - new tempusDominus.TempusDominus(document.getElementById('customIcons'), {
    -   display: {
    -     icons: {
    -       time: 'bi bi-clock',
    -       date: 'bi bi-calendar',
    -       up: 'bi bi-arrow-up',
    -       down: 'bi bi-arrow-down',
    -       previous: 'bi bi-chevron-left',
    -       next: 'bi bi-chevron-right',
    -       today: 'bi bi-calendar-check',
    -       clear: 'bi bi-trash',
    -       close: 'bi bi-x',
    -     },
    -     buttons: {
    -       today: true,
    -       clear: true,
    -       close: true,
    -     },
    -   }
    - });
    -           
    -         
    -
    -
    -
    - Events will display as you manipulate the picker. -
    -
    -
    -
    - -
    -
    -
    - -
    - - - - -
    -
    -
    -
    - -
    - -
    -

    View Mode

    - -

    - The view mode options allows you to show a different initial view. For example selecting a date of birth. -

    - -
    - -
    -
    -
    -           
    - <div
    -     class='input-group'
    -     id='viewMode'
    -     data-td-target-input='nearest'
    -     data-td-target-toggle='nearest'
    - >
    -   <input
    -     id='viewModeInput'
    -     type='text'
    -     class='form-control'
    -     data-td-target='#viewMode'
    -   />
    -   <span
    -     class='input-group-text'
    -     data-td-target='#viewMode'
    -     data-td-toggle='datetimepicker'
    -   >
    -     <span class='fas fa-calendar'></span>
    -   </span>
    - </div>
    -           
    -         
    -
    -
    -
    -           
    - new tempusDominus.TempusDominus(document.getElementById('viewMode'), {
    -   display: {
    -     viewMode: 'years'
    -   }
    - });
    -           
    -         
    -
    -
    -
    - Events will display as you manipulate the picker. -
    -
    -
    -
    - -
    -
    -
    - -
    - - - - -
    -
    -
    -
    - -
    -
    -

    Minimum View

    - -

    - You can set the minimum view mode by turning off lower level components. If you only want your user to select - month and year, display.components.date: false. The display.components object also - provides convenience shortcuts. For instance if you don't want any of the time picker components to be available - simple set display.components.clock: false. Do be aware that display.components.clock - must be true (default) in order to display the time components regardless of display.components.hours|minutes|seconds - is true. The same applies for display.components.calendar -

    - -
    - -
    -
    -
    -           
    - <div
    -     class='input-group'
    -     id='minViewMode'
    -     data-td-target-input='nearest'
    -     data-td-target-toggle='nearest'
    - >
    -   <input
    -     id='minViewModeInput'
    -     type='text'
    -     class='form-control'
    -     data-td-target='#minViewMode'
    -   />
    -   <span
    -     class='input-group-text'
    -     data-td-target='#minViewMode'
    -     data-td-toggle='datetimepicker'
    -   >
    -     <span class='fas fa-calendar'></span>
    -   </span>
    - </div>
    -           
    -         
    -
    -
    -
    -           
    - new tempusDominus.TempusDominus(document.getElementById('minViewMode'), {
    -   display: {
    -     components: {
    -       clock:false,
    -       date: false,
    -     }
    -   }
    - });
    -           
    -         
    -
    -
    -
    - Events will display as you manipulate the picker. -
    -
    -
    -
    - -
    -
    -
    - -
    - - - - -
    -
    -
    -
    - -
    - -
    -

    Disabled Days of the Week

    - -

    - This is the simplest setup you can have with Bootstrap and Font Awesome 5. The picker defaults to FA 5 Solid - icons, however you can overwrite the defaults globally. -

    - -
    - -
    -
    -
    -           
    - <div
    -     class='input-group'
    -     id='disabledDow'
    -     data-td-target-input='nearest'
    -     data-td-target-toggle='nearest'
    - >
    -   <input
    -     id='disabledDowInput'
    -     type='text'
    -     class='form-control'
    -     data-td-target='#disabledDow'
    -   />
    -   <span
    -     class='input-group-text'
    -     data-td-target='#disabledDow'
    -     data-td-toggle='datetimepicker'
    -   >
    -     <span class='fas fa-calendar'></span>
    -   </span>
    - </div>
    -           
    -         
    -
    -
    -
    -           
    - new tempusDominus.TempusDominus(document.getElementById('disabledDow'), {
    -   restrictions: {
    -     daysOfWeekDisabled: [0, 6]
    -   }
    - });
    -           
    -         
    -
    -
    -
    - Events will display as you manipulate the picker. -
    -
    -
    -
    - -
    -
    -
    - -
    - - - - -
    -
    -
    -
    - -
    - - -
    -

    Inline

    - -

    - You can also use the picker inline -

    - -
    - -
    -
    -
    -           
    - <div
    -   class='log-event'
    -   id='inlinePicker'
    - >
    - </div>
    -           
    -         
    -
    -
    -
    -           
    - new tempusDominus.TempusDominus(document.getElementById('inlinePicker'), {
    -   display: {
    -     inline: true
    -   }
    - });
    -           
    -         
    -
    -
    -
    - Events will display as you manipulate the picker. -
    -
    -
    -
    - -
    -
    -
    - -
    -
    -
    -
    -
    - -
    - - -
    -

    Multiple Dates

    - -

    - The picker allows for multiple dates to be selected. -

    - -
    - -
    -
    -
    -           
    - <div
    -     class='input-group'
    -     id='multipleDate'
    -     data-td-target-input='nearest'
    -     data-td-target-toggle='nearest'
    - >
    -   <input
    -     id='multipleDateInput'
    -     type='text'
    -     class='form-control'
    -     data-td-target='#multipleDate'
    -   />
    -   <span
    -     class='input-group-text'
    -     data-td-target='#multipleDate'
    -     data-td-toggle='datetimepicker'
    -   >
    -     <span class='fas fa-calendar'></span>
    -   </span>
    - </div>
    -           
    -         
    -
    -
    -
    -           
    - new tempusDominus.TempusDominus(document.getElementById('multipleDatePicker'), {
    -   multipleDates: true
    - });
    -           
    -         
    -
    -
    -
    - Events will display as you manipulate the picker. -
    -
    -
    -
    - -
    -
    -
    - -
    - - - - -
    -
    -
    -
    - -
    - -
    -

    Update options

    - -

    - You can provide a new set of options by calling updateOptions([newOptions]). This function also allows you to reset the options back to the default or merge the new options with the default instead of the existing uptions by passing true as the section parameter. -

    - -
    - -
    -
    -
    -          
    -<div
    -    class='input-group'
    -    id='settingOptions'
    -    data-td-target-input='nearest'
    -    data-td-target-toggle='nearest'
    ->
    -  <input
    -    id='settingOptionsInput'
    -    type='text'
    -    class='form-control'
    -    data-td-target='#settingOptions'
    -  />
    -  <span
    -    class='input-group-text'
    -    data-td-target='#settingOptions'
    -    data-td-toggle='datetimepicker'
    -  >
    -    <span class='fas fa-calendar'></span>
    -  </span>
    -</div>
    -          
    -        
    -
    -
    -
    -          
    -const changeOptionsButton = document.getElementById('changeOptions');
    -const settingOptionsPicker = new tempusDominus.TempusDominus(document.getElementById('settingOptions'));
    -
    -let on = false
    -changeOptionsButton.addEventListener('click', () => {
    -  settingOptionsPicker.updateOptions({
    -    restrictions: {
    -      daysOfWeekDisabled: on ? [] : [0, 6]
    -    }
    -  });
    -  on = !on;
    -  changeOptionsButton.classList.toggle('btn-primary');
    -  changeOptionsButton.classList.toggle('btn-secondary');
    -});
    -          
    -        
    -
    -
    -
    - Events will display as you manipulate the picker. -
    -
    -
    -
    - -
    -
    -
    - -
    - - - - -
    -
    -
    -
    -
    - -
    -
    -
    - -
    - - -
    - - - Examples - 07/08/2021 - 07/08/2021 - How to use Tempus Dominus datetime picker - - datepicker, javascript, open source, tempus dominus, eonasdan - \ No newline at end of file diff --git a/src/docs/partials/options.html b/src/docs/partials/options.html index aa6622709..5c213cad3 100644 --- a/src/docs/partials/options.html +++ b/src/docs/partials/options.html @@ -453,10 +453,12 @@

    inputFormat

    - Accepts: (date: DateTime) => string or undefined Defaults: + Accepts: (context: TempusDominus, date: DateTime) => string or undefined + Defaults: undefined
    Takes a function that turns the selected date(s) into a string. If not provided, Intl formatting will be - used based on configured components. + used based on configured components. The complete context is provided so you can access the input field itself + via context.input or any of the validation methods and so on.

    Whenever the picker attempts to set the input value from a selection, it will call this function. An example @@ -464,18 +466,19 @@

    inputFormat -inputFormat:(date) => { return date.toISOString() } +inputFormat:(context, date) => { return date.toISOString() }

    inputParse

    - Accepts: (value: any) => DateTime or undefined Defaults: + Accepts: (context: TempusDominus, value: any) => DateTime or undefined Defaults: undefined
    Takes a function that turns the input value into a DateTime object. If not provided, the internal parsing - method will be used. + method will be used. The complete context is provided so you can access the input field itself + via context.input or any of the validation methods and so on.

    Whenever the input value changes, this function will be called. The most simple example is just to attempt to @@ -483,7 +486,7 @@

    inputParse
     
    -inputParse: (value) => { return new tempusDominus.DateTime(value) }
    +inputParse: (context, value) => { return new tempusDominus.DateTime(value) }
     
             
    diff --git a/src/js/actions.ts b/src/js/actions.ts index d014046cd..67ba4fa40 100644 --- a/src/js/actions.ts +++ b/src/js/actions.ts @@ -173,7 +173,7 @@ export default class Actions { } break; case ActionTypes.selectSecond: - lastPicked.seconds = +currentTarget.innerText; + lastPicked.seconds = +currentTarget.dataset.value; this._context.dates._setValue( lastPicked, this._context.dates.lastPickedIndex diff --git a/src/js/dates.ts b/src/js/dates.ts index 065187040..0dc4bafc5 100644 --- a/src/js/dates.ts +++ b/src/js/dates.ts @@ -140,21 +140,29 @@ export default class Dates { oldDate = this.lastPicked; } - if (target && oldDate?.isSame(target)) return; - const updateInput = () => { if (!this._context._input) return; - let newValue = this._context._options.hooks.inputFormat(target); + let newValue = this._context._options.hooks.inputFormat( + this._context, + target + ); if (this._context._options.multipleDates) { newValue = this._dates - .map((d) => this._context._options.hooks.inputFormat(d)) + .map((d) => + this._context._options.hooks.inputFormat(this._context, d) + ) .join(this._context._options.multipleDatesSeparator); } if (this._context._input.value != newValue) this._context._input.value = newValue; }; + if (target && oldDate?.isSame(target)) { + updateInput(); + return; + } + // case of calling setValue(null) if (!target) { if ( diff --git a/src/js/display/index.ts b/src/js/display/index.ts index af2e7974f..d96b578a4 100644 --- a/src/js/display/index.ts +++ b/src/js/display/index.ts @@ -158,16 +158,12 @@ export default class Display { this._context._element, this.widget, { - modifiers: [ - /* { - name: 'offset', - options: { - offset: [2, 8], - }, - },*/ - { name: 'eventListeners', enabled: true }, - ], - placement: 'bottom-start', + modifiers: [{ name: 'eventListeners', enabled: true }], + //#2400 + placement: + document.documentElement.dir === 'rtl' + ? 'bottom-end' + : 'bottom-start', } ); } else { @@ -611,9 +607,7 @@ export default class Display { * @param e MouseEvent */ private _documentClickEvent = (e: MouseEvent) => { - if (this._context._options.display.keepOpen || - this._context._options.debug || - (window as any).debug) return; + if (this._context._options.debug || (window as any).debug) return; if ( this._isVisible && diff --git a/src/js/options.ts b/src/js/options.ts index a179a1d7b..e6da831eb 100644 --- a/src/js/options.ts +++ b/src/js/options.ts @@ -1,6 +1,7 @@ import { DateTime, DateTimeFormatOptions } from './datetime'; import Namespace from './namespace'; import { DefaultOptions } from './conts'; +import { TempusDominus } from './tempus-dominus'; export default interface Options { restrictions: { @@ -88,8 +89,8 @@ export default interface Options { promptTimeOnDateChange: boolean; promptTimeOnDateChangeTransitionDelay: number; hooks: { - inputParse: (value: any) => DateTime; - inputFormat: (date: DateTime) => string; + inputParse: (context: TempusDominus, value: any) => DateTime; + inputFormat: (context: TempusDominus, date: DateTime) => string; }; } @@ -339,7 +340,10 @@ export class OptionConverter { path += `.${key}`; copyTo[key] = processKey(key, value, providedType, defaultType); - if (typeof defaultOptionValue !== 'object' || ignoreProperties.includes(key)) { + if ( + typeof defaultOptionValue !== 'object' || + ignoreProperties.includes(key) + ) { path = path.substring(0, path.lastIndexOf(`.${key}`)); return; } diff --git a/src/js/tempus-dominus.ts b/src/js/tempus-dominus.ts index a843c05a3..c191af68f 100644 --- a/src/js/tempus-dominus.ts +++ b/src/js/tempus-dominus.ts @@ -325,7 +325,7 @@ class TempusDominus { // defaults the input format based on the components enabled if (config.hooks.inputFormat === undefined) { const components = config.display.components; - config.hooks.inputFormat = (date: DateTime) => { + config.hooks.inputFormat = (_, date: DateTime) => { return date.format({ year: components.calendar && components.year ? 'numeric' : undefined, month: @@ -359,6 +359,7 @@ class TempusDominus { * @private */ private _initializeInput() { + if (this._element.tagName == 'INPUT') { this._input = this._element as HTMLInputElement; } else { @@ -459,7 +460,7 @@ class TempusDominus { for (let i = 0; i < valueSplit.length; i++) { if (this._options.hooks.inputParse) { this.dates.set( - this._options.hooks.inputParse(valueSplit[i]), + this._options.hooks.inputParse(this, valueSplit[i]), i, 'input' ); @@ -475,7 +476,7 @@ class TempusDominus { } } else { if (this._options.hooks.inputParse) { - this.dates.set(this._options.hooks.inputParse(value), 0, 'input'); + this.dates.set(this._options.hooks.inputParse(this, value), 0, 'input'); } else { this.dates.set(value, 0, 'input'); } diff --git a/types/options.d.ts b/types/options.d.ts index 93bc53976..07ec3027e 100644 --- a/types/options.d.ts +++ b/types/options.d.ts @@ -1,4 +1,5 @@ import { DateTime } from './datetime'; +import { TempusDominus } from './tempus-dominus'; export default interface Options { restrictions: { minDate: DateTime; @@ -92,8 +93,8 @@ export default interface Options { promptTimeOnDateChange: boolean; promptTimeOnDateChangeTransitionDelay: number; hooks: { - inputParse: (value: any) => DateTime; - inputFormat: (date: DateTime) => string; + inputParse: (context: TempusDominus, value: any) => DateTime; + inputFormat: (context: TempusDominus, date: DateTime) => string; }; } export declare class OptionConverter { From 82f989bd1bb77a2086339636555b3b5b18748906 Mon Sep 17 00:00:00 2001 From: Eonasdan Date: Sat, 9 Oct 2021 11:08:17 -0400 Subject: [PATCH 7/8] merge master, nothing to see here --- dist/js/tempus-dominus.esm.js.map | 2 +- dist/js/tempus-dominus.js.map | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/js/tempus-dominus.esm.js.map b/dist/js/tempus-dominus.esm.js.map index 63b55e2ad..59d1cdfd8 100644 --- a/dist/js/tempus-dominus.esm.js.map +++ b/dist/js/tempus-dominus.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"tempus-dominus.esm.js","sources":["../../src/js/datetime.ts","../../src/js/errors.ts","../../src/js/namespace.ts","../../src/js/conts.ts","../../src/js/display/collapse.ts","../../src/js/actions.ts","../../src/js/display/calendar/date-display.ts","../../src/js/display/calendar/month-display.ts","../../src/js/options.ts","../../src/js/dates.ts","../../src/js/display/calendar/year-display.ts","../../src/js/display/calendar/decade-display.ts","../../src/js/display/time/time-display.ts","../../src/js/display/time/hour-display.ts","../../src/js/display/time/minute-display.ts","../../src/js/display/time/second-display.ts","../../src/js/display/index.ts","../../src/js/validation.ts","../../src/js/tempus-dominus.ts"],"sourcesContent":["export enum Unit {\r\n seconds = 'seconds',\r\n minutes = 'minutes',\r\n hours = 'hours',\r\n date = 'date',\r\n month = 'month',\r\n year = 'year',\r\n}\r\n\r\nexport interface DateTimeFormatOptions extends Intl.DateTimeFormatOptions {\r\n timeStyle?: 'short' | 'medium' | 'long';\r\n dateStyle?: 'short' | 'medium' | 'long' | 'full';\r\n}\r\n\r\n/**\r\n * For the most part this object behaves exactly the same way\r\n * as the native Date object with a little extra spice.\r\n */\r\nexport class DateTime extends Date {\r\n /**\r\n * Used with Intl.DateTimeFormat\r\n */\r\n locale = 'default';\r\n\r\n /**\r\n * Chainable way to set the {@link locale}\r\n * @param value\r\n */\r\n setLocale(value: string): this {\r\n this.locale = value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Converts a plain JS date object to a DateTime object.\r\n * Doing this allows access to format, etc.\r\n * @param date\r\n */\r\n static convert(date: Date): DateTime {\r\n if (!date) throw `A date is required`;\r\n return new DateTime(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate(),\r\n date.getHours(),\r\n date.getMinutes(),\r\n date.getSeconds(),\r\n date.getMilliseconds()\r\n );\r\n }\r\n\r\n /**\r\n * Native date manipulations are not pure functions. This function creates a duplicate of the DateTime object.\r\n */\r\n get clone() {\r\n return new DateTime(\r\n this.year,\r\n this.month,\r\n this.date,\r\n this.hours,\r\n this.minutes,\r\n this.seconds,\r\n this.getMilliseconds()\r\n ).setLocale(this.locale);\r\n }\r\n\r\n /**\r\n * Sets the current date to the start of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).startOf('month')\r\n * would return April 1, 2021, 12:00:00.000 AM (midnight)\r\n * @param unit\r\n */\r\n startOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(0);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(0, 0);\r\n break;\r\n case 'hours':\r\n this.setMinutes(0, 0, 0);\r\n break;\r\n case 'date':\r\n this.setHours(0, 0, 0, 0);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(0 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.startOf(Unit.date);\r\n this.setDate(1);\r\n break;\r\n case 'year':\r\n this.startOf(Unit.date);\r\n this.setMonth(0, 1);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the current date to the end of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).endOf('month')\r\n * would return April 30, 2021, 11:59:59.999 PM\r\n * @param unit\r\n */\r\n endOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(999);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(59, 999);\r\n break;\r\n case 'hours':\r\n this.setMinutes(59, 59, 999);\r\n break;\r\n case 'date':\r\n this.setHours(23, 59, 59, 999);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(6 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.month);\r\n this.setDate(0);\r\n break;\r\n case 'year':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.year);\r\n this.setDate(0);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Change a {@link unit} value. Value can be positive or negative\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).manipulate(1, 'month')\r\n * would return May 30, 2021, 11:45:32.984 AM\r\n * @param value A positive or negative number\r\n * @param unit\r\n */\r\n manipulate(value: number, unit: Unit): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n this[unit] += value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns a string format.\r\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat\r\n * for valid templates and locale objects\r\n * @param template An object. Uses browser defaults otherwise.\r\n * @param locale Can be a string or an array of strings. Uses browser defaults otherwise.\r\n */\r\n format(template: DateTimeFormatOptions, locale = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, template).format(this);\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is before this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isBefore(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() < compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() < compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is after this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isAfter(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() > compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() > compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is same this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isSame(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() === compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n compare = DateTime.convert(compare);\r\n return (\r\n this.clone.startOf(unit).valueOf() === compare.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Check if this is between two other DateTimes, optionally looking at unit scale. The match is exclusive.\r\n * @param left\r\n * @param right\r\n * @param unit.\r\n * @param inclusivity. A [ indicates inclusion of a value. A ( indicates exclusion.\r\n * If the inclusivity parameter is used, both indicators must be passed.\r\n */\r\n isBetween(\r\n left: DateTime,\r\n right: DateTime,\r\n unit?: Unit,\r\n inclusivity: '()' | '[]' | '(]' | '[)' = '()'\r\n ): boolean {\r\n if (unit && this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n const leftInclusivity = inclusivity[0] === '(';\r\n const rightInclusivity = inclusivity[1] === ')';\r\n\r\n return (\r\n ((leftInclusivity\r\n ? this.isAfter(left, unit)\r\n : !this.isBefore(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isBefore(right, unit)\r\n : !this.isAfter(right, unit))) ||\r\n ((leftInclusivity\r\n ? this.isBefore(left, unit)\r\n : !this.isAfter(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isAfter(right, unit)\r\n : !this.isBefore(right, unit)))\r\n );\r\n }\r\n\r\n /**\r\n * Returns flattened object of the date. Does not include literals\r\n * @param locale\r\n * @param template\r\n */\r\n parts(\r\n locale = this.locale,\r\n template: any = { dateStyle: 'full', timeStyle: 'long' }\r\n ) {\r\n const parts = {};\r\n new Intl.DateTimeFormat(locale, template)\r\n .formatToParts(this)\r\n .filter((x) => x.type !== 'literal')\r\n .forEach((x) => (parts[x.type] = x.value));\r\n return parts;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getSeconds()\r\n */\r\n get seconds(): number {\r\n return this.getSeconds();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setSeconds()\r\n */\r\n set seconds(value: number) {\r\n this.setSeconds(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get secondsFormatted(): string {\r\n return this.format({ second: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMinutes()\r\n */\r\n get minutes(): number {\r\n return this.getMinutes();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMinutes()\r\n */\r\n set minutes(value: number) {\r\n this.setMinutes(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get minutesFormatted(): string {\r\n return this.format({ minute: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getHours()\r\n */\r\n get hours(): number {\r\n return this.getHours();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setHours()\r\n */\r\n set hours(value: number) {\r\n this.setHours(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get hoursFormatted(): string {\r\n return this.format({ hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Returns two digit hours but in twelve hour mode e.g. 13 -> 1\r\n */\r\n get twelveHoursFormatted(): string {\r\n return this.format({ hour12: true, hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Get the meridiem of the date. E.g. AM or PM.\r\n * If the {@link locale} provides a \"dayPeriod\" then this will be returned,\r\n * otherwise it will return AM or PM.\r\n * @param locale\r\n */\r\n meridiem(locale: string = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, {\r\n hour: 'numeric',\r\n hour12: true,\r\n } as any)\r\n .formatToParts(this)\r\n .find((p) => p.type === 'dayPeriod')?.value;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDate()\r\n */\r\n get date(): number {\r\n return this.getDate();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setDate()\r\n */\r\n set date(value: number) {\r\n this.setDate(value);\r\n }\r\n\r\n /**\r\n * Return two digit date\r\n */\r\n get dateFormatted(): string {\r\n return this.date < 10 ? `0${this.date}` : `${this.date}`;\r\n }\r\n\r\n // https://github.com/you-dont-need/You-Dont-Need-Momentjs#week-of-year\r\n /**\r\n * Gets the week of the year\r\n */\r\n get week(): number {\r\n const startOfYear = new Date(this.year, 0, 1);\r\n startOfYear.setDate(\r\n startOfYear.getDate() + (1 - (startOfYear.getDay() % 7))\r\n );\r\n return Math.round((this.valueOf() - startOfYear.valueOf()) / 604800000) + 1;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDay()\r\n */\r\n get weekDay(): number {\r\n return this.getDay();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMonth()\r\n */\r\n get month(): number {\r\n return this.getMonth();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMonth()\r\n */\r\n set month(value: number) {\r\n this.setMonth(value);\r\n }\r\n\r\n /**\r\n * Return two digit, human expected month. E.g. January = 1, December = 12\r\n */\r\n get monthFormatted(): string {\r\n return this.month + 1 < 10 ? `0${this.month}` : `${this.month}`;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getFullYear()\r\n */\r\n get year(): number {\r\n return this.getFullYear();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setFullYear()\r\n */\r\n set year(value: number) {\r\n this.setFullYear(value);\r\n }\r\n}\r\n","import Namespace from './namespace';\n\nexport class TdError extends Error {\n code: number;\n}\n\nexport class ErrorMessages {\n private base = 'TD:';\n\n //#region out to console\n\n /**\n * Throws an error indicating that a key in the options object is invalid.\n * @param optionName\n */\n unexpectedOption(optionName: string) {\n const error = new TdError(\n `${this.base} Unexpected option: ${optionName} does not match a known option.`\n );\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error indicating that one more keys in the options object is invalid.\n * @param optionName\n */\n unexpectedOptions(optionName: string[]) {\n const error = new TdError(`${this.base}: ${optionName.join(', ')}`);\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error when an option is provide an unsupported value.\n * For example a value of 'cheese' for toolbarPlacement which only supports\n * 'top', 'bottom', 'default'.\n * @param optionName\n * @param badValue\n * @param validOptions\n */\n unexpectedOptionValue(\n optionName: string,\n badValue: string,\n validOptions: string[]\n ) {\n const error = new TdError(\n `${\n this.base\n } Unexpected option value: ${optionName} does not accept a value of \"${badValue}\". Valid values are: ${validOptions.join(\n ', '\n )}`\n );\n error.code = 2;\n throw error;\n }\n\n /**\n * Throws an error when an option value is the wrong type.\n * For example a string value was provided to multipleDates which only\n * supports true or false.\n * @param optionName\n * @param badType\n * @param expectedType\n */\n typeMismatch(optionName: string, badType: string, expectedType: string) {\n const error = new TdError(\n `${this.base} Mismatch types: ${optionName} has a type of ${badType} instead of the required ${expectedType}`\n );\n error.code = 3;\n throw error;\n }\n\n /**\n * Throws an error when an option value is outside of the expected range.\n * For example restrictions.daysOfWeekDisabled excepts a value between 0 and 6.\n * @param optionName\n * @param lower\n * @param upper\n */\n numbersOutOfRage(optionName: string, lower: number, upper: number) {\n const error = new TdError(\n `${this.base} ${optionName} expected an array of number between ${lower} and ${upper}.`\n );\n error.code = 4;\n throw error;\n }\n\n /**\n * Throws an error when a value for a date options couldn't be parsed. Either\n * the option was an invalide string or an invalid Date object.\n * @param optionName\n * @param date\n * @param soft If true, logs a warning instead of an error.\n */\n failedToParseDate(optionName: string, date: any, soft = false) {\n const error = new TdError(\n `${this.base} Could not correctly parse \"${date}\" to a date for ${optionName}.`\n );\n error.code = 5;\n if (!soft) throw error;\n console.warn(error);\n }\n\n /**\n * Throws when an element to attach to was not provided in the constructor.\n */\n mustProvideElement() {\n const error = new TdError(`${this.base} No element was provided.`);\n error.code = 6;\n throw error;\n }\n\n /**\n * Throws if providing an array for the events to subscribe method doesn't have\n * the same number of callbacks. E.g., subscribe([1,2], [1])\n */\n subscribeMismatch() {\n const error = new TdError(\n `${this.base} The subscribed events does not match the number of callbacks`\n );\n error.code = 7;\n throw error;\n }\n\n /**\n * Throws if the configuration has conflicting rules e.g. minDate is after maxDate\n */\n conflictingConfiguration(message?: string) {\n const error = new TdError(\n `${this.base} A configuration value conflicts with another rule. ${message}`\n );\n error.code = 8;\n throw error;\n }\n\n /**\n * Logs a warning if a date option value is provided as a string, instead of\n * a date/datetime object.\n */\n dateString() {\n console.warn(\n `${this.base} Using a string for date options is not recommended unless you specify an ISO string.`\n );\n }\n\n //#endregion\n\n //#region used with notify.error\n\n /**\n * Used with an Error Event type if the user selects a date that\n * fails restriction validation.\n */\n failedToSetInvalidDate = 'Failed to set invalid date';\n\n /**\n * Used with an Error Event type when a user changes the value of the\n * input field directly, and does not provide a valid date.\n */\n failedToParseInput = 'Failed parse input field';\n\n //#endregion\n}\n","import { ErrorMessages } from './errors';\n// this is not the way I want this to stay but nested classes seemed to blown up once its compiled.\nconst NAME = 'tempus-dominus',\n version = '6.0.0-alpha1',\n dataKey = 'td';\n\n/**\n * Events\n */\nclass Events {\n key = `.${dataKey}`;\n\n /**\n * Change event. Fired when the user selects a date.\n * See also EventTypes.ChangeEvent\n */\n change = `change${this.key}`;\n\n /**\n * Emit when the view changes for example from month view to the year view.\n * See also EventTypes.ViewUpdateEvent\n */\n update = `update${this.key}`;\n\n /**\n * Emits when a selected date or value from the input field fails to meet the provided validation rules.\n * See also EventTypes.FailEvent\n */\n error = `error${this.key}`;\n\n /**\n * Show event\n * @event Events#show\n */\n show = `show${this.key}`;\n\n /**\n * Hide event\n * @event Events#hide\n */\n hide = `hide${this.key}`;\n\n // blur and focus are used in the jQuery provider but are otherwise unused.\n // keyup/down will be used later for keybinding options\n\n blur = `blur${this.key}`;\n focus = `focus${this.key}`;\n keyup = `keyup${this.key}`;\n keydown = `keydown${this.key}`;\n}\n\nclass Css {\n /**\n * The outer element for the widget.\n */\n widget = `${NAME}-widget`;\n\n /**\n * Hold the previous, next and switcher divs\n */\n calendarHeader = 'calendar-header';\n\n /**\n * The element for the action to change the calendar view. E.g. month -> year.\n */\n switch = 'picker-switch';\n\n /**\n * The elements for all of the toolbar options\n */\n toolbar = 'toolbar';\n\n /**\n * Disables the hover and rounding affect.\n */\n noHighlight = 'no-highlight';\n\n /**\n * Applied to the widget element when the side by side option is in use.\n */\n sideBySide = 'timepicker-sbs';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> July\n */\n previous = 'previous';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> September\n */\n next = 'next';\n\n /**\n * Applied to any action that would violate any restriction options. ALso applied\n * to an input field if the disabled function is called.\n */\n disabled = 'disabled';\n\n /**\n * Applied to any date that is less than requested view,\n * e.g. the last day of the previous month.\n */\n old = 'old';\n\n /**\n * Applied to any date that is greater than of requested view,\n * e.g. the last day of the previous month.\n */\n new = 'new';\n\n /**\n * Applied to any date that is currently selected.\n */\n active = 'active';\n\n //#region date element\n\n /**\n * The outer most element for the calendar view.\n */\n dateContainer = 'date-container';\n\n /**\n * The outer most element for the decades view.\n */\n decadesContainer = `${this.dateContainer}-decades`;\n\n /**\n * Applied to elements within the decades container, e.g. 2020, 2030\n */\n decade = 'decade';\n\n /**\n * The outer most element for the years view.\n */\n yearsContainer = `${this.dateContainer}-years`;\n\n /**\n * Applied to elements within the years container, e.g. 2021, 2021\n */\n year = 'year';\n\n /**\n * The outer most element for the month view.\n */\n monthsContainer = `${this.dateContainer}-months`;\n\n /**\n * Applied to elements within the month container, e.g. January, February\n */\n month = 'month';\n\n /**\n * The outer most element for the calendar view.\n */\n daysContainer = `${this.dateContainer}-days`;\n\n /**\n * Applied to elements within the day container, e.g. 1, 2..31\n */\n day = 'day';\n\n /**\n * If display.calendarWeeks is enabled, a column displaying the week of year\n * is shown. This class is applied to each cell in that column.\n */\n calendarWeeks = 'cw';\n\n /**\n * Applied to the first row of the calendar view, e.g. Sunday, Monday\n */\n dayOfTheWeek = 'dow';\n\n /**\n * Applied to the current date on the calendar view.\n */\n today = 'today';\n\n /**\n * Applied to the locale's weekend dates on the calendar view, e.g. Sunday, Saturday\n */\n weekend = 'weekend';\n\n //#endregion\n\n //#region time element\n\n /**\n * The outer most element for all time related elements.\n */\n timeContainer = 'time-container';\n\n /**\n * Applied the separator columns between time elements, e.g. hour *:* minute *:* second\n */\n separator = 'separator';\n\n /**\n * The outer most element for the clock view.\n */\n clockContainer = `${this.timeContainer}-clock`;\n\n /**\n * The outer most element for the hours selection view.\n */\n hourContainer = `${this.timeContainer}-hour`;\n\n /**\n * The outer most element for the minutes selection view.\n */\n minuteContainer = `${this.timeContainer}-minute`;\n\n /**\n * The outer most element for the seconds selection view.\n */\n secondContainer = `${this.timeContainer}-second`;\n\n /**\n * Applied to each element in the hours selection view.\n */\n hour = 'hour';\n\n /**\n * Applied to each element in the minutes selection view.\n */\n minute = 'minute';\n\n /**\n * Applied to each element in the seconds selection view.\n */\n second = 'second';\n\n /**\n * Applied AM/PM toggle button.\n */\n toggleMeridiem = 'toggleMeridiem';\n\n //#endregion\n\n //#region collapse\n\n /**\n * Applied the element of the current view mode, e.g. calendar or clock.\n */\n show = 'show';\n\n /**\n * Applied to the currently showing view mode during a transition\n * between calendar and clock views\n */\n collapsing = 'td-collapsing';\n\n /**\n * Applied to the currently hidden view mode.\n */\n collapse = 'td-collapse';\n\n //#endregion\n\n /**\n * Applied to the widget when the option display.inline is enabled.\n */\n inline = 'inline';\n}\n\nexport default class Namespace {\n static NAME = NAME;\n // noinspection JSUnusedGlobalSymbols\n static version = version;\n static dataKey = dataKey;\n\n static events = new Events();\n\n static css = new Css();\n\n static errorMessages = new ErrorMessages();\n}\n","import { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options from './options';\n\nconst DefaultOptions: Options = {\n restrictions: {\n minDate: undefined,\n maxDate: undefined,\n disabledDates: [],\n enabledDates: [],\n daysOfWeekDisabled: [],\n disabledTimeIntervals: [],\n disabledHours: [],\n enabledHours: [],\n },\n display: {\n icons: {\n type: 'icons',\n time: 'fas fa-clock',\n date: 'fas fa-calendar',\n up: 'fas fa-arrow-up',\n down: 'fas fa-arrow-down',\n previous: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n today: 'fas fa-calendar-check',\n clear: 'fas fa-trash',\n close: 'fas fa-times',\n },\n sideBySide: false,\n calendarWeeks: false,\n viewMode: 'calendar',\n toolbarPlacement: 'bottom',\n keepOpen: false,\n buttons: {\n today: false,\n clear: false,\n close: false,\n },\n components: {\n calendar: true,\n date: true,\n month: true,\n year: true,\n decades: true,\n clock: true,\n hours: true,\n minutes: true,\n seconds: false,\n useTwentyfourHour: false,\n },\n inline: false,\n },\n stepping: 1,\n useCurrent: true,\n defaultDate: undefined,\n localization: {\n today: 'Go to today',\n clear: 'Clear selection',\n close: 'Close the picker',\n selectMonth: 'Select Month',\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n selectYear: 'Select Year',\n previousYear: 'Previous Year',\n nextYear: 'Next Year',\n selectDecade: 'Select Decade',\n previousDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n previousCentury: 'Previous Century',\n nextCentury: 'Next Century',\n pickHour: 'Pick Hour',\n incrementHour: 'Increment Hour',\n decrementHour: 'Decrement Hour',\n pickMinute: 'Pick Minute',\n incrementMinute: 'Increment Minute',\n decrementMinute: 'Decrement Minute',\n pickSecond: 'Pick Second',\n incrementSecond: 'Increment Second',\n decrementSecond: 'Decrement Second',\n toggleMeridiem: 'Toggle Meridiem',\n selectTime: 'Select Time',\n selectDate: 'Select Date',\n dayViewHeaderFormat: 'long',\n locale: 'default',\n },\n keepInvalid: false,\n debug: false,\n allowInputToggle: false,\n viewDate: new DateTime(),\n multipleDates: false,\n multipleDatesSeparator: '; ',\n promptTimeOnDateChange: false,\n promptTimeOnDateChangeTransitionDelay: 200,\n hooks: {\n inputParse: undefined,\n inputFormat: undefined,\n },\n};\n\nconst DatePickerModes: {\n name: string;\n className: string;\n unit: Unit;\n step: number;\n}[] = [\n {\n name: 'calendar',\n className: Namespace.css.daysContainer,\n unit: Unit.month,\n step: 1,\n },\n {\n name: 'months',\n className: Namespace.css.monthsContainer,\n unit: Unit.year,\n step: 1,\n },\n {\n name: 'years',\n className: Namespace.css.yearsContainer,\n unit: Unit.year,\n step: 10,\n },\n {\n name: 'decades',\n className: Namespace.css.decadesContainer,\n unit: Unit.year,\n step: 100,\n },\n];\n\nexport { DefaultOptions, DatePickerModes, Namespace };\n","import Namespace from '../namespace';\n\n/**\n * Provides a collapse functionality to the view changes\n */\nexport default class Collapse {\n private timeOut;\n\n /**\n * Flips the show/hide state of `target`\n * @param target html element to affect.\n */\n toggle(target: HTMLElement, callback = undefined) {\n if (target.classList.contains(Namespace.css.show)) {\n this.hide(target, callback);\n } else {\n this.show(target, callback);\n }\n }\n\n /**\n * If `target` is not already showing, then show after the animation.\n * @param target\n */\n show(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse, Namespace.css.show);\n target.style.height = '';\n this.timeOut = null;\n if (callback) callback();\n };\n\n target.style.height = '0';\n target.classList.remove(Namespace.css.collapse);\n target.classList.add(Namespace.css.collapsing);\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n target.style.height = `${target.scrollHeight}px`;\n }\n\n /**\n * If `target` is not already hidden, then hide after the animation.\n * @param target HTML Element\n */\n hide(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n !target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse);\n this.timeOut = null;\n };\n\n target.style.height = `${target.getBoundingClientRect()['height']}px`;\n\n const reflow = (element) => element.offsetHeight;\n\n reflow(target);\n\n target.classList.remove(Namespace.css.collapse, Namespace.css.show);\n target.classList.add(Namespace.css.collapsing);\n target.style.height = '';\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n }\n\n /**\n * Gets the transition duration from the `element` by getting css properties\n * `transition-duration` and `transition-delay`\n * @param element HTML Element\n */\n private getTransitionDurationFromElement = (element: HTMLElement) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } =\n window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) +\n Number.parseFloat(transitionDelay)) *\n 1000\n );\n };\n}\n","import { DatePickerModes } from './conts.js';\nimport { DateTime, Unit } from './datetime';\nimport { TempusDominus } from './tempus-dominus';\nimport Collapse from './display/collapse';\nimport Namespace from './namespace';\n\n/**\n *\n */\nexport default class Actions {\n private _context: TempusDominus;\n private collapse: Collapse;\n\n constructor(context: TempusDominus) {\n this._context = context;\n this.collapse = new Collapse();\n }\n\n /**\n * Performs the selected `action`. See ActionTypes\n * @param e This is normally a click event\n * @param action If not provided, then look for a [data-action]\n */\n do(e: any, action?: ActionTypes) {\n const currentTarget = e.currentTarget;\n if (currentTarget.classList.contains(Namespace.css.disabled)) return false;\n action = action || currentTarget.dataset.action;\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n /**\n * Common function to manipulate {@link lastPicked} by `unit`\n * @param unit\n * @param value Value to change by\n */\n const manipulateAndSet = (unit: Unit, value = 1) => {\n const newDate = lastPicked.manipulate(value, unit);\n if (this._context._validation.isValid(newDate, unit)) {\n this._context.dates._setValue(\n newDate,\n this._context.dates.lastPickedIndex\n );\n }\n };\n\n switch (action) {\n case ActionTypes.next:\n case ActionTypes.previous:\n const { unit, step } = DatePickerModes[this._context._currentViewMode];\n if (action === ActionTypes.next)\n this._context._viewDate.manipulate(step, unit);\n else this._context._viewDate.manipulate(step * -1, unit);\n this._context._viewUpdate(unit);\n\n this._context._display._showMode();\n break;\n case ActionTypes.pickerSwitch:\n this._context._display._showMode(1);\n this._context._viewUpdate(\n DatePickerModes[this._context._currentViewMode].unit\n );\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.selectMonth:\n case ActionTypes.selectYear:\n case ActionTypes.selectDecade:\n const value = +currentTarget.dataset.value;\n switch (action) {\n case ActionTypes.selectMonth:\n this._context._viewDate.month = value;\n this._context._viewUpdate(Unit.month);\n break;\n case ActionTypes.selectYear:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n case ActionTypes.selectDecade:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n }\n\n if (\n this._context._currentViewMode === this._context._minViewModeNumber\n ) {\n this._context.dates._setValue(\n this._context._viewDate,\n this._context.dates.lastPickedIndex\n );\n if (!this._context._options.display.inline) {\n this._context._display.hide();\n }\n } else {\n this._context._display._showMode(-1);\n }\n break;\n case ActionTypes.selectDay:\n const day = this._context._viewDate.clone;\n if (currentTarget.classList.contains(Namespace.css.old)) {\n day.manipulate(-1, Unit.month);\n }\n if (currentTarget.classList.contains(Namespace.css.new)) {\n day.manipulate(1, Unit.month);\n }\n\n day.date = +currentTarget.dataset.day;\n let index = 0;\n if (this._context._options.multipleDates) {\n index = this._context.dates.pickedIndex(day, Unit.date);\n if (index !== -1) {\n this._context.dates._setValue(null, index); //deselect multi-date\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex + 1\n );\n }\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex\n );\n }\n\n if (\n !this._context._display._hasTime &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline &&\n !this._context._options.multipleDates\n ) {\n this._context._display.hide();\n }\n break;\n case ActionTypes.selectHour:\n let hour = +currentTarget.dataset.value;\n if (\n lastPicked.hours >= 12 &&\n !this._context._options.display.components.useTwentyfourHour\n )\n hour += 12;\n lastPicked.hours = hour;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.minutes &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectMinute:\n lastPicked.minutes = +currentTarget.dataset.value;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.seconds &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectSecond:\n lastPicked.seconds = +currentTarget.dataset.value;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.incrementHours:\n manipulateAndSet(Unit.hours);\n break;\n case ActionTypes.incrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping);\n break;\n case ActionTypes.incrementSeconds:\n manipulateAndSet(Unit.seconds);\n break;\n case ActionTypes.decrementHours:\n manipulateAndSet(Unit.hours, -1);\n break;\n case ActionTypes.decrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping * -1);\n break;\n case ActionTypes.decrementSeconds:\n manipulateAndSet(Unit.seconds, -1);\n break;\n case ActionTypes.toggleMeridiem:\n manipulateAndSet(\n Unit.hours,\n this._context.dates.lastPicked.hours >= 12 ? -12 : 12\n );\n break;\n case ActionTypes.togglePicker:\n this._context._display.widget\n .querySelectorAll(\n `.${Namespace.css.dateContainer}, .${Namespace.css.timeContainer}`\n )\n .forEach((htmlElement: HTMLElement) =>\n this.collapse.toggle(htmlElement)\n );\n if (\n currentTarget.getAttribute('title') ===\n this._context._options.localization.selectDate\n ) {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectTime\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.time\n ).outerHTML;\n\n this._context._display._updateCalendarHeader();\n } else {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectDate\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.date\n ).outerHTML;\n this.do(e, ActionTypes.showClock);\n this._context._display._update('clock');\n }\n break;\n case ActionTypes.showClock:\n case ActionTypes.showHours:\n case ActionTypes.showMinutes:\n case ActionTypes.showSeconds:\n this._context._display.widget\n .querySelectorAll(`.${Namespace.css.timeContainer} > div`)\n .forEach(\n (htmlElement: HTMLElement) => (htmlElement.style.display = 'none')\n );\n\n let classToUse = '';\n switch (action) {\n case ActionTypes.showClock:\n classToUse = Namespace.css.clockContainer;\n this._context._display._update('clock');\n break;\n case ActionTypes.showHours:\n classToUse = Namespace.css.hourContainer;\n this._context._display._update(Unit.hours);\n break;\n case ActionTypes.showMinutes:\n classToUse = Namespace.css.minuteContainer;\n this._context._display._update(Unit.minutes);\n break;\n case ActionTypes.showSeconds:\n classToUse = Namespace.css.secondContainer;\n this._context._display._update(Unit.seconds);\n break;\n }\n\n ((\n this._context._display.widget.getElementsByClassName(classToUse)[0]\n )).style.display = 'grid';\n break;\n case ActionTypes.clear:\n this._context.dates._setValue(null);\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.close:\n this._context._display.hide();\n break;\n case ActionTypes.today:\n const today = new DateTime().setLocale(\n this._context._options.localization.locale\n );\n this._context._viewDate = today;\n if (this._context._validation.isValid(today, Unit.date))\n this._context.dates._setValue(\n today,\n this._context.dates.lastPickedIndex\n );\n break;\n }\n }\n}\n\nexport enum ActionTypes {\n next = 'next',\n previous = 'previous',\n pickerSwitch = 'pickerSwitch',\n selectMonth = 'selectMonth',\n selectYear = 'selectYear',\n selectDecade = 'selectDecade',\n selectDay = 'selectDay',\n selectHour = 'selectHour',\n selectMinute = 'selectMinute',\n selectSecond = 'selectSecond',\n incrementHours = 'incrementHours',\n incrementMinutes = 'incrementMinutes',\n incrementSeconds = 'incrementSeconds',\n decrementHours = 'decrementHours',\n decrementMinutes = 'decrementMinutes',\n decrementSeconds = 'decrementSeconds',\n toggleMeridiem = 'toggleMeridiem',\n togglePicker = 'togglePicker',\n showClock = 'showClock',\n showHours = 'showHours',\n showMinutes = 'showMinutes',\n showSeconds = 'showSeconds',\n clear = 'clear',\n close = 'close',\n today = 'today',\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `date`\r\n */\r\nexport default class DateDisplay {\r\n private _context: TempusDominus;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.daysContainer);\r\n\r\n container.append(...this._daysOfTheWeek());\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(Namespace.css.calendarWeeks, Namespace.css.noHighlight);\r\n container.appendChild(div);\r\n }\r\n\r\n for (let i = 0; i < 42; i++) {\r\n if (i !== 0 && i % 7 === 0) {\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n container.appendChild(div);\r\n }\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDay);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update(): void {\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.daysContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.daysContainer,\r\n this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n })\r\n );\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(-1, Unit.month),\r\n Unit.month\r\n )\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(1, Unit.month),\r\n Unit.month\r\n )\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.month)\r\n .startOf('weekDay')\r\n .manipulate(12, Unit.hours);\r\n\r\n container\r\n .querySelectorAll(\r\n `[data-action=\"${ActionTypes.selectDay}\"], .${Namespace.css.calendarWeeks}`\r\n )\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (\r\n this._context._options.display.calendarWeeks &&\r\n containerClone.classList.contains(Namespace.css.calendarWeeks)\r\n ) {\r\n if (containerClone.innerText === '#') return;\r\n containerClone.innerText = `${innerDate.week}`;\r\n return;\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.day);\r\n\r\n if (innerDate.isBefore(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.old);\r\n }\r\n if (innerDate.isAfter(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.new);\r\n }\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.date)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.date)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n if (innerDate.isSame(new DateTime(), Unit.date)) {\r\n classes.push(Namespace.css.today);\r\n }\r\n if (innerDate.weekDay === 0 || innerDate.weekDay === 6) {\r\n classes.push(Namespace.css.weekend);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`\r\n );\r\n containerClone.setAttribute(\r\n 'data-day',\r\n `${innerDate.date}`\r\n );\r\n containerClone.innerText = innerDate.format({ day: \"numeric\" });\r\n innerDate.manipulate(1, Unit.date);\r\n });\r\n }\r\n\r\n /***\r\n * Generates an html row that contains the days of the week.\r\n * @private\r\n */\r\n private _daysOfTheWeek(): HTMLElement[] {\r\n let innerDate = this._context._viewDate.clone\r\n .startOf('weekDay')\r\n .startOf(Unit.date);\r\n const row = [];\r\n document.createElement('div');\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = '#';\r\n row.push(htmlDivElement);\r\n }\r\n\r\n for (let i = 0; i < 7; i++) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.dayOfTheWeek,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = innerDate.format({ weekday: 'short' });\r\n innerDate.manipulate(1, Unit.date);\r\n row.push(htmlDivElement);\r\n }\r\n\r\n return row;\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `month`\n */\nexport default class MonthDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.monthsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMonth);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.monthsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.monthsContainer,\n this._context._viewDate.format({ year: 'numeric' })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.year),\n Unit.year\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.year),\n Unit.year\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone.startOf(Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMonth}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.month);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.month)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.month)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${index}`);\n containerClone.innerText = `${innerDate.format({ month: 'short' })}`;\n innerDate.manipulate(1, Unit.month);\n });\n }\n}\n","import { DateTime, DateTimeFormatOptions } from './datetime';\nimport Namespace from './namespace';\nimport { DefaultOptions } from './conts';\nimport { TempusDominus } from './tempus-dominus';\n\nexport default interface Options {\n restrictions: {\n minDate: DateTime;\n maxDate: DateTime;\n enabledDates: DateTime[];\n disabledDates: DateTime[];\n enabledHours: number[];\n disabledHours: number[];\n disabledTimeIntervals: { from: DateTime; to: DateTime }[];\n daysOfWeekDisabled: number[];\n };\n display: {\n toolbarPlacement: 'top' | 'bottom';\n components: {\n calendar: boolean;\n date: boolean;\n month: boolean;\n year: boolean;\n decades: boolean;\n clock: boolean;\n hours: boolean;\n minutes: boolean;\n seconds: boolean;\n useTwentyfourHour: boolean;\n };\n buttons: { today: boolean; close: boolean; clear: boolean };\n calendarWeeks: boolean;\n icons: {\n date: string;\n next: string;\n previous: string;\n today: string;\n clear: string;\n time: string;\n up: string;\n type: 'icons' | 'sprites';\n down: string;\n close: string;\n };\n viewMode: 'clock' | 'calendar' | 'months' | 'years' | 'decades';\n sideBySide: boolean;\n inline: boolean;\n keepOpen: boolean;\n };\n stepping: number;\n useCurrent: boolean;\n defaultDate: DateTime;\n localization: {\n nextMonth: string;\n pickHour: string;\n incrementSecond: string;\n nextDecade: string;\n selectDecade: string;\n dayViewHeaderFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n decrementHour: string;\n selectDate: string;\n incrementHour: string;\n previousCentury: string;\n decrementSecond: string;\n today: string;\n previousMonth: string;\n selectYear: string;\n pickSecond: string;\n nextCentury: string;\n close: string;\n incrementMinute: string;\n selectTime: string;\n clear: string;\n toggleMeridiem: string;\n selectMonth: string;\n decrementMinute: string;\n pickMinute: string;\n nextYear: string;\n previousYear: string;\n previousDecade: string;\n locale: string;\n };\n keepInvalid: boolean;\n debug: boolean;\n allowInputToggle: boolean;\n viewDate: DateTime;\n multipleDates: boolean;\n multipleDatesSeparator: string;\n promptTimeOnDateChange: boolean;\n promptTimeOnDateChangeTransitionDelay: number;\n hooks: {\n inputParse: (context: TempusDominus, value: any) => DateTime;\n inputFormat: (context: TempusDominus, date: DateTime) => string;\n };\n}\n\nexport class OptionConverter {\n static _mergeOptions(providedOptions: Options, mergeTo: Options): Options {\n const newOptions = {} as Options;\n let path = '';\n const ignoreProperties = ['inputParse', 'inputFormat'];\n\n const processKey = (key, value, providedType, defaultType) => {\n switch (key) {\n case 'defaultDate': {\n const dateTime = this._dateConversion(value, 'defaultDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'defaultDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'viewDate': {\n const dateTime = this._dateConversion(value, 'viewDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'viewDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'minDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.minDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.minDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'maxDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.maxDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.maxDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'disabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.disabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.disabledHours',\n 0,\n 23\n );\n return value;\n case 'enabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.enabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.enabledHours',\n 0,\n 23\n );\n return value;\n case 'daysOfWeekDisabled':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.daysOfWeekDisabled',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 6).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.daysOfWeekDisabled',\n 0,\n 6\n );\n return value;\n case 'enabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.enabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.disabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledTimeIntervals':\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n key,\n providedType,\n 'array of { from: DateTime|Date, to: DateTime|Date }'\n );\n }\n const valueObject = value as { from: any; to: any }[];\n for (let i = 0; i < valueObject.length; i++) {\n Object.keys(valueObject[i]).forEach((vk) => {\n const subOptionName = `${key}[${i}].${vk}`;\n let d = valueObject[i][vk];\n const dateTime = this._dateConversion(d, subOptionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n subOptionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n valueObject[i][vk] = dateTime;\n });\n }\n return valueObject;\n case 'toolbarPlacement':\n case 'type':\n case 'viewMode':\n case 'dayViewHeaderFormat':\n const optionValues = {\n toolbarPlacement: ['top', 'bottom', 'default'],\n type: ['icons', 'sprites'],\n viewMode: ['clock', 'calendar', 'months', 'years', 'decades'],\n dayViewHeaderFormat: [\n 'numeric',\n '2-digit',\n 'long',\n 'short',\n 'narrow',\n ],\n };\n const keyOptions = optionValues[key];\n if (!keyOptions.includes(value))\n Namespace.errorMessages.unexpectedOptionValue(\n path.substring(1),\n value,\n keyOptions\n );\n\n return value;\n case 'inputParse':\n case 'inputFormat':\n return value;\n default:\n switch (defaultType) {\n case 'boolean':\n return value === 'true' || value === true;\n case 'number':\n return +value;\n case 'string':\n return value.toString();\n case 'object':\n return {};\n case 'function':\n return value;\n default:\n Namespace.errorMessages.typeMismatch(\n path.substring(1),\n providedType,\n defaultType\n );\n }\n }\n };\n\n /**\n * The spread operator caused sub keys to be missing after merging.\n * This is to fix that issue by using spread on the child objects first.\n * Also handles complex options like disabledDates\n * @param provided An option from new providedOptions\n * @param mergeOption Default option to compare types against\n * @param copyTo Destination object. This was add to prevent reference copies\n */\n const spread = (provided, mergeOption, copyTo) => {\n const unsupportedOptions = Object.keys(provided).filter(\n (x) => !Object.keys(mergeOption).includes(x)\n );\n if (unsupportedOptions.length > 0) {\n const flattenedOptions = OptionConverter._flattenDefaultOptions;\n\n const errors = unsupportedOptions.map((x) => {\n let error = `\"${path.substring(1)}.${x}\" in not a known option.`;\n let didYouMean = flattenedOptions.find((y) => y.includes(x));\n if (didYouMean) error += `Did you mean \"${didYouMean}\"?`;\n return error;\n });\n Namespace.errorMessages.unexpectedOptions(errors);\n }\n Object.keys(mergeOption).forEach((key) => {\n const defaultOptionValue = mergeOption[key];\n let providedType = typeof provided[key];\n let defaultType = typeof defaultOptionValue;\n let value = provided[key];\n if (!provided.hasOwnProperty(key)) {\n if (\n defaultType === 'undefined' ||\n (value?.length === 0 && Array.isArray(defaultOptionValue))\n ) {\n copyTo[key] = defaultOptionValue;\n return;\n }\n provided[key] = defaultOptionValue;\n value = provided[key];\n }\n path += `.${key}`;\n copyTo[key] = processKey(key, value, providedType, defaultType);\n\n if (\n typeof defaultOptionValue !== 'object' ||\n ignoreProperties.includes(key)\n ) {\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n return;\n }\n if (!Array.isArray(provided[key])) {\n spread(provided[key], defaultOptionValue, copyTo[key]);\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n }\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n });\n };\n spread(providedOptions, mergeTo, newOptions);\n\n return newOptions;\n }\n\n static _dataToOptions(element, options: Options): Options {\n const eData = element.dataset;\n if (\n !eData ||\n Object.keys(eData).length === 0 ||\n eData.constructor !== DOMStringMap\n )\n return options;\n let dataOptions = {} as Options;\n\n // because dataset returns camelCase including the 'td' key the option\n // key won't align\n const objectToNormalized = (object) => {\n const lowered = {};\n Object.keys(object).forEach((x) => {\n lowered[x.toLowerCase()] = x;\n });\n\n return lowered;\n };\n\n const rabbitHole = (\n split: string[],\n index: number,\n optionSubgroup: {},\n value: any\n ) => {\n // first round = display { ... }\n const normalizedOptions = objectToNormalized(optionSubgroup);\n\n const keyOption = normalizedOptions[split[index].toLowerCase()];\n const internalObject = {};\n\n if (keyOption === undefined) return internalObject;\n\n // if this is another object, continue down the rabbit hole\n if (optionSubgroup[keyOption].constructor === Object) {\n index++;\n internalObject[keyOption] = rabbitHole(\n split,\n index,\n optionSubgroup[keyOption],\n value\n );\n } else {\n internalObject[keyOption] = value;\n }\n return internalObject;\n };\n const optionsLower = objectToNormalized(options);\n\n Object.keys(eData)\n .filter((x) => x.startsWith(Namespace.dataKey))\n .map((x) => x.substring(2))\n .forEach((key) => {\n let keyOption = optionsLower[key.toLowerCase()];\n\n // dataset merges dashes to camelCase... yay\n // i.e. key = display_components_seconds\n if (key.includes('_')) {\n // [display, components, seconds]\n const split = key.split('_');\n // display\n keyOption = optionsLower[split[0].toLowerCase()];\n if (\n keyOption !== undefined &&\n options[keyOption].constructor === Object\n ) {\n dataOptions[keyOption] = rabbitHole(\n split,\n 1,\n options[keyOption],\n eData[`td${key}`]\n );\n }\n }\n // or key = multipleDate\n else if (keyOption !== undefined) {\n dataOptions[keyOption] = eData[`td${key}`];\n }\n });\n\n return this._mergeOptions(dataOptions, options);\n }\n\n /**\n * Attempts to prove `d` is a DateTime or Date or can be converted into one.\n * @param d If a string will attempt creating a date from it.\n * @private\n */\n static _dateTypeCheck(d: any): DateTime | null {\n if (d.constructor.name === DateTime.name) return d;\n if (d.constructor.name === Date.name) {\n return DateTime.convert(d);\n }\n if (typeof d === typeof '') {\n const dateTime = new DateTime(d);\n if (JSON.stringify(dateTime) === 'null') {\n return null;\n }\n return dateTime;\n }\n return null;\n }\n\n /**\n * Type checks that `value` is an array of Date or DateTime\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckDateArray(optionName: string, value, providedType: string) {\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of DateTime or Date'\n );\n }\n for (let i = 0; i < value.length; i++) {\n let d = value[i];\n const dateTime = this._dateConversion(d, optionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n value[i] = dateTime;\n }\n }\n\n /**\n * Type checks that `value` is an array of numbers\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckNumberArray(\n optionName: string,\n value,\n providedType: string\n ) {\n if (!Array.isArray(value) || value.find((x) => typeof x !== typeof 0)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of numbers'\n );\n }\n return;\n }\n\n /**\n * Attempts to convert `d` to a DateTime object\n * @param d value to convert\n * @param optionName Provides text to error messages e.g. disabledDates\n */\n static _dateConversion(d: any, optionName: string) {\n if (typeof d === typeof '' && optionName !== 'input') {\n Namespace.errorMessages.dateString();\n }\n\n const converted = this._dateTypeCheck(d);\n\n if (!converted) {\n Namespace.errorMessages.failedToParseDate(\n optionName,\n d,\n optionName === 'input'\n );\n }\n return converted;\n }\n\n private static _flatback: string[];\n\n private static get _flattenDefaultOptions(): string[] {\n if (this._flatback) return this._flatback;\n const deepKeys = (t, pre = []) =>\n Array.isArray(t)\n ? []\n : Object(t) === t\n ? Object.entries(t).flatMap(([k, v]) => deepKeys(v, [...pre, k]))\n : pre.join('.');\n\n this._flatback = deepKeys(DefaultOptions);\n\n return this._flatback;\n }\n\n /**\n * Some options conflict like min/max date. Verify that these kinds of options\n * are set correctly.\n * @param config\n */\n static _validateConflcits(config: Options) {\n if (config.restrictions.minDate && config.restrictions.maxDate) {\n if (config.restrictions.minDate.isAfter(config.restrictions.maxDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'minDate is after maxDate'\n );\n }\n\n if (config.restrictions.maxDate.isBefore(config.restrictions.minDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'maxDate is before minDate'\n );\n }\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport { ChangeEvent, FailEvent } from './event-types';\nimport { OptionConverter } from './options';\n\nexport default class Dates {\n private _dates: DateTime[] = [];\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Returns the array of selected dates\n */\n get picked(): DateTime[] {\n return this._dates;\n }\n\n /**\n * Returns the last picked value.\n */\n get lastPicked(): DateTime {\n return this._dates[this.lastPickedIndex];\n }\n\n /**\n * Returns the length of picked dates -1 or 0 if none are selected.\n */\n get lastPickedIndex(): number {\n if (this._dates.length === 0) return 0;\n return this._dates.length - 1;\n }\n\n /**\n * Adds a new DateTime to selected dates array\n * @param date\n */\n add(date: DateTime): void {\n this._dates.push(date);\n }\n\n /**\n * Tries to convert the provided value to a DateTime object.\n * If value is null|undefined then clear the value of the provided index (or 0).\n * @param value Value to convert or null|undefined\n * @param index When using multidates this is the index in the array\n * @param from Used in the warning message, useful for debugging.\n */\n set(value: any, index?: number, from: string = 'date.set') {\n if (!value) this._setValue(value, index);\n const converted = OptionConverter._dateConversion(value, from);\n if (converted) this._setValue(converted, index);\n }\n\n /**\n * Returns true if the `targetDate` is part of the selected dates array.\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n isPicked(targetDate: DateTime, unit?: Unit): boolean {\n if (!unit) return this._dates.find((x) => x === targetDate) !== undefined;\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return (\n this._dates\n .map((x) => x.format(format))\n .find((x) => x === innerDateFormatted) !== undefined\n );\n }\n\n /**\n * Returns the index at which `targetDate` is in the array.\n * This is used for updating or removing a date when multi-date is used\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n pickedIndex(targetDate: DateTime, unit?: Unit): number {\n if (!unit) return this._dates.indexOf(targetDate);\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return this._dates.map((x) => x.format(format)).indexOf(innerDateFormatted);\n }\n\n /**\n * Clears all selected dates.\n */\n clear() {\n this._context._unset = true;\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate: this.lastPicked,\n isClear: true,\n isValid: true,\n } as ChangeEvent);\n this._dates = [];\n }\n\n /**\n * Find the \"book end\" years given a `year` and a `factor`\n * @param factor e.g. 100 for decades\n * @param year e.g. 2021\n */\n static getStartEndYear(\n factor: number,\n year: number\n ): [number, number, number] {\n const step = factor / 10,\n startYear = Math.floor(year / factor) * factor,\n endYear = startYear + step * 9,\n focusValue = Math.floor(year / step) * step;\n return [startYear, endYear, focusValue];\n }\n\n /**\n * Do not use direectly. Attempts to either clear or set the `target` date at `index`.\n * If the `target` is null then the date will be cleared.\n * If multi-date is being used then it will be removed from the array.\n * If `target` is valid and multi-date is used then if `index` is\n * provided the date at that index will be replaced, otherwise it is appended.\n * @param target\n * @param index\n */\n _setValue(target?: DateTime, index?: number): void {\n const noIndex = typeof index === 'undefined',\n isClear = !target && noIndex;\n let oldDate = this._context._unset ? null : this._dates[index];\n if (!oldDate && !this._context._unset && noIndex && isClear) {\n oldDate = this.lastPicked;\n }\n\n const updateInput = () => {\n if (!this._context._input) return;\n\n let newValue = this._context._options.hooks.inputFormat(\n this._context,\n target\n );\n if (this._context._options.multipleDates) {\n newValue = this._dates\n .map((d) =>\n this._context._options.hooks.inputFormat(this._context, d)\n )\n .join(this._context._options.multipleDatesSeparator);\n }\n if (this._context._input.value != newValue)\n this._context._input.value = newValue;\n };\n\n if (target && oldDate?.isSame(target)) {\n updateInput();\n return;\n }\n\n // case of calling setValue(null)\n if (!target) {\n if (\n !this._context._options.multipleDates ||\n this._dates.length === 1 ||\n isClear\n ) {\n this._context._unset = true;\n this._dates = [];\n } else {\n this._dates.splice(index, 1);\n }\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n\n updateInput();\n this._context._display._update('all');\n return;\n }\n\n index = index || 0;\n target = target.clone;\n\n // minute stepping is being used, force the minute to the closest value\n if (this._context._options.stepping !== 1) {\n target.minutes =\n Math.round(target.minutes / this._context._options.stepping) *\n this._context._options.stepping;\n target.seconds = 0;\n }\n\n if (this._context._validation.isValid(target)) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._unset = false;\n this._context._display._update('all');\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n return;\n }\n\n if (this._context._options.keepInvalid) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: false,\n } as ChangeEvent);\n }\n this._context._triggerEvent({\n type: Namespace.events.error,\n reason: Namespace.errorMessages.failedToSetInvalidDate,\n date: target,\n oldDate,\n } as FailEvent);\n }\n\n /**\n * Returns a format object based on the granularity of `unit`\n * @param unit\n */\n static getFormatByUnit(unit: Unit): object {\n switch (unit) {\n case 'date':\n return { dateStyle: 'short' };\n case 'month':\n return {\n month: 'numeric',\n year: 'numeric',\n };\n case 'year':\n return { year: 'numeric' };\n }\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\nimport Dates from '../../dates';\r\n\r\n/**\r\n * Creates and updates the grid for `year`\r\n */\r\nexport default class YearDisplay {\r\n private _context: TempusDominus;\r\n private _startYear: DateTime;\r\n private _endYear: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.yearsContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectYear);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 10,\r\n this._context._viewDate.year\r\n );\r\n this._startYear = this._context._viewDate.clone.manipulate(-1, Unit.year);\r\n this._endYear = this._context._viewDate.clone.manipulate(10, Unit.year);\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.yearsContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.yearsContainer,\r\n `${this._startYear.format({ year: 'numeric' })}-${this._endYear.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startYear, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endYear, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.year)\r\n .manipulate(-1, Unit.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectYear}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n let classes = [];\r\n classes.push(Namespace.css.year);\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.year)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.year)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute('data-value', `${innerDate.year}`);\r\n containerClone.innerText = innerDate.format({ year: \"numeric\" });\r\n\r\n innerDate.manipulate(1, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport Dates from '../../dates';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `seconds`\r\n */\r\nexport default class DecadeDisplay {\r\n private _context: TempusDominus;\r\n private _startDecade: DateTime;\r\n private _endDecade: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker() {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.decadesContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDecade);\r\n container.appendChild(div);\r\n }\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 100,\r\n this._context._viewDate.year\r\n );\r\n this._startDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._startDecade.year = start;\r\n this._endDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._endDecade.year = end;\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.decadesContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.decadesContainer,\r\n `${this._startDecade.format({ year: 'numeric' })}-${this._endDecade.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startDecade, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endDecade, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n const pickedYears = this._context.dates.picked.map((x) => x.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectDecade}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (index === 0) {\r\n containerClone.classList.add(Namespace.css.old);\r\n if (this._startDecade.year - 10 < 0) {\r\n containerClone.textContent = ' ';\r\n previous.classList.add(Namespace.css.disabled);\r\n containerClone.classList.add(Namespace.css.disabled);\r\n containerClone.setAttribute('data-value', ``);\r\n return;\r\n } else {\r\n containerClone.innerText = this._startDecade.clone.manipulate(-10, Unit.year).format({ year: 'numeric' });\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n return;\r\n }\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.decade);\r\n const startDecadeYear = this._startDecade.year;\r\n const endDecadeYear = this._startDecade.year + 9;\r\n\r\n if (\r\n !this._context._unset &&\r\n pickedYears.filter((x) => x >= startDecadeYear && x <= endDecadeYear)\r\n .length > 0\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n containerClone.innerText = `${this._startDecade.format({ year: 'numeric' })}`;\r\n\r\n this._startDecade.manipulate(10, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates the clock display\n */\nexport default class TimeDisplay {\n private _context: TempusDominus;\n private _gridColumns = '';\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the clock display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.clockContainer);\n\n container.append(...this._grid());\n\n return container;\n }\n\n /**\n * Populates the various elements with in the clock display\n * like the current hour and if the manipulation icons are enabled.\n * @private\n */\n _update(): void {\n const timesDiv = (\n this._context._display.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0]\n );\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n timesDiv\n .querySelectorAll('.disabled')\n .forEach((element) => element.classList.remove(Namespace.css.disabled));\n\n if (this._context._options.display.components.hours) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.hours}]`\n ).innerText = this._context._options.display.components.useTwentyfourHour\n ? lastPicked.hoursFormatted\n : lastPicked.twelveHoursFormatted;\n }\n\n if (this._context._options.display.components.minutes) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.minutes}]`\n ).innerText = lastPicked.minutesFormatted;\n }\n\n if (this._context._options.display.components.seconds) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.seconds}]`\n ).innerText = lastPicked.secondsFormatted;\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n const toggle = timesDiv.querySelector(\n `[data-action=${ActionTypes.toggleMeridiem}]`\n );\n\n toggle.innerText = lastPicked.meridiem();\n\n if (\n !this._context._validation.isValid(\n lastPicked.clone.manipulate(\n lastPicked.hours >= 12 ? -12 : 12,\n Unit.hours\n )\n )\n ) {\n toggle.classList.add(Namespace.css.disabled);\n } else {\n toggle.classList.remove(Namespace.css.disabled);\n }\n }\n\n timesDiv.style.gridTemplateAreas = `\"${this._gridColumns}\"`;\n }\n\n /**\n * Creates the table for the clock display depending on what options are selected.\n * @private\n */\n private _grid(): HTMLElement[] {\n this._gridColumns = '';\n const top = [],\n middle = [],\n bottom = [],\n separator = document.createElement('div'),\n upIcon = this._context._display._iconTag(\n this._context._options.display.icons.up\n ),\n downIcon = this._context._display._iconTag(\n this._context._options.display.icons.down\n );\n\n separator.classList.add(Namespace.css.separator, Namespace.css.noHighlight);\n const separatorColon = separator.cloneNode(true);\n separatorColon.innerHTML = ':';\n\n const getSeparator = (colon = false): HTMLElement => {\n return colon\n ? separatorColon.cloneNode(true)\n : separator.cloneNode(true);\n };\n\n if (this._context._options.display.components.hours) {\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.incrementHours);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickHour\n );\n divElement.setAttribute('data-action', ActionTypes.showHours);\n divElement.setAttribute('data-time-component', Unit.hours);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.decrementHours);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n this._gridColumns += 'a';\n }\n\n if (this._context._options.display.components.minutes) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.hours) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.incrementMinutes);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickMinute\n );\n divElement.setAttribute('data-action', ActionTypes.showMinutes);\n divElement.setAttribute('data-time-component', Unit.minutes);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.decrementMinutes);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (this._context._options.display.components.seconds) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.minutes) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.incrementSeconds);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickSecond\n );\n divElement.setAttribute('data-action', ActionTypes.showSeconds);\n divElement.setAttribute('data-time-component', Unit.seconds);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.decrementSeconds);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n this._gridColumns += ' a';\n let divElement = getSeparator();\n top.push(divElement);\n\n let button = document.createElement('button');\n button.setAttribute(\n 'title',\n this._context._options.localization.toggleMeridiem\n );\n button.setAttribute('data-action', ActionTypes.toggleMeridiem);\n button.setAttribute('tabindex', '-1');\n button.classList.add(Namespace.css.toggleMeridiem);\n\n divElement = document.createElement('div');\n divElement.classList.add(Namespace.css.noHighlight);\n divElement.appendChild(button);\n middle.push(divElement);\n\n divElement = getSeparator();\n bottom.push(divElement);\n }\n\n this._gridColumns = this._gridColumns.trim();\n\n return [...top, ...middle, ...bottom];\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `hours`\n */\nexport default class HourDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.hourContainer);\n\n for (\n let i = 0;\n i <\n (this._context._options.display.components.useTwentyfourHour ? 24 : 12);\n i++\n ) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectHour);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.hourContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.date);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectHour}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.hour);\n\n if (!this._context._validation.isValid(innerDate, Unit.hours)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.hours}`);\n containerClone.innerText = this._context._options.display.components\n .useTwentyfourHour\n ? innerDate.hoursFormatted\n : innerDate.twelveHoursFormatted;\n innerDate.manipulate(1, Unit.hours);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `minutes`\n */\nexport default class MinuteDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.minuteContainer);\n\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n for (let i = 0; i < 60 / step; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMinute);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.minuteContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.hours);\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMinute}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.minute);\n\n if (!this._context._validation.isValid(innerDate, Unit.minutes)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.minutes}`);\n containerClone.innerText = innerDate.minutesFormatted;\n innerDate.manipulate(step, Unit.minutes);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class secondDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.secondContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectSecond);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.secondContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.minutes);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectSecond}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.second);\n\n if (!this._context._validation.isValid(innerDate, Unit.seconds)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.seconds}`);\n containerClone.innerText = innerDate.secondsFormatted;\n innerDate.manipulate(5, Unit.seconds);\n });\n }\n}\n","import DateDisplay from './calendar/date-display';\nimport MonthDisplay from './calendar/month-display';\nimport YearDisplay from './calendar/year-display';\nimport DecadeDisplay from './calendar/decade-display';\nimport TimeDisplay from './time/time-display';\nimport HourDisplay from './time/hour-display';\nimport MinuteDisplay from './time/minute-display';\nimport SecondDisplay from './time/second-display';\nimport { DateTime, Unit } from '../datetime';\nimport { DatePickerModes } from '../conts';\nimport { TempusDominus } from '../tempus-dominus';\nimport { ActionTypes } from '../actions';\nimport { createPopper } from '@popperjs/core';\nimport Namespace from '../namespace';\nimport { HideEvent } from '../event-types';\n\n/**\n * Main class for all things display related.\n */\nexport default class Display {\n private _context: TempusDominus;\n private _dateDisplay: DateDisplay;\n private _monthDisplay: MonthDisplay;\n private _yearDisplay: YearDisplay;\n private _decadeDisplay: DecadeDisplay;\n private _timeDisplay: TimeDisplay;\n private _widget: HTMLElement;\n private _hourDisplay: HourDisplay;\n private _minuteDisplay: MinuteDisplay;\n private _secondDisplay: SecondDisplay;\n private _popperInstance: any;\n private _isVisible = false;\n\n constructor(context: TempusDominus) {\n this._context = context;\n this._dateDisplay = new DateDisplay(context);\n this._monthDisplay = new MonthDisplay(context);\n this._yearDisplay = new YearDisplay(context);\n this._decadeDisplay = new DecadeDisplay(context);\n this._timeDisplay = new TimeDisplay(context);\n this._hourDisplay = new HourDisplay(context);\n this._minuteDisplay = new MinuteDisplay(context);\n this._secondDisplay = new SecondDisplay(context);\n\n this._widget = undefined;\n }\n\n /**\n * Returns the widget body or undefined\n * @private\n */\n get widget(): HTMLElement | undefined {\n return this._widget;\n }\n\n /**\n * Returns this visible state of the picker (shown)\n */\n get isVisible() {\n return this._isVisible;\n }\n\n /**\n * Updates the table for a particular unit. Used when an option as changed or\n * whenever the class list might need to be refreshed.\n * @param unit\n * @private\n */\n _update(unit: Unit | 'clock' | 'calendar' | 'all'): void {\n if (!this.widget) return;\n //todo do I want some kind of error catching or other guards here?\n switch (unit) {\n case Unit.seconds:\n this._secondDisplay._update();\n break;\n case Unit.minutes:\n this._minuteDisplay._update();\n break;\n case Unit.hours:\n this._hourDisplay._update();\n break;\n case Unit.date:\n this._dateDisplay._update();\n break;\n case Unit.month:\n this._monthDisplay._update();\n break;\n case Unit.year:\n this._yearDisplay._update();\n break;\n case 'clock':\n this._timeDisplay._update();\n this._update(Unit.hours);\n this._update(Unit.minutes);\n this._update(Unit.seconds);\n break;\n case 'calendar':\n this._update(Unit.date);\n this._update(Unit.year);\n this._update(Unit.month);\n this._decadeDisplay._update();\n this._updateCalendarHeader();\n break;\n case 'all':\n if (this._hasTime) {\n this._update('clock');\n }\n if (this._hasDate) {\n this._update('calendar');\n }\n }\n }\n\n /**\n * Shows the picker and creates a Popper instance if needed.\n * Add document click event to hide when clicking outside the picker.\n * @fires Events#show\n */\n show(): void {\n if (this.widget == undefined) {\n if (\n this._context._options.useCurrent &&\n !this._context._options.defaultDate &&\n !this._context._input?.value\n ) {\n //todo in the td4 branch a pr changed this to allow granularity\n const date = new DateTime().setLocale(\n this._context._options.localization.locale\n );\n if (!this._context._options.keepInvalid) {\n let tries = 0;\n let direction = 1;\n if (this._context._options.restrictions.maxDate?.isBefore(date)) {\n direction = -1;\n }\n while (!this._context._validation.isValid(date)) {\n date.manipulate(direction, Unit.date);\n if (tries > 31) break;\n tries++;\n }\n }\n this._context.dates._setValue(date);\n }\n\n if (this._context._options.defaultDate) {\n this._context.dates._setValue(this._context._options.defaultDate);\n }\n\n this._buildWidget();\n if (this._hasDate) {\n this._showMode();\n }\n\n if (!this._context._options.display.inline) {\n document.body.appendChild(this.widget);\n\n this._popperInstance = createPopper(\n this._context._element,\n this.widget,\n {\n modifiers: [{ name: 'eventListeners', enabled: true }],\n //#2400\n placement:\n document.documentElement.dir === 'rtl'\n ? 'bottom-end'\n : 'bottom-start',\n }\n );\n } else {\n this._context._element.appendChild(this.widget);\n }\n\n if (this._context._options.display.viewMode == 'clock') {\n this._context._action.do(\n {\n currentTarget: this.widget.querySelector(\n `.${Namespace.css.timeContainer}`\n ),\n },\n ActionTypes.showClock\n );\n }\n\n this.widget\n .querySelectorAll('[data-action]')\n .forEach((element) =>\n element.addEventListener('click', this._actionsClickEvent)\n );\n\n // show the clock when using sideBySide\n if (this._context._options.display.sideBySide) {\n this._timeDisplay._update();\n (\n this.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0] as HTMLElement\n ).style.display = 'grid';\n }\n }\n\n this.widget.classList.add(Namespace.css.show);\n if (!this._context._options.display.inline) {\n this._popperInstance.update();\n document.addEventListener('click', this._documentClickEvent);\n }\n this._context._triggerEvent({ type: Namespace.events.show });\n this._isVisible = true;\n }\n\n /**\n * Changes the calendar view mode. E.g. month <-> year\n * @param direction -/+ number to move currentViewMode\n * @private\n */\n _showMode(direction?: number): void {\n if (!this.widget) {\n return;\n }\n if (direction) {\n const max = Math.max(\n this._context._minViewModeNumber,\n Math.min(3, this._context._currentViewMode + direction)\n );\n if (this._context._currentViewMode == max) return;\n this._context._currentViewMode = max;\n }\n\n this.widget\n .querySelectorAll(\n `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div:not(.${Namespace.css.clockContainer})`\n )\n .forEach((e: HTMLElement) => (e.style.display = 'none'));\n\n const datePickerMode = DatePickerModes[this._context._currentViewMode];\n let picker: HTMLElement = this.widget.querySelector(\n `.${datePickerMode.className}`\n );\n\n switch (datePickerMode.className) {\n case Namespace.css.decadesContainer:\n this._decadeDisplay._update();\n break;\n case Namespace.css.yearsContainer:\n this._yearDisplay._update();\n break;\n case Namespace.css.monthsContainer:\n this._monthDisplay._update();\n break;\n case Namespace.css.daysContainer:\n this._dateDisplay._update();\n break;\n }\n\n picker.style.display = 'grid';\n this._updateCalendarHeader();\n }\n\n _updateCalendarHeader() {\n const showing = [\n ...this.widget.querySelector(\n `.${Namespace.css.dateContainer} div[style*=\"display: grid\"]`\n ).classList,\n ].find((x) => x.startsWith(Namespace.css.dateContainer));\n\n const [previous, switcher, next] = this._context._display.widget\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switch (showing) {\n case Namespace.css.decadesContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousCentury\n );\n switcher.setAttribute('title', '');\n next.setAttribute(\n 'title',\n this._context._options.localization.nextCentury\n );\n break;\n case Namespace.css.yearsContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousDecade\n );\n switcher.setAttribute(\n 'title',\n this._context._options.localization.selectDecade\n );\n next.setAttribute(\n 'title',\n this._context._options.localization.nextDecade\n );\n break;\n case Namespace.css.monthsContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousYear\n );\n switcher.setAttribute(\n 'title',\n this._context._options.localization.selectYear\n );\n next.setAttribute(\n 'title',\n this._context._options.localization.nextYear\n );\n break;\n case Namespace.css.daysContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousMonth\n );\n switcher.setAttribute(\n 'title',\n this._context._options.localization.selectMonth\n );\n next.setAttribute(\n 'title',\n this._context._options.localization.nextMonth\n );\n switcher.innerText = this._context._viewDate.format({\n month: this._context._options.localization.dayViewHeaderFormat,\n });\n break;\n }\n switcher.innerText = switcher.getAttribute(showing);\n }\n\n /**\n * Hides the picker if needed.\n * Remove document click event to hide when clicking outside the picker.\n * @fires Events#hide\n */\n hide(): void {\n if (!this.widget || !this._isVisible) return;\n\n this.widget.classList.remove(Namespace.css.show);\n\n if (this._isVisible) {\n this._context._triggerEvent({\n type: Namespace.events.hide,\n date: this._context._unset\n ? null\n : this._context.dates.lastPicked\n ? this._context.dates.lastPicked.clone\n : void 0,\n } as HideEvent);\n this._isVisible = false;\n }\n\n document.removeEventListener('click', this._documentClickEvent);\n }\n\n /**\n * Toggles the picker's open state. Fires a show/hide event depending.\n */\n toggle() {\n return this._isVisible ? this.hide() : this.show();\n }\n\n /**\n * Removes document and data-action click listener and reset the widget\n * @private\n */\n _dispose() {\n document.removeEventListener('click', this._documentClickEvent);\n if (!this.widget) return;\n this.widget\n .querySelectorAll('[data-action]')\n .forEach((element) =>\n element.removeEventListener('click', this._actionsClickEvent)\n );\n this.widget.parentNode.removeChild(this.widget);\n this._widget = undefined;\n }\n\n /**\n * Builds the widgets html template.\n * @private\n */\n private _buildWidget(): HTMLElement {\n const template = document.createElement('div');\n template.classList.add(Namespace.css.widget);\n\n const dateView = document.createElement('div');\n dateView.classList.add(Namespace.css.dateContainer);\n dateView.append(\n this._headTemplate,\n this._decadeDisplay._picker,\n this._yearDisplay._picker,\n this._monthDisplay._picker,\n this._dateDisplay._picker\n );\n\n const timeView = document.createElement('div');\n timeView.classList.add(Namespace.css.timeContainer);\n timeView.appendChild(this._timeDisplay._picker);\n timeView.appendChild(this._hourDisplay._picker);\n timeView.appendChild(this._minuteDisplay._picker);\n timeView.appendChild(this._secondDisplay._picker);\n\n const toolbar = document.createElement('div');\n toolbar.classList.add(Namespace.css.toolbar);\n toolbar.append(...this._toolbar);\n\n if (this._context._options.display.inline) {\n template.classList.add(Namespace.css.inline);\n }\n\n if (this._context._options.display.calendarWeeks) {\n template.classList.add('calendarWeeks');\n }\n\n if (\n this._context._options.display.sideBySide &&\n this._hasDate &&\n this._hasTime\n ) {\n template.classList.add(Namespace.css.sideBySide);\n if (this._context._options.display.toolbarPlacement === 'top') {\n template.appendChild(toolbar);\n }\n const row = document.createElement('div');\n row.classList.add('td-row');\n dateView.classList.add('td-half');\n timeView.classList.add('td-half');\n\n row.appendChild(dateView);\n row.appendChild(timeView);\n template.appendChild(row);\n if (this._context._options.display.toolbarPlacement === 'bottom') {\n template.appendChild(toolbar);\n }\n this._widget = template;\n return;\n }\n\n if (this._context._options.display.toolbarPlacement === 'top') {\n template.appendChild(toolbar);\n }\n\n if (this._hasDate) {\n if (this._hasTime) {\n dateView.classList.add(Namespace.css.collapse);\n if (this._context._options.display.viewMode !== 'clock')\n dateView.classList.add(Namespace.css.show);\n }\n template.appendChild(dateView);\n }\n\n if (this._hasTime) {\n if (this._hasDate) {\n timeView.classList.add(Namespace.css.collapse);\n if (this._context._options.display.viewMode === 'clock')\n timeView.classList.add(Namespace.css.show);\n }\n template.appendChild(timeView);\n }\n\n if (this._context._options.display.toolbarPlacement === 'bottom') {\n template.appendChild(toolbar);\n }\n\n const arrow = document.createElement('div');\n arrow.classList.add('arrow');\n arrow.setAttribute('data-popper-arrow', '');\n template.appendChild(arrow);\n\n this._widget = template;\n }\n\n /**\n * Returns true if the hours, minutes, or seconds component is turned on\n */\n get _hasTime(): boolean {\n return (\n this._context._options.display.components.clock &&\n (this._context._options.display.components.hours ||\n this._context._options.display.components.minutes ||\n this._context._options.display.components.seconds)\n );\n }\n\n /**\n * Returns true if the year, month, or date component is turned on\n */\n get _hasDate(): boolean {\n return (\n this._context._options.display.components.calendar &&\n (this._context._options.display.components.year ||\n this._context._options.display.components.month ||\n this._context._options.display.components.date)\n );\n }\n\n /**\n * Get the toolbar html based on options like buttons.today\n * @private\n */\n get _toolbar(): HTMLElement[] {\n const toolbar = [];\n\n if (this._context._options.display.buttons.today) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.today);\n div.setAttribute('title', this._context._options.localization.today);\n\n div.appendChild(\n this._iconTag(this._context._options.display.icons.today)\n );\n toolbar.push(div);\n }\n if (\n !this._context._options.display.sideBySide &&\n this._hasDate &&\n this._hasTime\n ) {\n let title, icon;\n if (this._context._options.display.viewMode === 'clock') {\n title = this._context._options.localization.selectDate;\n icon = this._context._options.display.icons.date;\n } else {\n title = this._context._options.localization.selectTime;\n icon = this._context._options.display.icons.time;\n }\n\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.togglePicker);\n div.setAttribute('title', title);\n\n div.appendChild(this._iconTag(icon));\n toolbar.push(div);\n }\n if (this._context._options.display.buttons.clear) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.clear);\n div.setAttribute('title', this._context._options.localization.clear);\n\n div.appendChild(\n this._iconTag(this._context._options.display.icons.clear)\n );\n toolbar.push(div);\n }\n if (this._context._options.display.buttons.close) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.close);\n div.setAttribute('title', this._context._options.localization.close);\n\n div.appendChild(\n this._iconTag(this._context._options.display.icons.close)\n );\n toolbar.push(div);\n }\n\n return toolbar;\n }\n\n /***\n * Builds the base header template with next and previous icons\n * @private\n */\n get _headTemplate(): HTMLElement {\n const calendarHeader = document.createElement('div');\n calendarHeader.classList.add(Namespace.css.calendarHeader);\n\n const previous = document.createElement('div');\n previous.classList.add(Namespace.css.previous);\n previous.setAttribute('data-action', ActionTypes.previous);\n previous.appendChild(\n this._iconTag(this._context._options.display.icons.previous)\n );\n\n const switcher = document.createElement('div');\n switcher.classList.add(Namespace.css.switch);\n switcher.setAttribute('data-action', ActionTypes.pickerSwitch);\n\n const next = document.createElement('div');\n next.classList.add(Namespace.css.next);\n next.setAttribute('data-action', ActionTypes.next);\n next.appendChild(this._iconTag(this._context._options.display.icons.next));\n\n calendarHeader.append(previous, switcher, next);\n return calendarHeader;\n }\n\n /**\n * Builds an icon tag as either an ``\n * or with icons.type is `sprites` then an svg tag instead\n * @param iconClass\n * @private\n */\n _iconTag(iconClass: string): HTMLElement {\n if (this._context._options.display.icons.type === 'sprites') {\n const svg = document.createElement('svg');\n svg.innerHTML = ``;\n return svg;\n }\n const icon = document.createElement('i');\n DOMTokenList.prototype.add.apply(icon.classList, iconClass.split(' '));\n return icon;\n }\n\n /**\n * A document click event to hide the widget if click is outside\n * @private\n * @param e MouseEvent\n */\n private _documentClickEvent = (e: MouseEvent) => {\n if (this._context._options.debug || (window as any).debug) return;\n\n if (\n this._isVisible &&\n !e.composedPath().includes(this.widget) && // click inside the widget\n !e.composedPath()?.includes(this._context._element) // click on the element\n ) {\n this.hide();\n }\n };\n\n /**\n * Click event for any action like selecting a date\n * @param e MouseEvent\n * @private\n */\n private _actionsClickEvent = (e: MouseEvent) => {\n this._context._action.do(e);\n };\n\n /**\n * Causes the widget to get rebuilt on next show. If the picker is already open\n * then hide and reshow it.\n * @private\n */\n _rebuild() {\n const wasVisible = this._isVisible;\n if (wasVisible) this.hide();\n this._dispose();\n if (wasVisible) {\n this.show();\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Dates from './dates';\n\n/**\n * Main class for date validation rules based on the options provided.\n */\nexport default class Validation {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Checks to see if the target date is valid based on the rules provided in the options.\n * Granularity can be provide to chek portions of the date instead of the whole.\n * @param targetDate\n * @param granularity\n */\n isValid(targetDate: DateTime, granularity?: Unit): boolean {\n if (\n this._context._options.restrictions.disabledDates.length > 0 &&\n this._isInDisabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledDates.length > 0 &&\n !this._isInEnabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.daysOfWeekDisabled?.length > 0 &&\n this._context._options.restrictions.daysOfWeekDisabled.indexOf(\n targetDate.weekDay\n ) !== -1\n ) {\n return false;\n }\n\n if (\n this._context._options.restrictions.minDate &&\n targetDate.isBefore(\n this._context._options.restrictions.minDate,\n granularity\n )\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.maxDate &&\n targetDate.isAfter(\n this._context._options.restrictions.maxDate,\n granularity\n )\n ) {\n return false;\n }\n\n if (\n granularity === Unit.hours ||\n granularity === Unit.minutes ||\n granularity === Unit.seconds\n ) {\n if (\n this._context._options.restrictions.disabledHours.length > 0 &&\n this._isInDisabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledHours.length > 0 &&\n !this._isInEnabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.disabledTimeIntervals.length > 0\n ) {\n for (\n let i = 0;\n i < this._context._options.restrictions.disabledTimeIntervals.length;\n i++\n ) {\n if (\n targetDate.isBetween(\n this._context._options.restrictions.disabledTimeIntervals[i].from,\n this._context._options.restrictions.disabledTimeIntervals[i].to\n )\n )\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Checks to see if the disabledDates option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInDisabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledDates ||\n this._context._options.restrictions.disabledDates.length === 0\n )\n return false;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.disabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the enabledDates option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInEnabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledDates ||\n this._context._options.restrictions.enabledDates.length === 0\n )\n return true;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.enabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the disabledHours option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInDisabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledHours ||\n this._context._options.restrictions.disabledHours.length === 0\n )\n return false;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.disabledHours.find(\n (x) => x === formattedDate\n );\n }\n\n /**\n * Checks to see if the enabledHours option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInEnabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledHours ||\n this._context._options.restrictions.enabledHours.length === 0\n )\n return true;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.enabledHours.find(\n (x) => x === formattedDate\n );\n }\n}\n","import Display from './display/index';\nimport Validation from './validation';\nimport Dates from './dates';\nimport Actions, { ActionTypes } from './actions';\nimport { DatePickerModes, DefaultOptions } from './conts';\nimport { DateTime, DateTimeFormatOptions, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options, { OptionConverter } from './options';\nimport {\n BaseEvent,\n ChangeEvent,\n ViewUpdateEvent,\n FailEvent,\n} from './event-types';\n\n/**\n * A robust and powerful date/time picker component.\n */\nclass TempusDominus {\n dates: Dates;\n\n _options: Options;\n _currentViewMode = 0;\n _subscribers: { [key: string]: ((event: any) => {})[] } = {};\n _element: HTMLElement;\n _input: HTMLInputElement;\n _unset: boolean;\n _minViewModeNumber = 0;\n _display: Display;\n _validation: Validation;\n _action: Actions;\n private _isDisabled = false;\n private _notifyChangeEventContext = 0;\n private _toggle: HTMLElement;\n private _currentPromptTimeTimeout: any;\n\n constructor(element: HTMLElement, options: Options = {} as Options) {\n if (!element) {\n Namespace.errorMessages.mustProvideElement;\n }\n this._element = element;\n this._options = this._initializeOptions(options, DefaultOptions, true);\n this._viewDate.setLocale(this._options.localization.locale);\n this._unset = true;\n\n this._display = new Display(this);\n this._validation = new Validation(this);\n this.dates = new Dates(this);\n this._action = new Actions(this);\n\n this._initializeInput();\n this._initializeToggle();\n\n if (this._options.display.inline) this._display.show();\n }\n\n _viewDate = new DateTime();\n\n get viewDate() {\n return this._viewDate;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Update the picker options. If `reset` is provide `options` will be merged with DefaultOptions instead.\n * @param options\n * @param reset\n * @public\n */\n updateOptions(options, reset = false): void {\n if (reset) this._options = this._initializeOptions(options, DefaultOptions);\n else this._options = this._initializeOptions(options, this._options);\n this._display._rebuild();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Toggles the picker open or closed. If the picker is disabled, nothing will happen.\n * @public\n */\n toggle(): void {\n if (this._isDisabled) return;\n this._display.toggle();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Shows the picker unless the picker is disabled.\n * @public\n */\n show(): void {\n if (this._isDisabled) return;\n this._display.show();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker unless the picker is disabled.\n * @public\n */\n hide(): void {\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Disables the picker and the target input field.\n * @public\n */\n disable(): void {\n this._isDisabled = true;\n // todo this might be undesired. If a dev disables the input field to\n // only allow using the picker, this will break that.\n this._input?.setAttribute('disabled', 'disabled');\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Enables the picker and the target input field.\n * @public\n */\n enable(): void {\n this._isDisabled = false;\n this._input?.removeAttribute('disabled');\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Clears all the selected dates\n * @public\n */\n clear(): void {\n this.dates.clear();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Allows for a direct subscription to picker events, without having to use addEventListener on the element.\n * @param eventTypes See Namespace.Events\n * @param callbacks Function to call when event is triggered\n * @public\n */\n subscribe(\n eventTypes: string | string[],\n callbacks: (event: any) => void | ((event: any) => void)[]\n ): { unsubscribe: void }[] {\n if (typeof eventTypes === 'string') {\n eventTypes = [eventTypes];\n }\n let callBackArray = [];\n if (!Array.isArray(callbacks)) {\n callBackArray = [callbacks];\n } else {\n callBackArray = callbacks;\n }\n\n if (eventTypes.length !== callBackArray.length) {\n Namespace.errorMessages.subscribeMismatch;\n }\n\n const returnArray = [];\n\n for (let i = 0; i < eventTypes.length; i++) {\n const eventType = eventTypes[i];\n if (!Array.isArray(this._subscribers[eventType])) {\n this._subscribers[eventType] = [];\n }\n\n this._subscribers[eventType].push(callBackArray[i]);\n\n returnArray.push({\n unsubscribe: this._unsubscribe.bind(\n this,\n eventType,\n this._subscribers[eventType].length - 1\n ),\n });\n\n if (eventTypes.length === 1) {\n return returnArray[0];\n }\n }\n\n return returnArray;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker and removes event listeners\n */\n dispose() {\n this._display.hide();\n // this will clear the document click event listener\n this._display._dispose();\n this._input?.removeEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input?.removeEventListener('click', this._toggleClickEvent);\n }\n this._toggle.removeEventListener('click', this._toggleClickEvent);\n this._subscribers = {};\n }\n\n /**\n * Triggers an event like ChangeEvent when the picker has updated the value\n * of a selected date.\n * @param event Accepts a BaseEvent object.\n * @private\n */\n _triggerEvent(event: BaseEvent) {\n // checking hasOwnProperty because the BasicEvent also falls through here otherwise\n if ((event as ChangeEvent) && event.hasOwnProperty('date')) {\n const { date, oldDate, isClear } = event as ChangeEvent;\n // this was to prevent a max call stack error\n // https://github.com/tempusdominus/core/commit/15a280507f5277b31b0b3319ab1edc7c19a000fb\n // todo see if this is still needed or if there's a cleaner way\n this._notifyChangeEventContext++;\n if (\n (date && oldDate && date.isSame(oldDate)) ||\n (!isClear && !date && !oldDate) ||\n this._notifyChangeEventContext > 1\n ) {\n this._notifyChangeEventContext = 0;\n return;\n }\n this._handleAfterChangeEvent(event as ChangeEvent);\n }\n\n this._element.dispatchEvent(\n new CustomEvent(event.type, { detail: event as any })\n );\n\n if ((window as any).jQuery) {\n const $ = (window as any).jQuery;\n $(this._element).trigger(event);\n }\n\n const publish = () => {\n // return if event is not subscribed\n if (!Array.isArray(this._subscribers[event.type])) {\n return;\n }\n\n // Trigger callback for each subscriber\n this._subscribers[event.type].forEach((callback) => {\n callback(event);\n });\n };\n\n publish();\n\n this._notifyChangeEventContext = 0;\n }\n\n /**\n * Fires a ViewUpdate event when, for example, the month view is changed.\n * @param {Unit} unit\n * @private\n */\n _viewUpdate(unit: Unit) {\n this._triggerEvent({\n type: Namespace.events.update,\n change: unit,\n viewDate: this._viewDate.clone,\n } as ViewUpdateEvent);\n }\n\n private _unsubscribe(eventName, index) {\n this._subscribers[eventName].splice(index, 1);\n }\n\n /**\n * Merges two Option objects together and validates options type\n * @param config new Options\n * @param mergeTo Options to merge into\n * @param includeDataset When true, the elements data-td attributes will be included in the\n * @private\n */\n private _initializeOptions(\n config: Options,\n mergeTo: Options,\n includeDataset = false\n ): Options {\n config = OptionConverter._mergeOptions(config, mergeTo);\n if (includeDataset)\n config = OptionConverter._dataToOptions(this._element, config);\n\n OptionConverter._validateConflcits(config);\n\n config.viewDate = config.viewDate.setLocale(config.localization.locale);\n\n if (!this._viewDate.isSame(config.viewDate)) {\n this._viewDate = config.viewDate;\n }\n\n /**\n * Sets the minimum view allowed by the picker. For example the case of only\n * allowing year and month to be selected but not date.\n */\n if (config.display.components.year) {\n this._minViewModeNumber = 2;\n }\n if (config.display.components.month) {\n this._minViewModeNumber = 1;\n }\n if (config.display.components.date) {\n this._minViewModeNumber = 0;\n }\n\n this._currentViewMode = Math.max(\n this._minViewModeNumber,\n this._currentViewMode\n );\n\n // Update view mode if needed\n if (\n DatePickerModes[this._currentViewMode].name !== config.display.viewMode\n ) {\n this._currentViewMode = Math.max(\n DatePickerModes.findIndex((x) => x.name === config.display.viewMode),\n this._minViewModeNumber\n );\n }\n\n // defaults the input format based on the components enabled\n if (config.hooks.inputFormat === undefined) {\n const components = config.display.components;\n config.hooks.inputFormat = (_, date: DateTime) => {\n return date.format({\n year: components.calendar && components.year ? 'numeric' : undefined,\n month:\n components.calendar && components.month ? '2-digit' : undefined,\n day: components.calendar && components.date ? '2-digit' : undefined,\n hour:\n components.clock && components.hours\n ? components.useTwentyfourHour\n ? '2-digit'\n : 'numeric'\n : undefined,\n minute:\n components.clock && components.minutes ? '2-digit' : undefined,\n second:\n components.clock && components.seconds ? '2-digit' : undefined,\n hour12: !components.useTwentyfourHour,\n });\n };\n }\n\n if (this._display?.isVisible) {\n this._display._update('all');\n }\n\n return config;\n }\n\n /**\n * Checks if an input field is being used, attempts to locate one and sets an\n * event listener if found.\n * @private\n */\n private _initializeInput() {\n\n if (this._element.tagName == 'INPUT') {\n this._input = this._element as HTMLInputElement;\n } else {\n let query = this._element.dataset.tdTargetInput;\n if (query == undefined || query == 'nearest') {\n this._input = this._element.querySelector('input');\n } else {\n this._input = this._element.querySelector(query);\n }\n }\n\n if (!this._input) return;\n\n this._input.addEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input.addEventListener('click', this._toggleClickEvent);\n }\n\n if (this._input.value) {\n this._inputChangeEvent();\n }\n }\n\n /**\n * Attempts to locate a toggle for the picker and sets an event listener\n * @private\n */\n private _initializeToggle() {\n if (this._options.display.inline) return;\n let query = this._element.dataset.tdTargetToggle;\n if (query == 'nearest') {\n query = '[data-td-toggle=\"datetimepicker\"]';\n }\n this._toggle =\n query == undefined ? this._element : this._element.querySelector(query);\n this._toggle.addEventListener('click', this._toggleClickEvent);\n }\n\n /**\n * If the option is enabled this will render the clock view after a date pick.\n * @param e change event\n * @private\n */\n private _handleAfterChangeEvent(e: ChangeEvent) {\n if (\n // options is disabled\n !this._options.promptTimeOnDateChange ||\n this._options.display.inline ||\n this._options.display.sideBySide ||\n // time is disabled\n !this._display._hasTime ||\n // clock component is already showing\n this._display.widget\n ?.getElementsByClassName(Namespace.css.show)[0]\n .classList.contains(Namespace.css.timeContainer)\n )\n return;\n\n // First time ever. If useCurrent option is set to true (default), do nothing\n // because the first date is selected automatically.\n // or date didn't change (time did) or date changed because time did.\n if (\n (!e.oldDate && this._options.useCurrent) ||\n (e.oldDate && e.date?.isSame(e.oldDate))\n ) {\n return;\n }\n\n clearTimeout(this._currentPromptTimeTimeout);\n this._currentPromptTimeTimeout = setTimeout(() => {\n if (this._display.widget) {\n this._action.do(\n {\n currentTarget: this._display.widget.querySelector(\n `.${Namespace.css.switch} div`\n ),\n },\n ActionTypes.togglePicker\n );\n }\n }, this._options.promptTimeOnDateChangeTransitionDelay);\n }\n\n /**\n * Event for when the input field changes. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _inputChangeEvent = () => {\n const setViewDate = () => {\n if (this.dates.lastPicked) this._viewDate = this.dates.lastPicked;\n };\n\n const value = this._input.value;\n if (this._options.multipleDates) {\n try {\n const valueSplit = value.split(this._options.multipleDatesSeparator);\n for (let i = 0; i < valueSplit.length; i++) {\n if (this._options.hooks.inputParse) {\n this.dates.set(\n this._options.hooks.inputParse(this, valueSplit[i]),\n i,\n 'input'\n );\n } else {\n this.dates.set(valueSplit[i], i, 'input');\n }\n }\n setViewDate();\n } catch {\n console.warn(\n 'TD: Something went wrong trying to set the multidate values from the input field.'\n );\n }\n } else {\n if (this._options.hooks.inputParse) {\n this.dates.set(this._options.hooks.inputParse(this, value), 0, 'input');\n } else {\n this.dates.set(value, 0, 'input');\n }\n setViewDate();\n }\n };\n\n /**\n * Event for when the toggle is clicked. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _toggleClickEvent = () => {\n this.toggle();\n };\n}\n\nexport {\n TempusDominus,\n Namespace,\n DefaultOptions,\n DateTime,\n Options,\n Unit,\n DateTimeFormatOptions,\n};\n"],"names":["SecondDisplay"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tempus-dominus.esm.js","sources":["../../src/js/datetime.ts","../../src/js/errors.ts","../../src/js/namespace.ts","../../src/js/conts.ts","../../src/js/display/collapse.ts","../../src/js/actions.ts","../../src/js/display/calendar/date-display.ts","../../src/js/display/calendar/month-display.ts","../../src/js/options.ts","../../src/js/dates.ts","../../src/js/display/calendar/year-display.ts","../../src/js/display/calendar/decade-display.ts","../../src/js/display/time/time-display.ts","../../src/js/display/time/hour-display.ts","../../src/js/display/time/minute-display.ts","../../src/js/display/time/second-display.ts","../../src/js/display/index.ts","../../src/js/validation.ts","../../src/js/tempus-dominus.ts"],"sourcesContent":["export enum Unit {\r\n seconds = 'seconds',\r\n minutes = 'minutes',\r\n hours = 'hours',\r\n date = 'date',\r\n month = 'month',\r\n year = 'year',\r\n}\r\n\r\nexport interface DateTimeFormatOptions extends Intl.DateTimeFormatOptions {\r\n timeStyle?: 'short' | 'medium' | 'long';\r\n dateStyle?: 'short' | 'medium' | 'long' | 'full';\r\n}\r\n\r\n/**\r\n * For the most part this object behaves exactly the same way\r\n * as the native Date object with a little extra spice.\r\n */\r\nexport class DateTime extends Date {\r\n /**\r\n * Used with Intl.DateTimeFormat\r\n */\r\n locale = 'default';\r\n\r\n /**\r\n * Chainable way to set the {@link locale}\r\n * @param value\r\n */\r\n setLocale(value: string): this {\r\n this.locale = value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Converts a plain JS date object to a DateTime object.\r\n * Doing this allows access to format, etc.\r\n * @param date\r\n */\r\n static convert(date: Date): DateTime {\r\n if (!date) throw `A date is required`;\r\n return new DateTime(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate(),\r\n date.getHours(),\r\n date.getMinutes(),\r\n date.getSeconds(),\r\n date.getMilliseconds()\r\n );\r\n }\r\n\r\n /**\r\n * Native date manipulations are not pure functions. This function creates a duplicate of the DateTime object.\r\n */\r\n get clone() {\r\n return new DateTime(\r\n this.year,\r\n this.month,\r\n this.date,\r\n this.hours,\r\n this.minutes,\r\n this.seconds,\r\n this.getMilliseconds()\r\n ).setLocale(this.locale);\r\n }\r\n\r\n /**\r\n * Sets the current date to the start of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).startOf('month')\r\n * would return April 1, 2021, 12:00:00.000 AM (midnight)\r\n * @param unit\r\n */\r\n startOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(0);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(0, 0);\r\n break;\r\n case 'hours':\r\n this.setMinutes(0, 0, 0);\r\n break;\r\n case 'date':\r\n this.setHours(0, 0, 0, 0);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(0 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.startOf(Unit.date);\r\n this.setDate(1);\r\n break;\r\n case 'year':\r\n this.startOf(Unit.date);\r\n this.setMonth(0, 1);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the current date to the end of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).endOf('month')\r\n * would return April 30, 2021, 11:59:59.999 PM\r\n * @param unit\r\n */\r\n endOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(999);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(59, 999);\r\n break;\r\n case 'hours':\r\n this.setMinutes(59, 59, 999);\r\n break;\r\n case 'date':\r\n this.setHours(23, 59, 59, 999);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(6 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.month);\r\n this.setDate(0);\r\n break;\r\n case 'year':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.year);\r\n this.setDate(0);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Change a {@link unit} value. Value can be positive or negative\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).manipulate(1, 'month')\r\n * would return May 30, 2021, 11:45:32.984 AM\r\n * @param value A positive or negative number\r\n * @param unit\r\n */\r\n manipulate(value: number, unit: Unit): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n this[unit] += value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns a string format.\r\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat\r\n * for valid templates and locale objects\r\n * @param template An object. Uses browser defaults otherwise.\r\n * @param locale Can be a string or an array of strings. Uses browser defaults otherwise.\r\n */\r\n format(template: DateTimeFormatOptions, locale = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, template).format(this);\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is before this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isBefore(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() < compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() < compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is after this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isAfter(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() > compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() > compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is same this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isSame(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() === compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n compare = DateTime.convert(compare);\r\n return (\r\n this.clone.startOf(unit).valueOf() === compare.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Check if this is between two other DateTimes, optionally looking at unit scale. The match is exclusive.\r\n * @param left\r\n * @param right\r\n * @param unit.\r\n * @param inclusivity. A [ indicates inclusion of a value. A ( indicates exclusion.\r\n * If the inclusivity parameter is used, both indicators must be passed.\r\n */\r\n isBetween(\r\n left: DateTime,\r\n right: DateTime,\r\n unit?: Unit,\r\n inclusivity: '()' | '[]' | '(]' | '[)' = '()'\r\n ): boolean {\r\n if (unit && this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n const leftInclusivity = inclusivity[0] === '(';\r\n const rightInclusivity = inclusivity[1] === ')';\r\n\r\n return (\r\n ((leftInclusivity\r\n ? this.isAfter(left, unit)\r\n : !this.isBefore(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isBefore(right, unit)\r\n : !this.isAfter(right, unit))) ||\r\n ((leftInclusivity\r\n ? this.isBefore(left, unit)\r\n : !this.isAfter(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isAfter(right, unit)\r\n : !this.isBefore(right, unit)))\r\n );\r\n }\r\n\r\n /**\r\n * Returns flattened object of the date. Does not include literals\r\n * @param locale\r\n * @param template\r\n */\r\n parts(\r\n locale = this.locale,\r\n template: any = { dateStyle: 'full', timeStyle: 'long' }\r\n ) {\r\n const parts = {};\r\n new Intl.DateTimeFormat(locale, template)\r\n .formatToParts(this)\r\n .filter((x) => x.type !== 'literal')\r\n .forEach((x) => (parts[x.type] = x.value));\r\n return parts;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getSeconds()\r\n */\r\n get seconds(): number {\r\n return this.getSeconds();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setSeconds()\r\n */\r\n set seconds(value: number) {\r\n this.setSeconds(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get secondsFormatted(): string {\r\n return this.format({ second: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMinutes()\r\n */\r\n get minutes(): number {\r\n return this.getMinutes();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMinutes()\r\n */\r\n set minutes(value: number) {\r\n this.setMinutes(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get minutesFormatted(): string {\r\n return this.format({ minute: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getHours()\r\n */\r\n get hours(): number {\r\n return this.getHours();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setHours()\r\n */\r\n set hours(value: number) {\r\n this.setHours(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get hoursFormatted(): string {\r\n return this.format({ hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Returns two digit hours but in twelve hour mode e.g. 13 -> 1\r\n */\r\n get twelveHoursFormatted(): string {\r\n return this.format({ hour12: true, hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Get the meridiem of the date. E.g. AM or PM.\r\n * If the {@link locale} provides a \"dayPeriod\" then this will be returned,\r\n * otherwise it will return AM or PM.\r\n * @param locale\r\n */\r\n meridiem(locale: string = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, {\r\n hour: 'numeric',\r\n hour12: true,\r\n } as any)\r\n .formatToParts(this)\r\n .find((p) => p.type === 'dayPeriod')?.value;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDate()\r\n */\r\n get date(): number {\r\n return this.getDate();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setDate()\r\n */\r\n set date(value: number) {\r\n this.setDate(value);\r\n }\r\n\r\n /**\r\n * Return two digit date\r\n */\r\n get dateFormatted(): string {\r\n return this.date < 10 ? `0${this.date}` : `${this.date}`;\r\n }\r\n\r\n // https://github.com/you-dont-need/You-Dont-Need-Momentjs#week-of-year\r\n /**\r\n * Gets the week of the year\r\n */\r\n get week(): number {\r\n const startOfYear = new Date(this.year, 0, 1);\r\n startOfYear.setDate(\r\n startOfYear.getDate() + (1 - (startOfYear.getDay() % 7))\r\n );\r\n return Math.round((this.valueOf() - startOfYear.valueOf()) / 604800000) + 1;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDay()\r\n */\r\n get weekDay(): number {\r\n return this.getDay();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMonth()\r\n */\r\n get month(): number {\r\n return this.getMonth();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMonth()\r\n */\r\n set month(value: number) {\r\n this.setMonth(value);\r\n }\r\n\r\n /**\r\n * Return two digit, human expected month. E.g. January = 1, December = 12\r\n */\r\n get monthFormatted(): string {\r\n return this.month + 1 < 10 ? `0${this.month}` : `${this.month}`;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getFullYear()\r\n */\r\n get year(): number {\r\n return this.getFullYear();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setFullYear()\r\n */\r\n set year(value: number) {\r\n this.setFullYear(value);\r\n }\r\n}\r\n","import Namespace from './namespace';\n\nexport class TdError extends Error {\n code: number;\n}\n\nexport class ErrorMessages {\n private base = 'TD:';\n\n //#region out to console\n\n /**\n * Throws an error indicating that a key in the options object is invalid.\n * @param optionName\n */\n unexpectedOption(optionName: string) {\n const error = new TdError(\n `${this.base} Unexpected option: ${optionName} does not match a known option.`\n );\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error indicating that one more keys in the options object is invalid.\n * @param optionName\n */\n unexpectedOptions(optionName: string[]) {\n const error = new TdError(`${this.base}: ${optionName.join(', ')}`);\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error when an option is provide an unsupported value.\n * For example a value of 'cheese' for toolbarPlacement which only supports\n * 'top', 'bottom', 'default'.\n * @param optionName\n * @param badValue\n * @param validOptions\n */\n unexpectedOptionValue(\n optionName: string,\n badValue: string,\n validOptions: string[]\n ) {\n const error = new TdError(\n `${\n this.base\n } Unexpected option value: ${optionName} does not accept a value of \"${badValue}\". Valid values are: ${validOptions.join(\n ', '\n )}`\n );\n error.code = 2;\n throw error;\n }\n\n /**\n * Throws an error when an option value is the wrong type.\n * For example a string value was provided to multipleDates which only\n * supports true or false.\n * @param optionName\n * @param badType\n * @param expectedType\n */\n typeMismatch(optionName: string, badType: string, expectedType: string) {\n const error = new TdError(\n `${this.base} Mismatch types: ${optionName} has a type of ${badType} instead of the required ${expectedType}`\n );\n error.code = 3;\n throw error;\n }\n\n /**\n * Throws an error when an option value is outside of the expected range.\n * For example restrictions.daysOfWeekDisabled excepts a value between 0 and 6.\n * @param optionName\n * @param lower\n * @param upper\n */\n numbersOutOfRage(optionName: string, lower: number, upper: number) {\n const error = new TdError(\n `${this.base} ${optionName} expected an array of number between ${lower} and ${upper}.`\n );\n error.code = 4;\n throw error;\n }\n\n /**\n * Throws an error when a value for a date options couldn't be parsed. Either\n * the option was an invalide string or an invalid Date object.\n * @param optionName\n * @param date\n * @param soft If true, logs a warning instead of an error.\n */\n failedToParseDate(optionName: string, date: any, soft = false) {\n const error = new TdError(\n `${this.base} Could not correctly parse \"${date}\" to a date for ${optionName}.`\n );\n error.code = 5;\n if (!soft) throw error;\n console.warn(error);\n }\n\n /**\n * Throws when an element to attach to was not provided in the constructor.\n */\n mustProvideElement() {\n const error = new TdError(`${this.base} No element was provided.`);\n error.code = 6;\n throw error;\n }\n\n /**\n * Throws if providing an array for the events to subscribe method doesn't have\n * the same number of callbacks. E.g., subscribe([1,2], [1])\n */\n subscribeMismatch() {\n const error = new TdError(\n `${this.base} The subscribed events does not match the number of callbacks`\n );\n error.code = 7;\n throw error;\n }\n\n /**\n * Throws if the configuration has conflicting rules e.g. minDate is after maxDate\n */\n conflictingConfiguration(message?: string) {\n const error = new TdError(\n `${this.base} A configuration value conflicts with another rule. ${message}`\n );\n error.code = 8;\n throw error;\n }\n\n /**\n * Logs a warning if a date option value is provided as a string, instead of\n * a date/datetime object.\n */\n dateString() {\n console.warn(\n `${this.base} Using a string for date options is not recommended unless you specify an ISO string.`\n );\n }\n\n //#endregion\n\n //#region used with notify.error\n\n /**\n * Used with an Error Event type if the user selects a date that\n * fails restriction validation.\n */\n failedToSetInvalidDate = 'Failed to set invalid date';\n\n /**\n * Used with an Error Event type when a user changes the value of the\n * input field directly, and does not provide a valid date.\n */\n failedToParseInput = 'Failed parse input field';\n\n //#endregion\n}\n","import { ErrorMessages } from './errors';\n// this is not the way I want this to stay but nested classes seemed to blown up once its compiled.\nconst NAME = 'tempus-dominus',\n version = '6.0.0-alpha1',\n dataKey = 'td';\n\n/**\n * Events\n */\nclass Events {\n key = `.${dataKey}`;\n\n /**\n * Change event. Fired when the user selects a date.\n * See also EventTypes.ChangeEvent\n */\n change = `change${this.key}`;\n\n /**\n * Emit when the view changes for example from month view to the year view.\n * See also EventTypes.ViewUpdateEvent\n */\n update = `update${this.key}`;\n\n /**\n * Emits when a selected date or value from the input field fails to meet the provided validation rules.\n * See also EventTypes.FailEvent\n */\n error = `error${this.key}`;\n\n /**\n * Show event\n * @event Events#show\n */\n show = `show${this.key}`;\n\n /**\n * Hide event\n * @event Events#hide\n */\n hide = `hide${this.key}`;\n\n // blur and focus are used in the jQuery provider but are otherwise unused.\n // keyup/down will be used later for keybinding options\n\n blur = `blur${this.key}`;\n focus = `focus${this.key}`;\n keyup = `keyup${this.key}`;\n keydown = `keydown${this.key}`;\n}\n\nclass Css {\n /**\n * The outer element for the widget.\n */\n widget = `${NAME}-widget`;\n\n /**\n * Hold the previous, next and switcher divs\n */\n calendarHeader = 'calendar-header';\n\n /**\n * The element for the action to change the calendar view. E.g. month -> year.\n */\n switch = 'picker-switch';\n\n /**\n * The elements for all of the toolbar options\n */\n toolbar = 'toolbar';\n\n /**\n * Disables the hover and rounding affect.\n */\n noHighlight = 'no-highlight';\n\n /**\n * Applied to the widget element when the side by side option is in use.\n */\n sideBySide = 'timepicker-sbs';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> July\n */\n previous = 'previous';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> September\n */\n next = 'next';\n\n /**\n * Applied to any action that would violate any restriction options. ALso applied\n * to an input field if the disabled function is called.\n */\n disabled = 'disabled';\n\n /**\n * Applied to any date that is less than requested view,\n * e.g. the last day of the previous month.\n */\n old = 'old';\n\n /**\n * Applied to any date that is greater than of requested view,\n * e.g. the last day of the previous month.\n */\n new = 'new';\n\n /**\n * Applied to any date that is currently selected.\n */\n active = 'active';\n\n //#region date element\n\n /**\n * The outer most element for the calendar view.\n */\n dateContainer = 'date-container';\n\n /**\n * The outer most element for the decades view.\n */\n decadesContainer = `${this.dateContainer}-decades`;\n\n /**\n * Applied to elements within the decades container, e.g. 2020, 2030\n */\n decade = 'decade';\n\n /**\n * The outer most element for the years view.\n */\n yearsContainer = `${this.dateContainer}-years`;\n\n /**\n * Applied to elements within the years container, e.g. 2021, 2021\n */\n year = 'year';\n\n /**\n * The outer most element for the month view.\n */\n monthsContainer = `${this.dateContainer}-months`;\n\n /**\n * Applied to elements within the month container, e.g. January, February\n */\n month = 'month';\n\n /**\n * The outer most element for the calendar view.\n */\n daysContainer = `${this.dateContainer}-days`;\n\n /**\n * Applied to elements within the day container, e.g. 1, 2..31\n */\n day = 'day';\n\n /**\n * If display.calendarWeeks is enabled, a column displaying the week of year\n * is shown. This class is applied to each cell in that column.\n */\n calendarWeeks = 'cw';\n\n /**\n * Applied to the first row of the calendar view, e.g. Sunday, Monday\n */\n dayOfTheWeek = 'dow';\n\n /**\n * Applied to the current date on the calendar view.\n */\n today = 'today';\n\n /**\n * Applied to the locale's weekend dates on the calendar view, e.g. Sunday, Saturday\n */\n weekend = 'weekend';\n\n //#endregion\n\n //#region time element\n\n /**\n * The outer most element for all time related elements.\n */\n timeContainer = 'time-container';\n\n /**\n * Applied the separator columns between time elements, e.g. hour *:* minute *:* second\n */\n separator = 'separator';\n\n /**\n * The outer most element for the clock view.\n */\n clockContainer = `${this.timeContainer}-clock`;\n\n /**\n * The outer most element for the hours selection view.\n */\n hourContainer = `${this.timeContainer}-hour`;\n\n /**\n * The outer most element for the minutes selection view.\n */\n minuteContainer = `${this.timeContainer}-minute`;\n\n /**\n * The outer most element for the seconds selection view.\n */\n secondContainer = `${this.timeContainer}-second`;\n\n /**\n * Applied to each element in the hours selection view.\n */\n hour = 'hour';\n\n /**\n * Applied to each element in the minutes selection view.\n */\n minute = 'minute';\n\n /**\n * Applied to each element in the seconds selection view.\n */\n second = 'second';\n\n /**\n * Applied AM/PM toggle button.\n */\n toggleMeridiem = 'toggleMeridiem';\n\n //#endregion\n\n //#region collapse\n\n /**\n * Applied the element of the current view mode, e.g. calendar or clock.\n */\n show = 'show';\n\n /**\n * Applied to the currently showing view mode during a transition\n * between calendar and clock views\n */\n collapsing = 'td-collapsing';\n\n /**\n * Applied to the currently hidden view mode.\n */\n collapse = 'td-collapse';\n\n //#endregion\n\n /**\n * Applied to the widget when the option display.inline is enabled.\n */\n inline = 'inline';\n}\n\nexport default class Namespace {\n static NAME = NAME;\n // noinspection JSUnusedGlobalSymbols\n static version = version;\n static dataKey = dataKey;\n\n static events = new Events();\n\n static css = new Css();\n\n static errorMessages = new ErrorMessages();\n}\n","import { DateTime, Unit } from './datetime';\r\nimport Namespace from './namespace';\r\nimport Options from './options';\r\n\r\nconst DefaultOptions: Options = {\r\n restrictions: {\r\n minDate: undefined,\r\n maxDate: undefined,\r\n disabledDates: [],\r\n enabledDates: [],\r\n daysOfWeekDisabled: [],\r\n disabledTimeIntervals: [],\r\n disabledHours: [],\r\n enabledHours: [],\r\n },\r\n display: {\r\n icons: {\r\n type: 'icons',\r\n time: 'fas fa-clock',\r\n date: 'fas fa-calendar',\r\n up: 'fas fa-arrow-up',\r\n down: 'fas fa-arrow-down',\r\n previous: 'fas fa-chevron-left',\r\n next: 'fas fa-chevron-right',\r\n today: 'fas fa-calendar-check',\r\n clear: 'fas fa-trash',\r\n close: 'fas fa-times',\r\n },\r\n sideBySide: false,\r\n calendarWeeks: false,\r\n viewMode: 'calendar',\r\n toolbarPlacement: 'bottom',\r\n keepOpen: false,\r\n buttons: {\r\n today: false,\r\n clear: false,\r\n close: false,\r\n },\r\n components: {\r\n calendar: true,\r\n date: true,\r\n month: true,\r\n year: true,\r\n decades: true,\r\n clock: true,\r\n hours: true,\r\n minutes: true,\r\n seconds: false,\r\n useTwentyfourHour: false,\r\n },\r\n inline: false,\r\n },\r\n stepping: 1,\r\n useCurrent: true,\r\n defaultDate: undefined,\r\n localization: {\r\n today: 'Go to today',\r\n clear: 'Clear selection',\r\n close: 'Close the picker',\r\n selectMonth: 'Select Month',\r\n previousMonth: 'Previous Month',\r\n nextMonth: 'Next Month',\r\n selectYear: 'Select Year',\r\n previousYear: 'Previous Year',\r\n nextYear: 'Next Year',\r\n selectDecade: 'Select Decade',\r\n previousDecade: 'Previous Decade',\r\n nextDecade: 'Next Decade',\r\n previousCentury: 'Previous Century',\r\n nextCentury: 'Next Century',\r\n pickHour: 'Pick Hour',\r\n incrementHour: 'Increment Hour',\r\n decrementHour: 'Decrement Hour',\r\n pickMinute: 'Pick Minute',\r\n incrementMinute: 'Increment Minute',\r\n decrementMinute: 'Decrement Minute',\r\n pickSecond: 'Pick Second',\r\n incrementSecond: 'Increment Second',\r\n decrementSecond: 'Decrement Second',\r\n toggleMeridiem: 'Toggle Meridiem',\r\n selectTime: 'Select Time',\r\n selectDate: 'Select Date',\r\n dayViewHeaderFormat: 'long',\r\n locale: 'default',\r\n },\r\n keepInvalid: false,\r\n debug: false,\r\n allowInputToggle: false,\r\n viewDate: new DateTime(),\r\n multipleDates: false,\r\n multipleDatesSeparator: '; ',\r\n promptTimeOnDateChange: false,\r\n promptTimeOnDateChangeTransitionDelay: 200,\r\n hooks: {\r\n inputParse: undefined,\r\n inputFormat: undefined,\r\n },\r\n};\r\n\r\nconst DatePickerModes: {\r\n name: string;\r\n className: string;\r\n unit: Unit;\r\n step: number;\r\n}[] = [\r\n {\r\n name: 'calendar',\r\n className: Namespace.css.daysContainer,\r\n unit: Unit.month,\r\n step: 1,\r\n },\r\n {\r\n name: 'months',\r\n className: Namespace.css.monthsContainer,\r\n unit: Unit.year,\r\n step: 1,\r\n },\r\n {\r\n name: 'years',\r\n className: Namespace.css.yearsContainer,\r\n unit: Unit.year,\r\n step: 10,\r\n },\r\n {\r\n name: 'decades',\r\n className: Namespace.css.decadesContainer,\r\n unit: Unit.year,\r\n step: 100,\r\n },\r\n];\r\n\r\nexport { DefaultOptions, DatePickerModes, Namespace };\r\n","import Namespace from '../namespace';\n\n/**\n * Provides a collapse functionality to the view changes\n */\nexport default class Collapse {\n private timeOut;\n\n /**\n * Flips the show/hide state of `target`\n * @param target html element to affect.\n */\n toggle(target: HTMLElement, callback = undefined) {\n if (target.classList.contains(Namespace.css.show)) {\n this.hide(target, callback);\n } else {\n this.show(target, callback);\n }\n }\n\n /**\n * If `target` is not already showing, then show after the animation.\n * @param target\n */\n show(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse, Namespace.css.show);\n target.style.height = '';\n this.timeOut = null;\n if (callback) callback();\n };\n\n target.style.height = '0';\n target.classList.remove(Namespace.css.collapse);\n target.classList.add(Namespace.css.collapsing);\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n target.style.height = `${target.scrollHeight}px`;\n }\n\n /**\n * If `target` is not already hidden, then hide after the animation.\n * @param target HTML Element\n */\n hide(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n !target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse);\n this.timeOut = null;\n };\n\n target.style.height = `${target.getBoundingClientRect()['height']}px`;\n\n const reflow = (element) => element.offsetHeight;\n\n reflow(target);\n\n target.classList.remove(Namespace.css.collapse, Namespace.css.show);\n target.classList.add(Namespace.css.collapsing);\n target.style.height = '';\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n }\n\n /**\n * Gets the transition duration from the `element` by getting css properties\n * `transition-duration` and `transition-delay`\n * @param element HTML Element\n */\n private getTransitionDurationFromElement = (element: HTMLElement) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } =\n window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) +\n Number.parseFloat(transitionDelay)) *\n 1000\n );\n };\n}\n","import { DatePickerModes } from './conts.js';\r\nimport { DateTime, Unit } from './datetime';\r\nimport { TempusDominus } from './tempus-dominus';\r\nimport Collapse from './display/collapse';\r\nimport Namespace from './namespace';\r\n\r\n/**\r\n *\r\n */\r\nexport default class Actions {\r\n private _context: TempusDominus;\r\n private collapse: Collapse;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this.collapse = new Collapse();\r\n }\r\n\r\n /**\r\n * Performs the selected `action`. See ActionTypes\r\n * @param e This is normally a click event\r\n * @param action If not provided, then look for a [data-action]\r\n */\r\n do(e: any, action?: ActionTypes) {\r\n const currentTarget = e.currentTarget;\r\n if (currentTarget.classList.contains(Namespace.css.disabled)) return false;\r\n action = action || currentTarget.dataset.action;\r\n const lastPicked = (\r\n this._context.dates.lastPicked || this._context._viewDate\r\n ).clone;\r\n\r\n /**\r\n * Common function to manipulate {@link lastPicked} by `unit`\r\n * @param unit\r\n * @param value Value to change by\r\n */\r\n const manipulateAndSet = (unit: Unit, value = 1) => {\r\n const newDate = lastPicked.manipulate(value, unit);\r\n if (this._context._validation.isValid(newDate, unit)) {\r\n this._context.dates._setValue(\r\n newDate,\r\n this._context.dates.lastPickedIndex\r\n );\r\n }\r\n };\r\n\r\n switch (action) {\r\n case ActionTypes.next:\r\n case ActionTypes.previous:\r\n const { unit, step } = DatePickerModes[this._context._currentViewMode];\r\n if (action === ActionTypes.next)\r\n this._context._viewDate.manipulate(step, unit);\r\n else this._context._viewDate.manipulate(step * -1, unit);\r\n this._context._viewUpdate(unit);\r\n\r\n this._context._display._showMode();\r\n break;\r\n case ActionTypes.pickerSwitch:\r\n this._context._display._showMode(1);\r\n this._context._viewUpdate(\r\n DatePickerModes[this._context._currentViewMode].unit\r\n );\r\n this._context._display._updateCalendarHeader();\r\n break;\r\n case ActionTypes.selectMonth:\r\n case ActionTypes.selectYear:\r\n case ActionTypes.selectDecade:\r\n const value = +currentTarget.dataset.value;\r\n switch (action) {\r\n case ActionTypes.selectMonth:\r\n this._context._viewDate.month = value;\r\n this._context._viewUpdate(Unit.month);\r\n break;\r\n case ActionTypes.selectYear:\r\n this._context._viewDate.year = value;\r\n this._context._viewUpdate(Unit.year);\r\n break;\r\n case ActionTypes.selectDecade:\r\n this._context._viewDate.year = value;\r\n this._context._viewUpdate(Unit.year);\r\n break;\r\n }\r\n\r\n if (\r\n this._context._currentViewMode === this._context._minViewModeNumber\r\n ) {\r\n this._context.dates._setValue(\r\n this._context._viewDate,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (!this._context._options.display.inline) {\r\n this._context._display.hide();\r\n }\r\n } else {\r\n this._context._display._showMode(-1);\r\n }\r\n break;\r\n case ActionTypes.selectDay:\r\n const day = this._context._viewDate.clone;\r\n if (currentTarget.classList.contains(Namespace.css.old)) {\r\n day.manipulate(-1, Unit.month);\r\n }\r\n if (currentTarget.classList.contains(Namespace.css.new)) {\r\n day.manipulate(1, Unit.month);\r\n }\r\n\r\n day.date = +currentTarget.dataset.day;\r\n let index = 0;\r\n if (this._context._options.multipleDates) {\r\n index = this._context.dates.pickedIndex(day, Unit.date);\r\n if (index !== -1) {\r\n this._context.dates._setValue(null, index); //deselect multi-date\r\n } else {\r\n this._context.dates._setValue(\r\n day,\r\n this._context.dates.lastPickedIndex + 1\r\n );\r\n }\r\n } else {\r\n this._context.dates._setValue(\r\n day,\r\n this._context.dates.lastPickedIndex\r\n );\r\n }\r\n\r\n if (\r\n !this._context._display._hasTime &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline &&\r\n !this._context._options.multipleDates\r\n ) {\r\n this._context._display.hide();\r\n }\r\n break;\r\n case ActionTypes.selectHour:\r\n let hour = +currentTarget.dataset.value;\r\n if (\r\n lastPicked.hours >= 12 &&\r\n !this._context._options.display.components.useTwentyfourHour\r\n )\r\n hour += 12;\r\n lastPicked.hours = hour;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.components.minutes &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.selectMinute:\r\n lastPicked.minutes = +currentTarget.dataset.value;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.components.seconds &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.selectSecond:\r\n lastPicked.seconds = +currentTarget.dataset.value;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.incrementHours:\r\n manipulateAndSet(Unit.hours);\r\n break;\r\n case ActionTypes.incrementMinutes:\r\n manipulateAndSet(Unit.minutes, this._context._options.stepping);\r\n break;\r\n case ActionTypes.incrementSeconds:\r\n manipulateAndSet(Unit.seconds);\r\n break;\r\n case ActionTypes.decrementHours:\r\n manipulateAndSet(Unit.hours, -1);\r\n break;\r\n case ActionTypes.decrementMinutes:\r\n manipulateAndSet(Unit.minutes, this._context._options.stepping * -1);\r\n break;\r\n case ActionTypes.decrementSeconds:\r\n manipulateAndSet(Unit.seconds, -1);\r\n break;\r\n case ActionTypes.toggleMeridiem:\r\n manipulateAndSet(\r\n Unit.hours,\r\n this._context.dates.lastPicked.hours >= 12 ? -12 : 12\r\n );\r\n break;\r\n case ActionTypes.togglePicker:\r\n this._context._display.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer}, .${Namespace.css.timeContainer}`\r\n )\r\n .forEach((htmlElement: HTMLElement) =>\r\n this.collapse.toggle(htmlElement)\r\n );\r\n if (\r\n currentTarget.getAttribute('title') ===\r\n this._context._options.localization.selectDate\r\n ) {\r\n currentTarget.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectTime\r\n );\r\n currentTarget.innerHTML = this._context._display._iconTag(\r\n this._context._options.display.icons.time\r\n ).outerHTML;\r\n\r\n this._context._display._updateCalendarHeader();\r\n } else {\r\n currentTarget.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDate\r\n );\r\n currentTarget.innerHTML = this._context._display._iconTag(\r\n this._context._options.display.icons.date\r\n ).outerHTML;\r\n this.do(e, ActionTypes.showClock);\r\n this._context._display._update('clock');\r\n }\r\n break;\r\n case ActionTypes.showClock:\r\n case ActionTypes.showHours:\r\n case ActionTypes.showMinutes:\r\n case ActionTypes.showSeconds:\r\n this._context._display.widget\r\n .querySelectorAll(`.${Namespace.css.timeContainer} > div`)\r\n .forEach(\r\n (htmlElement: HTMLElement) => (htmlElement.style.display = 'none')\r\n );\r\n\r\n let classToUse = '';\r\n switch (action) {\r\n case ActionTypes.showClock:\r\n classToUse = Namespace.css.clockContainer;\r\n this._context._display._update('clock');\r\n break;\r\n case ActionTypes.showHours:\r\n classToUse = Namespace.css.hourContainer;\r\n this._context._display._update(Unit.hours);\r\n break;\r\n case ActionTypes.showMinutes:\r\n classToUse = Namespace.css.minuteContainer;\r\n this._context._display._update(Unit.minutes);\r\n break;\r\n case ActionTypes.showSeconds:\r\n classToUse = Namespace.css.secondContainer;\r\n this._context._display._update(Unit.seconds);\r\n break;\r\n }\r\n\r\n ((\r\n this._context._display.widget.getElementsByClassName(classToUse)[0]\r\n )).style.display = 'grid';\r\n break;\r\n case ActionTypes.clear:\r\n this._context.dates._setValue(null);\r\n this._context._display._updateCalendarHeader();\r\n break;\r\n case ActionTypes.close:\r\n this._context._display.hide();\r\n break;\r\n case ActionTypes.today:\r\n const today = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n this._context._viewDate = today;\r\n if (this._context._validation.isValid(today, Unit.date))\r\n this._context.dates._setValue(\r\n today,\r\n this._context.dates.lastPickedIndex\r\n );\r\n break;\r\n }\r\n }\r\n}\r\n\r\nexport enum ActionTypes {\r\n next = 'next',\r\n previous = 'previous',\r\n pickerSwitch = 'pickerSwitch',\r\n selectMonth = 'selectMonth',\r\n selectYear = 'selectYear',\r\n selectDecade = 'selectDecade',\r\n selectDay = 'selectDay',\r\n selectHour = 'selectHour',\r\n selectMinute = 'selectMinute',\r\n selectSecond = 'selectSecond',\r\n incrementHours = 'incrementHours',\r\n incrementMinutes = 'incrementMinutes',\r\n incrementSeconds = 'incrementSeconds',\r\n decrementHours = 'decrementHours',\r\n decrementMinutes = 'decrementMinutes',\r\n decrementSeconds = 'decrementSeconds',\r\n toggleMeridiem = 'toggleMeridiem',\r\n togglePicker = 'togglePicker',\r\n showClock = 'showClock',\r\n showHours = 'showHours',\r\n showMinutes = 'showMinutes',\r\n showSeconds = 'showSeconds',\r\n clear = 'clear',\r\n close = 'close',\r\n today = 'today',\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `date`\r\n */\r\nexport default class DateDisplay {\r\n private _context: TempusDominus;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.daysContainer);\r\n\r\n container.append(...this._daysOfTheWeek());\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(Namespace.css.calendarWeeks, Namespace.css.noHighlight);\r\n container.appendChild(div);\r\n }\r\n\r\n for (let i = 0; i < 42; i++) {\r\n if (i !== 0 && i % 7 === 0) {\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n container.appendChild(div);\r\n }\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDay);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update(): void {\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.daysContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.daysContainer,\r\n this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n })\r\n );\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(-1, Unit.month),\r\n Unit.month\r\n )\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(1, Unit.month),\r\n Unit.month\r\n )\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.month)\r\n .startOf('weekDay')\r\n .manipulate(12, Unit.hours);\r\n\r\n container\r\n .querySelectorAll(\r\n `[data-action=\"${ActionTypes.selectDay}\"], .${Namespace.css.calendarWeeks}`\r\n )\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (\r\n this._context._options.display.calendarWeeks &&\r\n containerClone.classList.contains(Namespace.css.calendarWeeks)\r\n ) {\r\n if (containerClone.innerText === '#') return;\r\n containerClone.innerText = `${innerDate.week}`;\r\n return;\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.day);\r\n\r\n if (innerDate.isBefore(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.old);\r\n }\r\n if (innerDate.isAfter(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.new);\r\n }\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.date)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.date)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n if (innerDate.isSame(new DateTime(), Unit.date)) {\r\n classes.push(Namespace.css.today);\r\n }\r\n if (innerDate.weekDay === 0 || innerDate.weekDay === 6) {\r\n classes.push(Namespace.css.weekend);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`\r\n );\r\n containerClone.setAttribute(\r\n 'data-day',\r\n `${innerDate.date}`\r\n );\r\n containerClone.innerText = innerDate.format({ day: \"numeric\" });\r\n innerDate.manipulate(1, Unit.date);\r\n });\r\n }\r\n\r\n /***\r\n * Generates an html row that contains the days of the week.\r\n * @private\r\n */\r\n private _daysOfTheWeek(): HTMLElement[] {\r\n let innerDate = this._context._viewDate.clone\r\n .startOf('weekDay')\r\n .startOf(Unit.date);\r\n const row = [];\r\n document.createElement('div');\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = '#';\r\n row.push(htmlDivElement);\r\n }\r\n\r\n for (let i = 0; i < 7; i++) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.dayOfTheWeek,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = innerDate.format({ weekday: 'short' });\r\n innerDate.manipulate(1, Unit.date);\r\n row.push(htmlDivElement);\r\n }\r\n\r\n return row;\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `month`\n */\nexport default class MonthDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.monthsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMonth);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.monthsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.monthsContainer,\n this._context._viewDate.format({ year: 'numeric' })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.year),\n Unit.year\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.year),\n Unit.year\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone.startOf(Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMonth}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.month);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.month)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.month)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${index}`);\n containerClone.innerText = `${innerDate.format({ month: 'short' })}`;\n innerDate.manipulate(1, Unit.month);\n });\n }\n}\n","import { DateTime, DateTimeFormatOptions } from './datetime';\r\nimport Namespace from './namespace';\r\nimport { DefaultOptions } from './conts';\r\nimport { TempusDominus } from './tempus-dominus';\r\n\r\nexport default interface Options {\r\n restrictions: {\r\n minDate: DateTime;\r\n maxDate: DateTime;\r\n enabledDates: DateTime[];\r\n disabledDates: DateTime[];\r\n enabledHours: number[];\r\n disabledHours: number[];\r\n disabledTimeIntervals: { from: DateTime; to: DateTime }[];\r\n daysOfWeekDisabled: number[];\r\n };\r\n display: {\r\n toolbarPlacement: 'top' | 'bottom';\r\n components: {\r\n calendar: boolean;\r\n date: boolean;\r\n month: boolean;\r\n year: boolean;\r\n decades: boolean;\r\n clock: boolean;\r\n hours: boolean;\r\n minutes: boolean;\r\n seconds: boolean;\r\n useTwentyfourHour: boolean;\r\n };\r\n buttons: { today: boolean; close: boolean; clear: boolean };\r\n calendarWeeks: boolean;\r\n icons: {\r\n date: string;\r\n next: string;\r\n previous: string;\r\n today: string;\r\n clear: string;\r\n time: string;\r\n up: string;\r\n type: 'icons' | 'sprites';\r\n down: string;\r\n close: string;\r\n };\r\n viewMode: 'clock' | 'calendar' | 'months' | 'years' | 'decades';\r\n sideBySide: boolean;\r\n inline: boolean;\r\n keepOpen: boolean;\r\n };\r\n stepping: number;\r\n useCurrent: boolean;\r\n defaultDate: DateTime;\r\n localization: {\r\n nextMonth: string;\r\n pickHour: string;\r\n incrementSecond: string;\r\n nextDecade: string;\r\n selectDecade: string;\r\n dayViewHeaderFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\r\n decrementHour: string;\r\n selectDate: string;\r\n incrementHour: string;\r\n previousCentury: string;\r\n decrementSecond: string;\r\n today: string;\r\n previousMonth: string;\r\n selectYear: string;\r\n pickSecond: string;\r\n nextCentury: string;\r\n close: string;\r\n incrementMinute: string;\r\n selectTime: string;\r\n clear: string;\r\n toggleMeridiem: string;\r\n selectMonth: string;\r\n decrementMinute: string;\r\n pickMinute: string;\r\n nextYear: string;\r\n previousYear: string;\r\n previousDecade: string;\r\n locale: string;\r\n };\r\n keepInvalid: boolean;\r\n debug: boolean;\r\n allowInputToggle: boolean;\r\n viewDate: DateTime;\r\n multipleDates: boolean;\r\n multipleDatesSeparator: string;\r\n promptTimeOnDateChange: boolean;\r\n promptTimeOnDateChangeTransitionDelay: number;\r\n hooks: {\r\n inputParse: (context: TempusDominus, value: any) => DateTime;\r\n inputFormat: (context: TempusDominus, date: DateTime) => string;\r\n };\r\n}\r\n\r\nexport class OptionConverter {\r\n static _mergeOptions(providedOptions: Options, mergeTo: Options): Options {\r\n const newOptions = {} as Options;\r\n let path = '';\r\n const ignoreProperties = ['inputParse', 'inputFormat'];\r\n\r\n const processKey = (key, value, providedType, defaultType) => {\r\n switch (key) {\r\n case 'defaultDate': {\r\n const dateTime = this._dateConversion(value, 'defaultDate');\r\n if (dateTime !== undefined) {\r\n return dateTime;\r\n }\r\n Namespace.errorMessages.typeMismatch(\r\n 'defaultDate',\r\n providedType,\r\n 'DateTime or Date'\r\n );\r\n }\r\n case 'viewDate': {\r\n const dateTime = this._dateConversion(value, 'viewDate');\r\n if (dateTime !== undefined) {\r\n return dateTime;\r\n }\r\n Namespace.errorMessages.typeMismatch(\r\n 'viewDate',\r\n providedType,\r\n 'DateTime or Date'\r\n );\r\n }\r\n case 'minDate': {\r\n if (value === undefined) {\r\n return value;\r\n }\r\n const dateTime = this._dateConversion(value, 'restrictions.minDate');\r\n if (dateTime !== undefined) {\r\n return dateTime;\r\n }\r\n Namespace.errorMessages.typeMismatch(\r\n 'restrictions.minDate',\r\n providedType,\r\n 'DateTime or Date'\r\n );\r\n }\r\n case 'maxDate': {\r\n if (value === undefined) {\r\n return value;\r\n }\r\n const dateTime = this._dateConversion(value, 'restrictions.maxDate');\r\n if (dateTime !== undefined) {\r\n return dateTime;\r\n }\r\n Namespace.errorMessages.typeMismatch(\r\n 'restrictions.maxDate',\r\n providedType,\r\n 'DateTime or Date'\r\n );\r\n }\r\n case 'disabledHours':\r\n if (value === undefined) {\r\n return [];\r\n }\r\n this._typeCheckNumberArray(\r\n 'restrictions.disabledHours',\r\n value,\r\n providedType\r\n );\r\n if (value.filter((x) => x < 0 || x > 24).length > 0)\r\n Namespace.errorMessages.numbersOutOfRage(\r\n 'restrictions.disabledHours',\r\n 0,\r\n 23\r\n );\r\n return value;\r\n case 'enabledHours':\r\n if (value === undefined) {\r\n return [];\r\n }\r\n this._typeCheckNumberArray(\r\n 'restrictions.enabledHours',\r\n value,\r\n providedType\r\n );\r\n if (value.filter((x) => x < 0 || x > 24).length > 0)\r\n Namespace.errorMessages.numbersOutOfRage(\r\n 'restrictions.enabledHours',\r\n 0,\r\n 23\r\n );\r\n return value;\r\n case 'daysOfWeekDisabled':\r\n if (value === undefined) {\r\n return [];\r\n }\r\n this._typeCheckNumberArray(\r\n 'restrictions.daysOfWeekDisabled',\r\n value,\r\n providedType\r\n );\r\n if (value.filter((x) => x < 0 || x > 6).length > 0)\r\n Namespace.errorMessages.numbersOutOfRage(\r\n 'restrictions.daysOfWeekDisabled',\r\n 0,\r\n 6\r\n );\r\n return value;\r\n case 'enabledDates':\r\n if (value === undefined) {\r\n return [];\r\n }\r\n this._typeCheckDateArray(\r\n 'restrictions.enabledDates',\r\n value,\r\n providedType\r\n );\r\n return value;\r\n case 'disabledDates':\r\n if (value === undefined) {\r\n return [];\r\n }\r\n this._typeCheckDateArray(\r\n 'restrictions.disabledDates',\r\n value,\r\n providedType\r\n );\r\n return value;\r\n case 'disabledTimeIntervals':\r\n if (value === undefined) {\r\n return [];\r\n }\r\n if (!Array.isArray(value)) {\r\n Namespace.errorMessages.typeMismatch(\r\n key,\r\n providedType,\r\n 'array of { from: DateTime|Date, to: DateTime|Date }'\r\n );\r\n }\r\n const valueObject = value as { from: any; to: any }[];\r\n for (let i = 0; i < valueObject.length; i++) {\r\n Object.keys(valueObject[i]).forEach((vk) => {\r\n const subOptionName = `${key}[${i}].${vk}`;\r\n let d = valueObject[i][vk];\r\n const dateTime = this._dateConversion(d, subOptionName);\r\n if (!dateTime) {\r\n Namespace.errorMessages.typeMismatch(\r\n subOptionName,\r\n typeof d,\r\n 'DateTime or Date'\r\n );\r\n }\r\n valueObject[i][vk] = dateTime;\r\n });\r\n }\r\n return valueObject;\r\n case 'toolbarPlacement':\r\n case 'type':\r\n case 'viewMode':\r\n case 'dayViewHeaderFormat':\r\n const optionValues = {\r\n toolbarPlacement: ['top', 'bottom', 'default'],\r\n type: ['icons', 'sprites'],\r\n viewMode: ['clock', 'calendar', 'months', 'years', 'decades'],\r\n dayViewHeaderFormat: [\r\n 'numeric',\r\n '2-digit',\r\n 'long',\r\n 'short',\r\n 'narrow',\r\n ],\r\n };\r\n const keyOptions = optionValues[key];\r\n if (!keyOptions.includes(value))\r\n Namespace.errorMessages.unexpectedOptionValue(\r\n path.substring(1),\r\n value,\r\n keyOptions\r\n );\r\n\r\n return value;\r\n case 'inputParse':\r\n case 'inputFormat':\r\n return value;\r\n default:\r\n switch (defaultType) {\r\n case 'boolean':\r\n return value === 'true' || value === true;\r\n case 'number':\r\n return +value;\r\n case 'string':\r\n return value.toString();\r\n case 'object':\r\n return {};\r\n case 'function':\r\n return value;\r\n default:\r\n Namespace.errorMessages.typeMismatch(\r\n path.substring(1),\r\n providedType,\r\n defaultType\r\n );\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * The spread operator caused sub keys to be missing after merging.\r\n * This is to fix that issue by using spread on the child objects first.\r\n * Also handles complex options like disabledDates\r\n * @param provided An option from new providedOptions\r\n * @param mergeOption Default option to compare types against\r\n * @param copyTo Destination object. This was add to prevent reference copies\r\n */\r\n const spread = (provided, mergeOption, copyTo) => {\r\n const unsupportedOptions = Object.keys(provided).filter(\r\n (x) => !Object.keys(mergeOption).includes(x)\r\n );\r\n if (unsupportedOptions.length > 0) {\r\n const flattenedOptions = OptionConverter._flattenDefaultOptions;\r\n\r\n const errors = unsupportedOptions.map((x) => {\r\n let error = `\"${path.substring(1)}.${x}\" in not a known option.`;\r\n let didYouMean = flattenedOptions.find((y) => y.includes(x));\r\n if (didYouMean) error += `Did you mean \"${didYouMean}\"?`;\r\n return error;\r\n });\r\n Namespace.errorMessages.unexpectedOptions(errors);\r\n }\r\n Object.keys(mergeOption).forEach((key) => {\r\n const defaultOptionValue = mergeOption[key];\r\n let providedType = typeof provided[key];\r\n let defaultType = typeof defaultOptionValue;\r\n let value = provided[key];\r\n if (!provided.hasOwnProperty(key)) {\r\n if (\r\n defaultType === 'undefined' ||\r\n (value?.length === 0 && Array.isArray(defaultOptionValue))\r\n ) {\r\n copyTo[key] = defaultOptionValue;\r\n return;\r\n }\r\n provided[key] = defaultOptionValue;\r\n value = provided[key];\r\n }\r\n path += `.${key}`;\r\n copyTo[key] = processKey(key, value, providedType, defaultType);\r\n\r\n if (\r\n typeof defaultOptionValue !== 'object' ||\r\n ignoreProperties.includes(key)\r\n ) {\r\n path = path.substring(0, path.lastIndexOf(`.${key}`));\r\n return;\r\n }\r\n if (!Array.isArray(provided[key])) {\r\n spread(provided[key], defaultOptionValue, copyTo[key]);\r\n path = path.substring(0, path.lastIndexOf(`.${key}`));\r\n }\r\n path = path.substring(0, path.lastIndexOf(`.${key}`));\r\n });\r\n };\r\n spread(providedOptions, mergeTo, newOptions);\r\n\r\n return newOptions;\r\n }\r\n\r\n static _dataToOptions(element, options: Options): Options {\r\n const eData = element.dataset;\r\n if (\r\n !eData ||\r\n Object.keys(eData).length === 0 ||\r\n eData.constructor !== DOMStringMap\r\n )\r\n return options;\r\n let dataOptions = {} as Options;\r\n\r\n // because dataset returns camelCase including the 'td' key the option\r\n // key won't align\r\n const objectToNormalized = (object) => {\r\n const lowered = {};\r\n Object.keys(object).forEach((x) => {\r\n lowered[x.toLowerCase()] = x;\r\n });\r\n\r\n return lowered;\r\n };\r\n\r\n const rabbitHole = (\r\n split: string[],\r\n index: number,\r\n optionSubgroup: {},\r\n value: any\r\n ) => {\r\n // first round = display { ... }\r\n const normalizedOptions = objectToNormalized(optionSubgroup);\r\n\r\n const keyOption = normalizedOptions[split[index].toLowerCase()];\r\n const internalObject = {};\r\n\r\n if (keyOption === undefined) return internalObject;\r\n\r\n // if this is another object, continue down the rabbit hole\r\n if (optionSubgroup[keyOption].constructor === Object) {\r\n index++;\r\n internalObject[keyOption] = rabbitHole(\r\n split,\r\n index,\r\n optionSubgroup[keyOption],\r\n value\r\n );\r\n } else {\r\n internalObject[keyOption] = value;\r\n }\r\n return internalObject;\r\n };\r\n const optionsLower = objectToNormalized(options);\r\n\r\n Object.keys(eData)\r\n .filter((x) => x.startsWith(Namespace.dataKey))\r\n .map((x) => x.substring(2))\r\n .forEach((key) => {\r\n let keyOption = optionsLower[key.toLowerCase()];\r\n\r\n // dataset merges dashes to camelCase... yay\r\n // i.e. key = display_components_seconds\r\n if (key.includes('_')) {\r\n // [display, components, seconds]\r\n const split = key.split('_');\r\n // display\r\n keyOption = optionsLower[split[0].toLowerCase()];\r\n if (\r\n keyOption !== undefined &&\r\n options[keyOption].constructor === Object\r\n ) {\r\n dataOptions[keyOption] = rabbitHole(\r\n split,\r\n 1,\r\n options[keyOption],\r\n eData[`td${key}`]\r\n );\r\n }\r\n }\r\n // or key = multipleDate\r\n else if (keyOption !== undefined) {\r\n dataOptions[keyOption] = eData[`td${key}`];\r\n }\r\n });\r\n\r\n return this._mergeOptions(dataOptions, options);\r\n }\r\n\r\n /**\r\n * Attempts to prove `d` is a DateTime or Date or can be converted into one.\r\n * @param d If a string will attempt creating a date from it.\r\n * @private\r\n */\r\n static _dateTypeCheck(d: any): DateTime | null {\r\n if (d.constructor.name === DateTime.name) return d;\r\n if (d.constructor.name === Date.name) {\r\n return DateTime.convert(d);\r\n }\r\n if (typeof d === typeof '') {\r\n const dateTime = new DateTime(d);\r\n if (JSON.stringify(dateTime) === 'null') {\r\n return null;\r\n }\r\n return dateTime;\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Type checks that `value` is an array of Date or DateTime\r\n * @param optionName Provides text to error messages e.g. disabledDates\r\n * @param value Option value\r\n * @param providedType Used to provide text to error messages\r\n */\r\n static _typeCheckDateArray(optionName: string, value, providedType: string) {\r\n if (!Array.isArray(value)) {\r\n Namespace.errorMessages.typeMismatch(\r\n optionName,\r\n providedType,\r\n 'array of DateTime or Date'\r\n );\r\n }\r\n for (let i = 0; i < value.length; i++) {\r\n let d = value[i];\r\n const dateTime = this._dateConversion(d, optionName);\r\n if (!dateTime) {\r\n Namespace.errorMessages.typeMismatch(\r\n optionName,\r\n typeof d,\r\n 'DateTime or Date'\r\n );\r\n }\r\n value[i] = dateTime;\r\n }\r\n }\r\n\r\n /**\r\n * Type checks that `value` is an array of numbers\r\n * @param optionName Provides text to error messages e.g. disabledDates\r\n * @param value Option value\r\n * @param providedType Used to provide text to error messages\r\n */\r\n static _typeCheckNumberArray(\r\n optionName: string,\r\n value,\r\n providedType: string\r\n ) {\r\n if (!Array.isArray(value) || value.find((x) => typeof x !== typeof 0)) {\r\n Namespace.errorMessages.typeMismatch(\r\n optionName,\r\n providedType,\r\n 'array of numbers'\r\n );\r\n }\r\n return;\r\n }\r\n\r\n /**\r\n * Attempts to convert `d` to a DateTime object\r\n * @param d value to convert\r\n * @param optionName Provides text to error messages e.g. disabledDates\r\n */\r\n static _dateConversion(d: any, optionName: string) {\r\n if (typeof d === typeof '' && optionName !== 'input') {\r\n Namespace.errorMessages.dateString();\r\n }\r\n\r\n const converted = this._dateTypeCheck(d);\r\n\r\n if (!converted) {\r\n Namespace.errorMessages.failedToParseDate(\r\n optionName,\r\n d,\r\n optionName === 'input'\r\n );\r\n }\r\n return converted;\r\n }\r\n\r\n private static _flatback: string[];\r\n\r\n private static get _flattenDefaultOptions(): string[] {\r\n if (this._flatback) return this._flatback;\r\n const deepKeys = (t, pre = []) =>\r\n Array.isArray(t)\r\n ? []\r\n : Object(t) === t\r\n ? Object.entries(t).flatMap(([k, v]) => deepKeys(v, [...pre, k]))\r\n : pre.join('.');\r\n\r\n this._flatback = deepKeys(DefaultOptions);\r\n\r\n return this._flatback;\r\n }\r\n\r\n /**\r\n * Some options conflict like min/max date. Verify that these kinds of options\r\n * are set correctly.\r\n * @param config\r\n */\r\n static _validateConflcits(config: Options) {\r\n if (config.restrictions.minDate && config.restrictions.maxDate) {\r\n if (config.restrictions.minDate.isAfter(config.restrictions.maxDate)) {\r\n Namespace.errorMessages.conflictingConfiguration(\r\n 'minDate is after maxDate'\r\n );\r\n }\r\n\r\n if (config.restrictions.maxDate.isBefore(config.restrictions.minDate)) {\r\n Namespace.errorMessages.conflictingConfiguration(\r\n 'maxDate is before minDate'\r\n );\r\n }\r\n }\r\n }\r\n}\r\n","import { TempusDominus } from './tempus-dominus';\r\nimport { DateTime, Unit } from './datetime';\r\nimport Namespace from './namespace';\r\nimport { ChangeEvent, FailEvent } from './event-types';\r\nimport { OptionConverter } from './options';\r\n\r\nexport default class Dates {\r\n private _dates: DateTime[] = [];\r\n private _context: TempusDominus;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Returns the array of selected dates\r\n */\r\n get picked(): DateTime[] {\r\n return this._dates;\r\n }\r\n\r\n /**\r\n * Returns the last picked value.\r\n */\r\n get lastPicked(): DateTime {\r\n return this._dates[this.lastPickedIndex];\r\n }\r\n\r\n /**\r\n * Returns the length of picked dates -1 or 0 if none are selected.\r\n */\r\n get lastPickedIndex(): number {\r\n if (this._dates.length === 0) return 0;\r\n return this._dates.length - 1;\r\n }\r\n\r\n /**\r\n * Adds a new DateTime to selected dates array\r\n * @param date\r\n */\r\n add(date: DateTime): void {\r\n this._dates.push(date);\r\n }\r\n\r\n /**\r\n * Tries to convert the provided value to a DateTime object.\r\n * If value is null|undefined then clear the value of the provided index (or 0).\r\n * @param value Value to convert or null|undefined\r\n * @param index When using multidates this is the index in the array\r\n * @param from Used in the warning message, useful for debugging.\r\n */\r\n set(value: any, index?: number, from: string = 'date.set') {\r\n if (!value) this._setValue(value, index);\r\n const converted = OptionConverter._dateConversion(value, from);\r\n if (converted) this._setValue(converted, index);\r\n }\r\n\r\n /**\r\n * Returns true if the `targetDate` is part of the selected dates array.\r\n * If `unit` is provided then a granularity to that unit will be used.\r\n * @param targetDate\r\n * @param unit\r\n */\r\n isPicked(targetDate: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this._dates.find((x) => x === targetDate) !== undefined;\r\n\r\n const format = Dates.getFormatByUnit(unit);\r\n\r\n let innerDateFormatted = targetDate.format(format);\r\n\r\n return (\r\n this._dates\r\n .map((x) => x.format(format))\r\n .find((x) => x === innerDateFormatted) !== undefined\r\n );\r\n }\r\n\r\n /**\r\n * Returns the index at which `targetDate` is in the array.\r\n * This is used for updating or removing a date when multi-date is used\r\n * If `unit` is provided then a granularity to that unit will be used.\r\n * @param targetDate\r\n * @param unit\r\n */\r\n pickedIndex(targetDate: DateTime, unit?: Unit): number {\r\n if (!unit) return this._dates.indexOf(targetDate);\r\n\r\n const format = Dates.getFormatByUnit(unit);\r\n\r\n let innerDateFormatted = targetDate.format(format);\r\n\r\n return this._dates.map((x) => x.format(format)).indexOf(innerDateFormatted);\r\n }\r\n\r\n /**\r\n * Clears all selected dates.\r\n */\r\n clear() {\r\n this._context._unset = true;\r\n this._context._triggerEvent({\r\n type: Namespace.events.change,\r\n date: undefined,\r\n oldDate: this.lastPicked,\r\n isClear: true,\r\n isValid: true,\r\n } as ChangeEvent);\r\n this._dates = [];\r\n }\r\n\r\n /**\r\n * Find the \"book end\" years given a `year` and a `factor`\r\n * @param factor e.g. 100 for decades\r\n * @param year e.g. 2021\r\n */\r\n static getStartEndYear(\r\n factor: number,\r\n year: number\r\n ): [number, number, number] {\r\n const step = factor / 10,\r\n startYear = Math.floor(year / factor) * factor,\r\n endYear = startYear + step * 9,\r\n focusValue = Math.floor(year / step) * step;\r\n return [startYear, endYear, focusValue];\r\n }\r\n\r\n /**\r\n * Do not use direectly. Attempts to either clear or set the `target` date at `index`.\r\n * If the `target` is null then the date will be cleared.\r\n * If multi-date is being used then it will be removed from the array.\r\n * If `target` is valid and multi-date is used then if `index` is\r\n * provided the date at that index will be replaced, otherwise it is appended.\r\n * @param target\r\n * @param index\r\n */\r\n _setValue(target?: DateTime, index?: number): void {\r\n const noIndex = typeof index === 'undefined',\r\n isClear = !target && noIndex;\r\n let oldDate = this._context._unset ? null : this._dates[index];\r\n if (!oldDate && !this._context._unset && noIndex && isClear) {\r\n oldDate = this.lastPicked;\r\n }\r\n\r\n const updateInput = () => {\r\n if (!this._context._input) return;\r\n\r\n let newValue = this._context._options.hooks.inputFormat(\r\n this._context,\r\n target\r\n );\r\n if (this._context._options.multipleDates) {\r\n newValue = this._dates\r\n .map((d) =>\r\n this._context._options.hooks.inputFormat(this._context, d)\r\n )\r\n .join(this._context._options.multipleDatesSeparator);\r\n }\r\n if (this._context._input.value != newValue)\r\n this._context._input.value = newValue;\r\n };\r\n\r\n if (target && oldDate?.isSame(target)) {\r\n updateInput();\r\n return;\r\n }\r\n\r\n // case of calling setValue(null)\r\n if (!target) {\r\n if (\r\n !this._context._options.multipleDates ||\r\n this._dates.length === 1 ||\r\n isClear\r\n ) {\r\n this._context._unset = true;\r\n this._dates = [];\r\n } else {\r\n this._dates.splice(index, 1);\r\n }\r\n this._context._triggerEvent({\r\n type: Namespace.events.change,\r\n date: undefined,\r\n oldDate,\r\n isClear,\r\n isValid: true,\r\n } as ChangeEvent);\r\n\r\n updateInput();\r\n this._context._display._update('all');\r\n return;\r\n }\r\n\r\n index = index || 0;\r\n target = target.clone;\r\n\r\n // minute stepping is being used, force the minute to the closest value\r\n if (this._context._options.stepping !== 1) {\r\n target.minutes =\r\n Math.round(target.minutes / this._context._options.stepping) *\r\n this._context._options.stepping;\r\n target.seconds = 0;\r\n }\r\n\r\n if (this._context._validation.isValid(target)) {\r\n this._dates[index] = target;\r\n this._context._viewDate = target.clone;\r\n\r\n updateInput();\r\n\r\n this._context._unset = false;\r\n this._context._display._update('all');\r\n this._context._triggerEvent({\r\n type: Namespace.events.change,\r\n date: target,\r\n oldDate,\r\n isClear,\r\n isValid: true,\r\n } as ChangeEvent);\r\n return;\r\n }\r\n\r\n if (this._context._options.keepInvalid) {\r\n this._dates[index] = target;\r\n this._context._viewDate = target.clone;\r\n\r\n updateInput();\r\n\r\n this._context._triggerEvent({\r\n type: Namespace.events.change,\r\n date: target,\r\n oldDate,\r\n isClear,\r\n isValid: false,\r\n } as ChangeEvent);\r\n }\r\n this._context._triggerEvent({\r\n type: Namespace.events.error,\r\n reason: Namespace.errorMessages.failedToSetInvalidDate,\r\n date: target,\r\n oldDate,\r\n } as FailEvent);\r\n }\r\n\r\n /**\r\n * Returns a format object based on the granularity of `unit`\r\n * @param unit\r\n */\r\n static getFormatByUnit(unit: Unit): object {\r\n switch (unit) {\r\n case 'date':\r\n return { dateStyle: 'short' };\r\n case 'month':\r\n return {\r\n month: 'numeric',\r\n year: 'numeric',\r\n };\r\n case 'year':\r\n return { year: 'numeric' };\r\n }\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\nimport Dates from '../../dates';\r\n\r\n/**\r\n * Creates and updates the grid for `year`\r\n */\r\nexport default class YearDisplay {\r\n private _context: TempusDominus;\r\n private _startYear: DateTime;\r\n private _endYear: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.yearsContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectYear);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 10,\r\n this._context._viewDate.year\r\n );\r\n this._startYear = this._context._viewDate.clone.manipulate(-1, Unit.year);\r\n this._endYear = this._context._viewDate.clone.manipulate(10, Unit.year);\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.yearsContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.yearsContainer,\r\n `${this._startYear.format({ year: 'numeric' })}-${this._endYear.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startYear, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endYear, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.year)\r\n .manipulate(-1, Unit.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectYear}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n let classes = [];\r\n classes.push(Namespace.css.year);\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.year)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.year)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute('data-value', `${innerDate.year}`);\r\n containerClone.innerText = innerDate.format({ year: \"numeric\" });\r\n\r\n innerDate.manipulate(1, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport Dates from '../../dates';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `seconds`\r\n */\r\nexport default class DecadeDisplay {\r\n private _context: TempusDominus;\r\n private _startDecade: DateTime;\r\n private _endDecade: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker() {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.decadesContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDecade);\r\n container.appendChild(div);\r\n }\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 100,\r\n this._context._viewDate.year\r\n );\r\n this._startDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._startDecade.year = start;\r\n this._endDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._endDecade.year = end;\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.decadesContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.decadesContainer,\r\n `${this._startDecade.format({ year: 'numeric' })}-${this._endDecade.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startDecade, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endDecade, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n const pickedYears = this._context.dates.picked.map((x) => x.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectDecade}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (index === 0) {\r\n containerClone.classList.add(Namespace.css.old);\r\n if (this._startDecade.year - 10 < 0) {\r\n containerClone.textContent = ' ';\r\n previous.classList.add(Namespace.css.disabled);\r\n containerClone.classList.add(Namespace.css.disabled);\r\n containerClone.setAttribute('data-value', ``);\r\n return;\r\n } else {\r\n containerClone.innerText = this._startDecade.clone.manipulate(-10, Unit.year).format({ year: 'numeric' });\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n return;\r\n }\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.decade);\r\n const startDecadeYear = this._startDecade.year;\r\n const endDecadeYear = this._startDecade.year + 9;\r\n\r\n if (\r\n !this._context._unset &&\r\n pickedYears.filter((x) => x >= startDecadeYear && x <= endDecadeYear)\r\n .length > 0\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n containerClone.innerText = `${this._startDecade.format({ year: 'numeric' })}`;\r\n\r\n this._startDecade.manipulate(10, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates the clock display\n */\nexport default class TimeDisplay {\n private _context: TempusDominus;\n private _gridColumns = '';\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the clock display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.clockContainer);\n\n container.append(...this._grid());\n\n return container;\n }\n\n /**\n * Populates the various elements with in the clock display\n * like the current hour and if the manipulation icons are enabled.\n * @private\n */\n _update(): void {\n const timesDiv = (\n this._context._display.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0]\n );\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n timesDiv\n .querySelectorAll('.disabled')\n .forEach((element) => element.classList.remove(Namespace.css.disabled));\n\n if (this._context._options.display.components.hours) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.hours}]`\n ).innerText = this._context._options.display.components.useTwentyfourHour\n ? lastPicked.hoursFormatted\n : lastPicked.twelveHoursFormatted;\n }\n\n if (this._context._options.display.components.minutes) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.minutes}]`\n ).innerText = lastPicked.minutesFormatted;\n }\n\n if (this._context._options.display.components.seconds) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.seconds}]`\n ).innerText = lastPicked.secondsFormatted;\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n const toggle = timesDiv.querySelector(\n `[data-action=${ActionTypes.toggleMeridiem}]`\n );\n\n toggle.innerText = lastPicked.meridiem();\n\n if (\n !this._context._validation.isValid(\n lastPicked.clone.manipulate(\n lastPicked.hours >= 12 ? -12 : 12,\n Unit.hours\n )\n )\n ) {\n toggle.classList.add(Namespace.css.disabled);\n } else {\n toggle.classList.remove(Namespace.css.disabled);\n }\n }\n\n timesDiv.style.gridTemplateAreas = `\"${this._gridColumns}\"`;\n }\n\n /**\n * Creates the table for the clock display depending on what options are selected.\n * @private\n */\n private _grid(): HTMLElement[] {\n this._gridColumns = '';\n const top = [],\n middle = [],\n bottom = [],\n separator = document.createElement('div'),\n upIcon = this._context._display._iconTag(\n this._context._options.display.icons.up\n ),\n downIcon = this._context._display._iconTag(\n this._context._options.display.icons.down\n );\n\n separator.classList.add(Namespace.css.separator, Namespace.css.noHighlight);\n const separatorColon = separator.cloneNode(true);\n separatorColon.innerHTML = ':';\n\n const getSeparator = (colon = false): HTMLElement => {\n return colon\n ? separatorColon.cloneNode(true)\n : separator.cloneNode(true);\n };\n\n if (this._context._options.display.components.hours) {\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.incrementHours);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickHour\n );\n divElement.setAttribute('data-action', ActionTypes.showHours);\n divElement.setAttribute('data-time-component', Unit.hours);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.decrementHours);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n this._gridColumns += 'a';\n }\n\n if (this._context._options.display.components.minutes) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.hours) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.incrementMinutes);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickMinute\n );\n divElement.setAttribute('data-action', ActionTypes.showMinutes);\n divElement.setAttribute('data-time-component', Unit.minutes);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.decrementMinutes);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (this._context._options.display.components.seconds) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.minutes) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.incrementSeconds);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickSecond\n );\n divElement.setAttribute('data-action', ActionTypes.showSeconds);\n divElement.setAttribute('data-time-component', Unit.seconds);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.decrementSeconds);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n this._gridColumns += ' a';\n let divElement = getSeparator();\n top.push(divElement);\n\n let button = document.createElement('button');\n button.setAttribute(\n 'title',\n this._context._options.localization.toggleMeridiem\n );\n button.setAttribute('data-action', ActionTypes.toggleMeridiem);\n button.setAttribute('tabindex', '-1');\n button.classList.add(Namespace.css.toggleMeridiem);\n\n divElement = document.createElement('div');\n divElement.classList.add(Namespace.css.noHighlight);\n divElement.appendChild(button);\n middle.push(divElement);\n\n divElement = getSeparator();\n bottom.push(divElement);\n }\n\n this._gridColumns = this._gridColumns.trim();\n\n return [...top, ...middle, ...bottom];\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `hours`\n */\nexport default class HourDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.hourContainer);\n\n for (\n let i = 0;\n i <\n (this._context._options.display.components.useTwentyfourHour ? 24 : 12);\n i++\n ) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectHour);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.hourContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.date);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectHour}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.hour);\n\n if (!this._context._validation.isValid(innerDate, Unit.hours)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.hours}`);\n containerClone.innerText = this._context._options.display.components\n .useTwentyfourHour\n ? innerDate.hoursFormatted\n : innerDate.twelveHoursFormatted;\n innerDate.manipulate(1, Unit.hours);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `minutes`\n */\nexport default class MinuteDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.minuteContainer);\n\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n for (let i = 0; i < 60 / step; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMinute);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.minuteContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.hours);\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMinute}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.minute);\n\n if (!this._context._validation.isValid(innerDate, Unit.minutes)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.minutes}`);\n containerClone.innerText = innerDate.minutesFormatted;\n innerDate.manipulate(step, Unit.minutes);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class secondDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.secondContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectSecond);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.secondContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.minutes);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectSecond}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.second);\n\n if (!this._context._validation.isValid(innerDate, Unit.seconds)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.seconds}`);\n containerClone.innerText = innerDate.secondsFormatted;\n innerDate.manipulate(5, Unit.seconds);\n });\n }\n}\n","import DateDisplay from './calendar/date-display';\r\nimport MonthDisplay from './calendar/month-display';\r\nimport YearDisplay from './calendar/year-display';\r\nimport DecadeDisplay from './calendar/decade-display';\r\nimport TimeDisplay from './time/time-display';\r\nimport HourDisplay from './time/hour-display';\r\nimport MinuteDisplay from './time/minute-display';\r\nimport SecondDisplay from './time/second-display';\r\nimport { DateTime, Unit } from '../datetime';\r\nimport { DatePickerModes } from '../conts';\r\nimport { TempusDominus } from '../tempus-dominus';\r\nimport { ActionTypes } from '../actions';\r\nimport { createPopper } from '@popperjs/core';\r\nimport Namespace from '../namespace';\r\nimport { HideEvent } from '../event-types';\r\n\r\n/**\r\n * Main class for all things display related.\r\n */\r\nexport default class Display {\r\n private _context: TempusDominus;\r\n private _dateDisplay: DateDisplay;\r\n private _monthDisplay: MonthDisplay;\r\n private _yearDisplay: YearDisplay;\r\n private _decadeDisplay: DecadeDisplay;\r\n private _timeDisplay: TimeDisplay;\r\n private _widget: HTMLElement;\r\n private _hourDisplay: HourDisplay;\r\n private _minuteDisplay: MinuteDisplay;\r\n private _secondDisplay: SecondDisplay;\r\n private _popperInstance: any;\r\n private _isVisible = false;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this._dateDisplay = new DateDisplay(context);\r\n this._monthDisplay = new MonthDisplay(context);\r\n this._yearDisplay = new YearDisplay(context);\r\n this._decadeDisplay = new DecadeDisplay(context);\r\n this._timeDisplay = new TimeDisplay(context);\r\n this._hourDisplay = new HourDisplay(context);\r\n this._minuteDisplay = new MinuteDisplay(context);\r\n this._secondDisplay = new SecondDisplay(context);\r\n\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Returns the widget body or undefined\r\n * @private\r\n */\r\n get widget(): HTMLElement | undefined {\r\n return this._widget;\r\n }\r\n\r\n /**\r\n * Returns this visible state of the picker (shown)\r\n */\r\n get isVisible() {\r\n return this._isVisible;\r\n }\r\n\r\n /**\r\n * Updates the table for a particular unit. Used when an option as changed or\r\n * whenever the class list might need to be refreshed.\r\n * @param unit\r\n * @private\r\n */\r\n _update(unit: Unit | 'clock' | 'calendar' | 'all'): void {\r\n if (!this.widget) return;\r\n //todo do I want some kind of error catching or other guards here?\r\n switch (unit) {\r\n case Unit.seconds:\r\n this._secondDisplay._update();\r\n break;\r\n case Unit.minutes:\r\n this._minuteDisplay._update();\r\n break;\r\n case Unit.hours:\r\n this._hourDisplay._update();\r\n break;\r\n case Unit.date:\r\n this._dateDisplay._update();\r\n break;\r\n case Unit.month:\r\n this._monthDisplay._update();\r\n break;\r\n case Unit.year:\r\n this._yearDisplay._update();\r\n break;\r\n case 'clock':\r\n this._timeDisplay._update();\r\n this._update(Unit.hours);\r\n this._update(Unit.minutes);\r\n this._update(Unit.seconds);\r\n break;\r\n case 'calendar':\r\n this._update(Unit.date);\r\n this._update(Unit.year);\r\n this._update(Unit.month);\r\n this._decadeDisplay._update();\r\n this._updateCalendarHeader();\r\n break;\r\n case 'all':\r\n if (this._hasTime) {\r\n this._update('clock');\r\n }\r\n if (this._hasDate) {\r\n this._update('calendar');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Shows the picker and creates a Popper instance if needed.\r\n * Add document click event to hide when clicking outside the picker.\r\n * @fires Events#show\r\n */\r\n show(): void {\r\n if (this.widget == undefined) {\r\n if (\r\n this._context._options.useCurrent &&\r\n !this._context._options.defaultDate &&\r\n !this._context._input?.value\r\n ) {\r\n //todo in the td4 branch a pr changed this to allow granularity\r\n const date = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n if (!this._context._options.keepInvalid) {\r\n let tries = 0;\r\n let direction = 1;\r\n if (this._context._options.restrictions.maxDate?.isBefore(date)) {\r\n direction = -1;\r\n }\r\n while (!this._context._validation.isValid(date)) {\r\n date.manipulate(direction, Unit.date);\r\n if (tries > 31) break;\r\n tries++;\r\n }\r\n }\r\n this._context.dates._setValue(date);\r\n }\r\n\r\n if (this._context._options.defaultDate) {\r\n this._context.dates._setValue(this._context._options.defaultDate);\r\n }\r\n\r\n this._buildWidget();\r\n if (this._hasDate) {\r\n this._showMode();\r\n }\r\n\r\n if (!this._context._options.display.inline) {\r\n document.body.appendChild(this.widget);\r\n\r\n this._popperInstance = createPopper(\r\n this._context._element,\r\n this.widget,\r\n {\r\n modifiers: [{ name: 'eventListeners', enabled: true }],\r\n //#2400\r\n placement:\r\n document.documentElement.dir === 'rtl'\r\n ? 'bottom-end'\r\n : 'bottom-start',\r\n }\r\n );\r\n } else {\r\n this._context._element.appendChild(this.widget);\r\n }\r\n\r\n if (this._context._options.display.viewMode == 'clock') {\r\n this._context._action.do(\r\n {\r\n currentTarget: this.widget.querySelector(\r\n `.${Namespace.css.timeContainer}`\r\n ),\r\n },\r\n ActionTypes.showClock\r\n );\r\n }\r\n\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.addEventListener('click', this._actionsClickEvent)\r\n );\r\n\r\n // show the clock when using sideBySide\r\n if (this._context._options.display.sideBySide) {\r\n this._timeDisplay._update();\r\n (\r\n this.widget.getElementsByClassName(\r\n Namespace.css.clockContainer\r\n )[0] as HTMLElement\r\n ).style.display = 'grid';\r\n }\r\n }\r\n\r\n this.widget.classList.add(Namespace.css.show);\r\n if (!this._context._options.display.inline) {\r\n this._popperInstance.update();\r\n document.addEventListener('click', this._documentClickEvent);\r\n }\r\n this._context._triggerEvent({ type: Namespace.events.show });\r\n this._isVisible = true;\r\n }\r\n\r\n /**\r\n * Changes the calendar view mode. E.g. month <-> year\r\n * @param direction -/+ number to move currentViewMode\r\n * @private\r\n */\r\n _showMode(direction?: number): void {\r\n if (!this.widget) {\r\n return;\r\n }\r\n if (direction) {\r\n const max = Math.max(\r\n this._context._minViewModeNumber,\r\n Math.min(3, this._context._currentViewMode + direction)\r\n );\r\n if (this._context._currentViewMode == max) return;\r\n this._context._currentViewMode = max;\r\n }\r\n\r\n this.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div:not(.${Namespace.css.clockContainer})`\r\n )\r\n .forEach((e: HTMLElement) => (e.style.display = 'none'));\r\n\r\n const datePickerMode = DatePickerModes[this._context._currentViewMode];\r\n let picker: HTMLElement = this.widget.querySelector(\r\n `.${datePickerMode.className}`\r\n );\r\n\r\n switch (datePickerMode.className) {\r\n case Namespace.css.decadesContainer:\r\n this._decadeDisplay._update();\r\n break;\r\n case Namespace.css.yearsContainer:\r\n this._yearDisplay._update();\r\n break;\r\n case Namespace.css.monthsContainer:\r\n this._monthDisplay._update();\r\n break;\r\n case Namespace.css.daysContainer:\r\n this._dateDisplay._update();\r\n break;\r\n }\r\n\r\n picker.style.display = 'grid';\r\n this._updateCalendarHeader();\r\n }\r\n\r\n _updateCalendarHeader() {\r\n const showing = [\r\n ...this.widget.querySelector(\r\n `.${Namespace.css.dateContainer} div[style*=\"display: grid\"]`\r\n ).classList,\r\n ].find((x) => x.startsWith(Namespace.css.dateContainer));\r\n\r\n const [previous, switcher, next] = this._context._display.widget\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switch (showing) {\r\n case Namespace.css.decadesContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousCentury\r\n );\r\n switcher.setAttribute('title', '');\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextCentury\r\n );\r\n break;\r\n case Namespace.css.yearsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousDecade\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDecade\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextDecade\r\n );\r\n break;\r\n case Namespace.css.monthsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousYear\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectYear\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextYear\r\n );\r\n break;\r\n case Namespace.css.daysContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousMonth\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectMonth\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextMonth\r\n );\r\n switcher.innerText = this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n });\r\n break;\r\n }\r\n switcher.innerText = switcher.getAttribute(showing);\r\n }\r\n\r\n /**\r\n * Hides the picker if needed.\r\n * Remove document click event to hide when clicking outside the picker.\r\n * @fires Events#hide\r\n */\r\n hide(): void {\r\n if (!this.widget || !this._isVisible) return;\r\n\r\n this.widget.classList.remove(Namespace.css.show);\r\n\r\n if (this._isVisible) {\r\n this._context._triggerEvent({\r\n type: Namespace.events.hide,\r\n date: this._context._unset\r\n ? null\r\n : this._context.dates.lastPicked\r\n ? this._context.dates.lastPicked.clone\r\n : void 0,\r\n } as HideEvent);\r\n this._isVisible = false;\r\n }\r\n\r\n document.removeEventListener('click', this._documentClickEvent);\r\n }\r\n\r\n /**\r\n * Toggles the picker's open state. Fires a show/hide event depending.\r\n */\r\n toggle() {\r\n return this._isVisible ? this.hide() : this.show();\r\n }\r\n\r\n /**\r\n * Removes document and data-action click listener and reset the widget\r\n * @private\r\n */\r\n _dispose() {\r\n document.removeEventListener('click', this._documentClickEvent);\r\n if (!this.widget) return;\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.removeEventListener('click', this._actionsClickEvent)\r\n );\r\n this.widget.parentNode.removeChild(this.widget);\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Builds the widgets html template.\r\n * @private\r\n */\r\n private _buildWidget(): HTMLElement {\r\n const template = document.createElement('div');\r\n template.classList.add(Namespace.css.widget);\r\n\r\n const dateView = document.createElement('div');\r\n dateView.classList.add(Namespace.css.dateContainer);\r\n dateView.append(\r\n this._headTemplate,\r\n this._decadeDisplay._picker,\r\n this._yearDisplay._picker,\r\n this._monthDisplay._picker,\r\n this._dateDisplay._picker\r\n );\r\n\r\n const timeView = document.createElement('div');\r\n timeView.classList.add(Namespace.css.timeContainer);\r\n timeView.appendChild(this._timeDisplay._picker);\r\n timeView.appendChild(this._hourDisplay._picker);\r\n timeView.appendChild(this._minuteDisplay._picker);\r\n timeView.appendChild(this._secondDisplay._picker);\r\n\r\n const toolbar = document.createElement('div');\r\n toolbar.classList.add(Namespace.css.toolbar);\r\n toolbar.append(...this._toolbar);\r\n\r\n if (this._context._options.display.inline) {\r\n template.classList.add(Namespace.css.inline);\r\n }\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n template.classList.add('calendarWeeks');\r\n }\r\n\r\n if (\r\n this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n template.classList.add(Namespace.css.sideBySide);\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n const row = document.createElement('div');\r\n row.classList.add('td-row');\r\n dateView.classList.add('td-half');\r\n timeView.classList.add('td-half');\r\n\r\n row.appendChild(dateView);\r\n row.appendChild(timeView);\r\n template.appendChild(row);\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n this._widget = template;\r\n return;\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n if (this._hasDate) {\r\n if (this._hasTime) {\r\n dateView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode !== 'clock')\r\n dateView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(dateView);\r\n }\r\n\r\n if (this._hasTime) {\r\n if (this._hasDate) {\r\n timeView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode === 'clock')\r\n timeView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(timeView);\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n const arrow = document.createElement('div');\r\n arrow.classList.add('arrow');\r\n arrow.setAttribute('data-popper-arrow', '');\r\n template.appendChild(arrow);\r\n\r\n this._widget = template;\r\n }\r\n\r\n /**\r\n * Returns true if the hours, minutes, or seconds component is turned on\r\n */\r\n get _hasTime(): boolean {\r\n return (\r\n this._context._options.display.components.clock &&\r\n (this._context._options.display.components.hours ||\r\n this._context._options.display.components.minutes ||\r\n this._context._options.display.components.seconds)\r\n );\r\n }\r\n\r\n /**\r\n * Returns true if the year, month, or date component is turned on\r\n */\r\n get _hasDate(): boolean {\r\n return (\r\n this._context._options.display.components.calendar &&\r\n (this._context._options.display.components.year ||\r\n this._context._options.display.components.month ||\r\n this._context._options.display.components.date)\r\n );\r\n }\r\n\r\n /**\r\n * Get the toolbar html based on options like buttons.today\r\n * @private\r\n */\r\n get _toolbar(): HTMLElement[] {\r\n const toolbar = [];\r\n\r\n if (this._context._options.display.buttons.today) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.today);\r\n div.setAttribute('title', this._context._options.localization.today);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.today)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (\r\n !this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n let title, icon;\r\n if (this._context._options.display.viewMode === 'clock') {\r\n title = this._context._options.localization.selectDate;\r\n icon = this._context._options.display.icons.date;\r\n } else {\r\n title = this._context._options.localization.selectTime;\r\n icon = this._context._options.display.icons.time;\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.togglePicker);\r\n div.setAttribute('title', title);\r\n\r\n div.appendChild(this._iconTag(icon));\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.clear) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.clear);\r\n div.setAttribute('title', this._context._options.localization.clear);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.clear)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.close) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.close);\r\n div.setAttribute('title', this._context._options.localization.close);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.close)\r\n );\r\n toolbar.push(div);\r\n }\r\n\r\n return toolbar;\r\n }\r\n\r\n /***\r\n * Builds the base header template with next and previous icons\r\n * @private\r\n */\r\n get _headTemplate(): HTMLElement {\r\n const calendarHeader = document.createElement('div');\r\n calendarHeader.classList.add(Namespace.css.calendarHeader);\r\n\r\n const previous = document.createElement('div');\r\n previous.classList.add(Namespace.css.previous);\r\n previous.setAttribute('data-action', ActionTypes.previous);\r\n previous.appendChild(\r\n this._iconTag(this._context._options.display.icons.previous)\r\n );\r\n\r\n const switcher = document.createElement('div');\r\n switcher.classList.add(Namespace.css.switch);\r\n switcher.setAttribute('data-action', ActionTypes.pickerSwitch);\r\n\r\n const next = document.createElement('div');\r\n next.classList.add(Namespace.css.next);\r\n next.setAttribute('data-action', ActionTypes.next);\r\n next.appendChild(this._iconTag(this._context._options.display.icons.next));\r\n\r\n calendarHeader.append(previous, switcher, next);\r\n return calendarHeader;\r\n }\r\n\r\n /**\r\n * Builds an icon tag as either an ``\r\n * or with icons.type is `sprites` then an svg tag instead\r\n * @param iconClass\r\n * @private\r\n */\r\n _iconTag(iconClass: string): HTMLElement {\r\n if (this._context._options.display.icons.type === 'sprites') {\r\n const svg = document.createElement('svg');\r\n svg.innerHTML = ``;\r\n return svg;\r\n }\r\n const icon = document.createElement('i');\r\n DOMTokenList.prototype.add.apply(icon.classList, iconClass.split(' '));\r\n return icon;\r\n }\r\n\r\n /**\r\n * A document click event to hide the widget if click is outside\r\n * @private\r\n * @param e MouseEvent\r\n */\r\n private _documentClickEvent = (e: MouseEvent) => {\r\n if (this._context._options.debug || (window as any).debug) return;\r\n\r\n if (\r\n this._isVisible &&\r\n !e.composedPath().includes(this.widget) && // click inside the widget\r\n !e.composedPath()?.includes(this._context._element) // click on the element\r\n ) {\r\n this.hide();\r\n }\r\n };\r\n\r\n /**\r\n * Click event for any action like selecting a date\r\n * @param e MouseEvent\r\n * @private\r\n */\r\n private _actionsClickEvent = (e: MouseEvent) => {\r\n this._context._action.do(e);\r\n };\r\n\r\n /**\r\n * Causes the widget to get rebuilt on next show. If the picker is already open\r\n * then hide and reshow it.\r\n * @private\r\n */\r\n _rebuild() {\r\n const wasVisible = this._isVisible;\r\n if (wasVisible) this.hide();\r\n this._dispose();\r\n if (wasVisible) {\r\n this.show();\r\n }\r\n }\r\n}\r\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Dates from './dates';\n\n/**\n * Main class for date validation rules based on the options provided.\n */\nexport default class Validation {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Checks to see if the target date is valid based on the rules provided in the options.\n * Granularity can be provide to chek portions of the date instead of the whole.\n * @param targetDate\n * @param granularity\n */\n isValid(targetDate: DateTime, granularity?: Unit): boolean {\n if (\n this._context._options.restrictions.disabledDates.length > 0 &&\n this._isInDisabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledDates.length > 0 &&\n !this._isInEnabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.daysOfWeekDisabled?.length > 0 &&\n this._context._options.restrictions.daysOfWeekDisabled.indexOf(\n targetDate.weekDay\n ) !== -1\n ) {\n return false;\n }\n\n if (\n this._context._options.restrictions.minDate &&\n targetDate.isBefore(\n this._context._options.restrictions.minDate,\n granularity\n )\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.maxDate &&\n targetDate.isAfter(\n this._context._options.restrictions.maxDate,\n granularity\n )\n ) {\n return false;\n }\n\n if (\n granularity === Unit.hours ||\n granularity === Unit.minutes ||\n granularity === Unit.seconds\n ) {\n if (\n this._context._options.restrictions.disabledHours.length > 0 &&\n this._isInDisabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledHours.length > 0 &&\n !this._isInEnabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.disabledTimeIntervals.length > 0\n ) {\n for (\n let i = 0;\n i < this._context._options.restrictions.disabledTimeIntervals.length;\n i++\n ) {\n if (\n targetDate.isBetween(\n this._context._options.restrictions.disabledTimeIntervals[i].from,\n this._context._options.restrictions.disabledTimeIntervals[i].to\n )\n )\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Checks to see if the disabledDates option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInDisabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledDates ||\n this._context._options.restrictions.disabledDates.length === 0\n )\n return false;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.disabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the enabledDates option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInEnabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledDates ||\n this._context._options.restrictions.enabledDates.length === 0\n )\n return true;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.enabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the disabledHours option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInDisabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledHours ||\n this._context._options.restrictions.disabledHours.length === 0\n )\n return false;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.disabledHours.find(\n (x) => x === formattedDate\n );\n }\n\n /**\n * Checks to see if the enabledHours option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInEnabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledHours ||\n this._context._options.restrictions.enabledHours.length === 0\n )\n return true;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.enabledHours.find(\n (x) => x === formattedDate\n );\n }\n}\n","import Display from './display/index';\r\nimport Validation from './validation';\r\nimport Dates from './dates';\r\nimport Actions, { ActionTypes } from './actions';\r\nimport { DatePickerModes, DefaultOptions } from './conts';\r\nimport { DateTime, DateTimeFormatOptions, Unit } from './datetime';\r\nimport Namespace from './namespace';\r\nimport Options, { OptionConverter } from './options';\r\nimport {\r\n BaseEvent,\r\n ChangeEvent,\r\n ViewUpdateEvent,\r\n FailEvent,\r\n} from './event-types';\r\n\r\n/**\r\n * A robust and powerful date/time picker component.\r\n */\r\nclass TempusDominus {\r\n dates: Dates;\r\n\r\n _options: Options;\r\n _currentViewMode = 0;\r\n _subscribers: { [key: string]: ((event: any) => {})[] } = {};\r\n _element: HTMLElement;\r\n _input: HTMLInputElement;\r\n _unset: boolean;\r\n _minViewModeNumber = 0;\r\n _display: Display;\r\n _validation: Validation;\r\n _action: Actions;\r\n private _isDisabled = false;\r\n private _notifyChangeEventContext = 0;\r\n private _toggle: HTMLElement;\r\n private _currentPromptTimeTimeout: any;\r\n\r\n constructor(element: HTMLElement, options: Options = {} as Options) {\r\n if (!element) {\r\n Namespace.errorMessages.mustProvideElement;\r\n }\r\n this._element = element;\r\n this._options = this._initializeOptions(options, DefaultOptions, true);\r\n this._viewDate.setLocale(this._options.localization.locale);\r\n this._unset = true;\r\n\r\n this._display = new Display(this);\r\n this._validation = new Validation(this);\r\n this.dates = new Dates(this);\r\n this._action = new Actions(this);\r\n\r\n this._initializeInput();\r\n this._initializeToggle();\r\n\r\n if (this._options.display.inline) this._display.show();\r\n }\r\n\r\n _viewDate = new DateTime();\r\n\r\n get viewDate() {\r\n return this._viewDate;\r\n }\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n /**\r\n * Update the picker options. If `reset` is provide `options` will be merged with DefaultOptions instead.\r\n * @param options\r\n * @param reset\r\n * @public\r\n */\r\n updateOptions(options, reset = false): void {\r\n if (reset) this._options = this._initializeOptions(options, DefaultOptions);\r\n else this._options = this._initializeOptions(options, this._options);\r\n this._display._rebuild();\r\n }\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n /**\r\n * Toggles the picker open or closed. If the picker is disabled, nothing will happen.\r\n * @public\r\n */\r\n toggle(): void {\r\n if (this._isDisabled) return;\r\n this._display.toggle();\r\n }\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n /**\r\n * Shows the picker unless the picker is disabled.\r\n * @public\r\n */\r\n show(): void {\r\n if (this._isDisabled) return;\r\n this._display.show();\r\n }\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n /**\r\n * Hides the picker unless the picker is disabled.\r\n * @public\r\n */\r\n hide(): void {\r\n this._display.hide();\r\n }\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n /**\r\n * Disables the picker and the target input field.\r\n * @public\r\n */\r\n disable(): void {\r\n this._isDisabled = true;\r\n // todo this might be undesired. If a dev disables the input field to\r\n // only allow using the picker, this will break that.\r\n this._input?.setAttribute('disabled', 'disabled');\r\n this._display.hide();\r\n }\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n /**\r\n * Enables the picker and the target input field.\r\n * @public\r\n */\r\n enable(): void {\r\n this._isDisabled = false;\r\n this._input?.removeAttribute('disabled');\r\n }\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n /**\r\n * Clears all the selected dates\r\n * @public\r\n */\r\n clear(): void {\r\n this.dates.clear();\r\n }\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n /**\r\n * Allows for a direct subscription to picker events, without having to use addEventListener on the element.\r\n * @param eventTypes See Namespace.Events\r\n * @param callbacks Function to call when event is triggered\r\n * @public\r\n */\r\n subscribe(\r\n eventTypes: string | string[],\r\n callbacks: (event: any) => void | ((event: any) => void)[]\r\n ): { unsubscribe: void }[] {\r\n if (typeof eventTypes === 'string') {\r\n eventTypes = [eventTypes];\r\n }\r\n let callBackArray = [];\r\n if (!Array.isArray(callbacks)) {\r\n callBackArray = [callbacks];\r\n } else {\r\n callBackArray = callbacks;\r\n }\r\n\r\n if (eventTypes.length !== callBackArray.length) {\r\n Namespace.errorMessages.subscribeMismatch;\r\n }\r\n\r\n const returnArray = [];\r\n\r\n for (let i = 0; i < eventTypes.length; i++) {\r\n const eventType = eventTypes[i];\r\n if (!Array.isArray(this._subscribers[eventType])) {\r\n this._subscribers[eventType] = [];\r\n }\r\n\r\n this._subscribers[eventType].push(callBackArray[i]);\r\n\r\n returnArray.push({\r\n unsubscribe: this._unsubscribe.bind(\r\n this,\r\n eventType,\r\n this._subscribers[eventType].length - 1\r\n ),\r\n });\r\n\r\n if (eventTypes.length === 1) {\r\n return returnArray[0];\r\n }\r\n }\r\n\r\n return returnArray;\r\n }\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n /**\r\n * Hides the picker and removes event listeners\r\n */\r\n dispose() {\r\n this._display.hide();\r\n // this will clear the document click event listener\r\n this._display._dispose();\r\n this._input?.removeEventListener('change', this._inputChangeEvent);\r\n if (this._options.allowInputToggle) {\r\n this._input?.removeEventListener('click', this._toggleClickEvent);\r\n }\r\n this._toggle.removeEventListener('click', this._toggleClickEvent);\r\n this._subscribers = {};\r\n }\r\n\r\n /**\r\n * Triggers an event like ChangeEvent when the picker has updated the value\r\n * of a selected date.\r\n * @param event Accepts a BaseEvent object.\r\n * @private\r\n */\r\n _triggerEvent(event: BaseEvent) {\r\n // checking hasOwnProperty because the BasicEvent also falls through here otherwise\r\n if ((event as ChangeEvent) && event.hasOwnProperty('date')) {\r\n const { date, oldDate, isClear } = event as ChangeEvent;\r\n // this was to prevent a max call stack error\r\n // https://github.com/tempusdominus/core/commit/15a280507f5277b31b0b3319ab1edc7c19a000fb\r\n // todo see if this is still needed or if there's a cleaner way\r\n this._notifyChangeEventContext++;\r\n if (\r\n (date && oldDate && date.isSame(oldDate)) ||\r\n (!isClear && !date && !oldDate) ||\r\n this._notifyChangeEventContext > 1\r\n ) {\r\n this._notifyChangeEventContext = 0;\r\n return;\r\n }\r\n this._handleAfterChangeEvent(event as ChangeEvent);\r\n }\r\n\r\n this._element.dispatchEvent(\r\n new CustomEvent(event.type, { detail: event as any })\r\n );\r\n\r\n if ((window as any).jQuery) {\r\n const $ = (window as any).jQuery;\r\n $(this._element).trigger(event);\r\n }\r\n\r\n const publish = () => {\r\n // return if event is not subscribed\r\n if (!Array.isArray(this._subscribers[event.type])) {\r\n return;\r\n }\r\n\r\n // Trigger callback for each subscriber\r\n this._subscribers[event.type].forEach((callback) => {\r\n callback(event);\r\n });\r\n };\r\n\r\n publish();\r\n\r\n this._notifyChangeEventContext = 0;\r\n }\r\n\r\n /**\r\n * Fires a ViewUpdate event when, for example, the month view is changed.\r\n * @param {Unit} unit\r\n * @private\r\n */\r\n _viewUpdate(unit: Unit) {\r\n this._triggerEvent({\r\n type: Namespace.events.update,\r\n change: unit,\r\n viewDate: this._viewDate.clone,\r\n } as ViewUpdateEvent);\r\n }\r\n\r\n private _unsubscribe(eventName, index) {\r\n this._subscribers[eventName].splice(index, 1);\r\n }\r\n\r\n /**\r\n * Merges two Option objects together and validates options type\r\n * @param config new Options\r\n * @param mergeTo Options to merge into\r\n * @param includeDataset When true, the elements data-td attributes will be included in the\r\n * @private\r\n */\r\n private _initializeOptions(\r\n config: Options,\r\n mergeTo: Options,\r\n includeDataset = false\r\n ): Options {\r\n config = OptionConverter._mergeOptions(config, mergeTo);\r\n if (includeDataset)\r\n config = OptionConverter._dataToOptions(this._element, config);\r\n\r\n OptionConverter._validateConflcits(config);\r\n\r\n config.viewDate = config.viewDate.setLocale(config.localization.locale);\r\n\r\n if (!this._viewDate.isSame(config.viewDate)) {\r\n this._viewDate = config.viewDate;\r\n }\r\n\r\n /**\r\n * Sets the minimum view allowed by the picker. For example the case of only\r\n * allowing year and month to be selected but not date.\r\n */\r\n if (config.display.components.year) {\r\n this._minViewModeNumber = 2;\r\n }\r\n if (config.display.components.month) {\r\n this._minViewModeNumber = 1;\r\n }\r\n if (config.display.components.date) {\r\n this._minViewModeNumber = 0;\r\n }\r\n\r\n this._currentViewMode = Math.max(\r\n this._minViewModeNumber,\r\n this._currentViewMode\r\n );\r\n\r\n // Update view mode if needed\r\n if (\r\n DatePickerModes[this._currentViewMode].name !== config.display.viewMode\r\n ) {\r\n this._currentViewMode = Math.max(\r\n DatePickerModes.findIndex((x) => x.name === config.display.viewMode),\r\n this._minViewModeNumber\r\n );\r\n }\r\n\r\n // defaults the input format based on the components enabled\r\n if (config.hooks.inputFormat === undefined) {\r\n const components = config.display.components;\r\n config.hooks.inputFormat = (_, date: DateTime) => {\r\n return date.format({\r\n year: components.calendar && components.year ? 'numeric' : undefined,\r\n month:\r\n components.calendar && components.month ? '2-digit' : undefined,\r\n day: components.calendar && components.date ? '2-digit' : undefined,\r\n hour:\r\n components.clock && components.hours\r\n ? components.useTwentyfourHour\r\n ? '2-digit'\r\n : 'numeric'\r\n : undefined,\r\n minute:\r\n components.clock && components.minutes ? '2-digit' : undefined,\r\n second:\r\n components.clock && components.seconds ? '2-digit' : undefined,\r\n hour12: !components.useTwentyfourHour,\r\n });\r\n };\r\n }\r\n\r\n if (this._display?.isVisible) {\r\n this._display._update('all');\r\n }\r\n\r\n return config;\r\n }\r\n\r\n /**\r\n * Checks if an input field is being used, attempts to locate one and sets an\r\n * event listener if found.\r\n * @private\r\n */\r\n private _initializeInput() {\r\n\r\n if (this._element.tagName == 'INPUT') {\r\n this._input = this._element as HTMLInputElement;\r\n } else {\r\n let query = this._element.dataset.tdTargetInput;\r\n if (query == undefined || query == 'nearest') {\r\n this._input = this._element.querySelector('input');\r\n } else {\r\n this._input = this._element.querySelector(query);\r\n }\r\n }\r\n\r\n if (!this._input) return;\r\n\r\n this._input.addEventListener('change', this._inputChangeEvent);\r\n if (this._options.allowInputToggle) {\r\n this._input.addEventListener('click', this._toggleClickEvent);\r\n }\r\n\r\n if (this._input.value) {\r\n this._inputChangeEvent();\r\n }\r\n }\r\n\r\n /**\r\n * Attempts to locate a toggle for the picker and sets an event listener\r\n * @private\r\n */\r\n private _initializeToggle() {\r\n if (this._options.display.inline) return;\r\n let query = this._element.dataset.tdTargetToggle;\r\n if (query == 'nearest') {\r\n query = '[data-td-toggle=\"datetimepicker\"]';\r\n }\r\n this._toggle =\r\n query == undefined ? this._element : this._element.querySelector(query);\r\n this._toggle.addEventListener('click', this._toggleClickEvent);\r\n }\r\n\r\n /**\r\n * If the option is enabled this will render the clock view after a date pick.\r\n * @param e change event\r\n * @private\r\n */\r\n private _handleAfterChangeEvent(e: ChangeEvent) {\r\n if (\r\n // options is disabled\r\n !this._options.promptTimeOnDateChange ||\r\n this._options.display.inline ||\r\n this._options.display.sideBySide ||\r\n // time is disabled\r\n !this._display._hasTime ||\r\n // clock component is already showing\r\n this._display.widget\r\n ?.getElementsByClassName(Namespace.css.show)[0]\r\n .classList.contains(Namespace.css.timeContainer)\r\n )\r\n return;\r\n\r\n // First time ever. If useCurrent option is set to true (default), do nothing\r\n // because the first date is selected automatically.\r\n // or date didn't change (time did) or date changed because time did.\r\n if (\r\n (!e.oldDate && this._options.useCurrent) ||\r\n (e.oldDate && e.date?.isSame(e.oldDate))\r\n ) {\r\n return;\r\n }\r\n\r\n clearTimeout(this._currentPromptTimeTimeout);\r\n this._currentPromptTimeTimeout = setTimeout(() => {\r\n if (this._display.widget) {\r\n this._action.do(\r\n {\r\n currentTarget: this._display.widget.querySelector(\r\n `.${Namespace.css.switch} div`\r\n ),\r\n },\r\n ActionTypes.togglePicker\r\n );\r\n }\r\n }, this._options.promptTimeOnDateChangeTransitionDelay);\r\n }\r\n\r\n /**\r\n * Event for when the input field changes. This is a class level method so there's\r\n * something for the remove listener function.\r\n * @private\r\n */\r\n private _inputChangeEvent = () => {\r\n const setViewDate = () => {\r\n if (this.dates.lastPicked) this._viewDate = this.dates.lastPicked;\r\n };\r\n\r\n const value = this._input.value;\r\n if (this._options.multipleDates) {\r\n try {\r\n const valueSplit = value.split(this._options.multipleDatesSeparator);\r\n for (let i = 0; i < valueSplit.length; i++) {\r\n if (this._options.hooks.inputParse) {\r\n this.dates.set(\r\n this._options.hooks.inputParse(this, valueSplit[i]),\r\n i,\r\n 'input'\r\n );\r\n } else {\r\n this.dates.set(valueSplit[i], i, 'input');\r\n }\r\n }\r\n setViewDate();\r\n } catch {\r\n console.warn(\r\n 'TD: Something went wrong trying to set the multidate values from the input field.'\r\n );\r\n }\r\n } else {\r\n if (this._options.hooks.inputParse) {\r\n this.dates.set(this._options.hooks.inputParse(this, value), 0, 'input');\r\n } else {\r\n this.dates.set(value, 0, 'input');\r\n }\r\n setViewDate();\r\n }\r\n };\r\n\r\n /**\r\n * Event for when the toggle is clicked. This is a class level method so there's\r\n * something for the remove listener function.\r\n * @private\r\n */\r\n private _toggleClickEvent = () => {\r\n this.toggle();\r\n };\r\n}\r\n\r\nexport {\r\n TempusDominus,\r\n Namespace,\r\n DefaultOptions,\r\n DateTime,\r\n Options,\r\n Unit,\r\n DateTimeFormatOptions,\r\n};\r\n"],"names":["SecondDisplay"],"mappings":"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"} \ No newline at end of file diff --git a/dist/js/tempus-dominus.js.map b/dist/js/tempus-dominus.js.map index e768a0ca5..44c64738d 100644 --- a/dist/js/tempus-dominus.js.map +++ b/dist/js/tempus-dominus.js.map @@ -1 +1 @@ -{"version":3,"file":"tempus-dominus.js","sources":["../../src/js/datetime.ts","../../src/js/errors.ts","../../src/js/namespace.ts","../../src/js/conts.ts","../../src/js/display/collapse.ts","../../src/js/actions.ts","../../src/js/display/calendar/date-display.ts","../../src/js/display/calendar/month-display.ts","../../src/js/options.ts","../../src/js/dates.ts","../../src/js/display/calendar/year-display.ts","../../src/js/display/calendar/decade-display.ts","../../src/js/display/time/time-display.ts","../../src/js/display/time/hour-display.ts","../../src/js/display/time/minute-display.ts","../../src/js/display/time/second-display.ts","../../src/js/display/index.ts","../../src/js/validation.ts","../../src/js/tempus-dominus.ts"],"sourcesContent":["export enum Unit {\r\n seconds = 'seconds',\r\n minutes = 'minutes',\r\n hours = 'hours',\r\n date = 'date',\r\n month = 'month',\r\n year = 'year',\r\n}\r\n\r\nexport interface DateTimeFormatOptions extends Intl.DateTimeFormatOptions {\r\n timeStyle?: 'short' | 'medium' | 'long';\r\n dateStyle?: 'short' | 'medium' | 'long' | 'full';\r\n}\r\n\r\n/**\r\n * For the most part this object behaves exactly the same way\r\n * as the native Date object with a little extra spice.\r\n */\r\nexport class DateTime extends Date {\r\n /**\r\n * Used with Intl.DateTimeFormat\r\n */\r\n locale = 'default';\r\n\r\n /**\r\n * Chainable way to set the {@link locale}\r\n * @param value\r\n */\r\n setLocale(value: string): this {\r\n this.locale = value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Converts a plain JS date object to a DateTime object.\r\n * Doing this allows access to format, etc.\r\n * @param date\r\n */\r\n static convert(date: Date): DateTime {\r\n if (!date) throw `A date is required`;\r\n return new DateTime(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate(),\r\n date.getHours(),\r\n date.getMinutes(),\r\n date.getSeconds(),\r\n date.getMilliseconds()\r\n );\r\n }\r\n\r\n /**\r\n * Native date manipulations are not pure functions. This function creates a duplicate of the DateTime object.\r\n */\r\n get clone() {\r\n return new DateTime(\r\n this.year,\r\n this.month,\r\n this.date,\r\n this.hours,\r\n this.minutes,\r\n this.seconds,\r\n this.getMilliseconds()\r\n ).setLocale(this.locale);\r\n }\r\n\r\n /**\r\n * Sets the current date to the start of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).startOf('month')\r\n * would return April 1, 2021, 12:00:00.000 AM (midnight)\r\n * @param unit\r\n */\r\n startOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(0);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(0, 0);\r\n break;\r\n case 'hours':\r\n this.setMinutes(0, 0, 0);\r\n break;\r\n case 'date':\r\n this.setHours(0, 0, 0, 0);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(0 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.startOf(Unit.date);\r\n this.setDate(1);\r\n break;\r\n case 'year':\r\n this.startOf(Unit.date);\r\n this.setMonth(0, 1);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the current date to the end of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).endOf('month')\r\n * would return April 30, 2021, 11:59:59.999 PM\r\n * @param unit\r\n */\r\n endOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(999);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(59, 999);\r\n break;\r\n case 'hours':\r\n this.setMinutes(59, 59, 999);\r\n break;\r\n case 'date':\r\n this.setHours(23, 59, 59, 999);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(6 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.month);\r\n this.setDate(0);\r\n break;\r\n case 'year':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.year);\r\n this.setDate(0);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Change a {@link unit} value. Value can be positive or negative\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).manipulate(1, 'month')\r\n * would return May 30, 2021, 11:45:32.984 AM\r\n * @param value A positive or negative number\r\n * @param unit\r\n */\r\n manipulate(value: number, unit: Unit): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n this[unit] += value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns a string format.\r\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat\r\n * for valid templates and locale objects\r\n * @param template An object. Uses browser defaults otherwise.\r\n * @param locale Can be a string or an array of strings. Uses browser defaults otherwise.\r\n */\r\n format(template: DateTimeFormatOptions, locale = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, template).format(this);\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is before this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isBefore(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() < compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() < compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is after this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isAfter(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() > compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() > compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is same this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isSame(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() === compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n compare = DateTime.convert(compare);\r\n return (\r\n this.clone.startOf(unit).valueOf() === compare.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Check if this is between two other DateTimes, optionally looking at unit scale. The match is exclusive.\r\n * @param left\r\n * @param right\r\n * @param unit.\r\n * @param inclusivity. A [ indicates inclusion of a value. A ( indicates exclusion.\r\n * If the inclusivity parameter is used, both indicators must be passed.\r\n */\r\n isBetween(\r\n left: DateTime,\r\n right: DateTime,\r\n unit?: Unit,\r\n inclusivity: '()' | '[]' | '(]' | '[)' = '()'\r\n ): boolean {\r\n if (unit && this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n const leftInclusivity = inclusivity[0] === '(';\r\n const rightInclusivity = inclusivity[1] === ')';\r\n\r\n return (\r\n ((leftInclusivity\r\n ? this.isAfter(left, unit)\r\n : !this.isBefore(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isBefore(right, unit)\r\n : !this.isAfter(right, unit))) ||\r\n ((leftInclusivity\r\n ? this.isBefore(left, unit)\r\n : !this.isAfter(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isAfter(right, unit)\r\n : !this.isBefore(right, unit)))\r\n );\r\n }\r\n\r\n /**\r\n * Returns flattened object of the date. Does not include literals\r\n * @param locale\r\n * @param template\r\n */\r\n parts(\r\n locale = this.locale,\r\n template: any = { dateStyle: 'full', timeStyle: 'long' }\r\n ) {\r\n const parts = {};\r\n new Intl.DateTimeFormat(locale, template)\r\n .formatToParts(this)\r\n .filter((x) => x.type !== 'literal')\r\n .forEach((x) => (parts[x.type] = x.value));\r\n return parts;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getSeconds()\r\n */\r\n get seconds(): number {\r\n return this.getSeconds();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setSeconds()\r\n */\r\n set seconds(value: number) {\r\n this.setSeconds(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get secondsFormatted(): string {\r\n return this.format({ second: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMinutes()\r\n */\r\n get minutes(): number {\r\n return this.getMinutes();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMinutes()\r\n */\r\n set minutes(value: number) {\r\n this.setMinutes(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get minutesFormatted(): string {\r\n return this.format({ minute: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getHours()\r\n */\r\n get hours(): number {\r\n return this.getHours();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setHours()\r\n */\r\n set hours(value: number) {\r\n this.setHours(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get hoursFormatted(): string {\r\n return this.format({ hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Returns two digit hours but in twelve hour mode e.g. 13 -> 1\r\n */\r\n get twelveHoursFormatted(): string {\r\n return this.format({ hour12: true, hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Get the meridiem of the date. E.g. AM or PM.\r\n * If the {@link locale} provides a \"dayPeriod\" then this will be returned,\r\n * otherwise it will return AM or PM.\r\n * @param locale\r\n */\r\n meridiem(locale: string = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, {\r\n hour: 'numeric',\r\n hour12: true,\r\n } as any)\r\n .formatToParts(this)\r\n .find((p) => p.type === 'dayPeriod')?.value;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDate()\r\n */\r\n get date(): number {\r\n return this.getDate();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setDate()\r\n */\r\n set date(value: number) {\r\n this.setDate(value);\r\n }\r\n\r\n /**\r\n * Return two digit date\r\n */\r\n get dateFormatted(): string {\r\n return this.date < 10 ? `0${this.date}` : `${this.date}`;\r\n }\r\n\r\n // https://github.com/you-dont-need/You-Dont-Need-Momentjs#week-of-year\r\n /**\r\n * Gets the week of the year\r\n */\r\n get week(): number {\r\n const startOfYear = new Date(this.year, 0, 1);\r\n startOfYear.setDate(\r\n startOfYear.getDate() + (1 - (startOfYear.getDay() % 7))\r\n );\r\n return Math.round((this.valueOf() - startOfYear.valueOf()) / 604800000) + 1;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDay()\r\n */\r\n get weekDay(): number {\r\n return this.getDay();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMonth()\r\n */\r\n get month(): number {\r\n return this.getMonth();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMonth()\r\n */\r\n set month(value: number) {\r\n this.setMonth(value);\r\n }\r\n\r\n /**\r\n * Return two digit, human expected month. E.g. January = 1, December = 12\r\n */\r\n get monthFormatted(): string {\r\n return this.month + 1 < 10 ? `0${this.month}` : `${this.month}`;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getFullYear()\r\n */\r\n get year(): number {\r\n return this.getFullYear();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setFullYear()\r\n */\r\n set year(value: number) {\r\n this.setFullYear(value);\r\n }\r\n}\r\n","import Namespace from './namespace';\n\nexport class TdError extends Error {\n code: number;\n}\n\nexport class ErrorMessages {\n private base = 'TD:';\n\n //#region out to console\n\n /**\n * Throws an error indicating that a key in the options object is invalid.\n * @param optionName\n */\n unexpectedOption(optionName: string) {\n const error = new TdError(\n `${this.base} Unexpected option: ${optionName} does not match a known option.`\n );\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error indicating that one more keys in the options object is invalid.\n * @param optionName\n */\n unexpectedOptions(optionName: string[]) {\n const error = new TdError(`${this.base}: ${optionName.join(', ')}`);\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error when an option is provide an unsupported value.\n * For example a value of 'cheese' for toolbarPlacement which only supports\n * 'top', 'bottom', 'default'.\n * @param optionName\n * @param badValue\n * @param validOptions\n */\n unexpectedOptionValue(\n optionName: string,\n badValue: string,\n validOptions: string[]\n ) {\n const error = new TdError(\n `${\n this.base\n } Unexpected option value: ${optionName} does not accept a value of \"${badValue}\". Valid values are: ${validOptions.join(\n ', '\n )}`\n );\n error.code = 2;\n throw error;\n }\n\n /**\n * Throws an error when an option value is the wrong type.\n * For example a string value was provided to multipleDates which only\n * supports true or false.\n * @param optionName\n * @param badType\n * @param expectedType\n */\n typeMismatch(optionName: string, badType: string, expectedType: string) {\n const error = new TdError(\n `${this.base} Mismatch types: ${optionName} has a type of ${badType} instead of the required ${expectedType}`\n );\n error.code = 3;\n throw error;\n }\n\n /**\n * Throws an error when an option value is outside of the expected range.\n * For example restrictions.daysOfWeekDisabled excepts a value between 0 and 6.\n * @param optionName\n * @param lower\n * @param upper\n */\n numbersOutOfRage(optionName: string, lower: number, upper: number) {\n const error = new TdError(\n `${this.base} ${optionName} expected an array of number between ${lower} and ${upper}.`\n );\n error.code = 4;\n throw error;\n }\n\n /**\n * Throws an error when a value for a date options couldn't be parsed. Either\n * the option was an invalide string or an invalid Date object.\n * @param optionName\n * @param date\n * @param soft If true, logs a warning instead of an error.\n */\n failedToParseDate(optionName: string, date: any, soft = false) {\n const error = new TdError(\n `${this.base} Could not correctly parse \"${date}\" to a date for ${optionName}.`\n );\n error.code = 5;\n if (!soft) throw error;\n console.warn(error);\n }\n\n /**\n * Throws when an element to attach to was not provided in the constructor.\n */\n mustProvideElement() {\n const error = new TdError(`${this.base} No element was provided.`);\n error.code = 6;\n throw error;\n }\n\n /**\n * Throws if providing an array for the events to subscribe method doesn't have\n * the same number of callbacks. E.g., subscribe([1,2], [1])\n */\n subscribeMismatch() {\n const error = new TdError(\n `${this.base} The subscribed events does not match the number of callbacks`\n );\n error.code = 7;\n throw error;\n }\n\n /**\n * Throws if the configuration has conflicting rules e.g. minDate is after maxDate\n */\n conflictingConfiguration(message?: string) {\n const error = new TdError(\n `${this.base} A configuration value conflicts with another rule. ${message}`\n );\n error.code = 8;\n throw error;\n }\n\n /**\n * Logs a warning if a date option value is provided as a string, instead of\n * a date/datetime object.\n */\n dateString() {\n console.warn(\n `${this.base} Using a string for date options is not recommended unless you specify an ISO string.`\n );\n }\n\n //#endregion\n\n //#region used with notify.error\n\n /**\n * Used with an Error Event type if the user selects a date that\n * fails restriction validation.\n */\n failedToSetInvalidDate = 'Failed to set invalid date';\n\n /**\n * Used with an Error Event type when a user changes the value of the\n * input field directly, and does not provide a valid date.\n */\n failedToParseInput = 'Failed parse input field';\n\n //#endregion\n}\n","import { ErrorMessages } from './errors';\n// this is not the way I want this to stay but nested classes seemed to blown up once its compiled.\nconst NAME = 'tempus-dominus',\n version = '6.0.0-alpha1',\n dataKey = 'td';\n\n/**\n * Events\n */\nclass Events {\n key = `.${dataKey}`;\n\n /**\n * Change event. Fired when the user selects a date.\n * See also EventTypes.ChangeEvent\n */\n change = `change${this.key}`;\n\n /**\n * Emit when the view changes for example from month view to the year view.\n * See also EventTypes.ViewUpdateEvent\n */\n update = `update${this.key}`;\n\n /**\n * Emits when a selected date or value from the input field fails to meet the provided validation rules.\n * See also EventTypes.FailEvent\n */\n error = `error${this.key}`;\n\n /**\n * Show event\n * @event Events#show\n */\n show = `show${this.key}`;\n\n /**\n * Hide event\n * @event Events#hide\n */\n hide = `hide${this.key}`;\n\n // blur and focus are used in the jQuery provider but are otherwise unused.\n // keyup/down will be used later for keybinding options\n\n blur = `blur${this.key}`;\n focus = `focus${this.key}`;\n keyup = `keyup${this.key}`;\n keydown = `keydown${this.key}`;\n}\n\nclass Css {\n /**\n * The outer element for the widget.\n */\n widget = `${NAME}-widget`;\n\n /**\n * Hold the previous, next and switcher divs\n */\n calendarHeader = 'calendar-header';\n\n /**\n * The element for the action to change the calendar view. E.g. month -> year.\n */\n switch = 'picker-switch';\n\n /**\n * The elements for all of the toolbar options\n */\n toolbar = 'toolbar';\n\n /**\n * Disables the hover and rounding affect.\n */\n noHighlight = 'no-highlight';\n\n /**\n * Applied to the widget element when the side by side option is in use.\n */\n sideBySide = 'timepicker-sbs';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> July\n */\n previous = 'previous';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> September\n */\n next = 'next';\n\n /**\n * Applied to any action that would violate any restriction options. ALso applied\n * to an input field if the disabled function is called.\n */\n disabled = 'disabled';\n\n /**\n * Applied to any date that is less than requested view,\n * e.g. the last day of the previous month.\n */\n old = 'old';\n\n /**\n * Applied to any date that is greater than of requested view,\n * e.g. the last day of the previous month.\n */\n new = 'new';\n\n /**\n * Applied to any date that is currently selected.\n */\n active = 'active';\n\n //#region date element\n\n /**\n * The outer most element for the calendar view.\n */\n dateContainer = 'date-container';\n\n /**\n * The outer most element for the decades view.\n */\n decadesContainer = `${this.dateContainer}-decades`;\n\n /**\n * Applied to elements within the decades container, e.g. 2020, 2030\n */\n decade = 'decade';\n\n /**\n * The outer most element for the years view.\n */\n yearsContainer = `${this.dateContainer}-years`;\n\n /**\n * Applied to elements within the years container, e.g. 2021, 2021\n */\n year = 'year';\n\n /**\n * The outer most element for the month view.\n */\n monthsContainer = `${this.dateContainer}-months`;\n\n /**\n * Applied to elements within the month container, e.g. January, February\n */\n month = 'month';\n\n /**\n * The outer most element for the calendar view.\n */\n daysContainer = `${this.dateContainer}-days`;\n\n /**\n * Applied to elements within the day container, e.g. 1, 2..31\n */\n day = 'day';\n\n /**\n * If display.calendarWeeks is enabled, a column displaying the week of year\n * is shown. This class is applied to each cell in that column.\n */\n calendarWeeks = 'cw';\n\n /**\n * Applied to the first row of the calendar view, e.g. Sunday, Monday\n */\n dayOfTheWeek = 'dow';\n\n /**\n * Applied to the current date on the calendar view.\n */\n today = 'today';\n\n /**\n * Applied to the locale's weekend dates on the calendar view, e.g. Sunday, Saturday\n */\n weekend = 'weekend';\n\n //#endregion\n\n //#region time element\n\n /**\n * The outer most element for all time related elements.\n */\n timeContainer = 'time-container';\n\n /**\n * Applied the separator columns between time elements, e.g. hour *:* minute *:* second\n */\n separator = 'separator';\n\n /**\n * The outer most element for the clock view.\n */\n clockContainer = `${this.timeContainer}-clock`;\n\n /**\n * The outer most element for the hours selection view.\n */\n hourContainer = `${this.timeContainer}-hour`;\n\n /**\n * The outer most element for the minutes selection view.\n */\n minuteContainer = `${this.timeContainer}-minute`;\n\n /**\n * The outer most element for the seconds selection view.\n */\n secondContainer = `${this.timeContainer}-second`;\n\n /**\n * Applied to each element in the hours selection view.\n */\n hour = 'hour';\n\n /**\n * Applied to each element in the minutes selection view.\n */\n minute = 'minute';\n\n /**\n * Applied to each element in the seconds selection view.\n */\n second = 'second';\n\n /**\n * Applied AM/PM toggle button.\n */\n toggleMeridiem = 'toggleMeridiem';\n\n //#endregion\n\n //#region collapse\n\n /**\n * Applied the element of the current view mode, e.g. calendar or clock.\n */\n show = 'show';\n\n /**\n * Applied to the currently showing view mode during a transition\n * between calendar and clock views\n */\n collapsing = 'td-collapsing';\n\n /**\n * Applied to the currently hidden view mode.\n */\n collapse = 'td-collapse';\n\n //#endregion\n\n /**\n * Applied to the widget when the option display.inline is enabled.\n */\n inline = 'inline';\n}\n\nexport default class Namespace {\n static NAME = NAME;\n // noinspection JSUnusedGlobalSymbols\n static version = version;\n static dataKey = dataKey;\n\n static events = new Events();\n\n static css = new Css();\n\n static errorMessages = new ErrorMessages();\n}\n","import { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options from './options';\n\nconst DefaultOptions: Options = {\n restrictions: {\n minDate: undefined,\n maxDate: undefined,\n disabledDates: [],\n enabledDates: [],\n daysOfWeekDisabled: [],\n disabledTimeIntervals: [],\n disabledHours: [],\n enabledHours: [],\n },\n display: {\n icons: {\n type: 'icons',\n time: 'fas fa-clock',\n date: 'fas fa-calendar',\n up: 'fas fa-arrow-up',\n down: 'fas fa-arrow-down',\n previous: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n today: 'fas fa-calendar-check',\n clear: 'fas fa-trash',\n close: 'fas fa-times',\n },\n sideBySide: false,\n calendarWeeks: false,\n viewMode: 'calendar',\n toolbarPlacement: 'bottom',\n keepOpen: false,\n buttons: {\n today: false,\n clear: false,\n close: false,\n },\n components: {\n calendar: true,\n date: true,\n month: true,\n year: true,\n decades: true,\n clock: true,\n hours: true,\n minutes: true,\n seconds: false,\n useTwentyfourHour: false,\n },\n inline: false,\n },\n stepping: 1,\n useCurrent: true,\n defaultDate: undefined,\n localization: {\n today: 'Go to today',\n clear: 'Clear selection',\n close: 'Close the picker',\n selectMonth: 'Select Month',\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n selectYear: 'Select Year',\n previousYear: 'Previous Year',\n nextYear: 'Next Year',\n selectDecade: 'Select Decade',\n previousDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n previousCentury: 'Previous Century',\n nextCentury: 'Next Century',\n pickHour: 'Pick Hour',\n incrementHour: 'Increment Hour',\n decrementHour: 'Decrement Hour',\n pickMinute: 'Pick Minute',\n incrementMinute: 'Increment Minute',\n decrementMinute: 'Decrement Minute',\n pickSecond: 'Pick Second',\n incrementSecond: 'Increment Second',\n decrementSecond: 'Decrement Second',\n toggleMeridiem: 'Toggle Meridiem',\n selectTime: 'Select Time',\n selectDate: 'Select Date',\n dayViewHeaderFormat: 'long',\n locale: 'default',\n },\n keepInvalid: false,\n debug: false,\n allowInputToggle: false,\n viewDate: new DateTime(),\n multipleDates: false,\n multipleDatesSeparator: '; ',\n promptTimeOnDateChange: false,\n promptTimeOnDateChangeTransitionDelay: 200,\n hooks: {\n inputParse: undefined,\n inputFormat: undefined,\n },\n};\n\nconst DatePickerModes: {\n name: string;\n className: string;\n unit: Unit;\n step: number;\n}[] = [\n {\n name: 'calendar',\n className: Namespace.css.daysContainer,\n unit: Unit.month,\n step: 1,\n },\n {\n name: 'months',\n className: Namespace.css.monthsContainer,\n unit: Unit.year,\n step: 1,\n },\n {\n name: 'years',\n className: Namespace.css.yearsContainer,\n unit: Unit.year,\n step: 10,\n },\n {\n name: 'decades',\n className: Namespace.css.decadesContainer,\n unit: Unit.year,\n step: 100,\n },\n];\n\nexport { DefaultOptions, DatePickerModes, Namespace };\n","import Namespace from '../namespace';\n\n/**\n * Provides a collapse functionality to the view changes\n */\nexport default class Collapse {\n private timeOut;\n\n /**\n * Flips the show/hide state of `target`\n * @param target html element to affect.\n */\n toggle(target: HTMLElement, callback = undefined) {\n if (target.classList.contains(Namespace.css.show)) {\n this.hide(target, callback);\n } else {\n this.show(target, callback);\n }\n }\n\n /**\n * If `target` is not already showing, then show after the animation.\n * @param target\n */\n show(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse, Namespace.css.show);\n target.style.height = '';\n this.timeOut = null;\n if (callback) callback();\n };\n\n target.style.height = '0';\n target.classList.remove(Namespace.css.collapse);\n target.classList.add(Namespace.css.collapsing);\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n target.style.height = `${target.scrollHeight}px`;\n }\n\n /**\n * If `target` is not already hidden, then hide after the animation.\n * @param target HTML Element\n */\n hide(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n !target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse);\n this.timeOut = null;\n };\n\n target.style.height = `${target.getBoundingClientRect()['height']}px`;\n\n const reflow = (element) => element.offsetHeight;\n\n reflow(target);\n\n target.classList.remove(Namespace.css.collapse, Namespace.css.show);\n target.classList.add(Namespace.css.collapsing);\n target.style.height = '';\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n }\n\n /**\n * Gets the transition duration from the `element` by getting css properties\n * `transition-duration` and `transition-delay`\n * @param element HTML Element\n */\n private getTransitionDurationFromElement = (element: HTMLElement) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } =\n window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) +\n Number.parseFloat(transitionDelay)) *\n 1000\n );\n };\n}\n","import { DatePickerModes } from './conts.js';\nimport { DateTime, Unit } from './datetime';\nimport { TempusDominus } from './tempus-dominus';\nimport Collapse from './display/collapse';\nimport Namespace from './namespace';\n\n/**\n *\n */\nexport default class Actions {\n private _context: TempusDominus;\n private collapse: Collapse;\n\n constructor(context: TempusDominus) {\n this._context = context;\n this.collapse = new Collapse();\n }\n\n /**\n * Performs the selected `action`. See ActionTypes\n * @param e This is normally a click event\n * @param action If not provided, then look for a [data-action]\n */\n do(e: any, action?: ActionTypes) {\n const currentTarget = e.currentTarget;\n if (currentTarget.classList.contains(Namespace.css.disabled)) return false;\n action = action || currentTarget.dataset.action;\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n /**\n * Common function to manipulate {@link lastPicked} by `unit`\n * @param unit\n * @param value Value to change by\n */\n const manipulateAndSet = (unit: Unit, value = 1) => {\n const newDate = lastPicked.manipulate(value, unit);\n if (this._context._validation.isValid(newDate, unit)) {\n this._context.dates._setValue(\n newDate,\n this._context.dates.lastPickedIndex\n );\n }\n };\n\n switch (action) {\n case ActionTypes.next:\n case ActionTypes.previous:\n const { unit, step } = DatePickerModes[this._context._currentViewMode];\n if (action === ActionTypes.next)\n this._context._viewDate.manipulate(step, unit);\n else this._context._viewDate.manipulate(step * -1, unit);\n this._context._viewUpdate(unit);\n\n this._context._display._showMode();\n break;\n case ActionTypes.pickerSwitch:\n this._context._display._showMode(1);\n this._context._viewUpdate(\n DatePickerModes[this._context._currentViewMode].unit\n );\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.selectMonth:\n case ActionTypes.selectYear:\n case ActionTypes.selectDecade:\n const value = +currentTarget.dataset.value;\n switch (action) {\n case ActionTypes.selectMonth:\n this._context._viewDate.month = value;\n this._context._viewUpdate(Unit.month);\n break;\n case ActionTypes.selectYear:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n case ActionTypes.selectDecade:\n this._context._viewDate.year = value;\n this._context._viewUpdate(Unit.year);\n break;\n }\n\n if (\n this._context._currentViewMode === this._context._minViewModeNumber\n ) {\n this._context.dates._setValue(\n this._context._viewDate,\n this._context.dates.lastPickedIndex\n );\n if (!this._context._options.display.inline) {\n this._context._display.hide();\n }\n } else {\n this._context._display._showMode(-1);\n }\n break;\n case ActionTypes.selectDay:\n const day = this._context._viewDate.clone;\n if (currentTarget.classList.contains(Namespace.css.old)) {\n day.manipulate(-1, Unit.month);\n }\n if (currentTarget.classList.contains(Namespace.css.new)) {\n day.manipulate(1, Unit.month);\n }\n\n day.date = +currentTarget.dataset.day;\n let index = 0;\n if (this._context._options.multipleDates) {\n index = this._context.dates.pickedIndex(day, Unit.date);\n if (index !== -1) {\n this._context.dates._setValue(null, index); //deselect multi-date\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex + 1\n );\n }\n } else {\n this._context.dates._setValue(\n day,\n this._context.dates.lastPickedIndex\n );\n }\n\n if (\n !this._context._display._hasTime &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline &&\n !this._context._options.multipleDates\n ) {\n this._context._display.hide();\n }\n break;\n case ActionTypes.selectHour:\n let hour = +currentTarget.dataset.value;\n if (\n lastPicked.hours >= 12 &&\n !this._context._options.display.components.useTwentyfourHour\n )\n hour += 12;\n lastPicked.hours = hour;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.minutes &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectMinute:\n lastPicked.minutes = +currentTarget.dataset.value;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.components.seconds &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.selectSecond:\n lastPicked.seconds = +currentTarget.dataset.value;\n this._context.dates._setValue(\n lastPicked,\n this._context.dates.lastPickedIndex\n );\n if (\n this._context._options.display.components.useTwentyfourHour &&\n !this._context._options.display.keepOpen &&\n !this._context._options.display.inline\n ) {\n this._context._display.hide();\n } else {\n this.do(e, ActionTypes.showClock);\n }\n break;\n case ActionTypes.incrementHours:\n manipulateAndSet(Unit.hours);\n break;\n case ActionTypes.incrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping);\n break;\n case ActionTypes.incrementSeconds:\n manipulateAndSet(Unit.seconds);\n break;\n case ActionTypes.decrementHours:\n manipulateAndSet(Unit.hours, -1);\n break;\n case ActionTypes.decrementMinutes:\n manipulateAndSet(Unit.minutes, this._context._options.stepping * -1);\n break;\n case ActionTypes.decrementSeconds:\n manipulateAndSet(Unit.seconds, -1);\n break;\n case ActionTypes.toggleMeridiem:\n manipulateAndSet(\n Unit.hours,\n this._context.dates.lastPicked.hours >= 12 ? -12 : 12\n );\n break;\n case ActionTypes.togglePicker:\n this._context._display.widget\n .querySelectorAll(\n `.${Namespace.css.dateContainer}, .${Namespace.css.timeContainer}`\n )\n .forEach((htmlElement: HTMLElement) =>\n this.collapse.toggle(htmlElement)\n );\n if (\n currentTarget.getAttribute('title') ===\n this._context._options.localization.selectDate\n ) {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectTime\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.time\n ).outerHTML;\n\n this._context._display._updateCalendarHeader();\n } else {\n currentTarget.setAttribute(\n 'title',\n this._context._options.localization.selectDate\n );\n currentTarget.innerHTML = this._context._display._iconTag(\n this._context._options.display.icons.date\n ).outerHTML;\n this.do(e, ActionTypes.showClock);\n this._context._display._update('clock');\n }\n break;\n case ActionTypes.showClock:\n case ActionTypes.showHours:\n case ActionTypes.showMinutes:\n case ActionTypes.showSeconds:\n this._context._display.widget\n .querySelectorAll(`.${Namespace.css.timeContainer} > div`)\n .forEach(\n (htmlElement: HTMLElement) => (htmlElement.style.display = 'none')\n );\n\n let classToUse = '';\n switch (action) {\n case ActionTypes.showClock:\n classToUse = Namespace.css.clockContainer;\n this._context._display._update('clock');\n break;\n case ActionTypes.showHours:\n classToUse = Namespace.css.hourContainer;\n this._context._display._update(Unit.hours);\n break;\n case ActionTypes.showMinutes:\n classToUse = Namespace.css.minuteContainer;\n this._context._display._update(Unit.minutes);\n break;\n case ActionTypes.showSeconds:\n classToUse = Namespace.css.secondContainer;\n this._context._display._update(Unit.seconds);\n break;\n }\n\n ((\n this._context._display.widget.getElementsByClassName(classToUse)[0]\n )).style.display = 'grid';\n break;\n case ActionTypes.clear:\n this._context.dates._setValue(null);\n this._context._display._updateCalendarHeader();\n break;\n case ActionTypes.close:\n this._context._display.hide();\n break;\n case ActionTypes.today:\n const today = new DateTime().setLocale(\n this._context._options.localization.locale\n );\n this._context._viewDate = today;\n if (this._context._validation.isValid(today, Unit.date))\n this._context.dates._setValue(\n today,\n this._context.dates.lastPickedIndex\n );\n break;\n }\n }\n}\n\nexport enum ActionTypes {\n next = 'next',\n previous = 'previous',\n pickerSwitch = 'pickerSwitch',\n selectMonth = 'selectMonth',\n selectYear = 'selectYear',\n selectDecade = 'selectDecade',\n selectDay = 'selectDay',\n selectHour = 'selectHour',\n selectMinute = 'selectMinute',\n selectSecond = 'selectSecond',\n incrementHours = 'incrementHours',\n incrementMinutes = 'incrementMinutes',\n incrementSeconds = 'incrementSeconds',\n decrementHours = 'decrementHours',\n decrementMinutes = 'decrementMinutes',\n decrementSeconds = 'decrementSeconds',\n toggleMeridiem = 'toggleMeridiem',\n togglePicker = 'togglePicker',\n showClock = 'showClock',\n showHours = 'showHours',\n showMinutes = 'showMinutes',\n showSeconds = 'showSeconds',\n clear = 'clear',\n close = 'close',\n today = 'today',\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `date`\r\n */\r\nexport default class DateDisplay {\r\n private _context: TempusDominus;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.daysContainer);\r\n\r\n container.append(...this._daysOfTheWeek());\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(Namespace.css.calendarWeeks, Namespace.css.noHighlight);\r\n container.appendChild(div);\r\n }\r\n\r\n for (let i = 0; i < 42; i++) {\r\n if (i !== 0 && i % 7 === 0) {\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n container.appendChild(div);\r\n }\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDay);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update(): void {\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.daysContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.daysContainer,\r\n this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n })\r\n );\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(-1, Unit.month),\r\n Unit.month\r\n )\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(1, Unit.month),\r\n Unit.month\r\n )\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.month)\r\n .startOf('weekDay')\r\n .manipulate(12, Unit.hours);\r\n\r\n container\r\n .querySelectorAll(\r\n `[data-action=\"${ActionTypes.selectDay}\"], .${Namespace.css.calendarWeeks}`\r\n )\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (\r\n this._context._options.display.calendarWeeks &&\r\n containerClone.classList.contains(Namespace.css.calendarWeeks)\r\n ) {\r\n if (containerClone.innerText === '#') return;\r\n containerClone.innerText = `${innerDate.week}`;\r\n return;\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.day);\r\n\r\n if (innerDate.isBefore(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.old);\r\n }\r\n if (innerDate.isAfter(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.new);\r\n }\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.date)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.date)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n if (innerDate.isSame(new DateTime(), Unit.date)) {\r\n classes.push(Namespace.css.today);\r\n }\r\n if (innerDate.weekDay === 0 || innerDate.weekDay === 6) {\r\n classes.push(Namespace.css.weekend);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`\r\n );\r\n containerClone.setAttribute(\r\n 'data-day',\r\n `${innerDate.date}`\r\n );\r\n containerClone.innerText = innerDate.format({ day: \"numeric\" });\r\n innerDate.manipulate(1, Unit.date);\r\n });\r\n }\r\n\r\n /***\r\n * Generates an html row that contains the days of the week.\r\n * @private\r\n */\r\n private _daysOfTheWeek(): HTMLElement[] {\r\n let innerDate = this._context._viewDate.clone\r\n .startOf('weekDay')\r\n .startOf(Unit.date);\r\n const row = [];\r\n document.createElement('div');\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = '#';\r\n row.push(htmlDivElement);\r\n }\r\n\r\n for (let i = 0; i < 7; i++) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.dayOfTheWeek,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = innerDate.format({ weekday: 'short' });\r\n innerDate.manipulate(1, Unit.date);\r\n row.push(htmlDivElement);\r\n }\r\n\r\n return row;\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `month`\n */\nexport default class MonthDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.monthsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMonth);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.monthsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.monthsContainer,\n this._context._viewDate.format({ year: 'numeric' })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.year),\n Unit.year\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.year),\n Unit.year\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone.startOf(Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMonth}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.month);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.month)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.month)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${index}`);\n containerClone.innerText = `${innerDate.format({ month: 'short' })}`;\n innerDate.manipulate(1, Unit.month);\n });\n }\n}\n","import { DateTime, DateTimeFormatOptions } from './datetime';\nimport Namespace from './namespace';\nimport { DefaultOptions } from './conts';\nimport { TempusDominus } from './tempus-dominus';\n\nexport default interface Options {\n restrictions: {\n minDate: DateTime;\n maxDate: DateTime;\n enabledDates: DateTime[];\n disabledDates: DateTime[];\n enabledHours: number[];\n disabledHours: number[];\n disabledTimeIntervals: { from: DateTime; to: DateTime }[];\n daysOfWeekDisabled: number[];\n };\n display: {\n toolbarPlacement: 'top' | 'bottom';\n components: {\n calendar: boolean;\n date: boolean;\n month: boolean;\n year: boolean;\n decades: boolean;\n clock: boolean;\n hours: boolean;\n minutes: boolean;\n seconds: boolean;\n useTwentyfourHour: boolean;\n };\n buttons: { today: boolean; close: boolean; clear: boolean };\n calendarWeeks: boolean;\n icons: {\n date: string;\n next: string;\n previous: string;\n today: string;\n clear: string;\n time: string;\n up: string;\n type: 'icons' | 'sprites';\n down: string;\n close: string;\n };\n viewMode: 'clock' | 'calendar' | 'months' | 'years' | 'decades';\n sideBySide: boolean;\n inline: boolean;\n keepOpen: boolean;\n };\n stepping: number;\n useCurrent: boolean;\n defaultDate: DateTime;\n localization: {\n nextMonth: string;\n pickHour: string;\n incrementSecond: string;\n nextDecade: string;\n selectDecade: string;\n dayViewHeaderFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\n decrementHour: string;\n selectDate: string;\n incrementHour: string;\n previousCentury: string;\n decrementSecond: string;\n today: string;\n previousMonth: string;\n selectYear: string;\n pickSecond: string;\n nextCentury: string;\n close: string;\n incrementMinute: string;\n selectTime: string;\n clear: string;\n toggleMeridiem: string;\n selectMonth: string;\n decrementMinute: string;\n pickMinute: string;\n nextYear: string;\n previousYear: string;\n previousDecade: string;\n locale: string;\n };\n keepInvalid: boolean;\n debug: boolean;\n allowInputToggle: boolean;\n viewDate: DateTime;\n multipleDates: boolean;\n multipleDatesSeparator: string;\n promptTimeOnDateChange: boolean;\n promptTimeOnDateChangeTransitionDelay: number;\n hooks: {\n inputParse: (context: TempusDominus, value: any) => DateTime;\n inputFormat: (context: TempusDominus, date: DateTime) => string;\n };\n}\n\nexport class OptionConverter {\n static _mergeOptions(providedOptions: Options, mergeTo: Options): Options {\n const newOptions = {} as Options;\n let path = '';\n const ignoreProperties = ['inputParse', 'inputFormat'];\n\n const processKey = (key, value, providedType, defaultType) => {\n switch (key) {\n case 'defaultDate': {\n const dateTime = this._dateConversion(value, 'defaultDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'defaultDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'viewDate': {\n const dateTime = this._dateConversion(value, 'viewDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'viewDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'minDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.minDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.minDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'maxDate': {\n if (value === undefined) {\n return value;\n }\n const dateTime = this._dateConversion(value, 'restrictions.maxDate');\n if (dateTime !== undefined) {\n return dateTime;\n }\n Namespace.errorMessages.typeMismatch(\n 'restrictions.maxDate',\n providedType,\n 'DateTime or Date'\n );\n }\n case 'disabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.disabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.disabledHours',\n 0,\n 23\n );\n return value;\n case 'enabledHours':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.enabledHours',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 24).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.enabledHours',\n 0,\n 23\n );\n return value;\n case 'daysOfWeekDisabled':\n if (value === undefined) {\n return [];\n }\n this._typeCheckNumberArray(\n 'restrictions.daysOfWeekDisabled',\n value,\n providedType\n );\n if (value.filter((x) => x < 0 || x > 6).length > 0)\n Namespace.errorMessages.numbersOutOfRage(\n 'restrictions.daysOfWeekDisabled',\n 0,\n 6\n );\n return value;\n case 'enabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.enabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledDates':\n if (value === undefined) {\n return [];\n }\n this._typeCheckDateArray(\n 'restrictions.disabledDates',\n value,\n providedType\n );\n return value;\n case 'disabledTimeIntervals':\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n key,\n providedType,\n 'array of { from: DateTime|Date, to: DateTime|Date }'\n );\n }\n const valueObject = value as { from: any; to: any }[];\n for (let i = 0; i < valueObject.length; i++) {\n Object.keys(valueObject[i]).forEach((vk) => {\n const subOptionName = `${key}[${i}].${vk}`;\n let d = valueObject[i][vk];\n const dateTime = this._dateConversion(d, subOptionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n subOptionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n valueObject[i][vk] = dateTime;\n });\n }\n return valueObject;\n case 'toolbarPlacement':\n case 'type':\n case 'viewMode':\n case 'dayViewHeaderFormat':\n const optionValues = {\n toolbarPlacement: ['top', 'bottom', 'default'],\n type: ['icons', 'sprites'],\n viewMode: ['clock', 'calendar', 'months', 'years', 'decades'],\n dayViewHeaderFormat: [\n 'numeric',\n '2-digit',\n 'long',\n 'short',\n 'narrow',\n ],\n };\n const keyOptions = optionValues[key];\n if (!keyOptions.includes(value))\n Namespace.errorMessages.unexpectedOptionValue(\n path.substring(1),\n value,\n keyOptions\n );\n\n return value;\n case 'inputParse':\n case 'inputFormat':\n return value;\n default:\n switch (defaultType) {\n case 'boolean':\n return value === 'true' || value === true;\n case 'number':\n return +value;\n case 'string':\n return value.toString();\n case 'object':\n return {};\n case 'function':\n return value;\n default:\n Namespace.errorMessages.typeMismatch(\n path.substring(1),\n providedType,\n defaultType\n );\n }\n }\n };\n\n /**\n * The spread operator caused sub keys to be missing after merging.\n * This is to fix that issue by using spread on the child objects first.\n * Also handles complex options like disabledDates\n * @param provided An option from new providedOptions\n * @param mergeOption Default option to compare types against\n * @param copyTo Destination object. This was add to prevent reference copies\n */\n const spread = (provided, mergeOption, copyTo) => {\n const unsupportedOptions = Object.keys(provided).filter(\n (x) => !Object.keys(mergeOption).includes(x)\n );\n if (unsupportedOptions.length > 0) {\n const flattenedOptions = OptionConverter._flattenDefaultOptions;\n\n const errors = unsupportedOptions.map((x) => {\n let error = `\"${path.substring(1)}.${x}\" in not a known option.`;\n let didYouMean = flattenedOptions.find((y) => y.includes(x));\n if (didYouMean) error += `Did you mean \"${didYouMean}\"?`;\n return error;\n });\n Namespace.errorMessages.unexpectedOptions(errors);\n }\n Object.keys(mergeOption).forEach((key) => {\n const defaultOptionValue = mergeOption[key];\n let providedType = typeof provided[key];\n let defaultType = typeof defaultOptionValue;\n let value = provided[key];\n if (!provided.hasOwnProperty(key)) {\n if (\n defaultType === 'undefined' ||\n (value?.length === 0 && Array.isArray(defaultOptionValue))\n ) {\n copyTo[key] = defaultOptionValue;\n return;\n }\n provided[key] = defaultOptionValue;\n value = provided[key];\n }\n path += `.${key}`;\n copyTo[key] = processKey(key, value, providedType, defaultType);\n\n if (\n typeof defaultOptionValue !== 'object' ||\n ignoreProperties.includes(key)\n ) {\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n return;\n }\n if (!Array.isArray(provided[key])) {\n spread(provided[key], defaultOptionValue, copyTo[key]);\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n }\n path = path.substring(0, path.lastIndexOf(`.${key}`));\n });\n };\n spread(providedOptions, mergeTo, newOptions);\n\n return newOptions;\n }\n\n static _dataToOptions(element, options: Options): Options {\n const eData = element.dataset;\n if (\n !eData ||\n Object.keys(eData).length === 0 ||\n eData.constructor !== DOMStringMap\n )\n return options;\n let dataOptions = {} as Options;\n\n // because dataset returns camelCase including the 'td' key the option\n // key won't align\n const objectToNormalized = (object) => {\n const lowered = {};\n Object.keys(object).forEach((x) => {\n lowered[x.toLowerCase()] = x;\n });\n\n return lowered;\n };\n\n const rabbitHole = (\n split: string[],\n index: number,\n optionSubgroup: {},\n value: any\n ) => {\n // first round = display { ... }\n const normalizedOptions = objectToNormalized(optionSubgroup);\n\n const keyOption = normalizedOptions[split[index].toLowerCase()];\n const internalObject = {};\n\n if (keyOption === undefined) return internalObject;\n\n // if this is another object, continue down the rabbit hole\n if (optionSubgroup[keyOption].constructor === Object) {\n index++;\n internalObject[keyOption] = rabbitHole(\n split,\n index,\n optionSubgroup[keyOption],\n value\n );\n } else {\n internalObject[keyOption] = value;\n }\n return internalObject;\n };\n const optionsLower = objectToNormalized(options);\n\n Object.keys(eData)\n .filter((x) => x.startsWith(Namespace.dataKey))\n .map((x) => x.substring(2))\n .forEach((key) => {\n let keyOption = optionsLower[key.toLowerCase()];\n\n // dataset merges dashes to camelCase... yay\n // i.e. key = display_components_seconds\n if (key.includes('_')) {\n // [display, components, seconds]\n const split = key.split('_');\n // display\n keyOption = optionsLower[split[0].toLowerCase()];\n if (\n keyOption !== undefined &&\n options[keyOption].constructor === Object\n ) {\n dataOptions[keyOption] = rabbitHole(\n split,\n 1,\n options[keyOption],\n eData[`td${key}`]\n );\n }\n }\n // or key = multipleDate\n else if (keyOption !== undefined) {\n dataOptions[keyOption] = eData[`td${key}`];\n }\n });\n\n return this._mergeOptions(dataOptions, options);\n }\n\n /**\n * Attempts to prove `d` is a DateTime or Date or can be converted into one.\n * @param d If a string will attempt creating a date from it.\n * @private\n */\n static _dateTypeCheck(d: any): DateTime | null {\n if (d.constructor.name === DateTime.name) return d;\n if (d.constructor.name === Date.name) {\n return DateTime.convert(d);\n }\n if (typeof d === typeof '') {\n const dateTime = new DateTime(d);\n if (JSON.stringify(dateTime) === 'null') {\n return null;\n }\n return dateTime;\n }\n return null;\n }\n\n /**\n * Type checks that `value` is an array of Date or DateTime\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckDateArray(optionName: string, value, providedType: string) {\n if (!Array.isArray(value)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of DateTime or Date'\n );\n }\n for (let i = 0; i < value.length; i++) {\n let d = value[i];\n const dateTime = this._dateConversion(d, optionName);\n if (!dateTime) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n typeof d,\n 'DateTime or Date'\n );\n }\n value[i] = dateTime;\n }\n }\n\n /**\n * Type checks that `value` is an array of numbers\n * @param optionName Provides text to error messages e.g. disabledDates\n * @param value Option value\n * @param providedType Used to provide text to error messages\n */\n static _typeCheckNumberArray(\n optionName: string,\n value,\n providedType: string\n ) {\n if (!Array.isArray(value) || value.find((x) => typeof x !== typeof 0)) {\n Namespace.errorMessages.typeMismatch(\n optionName,\n providedType,\n 'array of numbers'\n );\n }\n return;\n }\n\n /**\n * Attempts to convert `d` to a DateTime object\n * @param d value to convert\n * @param optionName Provides text to error messages e.g. disabledDates\n */\n static _dateConversion(d: any, optionName: string) {\n if (typeof d === typeof '' && optionName !== 'input') {\n Namespace.errorMessages.dateString();\n }\n\n const converted = this._dateTypeCheck(d);\n\n if (!converted) {\n Namespace.errorMessages.failedToParseDate(\n optionName,\n d,\n optionName === 'input'\n );\n }\n return converted;\n }\n\n private static _flatback: string[];\n\n private static get _flattenDefaultOptions(): string[] {\n if (this._flatback) return this._flatback;\n const deepKeys = (t, pre = []) =>\n Array.isArray(t)\n ? []\n : Object(t) === t\n ? Object.entries(t).flatMap(([k, v]) => deepKeys(v, [...pre, k]))\n : pre.join('.');\n\n this._flatback = deepKeys(DefaultOptions);\n\n return this._flatback;\n }\n\n /**\n * Some options conflict like min/max date. Verify that these kinds of options\n * are set correctly.\n * @param config\n */\n static _validateConflcits(config: Options) {\n if (config.restrictions.minDate && config.restrictions.maxDate) {\n if (config.restrictions.minDate.isAfter(config.restrictions.maxDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'minDate is after maxDate'\n );\n }\n\n if (config.restrictions.maxDate.isBefore(config.restrictions.minDate)) {\n Namespace.errorMessages.conflictingConfiguration(\n 'maxDate is before minDate'\n );\n }\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Namespace from './namespace';\nimport { ChangeEvent, FailEvent } from './event-types';\nimport { OptionConverter } from './options';\n\nexport default class Dates {\n private _dates: DateTime[] = [];\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Returns the array of selected dates\n */\n get picked(): DateTime[] {\n return this._dates;\n }\n\n /**\n * Returns the last picked value.\n */\n get lastPicked(): DateTime {\n return this._dates[this.lastPickedIndex];\n }\n\n /**\n * Returns the length of picked dates -1 or 0 if none are selected.\n */\n get lastPickedIndex(): number {\n if (this._dates.length === 0) return 0;\n return this._dates.length - 1;\n }\n\n /**\n * Adds a new DateTime to selected dates array\n * @param date\n */\n add(date: DateTime): void {\n this._dates.push(date);\n }\n\n /**\n * Tries to convert the provided value to a DateTime object.\n * If value is null|undefined then clear the value of the provided index (or 0).\n * @param value Value to convert or null|undefined\n * @param index When using multidates this is the index in the array\n * @param from Used in the warning message, useful for debugging.\n */\n set(value: any, index?: number, from: string = 'date.set') {\n if (!value) this._setValue(value, index);\n const converted = OptionConverter._dateConversion(value, from);\n if (converted) this._setValue(converted, index);\n }\n\n /**\n * Returns true if the `targetDate` is part of the selected dates array.\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n isPicked(targetDate: DateTime, unit?: Unit): boolean {\n if (!unit) return this._dates.find((x) => x === targetDate) !== undefined;\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return (\n this._dates\n .map((x) => x.format(format))\n .find((x) => x === innerDateFormatted) !== undefined\n );\n }\n\n /**\n * Returns the index at which `targetDate` is in the array.\n * This is used for updating or removing a date when multi-date is used\n * If `unit` is provided then a granularity to that unit will be used.\n * @param targetDate\n * @param unit\n */\n pickedIndex(targetDate: DateTime, unit?: Unit): number {\n if (!unit) return this._dates.indexOf(targetDate);\n\n const format = Dates.getFormatByUnit(unit);\n\n let innerDateFormatted = targetDate.format(format);\n\n return this._dates.map((x) => x.format(format)).indexOf(innerDateFormatted);\n }\n\n /**\n * Clears all selected dates.\n */\n clear() {\n this._context._unset = true;\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate: this.lastPicked,\n isClear: true,\n isValid: true,\n } as ChangeEvent);\n this._dates = [];\n }\n\n /**\n * Find the \"book end\" years given a `year` and a `factor`\n * @param factor e.g. 100 for decades\n * @param year e.g. 2021\n */\n static getStartEndYear(\n factor: number,\n year: number\n ): [number, number, number] {\n const step = factor / 10,\n startYear = Math.floor(year / factor) * factor,\n endYear = startYear + step * 9,\n focusValue = Math.floor(year / step) * step;\n return [startYear, endYear, focusValue];\n }\n\n /**\n * Do not use direectly. Attempts to either clear or set the `target` date at `index`.\n * If the `target` is null then the date will be cleared.\n * If multi-date is being used then it will be removed from the array.\n * If `target` is valid and multi-date is used then if `index` is\n * provided the date at that index will be replaced, otherwise it is appended.\n * @param target\n * @param index\n */\n _setValue(target?: DateTime, index?: number): void {\n const noIndex = typeof index === 'undefined',\n isClear = !target && noIndex;\n let oldDate = this._context._unset ? null : this._dates[index];\n if (!oldDate && !this._context._unset && noIndex && isClear) {\n oldDate = this.lastPicked;\n }\n\n const updateInput = () => {\n if (!this._context._input) return;\n\n let newValue = this._context._options.hooks.inputFormat(\n this._context,\n target\n );\n if (this._context._options.multipleDates) {\n newValue = this._dates\n .map((d) =>\n this._context._options.hooks.inputFormat(this._context, d)\n )\n .join(this._context._options.multipleDatesSeparator);\n }\n if (this._context._input.value != newValue)\n this._context._input.value = newValue;\n };\n\n if (target && oldDate?.isSame(target)) {\n updateInput();\n return;\n }\n\n // case of calling setValue(null)\n if (!target) {\n if (\n !this._context._options.multipleDates ||\n this._dates.length === 1 ||\n isClear\n ) {\n this._context._unset = true;\n this._dates = [];\n } else {\n this._dates.splice(index, 1);\n }\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: undefined,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n\n updateInput();\n this._context._display._update('all');\n return;\n }\n\n index = index || 0;\n target = target.clone;\n\n // minute stepping is being used, force the minute to the closest value\n if (this._context._options.stepping !== 1) {\n target.minutes =\n Math.round(target.minutes / this._context._options.stepping) *\n this._context._options.stepping;\n target.seconds = 0;\n }\n\n if (this._context._validation.isValid(target)) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._unset = false;\n this._context._display._update('all');\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: true,\n } as ChangeEvent);\n return;\n }\n\n if (this._context._options.keepInvalid) {\n this._dates[index] = target;\n this._context._viewDate = target.clone;\n\n updateInput();\n\n this._context._triggerEvent({\n type: Namespace.events.change,\n date: target,\n oldDate,\n isClear,\n isValid: false,\n } as ChangeEvent);\n }\n this._context._triggerEvent({\n type: Namespace.events.error,\n reason: Namespace.errorMessages.failedToSetInvalidDate,\n date: target,\n oldDate,\n } as FailEvent);\n }\n\n /**\n * Returns a format object based on the granularity of `unit`\n * @param unit\n */\n static getFormatByUnit(unit: Unit): object {\n switch (unit) {\n case 'date':\n return { dateStyle: 'short' };\n case 'month':\n return {\n month: 'numeric',\n year: 'numeric',\n };\n case 'year':\n return { year: 'numeric' };\n }\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\nimport Dates from '../../dates';\r\n\r\n/**\r\n * Creates and updates the grid for `year`\r\n */\r\nexport default class YearDisplay {\r\n private _context: TempusDominus;\r\n private _startYear: DateTime;\r\n private _endYear: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.yearsContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectYear);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 10,\r\n this._context._viewDate.year\r\n );\r\n this._startYear = this._context._viewDate.clone.manipulate(-1, Unit.year);\r\n this._endYear = this._context._viewDate.clone.manipulate(10, Unit.year);\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.yearsContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.yearsContainer,\r\n `${this._startYear.format({ year: 'numeric' })}-${this._endYear.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startYear, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endYear, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.year)\r\n .manipulate(-1, Unit.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectYear}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n let classes = [];\r\n classes.push(Namespace.css.year);\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.year)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.year)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute('data-value', `${innerDate.year}`);\r\n containerClone.innerText = innerDate.format({ year: \"numeric\" });\r\n\r\n innerDate.manipulate(1, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport Dates from '../../dates';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `seconds`\r\n */\r\nexport default class DecadeDisplay {\r\n private _context: TempusDominus;\r\n private _startDecade: DateTime;\r\n private _endDecade: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker() {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.decadesContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDecade);\r\n container.appendChild(div);\r\n }\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 100,\r\n this._context._viewDate.year\r\n );\r\n this._startDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._startDecade.year = start;\r\n this._endDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._endDecade.year = end;\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.decadesContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.decadesContainer,\r\n `${this._startDecade.format({ year: 'numeric' })}-${this._endDecade.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startDecade, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endDecade, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n const pickedYears = this._context.dates.picked.map((x) => x.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectDecade}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (index === 0) {\r\n containerClone.classList.add(Namespace.css.old);\r\n if (this._startDecade.year - 10 < 0) {\r\n containerClone.textContent = ' ';\r\n previous.classList.add(Namespace.css.disabled);\r\n containerClone.classList.add(Namespace.css.disabled);\r\n containerClone.setAttribute('data-value', ``);\r\n return;\r\n } else {\r\n containerClone.innerText = this._startDecade.clone.manipulate(-10, Unit.year).format({ year: 'numeric' });\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n return;\r\n }\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.decade);\r\n const startDecadeYear = this._startDecade.year;\r\n const endDecadeYear = this._startDecade.year + 9;\r\n\r\n if (\r\n !this._context._unset &&\r\n pickedYears.filter((x) => x >= startDecadeYear && x <= endDecadeYear)\r\n .length > 0\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n containerClone.innerText = `${this._startDecade.format({ year: 'numeric' })}`;\r\n\r\n this._startDecade.manipulate(10, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates the clock display\n */\nexport default class TimeDisplay {\n private _context: TempusDominus;\n private _gridColumns = '';\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the clock display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.clockContainer);\n\n container.append(...this._grid());\n\n return container;\n }\n\n /**\n * Populates the various elements with in the clock display\n * like the current hour and if the manipulation icons are enabled.\n * @private\n */\n _update(): void {\n const timesDiv = (\n this._context._display.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0]\n );\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n timesDiv\n .querySelectorAll('.disabled')\n .forEach((element) => element.classList.remove(Namespace.css.disabled));\n\n if (this._context._options.display.components.hours) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.hours}]`\n ).innerText = this._context._options.display.components.useTwentyfourHour\n ? lastPicked.hoursFormatted\n : lastPicked.twelveHoursFormatted;\n }\n\n if (this._context._options.display.components.minutes) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.minutes}]`\n ).innerText = lastPicked.minutesFormatted;\n }\n\n if (this._context._options.display.components.seconds) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.seconds}]`\n ).innerText = lastPicked.secondsFormatted;\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n const toggle = timesDiv.querySelector(\n `[data-action=${ActionTypes.toggleMeridiem}]`\n );\n\n toggle.innerText = lastPicked.meridiem();\n\n if (\n !this._context._validation.isValid(\n lastPicked.clone.manipulate(\n lastPicked.hours >= 12 ? -12 : 12,\n Unit.hours\n )\n )\n ) {\n toggle.classList.add(Namespace.css.disabled);\n } else {\n toggle.classList.remove(Namespace.css.disabled);\n }\n }\n\n timesDiv.style.gridTemplateAreas = `\"${this._gridColumns}\"`;\n }\n\n /**\n * Creates the table for the clock display depending on what options are selected.\n * @private\n */\n private _grid(): HTMLElement[] {\n this._gridColumns = '';\n const top = [],\n middle = [],\n bottom = [],\n separator = document.createElement('div'),\n upIcon = this._context._display._iconTag(\n this._context._options.display.icons.up\n ),\n downIcon = this._context._display._iconTag(\n this._context._options.display.icons.down\n );\n\n separator.classList.add(Namespace.css.separator, Namespace.css.noHighlight);\n const separatorColon = separator.cloneNode(true);\n separatorColon.innerHTML = ':';\n\n const getSeparator = (colon = false): HTMLElement => {\n return colon\n ? separatorColon.cloneNode(true)\n : separator.cloneNode(true);\n };\n\n if (this._context._options.display.components.hours) {\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.incrementHours);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickHour\n );\n divElement.setAttribute('data-action', ActionTypes.showHours);\n divElement.setAttribute('data-time-component', Unit.hours);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.decrementHours);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n this._gridColumns += 'a';\n }\n\n if (this._context._options.display.components.minutes) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.hours) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.incrementMinutes);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickMinute\n );\n divElement.setAttribute('data-action', ActionTypes.showMinutes);\n divElement.setAttribute('data-time-component', Unit.minutes);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.decrementMinutes);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (this._context._options.display.components.seconds) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.minutes) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.incrementSeconds);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickSecond\n );\n divElement.setAttribute('data-action', ActionTypes.showSeconds);\n divElement.setAttribute('data-time-component', Unit.seconds);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.decrementSeconds);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n this._gridColumns += ' a';\n let divElement = getSeparator();\n top.push(divElement);\n\n let button = document.createElement('button');\n button.setAttribute(\n 'title',\n this._context._options.localization.toggleMeridiem\n );\n button.setAttribute('data-action', ActionTypes.toggleMeridiem);\n button.setAttribute('tabindex', '-1');\n button.classList.add(Namespace.css.toggleMeridiem);\n\n divElement = document.createElement('div');\n divElement.classList.add(Namespace.css.noHighlight);\n divElement.appendChild(button);\n middle.push(divElement);\n\n divElement = getSeparator();\n bottom.push(divElement);\n }\n\n this._gridColumns = this._gridColumns.trim();\n\n return [...top, ...middle, ...bottom];\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `hours`\n */\nexport default class HourDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.hourContainer);\n\n for (\n let i = 0;\n i <\n (this._context._options.display.components.useTwentyfourHour ? 24 : 12);\n i++\n ) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectHour);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.hourContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.date);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectHour}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.hour);\n\n if (!this._context._validation.isValid(innerDate, Unit.hours)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.hours}`);\n containerClone.innerText = this._context._options.display.components\n .useTwentyfourHour\n ? innerDate.hoursFormatted\n : innerDate.twelveHoursFormatted;\n innerDate.manipulate(1, Unit.hours);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `minutes`\n */\nexport default class MinuteDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.minuteContainer);\n\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n for (let i = 0; i < 60 / step; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMinute);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.minuteContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.hours);\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMinute}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.minute);\n\n if (!this._context._validation.isValid(innerDate, Unit.minutes)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.minutes}`);\n containerClone.innerText = innerDate.minutesFormatted;\n innerDate.manipulate(step, Unit.minutes);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class secondDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.secondContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectSecond);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.secondContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.minutes);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectSecond}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.second);\n\n if (!this._context._validation.isValid(innerDate, Unit.seconds)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.seconds}`);\n containerClone.innerText = innerDate.secondsFormatted;\n innerDate.manipulate(5, Unit.seconds);\n });\n }\n}\n","import DateDisplay from './calendar/date-display';\nimport MonthDisplay from './calendar/month-display';\nimport YearDisplay from './calendar/year-display';\nimport DecadeDisplay from './calendar/decade-display';\nimport TimeDisplay from './time/time-display';\nimport HourDisplay from './time/hour-display';\nimport MinuteDisplay from './time/minute-display';\nimport SecondDisplay from './time/second-display';\nimport { DateTime, Unit } from '../datetime';\nimport { DatePickerModes } from '../conts';\nimport { TempusDominus } from '../tempus-dominus';\nimport { ActionTypes } from '../actions';\nimport { createPopper } from '@popperjs/core';\nimport Namespace from '../namespace';\nimport { HideEvent } from '../event-types';\n\n/**\n * Main class for all things display related.\n */\nexport default class Display {\n private _context: TempusDominus;\n private _dateDisplay: DateDisplay;\n private _monthDisplay: MonthDisplay;\n private _yearDisplay: YearDisplay;\n private _decadeDisplay: DecadeDisplay;\n private _timeDisplay: TimeDisplay;\n private _widget: HTMLElement;\n private _hourDisplay: HourDisplay;\n private _minuteDisplay: MinuteDisplay;\n private _secondDisplay: SecondDisplay;\n private _popperInstance: any;\n private _isVisible = false;\n\n constructor(context: TempusDominus) {\n this._context = context;\n this._dateDisplay = new DateDisplay(context);\n this._monthDisplay = new MonthDisplay(context);\n this._yearDisplay = new YearDisplay(context);\n this._decadeDisplay = new DecadeDisplay(context);\n this._timeDisplay = new TimeDisplay(context);\n this._hourDisplay = new HourDisplay(context);\n this._minuteDisplay = new MinuteDisplay(context);\n this._secondDisplay = new SecondDisplay(context);\n\n this._widget = undefined;\n }\n\n /**\n * Returns the widget body or undefined\n * @private\n */\n get widget(): HTMLElement | undefined {\n return this._widget;\n }\n\n /**\n * Returns this visible state of the picker (shown)\n */\n get isVisible() {\n return this._isVisible;\n }\n\n /**\n * Updates the table for a particular unit. Used when an option as changed or\n * whenever the class list might need to be refreshed.\n * @param unit\n * @private\n */\n _update(unit: Unit | 'clock' | 'calendar' | 'all'): void {\n if (!this.widget) return;\n //todo do I want some kind of error catching or other guards here?\n switch (unit) {\n case Unit.seconds:\n this._secondDisplay._update();\n break;\n case Unit.minutes:\n this._minuteDisplay._update();\n break;\n case Unit.hours:\n this._hourDisplay._update();\n break;\n case Unit.date:\n this._dateDisplay._update();\n break;\n case Unit.month:\n this._monthDisplay._update();\n break;\n case Unit.year:\n this._yearDisplay._update();\n break;\n case 'clock':\n this._timeDisplay._update();\n this._update(Unit.hours);\n this._update(Unit.minutes);\n this._update(Unit.seconds);\n break;\n case 'calendar':\n this._update(Unit.date);\n this._update(Unit.year);\n this._update(Unit.month);\n this._decadeDisplay._update();\n this._updateCalendarHeader();\n break;\n case 'all':\n if (this._hasTime) {\n this._update('clock');\n }\n if (this._hasDate) {\n this._update('calendar');\n }\n }\n }\n\n /**\n * Shows the picker and creates a Popper instance if needed.\n * Add document click event to hide when clicking outside the picker.\n * @fires Events#show\n */\n show(): void {\n if (this.widget == undefined) {\n if (\n this._context._options.useCurrent &&\n !this._context._options.defaultDate &&\n !this._context._input?.value\n ) {\n //todo in the td4 branch a pr changed this to allow granularity\n const date = new DateTime().setLocale(\n this._context._options.localization.locale\n );\n if (!this._context._options.keepInvalid) {\n let tries = 0;\n let direction = 1;\n if (this._context._options.restrictions.maxDate?.isBefore(date)) {\n direction = -1;\n }\n while (!this._context._validation.isValid(date)) {\n date.manipulate(direction, Unit.date);\n if (tries > 31) break;\n tries++;\n }\n }\n this._context.dates._setValue(date);\n }\n\n if (this._context._options.defaultDate) {\n this._context.dates._setValue(this._context._options.defaultDate);\n }\n\n this._buildWidget();\n if (this._hasDate) {\n this._showMode();\n }\n\n if (!this._context._options.display.inline) {\n document.body.appendChild(this.widget);\n\n this._popperInstance = createPopper(\n this._context._element,\n this.widget,\n {\n modifiers: [{ name: 'eventListeners', enabled: true }],\n //#2400\n placement:\n document.documentElement.dir === 'rtl'\n ? 'bottom-end'\n : 'bottom-start',\n }\n );\n } else {\n this._context._element.appendChild(this.widget);\n }\n\n if (this._context._options.display.viewMode == 'clock') {\n this._context._action.do(\n {\n currentTarget: this.widget.querySelector(\n `.${Namespace.css.timeContainer}`\n ),\n },\n ActionTypes.showClock\n );\n }\n\n this.widget\n .querySelectorAll('[data-action]')\n .forEach((element) =>\n element.addEventListener('click', this._actionsClickEvent)\n );\n\n // show the clock when using sideBySide\n if (this._context._options.display.sideBySide) {\n this._timeDisplay._update();\n (\n this.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0] as HTMLElement\n ).style.display = 'grid';\n }\n }\n\n this.widget.classList.add(Namespace.css.show);\n if (!this._context._options.display.inline) {\n this._popperInstance.update();\n document.addEventListener('click', this._documentClickEvent);\n }\n this._context._triggerEvent({ type: Namespace.events.show });\n this._isVisible = true;\n }\n\n /**\n * Changes the calendar view mode. E.g. month <-> year\n * @param direction -/+ number to move currentViewMode\n * @private\n */\n _showMode(direction?: number): void {\n if (!this.widget) {\n return;\n }\n if (direction) {\n const max = Math.max(\n this._context._minViewModeNumber,\n Math.min(3, this._context._currentViewMode + direction)\n );\n if (this._context._currentViewMode == max) return;\n this._context._currentViewMode = max;\n }\n\n this.widget\n .querySelectorAll(\n `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div:not(.${Namespace.css.clockContainer})`\n )\n .forEach((e: HTMLElement) => (e.style.display = 'none'));\n\n const datePickerMode = DatePickerModes[this._context._currentViewMode];\n let picker: HTMLElement = this.widget.querySelector(\n `.${datePickerMode.className}`\n );\n\n switch (datePickerMode.className) {\n case Namespace.css.decadesContainer:\n this._decadeDisplay._update();\n break;\n case Namespace.css.yearsContainer:\n this._yearDisplay._update();\n break;\n case Namespace.css.monthsContainer:\n this._monthDisplay._update();\n break;\n case Namespace.css.daysContainer:\n this._dateDisplay._update();\n break;\n }\n\n picker.style.display = 'grid';\n this._updateCalendarHeader();\n }\n\n _updateCalendarHeader() {\n const showing = [\n ...this.widget.querySelector(\n `.${Namespace.css.dateContainer} div[style*=\"display: grid\"]`\n ).classList,\n ].find((x) => x.startsWith(Namespace.css.dateContainer));\n\n const [previous, switcher, next] = this._context._display.widget\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switch (showing) {\n case Namespace.css.decadesContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousCentury\n );\n switcher.setAttribute('title', '');\n next.setAttribute(\n 'title',\n this._context._options.localization.nextCentury\n );\n break;\n case Namespace.css.yearsContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousDecade\n );\n switcher.setAttribute(\n 'title',\n this._context._options.localization.selectDecade\n );\n next.setAttribute(\n 'title',\n this._context._options.localization.nextDecade\n );\n break;\n case Namespace.css.monthsContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousYear\n );\n switcher.setAttribute(\n 'title',\n this._context._options.localization.selectYear\n );\n next.setAttribute(\n 'title',\n this._context._options.localization.nextYear\n );\n break;\n case Namespace.css.daysContainer:\n previous.setAttribute(\n 'title',\n this._context._options.localization.previousMonth\n );\n switcher.setAttribute(\n 'title',\n this._context._options.localization.selectMonth\n );\n next.setAttribute(\n 'title',\n this._context._options.localization.nextMonth\n );\n switcher.innerText = this._context._viewDate.format({\n month: this._context._options.localization.dayViewHeaderFormat,\n });\n break;\n }\n switcher.innerText = switcher.getAttribute(showing);\n }\n\n /**\n * Hides the picker if needed.\n * Remove document click event to hide when clicking outside the picker.\n * @fires Events#hide\n */\n hide(): void {\n if (!this.widget || !this._isVisible) return;\n\n this.widget.classList.remove(Namespace.css.show);\n\n if (this._isVisible) {\n this._context._triggerEvent({\n type: Namespace.events.hide,\n date: this._context._unset\n ? null\n : this._context.dates.lastPicked\n ? this._context.dates.lastPicked.clone\n : void 0,\n } as HideEvent);\n this._isVisible = false;\n }\n\n document.removeEventListener('click', this._documentClickEvent);\n }\n\n /**\n * Toggles the picker's open state. Fires a show/hide event depending.\n */\n toggle() {\n return this._isVisible ? this.hide() : this.show();\n }\n\n /**\n * Removes document and data-action click listener and reset the widget\n * @private\n */\n _dispose() {\n document.removeEventListener('click', this._documentClickEvent);\n if (!this.widget) return;\n this.widget\n .querySelectorAll('[data-action]')\n .forEach((element) =>\n element.removeEventListener('click', this._actionsClickEvent)\n );\n this.widget.parentNode.removeChild(this.widget);\n this._widget = undefined;\n }\n\n /**\n * Builds the widgets html template.\n * @private\n */\n private _buildWidget(): HTMLElement {\n const template = document.createElement('div');\n template.classList.add(Namespace.css.widget);\n\n const dateView = document.createElement('div');\n dateView.classList.add(Namespace.css.dateContainer);\n dateView.append(\n this._headTemplate,\n this._decadeDisplay._picker,\n this._yearDisplay._picker,\n this._monthDisplay._picker,\n this._dateDisplay._picker\n );\n\n const timeView = document.createElement('div');\n timeView.classList.add(Namespace.css.timeContainer);\n timeView.appendChild(this._timeDisplay._picker);\n timeView.appendChild(this._hourDisplay._picker);\n timeView.appendChild(this._minuteDisplay._picker);\n timeView.appendChild(this._secondDisplay._picker);\n\n const toolbar = document.createElement('div');\n toolbar.classList.add(Namespace.css.toolbar);\n toolbar.append(...this._toolbar);\n\n if (this._context._options.display.inline) {\n template.classList.add(Namespace.css.inline);\n }\n\n if (this._context._options.display.calendarWeeks) {\n template.classList.add('calendarWeeks');\n }\n\n if (\n this._context._options.display.sideBySide &&\n this._hasDate &&\n this._hasTime\n ) {\n template.classList.add(Namespace.css.sideBySide);\n if (this._context._options.display.toolbarPlacement === 'top') {\n template.appendChild(toolbar);\n }\n const row = document.createElement('div');\n row.classList.add('td-row');\n dateView.classList.add('td-half');\n timeView.classList.add('td-half');\n\n row.appendChild(dateView);\n row.appendChild(timeView);\n template.appendChild(row);\n if (this._context._options.display.toolbarPlacement === 'bottom') {\n template.appendChild(toolbar);\n }\n this._widget = template;\n return;\n }\n\n if (this._context._options.display.toolbarPlacement === 'top') {\n template.appendChild(toolbar);\n }\n\n if (this._hasDate) {\n if (this._hasTime) {\n dateView.classList.add(Namespace.css.collapse);\n if (this._context._options.display.viewMode !== 'clock')\n dateView.classList.add(Namespace.css.show);\n }\n template.appendChild(dateView);\n }\n\n if (this._hasTime) {\n if (this._hasDate) {\n timeView.classList.add(Namespace.css.collapse);\n if (this._context._options.display.viewMode === 'clock')\n timeView.classList.add(Namespace.css.show);\n }\n template.appendChild(timeView);\n }\n\n if (this._context._options.display.toolbarPlacement === 'bottom') {\n template.appendChild(toolbar);\n }\n\n const arrow = document.createElement('div');\n arrow.classList.add('arrow');\n arrow.setAttribute('data-popper-arrow', '');\n template.appendChild(arrow);\n\n this._widget = template;\n }\n\n /**\n * Returns true if the hours, minutes, or seconds component is turned on\n */\n get _hasTime(): boolean {\n return (\n this._context._options.display.components.clock &&\n (this._context._options.display.components.hours ||\n this._context._options.display.components.minutes ||\n this._context._options.display.components.seconds)\n );\n }\n\n /**\n * Returns true if the year, month, or date component is turned on\n */\n get _hasDate(): boolean {\n return (\n this._context._options.display.components.calendar &&\n (this._context._options.display.components.year ||\n this._context._options.display.components.month ||\n this._context._options.display.components.date)\n );\n }\n\n /**\n * Get the toolbar html based on options like buttons.today\n * @private\n */\n get _toolbar(): HTMLElement[] {\n const toolbar = [];\n\n if (this._context._options.display.buttons.today) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.today);\n div.setAttribute('title', this._context._options.localization.today);\n\n div.appendChild(\n this._iconTag(this._context._options.display.icons.today)\n );\n toolbar.push(div);\n }\n if (\n !this._context._options.display.sideBySide &&\n this._hasDate &&\n this._hasTime\n ) {\n let title, icon;\n if (this._context._options.display.viewMode === 'clock') {\n title = this._context._options.localization.selectDate;\n icon = this._context._options.display.icons.date;\n } else {\n title = this._context._options.localization.selectTime;\n icon = this._context._options.display.icons.time;\n }\n\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.togglePicker);\n div.setAttribute('title', title);\n\n div.appendChild(this._iconTag(icon));\n toolbar.push(div);\n }\n if (this._context._options.display.buttons.clear) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.clear);\n div.setAttribute('title', this._context._options.localization.clear);\n\n div.appendChild(\n this._iconTag(this._context._options.display.icons.clear)\n );\n toolbar.push(div);\n }\n if (this._context._options.display.buttons.close) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.close);\n div.setAttribute('title', this._context._options.localization.close);\n\n div.appendChild(\n this._iconTag(this._context._options.display.icons.close)\n );\n toolbar.push(div);\n }\n\n return toolbar;\n }\n\n /***\n * Builds the base header template with next and previous icons\n * @private\n */\n get _headTemplate(): HTMLElement {\n const calendarHeader = document.createElement('div');\n calendarHeader.classList.add(Namespace.css.calendarHeader);\n\n const previous = document.createElement('div');\n previous.classList.add(Namespace.css.previous);\n previous.setAttribute('data-action', ActionTypes.previous);\n previous.appendChild(\n this._iconTag(this._context._options.display.icons.previous)\n );\n\n const switcher = document.createElement('div');\n switcher.classList.add(Namespace.css.switch);\n switcher.setAttribute('data-action', ActionTypes.pickerSwitch);\n\n const next = document.createElement('div');\n next.classList.add(Namespace.css.next);\n next.setAttribute('data-action', ActionTypes.next);\n next.appendChild(this._iconTag(this._context._options.display.icons.next));\n\n calendarHeader.append(previous, switcher, next);\n return calendarHeader;\n }\n\n /**\n * Builds an icon tag as either an ``\n * or with icons.type is `sprites` then an svg tag instead\n * @param iconClass\n * @private\n */\n _iconTag(iconClass: string): HTMLElement {\n if (this._context._options.display.icons.type === 'sprites') {\n const svg = document.createElement('svg');\n svg.innerHTML = ``;\n return svg;\n }\n const icon = document.createElement('i');\n DOMTokenList.prototype.add.apply(icon.classList, iconClass.split(' '));\n return icon;\n }\n\n /**\n * A document click event to hide the widget if click is outside\n * @private\n * @param e MouseEvent\n */\n private _documentClickEvent = (e: MouseEvent) => {\n if (this._context._options.debug || (window as any).debug) return;\n\n if (\n this._isVisible &&\n !e.composedPath().includes(this.widget) && // click inside the widget\n !e.composedPath()?.includes(this._context._element) // click on the element\n ) {\n this.hide();\n }\n };\n\n /**\n * Click event for any action like selecting a date\n * @param e MouseEvent\n * @private\n */\n private _actionsClickEvent = (e: MouseEvent) => {\n this._context._action.do(e);\n };\n\n /**\n * Causes the widget to get rebuilt on next show. If the picker is already open\n * then hide and reshow it.\n * @private\n */\n _rebuild() {\n const wasVisible = this._isVisible;\n if (wasVisible) this.hide();\n this._dispose();\n if (wasVisible) {\n this.show();\n }\n }\n}\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Dates from './dates';\n\n/**\n * Main class for date validation rules based on the options provided.\n */\nexport default class Validation {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Checks to see if the target date is valid based on the rules provided in the options.\n * Granularity can be provide to chek portions of the date instead of the whole.\n * @param targetDate\n * @param granularity\n */\n isValid(targetDate: DateTime, granularity?: Unit): boolean {\n if (\n this._context._options.restrictions.disabledDates.length > 0 &&\n this._isInDisabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledDates.length > 0 &&\n !this._isInEnabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.daysOfWeekDisabled?.length > 0 &&\n this._context._options.restrictions.daysOfWeekDisabled.indexOf(\n targetDate.weekDay\n ) !== -1\n ) {\n return false;\n }\n\n if (\n this._context._options.restrictions.minDate &&\n targetDate.isBefore(\n this._context._options.restrictions.minDate,\n granularity\n )\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.maxDate &&\n targetDate.isAfter(\n this._context._options.restrictions.maxDate,\n granularity\n )\n ) {\n return false;\n }\n\n if (\n granularity === Unit.hours ||\n granularity === Unit.minutes ||\n granularity === Unit.seconds\n ) {\n if (\n this._context._options.restrictions.disabledHours.length > 0 &&\n this._isInDisabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledHours.length > 0 &&\n !this._isInEnabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.disabledTimeIntervals.length > 0\n ) {\n for (\n let i = 0;\n i < this._context._options.restrictions.disabledTimeIntervals.length;\n i++\n ) {\n if (\n targetDate.isBetween(\n this._context._options.restrictions.disabledTimeIntervals[i].from,\n this._context._options.restrictions.disabledTimeIntervals[i].to\n )\n )\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Checks to see if the disabledDates option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInDisabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledDates ||\n this._context._options.restrictions.disabledDates.length === 0\n )\n return false;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.disabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the enabledDates option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInEnabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledDates ||\n this._context._options.restrictions.enabledDates.length === 0\n )\n return true;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.enabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the disabledHours option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInDisabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledHours ||\n this._context._options.restrictions.disabledHours.length === 0\n )\n return false;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.disabledHours.find(\n (x) => x === formattedDate\n );\n }\n\n /**\n * Checks to see if the enabledHours option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInEnabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledHours ||\n this._context._options.restrictions.enabledHours.length === 0\n )\n return true;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.enabledHours.find(\n (x) => x === formattedDate\n );\n }\n}\n","import Display from './display/index';\nimport Validation from './validation';\nimport Dates from './dates';\nimport Actions, { ActionTypes } from './actions';\nimport { DatePickerModes, DefaultOptions } from './conts';\nimport { DateTime, DateTimeFormatOptions, Unit } from './datetime';\nimport Namespace from './namespace';\nimport Options, { OptionConverter } from './options';\nimport {\n BaseEvent,\n ChangeEvent,\n ViewUpdateEvent,\n FailEvent,\n} from './event-types';\n\n/**\n * A robust and powerful date/time picker component.\n */\nclass TempusDominus {\n dates: Dates;\n\n _options: Options;\n _currentViewMode = 0;\n _subscribers: { [key: string]: ((event: any) => {})[] } = {};\n _element: HTMLElement;\n _input: HTMLInputElement;\n _unset: boolean;\n _minViewModeNumber = 0;\n _display: Display;\n _validation: Validation;\n _action: Actions;\n private _isDisabled = false;\n private _notifyChangeEventContext = 0;\n private _toggle: HTMLElement;\n private _currentPromptTimeTimeout: any;\n\n constructor(element: HTMLElement, options: Options = {} as Options) {\n if (!element) {\n Namespace.errorMessages.mustProvideElement;\n }\n this._element = element;\n this._options = this._initializeOptions(options, DefaultOptions, true);\n this._viewDate.setLocale(this._options.localization.locale);\n this._unset = true;\n\n this._display = new Display(this);\n this._validation = new Validation(this);\n this.dates = new Dates(this);\n this._action = new Actions(this);\n\n this._initializeInput();\n this._initializeToggle();\n\n if (this._options.display.inline) this._display.show();\n }\n\n _viewDate = new DateTime();\n\n get viewDate() {\n return this._viewDate;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Update the picker options. If `reset` is provide `options` will be merged with DefaultOptions instead.\n * @param options\n * @param reset\n * @public\n */\n updateOptions(options, reset = false): void {\n if (reset) this._options = this._initializeOptions(options, DefaultOptions);\n else this._options = this._initializeOptions(options, this._options);\n this._display._rebuild();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Toggles the picker open or closed. If the picker is disabled, nothing will happen.\n * @public\n */\n toggle(): void {\n if (this._isDisabled) return;\n this._display.toggle();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Shows the picker unless the picker is disabled.\n * @public\n */\n show(): void {\n if (this._isDisabled) return;\n this._display.show();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker unless the picker is disabled.\n * @public\n */\n hide(): void {\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Disables the picker and the target input field.\n * @public\n */\n disable(): void {\n this._isDisabled = true;\n // todo this might be undesired. If a dev disables the input field to\n // only allow using the picker, this will break that.\n this._input?.setAttribute('disabled', 'disabled');\n this._display.hide();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Enables the picker and the target input field.\n * @public\n */\n enable(): void {\n this._isDisabled = false;\n this._input?.removeAttribute('disabled');\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Clears all the selected dates\n * @public\n */\n clear(): void {\n this.dates.clear();\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Allows for a direct subscription to picker events, without having to use addEventListener on the element.\n * @param eventTypes See Namespace.Events\n * @param callbacks Function to call when event is triggered\n * @public\n */\n subscribe(\n eventTypes: string | string[],\n callbacks: (event: any) => void | ((event: any) => void)[]\n ): { unsubscribe: void }[] {\n if (typeof eventTypes === 'string') {\n eventTypes = [eventTypes];\n }\n let callBackArray = [];\n if (!Array.isArray(callbacks)) {\n callBackArray = [callbacks];\n } else {\n callBackArray = callbacks;\n }\n\n if (eventTypes.length !== callBackArray.length) {\n Namespace.errorMessages.subscribeMismatch;\n }\n\n const returnArray = [];\n\n for (let i = 0; i < eventTypes.length; i++) {\n const eventType = eventTypes[i];\n if (!Array.isArray(this._subscribers[eventType])) {\n this._subscribers[eventType] = [];\n }\n\n this._subscribers[eventType].push(callBackArray[i]);\n\n returnArray.push({\n unsubscribe: this._unsubscribe.bind(\n this,\n eventType,\n this._subscribers[eventType].length - 1\n ),\n });\n\n if (eventTypes.length === 1) {\n return returnArray[0];\n }\n }\n\n return returnArray;\n }\n\n // noinspection JSUnusedGlobalSymbols\n /**\n * Hides the picker and removes event listeners\n */\n dispose() {\n this._display.hide();\n // this will clear the document click event listener\n this._display._dispose();\n this._input?.removeEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input?.removeEventListener('click', this._toggleClickEvent);\n }\n this._toggle.removeEventListener('click', this._toggleClickEvent);\n this._subscribers = {};\n }\n\n /**\n * Triggers an event like ChangeEvent when the picker has updated the value\n * of a selected date.\n * @param event Accepts a BaseEvent object.\n * @private\n */\n _triggerEvent(event: BaseEvent) {\n // checking hasOwnProperty because the BasicEvent also falls through here otherwise\n if ((event as ChangeEvent) && event.hasOwnProperty('date')) {\n const { date, oldDate, isClear } = event as ChangeEvent;\n // this was to prevent a max call stack error\n // https://github.com/tempusdominus/core/commit/15a280507f5277b31b0b3319ab1edc7c19a000fb\n // todo see if this is still needed or if there's a cleaner way\n this._notifyChangeEventContext++;\n if (\n (date && oldDate && date.isSame(oldDate)) ||\n (!isClear && !date && !oldDate) ||\n this._notifyChangeEventContext > 1\n ) {\n this._notifyChangeEventContext = 0;\n return;\n }\n this._handleAfterChangeEvent(event as ChangeEvent);\n }\n\n this._element.dispatchEvent(\n new CustomEvent(event.type, { detail: event as any })\n );\n\n if ((window as any).jQuery) {\n const $ = (window as any).jQuery;\n $(this._element).trigger(event);\n }\n\n const publish = () => {\n // return if event is not subscribed\n if (!Array.isArray(this._subscribers[event.type])) {\n return;\n }\n\n // Trigger callback for each subscriber\n this._subscribers[event.type].forEach((callback) => {\n callback(event);\n });\n };\n\n publish();\n\n this._notifyChangeEventContext = 0;\n }\n\n /**\n * Fires a ViewUpdate event when, for example, the month view is changed.\n * @param {Unit} unit\n * @private\n */\n _viewUpdate(unit: Unit) {\n this._triggerEvent({\n type: Namespace.events.update,\n change: unit,\n viewDate: this._viewDate.clone,\n } as ViewUpdateEvent);\n }\n\n private _unsubscribe(eventName, index) {\n this._subscribers[eventName].splice(index, 1);\n }\n\n /**\n * Merges two Option objects together and validates options type\n * @param config new Options\n * @param mergeTo Options to merge into\n * @param includeDataset When true, the elements data-td attributes will be included in the\n * @private\n */\n private _initializeOptions(\n config: Options,\n mergeTo: Options,\n includeDataset = false\n ): Options {\n config = OptionConverter._mergeOptions(config, mergeTo);\n if (includeDataset)\n config = OptionConverter._dataToOptions(this._element, config);\n\n OptionConverter._validateConflcits(config);\n\n config.viewDate = config.viewDate.setLocale(config.localization.locale);\n\n if (!this._viewDate.isSame(config.viewDate)) {\n this._viewDate = config.viewDate;\n }\n\n /**\n * Sets the minimum view allowed by the picker. For example the case of only\n * allowing year and month to be selected but not date.\n */\n if (config.display.components.year) {\n this._minViewModeNumber = 2;\n }\n if (config.display.components.month) {\n this._minViewModeNumber = 1;\n }\n if (config.display.components.date) {\n this._minViewModeNumber = 0;\n }\n\n this._currentViewMode = Math.max(\n this._minViewModeNumber,\n this._currentViewMode\n );\n\n // Update view mode if needed\n if (\n DatePickerModes[this._currentViewMode].name !== config.display.viewMode\n ) {\n this._currentViewMode = Math.max(\n DatePickerModes.findIndex((x) => x.name === config.display.viewMode),\n this._minViewModeNumber\n );\n }\n\n // defaults the input format based on the components enabled\n if (config.hooks.inputFormat === undefined) {\n const components = config.display.components;\n config.hooks.inputFormat = (_, date: DateTime) => {\n return date.format({\n year: components.calendar && components.year ? 'numeric' : undefined,\n month:\n components.calendar && components.month ? '2-digit' : undefined,\n day: components.calendar && components.date ? '2-digit' : undefined,\n hour:\n components.clock && components.hours\n ? components.useTwentyfourHour\n ? '2-digit'\n : 'numeric'\n : undefined,\n minute:\n components.clock && components.minutes ? '2-digit' : undefined,\n second:\n components.clock && components.seconds ? '2-digit' : undefined,\n hour12: !components.useTwentyfourHour,\n });\n };\n }\n\n if (this._display?.isVisible) {\n this._display._update('all');\n }\n\n return config;\n }\n\n /**\n * Checks if an input field is being used, attempts to locate one and sets an\n * event listener if found.\n * @private\n */\n private _initializeInput() {\n\n if (this._element.tagName == 'INPUT') {\n this._input = this._element as HTMLInputElement;\n } else {\n let query = this._element.dataset.tdTargetInput;\n if (query == undefined || query == 'nearest') {\n this._input = this._element.querySelector('input');\n } else {\n this._input = this._element.querySelector(query);\n }\n }\n\n if (!this._input) return;\n\n this._input.addEventListener('change', this._inputChangeEvent);\n if (this._options.allowInputToggle) {\n this._input.addEventListener('click', this._toggleClickEvent);\n }\n\n if (this._input.value) {\n this._inputChangeEvent();\n }\n }\n\n /**\n * Attempts to locate a toggle for the picker and sets an event listener\n * @private\n */\n private _initializeToggle() {\n if (this._options.display.inline) return;\n let query = this._element.dataset.tdTargetToggle;\n if (query == 'nearest') {\n query = '[data-td-toggle=\"datetimepicker\"]';\n }\n this._toggle =\n query == undefined ? this._element : this._element.querySelector(query);\n this._toggle.addEventListener('click', this._toggleClickEvent);\n }\n\n /**\n * If the option is enabled this will render the clock view after a date pick.\n * @param e change event\n * @private\n */\n private _handleAfterChangeEvent(e: ChangeEvent) {\n if (\n // options is disabled\n !this._options.promptTimeOnDateChange ||\n this._options.display.inline ||\n this._options.display.sideBySide ||\n // time is disabled\n !this._display._hasTime ||\n // clock component is already showing\n this._display.widget\n ?.getElementsByClassName(Namespace.css.show)[0]\n .classList.contains(Namespace.css.timeContainer)\n )\n return;\n\n // First time ever. If useCurrent option is set to true (default), do nothing\n // because the first date is selected automatically.\n // or date didn't change (time did) or date changed because time did.\n if (\n (!e.oldDate && this._options.useCurrent) ||\n (e.oldDate && e.date?.isSame(e.oldDate))\n ) {\n return;\n }\n\n clearTimeout(this._currentPromptTimeTimeout);\n this._currentPromptTimeTimeout = setTimeout(() => {\n if (this._display.widget) {\n this._action.do(\n {\n currentTarget: this._display.widget.querySelector(\n `.${Namespace.css.switch} div`\n ),\n },\n ActionTypes.togglePicker\n );\n }\n }, this._options.promptTimeOnDateChangeTransitionDelay);\n }\n\n /**\n * Event for when the input field changes. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _inputChangeEvent = () => {\n const setViewDate = () => {\n if (this.dates.lastPicked) this._viewDate = this.dates.lastPicked;\n };\n\n const value = this._input.value;\n if (this._options.multipleDates) {\n try {\n const valueSplit = value.split(this._options.multipleDatesSeparator);\n for (let i = 0; i < valueSplit.length; i++) {\n if (this._options.hooks.inputParse) {\n this.dates.set(\n this._options.hooks.inputParse(this, valueSplit[i]),\n i,\n 'input'\n );\n } else {\n this.dates.set(valueSplit[i], i, 'input');\n }\n }\n setViewDate();\n } catch {\n console.warn(\n 'TD: Something went wrong trying to set the multidate values from the input field.'\n );\n }\n } else {\n if (this._options.hooks.inputParse) {\n this.dates.set(this._options.hooks.inputParse(this, value), 0, 'input');\n } else {\n this.dates.set(value, 0, 'input');\n }\n setViewDate();\n }\n };\n\n /**\n * Event for when the toggle is clicked. This is a class level method so there's\n * something for the remove listener function.\n * @private\n */\n private _toggleClickEvent = () => {\n this.toggle();\n };\n}\n\nexport {\n TempusDominus,\n Namespace,\n DefaultOptions,\n DateTime,\n Options,\n Unit,\n DateTimeFormatOptions,\n};\n"],"names":["Unit","SecondDisplay","createPopper"],"mappings":";;;;;;;;;;;AAAYA;IAAZ,WAAY,IAAI;QACd,2BAAmB,CAAA;QACnB,2BAAmB,CAAA;QACnB,uBAAe,CAAA;QACf,qBAAa,CAAA;QACb,uBAAe,CAAA;QACf,qBAAa,CAAA;IACf,CAAC,EAPWA,YAAI,KAAJA,YAAI,QAOf;IAOD;;;;UAIa,QAAS,SAAQ,IAAI;QAAlC;;;;;YAIE,WAAM,GAAG,SAAS,CAAC;SA6YpB;;;;;QAvYC,SAAS,CAAC,KAAa;YACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,OAAO,IAAI,CAAC;SACb;;;;;;QAOD,OAAO,OAAO,CAAC,IAAU;YACvB,IAAI,CAAC,IAAI;gBAAE,MAAM,oBAAoB,CAAC;YACtC,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,WAAW,EAAE,EAClB,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,OAAO,EAAE,EACd,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,UAAU,EAAE,EACjB,IAAI,CAAC,UAAU,EAAE,EACjB,IAAI,CAAC,eAAe,EAAE,CACvB,CAAC;SACH;;;;QAKD,IAAI,KAAK;YACP,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,eAAe,EAAE,CACvB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC1B;;;;;;;QAQD,OAAO,CAAC,IAAsB;YAC5B,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,SAAS,IAAI,gBAAgB,CAAC;YAClE,QAAQ,IAAI;gBACV,KAAK,SAAS;oBACZ,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;oBACxB,MAAM;gBACR,KAAK,SAAS;oBACZ,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACtB,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBACzB,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC1B,MAAM;gBACR,KAAK,SAAS;oBACZ,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACxB,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;oBAC7C,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACxB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAChB,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACxB,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACpB,MAAM;aACT;YACD,OAAO,IAAI,CAAC;SACb;;;;;;;QAQD,KAAK,CAAC,IAAsB;YAC1B,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,SAAS,IAAI,gBAAgB,CAAC;YAClE,QAAQ,IAAI;gBACV,KAAK,SAAS;oBACZ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;gBACR,KAAK,SAAS;oBACZ,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;oBACzB,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;oBAC7B,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;oBAC/B,MAAM;gBACR,KAAK,SAAS;oBACZ,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACxB,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;oBAC7C,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,CAAC,KAAK,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACtB,IAAI,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,CAAC;oBAC/B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAChB,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,CAAC,KAAK,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACtB,IAAI,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;oBAC9B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAChB,MAAM;aACT;YACD,OAAO,IAAI,CAAC;SACb;;;;;;;;QASD,UAAU,CAAC,KAAa,EAAE,IAAU;YAClC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,SAAS,IAAI,gBAAgB,CAAC;YAClE,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;YACpB,OAAO,IAAI,CAAC;SACb;;;;;;;;QASD,MAAM,CAAC,QAA+B,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM;YAC1D,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC/D;;;;;;;QAQD,QAAQ,CAAC,OAAiB,EAAE,IAAW;YACrC,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;YACrD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,SAAS,IAAI,gBAAgB,CAAC;YAClE,QACE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAC1E;SACH;;;;;;;QAQD,OAAO,CAAC,OAAiB,EAAE,IAAW;YACpC,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;YACrD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,SAAS,IAAI,gBAAgB,CAAC;YAClE,QACE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAC1E;SACH;;;;;;;QAQD,MAAM,CAAC,OAAiB,EAAE,IAAW;YACnC,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;YACvD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,SAAS,IAAI,gBAAgB,CAAC;YAClE,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACpC,QACE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EACtE;SACH;;;;;;;;;QAUD,SAAS,CACP,IAAc,EACd,KAAe,EACf,IAAW,EACX,cAAyC,IAAI;YAE7C,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,SAAS,IAAI,gBAAgB,CAAC;YAC1E,MAAM,eAAe,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;YAC/C,MAAM,gBAAgB,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;YAEhD,QACE,CAAC,CAAC,eAAe;kBACb,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;kBACxB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;iBAC3B,gBAAgB;sBACb,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;sBAC1B,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;iBAChC,CAAC,eAAe;sBACb,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;sBACzB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;qBAC1B,gBAAgB;0BACb,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;0BACzB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EACnC;SACH;;;;;;QAOD,KAAK,CACH,MAAM,GAAG,IAAI,CAAC,MAAM,EACpB,WAAgB,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE;YAExD,MAAM,KAAK,GAAG,EAAE,CAAC;YACjB,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC;iBACtC,aAAa,CAAC,IAAI,CAAC;iBACnB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;iBACnC,OAAO,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7C,OAAO,KAAK,CAAC;SACd;;;;QAKD,IAAI,OAAO;YACT,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;SAC1B;;;;QAKD,IAAI,OAAO,CAAC,KAAa;YACvB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SACxB;;;;QAKD,IAAI,gBAAgB;YAClB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;SAC3C;;;;QAKD,IAAI,OAAO;YACT,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;SAC1B;;;;QAKD,IAAI,OAAO,CAAC,KAAa;YACvB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SACxB;;;;QAKD,IAAI,gBAAgB;YAClB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;SAC3C;;;;QAKD,IAAI,KAAK;YACP,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;SACxB;;;;QAKD,IAAI,KAAK,CAAC,KAAa;YACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACtB;;;;QAKD,IAAI,cAAc;YAChB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;SACzC;;;;QAKD,IAAI,oBAAoB;YACtB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;SACvD;;;;;;;QAQD,QAAQ,CAAC,SAAiB,IAAI,CAAC,MAAM;;YACnC,OAAO,MAAA,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;gBACrC,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,IAAI;aACN,CAAC;iBACN,aAAa,CAAC,IAAI,CAAC;iBACnB,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,0CAAE,KAAK,CAAC;SAC/C;;;;QAKD,IAAI,IAAI;YACN,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;SACvB;;;;QAKD,IAAI,IAAI,CAAC,KAAa;YACpB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SACrB;;;;QAKD,IAAI,aAAa;YACf,OAAO,IAAI,CAAC,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1D;;;;;QAMD,IAAI,IAAI;YACN,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9C,WAAW,CAAC,OAAO,CACjB,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CACzD,CAAC;YACF,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;SAC7E;;;;QAKD,IAAI,OAAO;YACT,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;SACtB;;;;QAKD,IAAI,KAAK;YACP,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;SACxB;;;;QAKD,IAAI,KAAK,CAAC,KAAa;YACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACtB;;;;QAKD,IAAI,cAAc;YAChB,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;SACjE;;;;QAKD,IAAI,IAAI;YACN,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;SAC3B;;;;QAKD,IAAI,IAAI,CAAC,KAAa;YACpB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACzB;;;UChaU,OAAQ,SAAQ,KAAK;KAEjC;UAEY,aAAa;QAA1B;YACU,SAAI,GAAG,KAAK,CAAC;;;;;;;YAmJrB,2BAAsB,GAAG,4BAA4B,CAAC;;;;;YAMtD,uBAAkB,GAAG,0BAA0B,CAAC;;SAGjD;;;;;;QApJC,gBAAgB,CAAC,UAAkB;YACjC,MAAM,KAAK,GAAG,IAAI,OAAO,CACvB,GAAG,IAAI,CAAC,IAAI,uBAAuB,UAAU,iCAAiC,CAC/E,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;;QAMD,iBAAiB,CAAC,UAAoB;YACpC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpE,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;;;;;;QAUD,qBAAqB,CACnB,UAAkB,EAClB,QAAgB,EAChB,YAAsB;YAEtB,MAAM,KAAK,GAAG,IAAI,OAAO,CACvB,GACE,IAAI,CAAC,IACP,6BAA6B,UAAU,gCAAgC,QAAQ,wBAAwB,YAAY,CAAC,IAAI,CACtH,IAAI,CACL,EAAE,CACJ,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;;;;;;QAUD,YAAY,CAAC,UAAkB,EAAE,OAAe,EAAE,YAAoB;YACpE,MAAM,KAAK,GAAG,IAAI,OAAO,CACvB,GAAG,IAAI,CAAC,IAAI,oBAAoB,UAAU,kBAAkB,OAAO,4BAA4B,YAAY,EAAE,CAC9G,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;;;;;QASD,gBAAgB,CAAC,UAAkB,EAAE,KAAa,EAAE,KAAa;YAC/D,MAAM,KAAK,GAAG,IAAI,OAAO,CACvB,GAAG,IAAI,CAAC,IAAI,IAAI,UAAU,wCAAwC,KAAK,QAAQ,KAAK,GAAG,CACxF,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;;;;;QASD,iBAAiB,CAAC,UAAkB,EAAE,IAAS,EAAE,IAAI,GAAG,KAAK;YAC3D,MAAM,KAAK,GAAG,IAAI,OAAO,CACvB,GAAG,IAAI,CAAC,IAAI,+BAA+B,IAAI,mBAAmB,UAAU,GAAG,CAChF,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,IAAI,CAAC,IAAI;gBAAE,MAAM,KAAK,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACrB;;;;QAKD,kBAAkB;YAChB,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,2BAA2B,CAAC,CAAC;YACnE,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;;QAMD,iBAAiB;YACf,MAAM,KAAK,GAAG,IAAI,OAAO,CACvB,GAAG,IAAI,CAAC,IAAI,+DAA+D,CAC5E,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;QAKD,wBAAwB,CAAC,OAAgB;YACvC,MAAM,KAAK,GAAG,IAAI,OAAO,CACvB,GAAG,IAAI,CAAC,IAAI,uDAAuD,OAAO,EAAE,CAC7E,CAAC;YACF,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACf,MAAM,KAAK,CAAC;SACb;;;;;QAMD,UAAU;YACR,OAAO,CAAC,IAAI,CACV,GAAG,IAAI,CAAC,IAAI,uFAAuF,CACpG,CAAC;SACH;;;IC/IH;IACA,MAAM,IAAI,GAAG,gBAAgB,EAC3B,OAAO,GAAG,cAAc,EACxB,OAAO,GAAG,IAAI,CAAC;IAEjB;;;IAGA,MAAM,MAAM;QAAZ;YACE,QAAG,GAAG,IAAI,OAAO,EAAE,CAAC;;;;;YAMpB,WAAM,GAAG,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC;;;;;YAM7B,WAAM,GAAG,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC;;;;;YAM7B,UAAK,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;;;;;YAM3B,SAAI,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;;;;;YAMzB,SAAI,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;;;YAKzB,SAAI,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;YACzB,UAAK,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,UAAK,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,YAAO,GAAG,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC;SAChC;KAAA;IAED,MAAM,GAAG;QAAT;;;;YAIE,WAAM,GAAG,GAAG,IAAI,SAAS,CAAC;;;;YAK1B,mBAAc,GAAG,iBAAiB,CAAC;;;;YAKnC,WAAM,GAAG,eAAe,CAAC;;;;YAKzB,YAAO,GAAG,SAAS,CAAC;;;;YAKpB,gBAAW,GAAG,cAAc,CAAC;;;;YAK7B,eAAU,GAAG,gBAAgB,CAAC;;;;YAK9B,aAAQ,GAAG,UAAU,CAAC;;;;YAKtB,SAAI,GAAG,MAAM,CAAC;;;;;YAMd,aAAQ,GAAG,UAAU,CAAC;;;;;YAMtB,QAAG,GAAG,KAAK,CAAC;;;;;YAMZ,QAAG,GAAG,KAAK,CAAC;;;;YAKZ,WAAM,GAAG,QAAQ,CAAC;;;;;YAOlB,kBAAa,GAAG,gBAAgB,CAAC;;;;YAKjC,qBAAgB,GAAG,GAAG,IAAI,CAAC,aAAa,UAAU,CAAC;;;;YAKnD,WAAM,GAAG,QAAQ,CAAC;;;;YAKlB,mBAAc,GAAG,GAAG,IAAI,CAAC,aAAa,QAAQ,CAAC;;;;YAK/C,SAAI,GAAG,MAAM,CAAC;;;;YAKd,oBAAe,GAAG,GAAG,IAAI,CAAC,aAAa,SAAS,CAAC;;;;YAKjD,UAAK,GAAG,OAAO,CAAC;;;;YAKhB,kBAAa,GAAG,GAAG,IAAI,CAAC,aAAa,OAAO,CAAC;;;;YAK7C,QAAG,GAAG,KAAK,CAAC;;;;;YAMZ,kBAAa,GAAG,IAAI,CAAC;;;;YAKrB,iBAAY,GAAG,KAAK,CAAC;;;;YAKrB,UAAK,GAAG,OAAO,CAAC;;;;YAKhB,YAAO,GAAG,SAAS,CAAC;;;;;;YASpB,kBAAa,GAAG,gBAAgB,CAAC;;;;YAKjC,cAAS,GAAG,WAAW,CAAC;;;;YAKxB,mBAAc,GAAG,GAAG,IAAI,CAAC,aAAa,QAAQ,CAAC;;;;YAK/C,kBAAa,GAAG,GAAG,IAAI,CAAC,aAAa,OAAO,CAAC;;;;YAK7C,oBAAe,GAAG,GAAG,IAAI,CAAC,aAAa,SAAS,CAAC;;;;YAKjD,oBAAe,GAAG,GAAG,IAAI,CAAC,aAAa,SAAS,CAAC;;;;YAKjD,SAAI,GAAG,MAAM,CAAC;;;;YAKd,WAAM,GAAG,QAAQ,CAAC;;;;YAKlB,WAAM,GAAG,QAAQ,CAAC;;;;YAKlB,mBAAc,GAAG,gBAAgB,CAAC;;;;;;YASlC,SAAI,GAAG,MAAM,CAAC;;;;;YAMd,eAAU,GAAG,eAAe,CAAC;;;;YAK7B,aAAQ,GAAG,aAAa,CAAC;;;;;YAOzB,WAAM,GAAG,QAAQ,CAAC;SACnB;KAAA;UAEoB,SAAS;;IACrB,cAAI,GAAG,IAAI,CAAC;IACnB;IACO,iBAAO,GAAG,OAAO,CAAC;IAClB,iBAAO,GAAG,OAAO,CAAC;IAElB,gBAAM,GAAG,IAAI,MAAM,EAAE,CAAC;IAEtB,aAAG,GAAG,IAAI,GAAG,EAAE,CAAC;IAEhB,uBAAa,GAAG,IAAI,aAAa,EAAE;;UC/QtC,cAAc,GAAY;QAC9B,YAAY,EAAE;YACZ,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,SAAS;YAClB,aAAa,EAAE,EAAE;YACjB,YAAY,EAAE,EAAE;YAChB,kBAAkB,EAAE,EAAE;YACtB,qBAAqB,EAAE,EAAE;YACzB,aAAa,EAAE,EAAE;YACjB,YAAY,EAAE,EAAE;SACjB;QACD,OAAO,EAAE;YACP,KAAK,EAAE;gBACL,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,iBAAiB;gBACvB,EAAE,EAAE,iBAAiB;gBACrB,IAAI,EAAE,mBAAmB;gBACzB,QAAQ,EAAE,qBAAqB;gBAC/B,IAAI,EAAE,sBAAsB;gBAC5B,KAAK,EAAE,uBAAuB;gBAC9B,KAAK,EAAE,cAAc;gBACrB,KAAK,EAAE,cAAc;aACtB;YACD,UAAU,EAAE,KAAK;YACjB,aAAa,EAAE,KAAK;YACpB,QAAQ,EAAE,UAAU;YACpB,gBAAgB,EAAE,QAAQ;YAC1B,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE;gBACP,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,KAAK;aACb;YACD,UAAU,EAAE;gBACV,QAAQ,EAAE,IAAI;gBACd,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,IAAI;gBACX,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,KAAK;gBACd,iBAAiB,EAAE,KAAK;aACzB;YACD,MAAM,EAAE,KAAK;SACd;QACD,QAAQ,EAAE,CAAC;QACX,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,SAAS;QACtB,YAAY,EAAE;YACZ,KAAK,EAAE,aAAa;YACpB,KAAK,EAAE,iBAAiB;YACxB,KAAK,EAAE,kBAAkB;YACzB,WAAW,EAAE,cAAc;YAC3B,aAAa,EAAE,gBAAgB;YAC/B,SAAS,EAAE,YAAY;YACvB,UAAU,EAAE,aAAa;YACzB,YAAY,EAAE,eAAe;YAC7B,QAAQ,EAAE,WAAW;YACrB,YAAY,EAAE,eAAe;YAC7B,cAAc,EAAE,iBAAiB;YACjC,UAAU,EAAE,aAAa;YACzB,eAAe,EAAE,kBAAkB;YACnC,WAAW,EAAE,cAAc;YAC3B,QAAQ,EAAE,WAAW;YACrB,aAAa,EAAE,gBAAgB;YAC/B,aAAa,EAAE,gBAAgB;YAC/B,UAAU,EAAE,aAAa;YACzB,eAAe,EAAE,kBAAkB;YACnC,eAAe,EAAE,kBAAkB;YACnC,UAAU,EAAE,aAAa;YACzB,eAAe,EAAE,kBAAkB;YACnC,eAAe,EAAE,kBAAkB;YACnC,cAAc,EAAE,iBAAiB;YACjC,UAAU,EAAE,aAAa;YACzB,UAAU,EAAE,aAAa;YACzB,mBAAmB,EAAE,MAAM;YAC3B,MAAM,EAAE,SAAS;SAClB;QACD,WAAW,EAAE,KAAK;QAClB,KAAK,EAAE,KAAK;QACZ,gBAAgB,EAAE,KAAK;QACvB,QAAQ,EAAE,IAAI,QAAQ,EAAE;QACxB,aAAa,EAAE,KAAK;QACpB,sBAAsB,EAAE,IAAI;QAC5B,sBAAsB,EAAE,KAAK;QAC7B,qCAAqC,EAAE,GAAG;QAC1C,KAAK,EAAE;YACL,UAAU,EAAE,SAAS;YACrB,WAAW,EAAE,SAAS;SACvB;MACD;IAEF,MAAM,eAAe,GAKf;QACJ;YACE,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,aAAa;YACtC,IAAI,EAAEA,YAAI,CAAC,KAAK;YAChB,IAAI,EAAE,CAAC;SACR;QACD;YACE,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,eAAe;YACxC,IAAI,EAAEA,YAAI,CAAC,IAAI;YACf,IAAI,EAAE,CAAC;SACR;QACD;YACE,IAAI,EAAE,OAAO;YACb,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,cAAc;YACvC,IAAI,EAAEA,YAAI,CAAC,IAAI;YACf,IAAI,EAAE,EAAE;SACT;QACD;YACE,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,gBAAgB;YACzC,IAAI,EAAEA,YAAI,CAAC,IAAI;YACf,IAAI,EAAE,GAAG;SACV;KACF;;IC/HD;;;UAGqB,QAAQ;QAA7B;;;;;;YAmFU,qCAAgC,GAAG,CAAC,OAAoB;gBAC9D,IAAI,CAAC,OAAO,EAAE;oBACZ,OAAO,CAAC,CAAC;iBACV;;gBAGD,IAAI,EAAE,kBAAkB,EAAE,eAAe,EAAE,GACzC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBAEnC,MAAM,uBAAuB,GAAG,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;gBACtE,MAAM,oBAAoB,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;;gBAGhE,IAAI,CAAC,uBAAuB,IAAI,CAAC,oBAAoB,EAAE;oBACrD,OAAO,CAAC,CAAC;iBACV;;gBAGD,kBAAkB,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtD,eAAe,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEhD,QACE,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC;oBACpC,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC;oBACpC,IAAI,EACJ;aACH,CAAC;SACH;;;;;QAvGC,MAAM,CAAC,MAAmB,EAAE,QAAQ,GAAG,SAAS;YAC9C,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBACjD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;aAC7B;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;aAC7B;SACF;;;;;QAMD,IAAI,CAAC,MAAmB,EAAE,QAAQ,GAAG,SAAS;YAC5C,IACE,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;gBACnD,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;gBAE7C,OAAO;YAET,MAAM,QAAQ,GAAG;gBACf,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAClD,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACjE,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;gBACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,IAAI,QAAQ;oBAAE,QAAQ,EAAE,CAAC;aAC1B,CAAC;YAEF,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;YAC1B,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAE/C,IAAI,CAAC,OAAO,GAAG,UAAU,CACvB,QAAQ,EACR,IAAI,CAAC,gCAAgC,CAAC,MAAM,CAAC,CAC9C,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,IAAI,CAAC;SAClD;;;;;QAMD,IAAI,CAAC,MAAmB,EAAE,QAAQ,GAAG,SAAS;YAC5C,IACE,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;gBACnD,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;gBAE9C,OAAO;YAET,MAAM,QAAQ,GAAG;gBACf,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAClD,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;aACrB,CAAC;YAEF,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;YAEtE,MAAM,MAAM,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC;YAEjD,MAAM,CAAC,MAAM,CAAC,CAAC;YAEf,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC/C,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;YAEzB,IAAI,CAAC,OAAO,GAAG,UAAU,CACvB,QAAQ,EACR,IAAI,CAAC,gCAAgC,CAAC,MAAM,CAAC,CAC9C,CAAC;SACH;;;IC3EH;;;UAGqB,OAAO;QAI1B,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;SAChC;;;;;;QAOD,EAAE,CAAC,CAAM,EAAE,MAAoB;YAC7B,MAAM,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC;YACtC,IAAI,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC3E,MAAM,GAAG,MAAM,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;YAChD,MAAM,UAAU,GAAG,CACjB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EACzD,KAAK,CAAC;;;;;;YAOR,MAAM,gBAAgB,GAAG,CAAC,IAAU,EAAE,KAAK,GAAG,CAAC;gBAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACnD,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;oBACpD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CACpC,CAAC;iBACH;aACF,CAAC;YAEF,QAAQ,MAAM;gBACZ,KAAK,WAAW,CAAC,IAAI,CAAC;gBACtB,KAAK,WAAW,CAAC,QAAQ;oBACvB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;oBACvE,IAAI,MAAM,KAAK,WAAW,CAAC,IAAI;wBAC7B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;;wBAC5C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBACzD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBAEhC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;oBACnC,MAAM;gBACR,KAAK,WAAW,CAAC,YAAY;oBAC3B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;oBACpC,IAAI,CAAC,QAAQ,CAAC,WAAW,CACvB,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,IAAI,CACrD,CAAC;oBACF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;oBAC/C,MAAM;gBACR,KAAK,WAAW,CAAC,WAAW,CAAC;gBAC7B,KAAK,WAAW,CAAC,UAAU,CAAC;gBAC5B,KAAK,WAAW,CAAC,YAAY;oBAC3B,MAAM,KAAK,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;oBAC3C,QAAQ,MAAM;wBACZ,KAAK,WAAW,CAAC,WAAW;4BAC1B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;4BACtC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAACA,YAAI,CAAC,KAAK,CAAC,CAAC;4BACtC,MAAM;wBACR,KAAK,WAAW,CAAC,UAAU;4BACzB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC;4BACrC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;4BACrC,MAAM;wBACR,KAAK,WAAW,CAAC,YAAY;4BAC3B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC;4BACrC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;4BACrC,MAAM;qBACT;oBAED,IACE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,KAAK,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EACnE;wBACA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,IAAI,CAAC,QAAQ,CAAC,SAAS,EACvB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CACpC,CAAC;wBACF,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE;4BAC1C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;yBAC/B;qBACF;yBAAM;wBACL,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;qBACtC;oBACD,MAAM;gBACR,KAAK,WAAW,CAAC,SAAS;oBACxB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC;oBAC1C,IAAI,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;wBACvD,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,CAAC;qBAChC;oBACD,IAAI,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;wBACvD,GAAG,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,CAAC;qBAC/B;oBAED,GAAG,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC;oBACtC,IAAI,KAAK,GAAG,CAAC,CAAC;oBACd,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE;wBACxC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;wBACxD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;4BAChB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;yBAC5C;6BAAM;4BACL,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,GAAG,EACH,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,GAAG,CAAC,CACxC,CAAC;yBACH;qBACF;yBAAM;wBACL,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,GAAG,EACH,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CACpC,CAAC;qBACH;oBAED,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ;wBAChC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ;wBACxC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;wBACtC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EACrC;wBACA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;qBAC/B;oBACD,MAAM;gBACR,KAAK,WAAW,CAAC,UAAU;oBACzB,IAAI,IAAI,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;oBACxC,IACE,UAAU,CAAC,KAAK,IAAI,EAAE;wBACtB,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB;wBAE5D,IAAI,IAAI,EAAE,CAAC;oBACb,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;oBACxB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,UAAU,EACV,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CACpC,CAAC;oBACF,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB;wBAC3D,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO;wBAClD,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ;wBACxC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EACtC;wBACA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;qBAC/B;yBAAM;wBACL,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;qBACnC;oBACD,MAAM;gBACR,KAAK,WAAW,CAAC,YAAY;oBAC3B,UAAU,CAAC,OAAO,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;oBAClD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,UAAU,EACV,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CACpC,CAAC;oBACF,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB;wBAC3D,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO;wBAClD,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ;wBACxC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EACtC;wBACA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;qBAC/B;yBAAM;wBACL,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;qBACnC;oBACD,MAAM;gBACR,KAAK,WAAW,CAAC,YAAY;oBAC3B,UAAU,CAAC,OAAO,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;oBAClD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,UAAU,EACV,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CACpC,CAAC;oBACF,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB;wBAC3D,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ;wBACxC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EACtC;wBACA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;qBAC/B;yBAAM;wBACL,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;qBACnC;oBACD,MAAM;gBACR,KAAK,WAAW,CAAC,cAAc;oBAC7B,gBAAgB,CAACA,YAAI,CAAC,KAAK,CAAC,CAAC;oBAC7B,MAAM;gBACR,KAAK,WAAW,CAAC,gBAAgB;oBAC/B,gBAAgB,CAACA,YAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBAChE,MAAM;gBACR,KAAK,WAAW,CAAC,gBAAgB;oBAC/B,gBAAgB,CAACA,YAAI,CAAC,OAAO,CAAC,CAAC;oBAC/B,MAAM;gBACR,KAAK,WAAW,CAAC,cAAc;oBAC7B,gBAAgB,CAACA,YAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;oBACjC,MAAM;gBACR,KAAK,WAAW,CAAC,gBAAgB;oBAC/B,gBAAgB,CAACA,YAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;oBACrE,MAAM;gBACR,KAAK,WAAW,CAAC,gBAAgB;oBAC/B,gBAAgB,CAACA,YAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;oBACnC,MAAM;gBACR,KAAK,WAAW,CAAC,cAAc;oBAC7B,gBAAgB,CACdA,YAAI,CAAC,KAAK,EACV,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CACtD,CAAC;oBACF,MAAM;gBACR,KAAK,WAAW,CAAC,YAAY;oBAC3B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM;yBAC1B,gBAAgB,CACf,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa,MAAM,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,CACnE;yBACA,OAAO,CAAC,CAAC,WAAwB,KAChC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAClC,CAAC;oBACJ,IACE,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC;wBACnC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,EAC9C;wBACA,aAAa,CAAC,YAAY,CACxB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAC/C,CAAC;wBACF,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CACvD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAC1C,CAAC,SAAS,CAAC;wBAEZ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;qBAChD;yBAAM;wBACL,aAAa,CAAC,YAAY,CACxB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAC/C,CAAC;wBACF,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CACvD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAC1C,CAAC,SAAS,CAAC;wBACZ,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;wBAClC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;qBACzC;oBACD,MAAM;gBACR,KAAK,WAAW,CAAC,SAAS,CAAC;gBAC3B,KAAK,WAAW,CAAC,SAAS,CAAC;gBAC3B,KAAK,WAAW,CAAC,WAAW,CAAC;gBAC7B,KAAK,WAAW,CAAC,WAAW;oBAC1B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM;yBAC1B,gBAAgB,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAC;yBACzD,OAAO,CACN,CAAC,WAAwB,MAAM,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,CACnE,CAAC;oBAEJ,IAAI,UAAU,GAAG,EAAE,CAAC;oBACpB,QAAQ,MAAM;wBACZ,KAAK,WAAW,CAAC,SAAS;4BACxB,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC;4BAC1C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;4BACxC,MAAM;wBACR,KAAK,WAAW,CAAC,SAAS;4BACxB,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC;4BACzC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAACA,YAAI,CAAC,KAAK,CAAC,CAAC;4BAC3C,MAAM;wBACR,KAAK,WAAW,CAAC,WAAW;4BAC1B,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC;4BAC3C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAACA,YAAI,CAAC,OAAO,CAAC,CAAC;4BAC7C,MAAM;wBACR,KAAK,WAAW,CAAC,WAAW;4BAC1B,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC;4BAC3C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAACA,YAAI,CAAC,OAAO,CAAC,CAAC;4BAC7C,MAAM;qBACT;oBAEa,CACZ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAClE,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;oBAC1B,MAAM;gBACR,KAAK,WAAW,CAAC,KAAK;oBACpB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBACpC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;oBAC/C,MAAM;gBACR,KAAK,WAAW,CAAC,KAAK;oBACpB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAC9B,MAAM;gBACR,KAAK,WAAW,CAAC,KAAK;oBACpB,MAAM,KAAK,GAAG,IAAI,QAAQ,EAAE,CAAC,SAAS,CACpC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAC3C,CAAC;oBACF,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;oBAChC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,EAAEA,YAAI,CAAC,IAAI,CAAC;wBACrD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAC3B,KAAK,EACL,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CACpC,CAAC;oBACJ,MAAM;aACT;SACF;KACF;IAED,IAAY,WA0BX;IA1BD,WAAY,WAAW;QACrB,4BAAa,CAAA;QACb,oCAAqB,CAAA;QACrB,4CAA6B,CAAA;QAC7B,0CAA2B,CAAA;QAC3B,wCAAyB,CAAA;QACzB,4CAA6B,CAAA;QAC7B,sCAAuB,CAAA;QACvB,wCAAyB,CAAA;QACzB,4CAA6B,CAAA;QAC7B,4CAA6B,CAAA;QAC7B,gDAAiC,CAAA;QACjC,oDAAqC,CAAA;QACrC,oDAAqC,CAAA;QACrC,gDAAiC,CAAA;QACjC,oDAAqC,CAAA;QACrC,oDAAqC,CAAA;QACrC,gDAAiC,CAAA;QACjC,4CAA6B,CAAA;QAC7B,sCAAuB,CAAA;QACvB,sCAAuB,CAAA;QACvB,0CAA2B,CAAA;QAC3B,0CAA2B,CAAA;QAC3B,8BAAe,CAAA;QACf,8BAAe,CAAA;QACf,8BAAe,CAAA;IACjB,CAAC,EA1BW,WAAW,KAAX,WAAW;;IC1SvB;;;UAGqB,WAAW;QAG9B,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAErD,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;YAE3C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE;gBAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAC1E,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;oBAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE;wBAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;wBAC1C,GAAG,CAAC,SAAS,CAAC,GAAG,CACf,SAAS,CAAC,GAAG,CAAC,aAAa,EAC3B,SAAS,CAAC,GAAG,CAAC,WAAW,CAC1B,CAAC;wBACF,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;qBAC5B;iBACF;gBAED,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;gBACvD,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YAED,OAAO,SAAS,CAAC;SAClB;;;;;QAMD,OAAO;YACL,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CACpE,SAAS,CAAC,GAAG,CAAC,aAAa,CAC5B,CAAC,CAAC,CAAC,CAAC;YACL,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,aAAa;iBACvD,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;iBACvD,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAE/B,QAAQ,CAAC,YAAY,CACnB,SAAS,CAAC,GAAG,CAAC,aAAa,EAC3B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC;gBAC7B,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,mBAAmB;aAC/D,CAAC,CACH,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAC/B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,EACxDA,YAAI,CAAC,KAAK,CACX;kBACG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBACjD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEnD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAC/B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,EACvDA,YAAI,CAAC,KAAK,CACX;kBACG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBAC7C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE/C,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK;iBAC1C,OAAO,CAACA,YAAI,CAAC,KAAK,CAAC;iBACnB,OAAO,CAAC,SAAS,CAAC;iBAClB,UAAU,CAAC,EAAE,EAAEA,YAAI,CAAC,KAAK,CAAC,CAAC;YAE9B,SAAS;iBACN,gBAAgB,CACf,iBAAiB,WAAW,CAAC,SAAS,QAAQ,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,CAC5E;iBACA,OAAO,CAAC,CAAC,cAA2B,EAAE,KAAK;gBAC1C,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa;oBAC5C,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,EAC9D;oBACA,IAAI,cAAc,CAAC,SAAS,KAAK,GAAG;wBAAE,OAAO;oBAC7C,cAAc,CAAC,SAAS,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;oBAC/C,OAAO;iBACR;gBAED,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAEhC,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAEA,YAAI,CAAC,KAAK,CAAC,EAAE;oBAC3D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBACjC;gBACD,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAEA,YAAI,CAAC,KAAK,CAAC,EAAE;oBAC1D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBACjC;gBAED,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;oBACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAEA,YAAI,CAAC,IAAI,CAAC,EAClD;oBACA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBACpC;gBACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAEA,YAAI,CAAC,IAAI,CAAC,EAAE;oBAC5D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACtC;gBACD,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,QAAQ,EAAE,EAAEA,YAAI,CAAC,IAAI,CAAC,EAAE;oBAC/C,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;iBACnC;gBACD,IAAI,SAAS,CAAC,OAAO,KAAK,CAAC,IAAI,SAAS,CAAC,OAAO,KAAK,CAAC,EAAE;oBACtD,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;iBACrC;gBAED,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC7D,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBACzC,cAAc,CAAC,YAAY,CACzB,YAAY,EACZ,GAAG,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,cAAc,IAAI,SAAS,CAAC,aAAa,EAAE,CAC3E,CAAC;gBACF,cAAc,CAAC,YAAY,CACzB,UAAU,EACV,GAAG,SAAS,CAAC,IAAI,EAAE,CACpB,CAAC;gBACF,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;gBAChE,SAAS,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;aACpC,CAAC,CAAC;SACN;;;;;QAMO,cAAc;YACpB,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK;iBAC1C,OAAO,CAAC,SAAS,CAAC;iBAClB,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;YACtB,MAAM,GAAG,GAAG,EAAE,CAAC;YACf,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAE9B,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE;gBAChD,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACrD,cAAc,CAAC,SAAS,CAAC,GAAG,CAC1B,SAAS,CAAC,GAAG,CAAC,aAAa,EAC3B,SAAS,CAAC,GAAG,CAAC,WAAW,CAC1B,CAAC;gBACF,cAAc,CAAC,SAAS,GAAG,GAAG,CAAC;gBAC/B,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aAC1B;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC1B,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACrD,cAAc,CAAC,SAAS,CAAC,GAAG,CAC1B,SAAS,CAAC,GAAG,CAAC,YAAY,EAC1B,SAAS,CAAC,GAAG,CAAC,WAAW,CAC1B,CAAC;gBACF,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;gBAClE,SAAS,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;gBACnC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aAC1B;YAED,OAAO,GAAG,CAAC;SACZ;;;IC5KH;;;UAGqB,YAAY;QAG/B,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAEvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;gBACzD,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YAED,OAAO,SAAS,CAAC;SAClB;;;;;QAMD,OAAO;YACL,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CACpE,SAAS,CAAC,GAAG,CAAC,eAAe,CAC9B,CAAC,CAAC,CAAC,CAAC;YACL,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,aAAa;iBACvD,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;iBACvD,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAE/B,QAAQ,CAAC,YAAY,CACnB,SAAS,CAAC,GAAG,CAAC,eAAe,EAC7B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CACpD,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAC/B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,EACvDA,YAAI,CAAC,IAAI,CACV;kBACG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBACjD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEnD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAC/B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,EACtDA,YAAI,CAAC,IAAI,CACV;kBACG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBAC7C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE/C,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;YAEjE,SAAS;iBACN,gBAAgB,CAAC,iBAAiB,WAAW,CAAC,WAAW,IAAI,CAAC;iBAC9D,OAAO,CAAC,CAAC,cAA2B,EAAE,KAAK;gBAC1C,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAElC,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;oBACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAEA,YAAI,CAAC,KAAK,CAAC,EACnD;oBACA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBACpC;gBACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAEA,YAAI,CAAC,KAAK,CAAC,EAAE;oBAC7D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACtC;gBAED,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC7D,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBACzC,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;gBACtD,cAAc,CAAC,SAAS,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;gBACrE,SAAS,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,CAAC;aACrC,CAAC,CAAC;SACN;;;UCSU,eAAe;QAC1B,OAAO,aAAa,CAAC,eAAwB,EAAE,OAAgB;YAC7D,MAAM,UAAU,GAAG,EAAa,CAAC;YACjC,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,MAAM,gBAAgB,GAAG,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;YAEvD,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW;gBACvD,QAAQ,GAAG;oBACT,KAAK,aAAa,EAAE;wBAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;wBAC5D,IAAI,QAAQ,KAAK,SAAS,EAAE;4BAC1B,OAAO,QAAQ,CAAC;yBACjB;wBACD,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,aAAa,EACb,YAAY,EACZ,kBAAkB,CACnB,CAAC;qBACH;oBACD,KAAK,UAAU,EAAE;wBACf,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;wBACzD,IAAI,QAAQ,KAAK,SAAS,EAAE;4BAC1B,OAAO,QAAQ,CAAC;yBACjB;wBACD,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,UAAU,EACV,YAAY,EACZ,kBAAkB,CACnB,CAAC;qBACH;oBACD,KAAK,SAAS,EAAE;wBACd,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,KAAK,CAAC;yBACd;wBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;wBACrE,IAAI,QAAQ,KAAK,SAAS,EAAE;4BAC1B,OAAO,QAAQ,CAAC;yBACjB;wBACD,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,CACnB,CAAC;qBACH;oBACD,KAAK,SAAS,EAAE;wBACd,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,KAAK,CAAC;yBACd;wBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;wBACrE,IAAI,QAAQ,KAAK,SAAS,EAAE;4BAC1B,OAAO,QAAQ,CAAC;yBACjB;wBACD,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,CACnB,CAAC;qBACH;oBACD,KAAK,eAAe;wBAClB,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,EAAE,CAAC;yBACX;wBACD,IAAI,CAAC,qBAAqB,CACxB,4BAA4B,EAC5B,KAAK,EACL,YAAY,CACb,CAAC;wBACF,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;4BACjD,SAAS,CAAC,aAAa,CAAC,gBAAgB,CACtC,4BAA4B,EAC5B,CAAC,EACD,EAAE,CACH,CAAC;wBACJ,OAAO,KAAK,CAAC;oBACf,KAAK,cAAc;wBACjB,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,EAAE,CAAC;yBACX;wBACD,IAAI,CAAC,qBAAqB,CACxB,2BAA2B,EAC3B,KAAK,EACL,YAAY,CACb,CAAC;wBACF,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;4BACjD,SAAS,CAAC,aAAa,CAAC,gBAAgB,CACtC,2BAA2B,EAC3B,CAAC,EACD,EAAE,CACH,CAAC;wBACJ,OAAO,KAAK,CAAC;oBACf,KAAK,oBAAoB;wBACvB,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,EAAE,CAAC;yBACX;wBACD,IAAI,CAAC,qBAAqB,CACxB,iCAAiC,EACjC,KAAK,EACL,YAAY,CACb,CAAC;wBACF,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;4BAChD,SAAS,CAAC,aAAa,CAAC,gBAAgB,CACtC,iCAAiC,EACjC,CAAC,EACD,CAAC,CACF,CAAC;wBACJ,OAAO,KAAK,CAAC;oBACf,KAAK,cAAc;wBACjB,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,EAAE,CAAC;yBACX;wBACD,IAAI,CAAC,mBAAmB,CACtB,2BAA2B,EAC3B,KAAK,EACL,YAAY,CACb,CAAC;wBACF,OAAO,KAAK,CAAC;oBACf,KAAK,eAAe;wBAClB,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,EAAE,CAAC;yBACX;wBACD,IAAI,CAAC,mBAAmB,CACtB,4BAA4B,EAC5B,KAAK,EACL,YAAY,CACb,CAAC;wBACF,OAAO,KAAK,CAAC;oBACf,KAAK,uBAAuB;wBAC1B,IAAI,KAAK,KAAK,SAAS,EAAE;4BACvB,OAAO,EAAE,CAAC;yBACX;wBACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;4BACzB,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,GAAG,EACH,YAAY,EACZ,qDAAqD,CACtD,CAAC;yBACH;wBACD,MAAM,WAAW,GAAG,KAAiC,CAAC;wBACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAC3C,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;gCACrC,MAAM,aAAa,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;gCAC3C,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gCAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;gCACxD,IAAI,CAAC,QAAQ,EAAE;oCACb,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,aAAa,EACb,OAAO,CAAC,EACR,kBAAkB,CACnB,CAAC;iCACH;gCACD,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;6BAC/B,CAAC,CAAC;yBACJ;wBACD,OAAO,WAAW,CAAC;oBACrB,KAAK,kBAAkB,CAAC;oBACxB,KAAK,MAAM,CAAC;oBACZ,KAAK,UAAU,CAAC;oBAChB,KAAK,qBAAqB;wBACxB,MAAM,YAAY,GAAG;4BACnB,gBAAgB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC;4BAC9C,IAAI,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;4BAC1B,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;4BAC7D,mBAAmB,EAAE;gCACnB,SAAS;gCACT,SAAS;gCACT,MAAM;gCACN,OAAO;gCACP,QAAQ;6BACT;yBACF,CAAC;wBACF,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;wBACrC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;4BAC7B,SAAS,CAAC,aAAa,CAAC,qBAAqB,CAC3C,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EACjB,KAAK,EACL,UAAU,CACX,CAAC;wBAEJ,OAAO,KAAK,CAAC;oBACf,KAAK,YAAY,CAAC;oBAClB,KAAK,aAAa;wBAChB,OAAO,KAAK,CAAC;oBACf;wBACE,QAAQ,WAAW;4BACjB,KAAK,SAAS;gCACZ,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,CAAC;4BAC5C,KAAK,QAAQ;gCACX,OAAO,CAAC,KAAK,CAAC;4BAChB,KAAK,QAAQ;gCACX,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;4BAC1B,KAAK,QAAQ;gCACX,OAAO,EAAE,CAAC;4BACZ,KAAK,UAAU;gCACb,OAAO,KAAK,CAAC;4BACf;gCACE,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EACjB,YAAY,EACZ,WAAW,CACZ,CAAC;yBACL;iBACJ;aACF,CAAC;;;;;;;;;YAUF,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM;gBAC3C,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CACrD,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC7C,CAAC;gBACF,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;oBACjC,MAAM,gBAAgB,GAAG,eAAe,CAAC,sBAAsB,CAAC;oBAEhE,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;wBACtC,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC;wBACjE,IAAI,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC7D,IAAI,UAAU;4BAAE,KAAK,IAAI,iBAAiB,UAAU,IAAI,CAAC;wBACzD,OAAO,KAAK,CAAC;qBACd,CAAC,CAAC;oBACH,SAAS,CAAC,aAAa,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;iBACnD;gBACD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG;oBACnC,MAAM,kBAAkB,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;oBAC5C,IAAI,YAAY,GAAG,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;oBACxC,IAAI,WAAW,GAAG,OAAO,kBAAkB,CAAC;oBAC5C,IAAI,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;oBAC1B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;wBACjC,IACE,WAAW,KAAK,WAAW;6BAC1B,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,MAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,EAC1D;4BACA,MAAM,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC;4BACjC,OAAO;yBACR;wBACD,QAAQ,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC;wBACnC,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;qBACvB;oBACD,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;oBAClB,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;oBAEhE,IACE,OAAO,kBAAkB,KAAK,QAAQ;wBACtC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAC9B;wBACA,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;wBACtD,OAAO;qBACR;oBACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;wBACjC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;wBACvD,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;qBACvD;oBACD,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;iBACvD,CAAC,CAAC;aACJ,CAAC;YACF,MAAM,CAAC,eAAe,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;YAE7C,OAAO,UAAU,CAAC;SACnB;QAED,OAAO,cAAc,CAAC,OAAO,EAAE,OAAgB;YAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;YAC9B,IACE,CAAC,KAAK;gBACN,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;gBAC/B,KAAK,CAAC,WAAW,KAAK,YAAY;gBAElC,OAAO,OAAO,CAAC;YACjB,IAAI,WAAW,GAAG,EAAa,CAAC;;;YAIhC,MAAM,kBAAkB,GAAG,CAAC,MAAM;gBAChC,MAAM,OAAO,GAAG,EAAE,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC5B,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC;iBAC9B,CAAC,CAAC;gBAEH,OAAO,OAAO,CAAC;aAChB,CAAC;YAEF,MAAM,UAAU,GAAG,CACjB,KAAe,EACf,KAAa,EACb,cAAkB,EAClB,KAAU;;gBAGV,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;gBAE7D,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;gBAChE,MAAM,cAAc,GAAG,EAAE,CAAC;gBAE1B,IAAI,SAAS,KAAK,SAAS;oBAAE,OAAO,cAAc,CAAC;;gBAGnD,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC,WAAW,KAAK,MAAM,EAAE;oBACpD,KAAK,EAAE,CAAC;oBACR,cAAc,CAAC,SAAS,CAAC,GAAG,UAAU,CACpC,KAAK,EACL,KAAK,EACL,cAAc,CAAC,SAAS,CAAC,EACzB,KAAK,CACN,CAAC;iBACH;qBAAM;oBACL,cAAc,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;iBACnC;gBACD,OAAO,cAAc,CAAC;aACvB,CAAC;YACF,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAEjD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;iBACf,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;iBAC9C,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;iBAC1B,OAAO,CAAC,CAAC,GAAG;gBACX,IAAI,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;;;gBAIhD,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;;oBAErB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;oBAE7B,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;oBACjD,IACE,SAAS,KAAK,SAAS;wBACvB,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,KAAK,MAAM,EACzC;wBACA,WAAW,CAAC,SAAS,CAAC,GAAG,UAAU,CACjC,KAAK,EACL,CAAC,EACD,OAAO,CAAC,SAAS,CAAC,EAClB,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAClB,CAAC;qBACH;iBACF;;qBAEI,IAAI,SAAS,KAAK,SAAS,EAAE;oBAChC,WAAW,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;iBAC5C;aACF,CAAC,CAAC;YAEL,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;SACjD;;;;;;QAOD,OAAO,cAAc,CAAC,CAAM;YAC1B,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI;gBAAE,OAAO,CAAC,CAAC;YACnD,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;gBACpC,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;aAC5B;YACD,IAAI,OAAO,CAAC,KAAK,OAAO,EAAE,EAAE;gBAC1B,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,MAAM,EAAE;oBACvC,OAAO,IAAI,CAAC;iBACb;gBACD,OAAO,QAAQ,CAAC;aACjB;YACD,OAAO,IAAI,CAAC;SACb;;;;;;;QAQD,OAAO,mBAAmB,CAAC,UAAkB,EAAE,KAAK,EAAE,YAAoB;YACxE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACzB,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,UAAU,EACV,YAAY,EACZ,2BAA2B,CAC5B,CAAC;aACH;YACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACrC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;gBACrD,IAAI,CAAC,QAAQ,EAAE;oBACb,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,UAAU,EACV,OAAO,CAAC,EACR,kBAAkB,CACnB,CAAC;iBACH;gBACD,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;aACrB;SACF;;;;;;;QAQD,OAAO,qBAAqB,CAC1B,UAAkB,EAClB,KAAK,EACL,YAAoB;YAEpB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,EAAE;gBACrE,SAAS,CAAC,aAAa,CAAC,YAAY,CAClC,UAAU,EACV,YAAY,EACZ,kBAAkB,CACnB,CAAC;aACH;YACD,OAAO;SACR;;;;;;QAOD,OAAO,eAAe,CAAC,CAAM,EAAE,UAAkB;YAC/C,IAAI,OAAO,CAAC,KAAK,OAAO,EAAE,IAAI,UAAU,KAAK,OAAO,EAAE;gBACpD,SAAS,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;aACtC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAEzC,IAAI,CAAC,SAAS,EAAE;gBACd,SAAS,CAAC,aAAa,CAAC,iBAAiB,CACvC,UAAU,EACV,CAAC,EACD,UAAU,KAAK,OAAO,CACvB,CAAC;aACH;YACD,OAAO,SAAS,CAAC;SAClB;QAIO,WAAW,sBAAsB;YACvC,IAAI,IAAI,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC,SAAS,CAAC;YAC1C,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,KAC3B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;kBACZ,EAAE;kBACF,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;sBACf,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;sBAC/D,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEpB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC;YAE1C,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;;;;;;QAOD,OAAO,kBAAkB,CAAC,MAAe;YACvC,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE;gBAC9D,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;oBACpE,SAAS,CAAC,aAAa,CAAC,wBAAwB,CAC9C,0BAA0B,CAC3B,CAAC;iBACH;gBAED,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;oBACrE,SAAS,CAAC,aAAa,CAAC,wBAAwB,CAC9C,2BAA2B,CAC5B,CAAC;iBACH;aACF;SACF;;;UCtjBkB,KAAK;QAIxB,YAAY,OAAsB;YAH1B,WAAM,GAAe,EAAE,CAAC;YAI9B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;QAKD,IAAI,MAAM;YACR,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;;;;QAKD,IAAI,UAAU;YACZ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SAC1C;;;;QAKD,IAAI,eAAe;YACjB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;SAC/B;;;;;QAMD,GAAG,CAAC,IAAc;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACxB;;;;;;;;QASD,GAAG,CAAC,KAAU,EAAE,KAAc,EAAE,OAAe,UAAU;YACvD,IAAI,CAAC,KAAK;gBAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACzC,MAAM,SAAS,GAAG,eAAe,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC/D,IAAI,SAAS;gBAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;SACjD;;;;;;;QAQD,QAAQ,CAAC,UAAoB,EAAE,IAAW;YACxC,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,UAAU,CAAC,KAAK,SAAS,CAAC;YAE1E,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAE3C,IAAI,kBAAkB,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEnD,QACE,IAAI,CAAC,MAAM;iBACR,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;iBAC5B,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,kBAAkB,CAAC,KAAK,SAAS,EACtD;SACH;;;;;;;;QASD,WAAW,CAAC,UAAoB,EAAE,IAAW;YAC3C,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAElD,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAE3C,IAAI,kBAAkB,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEnD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;SAC7E;;;;QAKD,KAAK;YACH,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;gBAC1B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM;gBAC7B,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,IAAI,CAAC,UAAU;gBACxB,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,IAAI;aACC,CAAC,CAAC;YAClB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;SAClB;;;;;;QAOD,OAAO,eAAe,CACpB,MAAc,EACd,IAAY;YAEZ,MAAM,IAAI,GAAG,MAAM,GAAG,EAAE,EACtB,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,MAAM,EAC9C,OAAO,GAAG,SAAS,GAAG,IAAI,GAAG,CAAC,EAC9B,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YAC9C,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;SACzC;;;;;;;;;;QAWD,SAAS,CAAC,MAAiB,EAAE,KAAc;YACzC,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,WAAW,EAC1C,OAAO,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC;YAC/B,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/D,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,OAAO,IAAI,OAAO,EAAE;gBAC3D,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;aAC3B;YAED,MAAM,WAAW,GAAG;gBAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;oBAAE,OAAO;gBAElC,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CACrD,IAAI,CAAC,QAAQ,EACb,MAAM,CACP,CAAC;gBACF,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,EAAE;oBACxC,QAAQ,GAAG,IAAI,CAAC,MAAM;yBACnB,GAAG,CAAC,CAAC,CAAC,KACL,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAC3D;yBACA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;iBACxD;gBACD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,QAAQ;oBACxC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC;aACzC,CAAC;YAEF,IAAI,MAAM,KAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAC,MAAM,CAAC,CAAA,EAAE;gBACrC,WAAW,EAAE,CAAC;gBACd,OAAO;aACR;;YAGD,IAAI,CAAC,MAAM,EAAE;gBACX,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa;oBACrC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;oBACxB,OAAO,EACP;oBACA,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;oBAC5B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;iBAClB;qBAAM;oBACL,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;iBAC9B;gBACD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;oBAC1B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM;oBAC7B,IAAI,EAAE,SAAS;oBACf,OAAO;oBACP,OAAO;oBACP,OAAO,EAAE,IAAI;iBACC,CAAC,CAAC;gBAElB,WAAW,EAAE,CAAC;gBACd,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACtC,OAAO;aACR;YAED,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC;YACnB,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;;YAGtB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,KAAK,CAAC,EAAE;gBACzC,MAAM,CAAC,OAAO;oBACZ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;wBAC5D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAClC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;aACpB;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;gBAC5B,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;gBAEvC,WAAW,EAAE,CAAC;gBAEd,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;gBAC7B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;oBAC1B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM;oBAC7B,IAAI,EAAE,MAAM;oBACZ,OAAO;oBACP,OAAO;oBACP,OAAO,EAAE,IAAI;iBACC,CAAC,CAAC;gBAClB,OAAO;aACR;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE;gBACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;gBAC5B,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;gBAEvC,WAAW,EAAE,CAAC;gBAEd,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;oBAC1B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM;oBAC7B,IAAI,EAAE,MAAM;oBACZ,OAAO;oBACP,OAAO;oBACP,OAAO,EAAE,KAAK;iBACA,CAAC,CAAC;aACnB;YACD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;gBAC1B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK;gBAC5B,MAAM,EAAE,SAAS,CAAC,aAAa,CAAC,sBAAsB;gBACtD,IAAI,EAAE,MAAM;gBACZ,OAAO;aACK,CAAC,CAAC;SACjB;;;;;QAMD,OAAO,eAAe,CAAC,IAAU;YAC/B,QAAQ,IAAI;gBACV,KAAK,MAAM;oBACT,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;gBAChC,KAAK,OAAO;oBACV,OAAO;wBACL,KAAK,EAAE,SAAS;wBAChB,IAAI,EAAE,SAAS;qBAChB,CAAC;gBACJ,KAAK,MAAM;oBACT,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;aAC9B;SACF;;;IC3PH;;;UAGqB,WAAW;QAK9B,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAEtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;gBACxD,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YAED,OAAO,SAAS,CAAC;SAClB;;;;;QAMD,OAAO;YACgB,KAAK,CAAC,eAAe,CACxC,EAAE,EACF,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAC5B;YACF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;YAC1E,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;YAExE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CACpE,SAAS,CAAC,GAAG,CAAC,cAAc,CAC7B,CAAC,CAAC,CAAC,CAAC;YACL,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,aAAa;iBACvD,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;iBACvD,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAE/B,QAAQ,CAAC,YAAY,CACnB,SAAS,CAAC,GAAG,CAAC,cAAc,EAC5B,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAC9F,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAEA,YAAI,CAAC,IAAI,CAAC;kBACzD,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBACjD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAEA,YAAI,CAAC,IAAI,CAAC;kBACvD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBAC7C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE/C,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK;iBAC1C,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC;iBAClB,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;YAE7B,SAAS;iBACN,gBAAgB,CAAC,iBAAiB,WAAW,CAAC,UAAU,IAAI,CAAC;iBAC7D,OAAO,CAAC,CAAC,cAA2B,EAAE,KAAK;gBAC1C,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAEjC,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;oBACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAEA,YAAI,CAAC,IAAI,CAAC,EAClD;oBACA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBACpC;gBACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAEA,YAAI,CAAC,IAAI,CAAC,EAAE;oBAC5D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACtC;gBAED,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC7D,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBACzC,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC/D,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;gBAEjE,SAAS,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;aACpC,CAAC,CAAC;SACN;;;ICvFH;;;UAGqB,aAAa;QAKhC,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAExD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC1D,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YACD,OAAO,SAAS,CAAC;SAClB;;;;;QAMD,OAAO;YACL,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,eAAe,CACxC,GAAG,EACH,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAC7B,CAAC;YACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;YACrE,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;YACnE,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC;YAE3B,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CACpE,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAC/B,CAAC,CAAC,CAAC,CAAC;YACL,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,aAAa;iBACvD,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;iBACvD,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAE/B,QAAQ,CAAC,YAAY,CACnB,SAAS,CAAC,GAAG,CAAC,gBAAgB,EAC9B,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAClG,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAEA,YAAI,CAAC,IAAI,CAAC;kBAC3D,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBACjD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAEA,YAAI,CAAC,IAAI,CAAC;kBACzD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;kBAC7C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE/C,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;YAElE,SAAS;iBACN,gBAAgB,CAAC,iBAAiB,WAAW,CAAC,YAAY,IAAI,CAAC;iBAC/D,OAAO,CAAC,CAAC,cAA2B,EAAE,KAAK;gBAC1C,IAAI,KAAK,KAAK,CAAC,EAAE;oBACf,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAChD,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC,EAAE;wBACnC,cAAc,CAAC,WAAW,GAAG,GAAG,CAAC;wBACjC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBAC/C,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;wBACrD,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;wBAC9C,OAAO;qBACR;yBAAM;wBACL,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;wBAC1G,cAAc,CAAC,YAAY,CACzB,YAAY,EACZ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAC5B,CAAC;wBACF,OAAO;qBACR;iBACF;gBAED,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACnC,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;gBAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC;gBAEjD,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;oBACrB,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,eAAe,IAAI,CAAC,IAAI,aAAa,CAAC;yBAClE,MAAM,GAAG,CAAC,EACb;oBACA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBACpC;gBAED,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC7D,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBACzC,cAAc,CAAC,YAAY,CACzB,YAAY,EACZ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAC5B,CAAC;gBACF,cAAc,CAAC,SAAS,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;gBAE9E,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;aAC7C,CAAC,CAAC;SACN;;;IC5GH;;;UAGqB,WAAW;QAG9B,YAAY,OAAsB;YAD1B,iBAAY,GAAG,EAAE,CAAC;YAExB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAEtD,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAElC,OAAO,SAAS,CAAC;SAClB;;;;;;QAOD,OAAO;YACL,MAAM,QAAQ,IACZ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CAClD,SAAS,CAAC,GAAG,CAAC,cAAc,CAC7B,CAAC,CAAC,CAAC,CACL,CAAC;YACF,MAAM,UAAU,GAAG,CACjB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,EACzD,KAAK,CAAC;YAER,QAAQ;iBACL,gBAAgB,CAAC,WAAW,CAAC;iBAC7B,OAAO,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YAE1E,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE;gBACnD,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAChC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,EACvDA,YAAI,CAAC,KAAK,CACX,EACD;oBACA,QAAQ;yBACL,aAAa,CAAC,gBAAgB,WAAW,CAAC,cAAc,GAAG,CAAC;yBAC5D,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC1C;gBAED,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAChC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,EACxDA,YAAI,CAAC,KAAK,CACX,EACD;oBACA,QAAQ;yBACL,aAAa,CAAC,gBAAgB,WAAW,CAAC,cAAc,GAAG,CAAC;yBAC5D,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC1C;gBACD,QAAQ,CAAC,aAAa,CACpB,wBAAwBA,YAAI,CAAC,KAAK,GAAG,CACtC,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB;sBACrE,UAAU,CAAC,cAAc;sBACzB,UAAU,CAAC,oBAAoB,CAAC;aACrC;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE;gBACrD,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAChC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,OAAO,CAAC,EACzDA,YAAI,CAAC,OAAO,CACb,EACD;oBACA,QAAQ;yBACL,aAAa,CAAC,gBAAgB,WAAW,CAAC,gBAAgB,GAAG,CAAC;yBAC9D,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC1C;gBAED,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAChC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,OAAO,CAAC,EAC1DA,YAAI,CAAC,OAAO,CACb,EACD;oBACA,QAAQ;yBACL,aAAa,CAAC,gBAAgB,WAAW,CAAC,gBAAgB,GAAG,CAAC;yBAC9D,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC1C;gBACD,QAAQ,CAAC,aAAa,CACpB,wBAAwBA,YAAI,CAAC,OAAO,GAAG,CACxC,CAAC,SAAS,GAAG,UAAU,CAAC,gBAAgB,CAAC;aAC3C;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE;gBACrD,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAChC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,OAAO,CAAC,EACzDA,YAAI,CAAC,OAAO,CACb,EACD;oBACA,QAAQ;yBACL,aAAa,CAAC,gBAAgB,WAAW,CAAC,gBAAgB,GAAG,CAAC;yBAC9D,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC1C;gBAED,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAChC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAEA,YAAI,CAAC,OAAO,CAAC,EAC1DA,YAAI,CAAC,OAAO,CACb,EACD;oBACA,QAAQ;yBACL,aAAa,CAAC,gBAAgB,WAAW,CAAC,gBAAgB,GAAG,CAAC;yBAC9D,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC1C;gBACD,QAAQ,CAAC,aAAa,CACpB,wBAAwBA,YAAI,CAAC,OAAO,GAAG,CACxC,CAAC,SAAS,GAAG,UAAU,CAAC,gBAAgB,CAAC;aAC3C;YAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE;gBAChE,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CACnC,gBAAgB,WAAW,CAAC,cAAc,GAAG,CAC9C,CAAC;gBAEF,MAAM,CAAC,SAAS,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;gBAEzC,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAChC,UAAU,CAAC,KAAK,CAAC,UAAU,CACzB,UAAU,CAAC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,EACjCA,YAAI,CAAC,KAAK,CACX,CACF,EACD;oBACA,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBAC9C;qBAAM;oBACL,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACjD;aACF;YAED,QAAQ,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC;SAC7D;;;;;QAMO,KAAK;YACX,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,EAAE,EACZ,MAAM,GAAG,EAAE,EACX,MAAM,GAAG,EAAE,EACX,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,EACzC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CACtC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CACxC,EACD,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CACxC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAC1C,CAAC;YAEJ,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC5E,MAAM,cAAc,GAAgB,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC9D,cAAc,CAAC,SAAS,GAAG,GAAG,CAAC;YAE/B,MAAM,YAAY,GAAG,CAAC,KAAK,GAAG,KAAK;gBACjC,OAAO,KAAK;sBACK,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC;sBAC9B,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aAC5C,CAAC;YAEF,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE;gBACnD,IAAI,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC/C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAClD,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;gBACnE,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/C,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAErB,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAC7C,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;gBAC9D,UAAU,CAAC,YAAY,CAAC,qBAAqB,EAAEA,YAAI,CAAC,KAAK,CAAC,CAAC;gBAC3D,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAExB,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAClD,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;gBACnE,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBACjD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACxB,IAAI,CAAC,YAAY,IAAI,GAAG,CAAC;aAC1B;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE;gBACrD,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;gBAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE;oBACnD,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;oBACzB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;oBAChC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;oBAC5B,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;iBAC3B;gBACD,IAAI,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC/C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,CACpD,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBACrE,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/C,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAErB,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAC/C,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;gBAChE,UAAU,CAAC,YAAY,CAAC,qBAAqB,EAAEA,YAAI,CAAC,OAAO,CAAC,CAAC;gBAC7D,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAExB,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,CACpD,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBACrE,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBACjD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACzB;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE;gBACrD,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;gBAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE;oBACrD,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;oBACzB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;oBAChC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;oBAC5B,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;iBAC3B;gBACD,IAAI,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC/C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,CACpD,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBACrE,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/C,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAErB,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAC/C,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;gBAChE,UAAU,CAAC,YAAY,CAAC,qBAAqB,EAAEA,YAAI,CAAC,OAAO,CAAC,CAAC;gBAC7D,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAExB,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,UAAU,CAAC,YAAY,CACrB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,CACpD,CAAC;gBACF,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBACrE,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBACjD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACzB;YAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE;gBAChE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;gBAC1B,IAAI,UAAU,GAAG,YAAY,EAAE,CAAC;gBAChC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAErB,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAC9C,MAAM,CAAC,YAAY,CACjB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,CACnD,CAAC;gBACF,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;gBAC/D,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBACtC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBAEnD,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC3C,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACpD,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAExB,UAAU,GAAG,YAAY,EAAE,CAAC;gBAC5B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACzB;YAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YAE7C,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC;SACvC;;;IChTH;;;UAGqB,WAAW;QAG9B,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAErD,KACE,IAAI,CAAC,GAAG,CAAC,EACT,CAAC;iBACA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB,GAAG,EAAE,GAAG,EAAE,CAAC,EACvE,CAAC,EAAE,EACH;gBACA,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;gBACxD,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YAED,OAAO,SAAS,CAAC;SAClB;;;;;QAMD,OAAO;YACL,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CACpE,SAAS,CAAC,GAAG,CAAC,aAAa,CAC5B,CAAC,CAAC,CAAC,CAAC;YACL,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;YAEjE,SAAS;iBACN,gBAAgB,CAAC,iBAAiB,WAAW,CAAC,UAAU,IAAI,CAAC;iBAC7D,OAAO,CAAC,CAAC,cAA2B,EAAE,KAAK;gBAC1C,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAEjC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAEA,YAAI,CAAC,KAAK,CAAC,EAAE;oBAC7D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACtC;gBAED,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC7D,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBACzC,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;gBAChE,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;qBACjE,iBAAiB;sBAChB,SAAS,CAAC,cAAc;sBACxB,SAAS,CAAC,oBAAoB,CAAC;gBACnC,SAAS,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,KAAK,CAAC,CAAC;aACrC,CAAC,CAAC;SACN;;;IC7DH;;;UAGqB,aAAa;QAGhC,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAEvD,IAAI,IAAI,GACN,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,KAAK,CAAC;kBACjC,CAAC;kBACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;gBAClC,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC1D,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YAED,OAAO,SAAS,CAAC;SAClB;;;;;QAMD,OAAO;YACL,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CACpE,SAAS,CAAC,GAAG,CAAC,eAAe,CAC9B,CAAC,CAAC,CAAC,CAAC;YACL,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAACA,YAAI,CAAC,KAAK,CAAC,CAAC;YAClE,IAAI,IAAI,GACN,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,KAAK,CAAC;kBACjC,CAAC;kBACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAEtC,SAAS;iBACN,gBAAgB,CAAC,iBAAiB,WAAW,CAAC,YAAY,IAAI,CAAC;iBAC/D,OAAO,CAAC,CAAC,cAA2B,EAAE,KAAK;gBAC1C,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAEnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAEA,YAAI,CAAC,OAAO,CAAC,EAAE;oBAC/D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACtC;gBAED,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC7D,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBACzC,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;gBAClE,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC,gBAAgB,CAAC;gBACtD,SAAS,CAAC,UAAU,CAAC,IAAI,EAAEA,YAAI,CAAC,OAAO,CAAC,CAAC;aAC1C,CAAC,CAAC;SACN;;;IC7DH;;;UAGqB,aAAa;QAGhC,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;QAMD,IAAI,OAAO;YACT,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChD,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAEvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC1D,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC5B;YAED,OAAO,SAAS,CAAC;SAClB;;;;;QAMD,OAAO;YACL,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CACpE,SAAS,CAAC,GAAG,CAAC,eAAe,CAC9B,CAAC,CAAC,CAAC,CAAC;YACL,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAACA,YAAI,CAAC,OAAO,CAAC,CAAC;YAEpE,SAAS;iBACN,gBAAgB,CAAC,iBAAiB,WAAW,CAAC,YAAY,IAAI,CAAC;iBAC/D,OAAO,CAAC,CAAC,cAA2B,EAAE,KAAK;gBAC1C,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAEnC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAEA,YAAI,CAAC,OAAO,CAAC,EAAE;oBAC/D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACtC;gBAED,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC7D,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBACzC,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;gBAClE,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC,gBAAgB,CAAC;gBACtD,SAAS,CAAC,UAAU,CAAC,CAAC,EAAEA,YAAI,CAAC,OAAO,CAAC,CAAC;aACvC,CAAC,CAAC;SACN;;;IC1CH;;;UAGqB,OAAO;QAc1B,YAAY,OAAsB;YAF1B,eAAU,GAAG,KAAK,CAAC;;;;;;YAikBnB,wBAAmB,GAAG,CAAC,CAAa;;gBAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,IAAK,MAAc,CAAC,KAAK;oBAAE,OAAO;gBAElE,IACE,IAAI,CAAC,UAAU;oBACf,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;oBACvC,EAAC,MAAA,CAAC,CAAC,YAAY,EAAE,0CAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;kBACnD;oBACA,IAAI,CAAC,IAAI,EAAE,CAAC;iBACb;aACF,CAAC;;;;;;YAOM,uBAAkB,GAAG,CAAC,CAAa;gBACzC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aAC7B,CAAC;YAjlBA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;YAC7C,IAAI,CAAC,aAAa,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;YAC7C,IAAI,CAAC,cAAc,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;YACjD,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;YAC7C,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;YAC7C,IAAI,CAAC,cAAc,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;YACjD,IAAI,CAAC,cAAc,GAAG,IAAIC,aAAa,CAAC,OAAO,CAAC,CAAC;YAEjD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;SAC1B;;;;;QAMD,IAAI,MAAM;YACR,OAAO,IAAI,CAAC,OAAO,CAAC;SACrB;;;;QAKD,IAAI,SAAS;YACX,OAAO,IAAI,CAAC,UAAU,CAAC;SACxB;;;;;;;QAQD,OAAO,CAAC,IAAyC;YAC/C,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;;YAEzB,QAAQ,IAAI;gBACV,KAAKD,YAAI,CAAC,OAAO;oBACf,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;oBAC9B,MAAM;gBACR,KAAKA,YAAI,CAAC,OAAO;oBACf,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;oBAC9B,MAAM;gBACR,KAAKA,YAAI,CAAC,KAAK;oBACb,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAC5B,MAAM;gBACR,KAAKA,YAAI,CAAC,IAAI;oBACZ,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAC5B,MAAM;gBACR,KAAKA,YAAI,CAAC,KAAK;oBACb,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;oBAC7B,MAAM;gBACR,KAAKA,YAAI,CAAC,IAAI;oBACZ,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAC5B,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAC5B,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,KAAK,CAAC,CAAC;oBACzB,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,OAAO,CAAC,CAAC;oBAC3B,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,OAAO,CAAC,CAAC;oBAC3B,MAAM;gBACR,KAAK,UAAU;oBACb,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACxB,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC;oBACxB,IAAI,CAAC,OAAO,CAACA,YAAI,CAAC,KAAK,CAAC,CAAC;oBACzB,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;oBAC9B,IAAI,CAAC,qBAAqB,EAAE,CAAC;oBAC7B,MAAM;gBACR,KAAK,KAAK;oBACR,IAAI,IAAI,CAAC,QAAQ,EAAE;wBACjB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;qBACvB;oBACD,IAAI,IAAI,CAAC,QAAQ,EAAE;wBACjB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;qBAC1B;aACJ;SACF;;;;;;QAOD,IAAI;;YACF,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE;gBAC5B,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU;oBACjC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW;oBACnC,EAAC,MAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,0CAAE,KAAK,CAAA,EAC5B;;oBAEA,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC,SAAS,CACnC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAC3C,CAAC;oBACF,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE;wBACvC,IAAI,KAAK,GAAG,CAAC,CAAC;wBACd,IAAI,SAAS,GAAG,CAAC,CAAC;wBAClB,IAAI,MAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,0CAAE,QAAQ,CAAC,IAAI,CAAC,EAAE;4BAC/D,SAAS,GAAG,CAAC,CAAC,CAAC;yBAChB;wBACD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;4BAC/C,IAAI,CAAC,UAAU,CAAC,SAAS,EAAEA,YAAI,CAAC,IAAI,CAAC,CAAC;4BACtC,IAAI,KAAK,GAAG,EAAE;gCAAE,MAAM;4BACtB,KAAK,EAAE,CAAC;yBACT;qBACF;oBACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;iBACrC;gBAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE;oBACtC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;iBACnE;gBAED,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACjB,IAAI,CAAC,SAAS,EAAE,CAAC;iBAClB;gBAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE;oBAC1C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAEvC,IAAI,CAAC,eAAe,GAAGE,iBAAY,CACjC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EACtB,IAAI,CAAC,MAAM,EACX;wBACE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;wBAEtD,SAAS,EACP,QAAQ,CAAC,eAAe,CAAC,GAAG,KAAK,KAAK;8BAClC,YAAY;8BACZ,cAAc;qBACrB,CACF,CAAC;iBACH;qBAAM;oBACL,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBACjD;gBAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,EAAE;oBACtD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CACtB;wBACE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CACtC,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,CAClC;qBACF,EACD,WAAW,CAAC,SAAS,CACtB,CAAC;iBACH;gBAED,IAAI,CAAC,MAAM;qBACR,gBAAgB,CAAC,eAAe,CAAC;qBACjC,OAAO,CAAC,CAAC,OAAO,KACf,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAC3D,CAAC;;gBAGJ,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE;oBAC7C,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAE1B,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAChC,SAAS,CAAC,GAAG,CAAC,cAAc,CAC7B,CAAC,CAAC,CACJ,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;iBAC1B;aACF;YAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE;gBAC1C,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;gBAC9B,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;aAC9D;YACD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SACxB;;;;;;QAOD,SAAS,CAAC,SAAkB;YAC1B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAChB,OAAO;aACR;YACD,IAAI,SAAS,EAAE;gBACb,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAClB,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAChC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,GAAG,SAAS,CAAC,CACxD,CAAC;gBACF,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,GAAG;oBAAE,OAAO;gBAClD,IAAI,CAAC,QAAQ,CAAC,gBAAgB,GAAG,GAAG,CAAC;aACtC;YAED,IAAI,CAAC,MAAM;iBACR,gBAAgB,CACf,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa,eAAe,SAAS,CAAC,GAAG,CAAC,cAAc,OAAO,SAAS,CAAC,GAAG,CAAC,aAAa,eAAe,SAAS,CAAC,GAAG,CAAC,cAAc,GAAG,CAC3J;iBACA,OAAO,CAAC,CAAC,CAAc,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;YAE3D,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YACvE,IAAI,MAAM,GAAgB,IAAI,CAAC,MAAM,CAAC,aAAa,CACjD,IAAI,cAAc,CAAC,SAAS,EAAE,CAC/B,CAAC;YAEF,QAAQ,cAAc,CAAC,SAAS;gBAC9B,KAAK,SAAS,CAAC,GAAG,CAAC,gBAAgB;oBACjC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;oBAC9B,MAAM;gBACR,KAAK,SAAS,CAAC,GAAG,CAAC,cAAc;oBAC/B,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAC5B,MAAM;gBACR,KAAK,SAAS,CAAC,GAAG,CAAC,eAAe;oBAChC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;oBAC7B,MAAM;gBACR,KAAK,SAAS,CAAC,GAAG,CAAC,aAAa;oBAC9B,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;oBAC5B,MAAM;aACT;YAED,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAC9B,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B;QAED,qBAAqB;YACnB,MAAM,OAAO,GAAG;gBACd,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAC1B,IAAI,SAAS,CAAC,GAAG,CAAC,aAAa,8BAA8B,CAC9D,CAAC,SAAS;aACZ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;YAEzD,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM;iBAC7D,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;iBACvD,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAE/B,QAAQ,OAAO;gBACb,KAAK,SAAS,CAAC,GAAG,CAAC,gBAAgB;oBACjC,QAAQ,CAAC,YAAY,CACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,CACpD,CAAC;oBACF,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;oBACnC,IAAI,CAAC,YAAY,CACf,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAChD,CAAC;oBACF,MAAM;gBACR,KAAK,SAAS,CAAC,GAAG,CAAC,cAAc;oBAC/B,QAAQ,CAAC,YAAY,CACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,cAAc,CACnD,CAAC;oBACF,QAAQ,CAAC,YAAY,CACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CACjD,CAAC;oBACF,IAAI,CAAC,YAAY,CACf,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAC/C,CAAC;oBACF,MAAM;gBACR,KAAK,SAAS,CAAC,GAAG,CAAC,eAAe;oBAChC,QAAQ,CAAC,YAAY,CACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CACjD,CAAC;oBACF,QAAQ,CAAC,YAAY,CACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAC/C,CAAC;oBACF,IAAI,CAAC,YAAY,CACf,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAC7C,CAAC;oBACF,MAAM;gBACR,KAAK,SAAS,CAAC,GAAG,CAAC,aAAa;oBAC9B,QAAQ,CAAC,YAAY,CACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAClD,CAAC;oBACF,QAAQ,CAAC,YAAY,CACnB,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAChD,CAAC;oBACF,IAAI,CAAC,YAAY,CACf,OAAO,EACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAC9C,CAAC;oBACF,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC;wBAClD,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,mBAAmB;qBAC/D,CAAC,CAAC;oBACH,MAAM;aACT;YACD,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;SACrD;;;;;;QAOD,IAAI;YACF,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU;gBAAE,OAAO;YAE7C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEjD,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;oBAC1B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI;oBAC3B,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;0BACtB,IAAI;0BACJ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU;8BAC9B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK;8BACpC,KAAK,CAAC;iBACE,CAAC,CAAC;gBAChB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;aACzB;YAED,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;SACjE;;;;QAKD,MAAM;YACJ,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;SACpD;;;;;QAMD,QAAQ;YACN,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAChE,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACzB,IAAI,CAAC,MAAM;iBACR,gBAAgB,CAAC,eAAe,CAAC;iBACjC,OAAO,CAAC,CAAC,OAAO,KACf,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAC9D,CAAC;YACJ,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;SAC1B;;;;;QAMO,YAAY;YAClB,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAE7C,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACpD,QAAQ,CAAC,MAAM,CACb,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,CAAC,OAAO,EAC3B,IAAI,CAAC,YAAY,CAAC,OAAO,EACzB,IAAI,CAAC,aAAa,CAAC,OAAO,EAC1B,IAAI,CAAC,YAAY,CAAC,OAAO,CAC1B,CAAC;YAEF,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACpD,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAChD,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAChD,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAClD,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAElD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC9C,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7C,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEjC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE;gBACzC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;aAC9C;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE;gBAChD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;aACzC;YAED,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;gBACzC,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,QAAQ,EACb;gBACA,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBACjD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,KAAK,KAAK,EAAE;oBAC7D,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;iBAC/B;gBACD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC5B,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAClC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAElC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAC1B,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAC1B,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,KAAK,QAAQ,EAAE;oBAChE,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;iBAC/B;gBACD,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;gBACxB,OAAO;aACR;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,KAAK,KAAK,EAAE;gBAC7D,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;aAC/B;YAED,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACjB,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;wBACrD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;iBAC9C;gBACD,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;aAChC;YAED,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACjB,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;wBACrD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;iBAC9C;gBACD,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;aAChC;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,KAAK,QAAQ,EAAE;gBAChE,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;aAC/B;YAED,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC5C,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7B,KAAK,CAAC,YAAY,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;YAC5C,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAE5B,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;SACzB;;;;QAKD,IAAI,QAAQ;YACV,QACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK;iBAC9C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK;oBAC9C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO;oBACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EACpD;SACH;;;;QAKD,IAAI,QAAQ;YACV,QACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ;iBACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI;oBAC7C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK;oBAC/C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EACjD;SACH;;;;;QAMD,IAAI,QAAQ;YACV,MAAM,OAAO,GAAG,EAAE,CAAC;YAEnB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;gBAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;gBACnD,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAErE,GAAG,CAAC,WAAW,CACb,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAC1D,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACnB;YACD,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;gBAC1C,IAAI,CAAC,QAAQ;gBACb,IAAI,CAAC,QAAQ,EACb;gBACA,IAAI,KAAK,EAAE,IAAI,CAAC;gBAChB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;oBACvD,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC;oBACvD,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;iBAClD;qBAAM;oBACL,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC;oBACvD,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;iBAClD;gBAED,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC1D,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAEjC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;gBACrC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACnB;YACD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;gBAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;gBACnD,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAErE,GAAG,CAAC,WAAW,CACb,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAC1D,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACnB;YACD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;gBAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;gBACnD,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAErE,GAAG,CAAC,WAAW,CACb,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAC1D,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACnB;YAED,OAAO,OAAO,CAAC;SAChB;;;;;QAMD,IAAI,aAAa;YACf,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACrD,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAE3D,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC/C,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC3D,QAAQ,CAAC,WAAW,CAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAC7D,CAAC;YAEF,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC/C,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC7C,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;YAE/D,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC3C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAE3E,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YAChD,OAAO,cAAc,CAAC;SACvB;;;;;;;QAQD,QAAQ,CAAC,SAAiB;YACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;gBAC3D,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1C,GAAG,CAAC,SAAS,GAAG,oBAAoB,SAAS,UAAU,CAAC;gBACxD,OAAO,GAAG,CAAC;aACZ;YACD,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACzC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YACvE,OAAO,IAAI,CAAC;SACb;;;;;;QAiCD,QAAQ;YACN,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YACnC,IAAI,UAAU;gBAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,IAAI,UAAU,EAAE;gBACd,IAAI,CAAC,IAAI,EAAE,CAAC;aACb;SACF;;;IC7nBH;;;UAGqB,UAAU;QAG7B,YAAY,OAAsB;YAChC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SACzB;;;;;;;QAQD,OAAO,CAAC,UAAoB,EAAE,WAAkB;;YAC9C,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;gBAC5D,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EACnC;gBACA,OAAO,KAAK,CAAC;aACd;YACD,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;gBAC3D,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EACnC;gBACA,OAAO,KAAK,CAAC;aACd;YACD,IACE,CAAA,MAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,kBAAkB,0CAAE,MAAM,IAAG,CAAC;gBAClE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAC5D,UAAU,CAAC,OAAO,CACnB,KAAK,CAAC,CAAC,EACR;gBACA,OAAO,KAAK,CAAC;aACd;YAED,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO;gBAC3C,UAAU,CAAC,QAAQ,CACjB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAC3C,WAAW,CACZ,EACD;gBACA,OAAO,KAAK,CAAC;aACd;YACD,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO;gBAC3C,UAAU,CAAC,OAAO,CAChB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAC3C,WAAW,CACZ,EACD;gBACA,OAAO,KAAK,CAAC;aACd;YAED,IACE,WAAW,KAAKF,YAAI,CAAC,KAAK;gBAC1B,WAAW,KAAKA,YAAI,CAAC,OAAO;gBAC5B,WAAW,KAAKA,YAAI,CAAC,OAAO,EAC5B;gBACA,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;oBAC5D,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,EACnC;oBACA,OAAO,KAAK,CAAC;iBACd;gBACD,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;oBAC3D,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EACnC;oBACA,OAAO,KAAK,CAAC;iBACd;gBACD,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,EACpE;oBACA,KACE,IAAI,CAAC,GAAG,CAAC,EACT,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,qBAAqB,CAAC,MAAM,EACpE,CAAC,EAAE,EACH;wBACA,IACE,UAAU,CAAC,SAAS,CAClB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAAI,EACjE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,EAAE,CAChE;4BAED,OAAO,KAAK,CAAC;qBAChB;iBACF;aACF;YAED,OAAO,IAAI,CAAC;SACb;;;;;;;QAQO,kBAAkB,CAAC,QAAkB;YAC3C,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa;gBAClD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC;gBAE9D,OAAO,KAAK,CAAC;YACf,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACxE,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa;iBACrD,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC,CAAC;iBACtD,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,aAAa,CAAC,CAAC;SACrC;;;;;;;QAQO,iBAAiB,CAAC,QAAkB;YAC1C,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY;gBACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;gBAE7D,OAAO,IAAI,CAAC;YACd,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACxE,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY;iBACpD,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAACA,YAAI,CAAC,IAAI,CAAC,CAAC,CAAC;iBACtD,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,aAAa,CAAC,CAAC;SACrC;;;;;;;QAQO,kBAAkB,CAAC,QAAkB;YAC3C,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa;gBAClD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC;gBAE9D,OAAO,KAAK,CAAC;YACf,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC;YACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAC3D,CAAC,CAAC,KAAK,CAAC,KAAK,aAAa,CAC3B,CAAC;SACH;;;;;;;QAQO,iBAAiB,CAAC,QAAkB;YAC1C,IACE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY;gBACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;gBAE7D,OAAO,IAAI,CAAC;YACd,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC;YACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAC1D,CAAC,CAAC,KAAK,CAAC,KAAK,aAAa,CAC3B,CAAC;SACH;;;IC3JH;;;IAGA,MAAM,aAAa;QAkBjB,YAAY,OAAoB,EAAE,UAAmB,EAAa;YAdlE,qBAAgB,GAAG,CAAC,CAAC;YACrB,iBAAY,GAA8C,EAAE,CAAC;YAI7D,uBAAkB,GAAG,CAAC,CAAC;YAIf,gBAAW,GAAG,KAAK,CAAC;YACpB,8BAAyB,GAAG,CAAC,CAAC;YAwBtC,cAAS,GAAG,IAAI,QAAQ,EAAE,CAAC;;;;;;YA0YnB,sBAAiB,GAAG;gBAC1B,MAAM,WAAW,GAAG;oBAClB,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU;wBAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;iBACnE,CAAC;gBAEF,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBAChC,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;oBAC/B,IAAI;wBACF,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;wBACrE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE;gCAClC,IAAI,CAAC,KAAK,CAAC,GAAG,CACZ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EACnD,CAAC,EACD,OAAO,CACR,CAAC;6BACH;iCAAM;gCACL,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;6BAC3C;yBACF;wBACD,WAAW,EAAE,CAAC;qBACf;oBAAC,WAAM;wBACN,OAAO,CAAC,IAAI,CACV,mFAAmF,CACpF,CAAC;qBACH;iBACF;qBAAM;oBACL,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE;wBAClC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;qBACzE;yBAAM;wBACL,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;qBACnC;oBACD,WAAW,EAAE,CAAC;iBACf;aACF,CAAC;;;;;;YAOM,sBAAiB,GAAG;gBAC1B,IAAI,CAAC,MAAM,EAAE,CAAC;aACf,CAAC;YAxcA,IAAI,CAAC,OAAO,EAAE;gBACZ,SAAS,CAAC,aAAa,CAAC,kBAAkB,CAAC;aAC5C;YACD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;YACvE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YAEnB,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,CAAC,WAAW,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;YAEjC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAEzB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;gBAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACxD;QAID,IAAI,QAAQ;YACV,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;;;;;;;;QASD,aAAa,CAAC,OAAO,EAAE,KAAK,GAAG,KAAK;YAClC,IAAI,KAAK;gBAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;;gBACvE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;SAC1B;;;;;;QAOD,MAAM;YACJ,IAAI,IAAI,CAAC,WAAW;gBAAE,OAAO;YAC7B,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;SACxB;;;;;;QAOD,IAAI;YACF,IAAI,IAAI,CAAC,WAAW;gBAAE,OAAO;YAC7B,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACtB;;;;;;QAOD,IAAI;YACF,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACtB;;;;;;QAOD,OAAO;;YACL,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;;;YAGxB,MAAA,IAAI,CAAC,MAAM,0CAAE,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAClD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACtB;;;;;;QAOD,MAAM;;YACJ,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,MAAA,IAAI,CAAC,MAAM,0CAAE,eAAe,CAAC,UAAU,CAAC,CAAC;SAC1C;;;;;;QAOD,KAAK;YACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;SACpB;;;;;;;;QASD,SAAS,CACP,UAA6B,EAC7B,SAA0D;YAE1D,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;gBAClC,UAAU,GAAG,CAAC,UAAU,CAAC,CAAC;aAC3B;YACD,IAAI,aAAa,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;gBAC7B,aAAa,GAAG,CAAC,SAAS,CAAC,CAAC;aAC7B;iBAAM;gBACL,aAAa,GAAG,SAAS,CAAC;aAC3B;YAED,IAAI,UAAU,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM,EAAE;gBAC9C,SAAS,CAAC,aAAa,CAAC,iBAAiB,CAAC;aAC3C;YAED,MAAM,WAAW,GAAG,EAAE,CAAC;YAEvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC1C,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE;oBAChD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;iBACnC;gBAED,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEpD,WAAW,CAAC,IAAI,CAAC;oBACf,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CACjC,IAAI,EACJ,SAAS,EACT,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CACxC;iBACF,CAAC,CAAC;gBAEH,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC3B,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;iBACvB;aACF;YAED,OAAO,WAAW,CAAC;SACpB;;;;;QAMD,OAAO;;YACL,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;;YAErB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACzB,MAAA,IAAI,CAAC,MAAM,0CAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACnE,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;gBAClC,MAAA,IAAI,CAAC,MAAM,0CAAE,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;aACnE;YACD,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAClE,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;SACxB;;;;;;;QAQD,aAAa,CAAC,KAAgB;;YAE5B,IAAK,KAAqB,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;gBAC1D,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,KAAoB,CAAC;;;;gBAIxD,IAAI,CAAC,yBAAyB,EAAE,CAAC;gBACjC,IACE,CAAC,IAAI,IAAI,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;qBACvC,CAAC,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC;oBAC/B,IAAI,CAAC,yBAAyB,GAAG,CAAC,EAClC;oBACA,IAAI,CAAC,yBAAyB,GAAG,CAAC,CAAC;oBACnC,OAAO;iBACR;gBACD,IAAI,CAAC,uBAAuB,CAAC,KAAoB,CAAC,CAAC;aACpD;YAED,IAAI,CAAC,QAAQ,CAAC,aAAa,CACzB,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,KAAY,EAAE,CAAC,CACtD,CAAC;YAEF,IAAK,MAAc,CAAC,MAAM,EAAE;gBAC1B,MAAM,CAAC,GAAI,MAAc,CAAC,MAAM,CAAC;gBACjC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aACjC;YAED,MAAM,OAAO,GAAG;;gBAEd,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE;oBACjD,OAAO;iBACR;;gBAGD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ;oBAC7C,QAAQ,CAAC,KAAK,CAAC,CAAC;iBACjB,CAAC,CAAC;aACJ,CAAC;YAEF,OAAO,EAAE,CAAC;YAEV,IAAI,CAAC,yBAAyB,GAAG,CAAC,CAAC;SACpC;;;;;;QAOD,WAAW,CAAC,IAAU;YACpB,IAAI,CAAC,aAAa,CAAC;gBACjB,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM;gBAC7B,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK;aACZ,CAAC,CAAC;SACvB;QAEO,YAAY,CAAC,SAAS,EAAE,KAAK;YACnC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SAC/C;;;;;;;;QASO,kBAAkB,CACxB,MAAe,EACf,OAAgB,EAChB,cAAc,GAAG,KAAK;;YAEtB,MAAM,GAAG,eAAe,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACxD,IAAI,cAAc;gBAChB,MAAM,GAAG,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAEjE,eAAe,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAE3C,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAExE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;gBAC3C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;aAClC;;;;;YAMD,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE;gBAClC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;aAC7B;YACD,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE;gBACnC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;aAC7B;YACD,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE;gBAClC,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;aAC7B;YAED,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAC9B,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,gBAAgB,CACtB,CAAC;;YAGF,IACE,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,CAAC,QAAQ,EACvE;gBACA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAC9B,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EACpE,IAAI,CAAC,kBAAkB,CACxB,CAAC;aACH;;YAGD,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE;gBAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;gBAC7C,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,IAAc;oBAC3C,OAAO,IAAI,CAAC,MAAM,CAAC;wBACjB,IAAI,EAAE,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,IAAI,GAAG,SAAS,GAAG,SAAS;wBACpE,KAAK,EACH,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,KAAK,GAAG,SAAS,GAAG,SAAS;wBACjE,GAAG,EAAE,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,IAAI,GAAG,SAAS,GAAG,SAAS;wBACnE,IAAI,EACF,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK;8BAChC,UAAU,CAAC,iBAAiB;kCAC1B,SAAS;kCACT,SAAS;8BACX,SAAS;wBACf,MAAM,EACJ,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,OAAO,GAAG,SAAS,GAAG,SAAS;wBAChE,MAAM,EACJ,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,OAAO,GAAG,SAAS,GAAG,SAAS;wBAChE,MAAM,EAAE,CAAC,UAAU,CAAC,iBAAiB;qBACtC,CAAC,CAAC;iBACJ,CAAC;aACH;YAED,IAAI,MAAA,IAAI,CAAC,QAAQ,0CAAE,SAAS,EAAE;gBAC5B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aAC9B;YAED,OAAO,MAAM,CAAC;SACf;;;;;;QAOO,gBAAgB;YAEtB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,OAAO,EAAE;gBACpC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAA4B,CAAC;aACjD;iBAAM;gBACL,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC;gBAChD,IAAI,KAAK,IAAI,SAAS,IAAI,KAAK,IAAI,SAAS,EAAE;oBAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;iBACpD;qBAAM;oBACL,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;iBAClD;aACF;YAED,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEzB,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC/D,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;gBAClC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;aAC/D;YAED,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;gBACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;aAC1B;SACF;;;;;QAMO,iBAAiB;YACvB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;gBAAE,OAAO;YACzC,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC;YACjD,IAAI,KAAK,IAAI,SAAS,EAAE;gBACtB,KAAK,GAAG,mCAAmC,CAAC;aAC7C;YACD,IAAI,CAAC,OAAO;gBACV,KAAK,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC1E,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;SAChE;;;;;;QAOO,uBAAuB,CAAC,CAAc;;YAC5C;;YAEE,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB;gBACrC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;gBAC5B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;;gBAEhC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ;;;gBAEvB,MAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,0CAChB,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAC7C,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;gBAElD,OAAO;;;;YAKT,IACE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU;iBACtC,CAAC,CAAC,OAAO,KAAI,MAAA,CAAC,CAAC,IAAI,0CAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA,CAAC,EACxC;gBACA,OAAO;aACR;YAED,YAAY,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAC7C,IAAI,CAAC,yBAAyB,GAAG,UAAU,CAAC;gBAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;oBACxB,IAAI,CAAC,OAAO,CAAC,EAAE,CACb;wBACE,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAC/C,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,MAAM,CAC/B;qBACF,EACD,WAAW,CAAC,YAAY,CACzB,CAAC;iBACH;aACF,EAAE,IAAI,CAAC,QAAQ,CAAC,qCAAqC,CAAC,CAAC;SACzD;;;;;;;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"tempus-dominus.js","sources":["../../src/js/datetime.ts","../../src/js/errors.ts","../../src/js/namespace.ts","../../src/js/conts.ts","../../src/js/display/collapse.ts","../../src/js/actions.ts","../../src/js/display/calendar/date-display.ts","../../src/js/display/calendar/month-display.ts","../../src/js/options.ts","../../src/js/dates.ts","../../src/js/display/calendar/year-display.ts","../../src/js/display/calendar/decade-display.ts","../../src/js/display/time/time-display.ts","../../src/js/display/time/hour-display.ts","../../src/js/display/time/minute-display.ts","../../src/js/display/time/second-display.ts","../../src/js/display/index.ts","../../src/js/validation.ts","../../src/js/tempus-dominus.ts"],"sourcesContent":["export enum Unit {\r\n seconds = 'seconds',\r\n minutes = 'minutes',\r\n hours = 'hours',\r\n date = 'date',\r\n month = 'month',\r\n year = 'year',\r\n}\r\n\r\nexport interface DateTimeFormatOptions extends Intl.DateTimeFormatOptions {\r\n timeStyle?: 'short' | 'medium' | 'long';\r\n dateStyle?: 'short' | 'medium' | 'long' | 'full';\r\n}\r\n\r\n/**\r\n * For the most part this object behaves exactly the same way\r\n * as the native Date object with a little extra spice.\r\n */\r\nexport class DateTime extends Date {\r\n /**\r\n * Used with Intl.DateTimeFormat\r\n */\r\n locale = 'default';\r\n\r\n /**\r\n * Chainable way to set the {@link locale}\r\n * @param value\r\n */\r\n setLocale(value: string): this {\r\n this.locale = value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Converts a plain JS date object to a DateTime object.\r\n * Doing this allows access to format, etc.\r\n * @param date\r\n */\r\n static convert(date: Date): DateTime {\r\n if (!date) throw `A date is required`;\r\n return new DateTime(\r\n date.getFullYear(),\r\n date.getMonth(),\r\n date.getDate(),\r\n date.getHours(),\r\n date.getMinutes(),\r\n date.getSeconds(),\r\n date.getMilliseconds()\r\n );\r\n }\r\n\r\n /**\r\n * Native date manipulations are not pure functions. This function creates a duplicate of the DateTime object.\r\n */\r\n get clone() {\r\n return new DateTime(\r\n this.year,\r\n this.month,\r\n this.date,\r\n this.hours,\r\n this.minutes,\r\n this.seconds,\r\n this.getMilliseconds()\r\n ).setLocale(this.locale);\r\n }\r\n\r\n /**\r\n * Sets the current date to the start of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).startOf('month')\r\n * would return April 1, 2021, 12:00:00.000 AM (midnight)\r\n * @param unit\r\n */\r\n startOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(0);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(0, 0);\r\n break;\r\n case 'hours':\r\n this.setMinutes(0, 0, 0);\r\n break;\r\n case 'date':\r\n this.setHours(0, 0, 0, 0);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(0 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.startOf(Unit.date);\r\n this.setDate(1);\r\n break;\r\n case 'year':\r\n this.startOf(Unit.date);\r\n this.setMonth(0, 1);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the current date to the end of the {@link unit} provided\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).endOf('month')\r\n * would return April 30, 2021, 11:59:59.999 PM\r\n * @param unit\r\n */\r\n endOf(unit: Unit | 'weekDay'): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n switch (unit) {\r\n case 'seconds':\r\n this.setMilliseconds(999);\r\n break;\r\n case 'minutes':\r\n this.setSeconds(59, 999);\r\n break;\r\n case 'hours':\r\n this.setMinutes(59, 59, 999);\r\n break;\r\n case 'date':\r\n this.setHours(23, 59, 59, 999);\r\n break;\r\n case 'weekDay':\r\n this.startOf(Unit.date);\r\n this.manipulate(6 - this.weekDay, Unit.date);\r\n break;\r\n case 'month':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.month);\r\n this.setDate(0);\r\n break;\r\n case 'year':\r\n this.endOf(Unit.date);\r\n this.manipulate(1, Unit.year);\r\n this.setDate(0);\r\n break;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Change a {@link unit} value. Value can be positive or negative\r\n * Example: Consider a date of \"April 30, 2021, 11:45:32.984 AM\" => new DateTime(2021, 3, 30, 11, 45, 32, 984).manipulate(1, 'month')\r\n * would return May 30, 2021, 11:45:32.984 AM\r\n * @param value A positive or negative number\r\n * @param unit\r\n */\r\n manipulate(value: number, unit: Unit): this {\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n this[unit] += value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns a string format.\r\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat\r\n * for valid templates and locale objects\r\n * @param template An object. Uses browser defaults otherwise.\r\n * @param locale Can be a string or an array of strings. Uses browser defaults otherwise.\r\n */\r\n format(template: DateTimeFormatOptions, locale = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, template).format(this);\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is before this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isBefore(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() < compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() < compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is after this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isAfter(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() > compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n return (\r\n this.clone.startOf(unit).valueOf() > compare.clone.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Return true if {@link compare} is same this date\r\n * @param compare The Date/DateTime to compare\r\n * @param unit If provided, uses {@link startOf} for\r\n * comparision.\r\n */\r\n isSame(compare: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this.valueOf() === compare.valueOf();\r\n if (this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n compare = DateTime.convert(compare);\r\n return (\r\n this.clone.startOf(unit).valueOf() === compare.startOf(unit).valueOf()\r\n );\r\n }\r\n\r\n /**\r\n * Check if this is between two other DateTimes, optionally looking at unit scale. The match is exclusive.\r\n * @param left\r\n * @param right\r\n * @param unit.\r\n * @param inclusivity. A [ indicates inclusion of a value. A ( indicates exclusion.\r\n * If the inclusivity parameter is used, both indicators must be passed.\r\n */\r\n isBetween(\r\n left: DateTime,\r\n right: DateTime,\r\n unit?: Unit,\r\n inclusivity: '()' | '[]' | '(]' | '[)' = '()'\r\n ): boolean {\r\n if (unit && this[unit] === undefined) throw `Unit '${unit}' is not valid`;\r\n const leftInclusivity = inclusivity[0] === '(';\r\n const rightInclusivity = inclusivity[1] === ')';\r\n\r\n return (\r\n ((leftInclusivity\r\n ? this.isAfter(left, unit)\r\n : !this.isBefore(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isBefore(right, unit)\r\n : !this.isAfter(right, unit))) ||\r\n ((leftInclusivity\r\n ? this.isBefore(left, unit)\r\n : !this.isAfter(left, unit)) &&\r\n (rightInclusivity\r\n ? this.isAfter(right, unit)\r\n : !this.isBefore(right, unit)))\r\n );\r\n }\r\n\r\n /**\r\n * Returns flattened object of the date. Does not include literals\r\n * @param locale\r\n * @param template\r\n */\r\n parts(\r\n locale = this.locale,\r\n template: any = { dateStyle: 'full', timeStyle: 'long' }\r\n ) {\r\n const parts = {};\r\n new Intl.DateTimeFormat(locale, template)\r\n .formatToParts(this)\r\n .filter((x) => x.type !== 'literal')\r\n .forEach((x) => (parts[x.type] = x.value));\r\n return parts;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getSeconds()\r\n */\r\n get seconds(): number {\r\n return this.getSeconds();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setSeconds()\r\n */\r\n set seconds(value: number) {\r\n this.setSeconds(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get secondsFormatted(): string {\r\n return this.format({ second: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMinutes()\r\n */\r\n get minutes(): number {\r\n return this.getMinutes();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMinutes()\r\n */\r\n set minutes(value: number) {\r\n this.setMinutes(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get minutesFormatted(): string {\r\n return this.format({ minute: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getHours()\r\n */\r\n get hours(): number {\r\n return this.getHours();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setHours()\r\n */\r\n set hours(value: number) {\r\n this.setHours(value);\r\n }\r\n\r\n /**\r\n * Returns two digit hours\r\n */\r\n get hoursFormatted(): string {\r\n return this.format({ hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Returns two digit hours but in twelve hour mode e.g. 13 -> 1\r\n */\r\n get twelveHoursFormatted(): string {\r\n return this.format({ hour12: true, hour: \"2-digit\" });\r\n }\r\n\r\n /**\r\n * Get the meridiem of the date. E.g. AM or PM.\r\n * If the {@link locale} provides a \"dayPeriod\" then this will be returned,\r\n * otherwise it will return AM or PM.\r\n * @param locale\r\n */\r\n meridiem(locale: string = this.locale): string {\r\n return new Intl.DateTimeFormat(locale, {\r\n hour: 'numeric',\r\n hour12: true,\r\n } as any)\r\n .formatToParts(this)\r\n .find((p) => p.type === 'dayPeriod')?.value;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDate()\r\n */\r\n get date(): number {\r\n return this.getDate();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setDate()\r\n */\r\n set date(value: number) {\r\n this.setDate(value);\r\n }\r\n\r\n /**\r\n * Return two digit date\r\n */\r\n get dateFormatted(): string {\r\n return this.date < 10 ? `0${this.date}` : `${this.date}`;\r\n }\r\n\r\n // https://github.com/you-dont-need/You-Dont-Need-Momentjs#week-of-year\r\n /**\r\n * Gets the week of the year\r\n */\r\n get week(): number {\r\n const startOfYear = new Date(this.year, 0, 1);\r\n startOfYear.setDate(\r\n startOfYear.getDate() + (1 - (startOfYear.getDay() % 7))\r\n );\r\n return Math.round((this.valueOf() - startOfYear.valueOf()) / 604800000) + 1;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getDay()\r\n */\r\n get weekDay(): number {\r\n return this.getDay();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getMonth()\r\n */\r\n get month(): number {\r\n return this.getMonth();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setMonth()\r\n */\r\n set month(value: number) {\r\n this.setMonth(value);\r\n }\r\n\r\n /**\r\n * Return two digit, human expected month. E.g. January = 1, December = 12\r\n */\r\n get monthFormatted(): string {\r\n return this.month + 1 < 10 ? `0${this.month}` : `${this.month}`;\r\n }\r\n\r\n /**\r\n * Shortcut to Date.getFullYear()\r\n */\r\n get year(): number {\r\n return this.getFullYear();\r\n }\r\n\r\n /**\r\n * Shortcut to Date.setFullYear()\r\n */\r\n set year(value: number) {\r\n this.setFullYear(value);\r\n }\r\n}\r\n","import Namespace from './namespace';\n\nexport class TdError extends Error {\n code: number;\n}\n\nexport class ErrorMessages {\n private base = 'TD:';\n\n //#region out to console\n\n /**\n * Throws an error indicating that a key in the options object is invalid.\n * @param optionName\n */\n unexpectedOption(optionName: string) {\n const error = new TdError(\n `${this.base} Unexpected option: ${optionName} does not match a known option.`\n );\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error indicating that one more keys in the options object is invalid.\n * @param optionName\n */\n unexpectedOptions(optionName: string[]) {\n const error = new TdError(`${this.base}: ${optionName.join(', ')}`);\n error.code = 1;\n throw error;\n }\n\n /**\n * Throws an error when an option is provide an unsupported value.\n * For example a value of 'cheese' for toolbarPlacement which only supports\n * 'top', 'bottom', 'default'.\n * @param optionName\n * @param badValue\n * @param validOptions\n */\n unexpectedOptionValue(\n optionName: string,\n badValue: string,\n validOptions: string[]\n ) {\n const error = new TdError(\n `${\n this.base\n } Unexpected option value: ${optionName} does not accept a value of \"${badValue}\". Valid values are: ${validOptions.join(\n ', '\n )}`\n );\n error.code = 2;\n throw error;\n }\n\n /**\n * Throws an error when an option value is the wrong type.\n * For example a string value was provided to multipleDates which only\n * supports true or false.\n * @param optionName\n * @param badType\n * @param expectedType\n */\n typeMismatch(optionName: string, badType: string, expectedType: string) {\n const error = new TdError(\n `${this.base} Mismatch types: ${optionName} has a type of ${badType} instead of the required ${expectedType}`\n );\n error.code = 3;\n throw error;\n }\n\n /**\n * Throws an error when an option value is outside of the expected range.\n * For example restrictions.daysOfWeekDisabled excepts a value between 0 and 6.\n * @param optionName\n * @param lower\n * @param upper\n */\n numbersOutOfRage(optionName: string, lower: number, upper: number) {\n const error = new TdError(\n `${this.base} ${optionName} expected an array of number between ${lower} and ${upper}.`\n );\n error.code = 4;\n throw error;\n }\n\n /**\n * Throws an error when a value for a date options couldn't be parsed. Either\n * the option was an invalide string or an invalid Date object.\n * @param optionName\n * @param date\n * @param soft If true, logs a warning instead of an error.\n */\n failedToParseDate(optionName: string, date: any, soft = false) {\n const error = new TdError(\n `${this.base} Could not correctly parse \"${date}\" to a date for ${optionName}.`\n );\n error.code = 5;\n if (!soft) throw error;\n console.warn(error);\n }\n\n /**\n * Throws when an element to attach to was not provided in the constructor.\n */\n mustProvideElement() {\n const error = new TdError(`${this.base} No element was provided.`);\n error.code = 6;\n throw error;\n }\n\n /**\n * Throws if providing an array for the events to subscribe method doesn't have\n * the same number of callbacks. E.g., subscribe([1,2], [1])\n */\n subscribeMismatch() {\n const error = new TdError(\n `${this.base} The subscribed events does not match the number of callbacks`\n );\n error.code = 7;\n throw error;\n }\n\n /**\n * Throws if the configuration has conflicting rules e.g. minDate is after maxDate\n */\n conflictingConfiguration(message?: string) {\n const error = new TdError(\n `${this.base} A configuration value conflicts with another rule. ${message}`\n );\n error.code = 8;\n throw error;\n }\n\n /**\n * Logs a warning if a date option value is provided as a string, instead of\n * a date/datetime object.\n */\n dateString() {\n console.warn(\n `${this.base} Using a string for date options is not recommended unless you specify an ISO string.`\n );\n }\n\n //#endregion\n\n //#region used with notify.error\n\n /**\n * Used with an Error Event type if the user selects a date that\n * fails restriction validation.\n */\n failedToSetInvalidDate = 'Failed to set invalid date';\n\n /**\n * Used with an Error Event type when a user changes the value of the\n * input field directly, and does not provide a valid date.\n */\n failedToParseInput = 'Failed parse input field';\n\n //#endregion\n}\n","import { ErrorMessages } from './errors';\n// this is not the way I want this to stay but nested classes seemed to blown up once its compiled.\nconst NAME = 'tempus-dominus',\n version = '6.0.0-alpha1',\n dataKey = 'td';\n\n/**\n * Events\n */\nclass Events {\n key = `.${dataKey}`;\n\n /**\n * Change event. Fired when the user selects a date.\n * See also EventTypes.ChangeEvent\n */\n change = `change${this.key}`;\n\n /**\n * Emit when the view changes for example from month view to the year view.\n * See also EventTypes.ViewUpdateEvent\n */\n update = `update${this.key}`;\n\n /**\n * Emits when a selected date or value from the input field fails to meet the provided validation rules.\n * See also EventTypes.FailEvent\n */\n error = `error${this.key}`;\n\n /**\n * Show event\n * @event Events#show\n */\n show = `show${this.key}`;\n\n /**\n * Hide event\n * @event Events#hide\n */\n hide = `hide${this.key}`;\n\n // blur and focus are used in the jQuery provider but are otherwise unused.\n // keyup/down will be used later for keybinding options\n\n blur = `blur${this.key}`;\n focus = `focus${this.key}`;\n keyup = `keyup${this.key}`;\n keydown = `keydown${this.key}`;\n}\n\nclass Css {\n /**\n * The outer element for the widget.\n */\n widget = `${NAME}-widget`;\n\n /**\n * Hold the previous, next and switcher divs\n */\n calendarHeader = 'calendar-header';\n\n /**\n * The element for the action to change the calendar view. E.g. month -> year.\n */\n switch = 'picker-switch';\n\n /**\n * The elements for all of the toolbar options\n */\n toolbar = 'toolbar';\n\n /**\n * Disables the hover and rounding affect.\n */\n noHighlight = 'no-highlight';\n\n /**\n * Applied to the widget element when the side by side option is in use.\n */\n sideBySide = 'timepicker-sbs';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> July\n */\n previous = 'previous';\n\n /**\n * The element for the action to change the calendar view, e.g. August -> September\n */\n next = 'next';\n\n /**\n * Applied to any action that would violate any restriction options. ALso applied\n * to an input field if the disabled function is called.\n */\n disabled = 'disabled';\n\n /**\n * Applied to any date that is less than requested view,\n * e.g. the last day of the previous month.\n */\n old = 'old';\n\n /**\n * Applied to any date that is greater than of requested view,\n * e.g. the last day of the previous month.\n */\n new = 'new';\n\n /**\n * Applied to any date that is currently selected.\n */\n active = 'active';\n\n //#region date element\n\n /**\n * The outer most element for the calendar view.\n */\n dateContainer = 'date-container';\n\n /**\n * The outer most element for the decades view.\n */\n decadesContainer = `${this.dateContainer}-decades`;\n\n /**\n * Applied to elements within the decades container, e.g. 2020, 2030\n */\n decade = 'decade';\n\n /**\n * The outer most element for the years view.\n */\n yearsContainer = `${this.dateContainer}-years`;\n\n /**\n * Applied to elements within the years container, e.g. 2021, 2021\n */\n year = 'year';\n\n /**\n * The outer most element for the month view.\n */\n monthsContainer = `${this.dateContainer}-months`;\n\n /**\n * Applied to elements within the month container, e.g. January, February\n */\n month = 'month';\n\n /**\n * The outer most element for the calendar view.\n */\n daysContainer = `${this.dateContainer}-days`;\n\n /**\n * Applied to elements within the day container, e.g. 1, 2..31\n */\n day = 'day';\n\n /**\n * If display.calendarWeeks is enabled, a column displaying the week of year\n * is shown. This class is applied to each cell in that column.\n */\n calendarWeeks = 'cw';\n\n /**\n * Applied to the first row of the calendar view, e.g. Sunday, Monday\n */\n dayOfTheWeek = 'dow';\n\n /**\n * Applied to the current date on the calendar view.\n */\n today = 'today';\n\n /**\n * Applied to the locale's weekend dates on the calendar view, e.g. Sunday, Saturday\n */\n weekend = 'weekend';\n\n //#endregion\n\n //#region time element\n\n /**\n * The outer most element for all time related elements.\n */\n timeContainer = 'time-container';\n\n /**\n * Applied the separator columns between time elements, e.g. hour *:* minute *:* second\n */\n separator = 'separator';\n\n /**\n * The outer most element for the clock view.\n */\n clockContainer = `${this.timeContainer}-clock`;\n\n /**\n * The outer most element for the hours selection view.\n */\n hourContainer = `${this.timeContainer}-hour`;\n\n /**\n * The outer most element for the minutes selection view.\n */\n minuteContainer = `${this.timeContainer}-minute`;\n\n /**\n * The outer most element for the seconds selection view.\n */\n secondContainer = `${this.timeContainer}-second`;\n\n /**\n * Applied to each element in the hours selection view.\n */\n hour = 'hour';\n\n /**\n * Applied to each element in the minutes selection view.\n */\n minute = 'minute';\n\n /**\n * Applied to each element in the seconds selection view.\n */\n second = 'second';\n\n /**\n * Applied AM/PM toggle button.\n */\n toggleMeridiem = 'toggleMeridiem';\n\n //#endregion\n\n //#region collapse\n\n /**\n * Applied the element of the current view mode, e.g. calendar or clock.\n */\n show = 'show';\n\n /**\n * Applied to the currently showing view mode during a transition\n * between calendar and clock views\n */\n collapsing = 'td-collapsing';\n\n /**\n * Applied to the currently hidden view mode.\n */\n collapse = 'td-collapse';\n\n //#endregion\n\n /**\n * Applied to the widget when the option display.inline is enabled.\n */\n inline = 'inline';\n}\n\nexport default class Namespace {\n static NAME = NAME;\n // noinspection JSUnusedGlobalSymbols\n static version = version;\n static dataKey = dataKey;\n\n static events = new Events();\n\n static css = new Css();\n\n static errorMessages = new ErrorMessages();\n}\n","import { DateTime, Unit } from './datetime';\r\nimport Namespace from './namespace';\r\nimport Options from './options';\r\n\r\nconst DefaultOptions: Options = {\r\n restrictions: {\r\n minDate: undefined,\r\n maxDate: undefined,\r\n disabledDates: [],\r\n enabledDates: [],\r\n daysOfWeekDisabled: [],\r\n disabledTimeIntervals: [],\r\n disabledHours: [],\r\n enabledHours: [],\r\n },\r\n display: {\r\n icons: {\r\n type: 'icons',\r\n time: 'fas fa-clock',\r\n date: 'fas fa-calendar',\r\n up: 'fas fa-arrow-up',\r\n down: 'fas fa-arrow-down',\r\n previous: 'fas fa-chevron-left',\r\n next: 'fas fa-chevron-right',\r\n today: 'fas fa-calendar-check',\r\n clear: 'fas fa-trash',\r\n close: 'fas fa-times',\r\n },\r\n sideBySide: false,\r\n calendarWeeks: false,\r\n viewMode: 'calendar',\r\n toolbarPlacement: 'bottom',\r\n keepOpen: false,\r\n buttons: {\r\n today: false,\r\n clear: false,\r\n close: false,\r\n },\r\n components: {\r\n calendar: true,\r\n date: true,\r\n month: true,\r\n year: true,\r\n decades: true,\r\n clock: true,\r\n hours: true,\r\n minutes: true,\r\n seconds: false,\r\n useTwentyfourHour: false,\r\n },\r\n inline: false,\r\n },\r\n stepping: 1,\r\n useCurrent: true,\r\n defaultDate: undefined,\r\n localization: {\r\n today: 'Go to today',\r\n clear: 'Clear selection',\r\n close: 'Close the picker',\r\n selectMonth: 'Select Month',\r\n previousMonth: 'Previous Month',\r\n nextMonth: 'Next Month',\r\n selectYear: 'Select Year',\r\n previousYear: 'Previous Year',\r\n nextYear: 'Next Year',\r\n selectDecade: 'Select Decade',\r\n previousDecade: 'Previous Decade',\r\n nextDecade: 'Next Decade',\r\n previousCentury: 'Previous Century',\r\n nextCentury: 'Next Century',\r\n pickHour: 'Pick Hour',\r\n incrementHour: 'Increment Hour',\r\n decrementHour: 'Decrement Hour',\r\n pickMinute: 'Pick Minute',\r\n incrementMinute: 'Increment Minute',\r\n decrementMinute: 'Decrement Minute',\r\n pickSecond: 'Pick Second',\r\n incrementSecond: 'Increment Second',\r\n decrementSecond: 'Decrement Second',\r\n toggleMeridiem: 'Toggle Meridiem',\r\n selectTime: 'Select Time',\r\n selectDate: 'Select Date',\r\n dayViewHeaderFormat: 'long',\r\n locale: 'default',\r\n },\r\n keepInvalid: false,\r\n debug: false,\r\n allowInputToggle: false,\r\n viewDate: new DateTime(),\r\n multipleDates: false,\r\n multipleDatesSeparator: '; ',\r\n promptTimeOnDateChange: false,\r\n promptTimeOnDateChangeTransitionDelay: 200,\r\n hooks: {\r\n inputParse: undefined,\r\n inputFormat: undefined,\r\n },\r\n};\r\n\r\nconst DatePickerModes: {\r\n name: string;\r\n className: string;\r\n unit: Unit;\r\n step: number;\r\n}[] = [\r\n {\r\n name: 'calendar',\r\n className: Namespace.css.daysContainer,\r\n unit: Unit.month,\r\n step: 1,\r\n },\r\n {\r\n name: 'months',\r\n className: Namespace.css.monthsContainer,\r\n unit: Unit.year,\r\n step: 1,\r\n },\r\n {\r\n name: 'years',\r\n className: Namespace.css.yearsContainer,\r\n unit: Unit.year,\r\n step: 10,\r\n },\r\n {\r\n name: 'decades',\r\n className: Namespace.css.decadesContainer,\r\n unit: Unit.year,\r\n step: 100,\r\n },\r\n];\r\n\r\nexport { DefaultOptions, DatePickerModes, Namespace };\r\n","import Namespace from '../namespace';\n\n/**\n * Provides a collapse functionality to the view changes\n */\nexport default class Collapse {\n private timeOut;\n\n /**\n * Flips the show/hide state of `target`\n * @param target html element to affect.\n */\n toggle(target: HTMLElement, callback = undefined) {\n if (target.classList.contains(Namespace.css.show)) {\n this.hide(target, callback);\n } else {\n this.show(target, callback);\n }\n }\n\n /**\n * If `target` is not already showing, then show after the animation.\n * @param target\n */\n show(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse, Namespace.css.show);\n target.style.height = '';\n this.timeOut = null;\n if (callback) callback();\n };\n\n target.style.height = '0';\n target.classList.remove(Namespace.css.collapse);\n target.classList.add(Namespace.css.collapsing);\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n target.style.height = `${target.scrollHeight}px`;\n }\n\n /**\n * If `target` is not already hidden, then hide after the animation.\n * @param target HTML Element\n */\n hide(target: HTMLElement, callback = undefined) {\n if (\n target.classList.contains(Namespace.css.collapsing) ||\n !target.classList.contains(Namespace.css.show)\n )\n return;\n\n const complete = () => {\n target.classList.remove(Namespace.css.collapsing);\n target.classList.add(Namespace.css.collapse);\n this.timeOut = null;\n };\n\n target.style.height = `${target.getBoundingClientRect()['height']}px`;\n\n const reflow = (element) => element.offsetHeight;\n\n reflow(target);\n\n target.classList.remove(Namespace.css.collapse, Namespace.css.show);\n target.classList.add(Namespace.css.collapsing);\n target.style.height = '';\n\n this.timeOut = setTimeout(\n complete,\n this.getTransitionDurationFromElement(target)\n );\n }\n\n /**\n * Gets the transition duration from the `element` by getting css properties\n * `transition-duration` and `transition-delay`\n * @param element HTML Element\n */\n private getTransitionDurationFromElement = (element: HTMLElement) => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } =\n window.getComputedStyle(element);\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n\n return (\n (Number.parseFloat(transitionDuration) +\n Number.parseFloat(transitionDelay)) *\n 1000\n );\n };\n}\n","import { DatePickerModes } from './conts.js';\r\nimport { DateTime, Unit } from './datetime';\r\nimport { TempusDominus } from './tempus-dominus';\r\nimport Collapse from './display/collapse';\r\nimport Namespace from './namespace';\r\n\r\n/**\r\n *\r\n */\r\nexport default class Actions {\r\n private _context: TempusDominus;\r\n private collapse: Collapse;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this.collapse = new Collapse();\r\n }\r\n\r\n /**\r\n * Performs the selected `action`. See ActionTypes\r\n * @param e This is normally a click event\r\n * @param action If not provided, then look for a [data-action]\r\n */\r\n do(e: any, action?: ActionTypes) {\r\n const currentTarget = e.currentTarget;\r\n if (currentTarget.classList.contains(Namespace.css.disabled)) return false;\r\n action = action || currentTarget.dataset.action;\r\n const lastPicked = (\r\n this._context.dates.lastPicked || this._context._viewDate\r\n ).clone;\r\n\r\n /**\r\n * Common function to manipulate {@link lastPicked} by `unit`\r\n * @param unit\r\n * @param value Value to change by\r\n */\r\n const manipulateAndSet = (unit: Unit, value = 1) => {\r\n const newDate = lastPicked.manipulate(value, unit);\r\n if (this._context._validation.isValid(newDate, unit)) {\r\n this._context.dates._setValue(\r\n newDate,\r\n this._context.dates.lastPickedIndex\r\n );\r\n }\r\n };\r\n\r\n switch (action) {\r\n case ActionTypes.next:\r\n case ActionTypes.previous:\r\n const { unit, step } = DatePickerModes[this._context._currentViewMode];\r\n if (action === ActionTypes.next)\r\n this._context._viewDate.manipulate(step, unit);\r\n else this._context._viewDate.manipulate(step * -1, unit);\r\n this._context._viewUpdate(unit);\r\n\r\n this._context._display._showMode();\r\n break;\r\n case ActionTypes.pickerSwitch:\r\n this._context._display._showMode(1);\r\n this._context._viewUpdate(\r\n DatePickerModes[this._context._currentViewMode].unit\r\n );\r\n this._context._display._updateCalendarHeader();\r\n break;\r\n case ActionTypes.selectMonth:\r\n case ActionTypes.selectYear:\r\n case ActionTypes.selectDecade:\r\n const value = +currentTarget.dataset.value;\r\n switch (action) {\r\n case ActionTypes.selectMonth:\r\n this._context._viewDate.month = value;\r\n this._context._viewUpdate(Unit.month);\r\n break;\r\n case ActionTypes.selectYear:\r\n this._context._viewDate.year = value;\r\n this._context._viewUpdate(Unit.year);\r\n break;\r\n case ActionTypes.selectDecade:\r\n this._context._viewDate.year = value;\r\n this._context._viewUpdate(Unit.year);\r\n break;\r\n }\r\n\r\n if (\r\n this._context._currentViewMode === this._context._minViewModeNumber\r\n ) {\r\n this._context.dates._setValue(\r\n this._context._viewDate,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (!this._context._options.display.inline) {\r\n this._context._display.hide();\r\n }\r\n } else {\r\n this._context._display._showMode(-1);\r\n }\r\n break;\r\n case ActionTypes.selectDay:\r\n const day = this._context._viewDate.clone;\r\n if (currentTarget.classList.contains(Namespace.css.old)) {\r\n day.manipulate(-1, Unit.month);\r\n }\r\n if (currentTarget.classList.contains(Namespace.css.new)) {\r\n day.manipulate(1, Unit.month);\r\n }\r\n\r\n day.date = +currentTarget.dataset.day;\r\n let index = 0;\r\n if (this._context._options.multipleDates) {\r\n index = this._context.dates.pickedIndex(day, Unit.date);\r\n if (index !== -1) {\r\n this._context.dates._setValue(null, index); //deselect multi-date\r\n } else {\r\n this._context.dates._setValue(\r\n day,\r\n this._context.dates.lastPickedIndex + 1\r\n );\r\n }\r\n } else {\r\n this._context.dates._setValue(\r\n day,\r\n this._context.dates.lastPickedIndex\r\n );\r\n }\r\n\r\n if (\r\n !this._context._display._hasTime &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline &&\r\n !this._context._options.multipleDates\r\n ) {\r\n this._context._display.hide();\r\n }\r\n break;\r\n case ActionTypes.selectHour:\r\n let hour = +currentTarget.dataset.value;\r\n if (\r\n lastPicked.hours >= 12 &&\r\n !this._context._options.display.components.useTwentyfourHour\r\n )\r\n hour += 12;\r\n lastPicked.hours = hour;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.components.minutes &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.selectMinute:\r\n lastPicked.minutes = +currentTarget.dataset.value;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.components.seconds &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.selectSecond:\r\n lastPicked.seconds = +currentTarget.dataset.value;\r\n this._context.dates._setValue(\r\n lastPicked,\r\n this._context.dates.lastPickedIndex\r\n );\r\n if (\r\n this._context._options.display.components.useTwentyfourHour &&\r\n !this._context._options.display.keepOpen &&\r\n !this._context._options.display.inline\r\n ) {\r\n this._context._display.hide();\r\n } else {\r\n this.do(e, ActionTypes.showClock);\r\n }\r\n break;\r\n case ActionTypes.incrementHours:\r\n manipulateAndSet(Unit.hours);\r\n break;\r\n case ActionTypes.incrementMinutes:\r\n manipulateAndSet(Unit.minutes, this._context._options.stepping);\r\n break;\r\n case ActionTypes.incrementSeconds:\r\n manipulateAndSet(Unit.seconds);\r\n break;\r\n case ActionTypes.decrementHours:\r\n manipulateAndSet(Unit.hours, -1);\r\n break;\r\n case ActionTypes.decrementMinutes:\r\n manipulateAndSet(Unit.minutes, this._context._options.stepping * -1);\r\n break;\r\n case ActionTypes.decrementSeconds:\r\n manipulateAndSet(Unit.seconds, -1);\r\n break;\r\n case ActionTypes.toggleMeridiem:\r\n manipulateAndSet(\r\n Unit.hours,\r\n this._context.dates.lastPicked.hours >= 12 ? -12 : 12\r\n );\r\n break;\r\n case ActionTypes.togglePicker:\r\n this._context._display.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer}, .${Namespace.css.timeContainer}`\r\n )\r\n .forEach((htmlElement: HTMLElement) =>\r\n this.collapse.toggle(htmlElement)\r\n );\r\n if (\r\n currentTarget.getAttribute('title') ===\r\n this._context._options.localization.selectDate\r\n ) {\r\n currentTarget.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectTime\r\n );\r\n currentTarget.innerHTML = this._context._display._iconTag(\r\n this._context._options.display.icons.time\r\n ).outerHTML;\r\n\r\n this._context._display._updateCalendarHeader();\r\n } else {\r\n currentTarget.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDate\r\n );\r\n currentTarget.innerHTML = this._context._display._iconTag(\r\n this._context._options.display.icons.date\r\n ).outerHTML;\r\n this.do(e, ActionTypes.showClock);\r\n this._context._display._update('clock');\r\n }\r\n break;\r\n case ActionTypes.showClock:\r\n case ActionTypes.showHours:\r\n case ActionTypes.showMinutes:\r\n case ActionTypes.showSeconds:\r\n this._context._display.widget\r\n .querySelectorAll(`.${Namespace.css.timeContainer} > div`)\r\n .forEach(\r\n (htmlElement: HTMLElement) => (htmlElement.style.display = 'none')\r\n );\r\n\r\n let classToUse = '';\r\n switch (action) {\r\n case ActionTypes.showClock:\r\n classToUse = Namespace.css.clockContainer;\r\n this._context._display._update('clock');\r\n break;\r\n case ActionTypes.showHours:\r\n classToUse = Namespace.css.hourContainer;\r\n this._context._display._update(Unit.hours);\r\n break;\r\n case ActionTypes.showMinutes:\r\n classToUse = Namespace.css.minuteContainer;\r\n this._context._display._update(Unit.minutes);\r\n break;\r\n case ActionTypes.showSeconds:\r\n classToUse = Namespace.css.secondContainer;\r\n this._context._display._update(Unit.seconds);\r\n break;\r\n }\r\n\r\n ((\r\n this._context._display.widget.getElementsByClassName(classToUse)[0]\r\n )).style.display = 'grid';\r\n break;\r\n case ActionTypes.clear:\r\n this._context.dates._setValue(null);\r\n this._context._display._updateCalendarHeader();\r\n break;\r\n case ActionTypes.close:\r\n this._context._display.hide();\r\n break;\r\n case ActionTypes.today:\r\n const today = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n this._context._viewDate = today;\r\n if (this._context._validation.isValid(today, Unit.date))\r\n this._context.dates._setValue(\r\n today,\r\n this._context.dates.lastPickedIndex\r\n );\r\n break;\r\n }\r\n }\r\n}\r\n\r\nexport enum ActionTypes {\r\n next = 'next',\r\n previous = 'previous',\r\n pickerSwitch = 'pickerSwitch',\r\n selectMonth = 'selectMonth',\r\n selectYear = 'selectYear',\r\n selectDecade = 'selectDecade',\r\n selectDay = 'selectDay',\r\n selectHour = 'selectHour',\r\n selectMinute = 'selectMinute',\r\n selectSecond = 'selectSecond',\r\n incrementHours = 'incrementHours',\r\n incrementMinutes = 'incrementMinutes',\r\n incrementSeconds = 'incrementSeconds',\r\n decrementHours = 'decrementHours',\r\n decrementMinutes = 'decrementMinutes',\r\n decrementSeconds = 'decrementSeconds',\r\n toggleMeridiem = 'toggleMeridiem',\r\n togglePicker = 'togglePicker',\r\n showClock = 'showClock',\r\n showHours = 'showHours',\r\n showMinutes = 'showMinutes',\r\n showSeconds = 'showSeconds',\r\n clear = 'clear',\r\n close = 'close',\r\n today = 'today',\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `date`\r\n */\r\nexport default class DateDisplay {\r\n private _context: TempusDominus;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.daysContainer);\r\n\r\n container.append(...this._daysOfTheWeek());\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(Namespace.css.calendarWeeks, Namespace.css.noHighlight);\r\n container.appendChild(div);\r\n }\r\n\r\n for (let i = 0; i < 42; i++) {\r\n if (i !== 0 && i % 7 === 0) {\r\n if (this._context._options.display.calendarWeeks) {\r\n const div = document.createElement('div');\r\n div.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n container.appendChild(div);\r\n }\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDay);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update(): void {\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.daysContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.daysContainer,\r\n this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n })\r\n );\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(-1, Unit.month),\r\n Unit.month\r\n )\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n\r\n this._context._validation.isValid(\r\n this._context._viewDate.clone.manipulate(1, Unit.month),\r\n Unit.month\r\n )\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.month)\r\n .startOf('weekDay')\r\n .manipulate(12, Unit.hours);\r\n\r\n container\r\n .querySelectorAll(\r\n `[data-action=\"${ActionTypes.selectDay}\"], .${Namespace.css.calendarWeeks}`\r\n )\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (\r\n this._context._options.display.calendarWeeks &&\r\n containerClone.classList.contains(Namespace.css.calendarWeeks)\r\n ) {\r\n if (containerClone.innerText === '#') return;\r\n containerClone.innerText = `${innerDate.week}`;\r\n return;\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.day);\r\n\r\n if (innerDate.isBefore(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.old);\r\n }\r\n if (innerDate.isAfter(this._context._viewDate, Unit.month)) {\r\n classes.push(Namespace.css.new);\r\n }\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.date)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.date)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n if (innerDate.isSame(new DateTime(), Unit.date)) {\r\n classes.push(Namespace.css.today);\r\n }\r\n if (innerDate.weekDay === 0 || innerDate.weekDay === 6) {\r\n classes.push(Namespace.css.weekend);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${innerDate.year}-${innerDate.monthFormatted}-${innerDate.dateFormatted}`\r\n );\r\n containerClone.setAttribute(\r\n 'data-day',\r\n `${innerDate.date}`\r\n );\r\n containerClone.innerText = innerDate.format({ day: \"numeric\" });\r\n innerDate.manipulate(1, Unit.date);\r\n });\r\n }\r\n\r\n /***\r\n * Generates an html row that contains the days of the week.\r\n * @private\r\n */\r\n private _daysOfTheWeek(): HTMLElement[] {\r\n let innerDate = this._context._viewDate.clone\r\n .startOf('weekDay')\r\n .startOf(Unit.date);\r\n const row = [];\r\n document.createElement('div');\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.calendarWeeks,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = '#';\r\n row.push(htmlDivElement);\r\n }\r\n\r\n for (let i = 0; i < 7; i++) {\r\n const htmlDivElement = document.createElement('div');\r\n htmlDivElement.classList.add(\r\n Namespace.css.dayOfTheWeek,\r\n Namespace.css.noHighlight\r\n );\r\n htmlDivElement.innerText = innerDate.format({ weekday: 'short' });\r\n innerDate.manipulate(1, Unit.date);\r\n row.push(htmlDivElement);\r\n }\r\n\r\n return row;\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `month`\n */\nexport default class MonthDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.monthsContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMonth);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.monthsContainer\n )[0];\n const [previous, switcher, next] = container.parentElement\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\n .getElementsByTagName('div');\n\n switcher.setAttribute(\n Namespace.css.monthsContainer,\n this._context._viewDate.format({ year: 'numeric' })\n );\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.year),\n Unit.year\n )\n ? previous.classList.remove(Namespace.css.disabled)\n : previous.classList.add(Namespace.css.disabled);\n\n this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.year),\n Unit.year\n )\n ? next.classList.remove(Namespace.css.disabled)\n : next.classList.add(Namespace.css.disabled);\n\n let innerDate = this._context._viewDate.clone.startOf(Unit.year);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMonth}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.month);\n\n if (\n !this._context._unset &&\n this._context.dates.isPicked(innerDate, Unit.month)\n ) {\n classes.push(Namespace.css.active);\n }\n if (!this._context._validation.isValid(innerDate, Unit.month)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${index}`);\n containerClone.innerText = `${innerDate.format({ month: 'short' })}`;\n innerDate.manipulate(1, Unit.month);\n });\n }\n}\n","import { DateTime, DateTimeFormatOptions } from './datetime';\r\nimport Namespace from './namespace';\r\nimport { DefaultOptions } from './conts';\r\nimport { TempusDominus } from './tempus-dominus';\r\n\r\nexport default interface Options {\r\n restrictions: {\r\n minDate: DateTime;\r\n maxDate: DateTime;\r\n enabledDates: DateTime[];\r\n disabledDates: DateTime[];\r\n enabledHours: number[];\r\n disabledHours: number[];\r\n disabledTimeIntervals: { from: DateTime; to: DateTime }[];\r\n daysOfWeekDisabled: number[];\r\n };\r\n display: {\r\n toolbarPlacement: 'top' | 'bottom';\r\n components: {\r\n calendar: boolean;\r\n date: boolean;\r\n month: boolean;\r\n year: boolean;\r\n decades: boolean;\r\n clock: boolean;\r\n hours: boolean;\r\n minutes: boolean;\r\n seconds: boolean;\r\n useTwentyfourHour: boolean;\r\n };\r\n buttons: { today: boolean; close: boolean; clear: boolean };\r\n calendarWeeks: boolean;\r\n icons: {\r\n date: string;\r\n next: string;\r\n previous: string;\r\n today: string;\r\n clear: string;\r\n time: string;\r\n up: string;\r\n type: 'icons' | 'sprites';\r\n down: string;\r\n close: string;\r\n };\r\n viewMode: 'clock' | 'calendar' | 'months' | 'years' | 'decades';\r\n sideBySide: boolean;\r\n inline: boolean;\r\n keepOpen: boolean;\r\n };\r\n stepping: number;\r\n useCurrent: boolean;\r\n defaultDate: DateTime;\r\n localization: {\r\n nextMonth: string;\r\n pickHour: string;\r\n incrementSecond: string;\r\n nextDecade: string;\r\n selectDecade: string;\r\n dayViewHeaderFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';\r\n decrementHour: string;\r\n selectDate: string;\r\n incrementHour: string;\r\n previousCentury: string;\r\n decrementSecond: string;\r\n today: string;\r\n previousMonth: string;\r\n selectYear: string;\r\n pickSecond: string;\r\n nextCentury: string;\r\n close: string;\r\n incrementMinute: string;\r\n selectTime: string;\r\n clear: string;\r\n toggleMeridiem: string;\r\n selectMonth: string;\r\n decrementMinute: string;\r\n pickMinute: string;\r\n nextYear: string;\r\n previousYear: string;\r\n previousDecade: string;\r\n locale: string;\r\n };\r\n keepInvalid: boolean;\r\n debug: boolean;\r\n allowInputToggle: boolean;\r\n viewDate: DateTime;\r\n multipleDates: boolean;\r\n multipleDatesSeparator: string;\r\n promptTimeOnDateChange: boolean;\r\n promptTimeOnDateChangeTransitionDelay: number;\r\n hooks: {\r\n inputParse: (context: TempusDominus, value: any) => DateTime;\r\n inputFormat: (context: TempusDominus, date: DateTime) => string;\r\n };\r\n}\r\n\r\nexport class OptionConverter {\r\n static _mergeOptions(providedOptions: Options, mergeTo: Options): Options {\r\n const newOptions = {} as Options;\r\n let path = '';\r\n const ignoreProperties = ['inputParse', 'inputFormat'];\r\n\r\n const processKey = (key, value, providedType, defaultType) => {\r\n switch (key) {\r\n case 'defaultDate': {\r\n const dateTime = this._dateConversion(value, 'defaultDate');\r\n if (dateTime !== undefined) {\r\n return dateTime;\r\n }\r\n Namespace.errorMessages.typeMismatch(\r\n 'defaultDate',\r\n providedType,\r\n 'DateTime or Date'\r\n );\r\n }\r\n case 'viewDate': {\r\n const dateTime = this._dateConversion(value, 'viewDate');\r\n if (dateTime !== undefined) {\r\n return dateTime;\r\n }\r\n Namespace.errorMessages.typeMismatch(\r\n 'viewDate',\r\n providedType,\r\n 'DateTime or Date'\r\n );\r\n }\r\n case 'minDate': {\r\n if (value === undefined) {\r\n return value;\r\n }\r\n const dateTime = this._dateConversion(value, 'restrictions.minDate');\r\n if (dateTime !== undefined) {\r\n return dateTime;\r\n }\r\n Namespace.errorMessages.typeMismatch(\r\n 'restrictions.minDate',\r\n providedType,\r\n 'DateTime or Date'\r\n );\r\n }\r\n case 'maxDate': {\r\n if (value === undefined) {\r\n return value;\r\n }\r\n const dateTime = this._dateConversion(value, 'restrictions.maxDate');\r\n if (dateTime !== undefined) {\r\n return dateTime;\r\n }\r\n Namespace.errorMessages.typeMismatch(\r\n 'restrictions.maxDate',\r\n providedType,\r\n 'DateTime or Date'\r\n );\r\n }\r\n case 'disabledHours':\r\n if (value === undefined) {\r\n return [];\r\n }\r\n this._typeCheckNumberArray(\r\n 'restrictions.disabledHours',\r\n value,\r\n providedType\r\n );\r\n if (value.filter((x) => x < 0 || x > 24).length > 0)\r\n Namespace.errorMessages.numbersOutOfRage(\r\n 'restrictions.disabledHours',\r\n 0,\r\n 23\r\n );\r\n return value;\r\n case 'enabledHours':\r\n if (value === undefined) {\r\n return [];\r\n }\r\n this._typeCheckNumberArray(\r\n 'restrictions.enabledHours',\r\n value,\r\n providedType\r\n );\r\n if (value.filter((x) => x < 0 || x > 24).length > 0)\r\n Namespace.errorMessages.numbersOutOfRage(\r\n 'restrictions.enabledHours',\r\n 0,\r\n 23\r\n );\r\n return value;\r\n case 'daysOfWeekDisabled':\r\n if (value === undefined) {\r\n return [];\r\n }\r\n this._typeCheckNumberArray(\r\n 'restrictions.daysOfWeekDisabled',\r\n value,\r\n providedType\r\n );\r\n if (value.filter((x) => x < 0 || x > 6).length > 0)\r\n Namespace.errorMessages.numbersOutOfRage(\r\n 'restrictions.daysOfWeekDisabled',\r\n 0,\r\n 6\r\n );\r\n return value;\r\n case 'enabledDates':\r\n if (value === undefined) {\r\n return [];\r\n }\r\n this._typeCheckDateArray(\r\n 'restrictions.enabledDates',\r\n value,\r\n providedType\r\n );\r\n return value;\r\n case 'disabledDates':\r\n if (value === undefined) {\r\n return [];\r\n }\r\n this._typeCheckDateArray(\r\n 'restrictions.disabledDates',\r\n value,\r\n providedType\r\n );\r\n return value;\r\n case 'disabledTimeIntervals':\r\n if (value === undefined) {\r\n return [];\r\n }\r\n if (!Array.isArray(value)) {\r\n Namespace.errorMessages.typeMismatch(\r\n key,\r\n providedType,\r\n 'array of { from: DateTime|Date, to: DateTime|Date }'\r\n );\r\n }\r\n const valueObject = value as { from: any; to: any }[];\r\n for (let i = 0; i < valueObject.length; i++) {\r\n Object.keys(valueObject[i]).forEach((vk) => {\r\n const subOptionName = `${key}[${i}].${vk}`;\r\n let d = valueObject[i][vk];\r\n const dateTime = this._dateConversion(d, subOptionName);\r\n if (!dateTime) {\r\n Namespace.errorMessages.typeMismatch(\r\n subOptionName,\r\n typeof d,\r\n 'DateTime or Date'\r\n );\r\n }\r\n valueObject[i][vk] = dateTime;\r\n });\r\n }\r\n return valueObject;\r\n case 'toolbarPlacement':\r\n case 'type':\r\n case 'viewMode':\r\n case 'dayViewHeaderFormat':\r\n const optionValues = {\r\n toolbarPlacement: ['top', 'bottom', 'default'],\r\n type: ['icons', 'sprites'],\r\n viewMode: ['clock', 'calendar', 'months', 'years', 'decades'],\r\n dayViewHeaderFormat: [\r\n 'numeric',\r\n '2-digit',\r\n 'long',\r\n 'short',\r\n 'narrow',\r\n ],\r\n };\r\n const keyOptions = optionValues[key];\r\n if (!keyOptions.includes(value))\r\n Namespace.errorMessages.unexpectedOptionValue(\r\n path.substring(1),\r\n value,\r\n keyOptions\r\n );\r\n\r\n return value;\r\n case 'inputParse':\r\n case 'inputFormat':\r\n return value;\r\n default:\r\n switch (defaultType) {\r\n case 'boolean':\r\n return value === 'true' || value === true;\r\n case 'number':\r\n return +value;\r\n case 'string':\r\n return value.toString();\r\n case 'object':\r\n return {};\r\n case 'function':\r\n return value;\r\n default:\r\n Namespace.errorMessages.typeMismatch(\r\n path.substring(1),\r\n providedType,\r\n defaultType\r\n );\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * The spread operator caused sub keys to be missing after merging.\r\n * This is to fix that issue by using spread on the child objects first.\r\n * Also handles complex options like disabledDates\r\n * @param provided An option from new providedOptions\r\n * @param mergeOption Default option to compare types against\r\n * @param copyTo Destination object. This was add to prevent reference copies\r\n */\r\n const spread = (provided, mergeOption, copyTo) => {\r\n const unsupportedOptions = Object.keys(provided).filter(\r\n (x) => !Object.keys(mergeOption).includes(x)\r\n );\r\n if (unsupportedOptions.length > 0) {\r\n const flattenedOptions = OptionConverter._flattenDefaultOptions;\r\n\r\n const errors = unsupportedOptions.map((x) => {\r\n let error = `\"${path.substring(1)}.${x}\" in not a known option.`;\r\n let didYouMean = flattenedOptions.find((y) => y.includes(x));\r\n if (didYouMean) error += `Did you mean \"${didYouMean}\"?`;\r\n return error;\r\n });\r\n Namespace.errorMessages.unexpectedOptions(errors);\r\n }\r\n Object.keys(mergeOption).forEach((key) => {\r\n const defaultOptionValue = mergeOption[key];\r\n let providedType = typeof provided[key];\r\n let defaultType = typeof defaultOptionValue;\r\n let value = provided[key];\r\n if (!provided.hasOwnProperty(key)) {\r\n if (\r\n defaultType === 'undefined' ||\r\n (value?.length === 0 && Array.isArray(defaultOptionValue))\r\n ) {\r\n copyTo[key] = defaultOptionValue;\r\n return;\r\n }\r\n provided[key] = defaultOptionValue;\r\n value = provided[key];\r\n }\r\n path += `.${key}`;\r\n copyTo[key] = processKey(key, value, providedType, defaultType);\r\n\r\n if (\r\n typeof defaultOptionValue !== 'object' ||\r\n ignoreProperties.includes(key)\r\n ) {\r\n path = path.substring(0, path.lastIndexOf(`.${key}`));\r\n return;\r\n }\r\n if (!Array.isArray(provided[key])) {\r\n spread(provided[key], defaultOptionValue, copyTo[key]);\r\n path = path.substring(0, path.lastIndexOf(`.${key}`));\r\n }\r\n path = path.substring(0, path.lastIndexOf(`.${key}`));\r\n });\r\n };\r\n spread(providedOptions, mergeTo, newOptions);\r\n\r\n return newOptions;\r\n }\r\n\r\n static _dataToOptions(element, options: Options): Options {\r\n const eData = element.dataset;\r\n if (\r\n !eData ||\r\n Object.keys(eData).length === 0 ||\r\n eData.constructor !== DOMStringMap\r\n )\r\n return options;\r\n let dataOptions = {} as Options;\r\n\r\n // because dataset returns camelCase including the 'td' key the option\r\n // key won't align\r\n const objectToNormalized = (object) => {\r\n const lowered = {};\r\n Object.keys(object).forEach((x) => {\r\n lowered[x.toLowerCase()] = x;\r\n });\r\n\r\n return lowered;\r\n };\r\n\r\n const rabbitHole = (\r\n split: string[],\r\n index: number,\r\n optionSubgroup: {},\r\n value: any\r\n ) => {\r\n // first round = display { ... }\r\n const normalizedOptions = objectToNormalized(optionSubgroup);\r\n\r\n const keyOption = normalizedOptions[split[index].toLowerCase()];\r\n const internalObject = {};\r\n\r\n if (keyOption === undefined) return internalObject;\r\n\r\n // if this is another object, continue down the rabbit hole\r\n if (optionSubgroup[keyOption].constructor === Object) {\r\n index++;\r\n internalObject[keyOption] = rabbitHole(\r\n split,\r\n index,\r\n optionSubgroup[keyOption],\r\n value\r\n );\r\n } else {\r\n internalObject[keyOption] = value;\r\n }\r\n return internalObject;\r\n };\r\n const optionsLower = objectToNormalized(options);\r\n\r\n Object.keys(eData)\r\n .filter((x) => x.startsWith(Namespace.dataKey))\r\n .map((x) => x.substring(2))\r\n .forEach((key) => {\r\n let keyOption = optionsLower[key.toLowerCase()];\r\n\r\n // dataset merges dashes to camelCase... yay\r\n // i.e. key = display_components_seconds\r\n if (key.includes('_')) {\r\n // [display, components, seconds]\r\n const split = key.split('_');\r\n // display\r\n keyOption = optionsLower[split[0].toLowerCase()];\r\n if (\r\n keyOption !== undefined &&\r\n options[keyOption].constructor === Object\r\n ) {\r\n dataOptions[keyOption] = rabbitHole(\r\n split,\r\n 1,\r\n options[keyOption],\r\n eData[`td${key}`]\r\n );\r\n }\r\n }\r\n // or key = multipleDate\r\n else if (keyOption !== undefined) {\r\n dataOptions[keyOption] = eData[`td${key}`];\r\n }\r\n });\r\n\r\n return this._mergeOptions(dataOptions, options);\r\n }\r\n\r\n /**\r\n * Attempts to prove `d` is a DateTime or Date or can be converted into one.\r\n * @param d If a string will attempt creating a date from it.\r\n * @private\r\n */\r\n static _dateTypeCheck(d: any): DateTime | null {\r\n if (d.constructor.name === DateTime.name) return d;\r\n if (d.constructor.name === Date.name) {\r\n return DateTime.convert(d);\r\n }\r\n if (typeof d === typeof '') {\r\n const dateTime = new DateTime(d);\r\n if (JSON.stringify(dateTime) === 'null') {\r\n return null;\r\n }\r\n return dateTime;\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Type checks that `value` is an array of Date or DateTime\r\n * @param optionName Provides text to error messages e.g. disabledDates\r\n * @param value Option value\r\n * @param providedType Used to provide text to error messages\r\n */\r\n static _typeCheckDateArray(optionName: string, value, providedType: string) {\r\n if (!Array.isArray(value)) {\r\n Namespace.errorMessages.typeMismatch(\r\n optionName,\r\n providedType,\r\n 'array of DateTime or Date'\r\n );\r\n }\r\n for (let i = 0; i < value.length; i++) {\r\n let d = value[i];\r\n const dateTime = this._dateConversion(d, optionName);\r\n if (!dateTime) {\r\n Namespace.errorMessages.typeMismatch(\r\n optionName,\r\n typeof d,\r\n 'DateTime or Date'\r\n );\r\n }\r\n value[i] = dateTime;\r\n }\r\n }\r\n\r\n /**\r\n * Type checks that `value` is an array of numbers\r\n * @param optionName Provides text to error messages e.g. disabledDates\r\n * @param value Option value\r\n * @param providedType Used to provide text to error messages\r\n */\r\n static _typeCheckNumberArray(\r\n optionName: string,\r\n value,\r\n providedType: string\r\n ) {\r\n if (!Array.isArray(value) || value.find((x) => typeof x !== typeof 0)) {\r\n Namespace.errorMessages.typeMismatch(\r\n optionName,\r\n providedType,\r\n 'array of numbers'\r\n );\r\n }\r\n return;\r\n }\r\n\r\n /**\r\n * Attempts to convert `d` to a DateTime object\r\n * @param d value to convert\r\n * @param optionName Provides text to error messages e.g. disabledDates\r\n */\r\n static _dateConversion(d: any, optionName: string) {\r\n if (typeof d === typeof '' && optionName !== 'input') {\r\n Namespace.errorMessages.dateString();\r\n }\r\n\r\n const converted = this._dateTypeCheck(d);\r\n\r\n if (!converted) {\r\n Namespace.errorMessages.failedToParseDate(\r\n optionName,\r\n d,\r\n optionName === 'input'\r\n );\r\n }\r\n return converted;\r\n }\r\n\r\n private static _flatback: string[];\r\n\r\n private static get _flattenDefaultOptions(): string[] {\r\n if (this._flatback) return this._flatback;\r\n const deepKeys = (t, pre = []) =>\r\n Array.isArray(t)\r\n ? []\r\n : Object(t) === t\r\n ? Object.entries(t).flatMap(([k, v]) => deepKeys(v, [...pre, k]))\r\n : pre.join('.');\r\n\r\n this._flatback = deepKeys(DefaultOptions);\r\n\r\n return this._flatback;\r\n }\r\n\r\n /**\r\n * Some options conflict like min/max date. Verify that these kinds of options\r\n * are set correctly.\r\n * @param config\r\n */\r\n static _validateConflcits(config: Options) {\r\n if (config.restrictions.minDate && config.restrictions.maxDate) {\r\n if (config.restrictions.minDate.isAfter(config.restrictions.maxDate)) {\r\n Namespace.errorMessages.conflictingConfiguration(\r\n 'minDate is after maxDate'\r\n );\r\n }\r\n\r\n if (config.restrictions.maxDate.isBefore(config.restrictions.minDate)) {\r\n Namespace.errorMessages.conflictingConfiguration(\r\n 'maxDate is before minDate'\r\n );\r\n }\r\n }\r\n }\r\n}\r\n","import { TempusDominus } from './tempus-dominus';\r\nimport { DateTime, Unit } from './datetime';\r\nimport Namespace from './namespace';\r\nimport { ChangeEvent, FailEvent } from './event-types';\r\nimport { OptionConverter } from './options';\r\n\r\nexport default class Dates {\r\n private _dates: DateTime[] = [];\r\n private _context: TempusDominus;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Returns the array of selected dates\r\n */\r\n get picked(): DateTime[] {\r\n return this._dates;\r\n }\r\n\r\n /**\r\n * Returns the last picked value.\r\n */\r\n get lastPicked(): DateTime {\r\n return this._dates[this.lastPickedIndex];\r\n }\r\n\r\n /**\r\n * Returns the length of picked dates -1 or 0 if none are selected.\r\n */\r\n get lastPickedIndex(): number {\r\n if (this._dates.length === 0) return 0;\r\n return this._dates.length - 1;\r\n }\r\n\r\n /**\r\n * Adds a new DateTime to selected dates array\r\n * @param date\r\n */\r\n add(date: DateTime): void {\r\n this._dates.push(date);\r\n }\r\n\r\n /**\r\n * Tries to convert the provided value to a DateTime object.\r\n * If value is null|undefined then clear the value of the provided index (or 0).\r\n * @param value Value to convert or null|undefined\r\n * @param index When using multidates this is the index in the array\r\n * @param from Used in the warning message, useful for debugging.\r\n */\r\n set(value: any, index?: number, from: string = 'date.set') {\r\n if (!value) this._setValue(value, index);\r\n const converted = OptionConverter._dateConversion(value, from);\r\n if (converted) this._setValue(converted, index);\r\n }\r\n\r\n /**\r\n * Returns true if the `targetDate` is part of the selected dates array.\r\n * If `unit` is provided then a granularity to that unit will be used.\r\n * @param targetDate\r\n * @param unit\r\n */\r\n isPicked(targetDate: DateTime, unit?: Unit): boolean {\r\n if (!unit) return this._dates.find((x) => x === targetDate) !== undefined;\r\n\r\n const format = Dates.getFormatByUnit(unit);\r\n\r\n let innerDateFormatted = targetDate.format(format);\r\n\r\n return (\r\n this._dates\r\n .map((x) => x.format(format))\r\n .find((x) => x === innerDateFormatted) !== undefined\r\n );\r\n }\r\n\r\n /**\r\n * Returns the index at which `targetDate` is in the array.\r\n * This is used for updating or removing a date when multi-date is used\r\n * If `unit` is provided then a granularity to that unit will be used.\r\n * @param targetDate\r\n * @param unit\r\n */\r\n pickedIndex(targetDate: DateTime, unit?: Unit): number {\r\n if (!unit) return this._dates.indexOf(targetDate);\r\n\r\n const format = Dates.getFormatByUnit(unit);\r\n\r\n let innerDateFormatted = targetDate.format(format);\r\n\r\n return this._dates.map((x) => x.format(format)).indexOf(innerDateFormatted);\r\n }\r\n\r\n /**\r\n * Clears all selected dates.\r\n */\r\n clear() {\r\n this._context._unset = true;\r\n this._context._triggerEvent({\r\n type: Namespace.events.change,\r\n date: undefined,\r\n oldDate: this.lastPicked,\r\n isClear: true,\r\n isValid: true,\r\n } as ChangeEvent);\r\n this._dates = [];\r\n }\r\n\r\n /**\r\n * Find the \"book end\" years given a `year` and a `factor`\r\n * @param factor e.g. 100 for decades\r\n * @param year e.g. 2021\r\n */\r\n static getStartEndYear(\r\n factor: number,\r\n year: number\r\n ): [number, number, number] {\r\n const step = factor / 10,\r\n startYear = Math.floor(year / factor) * factor,\r\n endYear = startYear + step * 9,\r\n focusValue = Math.floor(year / step) * step;\r\n return [startYear, endYear, focusValue];\r\n }\r\n\r\n /**\r\n * Do not use direectly. Attempts to either clear or set the `target` date at `index`.\r\n * If the `target` is null then the date will be cleared.\r\n * If multi-date is being used then it will be removed from the array.\r\n * If `target` is valid and multi-date is used then if `index` is\r\n * provided the date at that index will be replaced, otherwise it is appended.\r\n * @param target\r\n * @param index\r\n */\r\n _setValue(target?: DateTime, index?: number): void {\r\n const noIndex = typeof index === 'undefined',\r\n isClear = !target && noIndex;\r\n let oldDate = this._context._unset ? null : this._dates[index];\r\n if (!oldDate && !this._context._unset && noIndex && isClear) {\r\n oldDate = this.lastPicked;\r\n }\r\n\r\n const updateInput = () => {\r\n if (!this._context._input) return;\r\n\r\n let newValue = this._context._options.hooks.inputFormat(\r\n this._context,\r\n target\r\n );\r\n if (this._context._options.multipleDates) {\r\n newValue = this._dates\r\n .map((d) =>\r\n this._context._options.hooks.inputFormat(this._context, d)\r\n )\r\n .join(this._context._options.multipleDatesSeparator);\r\n }\r\n if (this._context._input.value != newValue)\r\n this._context._input.value = newValue;\r\n };\r\n\r\n if (target && oldDate?.isSame(target)) {\r\n updateInput();\r\n return;\r\n }\r\n\r\n // case of calling setValue(null)\r\n if (!target) {\r\n if (\r\n !this._context._options.multipleDates ||\r\n this._dates.length === 1 ||\r\n isClear\r\n ) {\r\n this._context._unset = true;\r\n this._dates = [];\r\n } else {\r\n this._dates.splice(index, 1);\r\n }\r\n this._context._triggerEvent({\r\n type: Namespace.events.change,\r\n date: undefined,\r\n oldDate,\r\n isClear,\r\n isValid: true,\r\n } as ChangeEvent);\r\n\r\n updateInput();\r\n this._context._display._update('all');\r\n return;\r\n }\r\n\r\n index = index || 0;\r\n target = target.clone;\r\n\r\n // minute stepping is being used, force the minute to the closest value\r\n if (this._context._options.stepping !== 1) {\r\n target.minutes =\r\n Math.round(target.minutes / this._context._options.stepping) *\r\n this._context._options.stepping;\r\n target.seconds = 0;\r\n }\r\n\r\n if (this._context._validation.isValid(target)) {\r\n this._dates[index] = target;\r\n this._context._viewDate = target.clone;\r\n\r\n updateInput();\r\n\r\n this._context._unset = false;\r\n this._context._display._update('all');\r\n this._context._triggerEvent({\r\n type: Namespace.events.change,\r\n date: target,\r\n oldDate,\r\n isClear,\r\n isValid: true,\r\n } as ChangeEvent);\r\n return;\r\n }\r\n\r\n if (this._context._options.keepInvalid) {\r\n this._dates[index] = target;\r\n this._context._viewDate = target.clone;\r\n\r\n updateInput();\r\n\r\n this._context._triggerEvent({\r\n type: Namespace.events.change,\r\n date: target,\r\n oldDate,\r\n isClear,\r\n isValid: false,\r\n } as ChangeEvent);\r\n }\r\n this._context._triggerEvent({\r\n type: Namespace.events.error,\r\n reason: Namespace.errorMessages.failedToSetInvalidDate,\r\n date: target,\r\n oldDate,\r\n } as FailEvent);\r\n }\r\n\r\n /**\r\n * Returns a format object based on the granularity of `unit`\r\n * @param unit\r\n */\r\n static getFormatByUnit(unit: Unit): object {\r\n switch (unit) {\r\n case 'date':\r\n return { dateStyle: 'short' };\r\n case 'month':\r\n return {\r\n month: 'numeric',\r\n year: 'numeric',\r\n };\r\n case 'year':\r\n return { year: 'numeric' };\r\n }\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\nimport Dates from '../../dates';\r\n\r\n/**\r\n * Creates and updates the grid for `year`\r\n */\r\nexport default class YearDisplay {\r\n private _context: TempusDominus;\r\n private _startYear: DateTime;\r\n private _endYear: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker(): HTMLElement {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.yearsContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectYear);\r\n container.appendChild(div);\r\n }\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 10,\r\n this._context._viewDate.year\r\n );\r\n this._startYear = this._context._viewDate.clone.manipulate(-1, Unit.year);\r\n this._endYear = this._context._viewDate.clone.manipulate(10, Unit.year);\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.yearsContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.yearsContainer,\r\n `${this._startYear.format({ year: 'numeric' })}-${this._endYear.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startYear, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endYear, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n let innerDate = this._context._viewDate.clone\r\n .startOf(Unit.year)\r\n .manipulate(-1, Unit.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectYear}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n let classes = [];\r\n classes.push(Namespace.css.year);\r\n\r\n if (\r\n !this._context._unset &&\r\n this._context.dates.isPicked(innerDate, Unit.year)\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n if (!this._context._validation.isValid(innerDate, Unit.year)) {\r\n classes.push(Namespace.css.disabled);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute('data-value', `${innerDate.year}`);\r\n containerClone.innerText = innerDate.format({ year: \"numeric\" });\r\n\r\n innerDate.manipulate(1, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\r\nimport Dates from '../../dates';\r\nimport { DateTime, Unit } from '../../datetime';\r\nimport { ActionTypes } from '../../actions';\r\nimport Namespace from '../../namespace';\r\n\r\n/**\r\n * Creates and updates the grid for `seconds`\r\n */\r\nexport default class DecadeDisplay {\r\n private _context: TempusDominus;\r\n private _startDecade: DateTime;\r\n private _endDecade: DateTime;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n }\r\n\r\n /**\r\n * Build the container html for the display\r\n * @private\r\n */\r\n get _picker() {\r\n const container = document.createElement('div');\r\n container.classList.add(Namespace.css.decadesContainer);\r\n\r\n for (let i = 0; i < 12; i++) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.selectDecade);\r\n container.appendChild(div);\r\n }\r\n return container;\r\n }\r\n\r\n /**\r\n * Populates the grid and updates enabled states\r\n * @private\r\n */\r\n _update() {\r\n const [start, end] = Dates.getStartEndYear(\r\n 100,\r\n this._context._viewDate.year\r\n );\r\n this._startDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._startDecade.year = start;\r\n this._endDecade = this._context._viewDate.clone.startOf(Unit.year);\r\n this._endDecade.year = end;\r\n\r\n const container = this._context._display.widget.getElementsByClassName(\r\n Namespace.css.decadesContainer\r\n )[0];\r\n const [previous, switcher, next] = container.parentElement\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switcher.setAttribute(\r\n Namespace.css.decadesContainer,\r\n `${this._startDecade.format({ year: 'numeric' })}-${this._endDecade.format({ year: 'numeric' })}`\r\n );\r\n\r\n this._context._validation.isValid(this._startDecade, Unit.year)\r\n ? previous.classList.remove(Namespace.css.disabled)\r\n : previous.classList.add(Namespace.css.disabled);\r\n this._context._validation.isValid(this._endDecade, Unit.year)\r\n ? next.classList.remove(Namespace.css.disabled)\r\n : next.classList.add(Namespace.css.disabled);\r\n\r\n const pickedYears = this._context.dates.picked.map((x) => x.year);\r\n\r\n container\r\n .querySelectorAll(`[data-action=\"${ActionTypes.selectDecade}\"]`)\r\n .forEach((containerClone: HTMLElement, index) => {\r\n if (index === 0) {\r\n containerClone.classList.add(Namespace.css.old);\r\n if (this._startDecade.year - 10 < 0) {\r\n containerClone.textContent = ' ';\r\n previous.classList.add(Namespace.css.disabled);\r\n containerClone.classList.add(Namespace.css.disabled);\r\n containerClone.setAttribute('data-value', ``);\r\n return;\r\n } else {\r\n containerClone.innerText = this._startDecade.clone.manipulate(-10, Unit.year).format({ year: 'numeric' });\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n return;\r\n }\r\n }\r\n\r\n let classes = [];\r\n classes.push(Namespace.css.decade);\r\n const startDecadeYear = this._startDecade.year;\r\n const endDecadeYear = this._startDecade.year + 9;\r\n\r\n if (\r\n !this._context._unset &&\r\n pickedYears.filter((x) => x >= startDecadeYear && x <= endDecadeYear)\r\n .length > 0\r\n ) {\r\n classes.push(Namespace.css.active);\r\n }\r\n\r\n containerClone.classList.remove(...containerClone.classList);\r\n containerClone.classList.add(...classes);\r\n containerClone.setAttribute(\r\n 'data-value',\r\n `${this._startDecade.year}`\r\n );\r\n containerClone.innerText = `${this._startDecade.format({ year: 'numeric' })}`;\r\n\r\n this._startDecade.manipulate(10, Unit.year);\r\n });\r\n }\r\n}\r\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates the clock display\n */\nexport default class TimeDisplay {\n private _context: TempusDominus;\n private _gridColumns = '';\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the clock display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.clockContainer);\n\n container.append(...this._grid());\n\n return container;\n }\n\n /**\n * Populates the various elements with in the clock display\n * like the current hour and if the manipulation icons are enabled.\n * @private\n */\n _update(): void {\n const timesDiv = (\n this._context._display.widget.getElementsByClassName(\n Namespace.css.clockContainer\n )[0]\n );\n const lastPicked = (\n this._context.dates.lastPicked || this._context._viewDate\n ).clone;\n\n timesDiv\n .querySelectorAll('.disabled')\n .forEach((element) => element.classList.remove(Namespace.css.disabled));\n\n if (this._context._options.display.components.hours) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.hours),\n Unit.hours\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementHours}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.hours}]`\n ).innerText = this._context._options.display.components.useTwentyfourHour\n ? lastPicked.hoursFormatted\n : lastPicked.twelveHoursFormatted;\n }\n\n if (this._context._options.display.components.minutes) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.minutes),\n Unit.minutes\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementMinutes}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.minutes}]`\n ).innerText = lastPicked.minutesFormatted;\n }\n\n if (this._context._options.display.components.seconds) {\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.incrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n\n if (\n !this._context._validation.isValid(\n this._context._viewDate.clone.manipulate(-1, Unit.seconds),\n Unit.seconds\n )\n ) {\n timesDiv\n .querySelector(`[data-action=${ActionTypes.decrementSeconds}]`)\n .classList.add(Namespace.css.disabled);\n }\n timesDiv.querySelector(\n `[data-time-component=${Unit.seconds}]`\n ).innerText = lastPicked.secondsFormatted;\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n const toggle = timesDiv.querySelector(\n `[data-action=${ActionTypes.toggleMeridiem}]`\n );\n\n toggle.innerText = lastPicked.meridiem();\n\n if (\n !this._context._validation.isValid(\n lastPicked.clone.manipulate(\n lastPicked.hours >= 12 ? -12 : 12,\n Unit.hours\n )\n )\n ) {\n toggle.classList.add(Namespace.css.disabled);\n } else {\n toggle.classList.remove(Namespace.css.disabled);\n }\n }\n\n timesDiv.style.gridTemplateAreas = `\"${this._gridColumns}\"`;\n }\n\n /**\n * Creates the table for the clock display depending on what options are selected.\n * @private\n */\n private _grid(): HTMLElement[] {\n this._gridColumns = '';\n const top = [],\n middle = [],\n bottom = [],\n separator = document.createElement('div'),\n upIcon = this._context._display._iconTag(\n this._context._options.display.icons.up\n ),\n downIcon = this._context._display._iconTag(\n this._context._options.display.icons.down\n );\n\n separator.classList.add(Namespace.css.separator, Namespace.css.noHighlight);\n const separatorColon = separator.cloneNode(true);\n separatorColon.innerHTML = ':';\n\n const getSeparator = (colon = false): HTMLElement => {\n return colon\n ? separatorColon.cloneNode(true)\n : separator.cloneNode(true);\n };\n\n if (this._context._options.display.components.hours) {\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.incrementHours);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickHour\n );\n divElement.setAttribute('data-action', ActionTypes.showHours);\n divElement.setAttribute('data-time-component', Unit.hours);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementHour\n );\n divElement.setAttribute('data-action', ActionTypes.decrementHours);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n this._gridColumns += 'a';\n }\n\n if (this._context._options.display.components.minutes) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.hours) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.incrementMinutes);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickMinute\n );\n divElement.setAttribute('data-action', ActionTypes.showMinutes);\n divElement.setAttribute('data-time-component', Unit.minutes);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementMinute\n );\n divElement.setAttribute('data-action', ActionTypes.decrementMinutes);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (this._context._options.display.components.seconds) {\n this._gridColumns += ' a';\n if (this._context._options.display.components.minutes) {\n top.push(getSeparator());\n middle.push(getSeparator(true));\n bottom.push(getSeparator());\n this._gridColumns += ' a';\n }\n let divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.incrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.incrementSeconds);\n divElement.appendChild(upIcon.cloneNode(true));\n top.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.pickSecond\n );\n divElement.setAttribute('data-action', ActionTypes.showSeconds);\n divElement.setAttribute('data-time-component', Unit.seconds);\n middle.push(divElement);\n\n divElement = document.createElement('div');\n divElement.setAttribute(\n 'title',\n this._context._options.localization.decrementSecond\n );\n divElement.setAttribute('data-action', ActionTypes.decrementSeconds);\n divElement.appendChild(downIcon.cloneNode(true));\n bottom.push(divElement);\n }\n\n if (!this._context._options.display.components.useTwentyfourHour) {\n this._gridColumns += ' a';\n let divElement = getSeparator();\n top.push(divElement);\n\n let button = document.createElement('button');\n button.setAttribute(\n 'title',\n this._context._options.localization.toggleMeridiem\n );\n button.setAttribute('data-action', ActionTypes.toggleMeridiem);\n button.setAttribute('tabindex', '-1');\n button.classList.add(Namespace.css.toggleMeridiem);\n\n divElement = document.createElement('div');\n divElement.classList.add(Namespace.css.noHighlight);\n divElement.appendChild(button);\n middle.push(divElement);\n\n divElement = getSeparator();\n bottom.push(divElement);\n }\n\n this._gridColumns = this._gridColumns.trim();\n\n return [...top, ...middle, ...bottom];\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `hours`\n */\nexport default class HourDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.hourContainer);\n\n for (\n let i = 0;\n i <\n (this._context._options.display.components.useTwentyfourHour ? 24 : 12);\n i++\n ) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectHour);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.hourContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.date);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectHour}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.hour);\n\n if (!this._context._validation.isValid(innerDate, Unit.hours)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.hours}`);\n containerClone.innerText = this._context._options.display.components\n .useTwentyfourHour\n ? innerDate.hoursFormatted\n : innerDate.twelveHoursFormatted;\n innerDate.manipulate(1, Unit.hours);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `minutes`\n */\nexport default class MinuteDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.minuteContainer);\n\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n for (let i = 0; i < 60 / step; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectMinute);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.minuteContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.hours);\n let step =\n this._context._options.stepping === 1\n ? 5\n : this._context._options.stepping;\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectMinute}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.minute);\n\n if (!this._context._validation.isValid(innerDate, Unit.minutes)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.minutes}`);\n containerClone.innerText = innerDate.minutesFormatted;\n innerDate.manipulate(step, Unit.minutes);\n });\n }\n}\n","import { TempusDominus } from '../../tempus-dominus';\nimport { Unit } from '../../datetime';\nimport { ActionTypes } from '../../actions';\nimport Namespace from '../../namespace';\n\n/**\n * Creates and updates the grid for `seconds`\n */\nexport default class secondDisplay {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Build the container html for the display\n * @private\n */\n get _picker(): HTMLElement {\n const container = document.createElement('div');\n container.classList.add(Namespace.css.secondContainer);\n\n for (let i = 0; i < 12; i++) {\n const div = document.createElement('div');\n div.setAttribute('data-action', ActionTypes.selectSecond);\n container.appendChild(div);\n }\n\n return container;\n }\n\n /**\n * Populates the grid and updates enabled states\n * @private\n */\n _update(): void {\n const container = this._context._display.widget.getElementsByClassName(\n Namespace.css.secondContainer\n )[0];\n let innerDate = this._context._viewDate.clone.startOf(Unit.minutes);\n\n container\n .querySelectorAll(`[data-action=\"${ActionTypes.selectSecond}\"]`)\n .forEach((containerClone: HTMLElement, index) => {\n let classes = [];\n classes.push(Namespace.css.second);\n\n if (!this._context._validation.isValid(innerDate, Unit.seconds)) {\n classes.push(Namespace.css.disabled);\n }\n\n containerClone.classList.remove(...containerClone.classList);\n containerClone.classList.add(...classes);\n containerClone.setAttribute('data-value', `${innerDate.seconds}`);\n containerClone.innerText = innerDate.secondsFormatted;\n innerDate.manipulate(5, Unit.seconds);\n });\n }\n}\n","import DateDisplay from './calendar/date-display';\r\nimport MonthDisplay from './calendar/month-display';\r\nimport YearDisplay from './calendar/year-display';\r\nimport DecadeDisplay from './calendar/decade-display';\r\nimport TimeDisplay from './time/time-display';\r\nimport HourDisplay from './time/hour-display';\r\nimport MinuteDisplay from './time/minute-display';\r\nimport SecondDisplay from './time/second-display';\r\nimport { DateTime, Unit } from '../datetime';\r\nimport { DatePickerModes } from '../conts';\r\nimport { TempusDominus } from '../tempus-dominus';\r\nimport { ActionTypes } from '../actions';\r\nimport { createPopper } from '@popperjs/core';\r\nimport Namespace from '../namespace';\r\nimport { HideEvent } from '../event-types';\r\n\r\n/**\r\n * Main class for all things display related.\r\n */\r\nexport default class Display {\r\n private _context: TempusDominus;\r\n private _dateDisplay: DateDisplay;\r\n private _monthDisplay: MonthDisplay;\r\n private _yearDisplay: YearDisplay;\r\n private _decadeDisplay: DecadeDisplay;\r\n private _timeDisplay: TimeDisplay;\r\n private _widget: HTMLElement;\r\n private _hourDisplay: HourDisplay;\r\n private _minuteDisplay: MinuteDisplay;\r\n private _secondDisplay: SecondDisplay;\r\n private _popperInstance: any;\r\n private _isVisible = false;\r\n\r\n constructor(context: TempusDominus) {\r\n this._context = context;\r\n this._dateDisplay = new DateDisplay(context);\r\n this._monthDisplay = new MonthDisplay(context);\r\n this._yearDisplay = new YearDisplay(context);\r\n this._decadeDisplay = new DecadeDisplay(context);\r\n this._timeDisplay = new TimeDisplay(context);\r\n this._hourDisplay = new HourDisplay(context);\r\n this._minuteDisplay = new MinuteDisplay(context);\r\n this._secondDisplay = new SecondDisplay(context);\r\n\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Returns the widget body or undefined\r\n * @private\r\n */\r\n get widget(): HTMLElement | undefined {\r\n return this._widget;\r\n }\r\n\r\n /**\r\n * Returns this visible state of the picker (shown)\r\n */\r\n get isVisible() {\r\n return this._isVisible;\r\n }\r\n\r\n /**\r\n * Updates the table for a particular unit. Used when an option as changed or\r\n * whenever the class list might need to be refreshed.\r\n * @param unit\r\n * @private\r\n */\r\n _update(unit: Unit | 'clock' | 'calendar' | 'all'): void {\r\n if (!this.widget) return;\r\n //todo do I want some kind of error catching or other guards here?\r\n switch (unit) {\r\n case Unit.seconds:\r\n this._secondDisplay._update();\r\n break;\r\n case Unit.minutes:\r\n this._minuteDisplay._update();\r\n break;\r\n case Unit.hours:\r\n this._hourDisplay._update();\r\n break;\r\n case Unit.date:\r\n this._dateDisplay._update();\r\n break;\r\n case Unit.month:\r\n this._monthDisplay._update();\r\n break;\r\n case Unit.year:\r\n this._yearDisplay._update();\r\n break;\r\n case 'clock':\r\n this._timeDisplay._update();\r\n this._update(Unit.hours);\r\n this._update(Unit.minutes);\r\n this._update(Unit.seconds);\r\n break;\r\n case 'calendar':\r\n this._update(Unit.date);\r\n this._update(Unit.year);\r\n this._update(Unit.month);\r\n this._decadeDisplay._update();\r\n this._updateCalendarHeader();\r\n break;\r\n case 'all':\r\n if (this._hasTime) {\r\n this._update('clock');\r\n }\r\n if (this._hasDate) {\r\n this._update('calendar');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Shows the picker and creates a Popper instance if needed.\r\n * Add document click event to hide when clicking outside the picker.\r\n * @fires Events#show\r\n */\r\n show(): void {\r\n if (this.widget == undefined) {\r\n if (\r\n this._context._options.useCurrent &&\r\n !this._context._options.defaultDate &&\r\n !this._context._input?.value\r\n ) {\r\n //todo in the td4 branch a pr changed this to allow granularity\r\n const date = new DateTime().setLocale(\r\n this._context._options.localization.locale\r\n );\r\n if (!this._context._options.keepInvalid) {\r\n let tries = 0;\r\n let direction = 1;\r\n if (this._context._options.restrictions.maxDate?.isBefore(date)) {\r\n direction = -1;\r\n }\r\n while (!this._context._validation.isValid(date)) {\r\n date.manipulate(direction, Unit.date);\r\n if (tries > 31) break;\r\n tries++;\r\n }\r\n }\r\n this._context.dates._setValue(date);\r\n }\r\n\r\n if (this._context._options.defaultDate) {\r\n this._context.dates._setValue(this._context._options.defaultDate);\r\n }\r\n\r\n this._buildWidget();\r\n if (this._hasDate) {\r\n this._showMode();\r\n }\r\n\r\n if (!this._context._options.display.inline) {\r\n document.body.appendChild(this.widget);\r\n\r\n this._popperInstance = createPopper(\r\n this._context._element,\r\n this.widget,\r\n {\r\n modifiers: [{ name: 'eventListeners', enabled: true }],\r\n //#2400\r\n placement:\r\n document.documentElement.dir === 'rtl'\r\n ? 'bottom-end'\r\n : 'bottom-start',\r\n }\r\n );\r\n } else {\r\n this._context._element.appendChild(this.widget);\r\n }\r\n\r\n if (this._context._options.display.viewMode == 'clock') {\r\n this._context._action.do(\r\n {\r\n currentTarget: this.widget.querySelector(\r\n `.${Namespace.css.timeContainer}`\r\n ),\r\n },\r\n ActionTypes.showClock\r\n );\r\n }\r\n\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.addEventListener('click', this._actionsClickEvent)\r\n );\r\n\r\n // show the clock when using sideBySide\r\n if (this._context._options.display.sideBySide) {\r\n this._timeDisplay._update();\r\n (\r\n this.widget.getElementsByClassName(\r\n Namespace.css.clockContainer\r\n )[0] as HTMLElement\r\n ).style.display = 'grid';\r\n }\r\n }\r\n\r\n this.widget.classList.add(Namespace.css.show);\r\n if (!this._context._options.display.inline) {\r\n this._popperInstance.update();\r\n document.addEventListener('click', this._documentClickEvent);\r\n }\r\n this._context._triggerEvent({ type: Namespace.events.show });\r\n this._isVisible = true;\r\n }\r\n\r\n /**\r\n * Changes the calendar view mode. E.g. month <-> year\r\n * @param direction -/+ number to move currentViewMode\r\n * @private\r\n */\r\n _showMode(direction?: number): void {\r\n if (!this.widget) {\r\n return;\r\n }\r\n if (direction) {\r\n const max = Math.max(\r\n this._context._minViewModeNumber,\r\n Math.min(3, this._context._currentViewMode + direction)\r\n );\r\n if (this._context._currentViewMode == max) return;\r\n this._context._currentViewMode = max;\r\n }\r\n\r\n this.widget\r\n .querySelectorAll(\r\n `.${Namespace.css.dateContainer} > div:not(.${Namespace.css.calendarHeader}), .${Namespace.css.timeContainer} > div:not(.${Namespace.css.clockContainer})`\r\n )\r\n .forEach((e: HTMLElement) => (e.style.display = 'none'));\r\n\r\n const datePickerMode = DatePickerModes[this._context._currentViewMode];\r\n let picker: HTMLElement = this.widget.querySelector(\r\n `.${datePickerMode.className}`\r\n );\r\n\r\n switch (datePickerMode.className) {\r\n case Namespace.css.decadesContainer:\r\n this._decadeDisplay._update();\r\n break;\r\n case Namespace.css.yearsContainer:\r\n this._yearDisplay._update();\r\n break;\r\n case Namespace.css.monthsContainer:\r\n this._monthDisplay._update();\r\n break;\r\n case Namespace.css.daysContainer:\r\n this._dateDisplay._update();\r\n break;\r\n }\r\n\r\n picker.style.display = 'grid';\r\n this._updateCalendarHeader();\r\n }\r\n\r\n _updateCalendarHeader() {\r\n const showing = [\r\n ...this.widget.querySelector(\r\n `.${Namespace.css.dateContainer} div[style*=\"display: grid\"]`\r\n ).classList,\r\n ].find((x) => x.startsWith(Namespace.css.dateContainer));\r\n\r\n const [previous, switcher, next] = this._context._display.widget\r\n .getElementsByClassName(Namespace.css.calendarHeader)[0]\r\n .getElementsByTagName('div');\r\n\r\n switch (showing) {\r\n case Namespace.css.decadesContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousCentury\r\n );\r\n switcher.setAttribute('title', '');\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextCentury\r\n );\r\n break;\r\n case Namespace.css.yearsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousDecade\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectDecade\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextDecade\r\n );\r\n break;\r\n case Namespace.css.monthsContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousYear\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectYear\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextYear\r\n );\r\n break;\r\n case Namespace.css.daysContainer:\r\n previous.setAttribute(\r\n 'title',\r\n this._context._options.localization.previousMonth\r\n );\r\n switcher.setAttribute(\r\n 'title',\r\n this._context._options.localization.selectMonth\r\n );\r\n next.setAttribute(\r\n 'title',\r\n this._context._options.localization.nextMonth\r\n );\r\n switcher.innerText = this._context._viewDate.format({\r\n month: this._context._options.localization.dayViewHeaderFormat,\r\n });\r\n break;\r\n }\r\n switcher.innerText = switcher.getAttribute(showing);\r\n }\r\n\r\n /**\r\n * Hides the picker if needed.\r\n * Remove document click event to hide when clicking outside the picker.\r\n * @fires Events#hide\r\n */\r\n hide(): void {\r\n if (!this.widget || !this._isVisible) return;\r\n\r\n this.widget.classList.remove(Namespace.css.show);\r\n\r\n if (this._isVisible) {\r\n this._context._triggerEvent({\r\n type: Namespace.events.hide,\r\n date: this._context._unset\r\n ? null\r\n : this._context.dates.lastPicked\r\n ? this._context.dates.lastPicked.clone\r\n : void 0,\r\n } as HideEvent);\r\n this._isVisible = false;\r\n }\r\n\r\n document.removeEventListener('click', this._documentClickEvent);\r\n }\r\n\r\n /**\r\n * Toggles the picker's open state. Fires a show/hide event depending.\r\n */\r\n toggle() {\r\n return this._isVisible ? this.hide() : this.show();\r\n }\r\n\r\n /**\r\n * Removes document and data-action click listener and reset the widget\r\n * @private\r\n */\r\n _dispose() {\r\n document.removeEventListener('click', this._documentClickEvent);\r\n if (!this.widget) return;\r\n this.widget\r\n .querySelectorAll('[data-action]')\r\n .forEach((element) =>\r\n element.removeEventListener('click', this._actionsClickEvent)\r\n );\r\n this.widget.parentNode.removeChild(this.widget);\r\n this._widget = undefined;\r\n }\r\n\r\n /**\r\n * Builds the widgets html template.\r\n * @private\r\n */\r\n private _buildWidget(): HTMLElement {\r\n const template = document.createElement('div');\r\n template.classList.add(Namespace.css.widget);\r\n\r\n const dateView = document.createElement('div');\r\n dateView.classList.add(Namespace.css.dateContainer);\r\n dateView.append(\r\n this._headTemplate,\r\n this._decadeDisplay._picker,\r\n this._yearDisplay._picker,\r\n this._monthDisplay._picker,\r\n this._dateDisplay._picker\r\n );\r\n\r\n const timeView = document.createElement('div');\r\n timeView.classList.add(Namespace.css.timeContainer);\r\n timeView.appendChild(this._timeDisplay._picker);\r\n timeView.appendChild(this._hourDisplay._picker);\r\n timeView.appendChild(this._minuteDisplay._picker);\r\n timeView.appendChild(this._secondDisplay._picker);\r\n\r\n const toolbar = document.createElement('div');\r\n toolbar.classList.add(Namespace.css.toolbar);\r\n toolbar.append(...this._toolbar);\r\n\r\n if (this._context._options.display.inline) {\r\n template.classList.add(Namespace.css.inline);\r\n }\r\n\r\n if (this._context._options.display.calendarWeeks) {\r\n template.classList.add('calendarWeeks');\r\n }\r\n\r\n if (\r\n this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n template.classList.add(Namespace.css.sideBySide);\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n const row = document.createElement('div');\r\n row.classList.add('td-row');\r\n dateView.classList.add('td-half');\r\n timeView.classList.add('td-half');\r\n\r\n row.appendChild(dateView);\r\n row.appendChild(timeView);\r\n template.appendChild(row);\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n this._widget = template;\r\n return;\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'top') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n if (this._hasDate) {\r\n if (this._hasTime) {\r\n dateView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode !== 'clock')\r\n dateView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(dateView);\r\n }\r\n\r\n if (this._hasTime) {\r\n if (this._hasDate) {\r\n timeView.classList.add(Namespace.css.collapse);\r\n if (this._context._options.display.viewMode === 'clock')\r\n timeView.classList.add(Namespace.css.show);\r\n }\r\n template.appendChild(timeView);\r\n }\r\n\r\n if (this._context._options.display.toolbarPlacement === 'bottom') {\r\n template.appendChild(toolbar);\r\n }\r\n\r\n const arrow = document.createElement('div');\r\n arrow.classList.add('arrow');\r\n arrow.setAttribute('data-popper-arrow', '');\r\n template.appendChild(arrow);\r\n\r\n this._widget = template;\r\n }\r\n\r\n /**\r\n * Returns true if the hours, minutes, or seconds component is turned on\r\n */\r\n get _hasTime(): boolean {\r\n return (\r\n this._context._options.display.components.clock &&\r\n (this._context._options.display.components.hours ||\r\n this._context._options.display.components.minutes ||\r\n this._context._options.display.components.seconds)\r\n );\r\n }\r\n\r\n /**\r\n * Returns true if the year, month, or date component is turned on\r\n */\r\n get _hasDate(): boolean {\r\n return (\r\n this._context._options.display.components.calendar &&\r\n (this._context._options.display.components.year ||\r\n this._context._options.display.components.month ||\r\n this._context._options.display.components.date)\r\n );\r\n }\r\n\r\n /**\r\n * Get the toolbar html based on options like buttons.today\r\n * @private\r\n */\r\n get _toolbar(): HTMLElement[] {\r\n const toolbar = [];\r\n\r\n if (this._context._options.display.buttons.today) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.today);\r\n div.setAttribute('title', this._context._options.localization.today);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.today)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (\r\n !this._context._options.display.sideBySide &&\r\n this._hasDate &&\r\n this._hasTime\r\n ) {\r\n let title, icon;\r\n if (this._context._options.display.viewMode === 'clock') {\r\n title = this._context._options.localization.selectDate;\r\n icon = this._context._options.display.icons.date;\r\n } else {\r\n title = this._context._options.localization.selectTime;\r\n icon = this._context._options.display.icons.time;\r\n }\r\n\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.togglePicker);\r\n div.setAttribute('title', title);\r\n\r\n div.appendChild(this._iconTag(icon));\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.clear) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.clear);\r\n div.setAttribute('title', this._context._options.localization.clear);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.clear)\r\n );\r\n toolbar.push(div);\r\n }\r\n if (this._context._options.display.buttons.close) {\r\n const div = document.createElement('div');\r\n div.setAttribute('data-action', ActionTypes.close);\r\n div.setAttribute('title', this._context._options.localization.close);\r\n\r\n div.appendChild(\r\n this._iconTag(this._context._options.display.icons.close)\r\n );\r\n toolbar.push(div);\r\n }\r\n\r\n return toolbar;\r\n }\r\n\r\n /***\r\n * Builds the base header template with next and previous icons\r\n * @private\r\n */\r\n get _headTemplate(): HTMLElement {\r\n const calendarHeader = document.createElement('div');\r\n calendarHeader.classList.add(Namespace.css.calendarHeader);\r\n\r\n const previous = document.createElement('div');\r\n previous.classList.add(Namespace.css.previous);\r\n previous.setAttribute('data-action', ActionTypes.previous);\r\n previous.appendChild(\r\n this._iconTag(this._context._options.display.icons.previous)\r\n );\r\n\r\n const switcher = document.createElement('div');\r\n switcher.classList.add(Namespace.css.switch);\r\n switcher.setAttribute('data-action', ActionTypes.pickerSwitch);\r\n\r\n const next = document.createElement('div');\r\n next.classList.add(Namespace.css.next);\r\n next.setAttribute('data-action', ActionTypes.next);\r\n next.appendChild(this._iconTag(this._context._options.display.icons.next));\r\n\r\n calendarHeader.append(previous, switcher, next);\r\n return calendarHeader;\r\n }\r\n\r\n /**\r\n * Builds an icon tag as either an ``\r\n * or with icons.type is `sprites` then an svg tag instead\r\n * @param iconClass\r\n * @private\r\n */\r\n _iconTag(iconClass: string): HTMLElement {\r\n if (this._context._options.display.icons.type === 'sprites') {\r\n const svg = document.createElement('svg');\r\n svg.innerHTML = ``;\r\n return svg;\r\n }\r\n const icon = document.createElement('i');\r\n DOMTokenList.prototype.add.apply(icon.classList, iconClass.split(' '));\r\n return icon;\r\n }\r\n\r\n /**\r\n * A document click event to hide the widget if click is outside\r\n * @private\r\n * @param e MouseEvent\r\n */\r\n private _documentClickEvent = (e: MouseEvent) => {\r\n if (this._context._options.debug || (window as any).debug) return;\r\n\r\n if (\r\n this._isVisible &&\r\n !e.composedPath().includes(this.widget) && // click inside the widget\r\n !e.composedPath()?.includes(this._context._element) // click on the element\r\n ) {\r\n this.hide();\r\n }\r\n };\r\n\r\n /**\r\n * Click event for any action like selecting a date\r\n * @param e MouseEvent\r\n * @private\r\n */\r\n private _actionsClickEvent = (e: MouseEvent) => {\r\n this._context._action.do(e);\r\n };\r\n\r\n /**\r\n * Causes the widget to get rebuilt on next show. If the picker is already open\r\n * then hide and reshow it.\r\n * @private\r\n */\r\n _rebuild() {\r\n const wasVisible = this._isVisible;\r\n if (wasVisible) this.hide();\r\n this._dispose();\r\n if (wasVisible) {\r\n this.show();\r\n }\r\n }\r\n}\r\n","import { TempusDominus } from './tempus-dominus';\nimport { DateTime, Unit } from './datetime';\nimport Dates from './dates';\n\n/**\n * Main class for date validation rules based on the options provided.\n */\nexport default class Validation {\n private _context: TempusDominus;\n\n constructor(context: TempusDominus) {\n this._context = context;\n }\n\n /**\n * Checks to see if the target date is valid based on the rules provided in the options.\n * Granularity can be provide to chek portions of the date instead of the whole.\n * @param targetDate\n * @param granularity\n */\n isValid(targetDate: DateTime, granularity?: Unit): boolean {\n if (\n this._context._options.restrictions.disabledDates.length > 0 &&\n this._isInDisabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledDates.length > 0 &&\n !this._isInEnabledDates(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.daysOfWeekDisabled?.length > 0 &&\n this._context._options.restrictions.daysOfWeekDisabled.indexOf(\n targetDate.weekDay\n ) !== -1\n ) {\n return false;\n }\n\n if (\n this._context._options.restrictions.minDate &&\n targetDate.isBefore(\n this._context._options.restrictions.minDate,\n granularity\n )\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.maxDate &&\n targetDate.isAfter(\n this._context._options.restrictions.maxDate,\n granularity\n )\n ) {\n return false;\n }\n\n if (\n granularity === Unit.hours ||\n granularity === Unit.minutes ||\n granularity === Unit.seconds\n ) {\n if (\n this._context._options.restrictions.disabledHours.length > 0 &&\n this._isInDisabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.enabledHours.length > 0 &&\n !this._isInEnabledHours(targetDate)\n ) {\n return false;\n }\n if (\n this._context._options.restrictions.disabledTimeIntervals.length > 0\n ) {\n for (\n let i = 0;\n i < this._context._options.restrictions.disabledTimeIntervals.length;\n i++\n ) {\n if (\n targetDate.isBetween(\n this._context._options.restrictions.disabledTimeIntervals[i].from,\n this._context._options.restrictions.disabledTimeIntervals[i].to\n )\n )\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Checks to see if the disabledDates option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInDisabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledDates ||\n this._context._options.restrictions.disabledDates.length === 0\n )\n return false;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.disabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the enabledDates option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by date.\n * @param testDate\n * @private\n */\n private _isInEnabledDates(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledDates ||\n this._context._options.restrictions.enabledDates.length === 0\n )\n return true;\n const formattedDate = testDate.format(Dates.getFormatByUnit(Unit.date));\n return this._context._options.restrictions.enabledDates\n .map((x) => x.format(Dates.getFormatByUnit(Unit.date)))\n .find((x) => x === formattedDate);\n }\n\n /**\n * Checks to see if the disabledHours option is in use and returns true (meaning invalid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInDisabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.disabledHours ||\n this._context._options.restrictions.disabledHours.length === 0\n )\n return false;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.disabledHours.find(\n (x) => x === formattedDate\n );\n }\n\n /**\n * Checks to see if the enabledHours option is in use and returns true (meaning valid)\n * if the `testDate` is with in the array. Granularity is by hours.\n * @param testDate\n * @private\n */\n private _isInEnabledHours(testDate: DateTime) {\n if (\n !this._context._options.restrictions.enabledHours ||\n this._context._options.restrictions.enabledHours.length === 0\n )\n return true;\n const formattedDate = testDate.hours;\n return this._context._options.restrictions.enabledHours.find(\n (x) => x === formattedDate\n );\n }\n}\n","import Display from './display/index';\r\nimport Validation from './validation';\r\nimport Dates from './dates';\r\nimport Actions, { ActionTypes } from './actions';\r\nimport { DatePickerModes, DefaultOptions } from './conts';\r\nimport { DateTime, DateTimeFormatOptions, Unit } from './datetime';\r\nimport Namespace from './namespace';\r\nimport Options, { OptionConverter } from './options';\r\nimport {\r\n BaseEvent,\r\n ChangeEvent,\r\n ViewUpdateEvent,\r\n FailEvent,\r\n} from './event-types';\r\n\r\n/**\r\n * A robust and powerful date/time picker component.\r\n */\r\nclass TempusDominus {\r\n dates: Dates;\r\n\r\n _options: Options;\r\n _currentViewMode = 0;\r\n _subscribers: { [key: string]: ((event: any) => {})[] } = {};\r\n _element: HTMLElement;\r\n _input: HTMLInputElement;\r\n _unset: boolean;\r\n _minViewModeNumber = 0;\r\n _display: Display;\r\n _validation: Validation;\r\n _action: Actions;\r\n private _isDisabled = false;\r\n private _notifyChangeEventContext = 0;\r\n private _toggle: HTMLElement;\r\n private _currentPromptTimeTimeout: any;\r\n\r\n constructor(element: HTMLElement, options: Options = {} as Options) {\r\n if (!element) {\r\n Namespace.errorMessages.mustProvideElement;\r\n }\r\n this._element = element;\r\n this._options = this._initializeOptions(options, DefaultOptions, true);\r\n this._viewDate.setLocale(this._options.localization.locale);\r\n this._unset = true;\r\n\r\n this._display = new Display(this);\r\n this._validation = new Validation(this);\r\n this.dates = new Dates(this);\r\n this._action = new Actions(this);\r\n\r\n this._initializeInput();\r\n this._initializeToggle();\r\n\r\n if (this._options.display.inline) this._display.show();\r\n }\r\n\r\n _viewDate = new DateTime();\r\n\r\n get viewDate() {\r\n return this._viewDate;\r\n }\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n /**\r\n * Update the picker options. If `reset` is provide `options` will be merged with DefaultOptions instead.\r\n * @param options\r\n * @param reset\r\n * @public\r\n */\r\n updateOptions(options, reset = false): void {\r\n if (reset) this._options = this._initializeOptions(options, DefaultOptions);\r\n else this._options = this._initializeOptions(options, this._options);\r\n this._display._rebuild();\r\n }\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n /**\r\n * Toggles the picker open or closed. If the picker is disabled, nothing will happen.\r\n * @public\r\n */\r\n toggle(): void {\r\n if (this._isDisabled) return;\r\n this._display.toggle();\r\n }\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n /**\r\n * Shows the picker unless the picker is disabled.\r\n * @public\r\n */\r\n show(): void {\r\n if (this._isDisabled) return;\r\n this._display.show();\r\n }\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n /**\r\n * Hides the picker unless the picker is disabled.\r\n * @public\r\n */\r\n hide(): void {\r\n this._display.hide();\r\n }\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n /**\r\n * Disables the picker and the target input field.\r\n * @public\r\n */\r\n disable(): void {\r\n this._isDisabled = true;\r\n // todo this might be undesired. If a dev disables the input field to\r\n // only allow using the picker, this will break that.\r\n this._input?.setAttribute('disabled', 'disabled');\r\n this._display.hide();\r\n }\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n /**\r\n * Enables the picker and the target input field.\r\n * @public\r\n */\r\n enable(): void {\r\n this._isDisabled = false;\r\n this._input?.removeAttribute('disabled');\r\n }\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n /**\r\n * Clears all the selected dates\r\n * @public\r\n */\r\n clear(): void {\r\n this.dates.clear();\r\n }\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n /**\r\n * Allows for a direct subscription to picker events, without having to use addEventListener on the element.\r\n * @param eventTypes See Namespace.Events\r\n * @param callbacks Function to call when event is triggered\r\n * @public\r\n */\r\n subscribe(\r\n eventTypes: string | string[],\r\n callbacks: (event: any) => void | ((event: any) => void)[]\r\n ): { unsubscribe: void }[] {\r\n if (typeof eventTypes === 'string') {\r\n eventTypes = [eventTypes];\r\n }\r\n let callBackArray = [];\r\n if (!Array.isArray(callbacks)) {\r\n callBackArray = [callbacks];\r\n } else {\r\n callBackArray = callbacks;\r\n }\r\n\r\n if (eventTypes.length !== callBackArray.length) {\r\n Namespace.errorMessages.subscribeMismatch;\r\n }\r\n\r\n const returnArray = [];\r\n\r\n for (let i = 0; i < eventTypes.length; i++) {\r\n const eventType = eventTypes[i];\r\n if (!Array.isArray(this._subscribers[eventType])) {\r\n this._subscribers[eventType] = [];\r\n }\r\n\r\n this._subscribers[eventType].push(callBackArray[i]);\r\n\r\n returnArray.push({\r\n unsubscribe: this._unsubscribe.bind(\r\n this,\r\n eventType,\r\n this._subscribers[eventType].length - 1\r\n ),\r\n });\r\n\r\n if (eventTypes.length === 1) {\r\n return returnArray[0];\r\n }\r\n }\r\n\r\n return returnArray;\r\n }\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n /**\r\n * Hides the picker and removes event listeners\r\n */\r\n dispose() {\r\n this._display.hide();\r\n // this will clear the document click event listener\r\n this._display._dispose();\r\n this._input?.removeEventListener('change', this._inputChangeEvent);\r\n if (this._options.allowInputToggle) {\r\n this._input?.removeEventListener('click', this._toggleClickEvent);\r\n }\r\n this._toggle.removeEventListener('click', this._toggleClickEvent);\r\n this._subscribers = {};\r\n }\r\n\r\n /**\r\n * Triggers an event like ChangeEvent when the picker has updated the value\r\n * of a selected date.\r\n * @param event Accepts a BaseEvent object.\r\n * @private\r\n */\r\n _triggerEvent(event: BaseEvent) {\r\n // checking hasOwnProperty because the BasicEvent also falls through here otherwise\r\n if ((event as ChangeEvent) && event.hasOwnProperty('date')) {\r\n const { date, oldDate, isClear } = event as ChangeEvent;\r\n // this was to prevent a max call stack error\r\n // https://github.com/tempusdominus/core/commit/15a280507f5277b31b0b3319ab1edc7c19a000fb\r\n // todo see if this is still needed or if there's a cleaner way\r\n this._notifyChangeEventContext++;\r\n if (\r\n (date && oldDate && date.isSame(oldDate)) ||\r\n (!isClear && !date && !oldDate) ||\r\n this._notifyChangeEventContext > 1\r\n ) {\r\n this._notifyChangeEventContext = 0;\r\n return;\r\n }\r\n this._handleAfterChangeEvent(event as ChangeEvent);\r\n }\r\n\r\n this._element.dispatchEvent(\r\n new CustomEvent(event.type, { detail: event as any })\r\n );\r\n\r\n if ((window as any).jQuery) {\r\n const $ = (window as any).jQuery;\r\n $(this._element).trigger(event);\r\n }\r\n\r\n const publish = () => {\r\n // return if event is not subscribed\r\n if (!Array.isArray(this._subscribers[event.type])) {\r\n return;\r\n }\r\n\r\n // Trigger callback for each subscriber\r\n this._subscribers[event.type].forEach((callback) => {\r\n callback(event);\r\n });\r\n };\r\n\r\n publish();\r\n\r\n this._notifyChangeEventContext = 0;\r\n }\r\n\r\n /**\r\n * Fires a ViewUpdate event when, for example, the month view is changed.\r\n * @param {Unit} unit\r\n * @private\r\n */\r\n _viewUpdate(unit: Unit) {\r\n this._triggerEvent({\r\n type: Namespace.events.update,\r\n change: unit,\r\n viewDate: this._viewDate.clone,\r\n } as ViewUpdateEvent);\r\n }\r\n\r\n private _unsubscribe(eventName, index) {\r\n this._subscribers[eventName].splice(index, 1);\r\n }\r\n\r\n /**\r\n * Merges two Option objects together and validates options type\r\n * @param config new Options\r\n * @param mergeTo Options to merge into\r\n * @param includeDataset When true, the elements data-td attributes will be included in the\r\n * @private\r\n */\r\n private _initializeOptions(\r\n config: Options,\r\n mergeTo: Options,\r\n includeDataset = false\r\n ): Options {\r\n config = OptionConverter._mergeOptions(config, mergeTo);\r\n if (includeDataset)\r\n config = OptionConverter._dataToOptions(this._element, config);\r\n\r\n OptionConverter._validateConflcits(config);\r\n\r\n config.viewDate = config.viewDate.setLocale(config.localization.locale);\r\n\r\n if (!this._viewDate.isSame(config.viewDate)) {\r\n this._viewDate = config.viewDate;\r\n }\r\n\r\n /**\r\n * Sets the minimum view allowed by the picker. For example the case of only\r\n * allowing year and month to be selected but not date.\r\n */\r\n if (config.display.components.year) {\r\n this._minViewModeNumber = 2;\r\n }\r\n if (config.display.components.month) {\r\n this._minViewModeNumber = 1;\r\n }\r\n if (config.display.components.date) {\r\n this._minViewModeNumber = 0;\r\n }\r\n\r\n this._currentViewMode = Math.max(\r\n this._minViewModeNumber,\r\n this._currentViewMode\r\n );\r\n\r\n // Update view mode if needed\r\n if (\r\n DatePickerModes[this._currentViewMode].name !== config.display.viewMode\r\n ) {\r\n this._currentViewMode = Math.max(\r\n DatePickerModes.findIndex((x) => x.name === config.display.viewMode),\r\n this._minViewModeNumber\r\n );\r\n }\r\n\r\n // defaults the input format based on the components enabled\r\n if (config.hooks.inputFormat === undefined) {\r\n const components = config.display.components;\r\n config.hooks.inputFormat = (_, date: DateTime) => {\r\n return date.format({\r\n year: components.calendar && components.year ? 'numeric' : undefined,\r\n month:\r\n components.calendar && components.month ? '2-digit' : undefined,\r\n day: components.calendar && components.date ? '2-digit' : undefined,\r\n hour:\r\n components.clock && components.hours\r\n ? components.useTwentyfourHour\r\n ? '2-digit'\r\n : 'numeric'\r\n : undefined,\r\n minute:\r\n components.clock && components.minutes ? '2-digit' : undefined,\r\n second:\r\n components.clock && components.seconds ? '2-digit' : undefined,\r\n hour12: !components.useTwentyfourHour,\r\n });\r\n };\r\n }\r\n\r\n if (this._display?.isVisible) {\r\n this._display._update('all');\r\n }\r\n\r\n return config;\r\n }\r\n\r\n /**\r\n * Checks if an input field is being used, attempts to locate one and sets an\r\n * event listener if found.\r\n * @private\r\n */\r\n private _initializeInput() {\r\n\r\n if (this._element.tagName == 'INPUT') {\r\n this._input = this._element as HTMLInputElement;\r\n } else {\r\n let query = this._element.dataset.tdTargetInput;\r\n if (query == undefined || query == 'nearest') {\r\n this._input = this._element.querySelector('input');\r\n } else {\r\n this._input = this._element.querySelector(query);\r\n }\r\n }\r\n\r\n if (!this._input) return;\r\n\r\n this._input.addEventListener('change', this._inputChangeEvent);\r\n if (this._options.allowInputToggle) {\r\n this._input.addEventListener('click', this._toggleClickEvent);\r\n }\r\n\r\n if (this._input.value) {\r\n this._inputChangeEvent();\r\n }\r\n }\r\n\r\n /**\r\n * Attempts to locate a toggle for the picker and sets an event listener\r\n * @private\r\n */\r\n private _initializeToggle() {\r\n if (this._options.display.inline) return;\r\n let query = this._element.dataset.tdTargetToggle;\r\n if (query == 'nearest') {\r\n query = '[data-td-toggle=\"datetimepicker\"]';\r\n }\r\n this._toggle =\r\n query == undefined ? this._element : this._element.querySelector(query);\r\n this._toggle.addEventListener('click', this._toggleClickEvent);\r\n }\r\n\r\n /**\r\n * If the option is enabled this will render the clock view after a date pick.\r\n * @param e change event\r\n * @private\r\n */\r\n private _handleAfterChangeEvent(e: ChangeEvent) {\r\n if (\r\n // options is disabled\r\n !this._options.promptTimeOnDateChange ||\r\n this._options.display.inline ||\r\n this._options.display.sideBySide ||\r\n // time is disabled\r\n !this._display._hasTime ||\r\n // clock component is already showing\r\n this._display.widget\r\n ?.getElementsByClassName(Namespace.css.show)[0]\r\n .classList.contains(Namespace.css.timeContainer)\r\n )\r\n return;\r\n\r\n // First time ever. If useCurrent option is set to true (default), do nothing\r\n // because the first date is selected automatically.\r\n // or date didn't change (time did) or date changed because time did.\r\n if (\r\n (!e.oldDate && this._options.useCurrent) ||\r\n (e.oldDate && e.date?.isSame(e.oldDate))\r\n ) {\r\n return;\r\n }\r\n\r\n clearTimeout(this._currentPromptTimeTimeout);\r\n this._currentPromptTimeTimeout = setTimeout(() => {\r\n if (this._display.widget) {\r\n this._action.do(\r\n {\r\n currentTarget: this._display.widget.querySelector(\r\n `.${Namespace.css.switch} div`\r\n ),\r\n },\r\n ActionTypes.togglePicker\r\n );\r\n }\r\n }, this._options.promptTimeOnDateChangeTransitionDelay);\r\n }\r\n\r\n /**\r\n * Event for when the input field changes. This is a class level method so there's\r\n * something for the remove listener function.\r\n * @private\r\n */\r\n private _inputChangeEvent = () => {\r\n const setViewDate = () => {\r\n if (this.dates.lastPicked) this._viewDate = this.dates.lastPicked;\r\n };\r\n\r\n const value = this._input.value;\r\n if (this._options.multipleDates) {\r\n try {\r\n const valueSplit = value.split(this._options.multipleDatesSeparator);\r\n for (let i = 0; i < valueSplit.length; i++) {\r\n if (this._options.hooks.inputParse) {\r\n this.dates.set(\r\n this._options.hooks.inputParse(this, valueSplit[i]),\r\n i,\r\n 'input'\r\n );\r\n } else {\r\n this.dates.set(valueSplit[i], i, 'input');\r\n }\r\n }\r\n setViewDate();\r\n } catch {\r\n console.warn(\r\n 'TD: Something went wrong trying to set the multidate values from the input field.'\r\n );\r\n }\r\n } else {\r\n if (this._options.hooks.inputParse) {\r\n this.dates.set(this._options.hooks.inputParse(this, value), 0, 'input');\r\n } else {\r\n this.dates.set(value, 0, 'input');\r\n }\r\n setViewDate();\r\n }\r\n };\r\n\r\n /**\r\n * Event for when the toggle is clicked. This is a class level method so there's\r\n * something for the remove listener function.\r\n * @private\r\n */\r\n private _toggleClickEvent = () => {\r\n this.toggle();\r\n };\r\n}\r\n\r\nexport {\r\n TempusDominus,\r\n Namespace,\r\n DefaultOptions,\r\n DateTime,\r\n Options,\r\n Unit,\r\n DateTimeFormatOptions,\r\n};\r\n"],"names":["Unit","SecondDisplay","createPopper"],"mappings":"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"} \ No newline at end of file From 5fc9ffc62239d85727431a7323e2a92ee9a8d60d Mon Sep 17 00:00:00 2001 From: Eonasdan Date: Sun, 10 Oct 2021 11:06:17 -0400 Subject: [PATCH 8/8] update version --- README.md | 2 +- dist/css/tempus-dominus.css | 5 + dist/js/jQuery-provider.js | 2 +- dist/js/tempus-dominus.esm.js | 2 +- dist/js/tempus-dominus.js | 2 +- docs/6/css/tempus-dominus.css | 5 + docs/6/js/jQuery-provider.js | 2 +- docs/6/js/tempus-dominus.esm.js | 2 +- docs/6/js/tempus-dominus.js | 2 +- docs/css/style.min.css | 10750 ---------------------------- package-lock.json | 471 +- package.json | 5 +- src/docs/partials/change-log.html | 2 +- src/docs/partials/installing.html | 4 +- src/docs/templates/index.html | 2 +- src/js/jQuery-provider.js | 2 +- 16 files changed, 425 insertions(+), 10835 deletions(-) delete mode 100644 docs/css/style.min.css diff --git a/README.md b/README.md index 42c722fa5..82c745c1f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/R6R53OEFF) -# Tempus Dominus Date/Time Picker v6.0.0-alpha1.0.13 +# Tempus Dominus Date/Time Picker v6.0.0-alpha14 Tempus Dominus is a powerful and robust date time picker for javascript. Version 6 is another major rewrite over the previous version. V6 is written with modern browsers in mind and is written in typescript. Bootstrap, momentjs and jQuery are no longer required dependencies. Popper2 is all that is required for the picker to position correctly. If you still require jQuery (seriously, you should move off that asap) there's a jQuery provider that wraps the native js functions. diff --git a/dist/css/tempus-dominus.css b/dist/css/tempus-dominus.css index 637480dc0..e63f0fbfd 100644 --- a/dist/css/tempus-dominus.css +++ b/dist/css/tempus-dominus.css @@ -1,3 +1,8 @@ +/*! + * Tempus Dominus v6.0.0-alpha14 (https://getdatepicker.com/) + * Copyright 2013-2021 [object Object] + * Licensed under MIT (https://github.com/Eonasdan/tempus-dominus/blob/master/LICENSE) + */ /* todo look at how bootstrap loops through their vars to make a --root section */ diff --git a/dist/js/jQuery-provider.js b/dist/js/jQuery-provider.js index fcbf9c4ef..0f2830bfa 100644 --- a/dist/js/jQuery-provider.js +++ b/dist/js/jQuery-provider.js @@ -2,7 +2,7 @@ /*global $ */ /*! - * Tempus Dominus v6.0.0-alpha1.0.13 (https://getdatepicker.com/) + * Tempus Dominus v6.0.0-alpha14 (https://getdatepicker.com/) * Copyright 2013-2021 [object Object] * Licensed under MIT (https://github.com/Eonasdan/tempus-dominus/blob/master/LICENSE) */ diff --git a/dist/js/tempus-dominus.esm.js b/dist/js/tempus-dominus.esm.js index 33f56b7cc..24b9915c9 100644 --- a/dist/js/tempus-dominus.esm.js +++ b/dist/js/tempus-dominus.esm.js @@ -1,5 +1,5 @@ /*! - * Tempus Dominus v6.0.0-alpha1.0.13 (https://getdatepicker.com/) + * Tempus Dominus v6.0.0-alpha14 (https://getdatepicker.com/) * Copyright 2013-2021 [object Object] * Licensed under MIT (https://github.com/Eonasdan/tempus-dominus/blob/master/LICENSE) */ diff --git a/dist/js/tempus-dominus.js b/dist/js/tempus-dominus.js index bee2e455c..2e7b5563f 100644 --- a/dist/js/tempus-dominus.js +++ b/dist/js/tempus-dominus.js @@ -1,5 +1,5 @@ /*! - * Tempus Dominus v6.0.0-alpha1.0.13 (https://getdatepicker.com/) + * Tempus Dominus v6.0.0-alpha14 (https://getdatepicker.com/) * Copyright 2013-2021 [object Object] * Licensed under MIT (https://github.com/Eonasdan/tempus-dominus/blob/master/LICENSE) */ diff --git a/docs/6/css/tempus-dominus.css b/docs/6/css/tempus-dominus.css index 637480dc0..e63f0fbfd 100644 --- a/docs/6/css/tempus-dominus.css +++ b/docs/6/css/tempus-dominus.css @@ -1,3 +1,8 @@ +/*! + * Tempus Dominus v6.0.0-alpha14 (https://getdatepicker.com/) + * Copyright 2013-2021 [object Object] + * Licensed under MIT (https://github.com/Eonasdan/tempus-dominus/blob/master/LICENSE) + */ /* todo look at how bootstrap loops through their vars to make a --root section */ diff --git a/docs/6/js/jQuery-provider.js b/docs/6/js/jQuery-provider.js index fcbf9c4ef..0f2830bfa 100644 --- a/docs/6/js/jQuery-provider.js +++ b/docs/6/js/jQuery-provider.js @@ -2,7 +2,7 @@ /*global $ */ /*! - * Tempus Dominus v6.0.0-alpha1.0.13 (https://getdatepicker.com/) + * Tempus Dominus v6.0.0-alpha14 (https://getdatepicker.com/) * Copyright 2013-2021 [object Object] * Licensed under MIT (https://github.com/Eonasdan/tempus-dominus/blob/master/LICENSE) */ diff --git a/docs/6/js/tempus-dominus.esm.js b/docs/6/js/tempus-dominus.esm.js index 33f56b7cc..24b9915c9 100644 --- a/docs/6/js/tempus-dominus.esm.js +++ b/docs/6/js/tempus-dominus.esm.js @@ -1,5 +1,5 @@ /*! - * Tempus Dominus v6.0.0-alpha1.0.13 (https://getdatepicker.com/) + * Tempus Dominus v6.0.0-alpha14 (https://getdatepicker.com/) * Copyright 2013-2021 [object Object] * Licensed under MIT (https://github.com/Eonasdan/tempus-dominus/blob/master/LICENSE) */ diff --git a/docs/6/js/tempus-dominus.js b/docs/6/js/tempus-dominus.js index bee2e455c..2e7b5563f 100644 --- a/docs/6/js/tempus-dominus.js +++ b/docs/6/js/tempus-dominus.js @@ -1,5 +1,5 @@ /*! - * Tempus Dominus v6.0.0-alpha1.0.13 (https://getdatepicker.com/) + * Tempus Dominus v6.0.0-alpha14 (https://getdatepicker.com/) * Copyright 2013-2021 [object Object] * Licensed under MIT (https://github.com/Eonasdan/tempus-dominus/blob/master/LICENSE) */ diff --git a/docs/css/style.min.css b/docs/css/style.min.css deleted file mode 100644 index 604199b1c..000000000 --- a/docs/css/style.min.css +++ /dev/null @@ -1,10750 +0,0 @@ -@charset "UTF-8"; -@import "https://fonts.googleapis.com/css?family=Roboto:300,400,500,700,900"; -/*! - * Bootstrap v5.0.2 (https://getbootstrap.com/) - * Copyright 2011-2021 The Bootstrap Authors - * Copyright 2011-2021 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -@import "docs.css"; -:root { - --bs-blue: #0d6efd; - --bs-indigo: #6610f2; - --bs-purple: #6f42c1; - --bs-pink: #d63384; - --bs-red: #dc3545; - --bs-orange: #fd7e14; - --bs-yellow: #ffc107; - --bs-green: #198754; - --bs-teal: #20c997; - --bs-cyan: #0dcaf0; - --bs-white: #fff; - --bs-gray: #6c757d; - --bs-gray-dark: #343a40; - --bs-primary: #0d6efd; - --bs-secondary: #6c757d; - --bs-success: #198754; - --bs-info: #0dcaf0; - --bs-warning: #ffc107; - --bs-danger: #dc3545; - --bs-light: #f8f9fa; - --bs-dark: #212529; - --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); -} - -*, -*::before, -*::after { - box-sizing: border-box; -} - -@media (prefers-reduced-motion: no-preference) { - :root { - scroll-behavior: smooth; - } -} - -body { - margin: 0; - font-family: var(--bs-font-sans-serif); - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #212529; - background-color: #fff; - -webkit-text-size-adjust: 100%; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} - -hr { - margin: 1rem 0; - color: inherit; - background-color: currentColor; - border: 0; - opacity: 0.25; -} - -hr:not([size]) { - height: 1px; -} - -h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 { - margin-top: 0; - margin-bottom: 0.5rem; - font-weight: 500; - line-height: 1.2; -} - -h1, .h1 { - font-size: calc(1.375rem + 1.5vw); -} -@media (min-width: 1200px) { - h1, .h1 { - font-size: 2.5rem; - } -} - -h2, .h2 { - font-size: calc(1.325rem + 0.9vw); -} -@media (min-width: 1200px) { - h2, .h2 { - font-size: 2rem; - } -} - -h3, .h3 { - font-size: calc(1.3rem + 0.6vw); -} -@media (min-width: 1200px) { - h3, .h3 { - font-size: 1.75rem; - } -} - -h4, .h4 { - font-size: calc(1.275rem + 0.3vw); -} -@media (min-width: 1200px) { - h4, .h4 { - font-size: 1.5rem; - } -} - -h5, .h5 { - font-size: 1.25rem; -} - -h6, .h6 { - font-size: 1rem; -} - -p { - margin-top: 0; - margin-bottom: 1rem; -} - -abbr[title], -abbr[data-bs-original-title] { - text-decoration: underline dotted; - cursor: help; - text-decoration-skip-ink: none; -} - -address { - margin-bottom: 1rem; - font-style: normal; - line-height: inherit; -} - -ol, -ul { - padding-left: 2rem; -} - -ol, -ul, -dl { - margin-top: 0; - margin-bottom: 1rem; -} - -ol ol, -ul ul, -ol ul, -ul ol { - margin-bottom: 0; -} - -dt { - font-weight: 700; -} - -dd { - margin-bottom: 0.5rem; - margin-left: 0; -} - -blockquote { - margin: 0 0 1rem; -} - -b, -strong { - font-weight: bolder; -} - -small, .small { - font-size: 0.875em; -} - -mark, .mark { - padding: 0.2em; - background-color: #fcf8e3; -} - -sub, -sup { - position: relative; - font-size: 0.75em; - line-height: 0; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -a { - color: #0d6efd; - text-decoration: underline; -} -a:hover { - color: #0a58ca; -} - -a:not([href]):not([class]), a:not([href]):not([class]):hover { - color: inherit; - text-decoration: none; -} - -pre, -code, -kbd, -samp { - font-family: var(--bs-font-monospace); - font-size: 1em; - direction: ltr /* rtl:ignore */; - unicode-bidi: bidi-override; -} - -pre { - display: block; - margin-top: 0; - margin-bottom: 1rem; - overflow: auto; - font-size: 0.875em; -} -pre code { - font-size: inherit; - color: inherit; - word-break: normal; -} - -code { - font-size: 0.875em; - color: #d63384; - word-wrap: break-word; -} -a > code { - color: inherit; -} - -kbd { - padding: 0.2rem 0.4rem; - font-size: 0.875em; - color: #fff; - background-color: #212529; - border-radius: 0.2rem; -} -kbd kbd { - padding: 0; - font-size: 1em; - font-weight: 700; -} - -figure { - margin: 0 0 1rem; -} - -img, -svg { - vertical-align: middle; -} - -table { - caption-side: bottom; - border-collapse: collapse; -} - -caption { - padding-top: 0.5rem; - padding-bottom: 0.5rem; - color: #6c757d; - text-align: left; -} - -th { - text-align: inherit; - text-align: -webkit-match-parent; -} - -thead, -tbody, -tfoot, -tr, -td, -th { - border-color: inherit; - border-style: solid; - border-width: 0; -} - -label { - display: inline-block; -} - -button { - border-radius: 0; -} - -button:focus:not(:focus-visible) { - outline: 0; -} - -input, -button, -select, -optgroup, -textarea { - margin: 0; - font-family: inherit; - font-size: inherit; - line-height: inherit; -} - -button, -select { - text-transform: none; -} - -[role=button] { - cursor: pointer; -} - -select { - word-wrap: normal; -} -select:disabled { - opacity: 1; -} - -[list]::-webkit-calendar-picker-indicator { - display: none; -} - -button, -[type=button], -[type=reset], -[type=submit] { - -webkit-appearance: button; -} -button:not(:disabled), -[type=button]:not(:disabled), -[type=reset]:not(:disabled), -[type=submit]:not(:disabled) { - cursor: pointer; -} - -::-moz-focus-inner { - padding: 0; - border-style: none; -} - -textarea { - resize: vertical; -} - -fieldset { - min-width: 0; - padding: 0; - margin: 0; - border: 0; -} - -legend { - float: left; - width: 100%; - padding: 0; - margin-bottom: 0.5rem; - font-size: calc(1.275rem + 0.3vw); - line-height: inherit; -} -@media (min-width: 1200px) { - legend { - font-size: 1.5rem; - } -} -legend + * { - clear: left; -} - -::-webkit-datetime-edit-fields-wrapper, -::-webkit-datetime-edit-text, -::-webkit-datetime-edit-minute, -::-webkit-datetime-edit-hour-field, -::-webkit-datetime-edit-day-field, -::-webkit-datetime-edit-month-field, -::-webkit-datetime-edit-year-field { - padding: 0; -} - -::-webkit-inner-spin-button { - height: auto; -} - -[type=search] { - outline-offset: -2px; - -webkit-appearance: textfield; -} - -/* rtl:raw: -[type="tel"], -[type="url"], -[type="email"], -[type="number"] { - direction: ltr; -} -*/ -::-webkit-search-decoration { - -webkit-appearance: none; -} - -::-webkit-color-swatch-wrapper { - padding: 0; -} - -::file-selector-button { - font: inherit; -} - -::-webkit-file-upload-button { - font: inherit; - -webkit-appearance: button; -} - -output { - display: inline-block; -} - -iframe { - border: 0; -} - -summary { - display: list-item; - cursor: pointer; -} - -progress { - vertical-align: baseline; -} - -[hidden] { - display: none !important; -} - -.lead { - font-size: 1.25rem; - font-weight: 300; -} - -.display-1 { - font-size: calc(1.625rem + 4.5vw); - font-weight: 300; - line-height: 1.2; -} -@media (min-width: 1200px) { - .display-1 { - font-size: 5rem; - } -} - -.display-2 { - font-size: calc(1.575rem + 3.9vw); - font-weight: 300; - line-height: 1.2; -} -@media (min-width: 1200px) { - .display-2 { - font-size: 4.5rem; - } -} - -.display-3 { - font-size: calc(1.525rem + 3.3vw); - font-weight: 300; - line-height: 1.2; -} -@media (min-width: 1200px) { - .display-3 { - font-size: 4rem; - } -} - -.display-4 { - font-size: calc(1.475rem + 2.7vw); - font-weight: 300; - line-height: 1.2; -} -@media (min-width: 1200px) { - .display-4 { - font-size: 3.5rem; - } -} - -.display-5 { - font-size: calc(1.425rem + 2.1vw); - font-weight: 300; - line-height: 1.2; -} -@media (min-width: 1200px) { - .display-5 { - font-size: 3rem; - } -} - -.display-6 { - font-size: calc(1.375rem + 1.5vw); - font-weight: 300; - line-height: 1.2; -} -@media (min-width: 1200px) { - .display-6 { - font-size: 2.5rem; - } -} - -.list-unstyled { - padding-left: 0; - list-style: none; -} - -.list-inline { - padding-left: 0; - list-style: none; -} - -.list-inline-item { - display: inline-block; -} -.list-inline-item:not(:last-child) { - margin-right: 0.5rem; -} - -.initialism { - font-size: 0.875em; - text-transform: uppercase; -} - -.blockquote { - margin-bottom: 1rem; - font-size: 1.25rem; -} -.blockquote > :last-child { - margin-bottom: 0; -} - -.blockquote-footer { - margin-top: -1rem; - margin-bottom: 1rem; - font-size: 0.875em; - color: #6c757d; -} -.blockquote-footer::before { - content: "— "; -} - -.img-fluid { - max-width: 100%; - height: auto; -} - -.img-thumbnail { - padding: 0.25rem; - background-color: #fff; - border: 1px solid #dee2e6; - border-radius: 0.25rem; - max-width: 100%; - height: auto; -} - -.figure { - display: inline-block; -} - -.figure-img { - margin-bottom: 0.5rem; - line-height: 1; -} - -.figure-caption { - font-size: 0.875em; - color: #6c757d; -} - -.container, -.container-fluid, -.container-xxl, -.container-xl, -.container-lg, -.container-md, -.container-sm { - width: 100%; - padding-right: var(--bs-gutter-x, 0.75rem); - padding-left: var(--bs-gutter-x, 0.75rem); - margin-right: auto; - margin-left: auto; -} - -@media (min-width: 576px) { - .container-sm, .container { - max-width: 540px; - } -} -@media (min-width: 768px) { - .container-md, .container-sm, .container { - max-width: 720px; - } -} -@media (min-width: 992px) { - .container-lg, .container-md, .container-sm, .container { - max-width: 960px; - } -} -@media (min-width: 1200px) { - .container-xl, .container-lg, .container-md, .container-sm, .container { - max-width: 1140px; - } -} -@media (min-width: 1400px) { - .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container { - max-width: 1320px; - } -} -.row { - --bs-gutter-x: 1.5rem; - --bs-gutter-y: 0; - display: flex; - flex-wrap: wrap; - margin-top: calc(var(--bs-gutter-y) * -1); - margin-right: calc(var(--bs-gutter-x) * -.5); - margin-left: calc(var(--bs-gutter-x) * -.5); -} -.row > * { - flex-shrink: 0; - width: 100%; - max-width: 100%; - padding-right: calc(var(--bs-gutter-x) * .5); - padding-left: calc(var(--bs-gutter-x) * .5); - margin-top: var(--bs-gutter-y); -} - -.col { - flex: 1 0 0%; -} - -.row-cols-auto > * { - flex: 0 0 auto; - width: auto; -} - -.row-cols-1 > * { - flex: 0 0 auto; - width: 100%; -} - -.row-cols-2 > * { - flex: 0 0 auto; - width: 50%; -} - -.row-cols-3 > * { - flex: 0 0 auto; - width: 33.3333333333%; -} - -.row-cols-4 > * { - flex: 0 0 auto; - width: 25%; -} - -.row-cols-5 > * { - flex: 0 0 auto; - width: 20%; -} - -.row-cols-6 > * { - flex: 0 0 auto; - width: 16.6666666667%; -} - -@media (min-width: 576px) { - .col-sm { - flex: 1 0 0%; - } - - .row-cols-sm-auto > * { - flex: 0 0 auto; - width: auto; - } - - .row-cols-sm-1 > * { - flex: 0 0 auto; - width: 100%; - } - - .row-cols-sm-2 > * { - flex: 0 0 auto; - width: 50%; - } - - .row-cols-sm-3 > * { - flex: 0 0 auto; - width: 33.3333333333%; - } - - .row-cols-sm-4 > * { - flex: 0 0 auto; - width: 25%; - } - - .row-cols-sm-5 > * { - flex: 0 0 auto; - width: 20%; - } - - .row-cols-sm-6 > * { - flex: 0 0 auto; - width: 16.6666666667%; - } -} -@media (min-width: 768px) { - .col-md { - flex: 1 0 0%; - } - - .row-cols-md-auto > * { - flex: 0 0 auto; - width: auto; - } - - .row-cols-md-1 > * { - flex: 0 0 auto; - width: 100%; - } - - .row-cols-md-2 > * { - flex: 0 0 auto; - width: 50%; - } - - .row-cols-md-3 > * { - flex: 0 0 auto; - width: 33.3333333333%; - } - - .row-cols-md-4 > * { - flex: 0 0 auto; - width: 25%; - } - - .row-cols-md-5 > * { - flex: 0 0 auto; - width: 20%; - } - - .row-cols-md-6 > * { - flex: 0 0 auto; - width: 16.6666666667%; - } -} -@media (min-width: 992px) { - .col-lg { - flex: 1 0 0%; - } - - .row-cols-lg-auto > * { - flex: 0 0 auto; - width: auto; - } - - .row-cols-lg-1 > * { - flex: 0 0 auto; - width: 100%; - } - - .row-cols-lg-2 > * { - flex: 0 0 auto; - width: 50%; - } - - .row-cols-lg-3 > * { - flex: 0 0 auto; - width: 33.3333333333%; - } - - .row-cols-lg-4 > * { - flex: 0 0 auto; - width: 25%; - } - - .row-cols-lg-5 > * { - flex: 0 0 auto; - width: 20%; - } - - .row-cols-lg-6 > * { - flex: 0 0 auto; - width: 16.6666666667%; - } -} -@media (min-width: 1200px) { - .col-xl { - flex: 1 0 0%; - } - - .row-cols-xl-auto > * { - flex: 0 0 auto; - width: auto; - } - - .row-cols-xl-1 > * { - flex: 0 0 auto; - width: 100%; - } - - .row-cols-xl-2 > * { - flex: 0 0 auto; - width: 50%; - } - - .row-cols-xl-3 > * { - flex: 0 0 auto; - width: 33.3333333333%; - } - - .row-cols-xl-4 > * { - flex: 0 0 auto; - width: 25%; - } - - .row-cols-xl-5 > * { - flex: 0 0 auto; - width: 20%; - } - - .row-cols-xl-6 > * { - flex: 0 0 auto; - width: 16.6666666667%; - } -} -@media (min-width: 1400px) { - .col-xxl { - flex: 1 0 0%; - } - - .row-cols-xxl-auto > * { - flex: 0 0 auto; - width: auto; - } - - .row-cols-xxl-1 > * { - flex: 0 0 auto; - width: 100%; - } - - .row-cols-xxl-2 > * { - flex: 0 0 auto; - width: 50%; - } - - .row-cols-xxl-3 > * { - flex: 0 0 auto; - width: 33.3333333333%; - } - - .row-cols-xxl-4 > * { - flex: 0 0 auto; - width: 25%; - } - - .row-cols-xxl-5 > * { - flex: 0 0 auto; - width: 20%; - } - - .row-cols-xxl-6 > * { - flex: 0 0 auto; - width: 16.6666666667%; - } -} -.col-auto { - flex: 0 0 auto; - width: auto; -} - -.col-1 { - flex: 0 0 auto; - width: 8.33333333%; -} - -.col-2 { - flex: 0 0 auto; - width: 16.66666667%; -} - -.col-3 { - flex: 0 0 auto; - width: 25%; -} - -.col-4 { - flex: 0 0 auto; - width: 33.33333333%; -} - -.col-5 { - flex: 0 0 auto; - width: 41.66666667%; -} - -.col-6 { - flex: 0 0 auto; - width: 50%; -} - -.col-7 { - flex: 0 0 auto; - width: 58.33333333%; -} - -.col-8 { - flex: 0 0 auto; - width: 66.66666667%; -} - -.col-9 { - flex: 0 0 auto; - width: 75%; -} - -.col-10 { - flex: 0 0 auto; - width: 83.33333333%; -} - -.col-11 { - flex: 0 0 auto; - width: 91.66666667%; -} - -.col-12 { - flex: 0 0 auto; - width: 100%; -} - -.offset-1 { - margin-left: 8.33333333%; -} - -.offset-2 { - margin-left: 16.66666667%; -} - -.offset-3 { - margin-left: 25%; -} - -.offset-4 { - margin-left: 33.33333333%; -} - -.offset-5 { - margin-left: 41.66666667%; -} - -.offset-6 { - margin-left: 50%; -} - -.offset-7 { - margin-left: 58.33333333%; -} - -.offset-8 { - margin-left: 66.66666667%; -} - -.offset-9 { - margin-left: 75%; -} - -.offset-10 { - margin-left: 83.33333333%; -} - -.offset-11 { - margin-left: 91.66666667%; -} - -.g-0, -.gx-0 { - --bs-gutter-x: 0; -} - -.g-0, -.gy-0 { - --bs-gutter-y: 0; -} - -.g-1, -.gx-1 { - --bs-gutter-x: 0.25rem; -} - -.g-1, -.gy-1 { - --bs-gutter-y: 0.25rem; -} - -.g-2, -.gx-2 { - --bs-gutter-x: 0.5rem; -} - -.g-2, -.gy-2 { - --bs-gutter-y: 0.5rem; -} - -.g-3, -.gx-3 { - --bs-gutter-x: 1rem; -} - -.g-3, -.gy-3 { - --bs-gutter-y: 1rem; -} - -.g-4, -.gx-4 { - --bs-gutter-x: 1.5rem; -} - -.g-4, -.gy-4 { - --bs-gutter-y: 1.5rem; -} - -.g-5, -.gx-5 { - --bs-gutter-x: 3rem; -} - -.g-5, -.gy-5 { - --bs-gutter-y: 3rem; -} - -@media (min-width: 576px) { - .col-sm-auto { - flex: 0 0 auto; - width: auto; - } - - .col-sm-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - - .col-sm-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - - .col-sm-3 { - flex: 0 0 auto; - width: 25%; - } - - .col-sm-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - - .col-sm-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - - .col-sm-6 { - flex: 0 0 auto; - width: 50%; - } - - .col-sm-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - - .col-sm-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - - .col-sm-9 { - flex: 0 0 auto; - width: 75%; - } - - .col-sm-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - - .col-sm-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - - .col-sm-12 { - flex: 0 0 auto; - width: 100%; - } - - .offset-sm-0 { - margin-left: 0; - } - - .offset-sm-1 { - margin-left: 8.33333333%; - } - - .offset-sm-2 { - margin-left: 16.66666667%; - } - - .offset-sm-3 { - margin-left: 25%; - } - - .offset-sm-4 { - margin-left: 33.33333333%; - } - - .offset-sm-5 { - margin-left: 41.66666667%; - } - - .offset-sm-6 { - margin-left: 50%; - } - - .offset-sm-7 { - margin-left: 58.33333333%; - } - - .offset-sm-8 { - margin-left: 66.66666667%; - } - - .offset-sm-9 { - margin-left: 75%; - } - - .offset-sm-10 { - margin-left: 83.33333333%; - } - - .offset-sm-11 { - margin-left: 91.66666667%; - } - - .g-sm-0, -.gx-sm-0 { - --bs-gutter-x: 0; - } - - .g-sm-0, -.gy-sm-0 { - --bs-gutter-y: 0; - } - - .g-sm-1, -.gx-sm-1 { - --bs-gutter-x: 0.25rem; - } - - .g-sm-1, -.gy-sm-1 { - --bs-gutter-y: 0.25rem; - } - - .g-sm-2, -.gx-sm-2 { - --bs-gutter-x: 0.5rem; - } - - .g-sm-2, -.gy-sm-2 { - --bs-gutter-y: 0.5rem; - } - - .g-sm-3, -.gx-sm-3 { - --bs-gutter-x: 1rem; - } - - .g-sm-3, -.gy-sm-3 { - --bs-gutter-y: 1rem; - } - - .g-sm-4, -.gx-sm-4 { - --bs-gutter-x: 1.5rem; - } - - .g-sm-4, -.gy-sm-4 { - --bs-gutter-y: 1.5rem; - } - - .g-sm-5, -.gx-sm-5 { - --bs-gutter-x: 3rem; - } - - .g-sm-5, -.gy-sm-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 768px) { - .col-md-auto { - flex: 0 0 auto; - width: auto; - } - - .col-md-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - - .col-md-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - - .col-md-3 { - flex: 0 0 auto; - width: 25%; - } - - .col-md-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - - .col-md-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - - .col-md-6 { - flex: 0 0 auto; - width: 50%; - } - - .col-md-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - - .col-md-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - - .col-md-9 { - flex: 0 0 auto; - width: 75%; - } - - .col-md-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - - .col-md-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - - .col-md-12 { - flex: 0 0 auto; - width: 100%; - } - - .offset-md-0 { - margin-left: 0; - } - - .offset-md-1 { - margin-left: 8.33333333%; - } - - .offset-md-2 { - margin-left: 16.66666667%; - } - - .offset-md-3 { - margin-left: 25%; - } - - .offset-md-4 { - margin-left: 33.33333333%; - } - - .offset-md-5 { - margin-left: 41.66666667%; - } - - .offset-md-6 { - margin-left: 50%; - } - - .offset-md-7 { - margin-left: 58.33333333%; - } - - .offset-md-8 { - margin-left: 66.66666667%; - } - - .offset-md-9 { - margin-left: 75%; - } - - .offset-md-10 { - margin-left: 83.33333333%; - } - - .offset-md-11 { - margin-left: 91.66666667%; - } - - .g-md-0, -.gx-md-0 { - --bs-gutter-x: 0; - } - - .g-md-0, -.gy-md-0 { - --bs-gutter-y: 0; - } - - .g-md-1, -.gx-md-1 { - --bs-gutter-x: 0.25rem; - } - - .g-md-1, -.gy-md-1 { - --bs-gutter-y: 0.25rem; - } - - .g-md-2, -.gx-md-2 { - --bs-gutter-x: 0.5rem; - } - - .g-md-2, -.gy-md-2 { - --bs-gutter-y: 0.5rem; - } - - .g-md-3, -.gx-md-3 { - --bs-gutter-x: 1rem; - } - - .g-md-3, -.gy-md-3 { - --bs-gutter-y: 1rem; - } - - .g-md-4, -.gx-md-4 { - --bs-gutter-x: 1.5rem; - } - - .g-md-4, -.gy-md-4 { - --bs-gutter-y: 1.5rem; - } - - .g-md-5, -.gx-md-5 { - --bs-gutter-x: 3rem; - } - - .g-md-5, -.gy-md-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 992px) { - .col-lg-auto { - flex: 0 0 auto; - width: auto; - } - - .col-lg-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - - .col-lg-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - - .col-lg-3 { - flex: 0 0 auto; - width: 25%; - } - - .col-lg-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - - .col-lg-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - - .col-lg-6 { - flex: 0 0 auto; - width: 50%; - } - - .col-lg-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - - .col-lg-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - - .col-lg-9 { - flex: 0 0 auto; - width: 75%; - } - - .col-lg-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - - .col-lg-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - - .col-lg-12 { - flex: 0 0 auto; - width: 100%; - } - - .offset-lg-0 { - margin-left: 0; - } - - .offset-lg-1 { - margin-left: 8.33333333%; - } - - .offset-lg-2 { - margin-left: 16.66666667%; - } - - .offset-lg-3 { - margin-left: 25%; - } - - .offset-lg-4 { - margin-left: 33.33333333%; - } - - .offset-lg-5 { - margin-left: 41.66666667%; - } - - .offset-lg-6 { - margin-left: 50%; - } - - .offset-lg-7 { - margin-left: 58.33333333%; - } - - .offset-lg-8 { - margin-left: 66.66666667%; - } - - .offset-lg-9 { - margin-left: 75%; - } - - .offset-lg-10 { - margin-left: 83.33333333%; - } - - .offset-lg-11 { - margin-left: 91.66666667%; - } - - .g-lg-0, -.gx-lg-0 { - --bs-gutter-x: 0; - } - - .g-lg-0, -.gy-lg-0 { - --bs-gutter-y: 0; - } - - .g-lg-1, -.gx-lg-1 { - --bs-gutter-x: 0.25rem; - } - - .g-lg-1, -.gy-lg-1 { - --bs-gutter-y: 0.25rem; - } - - .g-lg-2, -.gx-lg-2 { - --bs-gutter-x: 0.5rem; - } - - .g-lg-2, -.gy-lg-2 { - --bs-gutter-y: 0.5rem; - } - - .g-lg-3, -.gx-lg-3 { - --bs-gutter-x: 1rem; - } - - .g-lg-3, -.gy-lg-3 { - --bs-gutter-y: 1rem; - } - - .g-lg-4, -.gx-lg-4 { - --bs-gutter-x: 1.5rem; - } - - .g-lg-4, -.gy-lg-4 { - --bs-gutter-y: 1.5rem; - } - - .g-lg-5, -.gx-lg-5 { - --bs-gutter-x: 3rem; - } - - .g-lg-5, -.gy-lg-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 1200px) { - .col-xl-auto { - flex: 0 0 auto; - width: auto; - } - - .col-xl-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - - .col-xl-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - - .col-xl-3 { - flex: 0 0 auto; - width: 25%; - } - - .col-xl-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - - .col-xl-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - - .col-xl-6 { - flex: 0 0 auto; - width: 50%; - } - - .col-xl-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - - .col-xl-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - - .col-xl-9 { - flex: 0 0 auto; - width: 75%; - } - - .col-xl-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - - .col-xl-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - - .col-xl-12 { - flex: 0 0 auto; - width: 100%; - } - - .offset-xl-0 { - margin-left: 0; - } - - .offset-xl-1 { - margin-left: 8.33333333%; - } - - .offset-xl-2 { - margin-left: 16.66666667%; - } - - .offset-xl-3 { - margin-left: 25%; - } - - .offset-xl-4 { - margin-left: 33.33333333%; - } - - .offset-xl-5 { - margin-left: 41.66666667%; - } - - .offset-xl-6 { - margin-left: 50%; - } - - .offset-xl-7 { - margin-left: 58.33333333%; - } - - .offset-xl-8 { - margin-left: 66.66666667%; - } - - .offset-xl-9 { - margin-left: 75%; - } - - .offset-xl-10 { - margin-left: 83.33333333%; - } - - .offset-xl-11 { - margin-left: 91.66666667%; - } - - .g-xl-0, -.gx-xl-0 { - --bs-gutter-x: 0; - } - - .g-xl-0, -.gy-xl-0 { - --bs-gutter-y: 0; - } - - .g-xl-1, -.gx-xl-1 { - --bs-gutter-x: 0.25rem; - } - - .g-xl-1, -.gy-xl-1 { - --bs-gutter-y: 0.25rem; - } - - .g-xl-2, -.gx-xl-2 { - --bs-gutter-x: 0.5rem; - } - - .g-xl-2, -.gy-xl-2 { - --bs-gutter-y: 0.5rem; - } - - .g-xl-3, -.gx-xl-3 { - --bs-gutter-x: 1rem; - } - - .g-xl-3, -.gy-xl-3 { - --bs-gutter-y: 1rem; - } - - .g-xl-4, -.gx-xl-4 { - --bs-gutter-x: 1.5rem; - } - - .g-xl-4, -.gy-xl-4 { - --bs-gutter-y: 1.5rem; - } - - .g-xl-5, -.gx-xl-5 { - --bs-gutter-x: 3rem; - } - - .g-xl-5, -.gy-xl-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 1400px) { - .col-xxl-auto { - flex: 0 0 auto; - width: auto; - } - - .col-xxl-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - - .col-xxl-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - - .col-xxl-3 { - flex: 0 0 auto; - width: 25%; - } - - .col-xxl-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - - .col-xxl-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - - .col-xxl-6 { - flex: 0 0 auto; - width: 50%; - } - - .col-xxl-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - - .col-xxl-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - - .col-xxl-9 { - flex: 0 0 auto; - width: 75%; - } - - .col-xxl-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - - .col-xxl-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - - .col-xxl-12 { - flex: 0 0 auto; - width: 100%; - } - - .offset-xxl-0 { - margin-left: 0; - } - - .offset-xxl-1 { - margin-left: 8.33333333%; - } - - .offset-xxl-2 { - margin-left: 16.66666667%; - } - - .offset-xxl-3 { - margin-left: 25%; - } - - .offset-xxl-4 { - margin-left: 33.33333333%; - } - - .offset-xxl-5 { - margin-left: 41.66666667%; - } - - .offset-xxl-6 { - margin-left: 50%; - } - - .offset-xxl-7 { - margin-left: 58.33333333%; - } - - .offset-xxl-8 { - margin-left: 66.66666667%; - } - - .offset-xxl-9 { - margin-left: 75%; - } - - .offset-xxl-10 { - margin-left: 83.33333333%; - } - - .offset-xxl-11 { - margin-left: 91.66666667%; - } - - .g-xxl-0, -.gx-xxl-0 { - --bs-gutter-x: 0; - } - - .g-xxl-0, -.gy-xxl-0 { - --bs-gutter-y: 0; - } - - .g-xxl-1, -.gx-xxl-1 { - --bs-gutter-x: 0.25rem; - } - - .g-xxl-1, -.gy-xxl-1 { - --bs-gutter-y: 0.25rem; - } - - .g-xxl-2, -.gx-xxl-2 { - --bs-gutter-x: 0.5rem; - } - - .g-xxl-2, -.gy-xxl-2 { - --bs-gutter-y: 0.5rem; - } - - .g-xxl-3, -.gx-xxl-3 { - --bs-gutter-x: 1rem; - } - - .g-xxl-3, -.gy-xxl-3 { - --bs-gutter-y: 1rem; - } - - .g-xxl-4, -.gx-xxl-4 { - --bs-gutter-x: 1.5rem; - } - - .g-xxl-4, -.gy-xxl-4 { - --bs-gutter-y: 1.5rem; - } - - .g-xxl-5, -.gx-xxl-5 { - --bs-gutter-x: 3rem; - } - - .g-xxl-5, -.gy-xxl-5 { - --bs-gutter-y: 3rem; - } -} -.table { - --bs-table-bg: transparent; - --bs-table-accent-bg: transparent; - --bs-table-striped-color: #212529; - --bs-table-striped-bg: rgba(0, 0, 0, 0.05); - --bs-table-active-color: #212529; - --bs-table-active-bg: rgba(0, 0, 0, 0.1); - --bs-table-hover-color: #212529; - --bs-table-hover-bg: rgba(0, 0, 0, 0.075); - width: 100%; - margin-bottom: 1rem; - color: #212529; - vertical-align: top; - border-color: #dee2e6; -} -.table > :not(caption) > * > * { - padding: 0.5rem 0.5rem; - background-color: var(--bs-table-bg); - border-bottom-width: 1px; - box-shadow: inset 0 0 0 9999px var(--bs-table-accent-bg); -} -.table > tbody { - vertical-align: inherit; -} -.table > thead { - vertical-align: bottom; -} -.table > :not(:last-child) > :last-child > * { - border-bottom-color: currentColor; -} - -.caption-top { - caption-side: top; -} - -.table-sm > :not(caption) > * > * { - padding: 0.25rem 0.25rem; -} - -.table-bordered > :not(caption) > * { - border-width: 1px 0; -} -.table-bordered > :not(caption) > * > * { - border-width: 0 1px; -} - -.table-borderless > :not(caption) > * > * { - border-bottom-width: 0; -} - -.table-striped > tbody > tr:nth-of-type(odd) { - --bs-table-accent-bg: var(--bs-table-striped-bg); - color: var(--bs-table-striped-color); -} - -.table-active { - --bs-table-accent-bg: var(--bs-table-active-bg); - color: var(--bs-table-active-color); -} - -.table-hover > tbody > tr:hover { - --bs-table-accent-bg: var(--bs-table-hover-bg); - color: var(--bs-table-hover-color); -} - -.table-primary { - --bs-table-bg: #cfe2ff; - --bs-table-striped-bg: #c5d7f2; - --bs-table-striped-color: #000; - --bs-table-active-bg: #bacbe6; - --bs-table-active-color: #000; - --bs-table-hover-bg: #bfd1ec; - --bs-table-hover-color: #000; - color: #000; - border-color: #bacbe6; -} - -.table-secondary { - --bs-table-bg: #e2e3e5; - --bs-table-striped-bg: #d7d8da; - --bs-table-striped-color: #000; - --bs-table-active-bg: #cbccce; - --bs-table-active-color: #000; - --bs-table-hover-bg: #d1d2d4; - --bs-table-hover-color: #000; - color: #000; - border-color: #cbccce; -} - -.table-success { - --bs-table-bg: #d1e7dd; - --bs-table-striped-bg: #c7dbd2; - --bs-table-striped-color: #000; - --bs-table-active-bg: #bcd0c7; - --bs-table-active-color: #000; - --bs-table-hover-bg: #c1d6cc; - --bs-table-hover-color: #000; - color: #000; - border-color: #bcd0c7; -} - -.table-info { - --bs-table-bg: #cff4fc; - --bs-table-striped-bg: #c5e8ef; - --bs-table-striped-color: #000; - --bs-table-active-bg: #badce3; - --bs-table-active-color: #000; - --bs-table-hover-bg: #bfe2e9; - --bs-table-hover-color: #000; - color: #000; - border-color: #badce3; -} - -.table-warning { - --bs-table-bg: #fff3cd; - --bs-table-striped-bg: #f2e7c3; - --bs-table-striped-color: #000; - --bs-table-active-bg: #e6dbb9; - --bs-table-active-color: #000; - --bs-table-hover-bg: #ece1be; - --bs-table-hover-color: #000; - color: #000; - border-color: #e6dbb9; -} - -.table-danger { - --bs-table-bg: #f8d7da; - --bs-table-striped-bg: #eccccf; - --bs-table-striped-color: #000; - --bs-table-active-bg: #dfc2c4; - --bs-table-active-color: #000; - --bs-table-hover-bg: #e5c7ca; - --bs-table-hover-color: #000; - color: #000; - border-color: #dfc2c4; -} - -.table-light { - --bs-table-bg: #f8f9fa; - --bs-table-striped-bg: #ecedee; - --bs-table-striped-color: #000; - --bs-table-active-bg: #dfe0e1; - --bs-table-active-color: #000; - --bs-table-hover-bg: #e5e6e7; - --bs-table-hover-color: #000; - color: #000; - border-color: #dfe0e1; -} - -.table-dark { - --bs-table-bg: #212529; - --bs-table-striped-bg: #2c3034; - --bs-table-striped-color: #fff; - --bs-table-active-bg: #373b3e; - --bs-table-active-color: #fff; - --bs-table-hover-bg: #323539; - --bs-table-hover-color: #fff; - color: #fff; - border-color: #373b3e; -} - -.table-responsive { - overflow-x: auto; - -webkit-overflow-scrolling: touch; -} - -@media (max-width: 575.98px) { - .table-responsive-sm { - overflow-x: auto; - -webkit-overflow-scrolling: touch; - } -} -@media (max-width: 767.98px) { - .table-responsive-md { - overflow-x: auto; - -webkit-overflow-scrolling: touch; - } -} -@media (max-width: 991.98px) { - .table-responsive-lg { - overflow-x: auto; - -webkit-overflow-scrolling: touch; - } -} -@media (max-width: 1199.98px) { - .table-responsive-xl { - overflow-x: auto; - -webkit-overflow-scrolling: touch; - } -} -@media (max-width: 1399.98px) { - .table-responsive-xxl { - overflow-x: auto; - -webkit-overflow-scrolling: touch; - } -} -.form-label { - margin-bottom: 0.5rem; -} - -.col-form-label { - padding-top: calc(0.375rem + 1px); - padding-bottom: calc(0.375rem + 1px); - margin-bottom: 0; - font-size: inherit; - line-height: 1.5; -} - -.col-form-label-lg { - padding-top: calc(0.5rem + 1px); - padding-bottom: calc(0.5rem + 1px); - font-size: 1.25rem; -} - -.col-form-label-sm { - padding-top: calc(0.25rem + 1px); - padding-bottom: calc(0.25rem + 1px); - font-size: 0.875rem; -} - -.form-text { - margin-top: 0.25rem; - font-size: 0.875em; - color: #6c757d; -} - -.form-control { - display: block; - width: 100%; - padding: 0.375rem 0.75rem; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #212529; - background-color: #fff; - background-clip: padding-box; - border: 1px solid #ced4da; - appearance: none; - border-radius: 0.25rem; - transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; -} -@media (prefers-reduced-motion: reduce) { - .form-control { - transition: none; - } -} -.form-control[type=file] { - overflow: hidden; -} -.form-control[type=file]:not(:disabled):not([readonly]) { - cursor: pointer; -} -.form-control:focus { - color: #212529; - background-color: #fff; - border-color: #86b7fe; - outline: 0; - box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); -} -.form-control::-webkit-date-and-time-value { - height: 1.5em; -} -.form-control::placeholder { - color: #6c757d; - opacity: 1; -} -.form-control:disabled, .form-control[readonly] { - background-color: #e9ecef; - opacity: 1; -} -.form-control::file-selector-button { - padding: 0.375rem 0.75rem; - margin: -0.375rem -0.75rem; - margin-inline-end: 0.75rem; - color: #212529; - background-color: #e9ecef; - pointer-events: none; - border-color: inherit; - border-style: solid; - border-width: 0; - border-inline-end-width: 1px; - border-radius: 0; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; -} -@media (prefers-reduced-motion: reduce) { - .form-control::file-selector-button { - transition: none; - } -} -.form-control:hover:not(:disabled):not([readonly])::file-selector-button { - background-color: #dde0e3; -} -.form-control::-webkit-file-upload-button { - padding: 0.375rem 0.75rem; - margin: -0.375rem -0.75rem; - margin-inline-end: 0.75rem; - color: #212529; - background-color: #e9ecef; - pointer-events: none; - border-color: inherit; - border-style: solid; - border-width: 0; - border-inline-end-width: 1px; - border-radius: 0; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; -} -@media (prefers-reduced-motion: reduce) { - .form-control::-webkit-file-upload-button { - transition: none; - } -} -.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button { - background-color: #dde0e3; -} - -.form-control-plaintext { - display: block; - width: 100%; - padding: 0.375rem 0; - margin-bottom: 0; - line-height: 1.5; - color: #212529; - background-color: transparent; - border: solid transparent; - border-width: 1px 0; -} -.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { - padding-right: 0; - padding-left: 0; -} - -.form-control-sm { - min-height: calc(1.5em + (0.5rem + 2px)); - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - border-radius: 0.2rem; -} -.form-control-sm::file-selector-button { - padding: 0.25rem 0.5rem; - margin: -0.25rem -0.5rem; - margin-inline-end: 0.5rem; -} -.form-control-sm::-webkit-file-upload-button { - padding: 0.25rem 0.5rem; - margin: -0.25rem -0.5rem; - margin-inline-end: 0.5rem; -} - -.form-control-lg { - min-height: calc(1.5em + (1rem + 2px)); - padding: 0.5rem 1rem; - font-size: 1.25rem; - border-radius: 0.3rem; -} -.form-control-lg::file-selector-button { - padding: 0.5rem 1rem; - margin: -0.5rem -1rem; - margin-inline-end: 1rem; -} -.form-control-lg::-webkit-file-upload-button { - padding: 0.5rem 1rem; - margin: -0.5rem -1rem; - margin-inline-end: 1rem; -} - -textarea.form-control { - min-height: calc(1.5em + (0.75rem + 2px)); -} -textarea.form-control-sm { - min-height: calc(1.5em + (0.5rem + 2px)); -} -textarea.form-control-lg { - min-height: calc(1.5em + (1rem + 2px)); -} - -.form-control-color { - max-width: 3rem; - height: auto; - padding: 0.375rem; -} -.form-control-color:not(:disabled):not([readonly]) { - cursor: pointer; -} -.form-control-color::-moz-color-swatch { - height: 1.5em; - border-radius: 0.25rem; -} -.form-control-color::-webkit-color-swatch { - height: 1.5em; - border-radius: 0.25rem; -} - -.form-select { - display: block; - width: 100%; - padding: 0.375rem 2.25rem 0.375rem 0.75rem; - -moz-padding-start: calc(0.75rem - 3px); - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #212529; - background-color: #fff; - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"); - background-repeat: no-repeat; - background-position: right 0.75rem center; - background-size: 16px 12px; - border: 1px solid #ced4da; - border-radius: 0.25rem; - transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - appearance: none; -} -@media (prefers-reduced-motion: reduce) { - .form-select { - transition: none; - } -} -.form-select:focus { - border-color: #86b7fe; - outline: 0; - box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); -} -.form-select[multiple], .form-select[size]:not([size="1"]) { - padding-right: 0.75rem; - background-image: none; -} -.form-select:disabled { - background-color: #e9ecef; -} -.form-select:-moz-focusring { - color: transparent; - text-shadow: 0 0 0 #212529; -} - -.form-select-sm { - padding-top: 0.25rem; - padding-bottom: 0.25rem; - padding-left: 0.5rem; - font-size: 0.875rem; -} - -.form-select-lg { - padding-top: 0.5rem; - padding-bottom: 0.5rem; - padding-left: 1rem; - font-size: 1.25rem; -} - -.form-check { - display: block; - min-height: 1.5rem; - padding-left: 1.5em; - margin-bottom: 0.125rem; -} -.form-check .form-check-input { - float: left; - margin-left: -1.5em; -} - -.form-check-input { - width: 1em; - height: 1em; - margin-top: 0.25em; - vertical-align: top; - background-color: #fff; - background-repeat: no-repeat; - background-position: center; - background-size: contain; - border: 1px solid rgba(0, 0, 0, 0.25); - appearance: none; - color-adjust: exact; -} -.form-check-input[type=checkbox] { - border-radius: 0.25em; -} -.form-check-input[type=radio] { - border-radius: 50%; -} -.form-check-input:active { - filter: brightness(90%); -} -.form-check-input:focus { - border-color: #86b7fe; - outline: 0; - box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); -} -.form-check-input:checked { - background-color: #0d6efd; - border-color: #0d6efd; -} -.form-check-input:checked[type=checkbox] { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e"); -} -.form-check-input:checked[type=radio] { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e"); -} -.form-check-input[type=checkbox]:indeterminate { - background-color: #0d6efd; - border-color: #0d6efd; - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e"); -} -.form-check-input:disabled { - pointer-events: none; - filter: none; - opacity: 0.5; -} -.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label { - opacity: 0.5; -} - -.form-switch { - padding-left: 2.5em; -} -.form-switch .form-check-input { - width: 2em; - margin-left: -2.5em; - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e"); - background-position: left center; - border-radius: 2em; - transition: background-position 0.15s ease-in-out; -} -@media (prefers-reduced-motion: reduce) { - .form-switch .form-check-input { - transition: none; - } -} -.form-switch .form-check-input:focus { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e"); -} -.form-switch .form-check-input:checked { - background-position: right center; - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); -} - -.form-check-inline { - display: inline-block; - margin-right: 1rem; -} - -.btn-check { - position: absolute; - clip: rect(0, 0, 0, 0); - pointer-events: none; -} -.btn-check[disabled] + .btn, .btn-check:disabled + .btn { - pointer-events: none; - filter: none; - opacity: 0.65; -} - -.form-range { - width: 100%; - height: 1.5rem; - padding: 0; - background-color: transparent; - appearance: none; -} -.form-range:focus { - outline: 0; -} -.form-range:focus::-webkit-slider-thumb { - box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25); -} -.form-range:focus::-moz-range-thumb { - box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25); -} -.form-range::-moz-focus-outer { - border: 0; -} -.form-range::-webkit-slider-thumb { - width: 1rem; - height: 1rem; - margin-top: -0.25rem; - background-color: #0d6efd; - border: 0; - border-radius: 1rem; - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - appearance: none; -} -@media (prefers-reduced-motion: reduce) { - .form-range::-webkit-slider-thumb { - transition: none; - } -} -.form-range::-webkit-slider-thumb:active { - background-color: #b6d4fe; -} -.form-range::-webkit-slider-runnable-track { - width: 100%; - height: 0.5rem; - color: transparent; - cursor: pointer; - background-color: #dee2e6; - border-color: transparent; - border-radius: 1rem; -} -.form-range::-moz-range-thumb { - width: 1rem; - height: 1rem; - background-color: #0d6efd; - border: 0; - border-radius: 1rem; - transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; - appearance: none; -} -@media (prefers-reduced-motion: reduce) { - .form-range::-moz-range-thumb { - transition: none; - } -} -.form-range::-moz-range-thumb:active { - background-color: #b6d4fe; -} -.form-range::-moz-range-track { - width: 100%; - height: 0.5rem; - color: transparent; - cursor: pointer; - background-color: #dee2e6; - border-color: transparent; - border-radius: 1rem; -} -.form-range:disabled { - pointer-events: none; -} -.form-range:disabled::-webkit-slider-thumb { - background-color: #adb5bd; -} -.form-range:disabled::-moz-range-thumb { - background-color: #adb5bd; -} - -.form-floating { - position: relative; -} -.form-floating > .form-control, -.form-floating > .form-select { - height: calc(3.5rem + 2px); - line-height: 1.25; -} -.form-floating > label { - position: absolute; - top: 0; - left: 0; - height: 100%; - padding: 1rem 0.75rem; - pointer-events: none; - border: 1px solid transparent; - transform-origin: 0 0; - transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out; -} -@media (prefers-reduced-motion: reduce) { - .form-floating > label { - transition: none; - } -} -.form-floating > .form-control { - padding: 1rem 0.75rem; -} -.form-floating > .form-control::placeholder { - color: transparent; -} -.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown) { - padding-top: 1.625rem; - padding-bottom: 0.625rem; -} -.form-floating > .form-control:-webkit-autofill { - padding-top: 1.625rem; - padding-bottom: 0.625rem; -} -.form-floating > .form-select { - padding-top: 1.625rem; - padding-bottom: 0.625rem; -} -.form-floating > .form-control:focus ~ label, -.form-floating > .form-control:not(:placeholder-shown) ~ label, -.form-floating > .form-select ~ label { - opacity: 0.65; - transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); -} -.form-floating > .form-control:-webkit-autofill ~ label { - opacity: 0.65; - transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); -} - -.input-group { - position: relative; - display: flex; - flex-wrap: wrap; - align-items: stretch; - width: 100%; -} -.input-group > .form-control, -.input-group > .form-select { - position: relative; - flex: 1 1 auto; - width: 1%; - min-width: 0; -} -.input-group > .form-control:focus, -.input-group > .form-select:focus { - z-index: 3; -} -.input-group .btn { - position: relative; - z-index: 2; -} -.input-group .btn:focus { - z-index: 3; -} - -.input-group-text { - display: flex; - align-items: center; - padding: 0.375rem 0.75rem; - font-size: 1rem; - font-weight: 400; - line-height: 1.5; - color: #212529; - text-align: center; - white-space: nowrap; - background-color: #e9ecef; - border: 1px solid #ced4da; - border-radius: 0.25rem; -} - -.input-group-lg > .form-control, -.input-group-lg > .form-select, -.input-group-lg > .input-group-text, -.input-group-lg > .btn { - padding: 0.5rem 1rem; - font-size: 1.25rem; - border-radius: 0.3rem; -} - -.input-group-sm > .form-control, -.input-group-sm > .form-select, -.input-group-sm > .input-group-text, -.input-group-sm > .btn { - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - border-radius: 0.2rem; -} - -.input-group-lg > .form-select, -.input-group-sm > .form-select { - padding-right: 3rem; -} - -.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu), -.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu), -.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) { - margin-left: -1px; - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.valid-feedback { - display: none; - width: 100%; - margin-top: 0.25rem; - font-size: 0.875em; - color: #198754; -} - -.valid-tooltip { - position: absolute; - top: 100%; - z-index: 5; - display: none; - max-width: 100%; - padding: 0.25rem 0.5rem; - margin-top: 0.1rem; - font-size: 0.875rem; - color: #fff; - background-color: rgba(25, 135, 84, 0.9); - border-radius: 0.25rem; -} - -.was-validated :valid ~ .valid-feedback, -.was-validated :valid ~ .valid-tooltip, -.is-valid ~ .valid-feedback, -.is-valid ~ .valid-tooltip { - display: block; -} - -.was-validated .form-control:valid, .form-control.is-valid { - border-color: #198754; - padding-right: calc(1.5em + 0.75rem); - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); - background-repeat: no-repeat; - background-position: right calc(0.375em + 0.1875rem) center; - background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); -} -.was-validated .form-control:valid:focus, .form-control.is-valid:focus { - border-color: #198754; - box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25); -} - -.was-validated textarea.form-control:valid, textarea.form-control.is-valid { - padding-right: calc(1.5em + 0.75rem); - background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); -} - -.was-validated .form-select:valid, .form-select.is-valid { - border-color: #198754; -} -.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size="1"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size="1"] { - padding-right: 4.125rem; - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); - background-position: right 0.75rem center, center right 2.25rem; - background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); -} -.was-validated .form-select:valid:focus, .form-select.is-valid:focus { - border-color: #198754; - box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25); -} - -.was-validated .form-check-input:valid, .form-check-input.is-valid { - border-color: #198754; -} -.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked { - background-color: #198754; -} -.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus { - box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25); -} -.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { - color: #198754; -} - -.form-check-inline .form-check-input ~ .valid-feedback { - margin-left: 0.5em; -} - -.was-validated .input-group .form-control:valid, .input-group .form-control.is-valid, -.was-validated .input-group .form-select:valid, -.input-group .form-select.is-valid { - z-index: 1; -} -.was-validated .input-group .form-control:valid:focus, .input-group .form-control.is-valid:focus, -.was-validated .input-group .form-select:valid:focus, -.input-group .form-select.is-valid:focus { - z-index: 3; -} - -.invalid-feedback { - display: none; - width: 100%; - margin-top: 0.25rem; - font-size: 0.875em; - color: #dc3545; -} - -.invalid-tooltip { - position: absolute; - top: 100%; - z-index: 5; - display: none; - max-width: 100%; - padding: 0.25rem 0.5rem; - margin-top: 0.1rem; - font-size: 0.875rem; - color: #fff; - background-color: rgba(220, 53, 69, 0.9); - border-radius: 0.25rem; -} - -.was-validated :invalid ~ .invalid-feedback, -.was-validated :invalid ~ .invalid-tooltip, -.is-invalid ~ .invalid-feedback, -.is-invalid ~ .invalid-tooltip { - display: block; -} - -.was-validated .form-control:invalid, .form-control.is-invalid { - border-color: #dc3545; - padding-right: calc(1.5em + 0.75rem); - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); - background-repeat: no-repeat; - background-position: right calc(0.375em + 0.1875rem) center; - background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); -} -.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { - border-color: #dc3545; - box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25); -} - -.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { - padding-right: calc(1.5em + 0.75rem); - background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); -} - -.was-validated .form-select:invalid, .form-select.is-invalid { - border-color: #dc3545; -} -.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size="1"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size="1"] { - padding-right: 4.125rem; - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); - background-position: right 0.75rem center, center right 2.25rem; - background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); -} -.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus { - border-color: #dc3545; - box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25); -} - -.was-validated .form-check-input:invalid, .form-check-input.is-invalid { - border-color: #dc3545; -} -.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked { - background-color: #dc3545; -} -.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus { - box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25); -} -.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { - color: #dc3545; -} - -.form-check-inline .form-check-input ~ .invalid-feedback { - margin-left: 0.5em; -} - -.was-validated .input-group .form-control:invalid, .input-group .form-control.is-invalid, -.was-validated .input-group .form-select:invalid, -.input-group .form-select.is-invalid { - z-index: 2; -} -.was-validated .input-group .form-control:invalid:focus, .input-group .form-control.is-invalid:focus, -.was-validated .input-group .form-select:invalid:focus, -.input-group .form-select.is-invalid:focus { - z-index: 3; -} - -.btn { - display: inline-block; - font-weight: 400; - line-height: 1.5; - color: #212529; - text-align: center; - text-decoration: none; - vertical-align: middle; - cursor: pointer; - user-select: none; - background-color: transparent; - border: 1px solid transparent; - padding: 0.375rem 0.75rem; - font-size: 1rem; - border-radius: 0.25rem; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; -} -@media (prefers-reduced-motion: reduce) { - .btn { - transition: none; - } -} -.btn:hover { - color: #212529; -} -.btn-check:focus + .btn, .btn:focus { - outline: 0; - box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); -} -.btn:disabled, .btn.disabled, fieldset:disabled .btn { - pointer-events: none; - opacity: 0.65; -} - -.btn-primary { - color: #fff; - background-color: #0d6efd; - border-color: #0d6efd; -} -.btn-primary:hover { - color: #fff; - background-color: #0b5ed7; - border-color: #0a58ca; -} -.btn-check:focus + .btn-primary, .btn-primary:focus { - color: #fff; - background-color: #0b5ed7; - border-color: #0a58ca; - box-shadow: 0 0 0 0.25rem rgba(49, 132, 253, 0.5); -} -.btn-check:checked + .btn-primary, .btn-check:active + .btn-primary, .btn-primary:active, .btn-primary.active, .show > .btn-primary.dropdown-toggle { - color: #fff; - background-color: #0a58ca; - border-color: #0a53be; -} -.btn-check:checked + .btn-primary:focus, .btn-check:active + .btn-primary:focus, .btn-primary:active:focus, .btn-primary.active:focus, .show > .btn-primary.dropdown-toggle:focus { - box-shadow: 0 0 0 0.25rem rgba(49, 132, 253, 0.5); -} -.btn-primary:disabled, .btn-primary.disabled { - color: #fff; - background-color: #0d6efd; - border-color: #0d6efd; -} - -.btn-secondary { - color: #fff; - background-color: #6c757d; - border-color: #6c757d; -} -.btn-secondary:hover { - color: #fff; - background-color: #5c636a; - border-color: #565e64; -} -.btn-check:focus + .btn-secondary, .btn-secondary:focus { - color: #fff; - background-color: #5c636a; - border-color: #565e64; - box-shadow: 0 0 0 0.25rem rgba(130, 138, 145, 0.5); -} -.btn-check:checked + .btn-secondary, .btn-check:active + .btn-secondary, .btn-secondary:active, .btn-secondary.active, .show > .btn-secondary.dropdown-toggle { - color: #fff; - background-color: #565e64; - border-color: #51585e; -} -.btn-check:checked + .btn-secondary:focus, .btn-check:active + .btn-secondary:focus, .btn-secondary:active:focus, .btn-secondary.active:focus, .show > .btn-secondary.dropdown-toggle:focus { - box-shadow: 0 0 0 0.25rem rgba(130, 138, 145, 0.5); -} -.btn-secondary:disabled, .btn-secondary.disabled { - color: #fff; - background-color: #6c757d; - border-color: #6c757d; -} - -.btn-success { - color: #fff; - background-color: #198754; - border-color: #198754; -} -.btn-success:hover { - color: #fff; - background-color: #157347; - border-color: #146c43; -} -.btn-check:focus + .btn-success, .btn-success:focus { - color: #fff; - background-color: #157347; - border-color: #146c43; - box-shadow: 0 0 0 0.25rem rgba(60, 153, 110, 0.5); -} -.btn-check:checked + .btn-success, .btn-check:active + .btn-success, .btn-success:active, .btn-success.active, .show > .btn-success.dropdown-toggle { - color: #fff; - background-color: #146c43; - border-color: #13653f; -} -.btn-check:checked + .btn-success:focus, .btn-check:active + .btn-success:focus, .btn-success:active:focus, .btn-success.active:focus, .show > .btn-success.dropdown-toggle:focus { - box-shadow: 0 0 0 0.25rem rgba(60, 153, 110, 0.5); -} -.btn-success:disabled, .btn-success.disabled { - color: #fff; - background-color: #198754; - border-color: #198754; -} - -.btn-info { - color: #000; - background-color: #0dcaf0; - border-color: #0dcaf0; -} -.btn-info:hover { - color: #000; - background-color: #31d2f2; - border-color: #25cff2; -} -.btn-check:focus + .btn-info, .btn-info:focus { - color: #000; - background-color: #31d2f2; - border-color: #25cff2; - box-shadow: 0 0 0 0.25rem rgba(11, 172, 204, 0.5); -} -.btn-check:checked + .btn-info, .btn-check:active + .btn-info, .btn-info:active, .btn-info.active, .show > .btn-info.dropdown-toggle { - color: #000; - background-color: #3dd5f3; - border-color: #25cff2; -} -.btn-check:checked + .btn-info:focus, .btn-check:active + .btn-info:focus, .btn-info:active:focus, .btn-info.active:focus, .show > .btn-info.dropdown-toggle:focus { - box-shadow: 0 0 0 0.25rem rgba(11, 172, 204, 0.5); -} -.btn-info:disabled, .btn-info.disabled { - color: #000; - background-color: #0dcaf0; - border-color: #0dcaf0; -} - -.btn-warning { - color: #000; - background-color: #ffc107; - border-color: #ffc107; -} -.btn-warning:hover { - color: #000; - background-color: #ffca2c; - border-color: #ffc720; -} -.btn-check:focus + .btn-warning, .btn-warning:focus { - color: #000; - background-color: #ffca2c; - border-color: #ffc720; - box-shadow: 0 0 0 0.25rem rgba(217, 164, 6, 0.5); -} -.btn-check:checked + .btn-warning, .btn-check:active + .btn-warning, .btn-warning:active, .btn-warning.active, .show > .btn-warning.dropdown-toggle { - color: #000; - background-color: #ffcd39; - border-color: #ffc720; -} -.btn-check:checked + .btn-warning:focus, .btn-check:active + .btn-warning:focus, .btn-warning:active:focus, .btn-warning.active:focus, .show > .btn-warning.dropdown-toggle:focus { - box-shadow: 0 0 0 0.25rem rgba(217, 164, 6, 0.5); -} -.btn-warning:disabled, .btn-warning.disabled { - color: #000; - background-color: #ffc107; - border-color: #ffc107; -} - -.btn-danger { - color: #fff; - background-color: #dc3545; - border-color: #dc3545; -} -.btn-danger:hover { - color: #fff; - background-color: #bb2d3b; - border-color: #b02a37; -} -.btn-check:focus + .btn-danger, .btn-danger:focus { - color: #fff; - background-color: #bb2d3b; - border-color: #b02a37; - box-shadow: 0 0 0 0.25rem rgba(225, 83, 97, 0.5); -} -.btn-check:checked + .btn-danger, .btn-check:active + .btn-danger, .btn-danger:active, .btn-danger.active, .show > .btn-danger.dropdown-toggle { - color: #fff; - background-color: #b02a37; - border-color: #a52834; -} -.btn-check:checked + .btn-danger:focus, .btn-check:active + .btn-danger:focus, .btn-danger:active:focus, .btn-danger.active:focus, .show > .btn-danger.dropdown-toggle:focus { - box-shadow: 0 0 0 0.25rem rgba(225, 83, 97, 0.5); -} -.btn-danger:disabled, .btn-danger.disabled { - color: #fff; - background-color: #dc3545; - border-color: #dc3545; -} - -.btn-light { - color: #000; - background-color: #f8f9fa; - border-color: #f8f9fa; -} -.btn-light:hover { - color: #000; - background-color: #f9fafb; - border-color: #f9fafb; -} -.btn-check:focus + .btn-light, .btn-light:focus { - color: #000; - background-color: #f9fafb; - border-color: #f9fafb; - box-shadow: 0 0 0 0.25rem rgba(211, 212, 213, 0.5); -} -.btn-check:checked + .btn-light, .btn-check:active + .btn-light, .btn-light:active, .btn-light.active, .show > .btn-light.dropdown-toggle { - color: #000; - background-color: #f9fafb; - border-color: #f9fafb; -} -.btn-check:checked + .btn-light:focus, .btn-check:active + .btn-light:focus, .btn-light:active:focus, .btn-light.active:focus, .show > .btn-light.dropdown-toggle:focus { - box-shadow: 0 0 0 0.25rem rgba(211, 212, 213, 0.5); -} -.btn-light:disabled, .btn-light.disabled { - color: #000; - background-color: #f8f9fa; - border-color: #f8f9fa; -} - -.btn-dark { - color: #fff; - background-color: #212529; - border-color: #212529; -} -.btn-dark:hover { - color: #fff; - background-color: #1c1f23; - border-color: #1a1e21; -} -.btn-check:focus + .btn-dark, .btn-dark:focus { - color: #fff; - background-color: #1c1f23; - border-color: #1a1e21; - box-shadow: 0 0 0 0.25rem rgba(66, 70, 73, 0.5); -} -.btn-check:checked + .btn-dark, .btn-check:active + .btn-dark, .btn-dark:active, .btn-dark.active, .show > .btn-dark.dropdown-toggle { - color: #fff; - background-color: #1a1e21; - border-color: #191c1f; -} -.btn-check:checked + .btn-dark:focus, .btn-check:active + .btn-dark:focus, .btn-dark:active:focus, .btn-dark.active:focus, .show > .btn-dark.dropdown-toggle:focus { - box-shadow: 0 0 0 0.25rem rgba(66, 70, 73, 0.5); -} -.btn-dark:disabled, .btn-dark.disabled { - color: #fff; - background-color: #212529; - border-color: #212529; -} - -.btn-outline-primary { - color: #0d6efd; - border-color: #0d6efd; -} -.btn-outline-primary:hover { - color: #fff; - background-color: #0d6efd; - border-color: #0d6efd; -} -.btn-check:focus + .btn-outline-primary, .btn-outline-primary:focus { - box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.5); -} -.btn-check:checked + .btn-outline-primary, .btn-check:active + .btn-outline-primary, .btn-outline-primary:active, .btn-outline-primary.active, .btn-outline-primary.dropdown-toggle.show { - color: #fff; - background-color: #0d6efd; - border-color: #0d6efd; -} -.btn-check:checked + .btn-outline-primary:focus, .btn-check:active + .btn-outline-primary:focus, .btn-outline-primary:active:focus, .btn-outline-primary.active:focus, .btn-outline-primary.dropdown-toggle.show:focus { - box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.5); -} -.btn-outline-primary:disabled, .btn-outline-primary.disabled { - color: #0d6efd; - background-color: transparent; -} - -.btn-outline-secondary { - color: #6c757d; - border-color: #6c757d; -} -.btn-outline-secondary:hover { - color: #fff; - background-color: #6c757d; - border-color: #6c757d; -} -.btn-check:focus + .btn-outline-secondary, .btn-outline-secondary:focus { - box-shadow: 0 0 0 0.25rem rgba(108, 117, 125, 0.5); -} -.btn-check:checked + .btn-outline-secondary, .btn-check:active + .btn-outline-secondary, .btn-outline-secondary:active, .btn-outline-secondary.active, .btn-outline-secondary.dropdown-toggle.show { - color: #fff; - background-color: #6c757d; - border-color: #6c757d; -} -.btn-check:checked + .btn-outline-secondary:focus, .btn-check:active + .btn-outline-secondary:focus, .btn-outline-secondary:active:focus, .btn-outline-secondary.active:focus, .btn-outline-secondary.dropdown-toggle.show:focus { - box-shadow: 0 0 0 0.25rem rgba(108, 117, 125, 0.5); -} -.btn-outline-secondary:disabled, .btn-outline-secondary.disabled { - color: #6c757d; - background-color: transparent; -} - -.btn-outline-success { - color: #198754; - border-color: #198754; -} -.btn-outline-success:hover { - color: #fff; - background-color: #198754; - border-color: #198754; -} -.btn-check:focus + .btn-outline-success, .btn-outline-success:focus { - box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.5); -} -.btn-check:checked + .btn-outline-success, .btn-check:active + .btn-outline-success, .btn-outline-success:active, .btn-outline-success.active, .btn-outline-success.dropdown-toggle.show { - color: #fff; - background-color: #198754; - border-color: #198754; -} -.btn-check:checked + .btn-outline-success:focus, .btn-check:active + .btn-outline-success:focus, .btn-outline-success:active:focus, .btn-outline-success.active:focus, .btn-outline-success.dropdown-toggle.show:focus { - box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.5); -} -.btn-outline-success:disabled, .btn-outline-success.disabled { - color: #198754; - background-color: transparent; -} - -.btn-outline-info { - color: #0dcaf0; - border-color: #0dcaf0; -} -.btn-outline-info:hover { - color: #000; - background-color: #0dcaf0; - border-color: #0dcaf0; -} -.btn-check:focus + .btn-outline-info, .btn-outline-info:focus { - box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.5); -} -.btn-check:checked + .btn-outline-info, .btn-check:active + .btn-outline-info, .btn-outline-info:active, .btn-outline-info.active, .btn-outline-info.dropdown-toggle.show { - color: #000; - background-color: #0dcaf0; - border-color: #0dcaf0; -} -.btn-check:checked + .btn-outline-info:focus, .btn-check:active + .btn-outline-info:focus, .btn-outline-info:active:focus, .btn-outline-info.active:focus, .btn-outline-info.dropdown-toggle.show:focus { - box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.5); -} -.btn-outline-info:disabled, .btn-outline-info.disabled { - color: #0dcaf0; - background-color: transparent; -} - -.btn-outline-warning { - color: #ffc107; - border-color: #ffc107; -} -.btn-outline-warning:hover { - color: #000; - background-color: #ffc107; - border-color: #ffc107; -} -.btn-check:focus + .btn-outline-warning, .btn-outline-warning:focus { - box-shadow: 0 0 0 0.25rem rgba(255, 193, 7, 0.5); -} -.btn-check:checked + .btn-outline-warning, .btn-check:active + .btn-outline-warning, .btn-outline-warning:active, .btn-outline-warning.active, .btn-outline-warning.dropdown-toggle.show { - color: #000; - background-color: #ffc107; - border-color: #ffc107; -} -.btn-check:checked + .btn-outline-warning:focus, .btn-check:active + .btn-outline-warning:focus, .btn-outline-warning:active:focus, .btn-outline-warning.active:focus, .btn-outline-warning.dropdown-toggle.show:focus { - box-shadow: 0 0 0 0.25rem rgba(255, 193, 7, 0.5); -} -.btn-outline-warning:disabled, .btn-outline-warning.disabled { - color: #ffc107; - background-color: transparent; -} - -.btn-outline-danger { - color: #dc3545; - border-color: #dc3545; -} -.btn-outline-danger:hover { - color: #fff; - background-color: #dc3545; - border-color: #dc3545; -} -.btn-check:focus + .btn-outline-danger, .btn-outline-danger:focus { - box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.5); -} -.btn-check:checked + .btn-outline-danger, .btn-check:active + .btn-outline-danger, .btn-outline-danger:active, .btn-outline-danger.active, .btn-outline-danger.dropdown-toggle.show { - color: #fff; - background-color: #dc3545; - border-color: #dc3545; -} -.btn-check:checked + .btn-outline-danger:focus, .btn-check:active + .btn-outline-danger:focus, .btn-outline-danger:active:focus, .btn-outline-danger.active:focus, .btn-outline-danger.dropdown-toggle.show:focus { - box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.5); -} -.btn-outline-danger:disabled, .btn-outline-danger.disabled { - color: #dc3545; - background-color: transparent; -} - -.btn-outline-light { - color: #f8f9fa; - border-color: #f8f9fa; -} -.btn-outline-light:hover { - color: #000; - background-color: #f8f9fa; - border-color: #f8f9fa; -} -.btn-check:focus + .btn-outline-light, .btn-outline-light:focus { - box-shadow: 0 0 0 0.25rem rgba(248, 249, 250, 0.5); -} -.btn-check:checked + .btn-outline-light, .btn-check:active + .btn-outline-light, .btn-outline-light:active, .btn-outline-light.active, .btn-outline-light.dropdown-toggle.show { - color: #000; - background-color: #f8f9fa; - border-color: #f8f9fa; -} -.btn-check:checked + .btn-outline-light:focus, .btn-check:active + .btn-outline-light:focus, .btn-outline-light:active:focus, .btn-outline-light.active:focus, .btn-outline-light.dropdown-toggle.show:focus { - box-shadow: 0 0 0 0.25rem rgba(248, 249, 250, 0.5); -} -.btn-outline-light:disabled, .btn-outline-light.disabled { - color: #f8f9fa; - background-color: transparent; -} - -.btn-outline-dark { - color: #212529; - border-color: #212529; -} -.btn-outline-dark:hover { - color: #fff; - background-color: #212529; - border-color: #212529; -} -.btn-check:focus + .btn-outline-dark, .btn-outline-dark:focus { - box-shadow: 0 0 0 0.25rem rgba(33, 37, 41, 0.5); -} -.btn-check:checked + .btn-outline-dark, .btn-check:active + .btn-outline-dark, .btn-outline-dark:active, .btn-outline-dark.active, .btn-outline-dark.dropdown-toggle.show { - color: #fff; - background-color: #212529; - border-color: #212529; -} -.btn-check:checked + .btn-outline-dark:focus, .btn-check:active + .btn-outline-dark:focus, .btn-outline-dark:active:focus, .btn-outline-dark.active:focus, .btn-outline-dark.dropdown-toggle.show:focus { - box-shadow: 0 0 0 0.25rem rgba(33, 37, 41, 0.5); -} -.btn-outline-dark:disabled, .btn-outline-dark.disabled { - color: #212529; - background-color: transparent; -} - -.btn-link { - font-weight: 400; - color: #0d6efd; - text-decoration: underline; -} -.btn-link:hover { - color: #0a58ca; -} -.btn-link:disabled, .btn-link.disabled { - color: #6c757d; -} - -.btn-lg, .btn-group-lg > .btn { - padding: 0.5rem 1rem; - font-size: 1.25rem; - border-radius: 0.3rem; -} - -.btn-sm, .btn-group-sm > .btn { - padding: 0.25rem 0.5rem; - font-size: 0.875rem; - border-radius: 0.2rem; -} - -.fade { - transition: opacity 0.15s linear; -} -@media (prefers-reduced-motion: reduce) { - .fade { - transition: none; - } -} -.fade:not(.show) { - opacity: 0; -} - -.collapse:not(.show) { - display: none; -} - -.collapsing { - height: 0; - overflow: hidden; - transition: height 0.35s ease; -} -@media (prefers-reduced-motion: reduce) { - .collapsing { - transition: none; - } -} - -.dropup, -.dropend, -.dropdown, -.dropstart { - position: relative; -} - -.dropdown-toggle { - white-space: nowrap; -} -.dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid; - border-right: 0.3em solid transparent; - border-bottom: 0; - border-left: 0.3em solid transparent; -} -.dropdown-toggle:empty::after { - margin-left: 0; -} - -.dropdown-menu { - position: absolute; - z-index: 1000; - display: none; - min-width: 10rem; - padding: 0.5rem 0; - margin: 0; - font-size: 1rem; - color: #212529; - text-align: left; - list-style: none; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 0.25rem; -} -.dropdown-menu[data-bs-popper] { - top: 100%; - left: 0; - margin-top: 0.125rem; -} - -.dropdown-menu-start { - --bs-position: start; -} -.dropdown-menu-start[data-bs-popper] { - right: auto; - left: 0; -} - -.dropdown-menu-end { - --bs-position: end; -} -.dropdown-menu-end[data-bs-popper] { - right: 0; - left: auto; -} - -@media (min-width: 576px) { - .dropdown-menu-sm-start { - --bs-position: start; - } - .dropdown-menu-sm-start[data-bs-popper] { - right: auto; - left: 0; - } - - .dropdown-menu-sm-end { - --bs-position: end; - } - .dropdown-menu-sm-end[data-bs-popper] { - right: 0; - left: auto; - } -} -@media (min-width: 768px) { - .dropdown-menu-md-start { - --bs-position: start; - } - .dropdown-menu-md-start[data-bs-popper] { - right: auto; - left: 0; - } - - .dropdown-menu-md-end { - --bs-position: end; - } - .dropdown-menu-md-end[data-bs-popper] { - right: 0; - left: auto; - } -} -@media (min-width: 992px) { - .dropdown-menu-lg-start { - --bs-position: start; - } - .dropdown-menu-lg-start[data-bs-popper] { - right: auto; - left: 0; - } - - .dropdown-menu-lg-end { - --bs-position: end; - } - .dropdown-menu-lg-end[data-bs-popper] { - right: 0; - left: auto; - } -} -@media (min-width: 1200px) { - .dropdown-menu-xl-start { - --bs-position: start; - } - .dropdown-menu-xl-start[data-bs-popper] { - right: auto; - left: 0; - } - - .dropdown-menu-xl-end { - --bs-position: end; - } - .dropdown-menu-xl-end[data-bs-popper] { - right: 0; - left: auto; - } -} -@media (min-width: 1400px) { - .dropdown-menu-xxl-start { - --bs-position: start; - } - .dropdown-menu-xxl-start[data-bs-popper] { - right: auto; - left: 0; - } - - .dropdown-menu-xxl-end { - --bs-position: end; - } - .dropdown-menu-xxl-end[data-bs-popper] { - right: 0; - left: auto; - } -} -.dropup .dropdown-menu[data-bs-popper] { - top: auto; - bottom: 100%; - margin-top: 0; - margin-bottom: 0.125rem; -} -.dropup .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0; - border-right: 0.3em solid transparent; - border-bottom: 0.3em solid; - border-left: 0.3em solid transparent; -} -.dropup .dropdown-toggle:empty::after { - margin-left: 0; -} - -.dropend .dropdown-menu[data-bs-popper] { - top: 0; - right: auto; - left: 100%; - margin-top: 0; - margin-left: 0.125rem; -} -.dropend .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid transparent; - border-right: 0; - border-bottom: 0.3em solid transparent; - border-left: 0.3em solid; -} -.dropend .dropdown-toggle:empty::after { - margin-left: 0; -} -.dropend .dropdown-toggle::after { - vertical-align: 0; -} - -.dropstart .dropdown-menu[data-bs-popper] { - top: 0; - right: 100%; - left: auto; - margin-top: 0; - margin-right: 0.125rem; -} -.dropstart .dropdown-toggle::after { - display: inline-block; - margin-left: 0.255em; - vertical-align: 0.255em; - content: ""; -} -.dropstart .dropdown-toggle::after { - display: none; -} -.dropstart .dropdown-toggle::before { - display: inline-block; - margin-right: 0.255em; - vertical-align: 0.255em; - content: ""; - border-top: 0.3em solid transparent; - border-right: 0.3em solid; - border-bottom: 0.3em solid transparent; -} -.dropstart .dropdown-toggle:empty::after { - margin-left: 0; -} -.dropstart .dropdown-toggle::before { - vertical-align: 0; -} - -.dropdown-divider { - height: 0; - margin: 0.5rem 0; - overflow: hidden; - border-top: 1px solid rgba(0, 0, 0, 0.15); -} - -.dropdown-item { - display: block; - width: 100%; - padding: 0.25rem 1rem; - clear: both; - font-weight: 400; - color: #212529; - text-align: inherit; - text-decoration: none; - white-space: nowrap; - background-color: transparent; - border: 0; -} -.dropdown-item:hover, .dropdown-item:focus { - color: #1e2125; - background-color: #e9ecef; -} -.dropdown-item.active, .dropdown-item:active { - color: #fff; - text-decoration: none; - background-color: #0d6efd; -} -.dropdown-item.disabled, .dropdown-item:disabled { - color: #adb5bd; - pointer-events: none; - background-color: transparent; -} - -.dropdown-menu.show { - display: block; -} - -.dropdown-header { - display: block; - padding: 0.5rem 1rem; - margin-bottom: 0; - font-size: 0.875rem; - color: #6c757d; - white-space: nowrap; -} - -.dropdown-item-text { - display: block; - padding: 0.25rem 1rem; - color: #212529; -} - -.dropdown-menu-dark { - color: #dee2e6; - background-color: #343a40; - border-color: rgba(0, 0, 0, 0.15); -} -.dropdown-menu-dark .dropdown-item { - color: #dee2e6; -} -.dropdown-menu-dark .dropdown-item:hover, .dropdown-menu-dark .dropdown-item:focus { - color: #fff; - background-color: rgba(255, 255, 255, 0.15); -} -.dropdown-menu-dark .dropdown-item.active, .dropdown-menu-dark .dropdown-item:active { - color: #fff; - background-color: #0d6efd; -} -.dropdown-menu-dark .dropdown-item.disabled, .dropdown-menu-dark .dropdown-item:disabled { - color: #adb5bd; -} -.dropdown-menu-dark .dropdown-divider { - border-color: rgba(0, 0, 0, 0.15); -} -.dropdown-menu-dark .dropdown-item-text { - color: #dee2e6; -} -.dropdown-menu-dark .dropdown-header { - color: #adb5bd; -} - -.btn-group, -.btn-group-vertical { - position: relative; - display: inline-flex; - vertical-align: middle; -} -.btn-group > .btn, -.btn-group-vertical > .btn { - position: relative; - flex: 1 1 auto; -} -.btn-group > .btn-check:checked + .btn, -.btn-group > .btn-check:focus + .btn, -.btn-group > .btn:hover, -.btn-group > .btn:focus, -.btn-group > .btn:active, -.btn-group > .btn.active, -.btn-group-vertical > .btn-check:checked + .btn, -.btn-group-vertical > .btn-check:focus + .btn, -.btn-group-vertical > .btn:hover, -.btn-group-vertical > .btn:focus, -.btn-group-vertical > .btn:active, -.btn-group-vertical > .btn.active { - z-index: 1; -} - -.btn-toolbar { - display: flex; - flex-wrap: wrap; - justify-content: flex-start; -} -.btn-toolbar .input-group { - width: auto; -} - -.btn-group > .btn:not(:first-child), -.btn-group > .btn-group:not(:first-child) { - margin-left: -1px; -} -.btn-group > .btn:not(:last-child):not(.dropdown-toggle), -.btn-group > .btn-group:not(:last-child) > .btn { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.btn-group > .btn:nth-child(n+3), -.btn-group > :not(.btn-check) + .btn, -.btn-group > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-bottom-left-radius: 0; -} - -.dropdown-toggle-split { - padding-right: 0.5625rem; - padding-left: 0.5625rem; -} -.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after { - margin-left: 0; -} -.dropstart .dropdown-toggle-split::before { - margin-right: 0; -} - -.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { - padding-right: 0.375rem; - padding-left: 0.375rem; -} - -.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { - padding-right: 0.75rem; - padding-left: 0.75rem; -} - -.btn-group-vertical { - flex-direction: column; - align-items: flex-start; - justify-content: center; -} -.btn-group-vertical > .btn, -.btn-group-vertical > .btn-group { - width: 100%; -} -.btn-group-vertical > .btn:not(:first-child), -.btn-group-vertical > .btn-group:not(:first-child) { - margin-top: -1px; -} -.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), -.btn-group-vertical > .btn-group:not(:last-child) > .btn { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} -.btn-group-vertical > .btn ~ .btn, -.btn-group-vertical > .btn-group:not(:first-child) > .btn { - border-top-left-radius: 0; - border-top-right-radius: 0; -} - -.nav { - display: flex; - flex-wrap: wrap; - padding-left: 0; - margin-bottom: 0; - list-style: none; -} - -.nav-link { - display: block; - padding: 0.5rem 1rem; - color: #0d6efd; - text-decoration: none; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out; -} -@media (prefers-reduced-motion: reduce) { - .nav-link { - transition: none; - } -} -.nav-link:hover, .nav-link:focus { - color: #0a58ca; -} -.nav-link.disabled { - color: #6c757d; - pointer-events: none; - cursor: default; -} - -.nav-tabs { - border-bottom: 1px solid #dee2e6; -} -.nav-tabs .nav-link { - margin-bottom: -1px; - background: none; - border: 1px solid transparent; - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; -} -.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { - border-color: #e9ecef #e9ecef #dee2e6; - isolation: isolate; -} -.nav-tabs .nav-link.disabled { - color: #6c757d; - background-color: transparent; - border-color: transparent; -} -.nav-tabs .nav-link.active, -.nav-tabs .nav-item.show .nav-link { - color: #495057; - background-color: #fff; - border-color: #dee2e6 #dee2e6 #fff; -} -.nav-tabs .dropdown-menu { - margin-top: -1px; - border-top-left-radius: 0; - border-top-right-radius: 0; -} - -.nav-pills .nav-link { - background: none; - border: 0; - border-radius: 0.25rem; -} -.nav-pills .nav-link.active, -.nav-pills .show > .nav-link { - color: #fff; - background-color: #0d6efd; -} - -.nav-fill > .nav-link, -.nav-fill .nav-item { - flex: 1 1 auto; - text-align: center; -} - -.nav-justified > .nav-link, -.nav-justified .nav-item { - flex-basis: 0; - flex-grow: 1; - text-align: center; -} - -.nav-fill .nav-item .nav-link, -.nav-justified .nav-item .nav-link { - width: 100%; -} - -.tab-content > .tab-pane { - display: none; -} -.tab-content > .active { - display: block; -} - -.navbar { - position: relative; - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: space-between; - padding-top: 0.5rem; - padding-bottom: 0.5rem; -} -.navbar > .container, -.navbar > .container-fluid, -.navbar > .container-sm, -.navbar > .container-md, -.navbar > .container-lg, -.navbar > .container-xl, -.navbar > .container-xxl { - display: flex; - flex-wrap: inherit; - align-items: center; - justify-content: space-between; -} -.navbar-brand { - padding-top: 0.3125rem; - padding-bottom: 0.3125rem; - margin-right: 1rem; - font-size: 1.25rem; - text-decoration: none; - white-space: nowrap; -} -.navbar-nav { - display: flex; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; - list-style: none; -} -.navbar-nav .nav-link { - padding-right: 0; - padding-left: 0; -} -.navbar-nav .dropdown-menu { - position: static; -} - -.navbar-text { - padding-top: 0.5rem; - padding-bottom: 0.5rem; -} - -.navbar-collapse { - flex-basis: 100%; - flex-grow: 1; - align-items: center; -} - -.navbar-toggler { - padding: 0.25rem 0.75rem; - font-size: 1.25rem; - line-height: 1; - background-color: transparent; - border: 1px solid transparent; - border-radius: 0.25rem; - transition: box-shadow 0.15s ease-in-out; -} -@media (prefers-reduced-motion: reduce) { - .navbar-toggler { - transition: none; - } -} -.navbar-toggler:hover { - text-decoration: none; -} -.navbar-toggler:focus { - text-decoration: none; - outline: 0; - box-shadow: 0 0 0 0.25rem; -} - -.navbar-toggler-icon { - display: inline-block; - width: 1.5em; - height: 1.5em; - vertical-align: middle; - background-repeat: no-repeat; - background-position: center; - background-size: 100%; -} - -.navbar-nav-scroll { - max-height: var(--bs-scroll-height, 75vh); - overflow-y: auto; -} - -@media (min-width: 576px) { - .navbar-expand-sm { - flex-wrap: nowrap; - justify-content: flex-start; - } - .navbar-expand-sm .navbar-nav { - flex-direction: row; - } - .navbar-expand-sm .navbar-nav .dropdown-menu { - position: absolute; - } - .navbar-expand-sm .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; - } - .navbar-expand-sm .navbar-nav-scroll { - overflow: visible; - } - .navbar-expand-sm .navbar-collapse { - display: flex !important; - flex-basis: auto; - } - .navbar-expand-sm .navbar-toggler { - display: none; - } -} -@media (min-width: 768px) { - .navbar-expand-md { - flex-wrap: nowrap; - justify-content: flex-start; - } - .navbar-expand-md .navbar-nav { - flex-direction: row; - } - .navbar-expand-md .navbar-nav .dropdown-menu { - position: absolute; - } - .navbar-expand-md .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; - } - .navbar-expand-md .navbar-nav-scroll { - overflow: visible; - } - .navbar-expand-md .navbar-collapse { - display: flex !important; - flex-basis: auto; - } - .navbar-expand-md .navbar-toggler { - display: none; - } -} -@media (min-width: 992px) { - .navbar-expand-lg { - flex-wrap: nowrap; - justify-content: flex-start; - } - .navbar-expand-lg .navbar-nav { - flex-direction: row; - } - .navbar-expand-lg .navbar-nav .dropdown-menu { - position: absolute; - } - .navbar-expand-lg .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; - } - .navbar-expand-lg .navbar-nav-scroll { - overflow: visible; - } - .navbar-expand-lg .navbar-collapse { - display: flex !important; - flex-basis: auto; - } - .navbar-expand-lg .navbar-toggler { - display: none; - } -} -@media (min-width: 1200px) { - .navbar-expand-xl { - flex-wrap: nowrap; - justify-content: flex-start; - } - .navbar-expand-xl .navbar-nav { - flex-direction: row; - } - .navbar-expand-xl .navbar-nav .dropdown-menu { - position: absolute; - } - .navbar-expand-xl .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; - } - .navbar-expand-xl .navbar-nav-scroll { - overflow: visible; - } - .navbar-expand-xl .navbar-collapse { - display: flex !important; - flex-basis: auto; - } - .navbar-expand-xl .navbar-toggler { - display: none; - } -} -@media (min-width: 1400px) { - .navbar-expand-xxl { - flex-wrap: nowrap; - justify-content: flex-start; - } - .navbar-expand-xxl .navbar-nav { - flex-direction: row; - } - .navbar-expand-xxl .navbar-nav .dropdown-menu { - position: absolute; - } - .navbar-expand-xxl .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; - } - .navbar-expand-xxl .navbar-nav-scroll { - overflow: visible; - } - .navbar-expand-xxl .navbar-collapse { - display: flex !important; - flex-basis: auto; - } - .navbar-expand-xxl .navbar-toggler { - display: none; - } -} -.navbar-expand { - flex-wrap: nowrap; - justify-content: flex-start; -} -.navbar-expand .navbar-nav { - flex-direction: row; -} -.navbar-expand .navbar-nav .dropdown-menu { - position: absolute; -} -.navbar-expand .navbar-nav .nav-link { - padding-right: 0.5rem; - padding-left: 0.5rem; -} -.navbar-expand .navbar-nav-scroll { - overflow: visible; -} -.navbar-expand .navbar-collapse { - display: flex !important; - flex-basis: auto; -} -.navbar-expand .navbar-toggler { - display: none; -} - -.navbar-light .navbar-brand { - color: rgba(0, 0, 0, 0.9); -} -.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus { - color: rgba(0, 0, 0, 0.9); -} -.navbar-light .navbar-nav .nav-link { - color: rgba(0, 0, 0, 0.55); -} -.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus { - color: rgba(0, 0, 0, 0.7); -} -.navbar-light .navbar-nav .nav-link.disabled { - color: rgba(0, 0, 0, 0.3); -} -.navbar-light .navbar-nav .show > .nav-link, -.navbar-light .navbar-nav .nav-link.active { - color: rgba(0, 0, 0, 0.9); -} -.navbar-light .navbar-toggler { - color: rgba(0, 0, 0, 0.55); - border-color: rgba(0, 0, 0, 0.1); -} -.navbar-light .navbar-toggler-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); -} -.navbar-light .navbar-text { - color: rgba(0, 0, 0, 0.55); -} -.navbar-light .navbar-text a, -.navbar-light .navbar-text a:hover, -.navbar-light .navbar-text a:focus { - color: rgba(0, 0, 0, 0.9); -} - -.navbar-dark .navbar-brand { - color: #fff; -} -.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus { - color: #fff; -} -.navbar-dark .navbar-nav .nav-link { - color: rgba(255, 255, 255, 0.55); -} -.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus { - color: rgba(255, 255, 255, 0.75); -} -.navbar-dark .navbar-nav .nav-link.disabled { - color: rgba(255, 255, 255, 0.25); -} -.navbar-dark .navbar-nav .show > .nav-link, -.navbar-dark .navbar-nav .nav-link.active { - color: #fff; -} -.navbar-dark .navbar-toggler { - color: rgba(255, 255, 255, 0.55); - border-color: rgba(255, 255, 255, 0.1); -} -.navbar-dark .navbar-toggler-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); -} -.navbar-dark .navbar-text { - color: rgba(255, 255, 255, 0.55); -} -.navbar-dark .navbar-text a, -.navbar-dark .navbar-text a:hover, -.navbar-dark .navbar-text a:focus { - color: #fff; -} - -.card { - position: relative; - display: flex; - flex-direction: column; - min-width: 0; - word-wrap: break-word; - background-color: #fff; - background-clip: border-box; - border: 1px solid rgba(0, 0, 0, 0.125); - border-radius: 0.25rem; -} -.card > hr { - margin-right: 0; - margin-left: 0; -} -.card > .list-group { - border-top: inherit; - border-bottom: inherit; -} -.card > .list-group:first-child { - border-top-width: 0; - border-top-left-radius: calc(0.25rem - 1px); - border-top-right-radius: calc(0.25rem - 1px); -} -.card > .list-group:last-child { - border-bottom-width: 0; - border-bottom-right-radius: calc(0.25rem - 1px); - border-bottom-left-radius: calc(0.25rem - 1px); -} -.card > .card-header + .list-group, -.card > .list-group + .card-footer { - border-top: 0; -} - -.card-body { - flex: 1 1 auto; - padding: 1rem 1rem; -} - -.card-title { - margin-bottom: 0.5rem; -} - -.card-subtitle { - margin-top: -0.25rem; - margin-bottom: 0; -} - -.card-text:last-child { - margin-bottom: 0; -} - -.card-link:hover { - text-decoration: none; -} -.card-link + .card-link { - margin-left: 1rem; -} - -.card-header { - padding: 0.5rem 1rem; - margin-bottom: 0; - background-color: rgba(0, 0, 0, 0.03); - border-bottom: 1px solid rgba(0, 0, 0, 0.125); -} -.card-header:first-child { - border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0; -} - -.card-footer { - padding: 0.5rem 1rem; - background-color: rgba(0, 0, 0, 0.03); - border-top: 1px solid rgba(0, 0, 0, 0.125); -} -.card-footer:last-child { - border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px); -} - -.card-header-tabs { - margin-right: -0.5rem; - margin-bottom: -0.5rem; - margin-left: -0.5rem; - border-bottom: 0; -} - -.card-header-pills { - margin-right: -0.5rem; - margin-left: -0.5rem; -} - -.card-img-overlay { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - padding: 1rem; - border-radius: calc(0.25rem - 1px); -} - -.card-img, -.card-img-top, -.card-img-bottom { - width: 100%; -} - -.card-img, -.card-img-top { - border-top-left-radius: calc(0.25rem - 1px); - border-top-right-radius: calc(0.25rem - 1px); -} - -.card-img, -.card-img-bottom { - border-bottom-right-radius: calc(0.25rem - 1px); - border-bottom-left-radius: calc(0.25rem - 1px); -} - -.card-group > .card { - margin-bottom: 0.75rem; -} -@media (min-width: 576px) { - .card-group { - display: flex; - flex-flow: row wrap; - } - .card-group > .card { - flex: 1 0 0%; - margin-bottom: 0; - } - .card-group > .card + .card { - margin-left: 0; - border-left: 0; - } - .card-group > .card:not(:last-child) { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - } - .card-group > .card:not(:last-child) .card-img-top, -.card-group > .card:not(:last-child) .card-header { - border-top-right-radius: 0; - } - .card-group > .card:not(:last-child) .card-img-bottom, -.card-group > .card:not(:last-child) .card-footer { - border-bottom-right-radius: 0; - } - .card-group > .card:not(:first-child) { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - } - .card-group > .card:not(:first-child) .card-img-top, -.card-group > .card:not(:first-child) .card-header { - border-top-left-radius: 0; - } - .card-group > .card:not(:first-child) .card-img-bottom, -.card-group > .card:not(:first-child) .card-footer { - border-bottom-left-radius: 0; - } -} - -.accordion-button { - position: relative; - display: flex; - align-items: center; - width: 100%; - padding: 1rem 1.25rem; - font-size: 1rem; - color: #212529; - text-align: left; - background-color: #fff; - border: 0; - border-radius: 0; - overflow-anchor: none; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease; -} -@media (prefers-reduced-motion: reduce) { - .accordion-button { - transition: none; - } -} -.accordion-button:not(.collapsed) { - color: #0c63e4; - background-color: #e7f1ff; - box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.125); -} -.accordion-button:not(.collapsed)::after { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); - transform: rotate(-180deg); -} -.accordion-button::after { - flex-shrink: 0; - width: 1.25rem; - height: 1.25rem; - margin-left: auto; - content: ""; - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); - background-repeat: no-repeat; - background-size: 1.25rem; - transition: transform 0.2s ease-in-out; -} -@media (prefers-reduced-motion: reduce) { - .accordion-button::after { - transition: none; - } -} -.accordion-button:hover { - z-index: 2; -} -.accordion-button:focus { - z-index: 3; - border-color: #86b7fe; - outline: 0; - box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); -} - -.accordion-header { - margin-bottom: 0; -} - -.accordion-item { - background-color: #fff; - border: 1px solid rgba(0, 0, 0, 0.125); -} -.accordion-item:first-of-type { - border-top-left-radius: 0.25rem; - border-top-right-radius: 0.25rem; -} -.accordion-item:first-of-type .accordion-button { - border-top-left-radius: calc(0.25rem - 1px); - border-top-right-radius: calc(0.25rem - 1px); -} -.accordion-item:not(:first-of-type) { - border-top: 0; -} -.accordion-item:last-of-type { - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; -} -.accordion-item:last-of-type .accordion-button.collapsed { - border-bottom-right-radius: calc(0.25rem - 1px); - border-bottom-left-radius: calc(0.25rem - 1px); -} -.accordion-item:last-of-type .accordion-collapse { - border-bottom-right-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; -} - -.accordion-body { - padding: 1rem 1.25rem; -} - -.accordion-flush .accordion-collapse { - border-width: 0; -} -.accordion-flush .accordion-item { - border-right: 0; - border-left: 0; - border-radius: 0; -} -.accordion-flush .accordion-item:first-child { - border-top: 0; -} -.accordion-flush .accordion-item:last-child { - border-bottom: 0; -} -.accordion-flush .accordion-item .accordion-button { - border-radius: 0; -} - -.breadcrumb { - display: flex; - flex-wrap: wrap; - padding: 0 0; - margin-bottom: 1rem; - list-style: none; -} - -.breadcrumb-item + .breadcrumb-item { - padding-left: 0.5rem; -} -.breadcrumb-item + .breadcrumb-item::before { - float: left; - padding-right: 0.5rem; - color: #6c757d; - content: var(--bs-breadcrumb-divider, "/") /* rtl: var(--bs-breadcrumb-divider, "/") */; -} -.breadcrumb-item.active { - color: #6c757d; -} - -.pagination { - display: flex; - padding-left: 0; - list-style: none; -} - -.page-link { - position: relative; - display: block; - color: #0d6efd; - text-decoration: none; - background-color: #fff; - border: 1px solid #dee2e6; - transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; -} -@media (prefers-reduced-motion: reduce) { - .page-link { - transition: none; - } -} -.page-link:hover { - z-index: 2; - color: #0a58ca; - background-color: #e9ecef; - border-color: #dee2e6; -} -.page-link:focus { - z-index: 3; - color: #0a58ca; - background-color: #e9ecef; - outline: 0; - box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); -} - -.page-item:not(:first-child) .page-link { - margin-left: -1px; -} -.page-item.active .page-link { - z-index: 3; - color: #fff; - background-color: #0d6efd; - border-color: #0d6efd; -} -.page-item.disabled .page-link { - color: #6c757d; - pointer-events: none; - background-color: #fff; - border-color: #dee2e6; -} - -.page-link { - padding: 0.375rem 0.75rem; -} - -.page-item:first-child .page-link { - border-top-left-radius: 0.25rem; - border-bottom-left-radius: 0.25rem; -} -.page-item:last-child .page-link { - border-top-right-radius: 0.25rem; - border-bottom-right-radius: 0.25rem; -} - -.pagination-lg .page-link { - padding: 0.75rem 1.5rem; - font-size: 1.25rem; -} -.pagination-lg .page-item:first-child .page-link { - border-top-left-radius: 0.3rem; - border-bottom-left-radius: 0.3rem; -} -.pagination-lg .page-item:last-child .page-link { - border-top-right-radius: 0.3rem; - border-bottom-right-radius: 0.3rem; -} - -.pagination-sm .page-link { - padding: 0.25rem 0.5rem; - font-size: 0.875rem; -} -.pagination-sm .page-item:first-child .page-link { - border-top-left-radius: 0.2rem; - border-bottom-left-radius: 0.2rem; -} -.pagination-sm .page-item:last-child .page-link { - border-top-right-radius: 0.2rem; - border-bottom-right-radius: 0.2rem; -} - -.badge { - display: inline-block; - padding: 0.35em 0.65em; - font-size: 0.75em; - font-weight: 700; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: 0.25rem; -} -.badge:empty { - display: none; -} - -.btn .badge { - position: relative; - top: -1px; -} - -.alert { - position: relative; - padding: 1rem 1rem; - margin-bottom: 1rem; - border: 1px solid transparent; - border-radius: 0.25rem; -} - -.alert-heading { - color: inherit; -} - -.alert-link { - font-weight: 700; -} - -.alert-dismissible { - padding-right: 3rem; -} -.alert-dismissible .btn-close { - position: absolute; - top: 0; - right: 0; - z-index: 2; - padding: 1.25rem 1rem; -} - -.alert-primary { - color: #084298; - background-color: #cfe2ff; - border-color: #b6d4fe; -} -.alert-primary .alert-link { - color: #06357a; -} - -.alert-secondary { - color: #41464b; - background-color: #e2e3e5; - border-color: #d3d6d8; -} -.alert-secondary .alert-link { - color: #34383c; -} - -.alert-success { - color: #0f5132; - background-color: #d1e7dd; - border-color: #badbcc; -} -.alert-success .alert-link { - color: #0c4128; -} - -.alert-info { - color: #055160; - background-color: #cff4fc; - border-color: #b6effb; -} -.alert-info .alert-link { - color: #04414d; -} - -.alert-warning { - color: #664d03; - background-color: #fff3cd; - border-color: #ffecb5; -} -.alert-warning .alert-link { - color: #523e02; -} - -.alert-danger { - color: #842029; - background-color: #f8d7da; - border-color: #f5c2c7; -} -.alert-danger .alert-link { - color: #6a1a21; -} - -.alert-light { - color: #636464; - background-color: #fefefe; - border-color: #fdfdfe; -} -.alert-light .alert-link { - color: #4f5050; -} - -.alert-dark { - color: #141619; - background-color: #d3d3d4; - border-color: #bcbebf; -} -.alert-dark .alert-link { - color: #101214; -} - -@keyframes progress-bar-stripes { - 0% { - background-position-x: 1rem; - } -} -.progress { - display: flex; - height: 1rem; - overflow: hidden; - font-size: 0.75rem; - background-color: #e9ecef; - border-radius: 0.25rem; -} - -.progress-bar { - display: flex; - flex-direction: column; - justify-content: center; - overflow: hidden; - color: #fff; - text-align: center; - white-space: nowrap; - background-color: #0d6efd; - transition: width 0.6s ease; -} -@media (prefers-reduced-motion: reduce) { - .progress-bar { - transition: none; - } -} - -.progress-bar-striped { - background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-size: 1rem 1rem; -} - -.progress-bar-animated { - animation: 1s linear infinite progress-bar-stripes; -} -@media (prefers-reduced-motion: reduce) { - .progress-bar-animated { - animation: none; - } -} - -.list-group { - display: flex; - flex-direction: column; - padding-left: 0; - margin-bottom: 0; - border-radius: 0.25rem; -} - -.list-group-numbered { - list-style-type: none; - counter-reset: section; -} -.list-group-numbered > li::before { - content: counters(section, ".") ". "; - counter-increment: section; -} - -.list-group-item-action { - width: 100%; - color: #495057; - text-align: inherit; -} -.list-group-item-action:hover, .list-group-item-action:focus { - z-index: 1; - color: #495057; - text-decoration: none; - background-color: #f8f9fa; -} -.list-group-item-action:active { - color: #212529; - background-color: #e9ecef; -} - -.list-group-item { - position: relative; - display: block; - padding: 0.5rem 1rem; - color: #212529; - text-decoration: none; - background-color: #fff; - border: 1px solid rgba(0, 0, 0, 0.125); -} -.list-group-item:first-child { - border-top-left-radius: inherit; - border-top-right-radius: inherit; -} -.list-group-item:last-child { - border-bottom-right-radius: inherit; - border-bottom-left-radius: inherit; -} -.list-group-item.disabled, .list-group-item:disabled { - color: #6c757d; - pointer-events: none; - background-color: #fff; -} -.list-group-item.active { - z-index: 2; - color: #fff; - background-color: #0d6efd; - border-color: #0d6efd; -} -.list-group-item + .list-group-item { - border-top-width: 0; -} -.list-group-item + .list-group-item.active { - margin-top: -1px; - border-top-width: 1px; -} - -.list-group-horizontal { - flex-direction: row; -} -.list-group-horizontal > .list-group-item:first-child { - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; -} -.list-group-horizontal > .list-group-item:last-child { - border-top-right-radius: 0.25rem; - border-bottom-left-radius: 0; -} -.list-group-horizontal > .list-group-item.active { - margin-top: 0; -} -.list-group-horizontal > .list-group-item + .list-group-item { - border-top-width: 1px; - border-left-width: 0; -} -.list-group-horizontal > .list-group-item + .list-group-item.active { - margin-left: -1px; - border-left-width: 1px; -} - -@media (min-width: 576px) { - .list-group-horizontal-sm { - flex-direction: row; - } - .list-group-horizontal-sm > .list-group-item:first-child { - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; - } - .list-group-horizontal-sm > .list-group-item:last-child { - border-top-right-radius: 0.25rem; - border-bottom-left-radius: 0; - } - .list-group-horizontal-sm > .list-group-item.active { - margin-top: 0; - } - .list-group-horizontal-sm > .list-group-item + .list-group-item { - border-top-width: 1px; - border-left-width: 0; - } - .list-group-horizontal-sm > .list-group-item + .list-group-item.active { - margin-left: -1px; - border-left-width: 1px; - } -} -@media (min-width: 768px) { - .list-group-horizontal-md { - flex-direction: row; - } - .list-group-horizontal-md > .list-group-item:first-child { - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; - } - .list-group-horizontal-md > .list-group-item:last-child { - border-top-right-radius: 0.25rem; - border-bottom-left-radius: 0; - } - .list-group-horizontal-md > .list-group-item.active { - margin-top: 0; - } - .list-group-horizontal-md > .list-group-item + .list-group-item { - border-top-width: 1px; - border-left-width: 0; - } - .list-group-horizontal-md > .list-group-item + .list-group-item.active { - margin-left: -1px; - border-left-width: 1px; - } -} -@media (min-width: 992px) { - .list-group-horizontal-lg { - flex-direction: row; - } - .list-group-horizontal-lg > .list-group-item:first-child { - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; - } - .list-group-horizontal-lg > .list-group-item:last-child { - border-top-right-radius: 0.25rem; - border-bottom-left-radius: 0; - } - .list-group-horizontal-lg > .list-group-item.active { - margin-top: 0; - } - .list-group-horizontal-lg > .list-group-item + .list-group-item { - border-top-width: 1px; - border-left-width: 0; - } - .list-group-horizontal-lg > .list-group-item + .list-group-item.active { - margin-left: -1px; - border-left-width: 1px; - } -} -@media (min-width: 1200px) { - .list-group-horizontal-xl { - flex-direction: row; - } - .list-group-horizontal-xl > .list-group-item:first-child { - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; - } - .list-group-horizontal-xl > .list-group-item:last-child { - border-top-right-radius: 0.25rem; - border-bottom-left-radius: 0; - } - .list-group-horizontal-xl > .list-group-item.active { - margin-top: 0; - } - .list-group-horizontal-xl > .list-group-item + .list-group-item { - border-top-width: 1px; - border-left-width: 0; - } - .list-group-horizontal-xl > .list-group-item + .list-group-item.active { - margin-left: -1px; - border-left-width: 1px; - } -} -@media (min-width: 1400px) { - .list-group-horizontal-xxl { - flex-direction: row; - } - .list-group-horizontal-xxl > .list-group-item:first-child { - border-bottom-left-radius: 0.25rem; - border-top-right-radius: 0; - } - .list-group-horizontal-xxl > .list-group-item:last-child { - border-top-right-radius: 0.25rem; - border-bottom-left-radius: 0; - } - .list-group-horizontal-xxl > .list-group-item.active { - margin-top: 0; - } - .list-group-horizontal-xxl > .list-group-item + .list-group-item { - border-top-width: 1px; - border-left-width: 0; - } - .list-group-horizontal-xxl > .list-group-item + .list-group-item.active { - margin-left: -1px; - border-left-width: 1px; - } -} -.list-group-flush { - border-radius: 0; -} -.list-group-flush > .list-group-item { - border-width: 0 0 1px; -} -.list-group-flush > .list-group-item:last-child { - border-bottom-width: 0; -} - -.list-group-item-primary { - color: #084298; - background-color: #cfe2ff; -} -.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus { - color: #084298; - background-color: #bacbe6; -} -.list-group-item-primary.list-group-item-action.active { - color: #fff; - background-color: #084298; - border-color: #084298; -} - -.list-group-item-secondary { - color: #41464b; - background-color: #e2e3e5; -} -.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus { - color: #41464b; - background-color: #cbccce; -} -.list-group-item-secondary.list-group-item-action.active { - color: #fff; - background-color: #41464b; - border-color: #41464b; -} - -.list-group-item-success { - color: #0f5132; - background-color: #d1e7dd; -} -.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus { - color: #0f5132; - background-color: #bcd0c7; -} -.list-group-item-success.list-group-item-action.active { - color: #fff; - background-color: #0f5132; - border-color: #0f5132; -} - -.list-group-item-info { - color: #055160; - background-color: #cff4fc; -} -.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus { - color: #055160; - background-color: #badce3; -} -.list-group-item-info.list-group-item-action.active { - color: #fff; - background-color: #055160; - border-color: #055160; -} - -.list-group-item-warning { - color: #664d03; - background-color: #fff3cd; -} -.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus { - color: #664d03; - background-color: #e6dbb9; -} -.list-group-item-warning.list-group-item-action.active { - color: #fff; - background-color: #664d03; - border-color: #664d03; -} - -.list-group-item-danger { - color: #842029; - background-color: #f8d7da; -} -.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus { - color: #842029; - background-color: #dfc2c4; -} -.list-group-item-danger.list-group-item-action.active { - color: #fff; - background-color: #842029; - border-color: #842029; -} - -.list-group-item-light { - color: #636464; - background-color: #fefefe; -} -.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus { - color: #636464; - background-color: #e5e5e5; -} -.list-group-item-light.list-group-item-action.active { - color: #fff; - background-color: #636464; - border-color: #636464; -} - -.list-group-item-dark { - color: #141619; - background-color: #d3d3d4; -} -.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus { - color: #141619; - background-color: #bebebf; -} -.list-group-item-dark.list-group-item-action.active { - color: #fff; - background-color: #141619; - border-color: #141619; -} - -.btn-close { - box-sizing: content-box; - width: 1em; - height: 1em; - padding: 0.25em 0.25em; - color: #000; - background: transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat; - border: 0; - border-radius: 0.25rem; - opacity: 0.5; -} -.btn-close:hover { - color: #000; - text-decoration: none; - opacity: 0.75; -} -.btn-close:focus { - outline: 0; - box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); - opacity: 1; -} -.btn-close:disabled, .btn-close.disabled { - pointer-events: none; - user-select: none; - opacity: 0.25; -} - -.btn-close-white { - filter: invert(1) grayscale(100%) brightness(200%); -} - -.toast { - width: 350px; - max-width: 100%; - font-size: 0.875rem; - pointer-events: auto; - background-color: rgba(255, 255, 255, 0.85); - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.1); - box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); - border-radius: 0.25rem; -} -.toast:not(.showing):not(.show) { - opacity: 0; -} -.toast.hide { - display: none; -} - -.toast-container { - width: max-content; - max-width: 100%; - pointer-events: none; -} -.toast-container > :not(:last-child) { - margin-bottom: 0.75rem; -} - -.toast-header { - display: flex; - align-items: center; - padding: 0.5rem 0.75rem; - color: #6c757d; - background-color: rgba(255, 255, 255, 0.85); - background-clip: padding-box; - border-bottom: 1px solid rgba(0, 0, 0, 0.05); - border-top-left-radius: calc(0.25rem - 1px); - border-top-right-radius: calc(0.25rem - 1px); -} -.toast-header .btn-close { - margin-right: -0.375rem; - margin-left: 0.75rem; -} - -.toast-body { - padding: 0.75rem; - word-wrap: break-word; -} - -.modal { - position: fixed; - top: 0; - left: 0; - z-index: 1060; - display: none; - width: 100%; - height: 100%; - overflow-x: hidden; - overflow-y: auto; - outline: 0; -} - -.modal-dialog { - position: relative; - width: auto; - margin: 0.5rem; - pointer-events: none; -} -.modal.fade .modal-dialog { - transition: transform 0.3s ease-out; - transform: translate(0, -50px); -} -@media (prefers-reduced-motion: reduce) { - .modal.fade .modal-dialog { - transition: none; - } -} -.modal.show .modal-dialog { - transform: none; -} -.modal.modal-static .modal-dialog { - transform: scale(1.02); -} - -.modal-dialog-scrollable { - height: calc(100% - 1rem); -} -.modal-dialog-scrollable .modal-content { - max-height: 100%; - overflow: hidden; -} -.modal-dialog-scrollable .modal-body { - overflow-y: auto; -} - -.modal-dialog-centered { - display: flex; - align-items: center; - min-height: calc(100% - 1rem); -} - -.modal-content { - position: relative; - display: flex; - flex-direction: column; - width: 100%; - pointer-events: auto; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 0.3rem; - outline: 0; -} - -.modal-backdrop { - position: fixed; - top: 0; - left: 0; - z-index: 1040; - width: 100vw; - height: 100vh; - background-color: #000; -} -.modal-backdrop.fade { - opacity: 0; -} -.modal-backdrop.show { - opacity: 0.5; -} - -.modal-header { - display: flex; - flex-shrink: 0; - align-items: center; - justify-content: space-between; - padding: 1rem 1rem; - border-bottom: 1px solid #dee2e6; - border-top-left-radius: calc(0.3rem - 1px); - border-top-right-radius: calc(0.3rem - 1px); -} -.modal-header .btn-close { - padding: 0.5rem 0.5rem; - margin: -0.5rem -0.5rem -0.5rem auto; -} - -.modal-title { - margin-bottom: 0; - line-height: 1.5; -} - -.modal-body { - position: relative; - flex: 1 1 auto; - padding: 1rem; -} - -.modal-footer { - display: flex; - flex-wrap: wrap; - flex-shrink: 0; - align-items: center; - justify-content: flex-end; - padding: 0.75rem; - border-top: 1px solid #dee2e6; - border-bottom-right-radius: calc(0.3rem - 1px); - border-bottom-left-radius: calc(0.3rem - 1px); -} -.modal-footer > * { - margin: 0.25rem; -} - -@media (min-width: 576px) { - .modal-dialog { - max-width: 500px; - margin: 1.75rem auto; - } - - .modal-dialog-scrollable { - height: calc(100% - 3.5rem); - } - - .modal-dialog-centered { - min-height: calc(100% - 3.5rem); - } - - .modal-sm { - max-width: 300px; - } -} -@media (min-width: 992px) { - .modal-lg, -.modal-xl { - max-width: 800px; - } -} -@media (min-width: 1200px) { - .modal-xl { - max-width: 1140px; - } -} -.modal-fullscreen { - width: 100vw; - max-width: none; - height: 100%; - margin: 0; -} -.modal-fullscreen .modal-content { - height: 100%; - border: 0; - border-radius: 0; -} -.modal-fullscreen .modal-header { - border-radius: 0; -} -.modal-fullscreen .modal-body { - overflow-y: auto; -} -.modal-fullscreen .modal-footer { - border-radius: 0; -} - -@media (max-width: 575.98px) { - .modal-fullscreen-sm-down { - width: 100vw; - max-width: none; - height: 100%; - margin: 0; - } - .modal-fullscreen-sm-down .modal-content { - height: 100%; - border: 0; - border-radius: 0; - } - .modal-fullscreen-sm-down .modal-header { - border-radius: 0; - } - .modal-fullscreen-sm-down .modal-body { - overflow-y: auto; - } - .modal-fullscreen-sm-down .modal-footer { - border-radius: 0; - } -} -@media (max-width: 767.98px) { - .modal-fullscreen-md-down { - width: 100vw; - max-width: none; - height: 100%; - margin: 0; - } - .modal-fullscreen-md-down .modal-content { - height: 100%; - border: 0; - border-radius: 0; - } - .modal-fullscreen-md-down .modal-header { - border-radius: 0; - } - .modal-fullscreen-md-down .modal-body { - overflow-y: auto; - } - .modal-fullscreen-md-down .modal-footer { - border-radius: 0; - } -} -@media (max-width: 991.98px) { - .modal-fullscreen-lg-down { - width: 100vw; - max-width: none; - height: 100%; - margin: 0; - } - .modal-fullscreen-lg-down .modal-content { - height: 100%; - border: 0; - border-radius: 0; - } - .modal-fullscreen-lg-down .modal-header { - border-radius: 0; - } - .modal-fullscreen-lg-down .modal-body { - overflow-y: auto; - } - .modal-fullscreen-lg-down .modal-footer { - border-radius: 0; - } -} -@media (max-width: 1199.98px) { - .modal-fullscreen-xl-down { - width: 100vw; - max-width: none; - height: 100%; - margin: 0; - } - .modal-fullscreen-xl-down .modal-content { - height: 100%; - border: 0; - border-radius: 0; - } - .modal-fullscreen-xl-down .modal-header { - border-radius: 0; - } - .modal-fullscreen-xl-down .modal-body { - overflow-y: auto; - } - .modal-fullscreen-xl-down .modal-footer { - border-radius: 0; - } -} -@media (max-width: 1399.98px) { - .modal-fullscreen-xxl-down { - width: 100vw; - max-width: none; - height: 100%; - margin: 0; - } - .modal-fullscreen-xxl-down .modal-content { - height: 100%; - border: 0; - border-radius: 0; - } - .modal-fullscreen-xxl-down .modal-header { - border-radius: 0; - } - .modal-fullscreen-xxl-down .modal-body { - overflow-y: auto; - } - .modal-fullscreen-xxl-down .modal-footer { - border-radius: 0; - } -} -.tooltip { - position: absolute; - z-index: 1080; - display: block; - margin: 0; - font-family: var(--bs-font-sans-serif); - font-style: normal; - font-weight: 400; - line-height: 1.5; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - white-space: normal; - line-break: auto; - font-size: 0.875rem; - word-wrap: break-word; - opacity: 0; -} -.tooltip.show { - opacity: 0.9; -} -.tooltip .tooltip-arrow { - position: absolute; - display: block; - width: 0.8rem; - height: 0.4rem; -} -.tooltip .tooltip-arrow::before { - position: absolute; - content: ""; - border-color: transparent; - border-style: solid; -} - -.bs-tooltip-top, .bs-tooltip-auto[data-popper-placement^=top] { - padding: 0.4rem 0; -} -.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow { - bottom: 0; -} -.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before { - top: -1px; - border-width: 0.4rem 0.4rem 0; - border-top-color: #000; -} - -.bs-tooltip-end, .bs-tooltip-auto[data-popper-placement^=right] { - padding: 0 0.4rem; -} -.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow { - left: 0; - width: 0.4rem; - height: 0.8rem; -} -.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before { - right: -1px; - border-width: 0.4rem 0.4rem 0.4rem 0; - border-right-color: #000; -} - -.bs-tooltip-bottom, .bs-tooltip-auto[data-popper-placement^=bottom] { - padding: 0.4rem 0; -} -.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow { - top: 0; -} -.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before { - bottom: -1px; - border-width: 0 0.4rem 0.4rem; - border-bottom-color: #000; -} - -.bs-tooltip-start, .bs-tooltip-auto[data-popper-placement^=left] { - padding: 0 0.4rem; -} -.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow { - right: 0; - width: 0.4rem; - height: 0.8rem; -} -.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before { - left: -1px; - border-width: 0.4rem 0 0.4rem 0.4rem; - border-left-color: #000; -} - -.tooltip-inner { - max-width: 200px; - padding: 0.25rem 0.5rem; - color: #fff; - text-align: center; - background-color: #000; - border-radius: 0.25rem; -} - -.popover { - position: absolute; - top: 0; - left: 0 /* rtl:ignore */; - z-index: 1070; - display: block; - max-width: 276px; - font-family: var(--bs-font-sans-serif); - font-style: normal; - font-weight: 400; - line-height: 1.5; - text-align: left; - text-align: start; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-break: normal; - word-spacing: normal; - white-space: normal; - line-break: auto; - font-size: 0.875rem; - word-wrap: break-word; - background-color: #fff; - background-clip: padding-box; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 0.3rem; -} -.popover .popover-arrow { - position: absolute; - display: block; - width: 1rem; - height: 0.5rem; -} -.popover .popover-arrow::before, .popover .popover-arrow::after { - position: absolute; - display: block; - content: ""; - border-color: transparent; - border-style: solid; -} - -.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow { - bottom: calc(-0.5rem - 1px); -} -.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before { - bottom: 0; - border-width: 0.5rem 0.5rem 0; - border-top-color: rgba(0, 0, 0, 0.25); -} -.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after { - bottom: 1px; - border-width: 0.5rem 0.5rem 0; - border-top-color: #fff; -} - -.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow { - left: calc(-0.5rem - 1px); - width: 0.5rem; - height: 1rem; -} -.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before { - left: 0; - border-width: 0.5rem 0.5rem 0.5rem 0; - border-right-color: rgba(0, 0, 0, 0.25); -} -.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after { - left: 1px; - border-width: 0.5rem 0.5rem 0.5rem 0; - border-right-color: #fff; -} - -.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow { - top: calc(-0.5rem - 1px); -} -.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before { - top: 0; - border-width: 0 0.5rem 0.5rem 0.5rem; - border-bottom-color: rgba(0, 0, 0, 0.25); -} -.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after { - top: 1px; - border-width: 0 0.5rem 0.5rem 0.5rem; - border-bottom-color: #fff; -} -.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before { - position: absolute; - top: 0; - left: 50%; - display: block; - width: 1rem; - margin-left: -0.5rem; - content: ""; - border-bottom: 1px solid #f0f0f0; -} - -.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow { - right: calc(-0.5rem - 1px); - width: 0.5rem; - height: 1rem; -} -.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before { - right: 0; - border-width: 0.5rem 0 0.5rem 0.5rem; - border-left-color: rgba(0, 0, 0, 0.25); -} -.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after { - right: 1px; - border-width: 0.5rem 0 0.5rem 0.5rem; - border-left-color: #fff; -} - -.popover-header { - padding: 0.5rem 1rem; - margin-bottom: 0; - font-size: 1rem; - background-color: #f0f0f0; - border-bottom: 1px solid rgba(0, 0, 0, 0.2); - border-top-left-radius: calc(0.3rem - 1px); - border-top-right-radius: calc(0.3rem - 1px); -} -.popover-header:empty { - display: none; -} - -.popover-body { - padding: 1rem 1rem; - color: #212529; -} - -.carousel { - position: relative; -} - -.carousel.pointer-event { - touch-action: pan-y; -} - -.carousel-inner { - position: relative; - width: 100%; - overflow: hidden; -} -.carousel-inner::after { - display: block; - clear: both; - content: ""; -} - -.carousel-item { - position: relative; - display: none; - float: left; - width: 100%; - margin-right: -100%; - backface-visibility: hidden; - transition: transform 0.6s ease-in-out; -} -@media (prefers-reduced-motion: reduce) { - .carousel-item { - transition: none; - } -} - -.carousel-item.active, -.carousel-item-next, -.carousel-item-prev { - display: block; -} - -/* rtl:begin:ignore */ -.carousel-item-next:not(.carousel-item-start), -.active.carousel-item-end { - transform: translateX(100%); -} - -.carousel-item-prev:not(.carousel-item-end), -.active.carousel-item-start { - transform: translateX(-100%); -} - -/* rtl:end:ignore */ -.carousel-fade .carousel-item { - opacity: 0; - transition-property: opacity; - transform: none; -} -.carousel-fade .carousel-item.active, -.carousel-fade .carousel-item-next.carousel-item-start, -.carousel-fade .carousel-item-prev.carousel-item-end { - z-index: 1; - opacity: 1; -} -.carousel-fade .active.carousel-item-start, -.carousel-fade .active.carousel-item-end { - z-index: 0; - opacity: 0; - transition: opacity 0s 0.6s; -} -@media (prefers-reduced-motion: reduce) { - .carousel-fade .active.carousel-item-start, -.carousel-fade .active.carousel-item-end { - transition: none; - } -} - -.carousel-control-prev, -.carousel-control-next { - position: absolute; - top: 0; - bottom: 0; - z-index: 1; - display: flex; - align-items: center; - justify-content: center; - width: 15%; - padding: 0; - color: #fff; - text-align: center; - background: none; - border: 0; - opacity: 0.5; - transition: opacity 0.15s ease; -} -@media (prefers-reduced-motion: reduce) { - .carousel-control-prev, -.carousel-control-next { - transition: none; - } -} -.carousel-control-prev:hover, .carousel-control-prev:focus, -.carousel-control-next:hover, -.carousel-control-next:focus { - color: #fff; - text-decoration: none; - outline: 0; - opacity: 0.9; -} - -.carousel-control-prev { - left: 0; -} - -.carousel-control-next { - right: 0; -} - -.carousel-control-prev-icon, -.carousel-control-next-icon { - display: inline-block; - width: 2rem; - height: 2rem; - background-repeat: no-repeat; - background-position: 50%; - background-size: 100% 100%; -} - -/* rtl:options: { - "autoRename": true, - "stringMap":[ { - "name" : "prev-next", - "search" : "prev", - "replace" : "next" - } ] -} */ -.carousel-control-prev-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e"); -} - -.carousel-control-next-icon { - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); -} - -.carousel-indicators { - position: absolute; - right: 0; - bottom: 0; - left: 0; - z-index: 2; - display: flex; - justify-content: center; - padding: 0; - margin-right: 15%; - margin-bottom: 1rem; - margin-left: 15%; - list-style: none; -} -.carousel-indicators [data-bs-target] { - box-sizing: content-box; - flex: 0 1 auto; - width: 30px; - height: 3px; - padding: 0; - margin-right: 3px; - margin-left: 3px; - text-indent: -999px; - cursor: pointer; - background-color: #fff; - background-clip: padding-box; - border: 0; - border-top: 10px solid transparent; - border-bottom: 10px solid transparent; - opacity: 0.5; - transition: opacity 0.6s ease; -} -@media (prefers-reduced-motion: reduce) { - .carousel-indicators [data-bs-target] { - transition: none; - } -} -.carousel-indicators .active { - opacity: 1; -} - -.carousel-caption { - position: absolute; - right: 15%; - bottom: 1.25rem; - left: 15%; - padding-top: 1.25rem; - padding-bottom: 1.25rem; - color: #fff; - text-align: center; -} - -.carousel-dark .carousel-control-prev-icon, -.carousel-dark .carousel-control-next-icon { - filter: invert(1) grayscale(100); -} -.carousel-dark .carousel-indicators [data-bs-target] { - background-color: #000; -} -.carousel-dark .carousel-caption { - color: #000; -} - -@keyframes spinner-border { - to { - transform: rotate(360deg) /* rtl:ignore */; - } -} -.spinner-border { - display: inline-block; - width: 2rem; - height: 2rem; - vertical-align: -0.125em; - border: 0.25em solid currentColor; - border-right-color: transparent; - border-radius: 50%; - animation: 0.75s linear infinite spinner-border; -} - -.spinner-border-sm { - width: 1rem; - height: 1rem; - border-width: 0.2em; -} - -@keyframes spinner-grow { - 0% { - transform: scale(0); - } - 50% { - opacity: 1; - transform: none; - } -} -.spinner-grow { - display: inline-block; - width: 2rem; - height: 2rem; - vertical-align: -0.125em; - background-color: currentColor; - border-radius: 50%; - opacity: 0; - animation: 0.75s linear infinite spinner-grow; -} - -.spinner-grow-sm { - width: 1rem; - height: 1rem; -} - -@media (prefers-reduced-motion: reduce) { - .spinner-border, -.spinner-grow { - animation-duration: 1.5s; - } -} -.offcanvas { - position: fixed; - bottom: 0; - z-index: 1050; - display: flex; - flex-direction: column; - max-width: 100%; - visibility: hidden; - background-color: #fff; - background-clip: padding-box; - outline: 0; - transition: transform 0.3s ease-in-out; -} -@media (prefers-reduced-motion: reduce) { - .offcanvas { - transition: none; - } -} - -.offcanvas-header { - display: flex; - align-items: center; - justify-content: space-between; - padding: 1rem 1rem; -} -.offcanvas-header .btn-close { - padding: 0.5rem 0.5rem; - margin-top: -0.5rem; - margin-right: -0.5rem; - margin-bottom: -0.5rem; -} - -.offcanvas-title { - margin-bottom: 0; - line-height: 1.5; -} - -.offcanvas-body { - flex-grow: 1; - padding: 1rem 1rem; - overflow-y: auto; -} - -.offcanvas-start { - top: 0; - left: 0; - width: 400px; - border-right: 1px solid rgba(0, 0, 0, 0.2); - transform: translateX(-100%); -} - -.offcanvas-end { - top: 0; - right: 0; - width: 400px; - border-left: 1px solid rgba(0, 0, 0, 0.2); - transform: translateX(100%); -} - -.offcanvas-top { - top: 0; - right: 0; - left: 0; - height: 30vh; - max-height: 100%; - border-bottom: 1px solid rgba(0, 0, 0, 0.2); - transform: translateY(-100%); -} - -.offcanvas-bottom { - right: 0; - left: 0; - height: 30vh; - max-height: 100%; - border-top: 1px solid rgba(0, 0, 0, 0.2); - transform: translateY(100%); -} - -.offcanvas.show { - transform: none; -} - -.clearfix::after { - display: block; - clear: both; - content: ""; -} - -.link-primary { - color: #0d6efd; -} -.link-primary:hover, .link-primary:focus { - color: #0a58ca; -} - -.link-secondary { - color: #6c757d; -} -.link-secondary:hover, .link-secondary:focus { - color: #565e64; -} - -.link-success { - color: #198754; -} -.link-success:hover, .link-success:focus { - color: #146c43; -} - -.link-info { - color: #0dcaf0; -} -.link-info:hover, .link-info:focus { - color: #3dd5f3; -} - -.link-warning { - color: #ffc107; -} -.link-warning:hover, .link-warning:focus { - color: #ffcd39; -} - -.link-danger { - color: #dc3545; -} -.link-danger:hover, .link-danger:focus { - color: #b02a37; -} - -.link-light { - color: #f8f9fa; -} -.link-light:hover, .link-light:focus { - color: #f9fafb; -} - -.link-dark { - color: #212529; -} -.link-dark:hover, .link-dark:focus { - color: #1a1e21; -} - -.ratio { - position: relative; - width: 100%; -} -.ratio::before { - display: block; - padding-top: var(--bs-aspect-ratio); - content: ""; -} -.ratio > * { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; -} - -.ratio-1x1 { - --bs-aspect-ratio: 100%; -} - -.ratio-4x3 { - --bs-aspect-ratio: calc(3 / 4 * 100%); -} - -.ratio-16x9 { - --bs-aspect-ratio: calc(9 / 16 * 100%); -} - -.ratio-21x9 { - --bs-aspect-ratio: calc(9 / 21 * 100%); -} - -.fixed-top { - position: fixed; - top: 0; - right: 0; - left: 0; - z-index: 1030; -} - -.fixed-bottom { - position: fixed; - right: 0; - bottom: 0; - left: 0; - z-index: 1030; -} - -.sticky-top { - position: sticky; - top: 0; - z-index: 1020; -} - -@media (min-width: 576px) { - .sticky-sm-top { - position: sticky; - top: 0; - z-index: 1020; - } -} -@media (min-width: 768px) { - .sticky-md-top { - position: sticky; - top: 0; - z-index: 1020; - } -} -@media (min-width: 992px) { - .sticky-lg-top { - position: sticky; - top: 0; - z-index: 1020; - } -} -@media (min-width: 1200px) { - .sticky-xl-top { - position: sticky; - top: 0; - z-index: 1020; - } -} -@media (min-width: 1400px) { - .sticky-xxl-top { - position: sticky; - top: 0; - z-index: 1020; - } -} -.visually-hidden, -.visually-hidden-focusable:not(:focus):not(:focus-within) { - position: absolute !important; - width: 1px !important; - height: 1px !important; - padding: 0 !important; - margin: -1px !important; - overflow: hidden !important; - clip: rect(0, 0, 0, 0) !important; - white-space: nowrap !important; - border: 0 !important; -} - -.stretched-link::after { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1; - content: ""; -} - -.text-truncate { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.align-baseline { - vertical-align: baseline !important; -} - -.align-top { - vertical-align: top !important; -} - -.align-middle { - vertical-align: middle !important; -} - -.align-bottom { - vertical-align: bottom !important; -} - -.align-text-bottom { - vertical-align: text-bottom !important; -} - -.align-text-top { - vertical-align: text-top !important; -} - -.float-start { - float: left !important; -} - -.float-end { - float: right !important; -} - -.float-none { - float: none !important; -} - -.overflow-auto { - overflow: auto !important; -} - -.overflow-hidden { - overflow: hidden !important; -} - -.overflow-visible { - overflow: visible !important; -} - -.overflow-scroll { - overflow: scroll !important; -} - -.d-inline { - display: inline !important; -} - -.d-inline-block { - display: inline-block !important; -} - -.d-block { - display: block !important; -} - -.d-grid { - display: grid !important; -} - -.d-table { - display: table !important; -} - -.d-table-row { - display: table-row !important; -} - -.d-table-cell { - display: table-cell !important; -} - -.d-flex { - display: flex !important; -} - -.d-inline-flex { - display: inline-flex !important; -} - -.d-none { - display: none !important; -} - -.shadow { - box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; -} - -.shadow-sm { - box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; -} - -.shadow-lg { - box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; -} - -.shadow-none { - box-shadow: none !important; -} - -.position-static { - position: static !important; -} - -.position-relative { - position: relative !important; -} - -.position-absolute { - position: absolute !important; -} - -.position-fixed { - position: fixed !important; -} - -.position-sticky { - position: sticky !important; -} - -.top-0 { - top: 0 !important; -} - -.top-50 { - top: 50% !important; -} - -.top-100 { - top: 100% !important; -} - -.bottom-0 { - bottom: 0 !important; -} - -.bottom-50 { - bottom: 50% !important; -} - -.bottom-100 { - bottom: 100% !important; -} - -.start-0 { - left: 0 !important; -} - -.start-50 { - left: 50% !important; -} - -.start-100 { - left: 100% !important; -} - -.end-0 { - right: 0 !important; -} - -.end-50 { - right: 50% !important; -} - -.end-100 { - right: 100% !important; -} - -.translate-middle { - transform: translate(-50%, -50%) !important; -} - -.translate-middle-x { - transform: translateX(-50%) !important; -} - -.translate-middle-y { - transform: translateY(-50%) !important; -} - -.border { - border: 1px solid #dee2e6 !important; -} - -.border-0 { - border: 0 !important; -} - -.border-top { - border-top: 1px solid #dee2e6 !important; -} - -.border-top-0 { - border-top: 0 !important; -} - -.border-end { - border-right: 1px solid #dee2e6 !important; -} - -.border-end-0 { - border-right: 0 !important; -} - -.border-bottom { - border-bottom: 1px solid #dee2e6 !important; -} - -.border-bottom-0 { - border-bottom: 0 !important; -} - -.border-start { - border-left: 1px solid #dee2e6 !important; -} - -.border-start-0 { - border-left: 0 !important; -} - -.border-primary { - border-color: #0d6efd !important; -} - -.border-secondary { - border-color: #6c757d !important; -} - -.border-success { - border-color: #198754 !important; -} - -.border-info { - border-color: #0dcaf0 !important; -} - -.border-warning { - border-color: #ffc107 !important; -} - -.border-danger { - border-color: #dc3545 !important; -} - -.border-light { - border-color: #f8f9fa !important; -} - -.border-dark { - border-color: #212529 !important; -} - -.border-white { - border-color: #fff !important; -} - -.border-1 { - border-width: 1px !important; -} - -.border-2 { - border-width: 2px !important; -} - -.border-3 { - border-width: 3px !important; -} - -.border-4 { - border-width: 4px !important; -} - -.border-5 { - border-width: 5px !important; -} - -.w-25 { - width: 25% !important; -} - -.w-50 { - width: 50% !important; -} - -.w-75 { - width: 75% !important; -} - -.w-100 { - width: 100% !important; -} - -.w-auto { - width: auto !important; -} - -.mw-100 { - max-width: 100% !important; -} - -.vw-100 { - width: 100vw !important; -} - -.min-vw-100 { - min-width: 100vw !important; -} - -.h-25 { - height: 25% !important; -} - -.h-50 { - height: 50% !important; -} - -.h-75 { - height: 75% !important; -} - -.h-100 { - height: 100% !important; -} - -.h-auto { - height: auto !important; -} - -.mh-100 { - max-height: 100% !important; -} - -.vh-100 { - height: 100vh !important; -} - -.min-vh-100 { - min-height: 100vh !important; -} - -.flex-fill { - flex: 1 1 auto !important; -} - -.flex-row { - flex-direction: row !important; -} - -.flex-column { - flex-direction: column !important; -} - -.flex-row-reverse { - flex-direction: row-reverse !important; -} - -.flex-column-reverse { - flex-direction: column-reverse !important; -} - -.flex-grow-0 { - flex-grow: 0 !important; -} - -.flex-grow-1 { - flex-grow: 1 !important; -} - -.flex-shrink-0 { - flex-shrink: 0 !important; -} - -.flex-shrink-1 { - flex-shrink: 1 !important; -} - -.flex-wrap { - flex-wrap: wrap !important; -} - -.flex-nowrap { - flex-wrap: nowrap !important; -} - -.flex-wrap-reverse { - flex-wrap: wrap-reverse !important; -} - -.gap-0 { - gap: 0 !important; -} - -.gap-1 { - gap: 0.25rem !important; -} - -.gap-2 { - gap: 0.5rem !important; -} - -.gap-3 { - gap: 1rem !important; -} - -.gap-4 { - gap: 1.5rem !important; -} - -.gap-5 { - gap: 3rem !important; -} - -.justify-content-start { - justify-content: flex-start !important; -} - -.justify-content-end { - justify-content: flex-end !important; -} - -.justify-content-center { - justify-content: center !important; -} - -.justify-content-between { - justify-content: space-between !important; -} - -.justify-content-around { - justify-content: space-around !important; -} - -.justify-content-evenly { - justify-content: space-evenly !important; -} - -.align-items-start { - align-items: flex-start !important; -} - -.align-items-end { - align-items: flex-end !important; -} - -.align-items-center { - align-items: center !important; -} - -.align-items-baseline { - align-items: baseline !important; -} - -.align-items-stretch { - align-items: stretch !important; -} - -.align-content-start { - align-content: flex-start !important; -} - -.align-content-end { - align-content: flex-end !important; -} - -.align-content-center { - align-content: center !important; -} - -.align-content-between { - align-content: space-between !important; -} - -.align-content-around { - align-content: space-around !important; -} - -.align-content-stretch { - align-content: stretch !important; -} - -.align-self-auto { - align-self: auto !important; -} - -.align-self-start { - align-self: flex-start !important; -} - -.align-self-end { - align-self: flex-end !important; -} - -.align-self-center { - align-self: center !important; -} - -.align-self-baseline { - align-self: baseline !important; -} - -.align-self-stretch { - align-self: stretch !important; -} - -.order-first { - order: -1 !important; -} - -.order-0 { - order: 0 !important; -} - -.order-1 { - order: 1 !important; -} - -.order-2 { - order: 2 !important; -} - -.order-3 { - order: 3 !important; -} - -.order-4 { - order: 4 !important; -} - -.order-5 { - order: 5 !important; -} - -.order-last { - order: 6 !important; -} - -.m-0 { - margin: 0 !important; -} - -.m-1 { - margin: 0.25rem !important; -} - -.m-2 { - margin: 0.5rem !important; -} - -.m-3 { - margin: 1rem !important; -} - -.m-4 { - margin: 1.5rem !important; -} - -.m-5 { - margin: 3rem !important; -} - -.m-auto { - margin: auto !important; -} - -.mx-0 { - margin-right: 0 !important; - margin-left: 0 !important; -} - -.mx-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; -} - -.mx-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; -} - -.mx-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; -} - -.mx-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; -} - -.mx-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; -} - -.mx-auto { - margin-right: auto !important; - margin-left: auto !important; -} - -.my-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; -} - -.my-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; -} - -.my-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; -} - -.my-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; -} - -.my-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; -} - -.my-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; -} - -.my-auto { - margin-top: auto !important; - margin-bottom: auto !important; -} - -.mt-0 { - margin-top: 0 !important; -} - -.mt-1 { - margin-top: 0.25rem !important; -} - -.mt-2 { - margin-top: 0.5rem !important; -} - -.mt-3 { - margin-top: 1rem !important; -} - -.mt-4 { - margin-top: 1.5rem !important; -} - -.mt-5 { - margin-top: 3rem !important; -} - -.mt-auto { - margin-top: auto !important; -} - -.me-0 { - margin-right: 0 !important; -} - -.me-1 { - margin-right: 0.25rem !important; -} - -.me-2 { - margin-right: 0.5rem !important; -} - -.me-3 { - margin-right: 1rem !important; -} - -.me-4 { - margin-right: 1.5rem !important; -} - -.me-5 { - margin-right: 3rem !important; -} - -.me-auto { - margin-right: auto !important; -} - -.mb-0 { - margin-bottom: 0 !important; -} - -.mb-1 { - margin-bottom: 0.25rem !important; -} - -.mb-2 { - margin-bottom: 0.5rem !important; -} - -.mb-3 { - margin-bottom: 1rem !important; -} - -.mb-4 { - margin-bottom: 1.5rem !important; -} - -.mb-5 { - margin-bottom: 3rem !important; -} - -.mb-auto { - margin-bottom: auto !important; -} - -.ms-0 { - margin-left: 0 !important; -} - -.ms-1 { - margin-left: 0.25rem !important; -} - -.ms-2 { - margin-left: 0.5rem !important; -} - -.ms-3 { - margin-left: 1rem !important; -} - -.ms-4 { - margin-left: 1.5rem !important; -} - -.ms-5 { - margin-left: 3rem !important; -} - -.ms-auto { - margin-left: auto !important; -} - -.p-0 { - padding: 0 !important; -} - -.p-1 { - padding: 0.25rem !important; -} - -.p-2 { - padding: 0.5rem !important; -} - -.p-3 { - padding: 1rem !important; -} - -.p-4 { - padding: 1.5rem !important; -} - -.p-5 { - padding: 3rem !important; -} - -.px-0 { - padding-right: 0 !important; - padding-left: 0 !important; -} - -.px-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; -} - -.px-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; -} - -.px-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; -} - -.px-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; -} - -.px-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; -} - -.py-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; -} - -.py-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; -} - -.py-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; -} - -.py-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; -} - -.py-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; -} - -.py-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; -} - -.pt-0 { - padding-top: 0 !important; -} - -.pt-1 { - padding-top: 0.25rem !important; -} - -.pt-2 { - padding-top: 0.5rem !important; -} - -.pt-3 { - padding-top: 1rem !important; -} - -.pt-4 { - padding-top: 1.5rem !important; -} - -.pt-5 { - padding-top: 3rem !important; -} - -.pe-0 { - padding-right: 0 !important; -} - -.pe-1 { - padding-right: 0.25rem !important; -} - -.pe-2 { - padding-right: 0.5rem !important; -} - -.pe-3 { - padding-right: 1rem !important; -} - -.pe-4 { - padding-right: 1.5rem !important; -} - -.pe-5 { - padding-right: 3rem !important; -} - -.pb-0 { - padding-bottom: 0 !important; -} - -.pb-1 { - padding-bottom: 0.25rem !important; -} - -.pb-2 { - padding-bottom: 0.5rem !important; -} - -.pb-3 { - padding-bottom: 1rem !important; -} - -.pb-4 { - padding-bottom: 1.5rem !important; -} - -.pb-5 { - padding-bottom: 3rem !important; -} - -.ps-0 { - padding-left: 0 !important; -} - -.ps-1 { - padding-left: 0.25rem !important; -} - -.ps-2 { - padding-left: 0.5rem !important; -} - -.ps-3 { - padding-left: 1rem !important; -} - -.ps-4 { - padding-left: 1.5rem !important; -} - -.ps-5 { - padding-left: 3rem !important; -} - -.font-monospace { - font-family: var(--bs-font-monospace) !important; -} - -.fs-1 { - font-size: calc(1.375rem + 1.5vw) !important; -} - -.fs-2 { - font-size: calc(1.325rem + 0.9vw) !important; -} - -.fs-3 { - font-size: calc(1.3rem + 0.6vw) !important; -} - -.fs-4 { - font-size: calc(1.275rem + 0.3vw) !important; -} - -.fs-5 { - font-size: 1.25rem !important; -} - -.fs-6 { - font-size: 1rem !important; -} - -.fst-italic { - font-style: italic !important; -} - -.fst-normal { - font-style: normal !important; -} - -.fw-light { - font-weight: 300 !important; -} - -.fw-lighter { - font-weight: lighter !important; -} - -.fw-normal { - font-weight: 400 !important; -} - -.fw-bold { - font-weight: 700 !important; -} - -.fw-bolder { - font-weight: bolder !important; -} - -.lh-1 { - line-height: 1 !important; -} - -.lh-sm { - line-height: 1.25 !important; -} - -.lh-base { - line-height: 1.5 !important; -} - -.lh-lg { - line-height: 2 !important; -} - -.text-start { - text-align: left !important; -} - -.text-end { - text-align: right !important; -} - -.text-center { - text-align: center !important; -} - -.text-decoration-none { - text-decoration: none !important; -} - -.text-decoration-underline { - text-decoration: underline !important; -} - -.text-decoration-line-through { - text-decoration: line-through !important; -} - -.text-lowercase { - text-transform: lowercase !important; -} - -.text-uppercase { - text-transform: uppercase !important; -} - -.text-capitalize { - text-transform: capitalize !important; -} - -.text-wrap { - white-space: normal !important; -} - -.text-nowrap { - white-space: nowrap !important; -} - -/* rtl:begin:remove */ -.text-break { - word-wrap: break-word !important; - word-break: break-word !important; -} - -/* rtl:end:remove */ -.text-primary { - color: #0d6efd !important; -} - -.text-secondary { - color: #6c757d !important; -} - -.text-success { - color: #198754 !important; -} - -.text-info { - color: #0dcaf0 !important; -} - -.text-warning { - color: #ffc107 !important; -} - -.text-danger { - color: #dc3545 !important; -} - -.text-light { - color: #f8f9fa !important; -} - -.text-dark { - color: #212529 !important; -} - -.text-white { - color: #fff !important; -} - -.text-body { - color: #212529 !important; -} - -.text-muted { - color: #6c757d !important; -} - -.text-black-50 { - color: rgba(0, 0, 0, 0.5) !important; -} - -.text-white-50 { - color: rgba(255, 255, 255, 0.5) !important; -} - -.text-reset { - color: inherit !important; -} - -.bg-primary { - background-color: #0d6efd !important; -} - -.bg-secondary { - background-color: #6c757d !important; -} - -.bg-success { - background-color: #198754 !important; -} - -.bg-info { - background-color: #0dcaf0 !important; -} - -.bg-warning { - background-color: #ffc107 !important; -} - -.bg-danger { - background-color: #dc3545 !important; -} - -.bg-light { - background-color: #f8f9fa !important; -} - -.bg-dark { - background-color: #212529 !important; -} - -.bg-body { - background-color: #fff !important; -} - -.bg-white { - background-color: #fff !important; -} - -.bg-transparent { - background-color: transparent !important; -} - -.bg-gradient { - background-image: var(--bs-gradient) !important; -} - -.user-select-all { - user-select: all !important; -} - -.user-select-auto { - user-select: auto !important; -} - -.user-select-none { - user-select: none !important; -} - -.pe-none { - pointer-events: none !important; -} - -.pe-auto { - pointer-events: auto !important; -} - -.rounded { - border-radius: 0.25rem !important; -} - -.rounded-0 { - border-radius: 0 !important; -} - -.rounded-1 { - border-radius: 0.2rem !important; -} - -.rounded-2 { - border-radius: 0.25rem !important; -} - -.rounded-3 { - border-radius: 0.3rem !important; -} - -.rounded-circle { - border-radius: 50% !important; -} - -.rounded-pill { - border-radius: 50rem !important; -} - -.rounded-top { - border-top-left-radius: 0.25rem !important; - border-top-right-radius: 0.25rem !important; -} - -.rounded-end { - border-top-right-radius: 0.25rem !important; - border-bottom-right-radius: 0.25rem !important; -} - -.rounded-bottom { - border-bottom-right-radius: 0.25rem !important; - border-bottom-left-radius: 0.25rem !important; -} - -.rounded-start { - border-bottom-left-radius: 0.25rem !important; - border-top-left-radius: 0.25rem !important; -} - -.visible { - visibility: visible !important; -} - -.invisible { - visibility: hidden !important; -} - -@media (min-width: 576px) { - .float-sm-start { - float: left !important; - } - - .float-sm-end { - float: right !important; - } - - .float-sm-none { - float: none !important; - } - - .d-sm-inline { - display: inline !important; - } - - .d-sm-inline-block { - display: inline-block !important; - } - - .d-sm-block { - display: block !important; - } - - .d-sm-grid { - display: grid !important; - } - - .d-sm-table { - display: table !important; - } - - .d-sm-table-row { - display: table-row !important; - } - - .d-sm-table-cell { - display: table-cell !important; - } - - .d-sm-flex { - display: flex !important; - } - - .d-sm-inline-flex { - display: inline-flex !important; - } - - .d-sm-none { - display: none !important; - } - - .flex-sm-fill { - flex: 1 1 auto !important; - } - - .flex-sm-row { - flex-direction: row !important; - } - - .flex-sm-column { - flex-direction: column !important; - } - - .flex-sm-row-reverse { - flex-direction: row-reverse !important; - } - - .flex-sm-column-reverse { - flex-direction: column-reverse !important; - } - - .flex-sm-grow-0 { - flex-grow: 0 !important; - } - - .flex-sm-grow-1 { - flex-grow: 1 !important; - } - - .flex-sm-shrink-0 { - flex-shrink: 0 !important; - } - - .flex-sm-shrink-1 { - flex-shrink: 1 !important; - } - - .flex-sm-wrap { - flex-wrap: wrap !important; - } - - .flex-sm-nowrap { - flex-wrap: nowrap !important; - } - - .flex-sm-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - - .gap-sm-0 { - gap: 0 !important; - } - - .gap-sm-1 { - gap: 0.25rem !important; - } - - .gap-sm-2 { - gap: 0.5rem !important; - } - - .gap-sm-3 { - gap: 1rem !important; - } - - .gap-sm-4 { - gap: 1.5rem !important; - } - - .gap-sm-5 { - gap: 3rem !important; - } - - .justify-content-sm-start { - justify-content: flex-start !important; - } - - .justify-content-sm-end { - justify-content: flex-end !important; - } - - .justify-content-sm-center { - justify-content: center !important; - } - - .justify-content-sm-between { - justify-content: space-between !important; - } - - .justify-content-sm-around { - justify-content: space-around !important; - } - - .justify-content-sm-evenly { - justify-content: space-evenly !important; - } - - .align-items-sm-start { - align-items: flex-start !important; - } - - .align-items-sm-end { - align-items: flex-end !important; - } - - .align-items-sm-center { - align-items: center !important; - } - - .align-items-sm-baseline { - align-items: baseline !important; - } - - .align-items-sm-stretch { - align-items: stretch !important; - } - - .align-content-sm-start { - align-content: flex-start !important; - } - - .align-content-sm-end { - align-content: flex-end !important; - } - - .align-content-sm-center { - align-content: center !important; - } - - .align-content-sm-between { - align-content: space-between !important; - } - - .align-content-sm-around { - align-content: space-around !important; - } - - .align-content-sm-stretch { - align-content: stretch !important; - } - - .align-self-sm-auto { - align-self: auto !important; - } - - .align-self-sm-start { - align-self: flex-start !important; - } - - .align-self-sm-end { - align-self: flex-end !important; - } - - .align-self-sm-center { - align-self: center !important; - } - - .align-self-sm-baseline { - align-self: baseline !important; - } - - .align-self-sm-stretch { - align-self: stretch !important; - } - - .order-sm-first { - order: -1 !important; - } - - .order-sm-0 { - order: 0 !important; - } - - .order-sm-1 { - order: 1 !important; - } - - .order-sm-2 { - order: 2 !important; - } - - .order-sm-3 { - order: 3 !important; - } - - .order-sm-4 { - order: 4 !important; - } - - .order-sm-5 { - order: 5 !important; - } - - .order-sm-last { - order: 6 !important; - } - - .m-sm-0 { - margin: 0 !important; - } - - .m-sm-1 { - margin: 0.25rem !important; - } - - .m-sm-2 { - margin: 0.5rem !important; - } - - .m-sm-3 { - margin: 1rem !important; - } - - .m-sm-4 { - margin: 1.5rem !important; - } - - .m-sm-5 { - margin: 3rem !important; - } - - .m-sm-auto { - margin: auto !important; - } - - .mx-sm-0 { - margin-right: 0 !important; - margin-left: 0 !important; - } - - .mx-sm-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; - } - - .mx-sm-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; - } - - .mx-sm-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; - } - - .mx-sm-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; - } - - .mx-sm-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; - } - - .mx-sm-auto { - margin-right: auto !important; - margin-left: auto !important; - } - - .my-sm-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - - .my-sm-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - - .my-sm-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - - .my-sm-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - - .my-sm-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - - .my-sm-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - - .my-sm-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - - .mt-sm-0 { - margin-top: 0 !important; - } - - .mt-sm-1 { - margin-top: 0.25rem !important; - } - - .mt-sm-2 { - margin-top: 0.5rem !important; - } - - .mt-sm-3 { - margin-top: 1rem !important; - } - - .mt-sm-4 { - margin-top: 1.5rem !important; - } - - .mt-sm-5 { - margin-top: 3rem !important; - } - - .mt-sm-auto { - margin-top: auto !important; - } - - .me-sm-0 { - margin-right: 0 !important; - } - - .me-sm-1 { - margin-right: 0.25rem !important; - } - - .me-sm-2 { - margin-right: 0.5rem !important; - } - - .me-sm-3 { - margin-right: 1rem !important; - } - - .me-sm-4 { - margin-right: 1.5rem !important; - } - - .me-sm-5 { - margin-right: 3rem !important; - } - - .me-sm-auto { - margin-right: auto !important; - } - - .mb-sm-0 { - margin-bottom: 0 !important; - } - - .mb-sm-1 { - margin-bottom: 0.25rem !important; - } - - .mb-sm-2 { - margin-bottom: 0.5rem !important; - } - - .mb-sm-3 { - margin-bottom: 1rem !important; - } - - .mb-sm-4 { - margin-bottom: 1.5rem !important; - } - - .mb-sm-5 { - margin-bottom: 3rem !important; - } - - .mb-sm-auto { - margin-bottom: auto !important; - } - - .ms-sm-0 { - margin-left: 0 !important; - } - - .ms-sm-1 { - margin-left: 0.25rem !important; - } - - .ms-sm-2 { - margin-left: 0.5rem !important; - } - - .ms-sm-3 { - margin-left: 1rem !important; - } - - .ms-sm-4 { - margin-left: 1.5rem !important; - } - - .ms-sm-5 { - margin-left: 3rem !important; - } - - .ms-sm-auto { - margin-left: auto !important; - } - - .p-sm-0 { - padding: 0 !important; - } - - .p-sm-1 { - padding: 0.25rem !important; - } - - .p-sm-2 { - padding: 0.5rem !important; - } - - .p-sm-3 { - padding: 1rem !important; - } - - .p-sm-4 { - padding: 1.5rem !important; - } - - .p-sm-5 { - padding: 3rem !important; - } - - .px-sm-0 { - padding-right: 0 !important; - padding-left: 0 !important; - } - - .px-sm-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; - } - - .px-sm-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; - } - - .px-sm-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; - } - - .px-sm-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; - } - - .px-sm-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; - } - - .py-sm-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - - .py-sm-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - - .py-sm-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - - .py-sm-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - - .py-sm-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - - .py-sm-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - - .pt-sm-0 { - padding-top: 0 !important; - } - - .pt-sm-1 { - padding-top: 0.25rem !important; - } - - .pt-sm-2 { - padding-top: 0.5rem !important; - } - - .pt-sm-3 { - padding-top: 1rem !important; - } - - .pt-sm-4 { - padding-top: 1.5rem !important; - } - - .pt-sm-5 { - padding-top: 3rem !important; - } - - .pe-sm-0 { - padding-right: 0 !important; - } - - .pe-sm-1 { - padding-right: 0.25rem !important; - } - - .pe-sm-2 { - padding-right: 0.5rem !important; - } - - .pe-sm-3 { - padding-right: 1rem !important; - } - - .pe-sm-4 { - padding-right: 1.5rem !important; - } - - .pe-sm-5 { - padding-right: 3rem !important; - } - - .pb-sm-0 { - padding-bottom: 0 !important; - } - - .pb-sm-1 { - padding-bottom: 0.25rem !important; - } - - .pb-sm-2 { - padding-bottom: 0.5rem !important; - } - - .pb-sm-3 { - padding-bottom: 1rem !important; - } - - .pb-sm-4 { - padding-bottom: 1.5rem !important; - } - - .pb-sm-5 { - padding-bottom: 3rem !important; - } - - .ps-sm-0 { - padding-left: 0 !important; - } - - .ps-sm-1 { - padding-left: 0.25rem !important; - } - - .ps-sm-2 { - padding-left: 0.5rem !important; - } - - .ps-sm-3 { - padding-left: 1rem !important; - } - - .ps-sm-4 { - padding-left: 1.5rem !important; - } - - .ps-sm-5 { - padding-left: 3rem !important; - } - - .text-sm-start { - text-align: left !important; - } - - .text-sm-end { - text-align: right !important; - } - - .text-sm-center { - text-align: center !important; - } -} -@media (min-width: 768px) { - .float-md-start { - float: left !important; - } - - .float-md-end { - float: right !important; - } - - .float-md-none { - float: none !important; - } - - .d-md-inline { - display: inline !important; - } - - .d-md-inline-block { - display: inline-block !important; - } - - .d-md-block { - display: block !important; - } - - .d-md-grid { - display: grid !important; - } - - .d-md-table { - display: table !important; - } - - .d-md-table-row { - display: table-row !important; - } - - .d-md-table-cell { - display: table-cell !important; - } - - .d-md-flex { - display: flex !important; - } - - .d-md-inline-flex { - display: inline-flex !important; - } - - .d-md-none { - display: none !important; - } - - .flex-md-fill { - flex: 1 1 auto !important; - } - - .flex-md-row { - flex-direction: row !important; - } - - .flex-md-column { - flex-direction: column !important; - } - - .flex-md-row-reverse { - flex-direction: row-reverse !important; - } - - .flex-md-column-reverse { - flex-direction: column-reverse !important; - } - - .flex-md-grow-0 { - flex-grow: 0 !important; - } - - .flex-md-grow-1 { - flex-grow: 1 !important; - } - - .flex-md-shrink-0 { - flex-shrink: 0 !important; - } - - .flex-md-shrink-1 { - flex-shrink: 1 !important; - } - - .flex-md-wrap { - flex-wrap: wrap !important; - } - - .flex-md-nowrap { - flex-wrap: nowrap !important; - } - - .flex-md-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - - .gap-md-0 { - gap: 0 !important; - } - - .gap-md-1 { - gap: 0.25rem !important; - } - - .gap-md-2 { - gap: 0.5rem !important; - } - - .gap-md-3 { - gap: 1rem !important; - } - - .gap-md-4 { - gap: 1.5rem !important; - } - - .gap-md-5 { - gap: 3rem !important; - } - - .justify-content-md-start { - justify-content: flex-start !important; - } - - .justify-content-md-end { - justify-content: flex-end !important; - } - - .justify-content-md-center { - justify-content: center !important; - } - - .justify-content-md-between { - justify-content: space-between !important; - } - - .justify-content-md-around { - justify-content: space-around !important; - } - - .justify-content-md-evenly { - justify-content: space-evenly !important; - } - - .align-items-md-start { - align-items: flex-start !important; - } - - .align-items-md-end { - align-items: flex-end !important; - } - - .align-items-md-center { - align-items: center !important; - } - - .align-items-md-baseline { - align-items: baseline !important; - } - - .align-items-md-stretch { - align-items: stretch !important; - } - - .align-content-md-start { - align-content: flex-start !important; - } - - .align-content-md-end { - align-content: flex-end !important; - } - - .align-content-md-center { - align-content: center !important; - } - - .align-content-md-between { - align-content: space-between !important; - } - - .align-content-md-around { - align-content: space-around !important; - } - - .align-content-md-stretch { - align-content: stretch !important; - } - - .align-self-md-auto { - align-self: auto !important; - } - - .align-self-md-start { - align-self: flex-start !important; - } - - .align-self-md-end { - align-self: flex-end !important; - } - - .align-self-md-center { - align-self: center !important; - } - - .align-self-md-baseline { - align-self: baseline !important; - } - - .align-self-md-stretch { - align-self: stretch !important; - } - - .order-md-first { - order: -1 !important; - } - - .order-md-0 { - order: 0 !important; - } - - .order-md-1 { - order: 1 !important; - } - - .order-md-2 { - order: 2 !important; - } - - .order-md-3 { - order: 3 !important; - } - - .order-md-4 { - order: 4 !important; - } - - .order-md-5 { - order: 5 !important; - } - - .order-md-last { - order: 6 !important; - } - - .m-md-0 { - margin: 0 !important; - } - - .m-md-1 { - margin: 0.25rem !important; - } - - .m-md-2 { - margin: 0.5rem !important; - } - - .m-md-3 { - margin: 1rem !important; - } - - .m-md-4 { - margin: 1.5rem !important; - } - - .m-md-5 { - margin: 3rem !important; - } - - .m-md-auto { - margin: auto !important; - } - - .mx-md-0 { - margin-right: 0 !important; - margin-left: 0 !important; - } - - .mx-md-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; - } - - .mx-md-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; - } - - .mx-md-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; - } - - .mx-md-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; - } - - .mx-md-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; - } - - .mx-md-auto { - margin-right: auto !important; - margin-left: auto !important; - } - - .my-md-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - - .my-md-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - - .my-md-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - - .my-md-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - - .my-md-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - - .my-md-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - - .my-md-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - - .mt-md-0 { - margin-top: 0 !important; - } - - .mt-md-1 { - margin-top: 0.25rem !important; - } - - .mt-md-2 { - margin-top: 0.5rem !important; - } - - .mt-md-3 { - margin-top: 1rem !important; - } - - .mt-md-4 { - margin-top: 1.5rem !important; - } - - .mt-md-5 { - margin-top: 3rem !important; - } - - .mt-md-auto { - margin-top: auto !important; - } - - .me-md-0 { - margin-right: 0 !important; - } - - .me-md-1 { - margin-right: 0.25rem !important; - } - - .me-md-2 { - margin-right: 0.5rem !important; - } - - .me-md-3 { - margin-right: 1rem !important; - } - - .me-md-4 { - margin-right: 1.5rem !important; - } - - .me-md-5 { - margin-right: 3rem !important; - } - - .me-md-auto { - margin-right: auto !important; - } - - .mb-md-0 { - margin-bottom: 0 !important; - } - - .mb-md-1 { - margin-bottom: 0.25rem !important; - } - - .mb-md-2 { - margin-bottom: 0.5rem !important; - } - - .mb-md-3 { - margin-bottom: 1rem !important; - } - - .mb-md-4 { - margin-bottom: 1.5rem !important; - } - - .mb-md-5 { - margin-bottom: 3rem !important; - } - - .mb-md-auto { - margin-bottom: auto !important; - } - - .ms-md-0 { - margin-left: 0 !important; - } - - .ms-md-1 { - margin-left: 0.25rem !important; - } - - .ms-md-2 { - margin-left: 0.5rem !important; - } - - .ms-md-3 { - margin-left: 1rem !important; - } - - .ms-md-4 { - margin-left: 1.5rem !important; - } - - .ms-md-5 { - margin-left: 3rem !important; - } - - .ms-md-auto { - margin-left: auto !important; - } - - .p-md-0 { - padding: 0 !important; - } - - .p-md-1 { - padding: 0.25rem !important; - } - - .p-md-2 { - padding: 0.5rem !important; - } - - .p-md-3 { - padding: 1rem !important; - } - - .p-md-4 { - padding: 1.5rem !important; - } - - .p-md-5 { - padding: 3rem !important; - } - - .px-md-0 { - padding-right: 0 !important; - padding-left: 0 !important; - } - - .px-md-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; - } - - .px-md-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; - } - - .px-md-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; - } - - .px-md-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; - } - - .px-md-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; - } - - .py-md-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - - .py-md-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - - .py-md-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - - .py-md-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - - .py-md-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - - .py-md-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - - .pt-md-0 { - padding-top: 0 !important; - } - - .pt-md-1 { - padding-top: 0.25rem !important; - } - - .pt-md-2 { - padding-top: 0.5rem !important; - } - - .pt-md-3 { - padding-top: 1rem !important; - } - - .pt-md-4 { - padding-top: 1.5rem !important; - } - - .pt-md-5 { - padding-top: 3rem !important; - } - - .pe-md-0 { - padding-right: 0 !important; - } - - .pe-md-1 { - padding-right: 0.25rem !important; - } - - .pe-md-2 { - padding-right: 0.5rem !important; - } - - .pe-md-3 { - padding-right: 1rem !important; - } - - .pe-md-4 { - padding-right: 1.5rem !important; - } - - .pe-md-5 { - padding-right: 3rem !important; - } - - .pb-md-0 { - padding-bottom: 0 !important; - } - - .pb-md-1 { - padding-bottom: 0.25rem !important; - } - - .pb-md-2 { - padding-bottom: 0.5rem !important; - } - - .pb-md-3 { - padding-bottom: 1rem !important; - } - - .pb-md-4 { - padding-bottom: 1.5rem !important; - } - - .pb-md-5 { - padding-bottom: 3rem !important; - } - - .ps-md-0 { - padding-left: 0 !important; - } - - .ps-md-1 { - padding-left: 0.25rem !important; - } - - .ps-md-2 { - padding-left: 0.5rem !important; - } - - .ps-md-3 { - padding-left: 1rem !important; - } - - .ps-md-4 { - padding-left: 1.5rem !important; - } - - .ps-md-5 { - padding-left: 3rem !important; - } - - .text-md-start { - text-align: left !important; - } - - .text-md-end { - text-align: right !important; - } - - .text-md-center { - text-align: center !important; - } -} -@media (min-width: 992px) { - .float-lg-start { - float: left !important; - } - - .float-lg-end { - float: right !important; - } - - .float-lg-none { - float: none !important; - } - - .d-lg-inline { - display: inline !important; - } - - .d-lg-inline-block { - display: inline-block !important; - } - - .d-lg-block { - display: block !important; - } - - .d-lg-grid { - display: grid !important; - } - - .d-lg-table { - display: table !important; - } - - .d-lg-table-row { - display: table-row !important; - } - - .d-lg-table-cell { - display: table-cell !important; - } - - .d-lg-flex { - display: flex !important; - } - - .d-lg-inline-flex { - display: inline-flex !important; - } - - .d-lg-none { - display: none !important; - } - - .flex-lg-fill { - flex: 1 1 auto !important; - } - - .flex-lg-row { - flex-direction: row !important; - } - - .flex-lg-column { - flex-direction: column !important; - } - - .flex-lg-row-reverse { - flex-direction: row-reverse !important; - } - - .flex-lg-column-reverse { - flex-direction: column-reverse !important; - } - - .flex-lg-grow-0 { - flex-grow: 0 !important; - } - - .flex-lg-grow-1 { - flex-grow: 1 !important; - } - - .flex-lg-shrink-0 { - flex-shrink: 0 !important; - } - - .flex-lg-shrink-1 { - flex-shrink: 1 !important; - } - - .flex-lg-wrap { - flex-wrap: wrap !important; - } - - .flex-lg-nowrap { - flex-wrap: nowrap !important; - } - - .flex-lg-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - - .gap-lg-0 { - gap: 0 !important; - } - - .gap-lg-1 { - gap: 0.25rem !important; - } - - .gap-lg-2 { - gap: 0.5rem !important; - } - - .gap-lg-3 { - gap: 1rem !important; - } - - .gap-lg-4 { - gap: 1.5rem !important; - } - - .gap-lg-5 { - gap: 3rem !important; - } - - .justify-content-lg-start { - justify-content: flex-start !important; - } - - .justify-content-lg-end { - justify-content: flex-end !important; - } - - .justify-content-lg-center { - justify-content: center !important; - } - - .justify-content-lg-between { - justify-content: space-between !important; - } - - .justify-content-lg-around { - justify-content: space-around !important; - } - - .justify-content-lg-evenly { - justify-content: space-evenly !important; - } - - .align-items-lg-start { - align-items: flex-start !important; - } - - .align-items-lg-end { - align-items: flex-end !important; - } - - .align-items-lg-center { - align-items: center !important; - } - - .align-items-lg-baseline { - align-items: baseline !important; - } - - .align-items-lg-stretch { - align-items: stretch !important; - } - - .align-content-lg-start { - align-content: flex-start !important; - } - - .align-content-lg-end { - align-content: flex-end !important; - } - - .align-content-lg-center { - align-content: center !important; - } - - .align-content-lg-between { - align-content: space-between !important; - } - - .align-content-lg-around { - align-content: space-around !important; - } - - .align-content-lg-stretch { - align-content: stretch !important; - } - - .align-self-lg-auto { - align-self: auto !important; - } - - .align-self-lg-start { - align-self: flex-start !important; - } - - .align-self-lg-end { - align-self: flex-end !important; - } - - .align-self-lg-center { - align-self: center !important; - } - - .align-self-lg-baseline { - align-self: baseline !important; - } - - .align-self-lg-stretch { - align-self: stretch !important; - } - - .order-lg-first { - order: -1 !important; - } - - .order-lg-0 { - order: 0 !important; - } - - .order-lg-1 { - order: 1 !important; - } - - .order-lg-2 { - order: 2 !important; - } - - .order-lg-3 { - order: 3 !important; - } - - .order-lg-4 { - order: 4 !important; - } - - .order-lg-5 { - order: 5 !important; - } - - .order-lg-last { - order: 6 !important; - } - - .m-lg-0 { - margin: 0 !important; - } - - .m-lg-1 { - margin: 0.25rem !important; - } - - .m-lg-2 { - margin: 0.5rem !important; - } - - .m-lg-3 { - margin: 1rem !important; - } - - .m-lg-4 { - margin: 1.5rem !important; - } - - .m-lg-5 { - margin: 3rem !important; - } - - .m-lg-auto { - margin: auto !important; - } - - .mx-lg-0 { - margin-right: 0 !important; - margin-left: 0 !important; - } - - .mx-lg-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; - } - - .mx-lg-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; - } - - .mx-lg-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; - } - - .mx-lg-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; - } - - .mx-lg-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; - } - - .mx-lg-auto { - margin-right: auto !important; - margin-left: auto !important; - } - - .my-lg-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - - .my-lg-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - - .my-lg-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - - .my-lg-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - - .my-lg-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - - .my-lg-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - - .my-lg-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - - .mt-lg-0 { - margin-top: 0 !important; - } - - .mt-lg-1 { - margin-top: 0.25rem !important; - } - - .mt-lg-2 { - margin-top: 0.5rem !important; - } - - .mt-lg-3 { - margin-top: 1rem !important; - } - - .mt-lg-4 { - margin-top: 1.5rem !important; - } - - .mt-lg-5 { - margin-top: 3rem !important; - } - - .mt-lg-auto { - margin-top: auto !important; - } - - .me-lg-0 { - margin-right: 0 !important; - } - - .me-lg-1 { - margin-right: 0.25rem !important; - } - - .me-lg-2 { - margin-right: 0.5rem !important; - } - - .me-lg-3 { - margin-right: 1rem !important; - } - - .me-lg-4 { - margin-right: 1.5rem !important; - } - - .me-lg-5 { - margin-right: 3rem !important; - } - - .me-lg-auto { - margin-right: auto !important; - } - - .mb-lg-0 { - margin-bottom: 0 !important; - } - - .mb-lg-1 { - margin-bottom: 0.25rem !important; - } - - .mb-lg-2 { - margin-bottom: 0.5rem !important; - } - - .mb-lg-3 { - margin-bottom: 1rem !important; - } - - .mb-lg-4 { - margin-bottom: 1.5rem !important; - } - - .mb-lg-5 { - margin-bottom: 3rem !important; - } - - .mb-lg-auto { - margin-bottom: auto !important; - } - - .ms-lg-0 { - margin-left: 0 !important; - } - - .ms-lg-1 { - margin-left: 0.25rem !important; - } - - .ms-lg-2 { - margin-left: 0.5rem !important; - } - - .ms-lg-3 { - margin-left: 1rem !important; - } - - .ms-lg-4 { - margin-left: 1.5rem !important; - } - - .ms-lg-5 { - margin-left: 3rem !important; - } - - .ms-lg-auto { - margin-left: auto !important; - } - - .p-lg-0 { - padding: 0 !important; - } - - .p-lg-1 { - padding: 0.25rem !important; - } - - .p-lg-2 { - padding: 0.5rem !important; - } - - .p-lg-3 { - padding: 1rem !important; - } - - .p-lg-4 { - padding: 1.5rem !important; - } - - .p-lg-5 { - padding: 3rem !important; - } - - .px-lg-0 { - padding-right: 0 !important; - padding-left: 0 !important; - } - - .px-lg-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; - } - - .px-lg-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; - } - - .px-lg-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; - } - - .px-lg-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; - } - - .px-lg-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; - } - - .py-lg-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - - .py-lg-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - - .py-lg-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - - .py-lg-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - - .py-lg-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - - .py-lg-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - - .pt-lg-0 { - padding-top: 0 !important; - } - - .pt-lg-1 { - padding-top: 0.25rem !important; - } - - .pt-lg-2 { - padding-top: 0.5rem !important; - } - - .pt-lg-3 { - padding-top: 1rem !important; - } - - .pt-lg-4 { - padding-top: 1.5rem !important; - } - - .pt-lg-5 { - padding-top: 3rem !important; - } - - .pe-lg-0 { - padding-right: 0 !important; - } - - .pe-lg-1 { - padding-right: 0.25rem !important; - } - - .pe-lg-2 { - padding-right: 0.5rem !important; - } - - .pe-lg-3 { - padding-right: 1rem !important; - } - - .pe-lg-4 { - padding-right: 1.5rem !important; - } - - .pe-lg-5 { - padding-right: 3rem !important; - } - - .pb-lg-0 { - padding-bottom: 0 !important; - } - - .pb-lg-1 { - padding-bottom: 0.25rem !important; - } - - .pb-lg-2 { - padding-bottom: 0.5rem !important; - } - - .pb-lg-3 { - padding-bottom: 1rem !important; - } - - .pb-lg-4 { - padding-bottom: 1.5rem !important; - } - - .pb-lg-5 { - padding-bottom: 3rem !important; - } - - .ps-lg-0 { - padding-left: 0 !important; - } - - .ps-lg-1 { - padding-left: 0.25rem !important; - } - - .ps-lg-2 { - padding-left: 0.5rem !important; - } - - .ps-lg-3 { - padding-left: 1rem !important; - } - - .ps-lg-4 { - padding-left: 1.5rem !important; - } - - .ps-lg-5 { - padding-left: 3rem !important; - } - - .text-lg-start { - text-align: left !important; - } - - .text-lg-end { - text-align: right !important; - } - - .text-lg-center { - text-align: center !important; - } -} -@media (min-width: 1200px) { - .float-xl-start { - float: left !important; - } - - .float-xl-end { - float: right !important; - } - - .float-xl-none { - float: none !important; - } - - .d-xl-inline { - display: inline !important; - } - - .d-xl-inline-block { - display: inline-block !important; - } - - .d-xl-block { - display: block !important; - } - - .d-xl-grid { - display: grid !important; - } - - .d-xl-table { - display: table !important; - } - - .d-xl-table-row { - display: table-row !important; - } - - .d-xl-table-cell { - display: table-cell !important; - } - - .d-xl-flex { - display: flex !important; - } - - .d-xl-inline-flex { - display: inline-flex !important; - } - - .d-xl-none { - display: none !important; - } - - .flex-xl-fill { - flex: 1 1 auto !important; - } - - .flex-xl-row { - flex-direction: row !important; - } - - .flex-xl-column { - flex-direction: column !important; - } - - .flex-xl-row-reverse { - flex-direction: row-reverse !important; - } - - .flex-xl-column-reverse { - flex-direction: column-reverse !important; - } - - .flex-xl-grow-0 { - flex-grow: 0 !important; - } - - .flex-xl-grow-1 { - flex-grow: 1 !important; - } - - .flex-xl-shrink-0 { - flex-shrink: 0 !important; - } - - .flex-xl-shrink-1 { - flex-shrink: 1 !important; - } - - .flex-xl-wrap { - flex-wrap: wrap !important; - } - - .flex-xl-nowrap { - flex-wrap: nowrap !important; - } - - .flex-xl-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - - .gap-xl-0 { - gap: 0 !important; - } - - .gap-xl-1 { - gap: 0.25rem !important; - } - - .gap-xl-2 { - gap: 0.5rem !important; - } - - .gap-xl-3 { - gap: 1rem !important; - } - - .gap-xl-4 { - gap: 1.5rem !important; - } - - .gap-xl-5 { - gap: 3rem !important; - } - - .justify-content-xl-start { - justify-content: flex-start !important; - } - - .justify-content-xl-end { - justify-content: flex-end !important; - } - - .justify-content-xl-center { - justify-content: center !important; - } - - .justify-content-xl-between { - justify-content: space-between !important; - } - - .justify-content-xl-around { - justify-content: space-around !important; - } - - .justify-content-xl-evenly { - justify-content: space-evenly !important; - } - - .align-items-xl-start { - align-items: flex-start !important; - } - - .align-items-xl-end { - align-items: flex-end !important; - } - - .align-items-xl-center { - align-items: center !important; - } - - .align-items-xl-baseline { - align-items: baseline !important; - } - - .align-items-xl-stretch { - align-items: stretch !important; - } - - .align-content-xl-start { - align-content: flex-start !important; - } - - .align-content-xl-end { - align-content: flex-end !important; - } - - .align-content-xl-center { - align-content: center !important; - } - - .align-content-xl-between { - align-content: space-between !important; - } - - .align-content-xl-around { - align-content: space-around !important; - } - - .align-content-xl-stretch { - align-content: stretch !important; - } - - .align-self-xl-auto { - align-self: auto !important; - } - - .align-self-xl-start { - align-self: flex-start !important; - } - - .align-self-xl-end { - align-self: flex-end !important; - } - - .align-self-xl-center { - align-self: center !important; - } - - .align-self-xl-baseline { - align-self: baseline !important; - } - - .align-self-xl-stretch { - align-self: stretch !important; - } - - .order-xl-first { - order: -1 !important; - } - - .order-xl-0 { - order: 0 !important; - } - - .order-xl-1 { - order: 1 !important; - } - - .order-xl-2 { - order: 2 !important; - } - - .order-xl-3 { - order: 3 !important; - } - - .order-xl-4 { - order: 4 !important; - } - - .order-xl-5 { - order: 5 !important; - } - - .order-xl-last { - order: 6 !important; - } - - .m-xl-0 { - margin: 0 !important; - } - - .m-xl-1 { - margin: 0.25rem !important; - } - - .m-xl-2 { - margin: 0.5rem !important; - } - - .m-xl-3 { - margin: 1rem !important; - } - - .m-xl-4 { - margin: 1.5rem !important; - } - - .m-xl-5 { - margin: 3rem !important; - } - - .m-xl-auto { - margin: auto !important; - } - - .mx-xl-0 { - margin-right: 0 !important; - margin-left: 0 !important; - } - - .mx-xl-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; - } - - .mx-xl-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; - } - - .mx-xl-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; - } - - .mx-xl-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; - } - - .mx-xl-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; - } - - .mx-xl-auto { - margin-right: auto !important; - margin-left: auto !important; - } - - .my-xl-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - - .my-xl-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - - .my-xl-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - - .my-xl-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - - .my-xl-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - - .my-xl-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - - .my-xl-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - - .mt-xl-0 { - margin-top: 0 !important; - } - - .mt-xl-1 { - margin-top: 0.25rem !important; - } - - .mt-xl-2 { - margin-top: 0.5rem !important; - } - - .mt-xl-3 { - margin-top: 1rem !important; - } - - .mt-xl-4 { - margin-top: 1.5rem !important; - } - - .mt-xl-5 { - margin-top: 3rem !important; - } - - .mt-xl-auto { - margin-top: auto !important; - } - - .me-xl-0 { - margin-right: 0 !important; - } - - .me-xl-1 { - margin-right: 0.25rem !important; - } - - .me-xl-2 { - margin-right: 0.5rem !important; - } - - .me-xl-3 { - margin-right: 1rem !important; - } - - .me-xl-4 { - margin-right: 1.5rem !important; - } - - .me-xl-5 { - margin-right: 3rem !important; - } - - .me-xl-auto { - margin-right: auto !important; - } - - .mb-xl-0 { - margin-bottom: 0 !important; - } - - .mb-xl-1 { - margin-bottom: 0.25rem !important; - } - - .mb-xl-2 { - margin-bottom: 0.5rem !important; - } - - .mb-xl-3 { - margin-bottom: 1rem !important; - } - - .mb-xl-4 { - margin-bottom: 1.5rem !important; - } - - .mb-xl-5 { - margin-bottom: 3rem !important; - } - - .mb-xl-auto { - margin-bottom: auto !important; - } - - .ms-xl-0 { - margin-left: 0 !important; - } - - .ms-xl-1 { - margin-left: 0.25rem !important; - } - - .ms-xl-2 { - margin-left: 0.5rem !important; - } - - .ms-xl-3 { - margin-left: 1rem !important; - } - - .ms-xl-4 { - margin-left: 1.5rem !important; - } - - .ms-xl-5 { - margin-left: 3rem !important; - } - - .ms-xl-auto { - margin-left: auto !important; - } - - .p-xl-0 { - padding: 0 !important; - } - - .p-xl-1 { - padding: 0.25rem !important; - } - - .p-xl-2 { - padding: 0.5rem !important; - } - - .p-xl-3 { - padding: 1rem !important; - } - - .p-xl-4 { - padding: 1.5rem !important; - } - - .p-xl-5 { - padding: 3rem !important; - } - - .px-xl-0 { - padding-right: 0 !important; - padding-left: 0 !important; - } - - .px-xl-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; - } - - .px-xl-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; - } - - .px-xl-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; - } - - .px-xl-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; - } - - .px-xl-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; - } - - .py-xl-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - - .py-xl-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - - .py-xl-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - - .py-xl-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - - .py-xl-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - - .py-xl-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - - .pt-xl-0 { - padding-top: 0 !important; - } - - .pt-xl-1 { - padding-top: 0.25rem !important; - } - - .pt-xl-2 { - padding-top: 0.5rem !important; - } - - .pt-xl-3 { - padding-top: 1rem !important; - } - - .pt-xl-4 { - padding-top: 1.5rem !important; - } - - .pt-xl-5 { - padding-top: 3rem !important; - } - - .pe-xl-0 { - padding-right: 0 !important; - } - - .pe-xl-1 { - padding-right: 0.25rem !important; - } - - .pe-xl-2 { - padding-right: 0.5rem !important; - } - - .pe-xl-3 { - padding-right: 1rem !important; - } - - .pe-xl-4 { - padding-right: 1.5rem !important; - } - - .pe-xl-5 { - padding-right: 3rem !important; - } - - .pb-xl-0 { - padding-bottom: 0 !important; - } - - .pb-xl-1 { - padding-bottom: 0.25rem !important; - } - - .pb-xl-2 { - padding-bottom: 0.5rem !important; - } - - .pb-xl-3 { - padding-bottom: 1rem !important; - } - - .pb-xl-4 { - padding-bottom: 1.5rem !important; - } - - .pb-xl-5 { - padding-bottom: 3rem !important; - } - - .ps-xl-0 { - padding-left: 0 !important; - } - - .ps-xl-1 { - padding-left: 0.25rem !important; - } - - .ps-xl-2 { - padding-left: 0.5rem !important; - } - - .ps-xl-3 { - padding-left: 1rem !important; - } - - .ps-xl-4 { - padding-left: 1.5rem !important; - } - - .ps-xl-5 { - padding-left: 3rem !important; - } - - .text-xl-start { - text-align: left !important; - } - - .text-xl-end { - text-align: right !important; - } - - .text-xl-center { - text-align: center !important; - } -} -@media (min-width: 1400px) { - .float-xxl-start { - float: left !important; - } - - .float-xxl-end { - float: right !important; - } - - .float-xxl-none { - float: none !important; - } - - .d-xxl-inline { - display: inline !important; - } - - .d-xxl-inline-block { - display: inline-block !important; - } - - .d-xxl-block { - display: block !important; - } - - .d-xxl-grid { - display: grid !important; - } - - .d-xxl-table { - display: table !important; - } - - .d-xxl-table-row { - display: table-row !important; - } - - .d-xxl-table-cell { - display: table-cell !important; - } - - .d-xxl-flex { - display: flex !important; - } - - .d-xxl-inline-flex { - display: inline-flex !important; - } - - .d-xxl-none { - display: none !important; - } - - .flex-xxl-fill { - flex: 1 1 auto !important; - } - - .flex-xxl-row { - flex-direction: row !important; - } - - .flex-xxl-column { - flex-direction: column !important; - } - - .flex-xxl-row-reverse { - flex-direction: row-reverse !important; - } - - .flex-xxl-column-reverse { - flex-direction: column-reverse !important; - } - - .flex-xxl-grow-0 { - flex-grow: 0 !important; - } - - .flex-xxl-grow-1 { - flex-grow: 1 !important; - } - - .flex-xxl-shrink-0 { - flex-shrink: 0 !important; - } - - .flex-xxl-shrink-1 { - flex-shrink: 1 !important; - } - - .flex-xxl-wrap { - flex-wrap: wrap !important; - } - - .flex-xxl-nowrap { - flex-wrap: nowrap !important; - } - - .flex-xxl-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - - .gap-xxl-0 { - gap: 0 !important; - } - - .gap-xxl-1 { - gap: 0.25rem !important; - } - - .gap-xxl-2 { - gap: 0.5rem !important; - } - - .gap-xxl-3 { - gap: 1rem !important; - } - - .gap-xxl-4 { - gap: 1.5rem !important; - } - - .gap-xxl-5 { - gap: 3rem !important; - } - - .justify-content-xxl-start { - justify-content: flex-start !important; - } - - .justify-content-xxl-end { - justify-content: flex-end !important; - } - - .justify-content-xxl-center { - justify-content: center !important; - } - - .justify-content-xxl-between { - justify-content: space-between !important; - } - - .justify-content-xxl-around { - justify-content: space-around !important; - } - - .justify-content-xxl-evenly { - justify-content: space-evenly !important; - } - - .align-items-xxl-start { - align-items: flex-start !important; - } - - .align-items-xxl-end { - align-items: flex-end !important; - } - - .align-items-xxl-center { - align-items: center !important; - } - - .align-items-xxl-baseline { - align-items: baseline !important; - } - - .align-items-xxl-stretch { - align-items: stretch !important; - } - - .align-content-xxl-start { - align-content: flex-start !important; - } - - .align-content-xxl-end { - align-content: flex-end !important; - } - - .align-content-xxl-center { - align-content: center !important; - } - - .align-content-xxl-between { - align-content: space-between !important; - } - - .align-content-xxl-around { - align-content: space-around !important; - } - - .align-content-xxl-stretch { - align-content: stretch !important; - } - - .align-self-xxl-auto { - align-self: auto !important; - } - - .align-self-xxl-start { - align-self: flex-start !important; - } - - .align-self-xxl-end { - align-self: flex-end !important; - } - - .align-self-xxl-center { - align-self: center !important; - } - - .align-self-xxl-baseline { - align-self: baseline !important; - } - - .align-self-xxl-stretch { - align-self: stretch !important; - } - - .order-xxl-first { - order: -1 !important; - } - - .order-xxl-0 { - order: 0 !important; - } - - .order-xxl-1 { - order: 1 !important; - } - - .order-xxl-2 { - order: 2 !important; - } - - .order-xxl-3 { - order: 3 !important; - } - - .order-xxl-4 { - order: 4 !important; - } - - .order-xxl-5 { - order: 5 !important; - } - - .order-xxl-last { - order: 6 !important; - } - - .m-xxl-0 { - margin: 0 !important; - } - - .m-xxl-1 { - margin: 0.25rem !important; - } - - .m-xxl-2 { - margin: 0.5rem !important; - } - - .m-xxl-3 { - margin: 1rem !important; - } - - .m-xxl-4 { - margin: 1.5rem !important; - } - - .m-xxl-5 { - margin: 3rem !important; - } - - .m-xxl-auto { - margin: auto !important; - } - - .mx-xxl-0 { - margin-right: 0 !important; - margin-left: 0 !important; - } - - .mx-xxl-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; - } - - .mx-xxl-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; - } - - .mx-xxl-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; - } - - .mx-xxl-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; - } - - .mx-xxl-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; - } - - .mx-xxl-auto { - margin-right: auto !important; - margin-left: auto !important; - } - - .my-xxl-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - - .my-xxl-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - - .my-xxl-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - - .my-xxl-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - - .my-xxl-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - - .my-xxl-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - - .my-xxl-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - - .mt-xxl-0 { - margin-top: 0 !important; - } - - .mt-xxl-1 { - margin-top: 0.25rem !important; - } - - .mt-xxl-2 { - margin-top: 0.5rem !important; - } - - .mt-xxl-3 { - margin-top: 1rem !important; - } - - .mt-xxl-4 { - margin-top: 1.5rem !important; - } - - .mt-xxl-5 { - margin-top: 3rem !important; - } - - .mt-xxl-auto { - margin-top: auto !important; - } - - .me-xxl-0 { - margin-right: 0 !important; - } - - .me-xxl-1 { - margin-right: 0.25rem !important; - } - - .me-xxl-2 { - margin-right: 0.5rem !important; - } - - .me-xxl-3 { - margin-right: 1rem !important; - } - - .me-xxl-4 { - margin-right: 1.5rem !important; - } - - .me-xxl-5 { - margin-right: 3rem !important; - } - - .me-xxl-auto { - margin-right: auto !important; - } - - .mb-xxl-0 { - margin-bottom: 0 !important; - } - - .mb-xxl-1 { - margin-bottom: 0.25rem !important; - } - - .mb-xxl-2 { - margin-bottom: 0.5rem !important; - } - - .mb-xxl-3 { - margin-bottom: 1rem !important; - } - - .mb-xxl-4 { - margin-bottom: 1.5rem !important; - } - - .mb-xxl-5 { - margin-bottom: 3rem !important; - } - - .mb-xxl-auto { - margin-bottom: auto !important; - } - - .ms-xxl-0 { - margin-left: 0 !important; - } - - .ms-xxl-1 { - margin-left: 0.25rem !important; - } - - .ms-xxl-2 { - margin-left: 0.5rem !important; - } - - .ms-xxl-3 { - margin-left: 1rem !important; - } - - .ms-xxl-4 { - margin-left: 1.5rem !important; - } - - .ms-xxl-5 { - margin-left: 3rem !important; - } - - .ms-xxl-auto { - margin-left: auto !important; - } - - .p-xxl-0 { - padding: 0 !important; - } - - .p-xxl-1 { - padding: 0.25rem !important; - } - - .p-xxl-2 { - padding: 0.5rem !important; - } - - .p-xxl-3 { - padding: 1rem !important; - } - - .p-xxl-4 { - padding: 1.5rem !important; - } - - .p-xxl-5 { - padding: 3rem !important; - } - - .px-xxl-0 { - padding-right: 0 !important; - padding-left: 0 !important; - } - - .px-xxl-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; - } - - .px-xxl-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; - } - - .px-xxl-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; - } - - .px-xxl-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; - } - - .px-xxl-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; - } - - .py-xxl-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - - .py-xxl-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - - .py-xxl-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - - .py-xxl-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - - .py-xxl-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - - .py-xxl-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - - .pt-xxl-0 { - padding-top: 0 !important; - } - - .pt-xxl-1 { - padding-top: 0.25rem !important; - } - - .pt-xxl-2 { - padding-top: 0.5rem !important; - } - - .pt-xxl-3 { - padding-top: 1rem !important; - } - - .pt-xxl-4 { - padding-top: 1.5rem !important; - } - - .pt-xxl-5 { - padding-top: 3rem !important; - } - - .pe-xxl-0 { - padding-right: 0 !important; - } - - .pe-xxl-1 { - padding-right: 0.25rem !important; - } - - .pe-xxl-2 { - padding-right: 0.5rem !important; - } - - .pe-xxl-3 { - padding-right: 1rem !important; - } - - .pe-xxl-4 { - padding-right: 1.5rem !important; - } - - .pe-xxl-5 { - padding-right: 3rem !important; - } - - .pb-xxl-0 { - padding-bottom: 0 !important; - } - - .pb-xxl-1 { - padding-bottom: 0.25rem !important; - } - - .pb-xxl-2 { - padding-bottom: 0.5rem !important; - } - - .pb-xxl-3 { - padding-bottom: 1rem !important; - } - - .pb-xxl-4 { - padding-bottom: 1.5rem !important; - } - - .pb-xxl-5 { - padding-bottom: 3rem !important; - } - - .ps-xxl-0 { - padding-left: 0 !important; - } - - .ps-xxl-1 { - padding-left: 0.25rem !important; - } - - .ps-xxl-2 { - padding-left: 0.5rem !important; - } - - .ps-xxl-3 { - padding-left: 1rem !important; - } - - .ps-xxl-4 { - padding-left: 1.5rem !important; - } - - .ps-xxl-5 { - padding-left: 3rem !important; - } - - .text-xxl-start { - text-align: left !important; - } - - .text-xxl-end { - text-align: right !important; - } - - .text-xxl-center { - text-align: center !important; - } -} -@media (min-width: 1200px) { - .fs-1 { - font-size: 2.5rem !important; - } - - .fs-2 { - font-size: 2rem !important; - } - - .fs-3 { - font-size: 1.75rem !important; - } - - .fs-4 { - font-size: 1.5rem !important; - } -} -@media print { - .d-print-inline { - display: inline !important; - } - - .d-print-inline-block { - display: inline-block !important; - } - - .d-print-block { - display: block !important; - } - - .d-print-grid { - display: grid !important; - } - - .d-print-table { - display: table !important; - } - - .d-print-table-row { - display: table-row !important; - } - - .d-print-table-cell { - display: table-cell !important; - } - - .d-print-flex { - display: flex !important; - } - - .d-print-inline-flex { - display: inline-flex !important; - } - - .d-print-none { - display: none !important; - } -} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 13f921aa6..48f8accf5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@eonasdan/tempus-dominus", - "version": "6.0.0-alpha1.0.13", + "version": "6.0.0-alpha14", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@eonasdan/tempus-dominus", - "version": "6.0.0-alpha1.0.13", + "version": "6.0.0-alpha14", "license": "MIT", "devDependencies": { "@popperjs/core": "^2.10.2", @@ -19,6 +19,7 @@ "clean-css": "^5.2.1", "concurrently": "^6.3.0", "dropcss": "^1.0.16", + "globby": "^11.0.4", "html-minifier-terser": "^5.1.1", "jsdom": "^17.0.0", "multiparty": "^4.2.2", @@ -37,6 +38,41 @@ "@popperjs/core": "^2.10.1" } }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/@popperjs/core": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz", @@ -273,6 +309,15 @@ "node": ">= 8" } }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/arraybuffer.slice": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", @@ -301,12 +346,12 @@ "dev": true }, "node_modules/axios": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", - "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", "dev": true, "dependencies": { - "follow-redirects": "^1.10.0" + "follow-redirects": "^1.14.0" } }, "node_modules/backo2": { @@ -662,9 +707,9 @@ } }, "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { "node": ">=8" @@ -1222,6 +1267,18 @@ "node": ">= 0.8.0" } }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", @@ -1549,12 +1606,37 @@ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "dev": true }, + "node_modules/fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -1608,12 +1690,23 @@ } }, "node_modules/follow-redirects": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.2.tgz", - "integrity": "sha512-6mPTgLxYm3r6Bkkg0vNM0HTjfGrOEtsfbhagQvbxDEsEkpNhw582upBaoRZylzen6krEmxXJgt9Ju6HiI4O7BA==", + "version": "1.14.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", + "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], "engines": { "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, "node_modules/form-data": { @@ -1700,6 +1793,26 @@ "node": ">= 6" } }, + "node_modules/globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/graceful-fs": { "version": "4.2.6", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", @@ -1963,6 +2076,15 @@ "postcss": "^8.1.0" } }, + "node_modules/ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/immutable": { "version": "3.8.2", "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", @@ -2250,15 +2372,15 @@ } }, "node_modules/localtunnel": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.1.tgz", - "integrity": "sha512-LiaI5wZdz0xFkIQpXbNI62ZnNn8IMsVhwxHmhA+h4vj8R9JG/07bQHWwQlyy7b95/5fVOCHJfIHv+a5XnkvaJA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.2.tgz", + "integrity": "sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==", "dev": true, "dependencies": { - "axios": "0.21.1", - "debug": "4.3.1", + "axios": "0.21.4", + "debug": "4.3.2", "openurl": "1.1.1", - "yargs": "16.2.0" + "yargs": "17.1.1" }, "bin": { "lt": "bin/lt.js" @@ -2268,15 +2390,20 @@ } }, "node_modules/localtunnel/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "dependencies": { "ms": "2.1.2" }, "engines": { "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, "node_modules/localtunnel/node_modules/ms": { @@ -2286,9 +2413,9 @@ "dev": true }, "node_modules/localtunnel/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "version": "17.1.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", + "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", "dev": true, "dependencies": { "cliui": "^7.0.2", @@ -2300,7 +2427,7 @@ "yargs-parser": "^20.2.2" }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/locate-path": { @@ -2360,6 +2487,15 @@ "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", "dev": true }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, "node_modules/micromatch": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", @@ -2538,9 +2674,9 @@ } }, "node_modules/nth-check": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", - "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", "dev": true, "dependencies": { "boolbase": "^1.0.0" @@ -2734,6 +2870,15 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -3384,6 +3529,26 @@ "node": ">=0.6" } }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/random-bytes": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", @@ -3488,6 +3653,16 @@ "ms": "2.0.0" } }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, "node_modules/rollup": { "version": "2.58.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.58.0.tgz", @@ -3597,6 +3772,29 @@ "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", "dev": true }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, "node_modules/rx": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", @@ -3825,6 +4023,15 @@ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", "dev": true }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/socket.io": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.4.0.tgz", @@ -3994,9 +4201,9 @@ } }, "node_modules/string-width/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { "node": ">=8" @@ -4405,9 +4612,9 @@ } }, "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { "node": ">=8" @@ -4529,9 +4736,9 @@ } }, "node_modules/yargs/node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { "node": ">=8" @@ -4613,6 +4820,32 @@ } }, "dependencies": { + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, "@popperjs/core": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz", @@ -4795,6 +5028,12 @@ "picomatch": "^2.0.4" } }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, "arraybuffer.slice": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", @@ -4820,12 +5059,12 @@ "dev": true }, "axios": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", - "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", "dev": true, "requires": { - "follow-redirects": "^1.10.0" + "follow-redirects": "^1.14.0" } }, "backo2": { @@ -5116,9 +5355,9 @@ }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "strip-ansi": { @@ -5547,6 +5786,15 @@ "integrity": "sha1-p2o+0YVb56ASu4rBbLgPPADcKPA=", "dev": true }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, "dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", @@ -5807,12 +6055,34 @@ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "dev": true }, + "fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -5859,9 +6129,9 @@ } }, "follow-redirects": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.2.tgz", - "integrity": "sha512-6mPTgLxYm3r6Bkkg0vNM0HTjfGrOEtsfbhagQvbxDEsEkpNhw582upBaoRZylzen6krEmxXJgt9Ju6HiI4O7BA==", + "version": "1.14.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", + "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==", "dev": true }, "form-data": { @@ -5929,6 +6199,20 @@ "is-glob": "^4.0.1" } }, + "globby": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", + "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, "graceful-fs": { "version": "4.2.6", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", @@ -6143,6 +6427,12 @@ "dev": true, "requires": {} }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, "immutable": { "version": "3.8.2", "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", @@ -6365,21 +6655,21 @@ } }, "localtunnel": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.1.tgz", - "integrity": "sha512-LiaI5wZdz0xFkIQpXbNI62ZnNn8IMsVhwxHmhA+h4vj8R9JG/07bQHWwQlyy7b95/5fVOCHJfIHv+a5XnkvaJA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.2.tgz", + "integrity": "sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==", "dev": true, "requires": { - "axios": "0.21.1", - "debug": "4.3.1", + "axios": "0.21.4", + "debug": "4.3.2", "openurl": "1.1.1", - "yargs": "16.2.0" + "yargs": "17.1.1" }, "dependencies": { "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { "ms": "2.1.2" @@ -6392,9 +6682,9 @@ "dev": true }, "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "version": "17.1.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", + "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", "dev": true, "requires": { "cliui": "^7.0.2", @@ -6462,6 +6752,12 @@ "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", "dev": true }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, "micromatch": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", @@ -6600,9 +6896,9 @@ "dev": true }, "nth-check": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz", - "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", "dev": true, "requires": { "boolbase": "^1.0.0" @@ -6757,6 +7053,12 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, "picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -7168,6 +7470,12 @@ "integrity": "sha1-HPyyXBCpsrSDBT/zn138kjOQjP4=", "dev": true }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, "random-bytes": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", @@ -7253,6 +7561,12 @@ } } }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, "rollup": { "version": "2.58.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.58.0.tgz", @@ -7336,6 +7650,15 @@ } } }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, "rx": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", @@ -7535,6 +7858,12 @@ "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", "dev": true }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, "socket.io": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.4.0.tgz", @@ -7688,9 +8017,9 @@ }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "strip-ansi": { @@ -7997,9 +8326,9 @@ }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { @@ -8079,9 +8408,9 @@ }, "dependencies": { "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { diff --git a/package.json b/package.json index 6d5f58957..0159c797b 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "name": "Jonathan Peterson" }, "name": "@eonasdan/tempus-dominus", - "version": "6.0.0-alpha1.0.13", + "version": "6.0.0-alpha14", "style": "dist/css/tempus-dominus.css", "sass": "scss/tempus-dominus.scss", "main": "dist/js/tempus-dominus.js", @@ -56,7 +56,8 @@ "sass": "^1.42.1", "terser": "^5.9.0", "tslib": "^2.3.1", - "typescript": "~4.4.3" + "typescript": "~4.4.3", + "globby": "^11.0.4" }, "homepage": "https://getdatepicker.com/", "keywords": [ diff --git a/src/docs/partials/change-log.html b/src/docs/partials/change-log.html index 592017f4c..724131cba 100644 --- a/src/docs/partials/change-log.html +++ b/src/docs/partials/change-log.html @@ -1,7 +1,7 @@

    Version 6

    -

    Version 6-alpha_

    +

    Version 6-alpha14

    New

    • Cleaned up css a bit. Got rid of the popper arrow and aligned the picker to the start of the element.
    • diff --git a/src/docs/partials/installing.html b/src/docs/partials/installing.html index 4c845147d..4d8c7dd83 100644 --- a/src/docs/partials/installing.html +++ b/src/docs/partials/installing.html @@ -19,10 +19,10 @@

      Via CDN

      <!-- Popperjs --> <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.3/dist/umd/popper.min.js" integrity="sha384-eMNCOe7tC1doHpGoWe/6oMVemdAVTMs2xqW4mwXrXsW0L84Iytr2wi5v2QjrP/xp" crossorigin="anonymous"></script> <!-- Tempus Dominus JavaScript --> -<script src="https://cdn.jsdelivr.net/gh/Eonasdan/tempus-dominus@v6-alpha1/dist/js/tempus-dominus.js" crossorigin="anonymous"></script> +<script src="https://cdn.jsdelivr.net/gh/Eonasdan/tempus-dominus@v6-alpha14/dist/js/tempus-dominus.js" crossorigin="anonymous"></script> <!-- Tempus Dominus Styles --> -<link href="https://cdn.jsdelivr.net/gh/Eonasdan/tempus-dominus@v6-alpha1/dist/css/tempus-dominus.css" rel="stylesheet" crossorigin="anonymous"> +<link href="https://cdn.jsdelivr.net/gh/Eonasdan/tempus-dominus@v6-alpha14/dist/css/tempus-dominus.css" rel="stylesheet" crossorigin="anonymous">
    diff --git a/src/docs/templates/index.html b/src/docs/templates/index.html index 70cb28faa..c4914119b 100644 --- a/src/docs/templates/index.html +++ b/src/docs/templates/index.html @@ -16,7 +16,7 @@

    Powerful and robust date and time picker

    Download

    - Currently v6.0.0-alpha1.0.4 + Currently v6.0.0-alpha14 · v5 docs