From fdfd79ec649719377c1ff52df9cb135169e6a839 Mon Sep 17 00:00:00 2001 From: turwokts <48319429+TEKKSUNN@users.noreply.github.com> Date: Fri, 13 Sep 2024 19:42:45 +0800 Subject: [PATCH] Update: Fix project-card add-task btn error --- main.js | 2 +- main.js.map | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/main.js b/main.js index 6122d72..2640ba8 100644 --- a/main.js +++ b/main.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var n={848:(n,t,e)=>{e.d(t,{A:()=>k});var o=e(354),r=e.n(o),a=e(314),i=e.n(a),s=e(417),c=e.n(s),d=new URL(e(795),e.b),A=new URL(e(699),e.b),l=new URL(e(644),e.b),u=new URL(e(906),e.b),f=new URL(e(546),e.b),p=new URL(e(904),e.b),h=new URL(e(636),e.b),g=new URL(e(730),e.b),b=i()(r()),m=c()(d),C=c()(A),w=c()(l),y=c()(u),B=c()(f),v=c()(p),I=c()(h),x=c()(g);b.push([n.id,`/*! Generated by Font Squirrel (https://www.fontsquirrel.com) on August 13, 2024 */\n\n\n\n@font-face {\n font-family: 'robotoregular';\n src: url(${m}) format('woff2'),\n url(${C}) format('woff');\n font-weight: normal;\n font-style: normal;\n\n}\n\n\n\n\n@font-face {\n font-family: 'robotothin';\n src: url(${w}) format('woff2'),\n url(${y}) format('woff');\n font-weight: normal;\n font-style: normal;\n\n}\n\n\n\n\n@font-face {\n font-family: 'robotoblack';\n src: url(${B}) format('woff2'),\n url(${v}) format('woff');\n font-weight: normal;\n font-style: normal;\n\n}\n\n\n\n\n@font-face {\n font-family: 'robotobold';\n src: url(${I}) format('woff2'),\n url(${x}) format('woff');\n font-weight: normal;\n font-style: normal;\n\n}`,"",{version:3,sources:["webpack://./src/fonts/Roboto-Font/stylesheet.css"],names:[],mappings:"AAAA,kFAAkF;;;;AAIlF;IACI,4BAA4B;IAC5B;+DACsD;IACtD,mBAAmB;IACnB,kBAAkB;;AAEtB;;;;;AAKA;IACI,yBAAyB;IACzB;+DACmD;IACnD,mBAAmB;IACnB,kBAAkB;;AAEtB;;;;;AAKA;IACI,0BAA0B;IAC1B;+DACoD;IACpD,mBAAmB;IACnB,kBAAkB;;AAEtB;;;;;AAKA;IACI,yBAAyB;IACzB;+DACmD;IACnD,mBAAmB;IACnB,kBAAkB;;AAEtB",sourcesContent:["/*! Generated by Font Squirrel (https://www.fontsquirrel.com) on August 13, 2024 */\n\n\n\n@font-face {\n font-family: 'robotoregular';\n src: url('roboto-regular-webfont.woff2') format('woff2'),\n url('roboto-regular-webfont.woff') format('woff');\n font-weight: normal;\n font-style: normal;\n\n}\n\n\n\n\n@font-face {\n font-family: 'robotothin';\n src: url('roboto-thin-webfont.woff2') format('woff2'),\n url('roboto-thin-webfont.woff') format('woff');\n font-weight: normal;\n font-style: normal;\n\n}\n\n\n\n\n@font-face {\n font-family: 'robotoblack';\n src: url('roboto-black-webfont.woff2') format('woff2'),\n url('roboto-black-webfont.woff') format('woff');\n font-weight: normal;\n font-style: normal;\n\n}\n\n\n\n\n@font-face {\n font-family: 'robotobold';\n src: url('roboto-bold-webfont.woff2') format('woff2'),\n url('roboto-bold-webfont.woff') format('woff');\n font-weight: normal;\n font-style: normal;\n\n}"],sourceRoot:""}]);const k=b},326:(n,t,e)=>{e.d(t,{A:()=>p});var o=e(354),r=e.n(o),a=e(314),i=e.n(a),s=e(417),c=e.n(s),d=new URL(e(184),e.b),A=new URL(e(350),e.b),l=i()(r()),u=c()(d),f=c()(A);l.push([n.id,`/*! Generated by Font Squirrel (https://www.fontsquirrel.com) on August 28, 2024 */\n\n\n\n@font-face {\n font-family: 'alex_brushregular';\n src: url(${u}) format('woff2'),\n url(${f}) format('woff');\n font-weight: normal;\n font-style: normal;\n\n}`,"",{version:3,sources:["webpack://./src/fonts/alex-brush/stylesheet.css"],names:[],mappings:"AAAA,kFAAkF;;;;AAIlF;IACI,gCAAgC;IAChC;+DACyD;IACzD,mBAAmB;IACnB,kBAAkB;;AAEtB",sourcesContent:["/*! Generated by Font Squirrel (https://www.fontsquirrel.com) on August 28, 2024 */\n\n\n\n@font-face {\n font-family: 'alex_brushregular';\n src: url('alexbrush-regular-webfont.woff2') format('woff2'),\n url('alexbrush-regular-webfont.woff') format('woff');\n font-weight: normal;\n font-style: normal;\n\n}"],sourceRoot:""}]);const p=l},243:(n,t,e)=>{e.d(t,{A:()=>w});var o=e(354),r=e.n(o),a=e(314),i=e.n(a),s=e(848),c=e(326),d=e(417),A=e.n(d),l=new URL(e(661),e.b),u=new URL(e(321),e.b),f=new URL(e(859),e.b),p=new URL(e(819),e.b),h=i()(r());h.i(s.A),h.i(c.A);var g=A()(l),b=A()(u),m=A()(f),C=A()(p);h.push([n.id,`:root {\n --main-color: #222831;\n --secondary-color: #393E46;\n --tertiary-color: #00ADB5;\n --dark-tertiary-color: hsl(183, 100%, 25%);\n --quaternary-color: #EEEEEE;\n --logo-color: #FFC90E; \n --pad-height: 8px;\n --pad-width: 16px;\n --pad-neg-height: calc(var(--pad-height) - (var(--pad-height) * 2));\n --pad-neg-width: calc(var(--pad-width) - (var(--pad-width) * 2));\n --mild-shadow: 5px 5px 10px rgba(0, 0, 0, 0.25);\n --generic-padding: var(--pad-height) var(--pad-width);\n --small-padding: calc(var(--pad-height) / 2) calc(var(--pad-width) / 2);\n --softer-shadow: 5px 5px 10px rgba(0, 0, 0, 0.10);\n --light-tertiary-color: hsl(183, 100%, 45%);\n}\n\nbody {\n height: 100vh;\n width: auto;\n background-color: var(--quaternary-color);\n overflow: hidden;\n margin: 0;\n padding: 0;\n display: grid;\n grid-template: max-content 1fr max-content / 1fr;\n grid-template-areas:\n "header"\n "content"\n "footer";\n}\n\n* {\n padding: 0;\n margin: 0;\n font-family: 'robotoregular', sans-serif;\n}\n\n.web-info {\n display: flex;\n align-items: center;\n cursor: pointer;\n}\n\n.web-logo {\n height: 48px;\n width: 48px;\n position: relative;\n top: -4px;\n}\n\n.web-title {\n font-family: 'alex_brushregular', sans-serif;\n color: var(--logo-color);\n font-size: 48px;\n}\n\nheader {\n grid-area: header;\n background-image: linear-gradient(var(--main-color), var(--secondary-color));\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: var(--pad-height) var(--pad-width);\n box-shadow: var(--mild-shadow);\n}\n\n.tabs {\n align-self: flex-end;\n position: relative;\n bottom: var(--pad-neg-height);\n display: flex;\n gap: var(--pad-width);\n}\n\n.tab {\n font-family: 'robotothin', sans-serif;\n font-size: 24px;\n border: 0;\n background-color: transparent;\n padding-bottom: var(--pad-height);\n color: var(--quaternary-color);\n margin-bottom: 2px;\n}\n\n.tab:not(.active-tab):hover,\n.active-tab {\n color: var(--logo-color);\n border-bottom: 1px solid var(--logo-color);\n margin-bottom: 1px;\n text-shadow: var(--mild-shadow);\n} \n\n.active-tab {\n cursor: auto;\n}\n\nbutton {\n cursor: pointer;\n font-family: 'robotobold', sans-serif;\n}\n\nbutton:not(.tab):hover {\n box-shadow: var(--mild-shadow);\n}\n\nbutton.new-project {\n border: 0;\n padding: var(--pad-height) var(--pad-width);\n border-radius: 25px;\n font-family: 'robotobold', sans-serif;\n background-color: var(--secondary-color);\n color: var(--quaternary-color);\n}\n\nbutton.new-project:hover {\n background-color: var(--logo-color);\n text-shadow: var(--mild-shadow);\n color: var(--secondary-color);\n}\n\ndiv#content {\n grid-area: content;\n}\n\nfooter {\n grid-area: footer;\n}\n\ndialog {\n margin: auto;\n padding: var(--pad-height) var(--pad-width);\n overflow: visible;\n border: 2px solid black;\n border-radius: 5px;\n background-color: var(--quaternary-color);\n}\n\ndialog::backdrop {\n background-color: rgba(0, 0, 0, 0.10);\n}\n\nform {\n display: flex;\n flex-direction: column;\n gap: var(--pad-height);\n}\n\n.cancel-btn {\n position: absolute;\n --square-pad: 5px;\n --neg-square-pad: -8px;\n top: var(--neg-square-pad);\n right: var(--neg-square-pad);\n padding: 0 var(--square-pad);\n border-radius: 10px;\n background-color: hsl(0, 50%, 50%);\n border: 2px solid black;\n}\n\ninput,\nselect {\n font-size: 14px;\n}\n\ninput[type="text"] {\n border: 0;\n background-color: var(--quaternary-color);\n border-bottom: 1px solid black;\n}\n\ninput {\n outline: 0;\n}\n\n.group {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n}\n\nlabel,\n.form-title {\n font-family: 'robotobold';\n}\n\nlabel {\n font-size: 18px;\n}\n\n.group > :not(label) {\n width: 50%;\n}\n\ndialog .add-button:hover,\ndialog .cancel-btn:hover {\n box-shadow: none;\n}\n\n#content {\n display: grid;\n grid-auto-rows: minmax(50px, 250px);\n grid-template-columns: repeat(auto-fill, minmax(50px, 250px));\n gap: 16px;\n padding: 16px;\n overflow: auto;\n}\n\n.project-card button {\n height: 20px;\n width: 20px;\n border: 0;\n background-size: 20px;\n background-color: transparent;\n}\n\n.card-lower button:hover {\n background-color: var(--light-tertiary-color);\n border-radius: 5px;\n overflow: visible;\n}\n\n.project-card {\n border-radius: 15px;\n background-color: var(--tertiary-color);\n color: var(--quaternary-color);\n box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.15);\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n.project-card:hover {\n box-shadow: var(--mild-shadow);\n}\n\n.view {\n background-image: url(${g});\n}\n\n.project-add-task {\n background-image: url(${b});\n}\n\n.project-notes {\n background-image: url(${m});\n}\n\n.card-upper {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--pad-height);\n background-color: var(--secondary-color);\n border-radius: 15px;\n}\n\n.card-upper:hover,\n.card-lower:hover {\n padding-bottom: var(--pad-height);\n}\n\n.card-upper:hover {\n border-bottom: 5px solid var(--main-color);\n}\n\n.card-lower:hover {\n border-bottom: 5px solid var(--dark-tertiary-color);\n}\n\n.card-lower {\n display: flex;\n flex-direction: column;\n padding: var(--pad-height);\n flex-grow: 1;\n gap: 18px;\n border-radius: 15px;\n justify-content: space-between;\n}\n\n.card-upper,\n.card-lower {\n padding-bottom: calc(var(--pad-height) + 5px);\n}\n\n.card-buttons {\n align-self: flex-end;\n display: flex;\n gap: 4px;\n}\n\n.project-desc {\n hyphens: auto;\n}\n\n.card-upper .delete {\n background-image: url(${C});\n background-color: rgba(255, 68, 68, 0.5);\n border-radius: 5px;\n}\n\n.card-upper .delete:hover {\n background-color: rgb(255, 68, 68);\n}\n\n.bool-dialog {\n padding: var(--generic-padding);\n background-color: var(--quaternary-color);\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.question {\n font-family: 'robotothin', sans-serif;\n font-weight: bold;\n}\n\n.choices {\n display: flex;\n justify-content: space-around;\n}\n\n.dialog-btn {\n padding: var(--small-padding);\n border: 1px solid black;\n border-radius: 5px;\n}\n\n.dialog-btn:hover {\n box-shadow: var(--softer-shadow);\n}\n\n.yes-btn {\n background-color: hsl(120, 100%, 50%);\n}\n\n.yes-btn:hover {\n background-color: hsl(120, 100%, 75%);\n}\n\n.no-btn {\n background-color: hsl(0, 50%, 50%);\n}\n\n.no-btn:hover {\n background-color: hsl(0, 50%, 75%);\n}\n\n.task-list {\n list-style-type: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.task-container,\n.add-task-container {\n display: flex;\n gap: 8px;\n font-family: 'robotothin', sans-serif;\n align-items: center;\n justify-content: space-between;\n}\n\n.tasks-header {\n text-align: center;\n border-bottom: 2px solid var(--main-color);\n margin-bottom: 4px;\n}\n\n.task-btn {\n --size: 20px;\n background-image: url(${b});\n height: var(--size);\n width: var(--size);\n background-size: var(--size);\n border: 0;\n background-color: transparent;\n position: relative;\n right: 4px;\n}\n\nbutton.tasks-add-task.task-btn:hover {\n box-shadow: none;\n}\n\n.tasks-add-task {\n cursor: pointer;\n}\n\n.add-task-container {\n gap: 0;\n justify-content: flex-start;\n}\n\n.priority {\n --size: 5px;\n border-radius: var(--size);\n height: var(--size);\n width: var(--size);\n}\n\n.low-priority {\n background-color: green;\n}\n\n.medium-priority {\n background-color: yellow;\n}\n\n.high-priority {\n background-color: red;\n}\n\n.due-date-task {\n font-size: 0.75rem;\n color: grey;\n}\n\n.new-task-container {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.input-container > :nth-child(2) {\n width: 50%;\n}\n\n.input-container {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: 4px;\n}\n\n.radios-container {\n display: flex;\n flex-direction: column;\n}\n\n.radio-container {\n display: flex;\n}\n\n.task-submit {\n align-self: flex-end;\n}\n\n.new-task-container .task-submit:hover {\n box-shadow: none;\n}\n\n.delete-task {\n --size: 15px;\n background-image: url(${C});\n background-size: var(--size);\n height: var(--size);\n width: var(--size);\n border: 0;\n}\n\nbutton.delete-task:hover {\n box-shadow: none;\n}\n\nfieldset {\n border: 0;\n}\n\n.notes-container {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.save-notes-btn {\n align-self: flex-end;\n}\n\nbutton.save-notes-btn:hover {\n box-shadow: none;\n}\n\n.save-notes-btn,\n.add-button,\nbutton.add-task {\n border-radius: 5px;\n align-self: flex-end;\n padding: 8px 16px;\n background-color: hsl(120, 100%, 50%);\n}\n\n\n.save-notes-btn:hover,\n.add-button:hover,\nbutton.add-task:hover {\n background-color: hsl(120, 100%, 75%);\n}\n\nfooter {\n display: flex;\n justify-content: space-around;\n padding: var(--generic-padding);\n background-image: linear-gradient(var(--secondary-color), var(--main-color));\n box-shadow: 0 -5px 10px rgba(0, 0, 0, 0.25);\n}\n\nfooter * {\n color: var(--quaternary-color);\n}\n\na:hover {\n text-decoration: none;\n}\n\n.project-started {\n display: block;\n font-family: 'robotobold', sans-serif;\n color: var(--dark-tertiary-color);\n text-align: end;\n}`,"",{version:3,sources:["webpack://./src/stylesheets/styles.css"],names:[],mappings:"AAGA;IACI,qBAAqB;IACrB,0BAA0B;IAC1B,yBAAyB;IACzB,0CAA0C;IAC1C,2BAA2B;IAC3B,qBAAqB;IACrB,iBAAiB;IACjB,iBAAiB;IACjB,mEAAmE;IACnE,gEAAgE;IAChE,+CAA+C;IAC/C,qDAAqD;IACrD,uEAAuE;IACvE,iDAAiD;IACjD,2CAA2C;AAC/C;;AAEA;IACI,aAAa;IACb,WAAW;IACX,yCAAyC;IACzC,gBAAgB;IAChB,SAAS;IACT,UAAU;IACV,aAAa;IACb,gDAAgD;IAChD;;;gBAGY;AAChB;;AAEA;IACI,UAAU;IACV,SAAS;IACT,wCAAwC;AAC5C;;AAEA;IACI,aAAa;IACb,mBAAmB;IACnB,eAAe;AACnB;;AAEA;IACI,YAAY;IACZ,WAAW;IACX,kBAAkB;IAClB,SAAS;AACb;;AAEA;IACI,4CAA4C;IAC5C,wBAAwB;IACxB,eAAe;AACnB;;AAEA;IACI,iBAAiB;IACjB,4EAA4E;IAC5E,aAAa;IACb,8BAA8B;IAC9B,mBAAmB;IACnB,2CAA2C;IAC3C,8BAA8B;AAClC;;AAEA;IACI,oBAAoB;IACpB,kBAAkB;IAClB,6BAA6B;IAC7B,aAAa;IACb,qBAAqB;AACzB;;AAEA;IACI,qCAAqC;IACrC,eAAe;IACf,SAAS;IACT,6BAA6B;IAC7B,iCAAiC;IACjC,8BAA8B;IAC9B,kBAAkB;AACtB;;AAEA;;IAEI,wBAAwB;IACxB,0CAA0C;IAC1C,kBAAkB;IAClB,+BAA+B;AACnC;;AAEA;IACI,YAAY;AAChB;;AAEA;IACI,eAAe;IACf,qCAAqC;AACzC;;AAEA;IACI,8BAA8B;AAClC;;AAEA;IACI,SAAS;IACT,2CAA2C;IAC3C,mBAAmB;IACnB,qCAAqC;IACrC,wCAAwC;IACxC,8BAA8B;AAClC;;AAEA;IACI,mCAAmC;IACnC,+BAA+B;IAC/B,6BAA6B;AACjC;;AAEA;IACI,kBAAkB;AACtB;;AAEA;IACI,iBAAiB;AACrB;;AAEA;IACI,YAAY;IACZ,2CAA2C;IAC3C,iBAAiB;IACjB,uBAAuB;IACvB,kBAAkB;IAClB,yCAAyC;AAC7C;;AAEA;IACI,qCAAqC;AACzC;;AAEA;IACI,aAAa;IACb,sBAAsB;IACtB,sBAAsB;AAC1B;;AAEA;IACI,kBAAkB;IAClB,iBAAiB;IACjB,sBAAsB;IACtB,0BAA0B;IAC1B,4BAA4B;IAC5B,4BAA4B;IAC5B,mBAAmB;IACnB,kCAAkC;IAClC,uBAAuB;AAC3B;;AAEA;;IAEI,eAAe;AACnB;;AAEA;IACI,SAAS;IACT,yCAAyC;IACzC,8BAA8B;AAClC;;AAEA;IACI,UAAU;AACd;;AAEA;IACI,aAAa;IACb,yBAAyB;IACzB,QAAQ;AACZ;;AAEA;;IAEI,yBAAyB;AAC7B;;AAEA;IACI,eAAe;AACnB;;AAEA;IACI,UAAU;AACd;;AAEA;;IAEI,gBAAgB;AACpB;;AAEA;IACI,aAAa;IACb,mCAAmC;IACnC,6DAA6D;IAC7D,SAAS;IACT,aAAa;IACb,cAAc;AAClB;;AAEA;IACI,YAAY;IACZ,WAAW;IACX,SAAS;IACT,qBAAqB;IACrB,6BAA6B;AACjC;;AAEA;IACI,6CAA6C;IAC7C,kBAAkB;IAClB,iBAAiB;AACrB;;AAEA;IACI,mBAAmB;IACnB,uCAAuC;IACvC,8BAA8B;IAC9B,4CAA4C;IAC5C,cAAc;IACd,aAAa;IACb,sBAAsB;AAC1B;;AAEA;IACI,8BAA8B;AAClC;;AAEA;IACI,yDAAmD;AACvD;;AAEA;IACI,yDAA0C;AAC9C;;AAEA;IACI,yDAA4C;AAChD;;AAEA;IACI,aAAa;IACb,mBAAmB;IACnB,8BAA8B;IAC9B,0BAA0B;IAC1B,wCAAwC;IACxC,mBAAmB;AACvB;;AAEA;;IAEI,iCAAiC;AACrC;;AAEA;IACI,0CAA0C;AAC9C;;AAEA;IACI,mDAAmD;AACvD;;AAEA;IACI,aAAa;IACb,sBAAsB;IACtB,0BAA0B;IAC1B,YAAY;IACZ,SAAS;IACT,mBAAmB;IACnB,8BAA8B;AAClC;;AAEA;;IAEI,6CAA6C;AACjD;;AAEA;IACI,oBAAoB;IACpB,aAAa;IACb,QAAQ;AACZ;;AAEA;IACI,aAAa;AACjB;;AAEA;IACI,yDAA6C;IAC7C,wCAAwC;IACxC,kBAAkB;AACtB;;AAEA;IACI,kCAAkC;AACtC;;AAEA;IACI,+BAA+B;IAC/B,yCAAyC;IACzC,aAAa;IACb,sBAAsB;IACtB,QAAQ;AACZ;;AAEA;IACI,qCAAqC;IACrC,iBAAiB;AACrB;;AAEA;IACI,aAAa;IACb,6BAA6B;AACjC;;AAEA;IACI,6BAA6B;IAC7B,uBAAuB;IACvB,kBAAkB;AACtB;;AAEA;IACI,gCAAgC;AACpC;;AAEA;IACI,qCAAqC;AACzC;;AAEA;IACI,qCAAqC;AACzC;;AAEA;IACI,kCAAkC;AACtC;;AAEA;IACI,kCAAkC;AACtC;;AAEA;IACI,qBAAqB;IACrB,SAAS;IACT,UAAU;IACV,aAAa;IACb,sBAAsB;IACtB,QAAQ;AACZ;;AAEA;;IAEI,aAAa;IACb,QAAQ;IACR,qCAAqC;IACrC,mBAAmB;IACnB,8BAA8B;AAClC;;AAEA;IACI,kBAAkB;IAClB,0CAA0C;IAC1C,kBAAkB;AACtB;;AAEA;IACI,YAAY;IACZ,yDAA0C;IAC1C,mBAAmB;IACnB,kBAAkB;IAClB,4BAA4B;IAC5B,SAAS;IACT,6BAA6B;IAC7B,kBAAkB;IAClB,UAAU;AACd;;AAEA;IACI,gBAAgB;AACpB;;AAEA;IACI,eAAe;AACnB;;AAEA;IACI,MAAM;IACN,2BAA2B;AAC/B;;AAEA;IACI,WAAW;IACX,0BAA0B;IAC1B,mBAAmB;IACnB,kBAAkB;AACtB;;AAEA;IACI,uBAAuB;AAC3B;;AAEA;IACI,wBAAwB;AAC5B;;AAEA;IACI,qBAAqB;AACzB;;AAEA;IACI,kBAAkB;IAClB,WAAW;AACf;;AAEA;IACI,aAAa;IACb,sBAAsB;IACtB,QAAQ;AACZ;;AAEA;IACI,UAAU;AACd;;AAEA;IACI,aAAa;IACb,yBAAyB;IACzB,mBAAmB;IACnB,QAAQ;AACZ;;AAEA;IACI,aAAa;IACb,sBAAsB;AAC1B;;AAEA;IACI,aAAa;AACjB;;AAEA;IACI,oBAAoB;AACxB;;AAEA;IACI,gBAAgB;AACpB;;AAEA;IACI,YAAY;IACZ,yDAA6C;IAC7C,4BAA4B;IAC5B,mBAAmB;IACnB,kBAAkB;IAClB,SAAS;AACb;;AAEA;IACI,gBAAgB;AACpB;;AAEA;IACI,SAAS;AACb;;AAEA;IACI,aAAa;IACb,sBAAsB;IACtB,QAAQ;AACZ;;AAEA;IACI,oBAAoB;AACxB;;AAEA;IACI,gBAAgB;AACpB;;AAEA;;;IAGI,kBAAkB;IAClB,oBAAoB;IACpB,iBAAiB;IACjB,qCAAqC;AACzC;;;AAGA;;;IAGI,qCAAqC;AACzC;;AAEA;IACI,aAAa;IACb,6BAA6B;IAC7B,+BAA+B;IAC/B,4EAA4E;IAC5E,2CAA2C;AAC/C;;AAEA;IACI,8BAA8B;AAClC;;AAEA;IACI,qBAAqB;AACzB;;AAEA;IACI,cAAc;IACd,qCAAqC;IACrC,iCAAiC;IACjC,eAAe;AACnB",sourcesContent:['@import url("../fonts/Roboto-Font/stylesheet.css");\n@import url("../fonts/alex-brush/stylesheet.css");\n\n:root {\n --main-color: #222831;\n --secondary-color: #393E46;\n --tertiary-color: #00ADB5;\n --dark-tertiary-color: hsl(183, 100%, 25%);\n --quaternary-color: #EEEEEE;\n --logo-color: #FFC90E; \n --pad-height: 8px;\n --pad-width: 16px;\n --pad-neg-height: calc(var(--pad-height) - (var(--pad-height) * 2));\n --pad-neg-width: calc(var(--pad-width) - (var(--pad-width) * 2));\n --mild-shadow: 5px 5px 10px rgba(0, 0, 0, 0.25);\n --generic-padding: var(--pad-height) var(--pad-width);\n --small-padding: calc(var(--pad-height) / 2) calc(var(--pad-width) / 2);\n --softer-shadow: 5px 5px 10px rgba(0, 0, 0, 0.10);\n --light-tertiary-color: hsl(183, 100%, 45%);\n}\n\nbody {\n height: 100vh;\n width: auto;\n background-color: var(--quaternary-color);\n overflow: hidden;\n margin: 0;\n padding: 0;\n display: grid;\n grid-template: max-content 1fr max-content / 1fr;\n grid-template-areas:\n "header"\n "content"\n "footer";\n}\n\n* {\n padding: 0;\n margin: 0;\n font-family: \'robotoregular\', sans-serif;\n}\n\n.web-info {\n display: flex;\n align-items: center;\n cursor: pointer;\n}\n\n.web-logo {\n height: 48px;\n width: 48px;\n position: relative;\n top: -4px;\n}\n\n.web-title {\n font-family: \'alex_brushregular\', sans-serif;\n color: var(--logo-color);\n font-size: 48px;\n}\n\nheader {\n grid-area: header;\n background-image: linear-gradient(var(--main-color), var(--secondary-color));\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: var(--pad-height) var(--pad-width);\n box-shadow: var(--mild-shadow);\n}\n\n.tabs {\n align-self: flex-end;\n position: relative;\n bottom: var(--pad-neg-height);\n display: flex;\n gap: var(--pad-width);\n}\n\n.tab {\n font-family: \'robotothin\', sans-serif;\n font-size: 24px;\n border: 0;\n background-color: transparent;\n padding-bottom: var(--pad-height);\n color: var(--quaternary-color);\n margin-bottom: 2px;\n}\n\n.tab:not(.active-tab):hover,\n.active-tab {\n color: var(--logo-color);\n border-bottom: 1px solid var(--logo-color);\n margin-bottom: 1px;\n text-shadow: var(--mild-shadow);\n} \n\n.active-tab {\n cursor: auto;\n}\n\nbutton {\n cursor: pointer;\n font-family: \'robotobold\', sans-serif;\n}\n\nbutton:not(.tab):hover {\n box-shadow: var(--mild-shadow);\n}\n\nbutton.new-project {\n border: 0;\n padding: var(--pad-height) var(--pad-width);\n border-radius: 25px;\n font-family: \'robotobold\', sans-serif;\n background-color: var(--secondary-color);\n color: var(--quaternary-color);\n}\n\nbutton.new-project:hover {\n background-color: var(--logo-color);\n text-shadow: var(--mild-shadow);\n color: var(--secondary-color);\n}\n\ndiv#content {\n grid-area: content;\n}\n\nfooter {\n grid-area: footer;\n}\n\ndialog {\n margin: auto;\n padding: var(--pad-height) var(--pad-width);\n overflow: visible;\n border: 2px solid black;\n border-radius: 5px;\n background-color: var(--quaternary-color);\n}\n\ndialog::backdrop {\n background-color: rgba(0, 0, 0, 0.10);\n}\n\nform {\n display: flex;\n flex-direction: column;\n gap: var(--pad-height);\n}\n\n.cancel-btn {\n position: absolute;\n --square-pad: 5px;\n --neg-square-pad: -8px;\n top: var(--neg-square-pad);\n right: var(--neg-square-pad);\n padding: 0 var(--square-pad);\n border-radius: 10px;\n background-color: hsl(0, 50%, 50%);\n border: 2px solid black;\n}\n\ninput,\nselect {\n font-size: 14px;\n}\n\ninput[type="text"] {\n border: 0;\n background-color: var(--quaternary-color);\n border-bottom: 1px solid black;\n}\n\ninput {\n outline: 0;\n}\n\n.group {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n}\n\nlabel,\n.form-title {\n font-family: \'robotobold\';\n}\n\nlabel {\n font-size: 18px;\n}\n\n.group > :not(label) {\n width: 50%;\n}\n\ndialog .add-button:hover,\ndialog .cancel-btn:hover {\n box-shadow: none;\n}\n\n#content {\n display: grid;\n grid-auto-rows: minmax(50px, 250px);\n grid-template-columns: repeat(auto-fill, minmax(50px, 250px));\n gap: 16px;\n padding: 16px;\n overflow: auto;\n}\n\n.project-card button {\n height: 20px;\n width: 20px;\n border: 0;\n background-size: 20px;\n background-color: transparent;\n}\n\n.card-lower button:hover {\n background-color: var(--light-tertiary-color);\n border-radius: 5px;\n overflow: visible;\n}\n\n.project-card {\n border-radius: 15px;\n background-color: var(--tertiary-color);\n color: var(--quaternary-color);\n box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.15);\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n.project-card:hover {\n box-shadow: var(--mild-shadow);\n}\n\n.view {\n background-image: url("../images/view-project.png");\n}\n\n.project-add-task {\n background-image: url("../images/add.png");\n}\n\n.project-notes {\n background-image: url("../images/notes.png");\n}\n\n.card-upper {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--pad-height);\n background-color: var(--secondary-color);\n border-radius: 15px;\n}\n\n.card-upper:hover,\n.card-lower:hover {\n padding-bottom: var(--pad-height);\n}\n\n.card-upper:hover {\n border-bottom: 5px solid var(--main-color);\n}\n\n.card-lower:hover {\n border-bottom: 5px solid var(--dark-tertiary-color);\n}\n\n.card-lower {\n display: flex;\n flex-direction: column;\n padding: var(--pad-height);\n flex-grow: 1;\n gap: 18px;\n border-radius: 15px;\n justify-content: space-between;\n}\n\n.card-upper,\n.card-lower {\n padding-bottom: calc(var(--pad-height) + 5px);\n}\n\n.card-buttons {\n align-self: flex-end;\n display: flex;\n gap: 4px;\n}\n\n.project-desc {\n hyphens: auto;\n}\n\n.card-upper .delete {\n background-image: url("../images/delete.png");\n background-color: rgba(255, 68, 68, 0.5);\n border-radius: 5px;\n}\n\n.card-upper .delete:hover {\n background-color: rgb(255, 68, 68);\n}\n\n.bool-dialog {\n padding: var(--generic-padding);\n background-color: var(--quaternary-color);\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.question {\n font-family: \'robotothin\', sans-serif;\n font-weight: bold;\n}\n\n.choices {\n display: flex;\n justify-content: space-around;\n}\n\n.dialog-btn {\n padding: var(--small-padding);\n border: 1px solid black;\n border-radius: 5px;\n}\n\n.dialog-btn:hover {\n box-shadow: var(--softer-shadow);\n}\n\n.yes-btn {\n background-color: hsl(120, 100%, 50%);\n}\n\n.yes-btn:hover {\n background-color: hsl(120, 100%, 75%);\n}\n\n.no-btn {\n background-color: hsl(0, 50%, 50%);\n}\n\n.no-btn:hover {\n background-color: hsl(0, 50%, 75%);\n}\n\n.task-list {\n list-style-type: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.task-container,\n.add-task-container {\n display: flex;\n gap: 8px;\n font-family: \'robotothin\', sans-serif;\n align-items: center;\n justify-content: space-between;\n}\n\n.tasks-header {\n text-align: center;\n border-bottom: 2px solid var(--main-color);\n margin-bottom: 4px;\n}\n\n.task-btn {\n --size: 20px;\n background-image: url("../images/add.png");\n height: var(--size);\n width: var(--size);\n background-size: var(--size);\n border: 0;\n background-color: transparent;\n position: relative;\n right: 4px;\n}\n\nbutton.tasks-add-task.task-btn:hover {\n box-shadow: none;\n}\n\n.tasks-add-task {\n cursor: pointer;\n}\n\n.add-task-container {\n gap: 0;\n justify-content: flex-start;\n}\n\n.priority {\n --size: 5px;\n border-radius: var(--size);\n height: var(--size);\n width: var(--size);\n}\n\n.low-priority {\n background-color: green;\n}\n\n.medium-priority {\n background-color: yellow;\n}\n\n.high-priority {\n background-color: red;\n}\n\n.due-date-task {\n font-size: 0.75rem;\n color: grey;\n}\n\n.new-task-container {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.input-container > :nth-child(2) {\n width: 50%;\n}\n\n.input-container {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: 4px;\n}\n\n.radios-container {\n display: flex;\n flex-direction: column;\n}\n\n.radio-container {\n display: flex;\n}\n\n.task-submit {\n align-self: flex-end;\n}\n\n.new-task-container .task-submit:hover {\n box-shadow: none;\n}\n\n.delete-task {\n --size: 15px;\n background-image: url("../images/delete.png");\n background-size: var(--size);\n height: var(--size);\n width: var(--size);\n border: 0;\n}\n\nbutton.delete-task:hover {\n box-shadow: none;\n}\n\nfieldset {\n border: 0;\n}\n\n.notes-container {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.save-notes-btn {\n align-self: flex-end;\n}\n\nbutton.save-notes-btn:hover {\n box-shadow: none;\n}\n\n.save-notes-btn,\n.add-button,\nbutton.add-task {\n border-radius: 5px;\n align-self: flex-end;\n padding: 8px 16px;\n background-color: hsl(120, 100%, 50%);\n}\n\n\n.save-notes-btn:hover,\n.add-button:hover,\nbutton.add-task:hover {\n background-color: hsl(120, 100%, 75%);\n}\n\nfooter {\n display: flex;\n justify-content: space-around;\n padding: var(--generic-padding);\n background-image: linear-gradient(var(--secondary-color), var(--main-color));\n box-shadow: 0 -5px 10px rgba(0, 0, 0, 0.25);\n}\n\nfooter * {\n color: var(--quaternary-color);\n}\n\na:hover {\n text-decoration: none;\n}\n\n.project-started {\n display: block;\n font-family: \'robotobold\', sans-serif;\n color: var(--dark-tertiary-color);\n text-align: end;\n}'],sourceRoot:""}]);const w=h},314:n=>{n.exports=function(n){var t=[];return t.toString=function(){return this.map((function(t){var e="",o=void 0!==t[5];return t[4]&&(e+="@supports (".concat(t[4],") {")),t[2]&&(e+="@media ".concat(t[2]," {")),o&&(e+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),e+=n(t),o&&(e+="}"),t[2]&&(e+="}"),t[4]&&(e+="}"),e})).join("")},t.i=function(n,e,o,r,a){"string"==typeof n&&(n=[[null,n,void 0]]);var i={};if(o)for(var s=0;s0?" ".concat(A[5]):""," {").concat(A[1],"}")),A[5]=a),e&&(A[2]?(A[1]="@media ".concat(A[2]," {").concat(A[1],"}"),A[2]=e):A[2]=e),r&&(A[4]?(A[1]="@supports (".concat(A[4],") {").concat(A[1],"}"),A[4]=r):A[4]="".concat(r)),t.push(A))}},t}},417:n=>{n.exports=function(n,t){return t||(t={}),n?(n=String(n.__esModule?n.default:n),/^['"].*['"]$/.test(n)&&(n=n.slice(1,-1)),t.hash&&(n+=t.hash),/["'() \t\n]|(%20)/.test(n)||t.needQuotes?'"'.concat(n.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):n):n}},354:n=>{n.exports=function(n){var t=n[1],e=n[3];if(!e)return t;if("function"==typeof btoa){var o=btoa(unescape(encodeURIComponent(JSON.stringify(e)))),r="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(o),a="/*# ".concat(r," */");return[t].concat([a]).join("\n")}return[t].join("\n")}},72:n=>{var t=[];function e(n){for(var e=-1,o=0;o{var t={};n.exports=function(n,e){var o=function(n){if(void 0===t[n]){var e=document.querySelector(n);if(window.HTMLIFrameElement&&e instanceof window.HTMLIFrameElement)try{e=e.contentDocument.head}catch(n){e=null}t[n]=e}return t[n]}(n);if(!o)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");o.appendChild(e)}},540:n=>{n.exports=function(n){var t=document.createElement("style");return n.setAttributes(t,n.attributes),n.insert(t,n.options),t}},56:(n,t,e)=>{n.exports=function(n){var t=e.nc;t&&n.setAttribute("nonce",t)}},825:n=>{n.exports=function(n){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=n.insertStyleElement(n);return{update:function(e){!function(n,t,e){var o="";e.supports&&(o+="@supports (".concat(e.supports,") {")),e.media&&(o+="@media ".concat(e.media," {"));var r=void 0!==e.layer;r&&(o+="@layer".concat(e.layer.length>0?" ".concat(e.layer):""," {")),o+=e.css,r&&(o+="}"),e.media&&(o+="}"),e.supports&&(o+="}");var a=e.sourceMap;a&&"undefined"!=typeof btoa&&(o+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a))))," */")),t.styleTagTransform(o,n,t.options)}(t,n,e)},remove:function(){!function(n){if(null===n.parentNode)return!1;n.parentNode.removeChild(n)}(t)}}}},113:n=>{n.exports=function(n,t){if(t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}},904:(n,t,e)=>{n.exports=e.p+"3b9bbab1293fc714468b.woff"},546:(n,t,e)=>{n.exports=e.p+"f9b3f8a8674499775322.woff2"},730:(n,t,e)=>{n.exports=e.p+"47fb9dd31cf3111e78b5.woff"},636:(n,t,e)=>{n.exports=e.p+"60cf2bdb54c95f0a16bf.woff2"},699:(n,t,e)=>{n.exports=e.p+"61a31a6d35b431a3ba1c.woff"},795:(n,t,e)=>{n.exports=e.p+"3466b273d2b3aafe4f24.woff2"},906:(n,t,e)=>{n.exports=e.p+"725047ac22c4f8ae63b4.woff"},644:(n,t,e)=>{n.exports=e.p+"27117b52a620daa982aa.woff2"},350:(n,t,e)=>{n.exports=e.p+"b5aa5aac63d382c06ecc.woff"},184:(n,t,e)=>{n.exports=e.p+"6d4e58af2d877d6342f2.woff2"},321:(n,t,e)=>{n.exports=e.p+"1235f8e6b3496ee92ee7.png"},819:(n,t,e)=>{n.exports=e.p+"a21ec1fcd657814cc3ea.png"},859:(n,t,e)=>{n.exports=e.p+"b36267a7caa11e3ac78a.png"},661:(n,t,e)=>{n.exports=e.p+"db6ef2223f06bee7c6c2.png"}},t={};function e(o){var r=t[o];if(void 0!==r)return r.exports;var a=t[o]={id:o,exports:{}};return n[o](a,a.exports,e),a.exports}e.m=n,e.n=n=>{var t=n&&n.__esModule?()=>n.default:()=>n;return e.d(t,{a:t}),t},e.d=(n,t)=>{for(var o in t)e.o(t,o)&&!e.o(n,o)&&Object.defineProperty(n,o,{enumerable:!0,get:t[o]})},e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),e.o=(n,t)=>Object.prototype.hasOwnProperty.call(n,t),(()=>{var n;e.g.importScripts&&(n=e.g.location+"");var t=e.g.document;if(!n&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(n=t.currentScript.src),!n)){var o=t.getElementsByTagName("script");if(o.length)for(var r=o.length-1;r>-1&&(!n||!/^http(s?):/.test(n));)n=o[r--].src}if(!n)throw new Error("Automatic publicPath is not supported in this browser");n=n.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),e.p=n})(),e.b=document.baseURI||self.location.href,e.nc=void 0;var o=e(72),r=e.n(o),a=e(825),i=e.n(a),s=e(659),c=e.n(s),d=e(56),A=e.n(d),l=e(540),u=e.n(l),f=e(113),p=e.n(f),h=e(243),g={};g.styleTagTransform=p(),g.setAttributes=A(),g.insert=c().bind(null,"head"),g.domAPI=i(),g.insertStyleElement=u(),r()(h.A,g),h.A&&h.A.locals&&h.A.locals;class b{constructor(n){this.query=n}get=()=>document.querySelector(this.query);getAll=()=>Array.from(document.querySelectorAll(this.query))}const m=function(n,t,e){const o=document.createElement(`${e}`);return o.textContent=t,o.className=n,o},C=function(n){const t=document.createElement("div");return t.className=n,t},w=function(n,t){const e=document.createElement("button");return e.textContent=t,e.className=n,e},y=function(n,...t){t.forEach((t=>{n.appendChild(t)}))},B=function(n,...t){t.forEach((t=>{t.addEventListener("click",n)}))},v=new b(".tab").getAll,I=new b("header").get,x=new b("#content").get,k=new b("dialog").getAll,E=()=>{const n=k();return n[n.length-1]},D=()=>{E().showModal()},j=()=>{k().forEach((n=>{n.close(),n.remove()}))},q=()=>{const n=E();n.close(),n.remove()},S=function(n,t,e){const o=document.createElement("form");return o.setAttribute("class",`${n}`),o.setAttribute("id",`${t}`),o},M=function(n,t,e){const o=document.createElement("label");return o.setAttribute("class",`${e}`),o.textContent=n,o.setAttribute("for",`${t}`),o},T=function(n,t,e){const o=document.createElement("input");return o.setAttribute("type",`${n}`),o.setAttribute("id",`${t}`),o.setAttribute("class",`${e}`),o},z=function(n,t){const e=w(t,n);return e.setAttribute("type","submit"),e},N=new b("#dialogs").get,P=function(n,t,e,o,r){const a=T(e,o,r);return a.setAttribute("name",n),a.setAttribute("value",t),a},W=function(n){const t=document.createElement("fieldset");return t.className=n,t},Y=(new b("footer").get,function(n,...t){t.forEach((t=>{t.addEventListener("submit",(n=>{n.preventDefault()})),t.addEventListener("submit",n)}))}),$={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}};function F(n){return(t={})=>{const e=t.width?String(t.width):n.defaultWidth;return n.formats[e]||n.formats[n.defaultWidth]}}const L={date:F({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:F({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:F({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},O={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"};function U(n){return(t,e)=>{let o;if("formatting"===(e?.context?String(e.context):"standalone")&&n.formattingValues){const t=n.defaultFormattingWidth||n.defaultWidth,r=e?.width?String(e.width):t;o=n.formattingValues[r]||n.formattingValues[t]}else{const t=n.defaultWidth,r=e?.width?String(e.width):n.defaultWidth;o=n.values[r]||n.values[t]}return o[n.argumentCallback?n.argumentCallback(t):t]}}const Q={ordinalNumber:(n,t)=>{const e=Number(n),o=e%100;if(o>20||o<10)switch(o%10){case 1:return e+"st";case 2:return e+"nd";case 3:return e+"rd"}return e+"th"},era:U({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:U({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:n=>n-1}),month:U({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:U({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:U({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaultFormattingWidth:"wide"})};function H(n){return(t,e={})=>{const o=e.width,r=o&&n.matchPatterns[o]||n.matchPatterns[n.defaultMatchWidth],a=t.match(r);if(!a)return null;const i=a[0],s=o&&n.parsePatterns[o]||n.parsePatterns[n.defaultParseWidth],c=Array.isArray(s)?function(n){for(let t=0;tparseInt(n,10)},(n,t={})=>{const e=n.match(G.matchPattern);if(!e)return null;const o=e[0],r=n.match(G.parsePattern);if(!r)return null;let a=G.valueCallback?G.valueCallback(r[0]):r[0];return a=t.valueCallback?t.valueCallback(a):a,{value:a,rest:n.slice(o.length)}}),era:H({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:H({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:n=>n+1}),month:H({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:H({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:H({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})};var G;const X={code:"en-US",formatDistance:(n,t,e)=>{let o;const r=$[n];return o="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",t.toString()),e?.addSuffix?e.comparison&&e.comparison>0?"in "+o:o+" ago":o},formatLong:L,formatRelative:(n,t,e,o)=>O[n],localize:Q,match:R,options:{weekStartsOn:0,firstWeekContainsDate:1}};let J={};function Z(){return J}Math.pow(10,8);const V=6048e5,_=864e5;function K(n){const t=Object.prototype.toString.call(n);return n instanceof Date||"object"==typeof n&&"[object Date]"===t?new n.constructor(+n):"number"==typeof n||"[object Number]"===t||"string"==typeof n||"[object String]"===t?new Date(n):new Date(NaN)}function nn(n){const t=K(n);return t.setHours(0,0,0,0),t}function tn(n){const t=K(n),e=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return e.setUTCFullYear(t.getFullYear()),+n-+e}function en(n,t){return n instanceof Date?new n.constructor(t):new Date(t)}function on(n){const t=K(n);return function(n,t){const e=nn(n),o=nn(t),r=+e-tn(e),a=+o-tn(o);return Math.round((r-a)/_)}(t,function(n){const t=K(n),e=en(n,0);return e.setFullYear(t.getFullYear(),0,1),e.setHours(0,0,0,0),e}(t))+1}function rn(n,t){const e=Z(),o=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??e.weekStartsOn??e.locale?.options?.weekStartsOn??0,r=K(n),a=r.getDay(),i=(a=r.getTime()?e+1:t.getTime()>=i.getTime()?e:e-1}function cn(n){const t=K(n),e=+an(t)-+function(n){const t=sn(n),e=en(n,0);return e.setFullYear(t,0,4),e.setHours(0,0,0,0),an(e)}(t);return Math.round(e/V)+1}function dn(n,t){const e=K(n),o=e.getFullYear(),r=Z(),a=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,i=en(n,0);i.setFullYear(o+1,0,a),i.setHours(0,0,0,0);const s=rn(i,t),c=en(n,0);c.setFullYear(o,0,a),c.setHours(0,0,0,0);const d=rn(c,t);return e.getTime()>=s.getTime()?o+1:e.getTime()>=d.getTime()?o:o-1}function An(n,t){const e=K(n),o=+rn(e,t)-+function(n,t){const e=Z(),o=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??e.firstWeekContainsDate??e.locale?.options?.firstWeekContainsDate??1,r=dn(n,t),a=en(n,0);return a.setFullYear(r,0,o),a.setHours(0,0,0,0),rn(a,t)}(e,t);return Math.round(o/V)+1}function ln(n,t){return(n<0?"-":"")+Math.abs(n).toString().padStart(t,"0")}const un={y(n,t){const e=n.getFullYear(),o=e>0?e:1-e;return ln("yy"===t?o%100:o,t.length)},M(n,t){const e=n.getMonth();return"M"===t?String(e+1):ln(e+1,2)},d:(n,t)=>ln(n.getDate(),t.length),a(n,t){const e=n.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return e.toUpperCase();case"aaa":return e;case"aaaaa":return e[0];default:return"am"===e?"a.m.":"p.m."}},h:(n,t)=>ln(n.getHours()%12||12,t.length),H:(n,t)=>ln(n.getHours(),t.length),m:(n,t)=>ln(n.getMinutes(),t.length),s:(n,t)=>ln(n.getSeconds(),t.length),S(n,t){const e=t.length,o=n.getMilliseconds();return ln(Math.trunc(o*Math.pow(10,e-3)),t.length)}},fn={G:function(n,t,e){const o=n.getFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return e.era(o,{width:"abbreviated"});case"GGGGG":return e.era(o,{width:"narrow"});default:return e.era(o,{width:"wide"})}},y:function(n,t,e){if("yo"===t){const t=n.getFullYear(),o=t>0?t:1-t;return e.ordinalNumber(o,{unit:"year"})}return un.y(n,t)},Y:function(n,t,e,o){const r=dn(n,o),a=r>0?r:1-r;return"YY"===t?ln(a%100,2):"Yo"===t?e.ordinalNumber(a,{unit:"year"}):ln(a,t.length)},R:function(n,t){return ln(sn(n),t.length)},u:function(n,t){return ln(n.getFullYear(),t.length)},Q:function(n,t,e){const o=Math.ceil((n.getMonth()+1)/3);switch(t){case"Q":return String(o);case"QQ":return ln(o,2);case"Qo":return e.ordinalNumber(o,{unit:"quarter"});case"QQQ":return e.quarter(o,{width:"abbreviated",context:"formatting"});case"QQQQQ":return e.quarter(o,{width:"narrow",context:"formatting"});default:return e.quarter(o,{width:"wide",context:"formatting"})}},q:function(n,t,e){const o=Math.ceil((n.getMonth()+1)/3);switch(t){case"q":return String(o);case"qq":return ln(o,2);case"qo":return e.ordinalNumber(o,{unit:"quarter"});case"qqq":return e.quarter(o,{width:"abbreviated",context:"standalone"});case"qqqqq":return e.quarter(o,{width:"narrow",context:"standalone"});default:return e.quarter(o,{width:"wide",context:"standalone"})}},M:function(n,t,e){const o=n.getMonth();switch(t){case"M":case"MM":return un.M(n,t);case"Mo":return e.ordinalNumber(o+1,{unit:"month"});case"MMM":return e.month(o,{width:"abbreviated",context:"formatting"});case"MMMMM":return e.month(o,{width:"narrow",context:"formatting"});default:return e.month(o,{width:"wide",context:"formatting"})}},L:function(n,t,e){const o=n.getMonth();switch(t){case"L":return String(o+1);case"LL":return ln(o+1,2);case"Lo":return e.ordinalNumber(o+1,{unit:"month"});case"LLL":return e.month(o,{width:"abbreviated",context:"standalone"});case"LLLLL":return e.month(o,{width:"narrow",context:"standalone"});default:return e.month(o,{width:"wide",context:"standalone"})}},w:function(n,t,e,o){const r=An(n,o);return"wo"===t?e.ordinalNumber(r,{unit:"week"}):ln(r,t.length)},I:function(n,t,e){const o=cn(n);return"Io"===t?e.ordinalNumber(o,{unit:"week"}):ln(o,t.length)},d:function(n,t,e){return"do"===t?e.ordinalNumber(n.getDate(),{unit:"date"}):un.d(n,t)},D:function(n,t,e){const o=on(n);return"Do"===t?e.ordinalNumber(o,{unit:"dayOfYear"}):ln(o,t.length)},E:function(n,t,e){const o=n.getDay();switch(t){case"E":case"EE":case"EEE":return e.day(o,{width:"abbreviated",context:"formatting"});case"EEEEE":return e.day(o,{width:"narrow",context:"formatting"});case"EEEEEE":return e.day(o,{width:"short",context:"formatting"});default:return e.day(o,{width:"wide",context:"formatting"})}},e:function(n,t,e,o){const r=n.getDay(),a=(r-o.weekStartsOn+8)%7||7;switch(t){case"e":return String(a);case"ee":return ln(a,2);case"eo":return e.ordinalNumber(a,{unit:"day"});case"eee":return e.day(r,{width:"abbreviated",context:"formatting"});case"eeeee":return e.day(r,{width:"narrow",context:"formatting"});case"eeeeee":return e.day(r,{width:"short",context:"formatting"});default:return e.day(r,{width:"wide",context:"formatting"})}},c:function(n,t,e,o){const r=n.getDay(),a=(r-o.weekStartsOn+8)%7||7;switch(t){case"c":return String(a);case"cc":return ln(a,t.length);case"co":return e.ordinalNumber(a,{unit:"day"});case"ccc":return e.day(r,{width:"abbreviated",context:"standalone"});case"ccccc":return e.day(r,{width:"narrow",context:"standalone"});case"cccccc":return e.day(r,{width:"short",context:"standalone"});default:return e.day(r,{width:"wide",context:"standalone"})}},i:function(n,t,e){const o=n.getDay(),r=0===o?7:o;switch(t){case"i":return String(r);case"ii":return ln(r,t.length);case"io":return e.ordinalNumber(r,{unit:"day"});case"iii":return e.day(o,{width:"abbreviated",context:"formatting"});case"iiiii":return e.day(o,{width:"narrow",context:"formatting"});case"iiiiii":return e.day(o,{width:"short",context:"formatting"});default:return e.day(o,{width:"wide",context:"formatting"})}},a:function(n,t,e){const o=n.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return e.dayPeriod(o,{width:"abbreviated",context:"formatting"});case"aaa":return e.dayPeriod(o,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return e.dayPeriod(o,{width:"narrow",context:"formatting"});default:return e.dayPeriod(o,{width:"wide",context:"formatting"})}},b:function(n,t,e){const o=n.getHours();let r;switch(r=12===o?"noon":0===o?"midnight":o/12>=1?"pm":"am",t){case"b":case"bb":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"bbb":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return e.dayPeriod(r,{width:"narrow",context:"formatting"});default:return e.dayPeriod(r,{width:"wide",context:"formatting"})}},B:function(n,t,e){const o=n.getHours();let r;switch(r=o>=17?"evening":o>=12?"afternoon":o>=4?"morning":"night",t){case"B":case"BB":case"BBB":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"BBBBB":return e.dayPeriod(r,{width:"narrow",context:"formatting"});default:return e.dayPeriod(r,{width:"wide",context:"formatting"})}},h:function(n,t,e){if("ho"===t){let t=n.getHours()%12;return 0===t&&(t=12),e.ordinalNumber(t,{unit:"hour"})}return un.h(n,t)},H:function(n,t,e){return"Ho"===t?e.ordinalNumber(n.getHours(),{unit:"hour"}):un.H(n,t)},K:function(n,t,e){const o=n.getHours()%12;return"Ko"===t?e.ordinalNumber(o,{unit:"hour"}):ln(o,t.length)},k:function(n,t,e){let o=n.getHours();return 0===o&&(o=24),"ko"===t?e.ordinalNumber(o,{unit:"hour"}):ln(o,t.length)},m:function(n,t,e){return"mo"===t?e.ordinalNumber(n.getMinutes(),{unit:"minute"}):un.m(n,t)},s:function(n,t,e){return"so"===t?e.ordinalNumber(n.getSeconds(),{unit:"second"}):un.s(n,t)},S:function(n,t){return un.S(n,t)},X:function(n,t,e){const o=n.getTimezoneOffset();if(0===o)return"Z";switch(t){case"X":return hn(o);case"XXXX":case"XX":return gn(o);default:return gn(o,":")}},x:function(n,t,e){const o=n.getTimezoneOffset();switch(t){case"x":return hn(o);case"xxxx":case"xx":return gn(o);default:return gn(o,":")}},O:function(n,t,e){const o=n.getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+pn(o,":");default:return"GMT"+gn(o,":")}},z:function(n,t,e){const o=n.getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+pn(o,":");default:return"GMT"+gn(o,":")}},t:function(n,t,e){return ln(Math.trunc(n.getTime()/1e3),t.length)},T:function(n,t,e){return ln(n.getTime(),t.length)}};function pn(n,t=""){const e=n>0?"-":"+",o=Math.abs(n),r=Math.trunc(o/60),a=o%60;return 0===a?e+String(r):e+String(r)+t+ln(a,2)}function hn(n,t){return n%60==0?(n>0?"-":"+")+ln(Math.abs(n)/60,2):gn(n,t)}function gn(n,t=""){const e=n>0?"-":"+",o=Math.abs(n);return e+ln(Math.trunc(o/60),2)+t+ln(o%60,2)}const bn=(n,t)=>{switch(n){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});default:return t.date({width:"full"})}},mn=(n,t)=>{switch(n){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});default:return t.time({width:"full"})}},Cn={p:mn,P:(n,t)=>{const e=n.match(/(P+)(p+)?/)||[],o=e[1],r=e[2];if(!r)return bn(n,t);let a;switch(o){case"P":a=t.dateTime({width:"short"});break;case"PP":a=t.dateTime({width:"medium"});break;case"PPP":a=t.dateTime({width:"long"});break;default:a=t.dateTime({width:"full"})}return a.replace("{{date}}",bn(o,t)).replace("{{time}}",mn(r,t))}},wn=/^D+$/,yn=/^Y+$/,Bn=["D","DD","YY","YYYY"];function vn(n){if(!(t=n,t instanceof Date||"object"==typeof t&&"[object Date]"===Object.prototype.toString.call(t)||"number"==typeof n))return!1;var t;const e=K(n);return!isNaN(Number(e))}const In=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,xn=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,kn=/^'([^]*?)'?$/,En=/''/g,Dn=/[a-zA-Z]/;function jn(n,t,e){const o=Z(),r=e?.locale??o.locale??X,a=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??o.firstWeekContainsDate??o.locale?.options?.firstWeekContainsDate??1,i=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??o.weekStartsOn??o.locale?.options?.weekStartsOn??0,s=K(n);if(!vn(s))throw new RangeError("Invalid time value");let c=t.match(xn).map((n=>{const t=n[0];return"p"===t||"P"===t?(0,Cn[t])(n,r.formatLong):n})).join("").match(In).map((n=>{if("''"===n)return{isToken:!1,value:"'"};const t=n[0];if("'"===t)return{isToken:!1,value:qn(n)};if(fn[t])return{isToken:!0,value:n};if(t.match(Dn))throw new RangeError("Format string contains an unescaped latin alphabet character `"+t+"`");return{isToken:!1,value:n}}));r.localize.preprocessor&&(c=r.localize.preprocessor(s,c));const d={firstWeekContainsDate:a,weekStartsOn:i,locale:r};return c.map((o=>{if(!o.isToken)return o.value;const a=o.value;return(!e?.useAdditionalWeekYearTokens&&function(n){return yn.test(n)}(a)||!e?.useAdditionalDayOfYearTokens&&function(n){return wn.test(n)}(a))&&function(n,t,e){const o=function(n,t,e){const o="Y"===n[0]?"years":"days of the month";return`Use \`${n.toLowerCase()}\` instead of \`${n}\` (in \`${t}\`) for formatting ${o} to the input \`${e}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}(n,t,e);if(console.warn(o),Bn.includes(n))throw new RangeError(o)}(a,t,String(n)),(0,fn[a[0]])(s,a,r.localize,d)})).join("")}function qn(n){const t=n.match(kn);return t?t[1].replace(En,"'"):n}const Sn=function(n){return jn(n,"MM/dd/yyyy HH:mm:ss")},Mn=function(n){return Tn(n).value},Tn=function(n){return new b(n.toString()).get()},zn=function(){const n=()=>Mn("#title-input"),t=()=>Mn("#desc-input"),e=()=>Sn(Mn("#due-date-input")),o=function(){return{title:n(),description:t(),dueDate:e()}};return{getTitle:n,getDesc:t,getDueDate:e,extractValues:o,extractAllValues:function(){let n=o();return n.tasks=[],n.notes="",n.started=Sn(new Date),n}}}(),Nn=function(n){return Mn(`${n} input[type="radio"]:checked`)},Pn=()=>({task:Mn("#task-name"),dueDate:Sn(Mn("#due-date-task")),priority:Nn("#task-priority-list"),finished:JSON.parse(Nn("#task-finished-state"))});function Wn(n,t){const e=K(n);return isNaN(t)?en(n,NaN):t?(e.setDate(e.getDate()+t),e):e}function Yn(n,t){const e=K(n);if(isNaN(t))return en(n,NaN);if(!t)return e;const o=e.getDate(),r=en(n,e.getTime());return r.setMonth(e.getMonth()+t+1,0),o>=r.getDate()?r:(e.setFullYear(r.getFullYear(),r.getMonth(),o),e)}function $n(){const n=Sn(new Date),t=Sn(function(n,t){const{years:e=0,months:o=0,weeks:r=0,days:a=0,hours:i=0,minutes:s=0,seconds:c=0}=t,d=K(n),A=o||e?Yn(d,o+12*e):d,l=1e3*(c+60*(s+60*i));return en(n,(a||r?Wn(A,a+7*r):A).getTime()+l)}(n,{days:1}));return[{title:"To-Do List",description:"Make a to-do list app",tasks:[{task:"Setup webpack",dueDate:t,priority:"high",finished:!0},{task:"Finish Project",dueDate:t,priority:"high",finished:!0},{task:"Submit Project",dueDate:t,priority:"high",finished:!0}],dueDate:t,notes:'This is a project for "The Odin Project"s online curriculum.',started:n}]}function Fn(n,t){const{years:e=0,months:o=0,weeks:r=0,days:a=0,hours:i=0,minutes:s=0,seconds:c=0}=t,d=1e3*(c+60*(s+60*i));return en(n,function(n,t){return Wn(n,-t)}(function(n,t){return Yn(n,-t)}(n,o+12*e),a+7*r).getTime()-d)}const Ln=n=>w("tab",`${n}`),On=function(n){v().forEach((t=>{t.id===n?t.className="tab active-tab":t.className="tab"}))},Un=x(),Qn=function(){const n=tt();On("today-tab"),Jn(n)},Hn=function(){Jn(et())},Rn=function(){Jn(ot())},Gn=function(){Jn(rt())},Xn=function(){Jn(Zn())},Jn=function(n){x().innerHTML="",n.forEach((n=>{y(Un,function(n){const t=at(n.title),e=C("project-card"),o=C("card-upper"),r=m("project-title",n.title,"h3"),a=w(`delete delete-project-${t}`,"");B((()=>At(`Are you sure you want to delete the "${n.title}" project?`,(()=>{it(document.querySelector(`.delete-project-${t}`))}))),a),y(o,r,a);const i=C("card-lower"),s=m("project-desc",n.description,"p"),c=m("project-started",` -${jn(n.started,"MM/dd/yyyy")}`,"span");y(s,c);const d=C("card-buttons"),A=w("view view-project","");B((()=>ft(n.title)),A);const l=w("project-add-task","");B((()=>At("Do you want to add a task for this project?",gt)),l);const u=w("project-notes","");return B((()=>Bt(n.title)),u),y(d,u,l,A),y(i,s,d),y(e,o,i),e}(n))}))},Zn=function(){return JSON.parse(localStorage.getItem("projects"))},Vn=function(n){localStorage.setItem("projects",JSON.stringify(n))},_n=function(n){n.preventDefault();const t=zn.extractAllValues();if(!Kn(t.title)){const n=Zn();n.push(t),Vn(n),Qn(),j()}},Kn=function(n){const t=Zn();let e=!1;return t.map((t=>{t.title===n&&(e=!0)})),e},nt=function(n,t,e){return Date.parse(e)>=Date.parse(t)&&Date.parse(e)<=Date.parse(n)},tt=function(){const n=Zn(),t=new Date;return n.filter((n=>nt(t,Fn(t,{days:1}),n.started)))},et=function(){const n=Zn(),t=new Date;return n.filter((n=>nt(t,Fn(t,{weeks:1}),n.started)))},ot=function(){const n=Zn(),t=new Date;return n.filter((n=>nt(t,Fn(t,{months:1}),n.started)))},rt=function(){const n=Zn(),t=new Date;return n.filter((n=>nt(t,Fn(t,{years:1}),n.started)))},at=function(n){const t=Zn();let e=null;return t.forEach(((t,o)=>{t.title===n&&(e=o)})),e},it=function(n){const t=Array.from(n.parentNode.getElementsByClassName("project-title"))[0].textContent;console.log(n.parentNode),Kn(t)&&(function(n){const t=Zn();t.splice(n,1),Vn(t)}(at(t)),Qn())},st=function(n,t){let e;return Zn()[at(t)].tasks.map(((t,o)=>{t.task===n&&(e=o)})),e},ct=N(),dt=function(n,t){const e=function(n,t){const e=document.createElement("dialog");return e.className=n,e.id=t,e}(n,t),o=w("cancel-btn","X");return B(j,o),y(e,o),e},At=function(n,t){const e=dt("bool-dialog"),o=m("question",`${n}`,"p"),r=C("choices"),a=w("dialog-btn yes-btn","Yes"),i=w("dialog-btn no-btn","No");B(q,a,i),B(t,a),y(r,a,i),y(e,o,r),y(ct,e),D()},lt=function(){const n=ut();y(ct,n),D()},ut=function(){const n=dt("add-new","add-project"),t=S("add-form","new-project"),e=m("form-title","Add New Project","h2"),o=C("group title-group"),r=M("Title:","title-input","project-label"),a=function(){const n=T("text","title-input","project-input required");return n.setAttribute("required",""),n}();y(o,r,a);const i=C("group desc-group"),s=M("Description:","desc-input","project-label"),c=T("text","desc-input","project-input");pt(c),y(i,s,c);const d=C("group due-date-group"),A=M("Due Date:","due-date-input","project-label"),l=T("datetime-local","due-date-input","project-input");pt(l),y(d,A,l);const u=z("Add","add-button project-submit");return Y(_n,t),y(t,e,o,i,d,u),y(n,t),n},ft=function(n){const t=ht(at(n));y(ct,t),D()},pt=function(...n){n.map((n=>{n.setAttribute("required","")}))},ht=function(n){const t=Zn()[n],e=dt("tasks-dialog",`tasks-${n}`),o=C("tasks-container"),r=m("tasks-header",`${t.title}`,"h3"),a=function(){const n=document.createElement("ul");return n.className="task-list",n}();t.tasks.map(((n,e)=>{const o=n.task,r=C("task-container"),i=T("checkbox",`check-${s=o,s.replace(/\s+/g,"-").toLowerCase()}`,"task-checkbox");var s;i.checked=n.finished,B((()=>{!function(n,t,e){const o=Zn();o[at(e)].tasks[st(t,e)].finished=n.checked,Vn(o)}(Array.from(document.querySelectorAll(".task-checkbox")[e]),o,t.title)}),i);const c=function(n,t){const e=document.createElement("li");return e.className="task",e.textContent=t,e}(0,o),d=C(`priority ${n.priority}-priority`),A=m("due-date-task",jn(n.dueDate,"yyyy/MM/dd"),"p"),l=w("delete-task","");B((()=>function(n,t){At("Are you sure you want to delete this task?",(()=>function(n,t){const e=Zn();e[at(t)].tasks.splice(st(n,t),1),Vn(e),yt(t)}(n,t)))}(n.task,t.title)),l),y(r,i,c,d,A,l),y(a,r)}));const i=C("add-task-container"),s=w("tasks-add-task task-btn",""),c=m("tasks-add-task task-text","Add new task...");return B(gt,s,c),y(i,s,c),y(a,i),y(o,r,a),y(e,o),e},gt=function(){const n=wt();y(ct,n),D()},bt=function(n,[...t],[...e]){const o=C(n.toString()),r=M(t[0],t[1],t[2]),a=T(e[0],e[1],e[2]);return pt(a),y(o,r,a),o},mt=function(n,t,e,o){const r=C("radio-container"),a=P(t,n,"radio",e,"dialog-radio"),i=M(o,e,"dialog-label");return y(r,a,i),r},Ct=function(n,t,e,o){const r=C("radio-container"),a=P(t,n,"radio",e,"dialog-radio"),i=M(o,e,"dialog-label");return pt(a),y(r,a,i),r},wt=function(){const n=dt("new-task-dialog","new-task-dialog"),t=C("new-task-container"),e=m("dialog-title","Add New Task","h3"),o=S("new-task-form","new-task-form"),r=bt("input-container",["Task:","task-name","dialog-label"],["text","task-name","add-task task-name"]),a=bt("input-container",["Due Date:","due-date-task","dialog-label"],["date","due-date-task","add-task task-due-date"]),i=C("input-container"),s=M("Priority:","task-priority-list","dialog-label"),c=W("radios-container");c.setAttribute("id","task-priority-list");const d=Ct("low","task-priority","","Low"),A=mt("medium","task-priority","","Medium"),l=mt("high","task-priority","","High");y(c,d,A,l),y(i,s,c);const u=C("input-container"),f=M("Finished?","task-finished-state","dialog-label"),p=W("radios-container");p.setAttribute("id","task-finished-state");const h=Ct("true","task-finished-state","","Yes"),g=mt("false","task-finished-state","","No");y(p,h,g),y(u,f,p);const b=z("Add","add-task task-submit");return y(o,r,a,i,u,b),Y((()=>function(n){const t=Zn(),e=Pn();(function(n,t){const e=Zn()[at(t)];let o=!1;return e.tasks.map((t=>{t.task===n&&(o=!0)})),o})(e.task,n)||(t[at(n)].tasks.push(e),Vn(t)),yt(n)}(Tn("#dialogs dialog:first-child h3.tasks-header").textContent)),o),y(t,e,o),y(n,t),n},yt=function(n){j(),ft(n)},Bt=function(n){const t=vt(n);y(ct,t),D()},vt=function(n){const t=dt("project-notes-dialog","project-notes-dialog"),e=C("notes-container"),o=m("notes-title","Project Notes:","h3"),r=function(){const n=document.createElement("textarea");return n.setAttribute("class","notes-textarea"),n.setAttribute("id","notes-textarea"),n.setAttribute("rows",4..toString()),n.setAttribute("cols",50..toString()),n.setAttribute("placeholder","Write something here for the project..."),n}();r.value=function(n){return Zn()[at(n)].notes}(n);const a=w("save-notes-btn","Save");return B((()=>function(n){const t=Zn(),e=Mn("#notes-textarea");t[at(n)].notes=e,Vn(t),j()}(n)),a),y(e,o,r,a),y(t,e),t},It=e.p+"e2644dd674270ad9f231.png";function xt(){const n=I(),t=C("web-info"),e=function(n,t){const e=document.createElement("img");return e.src=t,e.alt="website logo",e.className="web-logo",e}(0,It),o=m("web-title","Dailist","h1");y(t,e,o);const r=function(){const n=C("tabs"),t=Ln("Today"),e=Ln("This Week"),o=Ln("This Month"),r=Ln("This Year"),a=Ln("All");return function(...n){n.forEach((n=>{n.id=`${n.textContent.toLowerCase()}-${n.className}`}))}(t,e,o,r,a),function(...n){n.forEach((n=>{n.addEventListener("click",(()=>{On(n.id)}))}))}(t,e,o,r,a),B(Qn,t),B(Hn,e),B(Rn,o),B(Gn,r),B(Xn,a),y(n,t,e,o,r,a),n}(),a=w("new-project","+ New Project");B(lt,a),y(n,t,r,a)}document.addEventListener("DOMContentLoaded",(function(){!function(){if(null===localStorage.getItem("projects"))localStorage.setItem("projects",JSON.stringify($n()));else if(0===Zn().length){const n=Zn();n.push($n()[0]),Vn(n)}}(),xt(),Qn()}))})(); +(()=>{"use strict";var n={848:(n,t,e)=>{e.d(t,{A:()=>k});var o=e(354),r=e.n(o),a=e(314),i=e.n(a),s=e(417),c=e.n(s),d=new URL(e(795),e.b),A=new URL(e(699),e.b),l=new URL(e(644),e.b),u=new URL(e(906),e.b),f=new URL(e(546),e.b),p=new URL(e(904),e.b),h=new URL(e(636),e.b),g=new URL(e(730),e.b),b=i()(r()),m=c()(d),C=c()(A),w=c()(l),y=c()(u),B=c()(f),v=c()(p),I=c()(h),x=c()(g);b.push([n.id,`/*! Generated by Font Squirrel (https://www.fontsquirrel.com) on August 13, 2024 */\n\n\n\n@font-face {\n font-family: 'robotoregular';\n src: url(${m}) format('woff2'),\n url(${C}) format('woff');\n font-weight: normal;\n font-style: normal;\n\n}\n\n\n\n\n@font-face {\n font-family: 'robotothin';\n src: url(${w}) format('woff2'),\n url(${y}) format('woff');\n font-weight: normal;\n font-style: normal;\n\n}\n\n\n\n\n@font-face {\n font-family: 'robotoblack';\n src: url(${B}) format('woff2'),\n url(${v}) format('woff');\n font-weight: normal;\n font-style: normal;\n\n}\n\n\n\n\n@font-face {\n font-family: 'robotobold';\n src: url(${I}) format('woff2'),\n url(${x}) format('woff');\n font-weight: normal;\n font-style: normal;\n\n}`,"",{version:3,sources:["webpack://./src/fonts/Roboto-Font/stylesheet.css"],names:[],mappings:"AAAA,kFAAkF;;;;AAIlF;IACI,4BAA4B;IAC5B;+DACsD;IACtD,mBAAmB;IACnB,kBAAkB;;AAEtB;;;;;AAKA;IACI,yBAAyB;IACzB;+DACmD;IACnD,mBAAmB;IACnB,kBAAkB;;AAEtB;;;;;AAKA;IACI,0BAA0B;IAC1B;+DACoD;IACpD,mBAAmB;IACnB,kBAAkB;;AAEtB;;;;;AAKA;IACI,yBAAyB;IACzB;+DACmD;IACnD,mBAAmB;IACnB,kBAAkB;;AAEtB",sourcesContent:["/*! Generated by Font Squirrel (https://www.fontsquirrel.com) on August 13, 2024 */\n\n\n\n@font-face {\n font-family: 'robotoregular';\n src: url('roboto-regular-webfont.woff2') format('woff2'),\n url('roboto-regular-webfont.woff') format('woff');\n font-weight: normal;\n font-style: normal;\n\n}\n\n\n\n\n@font-face {\n font-family: 'robotothin';\n src: url('roboto-thin-webfont.woff2') format('woff2'),\n url('roboto-thin-webfont.woff') format('woff');\n font-weight: normal;\n font-style: normal;\n\n}\n\n\n\n\n@font-face {\n font-family: 'robotoblack';\n src: url('roboto-black-webfont.woff2') format('woff2'),\n url('roboto-black-webfont.woff') format('woff');\n font-weight: normal;\n font-style: normal;\n\n}\n\n\n\n\n@font-face {\n font-family: 'robotobold';\n src: url('roboto-bold-webfont.woff2') format('woff2'),\n url('roboto-bold-webfont.woff') format('woff');\n font-weight: normal;\n font-style: normal;\n\n}"],sourceRoot:""}]);const k=b},326:(n,t,e)=>{e.d(t,{A:()=>p});var o=e(354),r=e.n(o),a=e(314),i=e.n(a),s=e(417),c=e.n(s),d=new URL(e(184),e.b),A=new URL(e(350),e.b),l=i()(r()),u=c()(d),f=c()(A);l.push([n.id,`/*! Generated by Font Squirrel (https://www.fontsquirrel.com) on August 28, 2024 */\n\n\n\n@font-face {\n font-family: 'alex_brushregular';\n src: url(${u}) format('woff2'),\n url(${f}) format('woff');\n font-weight: normal;\n font-style: normal;\n\n}`,"",{version:3,sources:["webpack://./src/fonts/alex-brush/stylesheet.css"],names:[],mappings:"AAAA,kFAAkF;;;;AAIlF;IACI,gCAAgC;IAChC;+DACyD;IACzD,mBAAmB;IACnB,kBAAkB;;AAEtB",sourcesContent:["/*! Generated by Font Squirrel (https://www.fontsquirrel.com) on August 28, 2024 */\n\n\n\n@font-face {\n font-family: 'alex_brushregular';\n src: url('alexbrush-regular-webfont.woff2') format('woff2'),\n url('alexbrush-regular-webfont.woff') format('woff');\n font-weight: normal;\n font-style: normal;\n\n}"],sourceRoot:""}]);const p=l},243:(n,t,e)=>{e.d(t,{A:()=>w});var o=e(354),r=e.n(o),a=e(314),i=e.n(a),s=e(848),c=e(326),d=e(417),A=e.n(d),l=new URL(e(661),e.b),u=new URL(e(321),e.b),f=new URL(e(859),e.b),p=new URL(e(819),e.b),h=i()(r());h.i(s.A),h.i(c.A);var g=A()(l),b=A()(u),m=A()(f),C=A()(p);h.push([n.id,`:root {\n --main-color: #222831;\n --secondary-color: #393E46;\n --tertiary-color: #00ADB5;\n --dark-tertiary-color: hsl(183, 100%, 25%);\n --quaternary-color: #EEEEEE;\n --logo-color: #FFC90E; \n --pad-height: 8px;\n --pad-width: 16px;\n --pad-neg-height: calc(var(--pad-height) - (var(--pad-height) * 2));\n --pad-neg-width: calc(var(--pad-width) - (var(--pad-width) * 2));\n --mild-shadow: 5px 5px 10px rgba(0, 0, 0, 0.25);\n --generic-padding: var(--pad-height) var(--pad-width);\n --small-padding: calc(var(--pad-height) / 2) calc(var(--pad-width) / 2);\n --softer-shadow: 5px 5px 10px rgba(0, 0, 0, 0.10);\n --light-tertiary-color: hsl(183, 100%, 45%);\n}\n\nbody {\n height: 100vh;\n width: auto;\n background-color: var(--quaternary-color);\n overflow: hidden;\n margin: 0;\n padding: 0;\n display: grid;\n grid-template: max-content 1fr max-content / 1fr;\n grid-template-areas:\n "header"\n "content"\n "footer";\n}\n\n* {\n padding: 0;\n margin: 0;\n font-family: 'robotoregular', sans-serif;\n}\n\n.web-info {\n display: flex;\n align-items: center;\n cursor: pointer;\n}\n\n.web-logo {\n height: 48px;\n width: 48px;\n position: relative;\n top: -4px;\n}\n\n.web-title {\n font-family: 'alex_brushregular', sans-serif;\n color: var(--logo-color);\n font-size: 48px;\n}\n\nheader {\n grid-area: header;\n background-image: linear-gradient(var(--main-color), var(--secondary-color));\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: var(--pad-height) var(--pad-width);\n box-shadow: var(--mild-shadow);\n}\n\n.tabs {\n align-self: flex-end;\n position: relative;\n bottom: var(--pad-neg-height);\n display: flex;\n gap: var(--pad-width);\n}\n\n.tab {\n font-family: 'robotothin', sans-serif;\n font-size: 24px;\n border: 0;\n background-color: transparent;\n padding-bottom: var(--pad-height);\n color: var(--quaternary-color);\n margin-bottom: 2px;\n}\n\n.tab:not(.active-tab):hover,\n.active-tab {\n color: var(--logo-color);\n border-bottom: 1px solid var(--logo-color);\n margin-bottom: 1px;\n text-shadow: var(--mild-shadow);\n} \n\n.active-tab {\n cursor: auto;\n}\n\nbutton {\n cursor: pointer;\n font-family: 'robotobold', sans-serif;\n}\n\nbutton:not(.tab):hover {\n box-shadow: var(--mild-shadow);\n}\n\nbutton.new-project {\n border: 0;\n padding: var(--pad-height) var(--pad-width);\n border-radius: 25px;\n font-family: 'robotobold', sans-serif;\n background-color: var(--secondary-color);\n color: var(--quaternary-color);\n}\n\nbutton.new-project:hover {\n background-color: var(--logo-color);\n text-shadow: var(--mild-shadow);\n color: var(--secondary-color);\n}\n\ndiv#content {\n grid-area: content;\n}\n\nfooter {\n grid-area: footer;\n}\n\ndialog {\n margin: auto;\n padding: var(--pad-height) var(--pad-width);\n overflow: visible;\n border: 2px solid black;\n border-radius: 5px;\n background-color: var(--quaternary-color);\n}\n\ndialog::backdrop {\n background-color: rgba(0, 0, 0, 0.10);\n}\n\nform {\n display: flex;\n flex-direction: column;\n gap: var(--pad-height);\n}\n\n.cancel-btn {\n position: absolute;\n --square-pad: 5px;\n --neg-square-pad: -8px;\n top: var(--neg-square-pad);\n right: var(--neg-square-pad);\n padding: 0 var(--square-pad);\n border-radius: 10px;\n background-color: hsl(0, 50%, 50%);\n border: 2px solid black;\n}\n\ninput,\nselect {\n font-size: 14px;\n}\n\ninput[type="text"] {\n border: 0;\n background-color: var(--quaternary-color);\n border-bottom: 1px solid black;\n}\n\ninput {\n outline: 0;\n}\n\n.group {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n}\n\nlabel,\n.form-title {\n font-family: 'robotobold';\n}\n\nlabel {\n font-size: 18px;\n}\n\n.group > :not(label) {\n width: 50%;\n}\n\ndialog .add-button:hover,\ndialog .cancel-btn:hover {\n box-shadow: none;\n}\n\n#content {\n display: grid;\n grid-auto-rows: minmax(50px, 250px);\n grid-template-columns: repeat(auto-fill, minmax(50px, 250px));\n gap: 16px;\n padding: 16px;\n overflow: auto;\n}\n\n.project-card button {\n height: 20px;\n width: 20px;\n border: 0;\n background-size: 20px;\n background-color: transparent;\n}\n\n.card-lower button:hover {\n background-color: var(--light-tertiary-color);\n border-radius: 5px;\n overflow: visible;\n}\n\n.project-card {\n border-radius: 15px;\n background-color: var(--tertiary-color);\n color: var(--quaternary-color);\n box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.15);\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n.project-card:hover {\n box-shadow: var(--mild-shadow);\n}\n\n.view {\n background-image: url(${g});\n}\n\n.project-add-task {\n background-image: url(${b});\n}\n\n.project-notes {\n background-image: url(${m});\n}\n\n.card-upper {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--pad-height);\n background-color: var(--secondary-color);\n border-radius: 15px;\n}\n\n.card-upper:hover,\n.card-lower:hover {\n padding-bottom: var(--pad-height);\n}\n\n.card-upper:hover {\n border-bottom: 5px solid var(--main-color);\n}\n\n.card-lower:hover {\n border-bottom: 5px solid var(--dark-tertiary-color);\n}\n\n.card-lower {\n display: flex;\n flex-direction: column;\n padding: var(--pad-height);\n flex-grow: 1;\n gap: 18px;\n border-radius: 15px;\n justify-content: space-between;\n}\n\n.card-upper,\n.card-lower {\n padding-bottom: calc(var(--pad-height) + 5px);\n}\n\n.card-buttons {\n align-self: flex-end;\n display: flex;\n gap: 4px;\n}\n\n.project-desc {\n hyphens: auto;\n}\n\n.card-upper .delete {\n background-image: url(${C});\n background-color: rgba(255, 68, 68, 0.5);\n border-radius: 5px;\n}\n\n.card-upper .delete:hover {\n background-color: rgb(255, 68, 68);\n}\n\n.bool-dialog {\n padding: var(--generic-padding);\n background-color: var(--quaternary-color);\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.question {\n font-family: 'robotothin', sans-serif;\n font-weight: bold;\n}\n\n.choices {\n display: flex;\n justify-content: space-around;\n}\n\n.dialog-btn {\n padding: var(--small-padding);\n border: 1px solid black;\n border-radius: 5px;\n}\n\n.dialog-btn:hover {\n box-shadow: var(--softer-shadow);\n}\n\n.yes-btn {\n background-color: hsl(120, 100%, 50%);\n}\n\n.yes-btn:hover {\n background-color: hsl(120, 100%, 75%);\n}\n\n.no-btn {\n background-color: hsl(0, 50%, 50%);\n}\n\n.no-btn:hover {\n background-color: hsl(0, 50%, 75%);\n}\n\n.task-list {\n list-style-type: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.task-container,\n.add-task-container {\n display: flex;\n gap: 8px;\n font-family: 'robotothin', sans-serif;\n align-items: center;\n justify-content: space-between;\n}\n\n.tasks-header {\n text-align: center;\n border-bottom: 2px solid var(--main-color);\n margin-bottom: 4px;\n}\n\n.task-btn {\n --size: 20px;\n background-image: url(${b});\n height: var(--size);\n width: var(--size);\n background-size: var(--size);\n border: 0;\n background-color: transparent;\n position: relative;\n right: 4px;\n}\n\nbutton.tasks-add-task.task-btn:hover {\n box-shadow: none;\n}\n\n.tasks-add-task {\n cursor: pointer;\n}\n\n.add-task-container {\n gap: 0;\n justify-content: flex-start;\n}\n\n.priority {\n --size: 5px;\n border-radius: var(--size);\n height: var(--size);\n width: var(--size);\n}\n\n.low-priority {\n background-color: green;\n}\n\n.medium-priority {\n background-color: yellow;\n}\n\n.high-priority {\n background-color: red;\n}\n\n.due-date-task {\n font-size: 0.75rem;\n color: grey;\n}\n\n.new-task-container {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.input-container > :nth-child(2) {\n width: 50%;\n}\n\n.input-container {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: 4px;\n}\n\n.radios-container {\n display: flex;\n flex-direction: column;\n}\n\n.radio-container {\n display: flex;\n}\n\n.task-submit {\n align-self: flex-end;\n}\n\n.new-task-container .task-submit:hover {\n box-shadow: none;\n}\n\n.delete-task {\n --size: 15px;\n background-image: url(${C});\n background-size: var(--size);\n height: var(--size);\n width: var(--size);\n border: 0;\n}\n\nbutton.delete-task:hover {\n box-shadow: none;\n}\n\nfieldset {\n border: 0;\n}\n\n.notes-container {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.save-notes-btn {\n align-self: flex-end;\n}\n\nbutton.save-notes-btn:hover {\n box-shadow: none;\n}\n\n.save-notes-btn,\n.add-button,\nbutton.add-task {\n border-radius: 5px;\n align-self: flex-end;\n padding: 8px 16px;\n background-color: hsl(120, 100%, 50%);\n}\n\n\n.save-notes-btn:hover,\n.add-button:hover,\nbutton.add-task:hover {\n background-color: hsl(120, 100%, 75%);\n}\n\nfooter {\n display: flex;\n justify-content: space-around;\n padding: var(--generic-padding);\n background-image: linear-gradient(var(--secondary-color), var(--main-color));\n box-shadow: 0 -5px 10px rgba(0, 0, 0, 0.25);\n}\n\nfooter * {\n color: var(--quaternary-color);\n}\n\na:hover {\n text-decoration: none;\n}\n\n.project-started {\n display: block;\n font-family: 'robotobold', sans-serif;\n color: var(--dark-tertiary-color);\n text-align: end;\n}`,"",{version:3,sources:["webpack://./src/stylesheets/styles.css"],names:[],mappings:"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",sourcesContent:['@import url("../fonts/Roboto-Font/stylesheet.css");\n@import url("../fonts/alex-brush/stylesheet.css");\n\n:root {\n --main-color: #222831;\n --secondary-color: #393E46;\n --tertiary-color: #00ADB5;\n --dark-tertiary-color: hsl(183, 100%, 25%);\n --quaternary-color: #EEEEEE;\n --logo-color: #FFC90E; \n --pad-height: 8px;\n --pad-width: 16px;\n --pad-neg-height: calc(var(--pad-height) - (var(--pad-height) * 2));\n --pad-neg-width: calc(var(--pad-width) - (var(--pad-width) * 2));\n --mild-shadow: 5px 5px 10px rgba(0, 0, 0, 0.25);\n --generic-padding: var(--pad-height) var(--pad-width);\n --small-padding: calc(var(--pad-height) / 2) calc(var(--pad-width) / 2);\n --softer-shadow: 5px 5px 10px rgba(0, 0, 0, 0.10);\n --light-tertiary-color: hsl(183, 100%, 45%);\n}\n\nbody {\n height: 100vh;\n width: auto;\n background-color: var(--quaternary-color);\n overflow: hidden;\n margin: 0;\n padding: 0;\n display: grid;\n grid-template: max-content 1fr max-content / 1fr;\n grid-template-areas:\n "header"\n "content"\n "footer";\n}\n\n* {\n padding: 0;\n margin: 0;\n font-family: \'robotoregular\', sans-serif;\n}\n\n.web-info {\n display: flex;\n align-items: center;\n cursor: pointer;\n}\n\n.web-logo {\n height: 48px;\n width: 48px;\n position: relative;\n top: -4px;\n}\n\n.web-title {\n font-family: \'alex_brushregular\', sans-serif;\n color: var(--logo-color);\n font-size: 48px;\n}\n\nheader {\n grid-area: header;\n background-image: linear-gradient(var(--main-color), var(--secondary-color));\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: var(--pad-height) var(--pad-width);\n box-shadow: var(--mild-shadow);\n}\n\n.tabs {\n align-self: flex-end;\n position: relative;\n bottom: var(--pad-neg-height);\n display: flex;\n gap: var(--pad-width);\n}\n\n.tab {\n font-family: \'robotothin\', sans-serif;\n font-size: 24px;\n border: 0;\n background-color: transparent;\n padding-bottom: var(--pad-height);\n color: var(--quaternary-color);\n margin-bottom: 2px;\n}\n\n.tab:not(.active-tab):hover,\n.active-tab {\n color: var(--logo-color);\n border-bottom: 1px solid var(--logo-color);\n margin-bottom: 1px;\n text-shadow: var(--mild-shadow);\n} \n\n.active-tab {\n cursor: auto;\n}\n\nbutton {\n cursor: pointer;\n font-family: \'robotobold\', sans-serif;\n}\n\nbutton:not(.tab):hover {\n box-shadow: var(--mild-shadow);\n}\n\nbutton.new-project {\n border: 0;\n padding: var(--pad-height) var(--pad-width);\n border-radius: 25px;\n font-family: \'robotobold\', sans-serif;\n background-color: var(--secondary-color);\n color: var(--quaternary-color);\n}\n\nbutton.new-project:hover {\n background-color: var(--logo-color);\n text-shadow: var(--mild-shadow);\n color: var(--secondary-color);\n}\n\ndiv#content {\n grid-area: content;\n}\n\nfooter {\n grid-area: footer;\n}\n\ndialog {\n margin: auto;\n padding: var(--pad-height) var(--pad-width);\n overflow: visible;\n border: 2px solid black;\n border-radius: 5px;\n background-color: var(--quaternary-color);\n}\n\ndialog::backdrop {\n background-color: rgba(0, 0, 0, 0.10);\n}\n\nform {\n display: flex;\n flex-direction: column;\n gap: var(--pad-height);\n}\n\n.cancel-btn {\n position: absolute;\n --square-pad: 5px;\n --neg-square-pad: -8px;\n top: var(--neg-square-pad);\n right: var(--neg-square-pad);\n padding: 0 var(--square-pad);\n border-radius: 10px;\n background-color: hsl(0, 50%, 50%);\n border: 2px solid black;\n}\n\ninput,\nselect {\n font-size: 14px;\n}\n\ninput[type="text"] {\n border: 0;\n background-color: var(--quaternary-color);\n border-bottom: 1px solid black;\n}\n\ninput {\n outline: 0;\n}\n\n.group {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n}\n\nlabel,\n.form-title {\n font-family: \'robotobold\';\n}\n\nlabel {\n font-size: 18px;\n}\n\n.group > :not(label) {\n width: 50%;\n}\n\ndialog .add-button:hover,\ndialog .cancel-btn:hover {\n box-shadow: none;\n}\n\n#content {\n display: grid;\n grid-auto-rows: minmax(50px, 250px);\n grid-template-columns: repeat(auto-fill, minmax(50px, 250px));\n gap: 16px;\n padding: 16px;\n overflow: auto;\n}\n\n.project-card button {\n height: 20px;\n width: 20px;\n border: 0;\n background-size: 20px;\n background-color: transparent;\n}\n\n.card-lower button:hover {\n background-color: var(--light-tertiary-color);\n border-radius: 5px;\n overflow: visible;\n}\n\n.project-card {\n border-radius: 15px;\n background-color: var(--tertiary-color);\n color: var(--quaternary-color);\n box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.15);\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n.project-card:hover {\n box-shadow: var(--mild-shadow);\n}\n\n.view {\n background-image: url("../images/view-project.png");\n}\n\n.project-add-task {\n background-image: url("../images/add.png");\n}\n\n.project-notes {\n background-image: url("../images/notes.png");\n}\n\n.card-upper {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--pad-height);\n background-color: var(--secondary-color);\n border-radius: 15px;\n}\n\n.card-upper:hover,\n.card-lower:hover {\n padding-bottom: var(--pad-height);\n}\n\n.card-upper:hover {\n border-bottom: 5px solid var(--main-color);\n}\n\n.card-lower:hover {\n border-bottom: 5px solid var(--dark-tertiary-color);\n}\n\n.card-lower {\n display: flex;\n flex-direction: column;\n padding: var(--pad-height);\n flex-grow: 1;\n gap: 18px;\n border-radius: 15px;\n justify-content: space-between;\n}\n\n.card-upper,\n.card-lower {\n padding-bottom: calc(var(--pad-height) + 5px);\n}\n\n.card-buttons {\n align-self: flex-end;\n display: flex;\n gap: 4px;\n}\n\n.project-desc {\n hyphens: auto;\n}\n\n.card-upper .delete {\n background-image: url("../images/delete.png");\n background-color: rgba(255, 68, 68, 0.5);\n border-radius: 5px;\n}\n\n.card-upper .delete:hover {\n background-color: rgb(255, 68, 68);\n}\n\n.bool-dialog {\n padding: var(--generic-padding);\n background-color: var(--quaternary-color);\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.question {\n font-family: \'robotothin\', sans-serif;\n font-weight: bold;\n}\n\n.choices {\n display: flex;\n justify-content: space-around;\n}\n\n.dialog-btn {\n padding: var(--small-padding);\n border: 1px solid black;\n border-radius: 5px;\n}\n\n.dialog-btn:hover {\n box-shadow: var(--softer-shadow);\n}\n\n.yes-btn {\n background-color: hsl(120, 100%, 50%);\n}\n\n.yes-btn:hover {\n background-color: hsl(120, 100%, 75%);\n}\n\n.no-btn {\n background-color: hsl(0, 50%, 50%);\n}\n\n.no-btn:hover {\n background-color: hsl(0, 50%, 75%);\n}\n\n.task-list {\n list-style-type: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.task-container,\n.add-task-container {\n display: flex;\n gap: 8px;\n font-family: \'robotothin\', sans-serif;\n align-items: center;\n justify-content: space-between;\n}\n\n.tasks-header {\n text-align: center;\n border-bottom: 2px solid var(--main-color);\n margin-bottom: 4px;\n}\n\n.task-btn {\n --size: 20px;\n background-image: url("../images/add.png");\n height: var(--size);\n width: var(--size);\n background-size: var(--size);\n border: 0;\n background-color: transparent;\n position: relative;\n right: 4px;\n}\n\nbutton.tasks-add-task.task-btn:hover {\n box-shadow: none;\n}\n\n.tasks-add-task {\n cursor: pointer;\n}\n\n.add-task-container {\n gap: 0;\n justify-content: flex-start;\n}\n\n.priority {\n --size: 5px;\n border-radius: var(--size);\n height: var(--size);\n width: var(--size);\n}\n\n.low-priority {\n background-color: green;\n}\n\n.medium-priority {\n background-color: yellow;\n}\n\n.high-priority {\n background-color: red;\n}\n\n.due-date-task {\n font-size: 0.75rem;\n color: grey;\n}\n\n.new-task-container {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.input-container > :nth-child(2) {\n width: 50%;\n}\n\n.input-container {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: 4px;\n}\n\n.radios-container {\n display: flex;\n flex-direction: column;\n}\n\n.radio-container {\n display: flex;\n}\n\n.task-submit {\n align-self: flex-end;\n}\n\n.new-task-container .task-submit:hover {\n box-shadow: none;\n}\n\n.delete-task {\n --size: 15px;\n background-image: url("../images/delete.png");\n background-size: var(--size);\n height: var(--size);\n width: var(--size);\n border: 0;\n}\n\nbutton.delete-task:hover {\n box-shadow: none;\n}\n\nfieldset {\n border: 0;\n}\n\n.notes-container {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.save-notes-btn {\n align-self: flex-end;\n}\n\nbutton.save-notes-btn:hover {\n box-shadow: none;\n}\n\n.save-notes-btn,\n.add-button,\nbutton.add-task {\n border-radius: 5px;\n align-self: flex-end;\n padding: 8px 16px;\n background-color: hsl(120, 100%, 50%);\n}\n\n\n.save-notes-btn:hover,\n.add-button:hover,\nbutton.add-task:hover {\n background-color: hsl(120, 100%, 75%);\n}\n\nfooter {\n display: flex;\n justify-content: space-around;\n padding: var(--generic-padding);\n background-image: linear-gradient(var(--secondary-color), var(--main-color));\n box-shadow: 0 -5px 10px rgba(0, 0, 0, 0.25);\n}\n\nfooter * {\n color: var(--quaternary-color);\n}\n\na:hover {\n text-decoration: none;\n}\n\n.project-started {\n display: block;\n font-family: \'robotobold\', sans-serif;\n color: var(--dark-tertiary-color);\n text-align: end;\n}'],sourceRoot:""}]);const w=h},314:n=>{n.exports=function(n){var t=[];return t.toString=function(){return this.map((function(t){var e="",o=void 0!==t[5];return t[4]&&(e+="@supports (".concat(t[4],") {")),t[2]&&(e+="@media ".concat(t[2]," {")),o&&(e+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),e+=n(t),o&&(e+="}"),t[2]&&(e+="}"),t[4]&&(e+="}"),e})).join("")},t.i=function(n,e,o,r,a){"string"==typeof n&&(n=[[null,n,void 0]]);var i={};if(o)for(var s=0;s0?" ".concat(A[5]):""," {").concat(A[1],"}")),A[5]=a),e&&(A[2]?(A[1]="@media ".concat(A[2]," {").concat(A[1],"}"),A[2]=e):A[2]=e),r&&(A[4]?(A[1]="@supports (".concat(A[4],") {").concat(A[1],"}"),A[4]=r):A[4]="".concat(r)),t.push(A))}},t}},417:n=>{n.exports=function(n,t){return t||(t={}),n?(n=String(n.__esModule?n.default:n),/^['"].*['"]$/.test(n)&&(n=n.slice(1,-1)),t.hash&&(n+=t.hash),/["'() \t\n]|(%20)/.test(n)||t.needQuotes?'"'.concat(n.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):n):n}},354:n=>{n.exports=function(n){var t=n[1],e=n[3];if(!e)return t;if("function"==typeof btoa){var o=btoa(unescape(encodeURIComponent(JSON.stringify(e)))),r="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(o),a="/*# ".concat(r," */");return[t].concat([a]).join("\n")}return[t].join("\n")}},72:n=>{var t=[];function e(n){for(var e=-1,o=0;o{var t={};n.exports=function(n,e){var o=function(n){if(void 0===t[n]){var e=document.querySelector(n);if(window.HTMLIFrameElement&&e instanceof window.HTMLIFrameElement)try{e=e.contentDocument.head}catch(n){e=null}t[n]=e}return t[n]}(n);if(!o)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");o.appendChild(e)}},540:n=>{n.exports=function(n){var t=document.createElement("style");return n.setAttributes(t,n.attributes),n.insert(t,n.options),t}},56:(n,t,e)=>{n.exports=function(n){var t=e.nc;t&&n.setAttribute("nonce",t)}},825:n=>{n.exports=function(n){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var t=n.insertStyleElement(n);return{update:function(e){!function(n,t,e){var o="";e.supports&&(o+="@supports (".concat(e.supports,") {")),e.media&&(o+="@media ".concat(e.media," {"));var r=void 0!==e.layer;r&&(o+="@layer".concat(e.layer.length>0?" ".concat(e.layer):""," {")),o+=e.css,r&&(o+="}"),e.media&&(o+="}"),e.supports&&(o+="}");var a=e.sourceMap;a&&"undefined"!=typeof btoa&&(o+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a))))," */")),t.styleTagTransform(o,n,t.options)}(t,n,e)},remove:function(){!function(n){if(null===n.parentNode)return!1;n.parentNode.removeChild(n)}(t)}}}},113:n=>{n.exports=function(n,t){if(t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}},904:(n,t,e)=>{n.exports=e.p+"3b9bbab1293fc714468b.woff"},546:(n,t,e)=>{n.exports=e.p+"f9b3f8a8674499775322.woff2"},730:(n,t,e)=>{n.exports=e.p+"47fb9dd31cf3111e78b5.woff"},636:(n,t,e)=>{n.exports=e.p+"60cf2bdb54c95f0a16bf.woff2"},699:(n,t,e)=>{n.exports=e.p+"61a31a6d35b431a3ba1c.woff"},795:(n,t,e)=>{n.exports=e.p+"3466b273d2b3aafe4f24.woff2"},906:(n,t,e)=>{n.exports=e.p+"725047ac22c4f8ae63b4.woff"},644:(n,t,e)=>{n.exports=e.p+"27117b52a620daa982aa.woff2"},350:(n,t,e)=>{n.exports=e.p+"b5aa5aac63d382c06ecc.woff"},184:(n,t,e)=>{n.exports=e.p+"6d4e58af2d877d6342f2.woff2"},321:(n,t,e)=>{n.exports=e.p+"1235f8e6b3496ee92ee7.png"},819:(n,t,e)=>{n.exports=e.p+"a21ec1fcd657814cc3ea.png"},859:(n,t,e)=>{n.exports=e.p+"b36267a7caa11e3ac78a.png"},661:(n,t,e)=>{n.exports=e.p+"db6ef2223f06bee7c6c2.png"}},t={};function e(o){var r=t[o];if(void 0!==r)return r.exports;var a=t[o]={id:o,exports:{}};return n[o](a,a.exports,e),a.exports}e.m=n,e.n=n=>{var t=n&&n.__esModule?()=>n.default:()=>n;return e.d(t,{a:t}),t},e.d=(n,t)=>{for(var o in t)e.o(t,o)&&!e.o(n,o)&&Object.defineProperty(n,o,{enumerable:!0,get:t[o]})},e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),e.o=(n,t)=>Object.prototype.hasOwnProperty.call(n,t),(()=>{var n;e.g.importScripts&&(n=e.g.location+"");var t=e.g.document;if(!n&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(n=t.currentScript.src),!n)){var o=t.getElementsByTagName("script");if(o.length)for(var r=o.length-1;r>-1&&(!n||!/^http(s?):/.test(n));)n=o[r--].src}if(!n)throw new Error("Automatic publicPath is not supported in this browser");n=n.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),e.p=n})(),e.b=document.baseURI||self.location.href,e.nc=void 0;var o=e(72),r=e.n(o),a=e(825),i=e.n(a),s=e(659),c=e.n(s),d=e(56),A=e.n(d),l=e(540),u=e.n(l),f=e(113),p=e.n(f),h=e(243),g={};g.styleTagTransform=p(),g.setAttributes=A(),g.insert=c().bind(null,"head"),g.domAPI=i(),g.insertStyleElement=u(),r()(h.A,g),h.A&&h.A.locals&&h.A.locals;class b{constructor(n){this.query=n}get=()=>document.querySelector(this.query);getAll=()=>Array.from(document.querySelectorAll(this.query))}const m=function(n,t,e){const o=document.createElement(`${e}`);return o.textContent=t,o.className=n,o},C=function(n){const t=document.createElement("div");return t.className=n,t},w=function(n,t){const e=document.createElement("button");return e.textContent=t,e.className=n,e},y=function(n,...t){t.forEach((t=>{n.appendChild(t)}))},B=function(n,...t){t.forEach((t=>{t.addEventListener("click",n)}))},v=new b(".tab").getAll,I=new b("header").get,x=new b("#content").get,k=new b("dialog").getAll,E=()=>{const n=k();return n[n.length-1]},D=()=>{E().showModal()},j=()=>{k().forEach((n=>{n.close(),n.remove()}))},q=()=>{const n=E();n.close(),n.remove()},S=function(n,t,e){const o=document.createElement("form");return o.setAttribute("class",`${n}`),o.setAttribute("id",`${t}`),o},M=function(n,t,e){const o=document.createElement("label");return o.setAttribute("class",`${e}`),o.textContent=n,o.setAttribute("for",`${t}`),o},T=function(n,t,e){const o=document.createElement("input");return o.setAttribute("type",`${n}`),o.setAttribute("id",`${t}`),o.setAttribute("class",`${e}`),o},z=function(n,t){const e=w(t,n);return e.setAttribute("type","submit"),e},N=new b("#dialogs").get,P=function(n,t,e,o,r){const a=T(e,o,r);return a.setAttribute("name",n),a.setAttribute("value",t),a},W=function(n){const t=document.createElement("fieldset");return t.className=n,t},Y=(new b("footer").get,function(n,...t){t.forEach((t=>{t.addEventListener("submit",(n=>{n.preventDefault()})),t.addEventListener("submit",n)}))}),$={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}};function F(n){return(t={})=>{const e=t.width?String(t.width):n.defaultWidth;return n.formats[e]||n.formats[n.defaultWidth]}}const L={date:F({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:F({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:F({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},O={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"};function U(n){return(t,e)=>{let o;if("formatting"===(e?.context?String(e.context):"standalone")&&n.formattingValues){const t=n.defaultFormattingWidth||n.defaultWidth,r=e?.width?String(e.width):t;o=n.formattingValues[r]||n.formattingValues[t]}else{const t=n.defaultWidth,r=e?.width?String(e.width):n.defaultWidth;o=n.values[r]||n.values[t]}return o[n.argumentCallback?n.argumentCallback(t):t]}}const Q={ordinalNumber:(n,t)=>{const e=Number(n),o=e%100;if(o>20||o<10)switch(o%10){case 1:return e+"st";case 2:return e+"nd";case 3:return e+"rd"}return e+"th"},era:U({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:U({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:n=>n-1}),month:U({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:U({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:U({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaultFormattingWidth:"wide"})};function H(n){return(t,e={})=>{const o=e.width,r=o&&n.matchPatterns[o]||n.matchPatterns[n.defaultMatchWidth],a=t.match(r);if(!a)return null;const i=a[0],s=o&&n.parsePatterns[o]||n.parsePatterns[n.defaultParseWidth],c=Array.isArray(s)?function(n){for(let t=0;tparseInt(n,10)},(n,t={})=>{const e=n.match(G.matchPattern);if(!e)return null;const o=e[0],r=n.match(G.parsePattern);if(!r)return null;let a=G.valueCallback?G.valueCallback(r[0]):r[0];return a=t.valueCallback?t.valueCallback(a):a,{value:a,rest:n.slice(o.length)}}),era:H({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:H({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:n=>n+1}),month:H({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:H({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:H({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})};var G;const X={code:"en-US",formatDistance:(n,t,e)=>{let o;const r=$[n];return o="string"==typeof r?r:1===t?r.one:r.other.replace("{{count}}",t.toString()),e?.addSuffix?e.comparison&&e.comparison>0?"in "+o:o+" ago":o},formatLong:L,formatRelative:(n,t,e,o)=>O[n],localize:Q,match:R,options:{weekStartsOn:0,firstWeekContainsDate:1}};let J={};function Z(){return J}Math.pow(10,8);const V=6048e5,_=864e5;function K(n){const t=Object.prototype.toString.call(n);return n instanceof Date||"object"==typeof n&&"[object Date]"===t?new n.constructor(+n):"number"==typeof n||"[object Number]"===t||"string"==typeof n||"[object String]"===t?new Date(n):new Date(NaN)}function nn(n){const t=K(n);return t.setHours(0,0,0,0),t}function tn(n){const t=K(n),e=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return e.setUTCFullYear(t.getFullYear()),+n-+e}function en(n,t){return n instanceof Date?new n.constructor(t):new Date(t)}function on(n){const t=K(n);return function(n,t){const e=nn(n),o=nn(t),r=+e-tn(e),a=+o-tn(o);return Math.round((r-a)/_)}(t,function(n){const t=K(n),e=en(n,0);return e.setFullYear(t.getFullYear(),0,1),e.setHours(0,0,0,0),e}(t))+1}function rn(n,t){const e=Z(),o=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??e.weekStartsOn??e.locale?.options?.weekStartsOn??0,r=K(n),a=r.getDay(),i=(a=r.getTime()?e+1:t.getTime()>=i.getTime()?e:e-1}function cn(n){const t=K(n),e=+an(t)-+function(n){const t=sn(n),e=en(n,0);return e.setFullYear(t,0,4),e.setHours(0,0,0,0),an(e)}(t);return Math.round(e/V)+1}function dn(n,t){const e=K(n),o=e.getFullYear(),r=Z(),a=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,i=en(n,0);i.setFullYear(o+1,0,a),i.setHours(0,0,0,0);const s=rn(i,t),c=en(n,0);c.setFullYear(o,0,a),c.setHours(0,0,0,0);const d=rn(c,t);return e.getTime()>=s.getTime()?o+1:e.getTime()>=d.getTime()?o:o-1}function An(n,t){const e=K(n),o=+rn(e,t)-+function(n,t){const e=Z(),o=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??e.firstWeekContainsDate??e.locale?.options?.firstWeekContainsDate??1,r=dn(n,t),a=en(n,0);return a.setFullYear(r,0,o),a.setHours(0,0,0,0),rn(a,t)}(e,t);return Math.round(o/V)+1}function ln(n,t){return(n<0?"-":"")+Math.abs(n).toString().padStart(t,"0")}const un={y(n,t){const e=n.getFullYear(),o=e>0?e:1-e;return ln("yy"===t?o%100:o,t.length)},M(n,t){const e=n.getMonth();return"M"===t?String(e+1):ln(e+1,2)},d:(n,t)=>ln(n.getDate(),t.length),a(n,t){const e=n.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return e.toUpperCase();case"aaa":return e;case"aaaaa":return e[0];default:return"am"===e?"a.m.":"p.m."}},h:(n,t)=>ln(n.getHours()%12||12,t.length),H:(n,t)=>ln(n.getHours(),t.length),m:(n,t)=>ln(n.getMinutes(),t.length),s:(n,t)=>ln(n.getSeconds(),t.length),S(n,t){const e=t.length,o=n.getMilliseconds();return ln(Math.trunc(o*Math.pow(10,e-3)),t.length)}},fn={G:function(n,t,e){const o=n.getFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return e.era(o,{width:"abbreviated"});case"GGGGG":return e.era(o,{width:"narrow"});default:return e.era(o,{width:"wide"})}},y:function(n,t,e){if("yo"===t){const t=n.getFullYear(),o=t>0?t:1-t;return e.ordinalNumber(o,{unit:"year"})}return un.y(n,t)},Y:function(n,t,e,o){const r=dn(n,o),a=r>0?r:1-r;return"YY"===t?ln(a%100,2):"Yo"===t?e.ordinalNumber(a,{unit:"year"}):ln(a,t.length)},R:function(n,t){return ln(sn(n),t.length)},u:function(n,t){return ln(n.getFullYear(),t.length)},Q:function(n,t,e){const o=Math.ceil((n.getMonth()+1)/3);switch(t){case"Q":return String(o);case"QQ":return ln(o,2);case"Qo":return e.ordinalNumber(o,{unit:"quarter"});case"QQQ":return e.quarter(o,{width:"abbreviated",context:"formatting"});case"QQQQQ":return e.quarter(o,{width:"narrow",context:"formatting"});default:return e.quarter(o,{width:"wide",context:"formatting"})}},q:function(n,t,e){const o=Math.ceil((n.getMonth()+1)/3);switch(t){case"q":return String(o);case"qq":return ln(o,2);case"qo":return e.ordinalNumber(o,{unit:"quarter"});case"qqq":return e.quarter(o,{width:"abbreviated",context:"standalone"});case"qqqqq":return e.quarter(o,{width:"narrow",context:"standalone"});default:return e.quarter(o,{width:"wide",context:"standalone"})}},M:function(n,t,e){const o=n.getMonth();switch(t){case"M":case"MM":return un.M(n,t);case"Mo":return e.ordinalNumber(o+1,{unit:"month"});case"MMM":return e.month(o,{width:"abbreviated",context:"formatting"});case"MMMMM":return e.month(o,{width:"narrow",context:"formatting"});default:return e.month(o,{width:"wide",context:"formatting"})}},L:function(n,t,e){const o=n.getMonth();switch(t){case"L":return String(o+1);case"LL":return ln(o+1,2);case"Lo":return e.ordinalNumber(o+1,{unit:"month"});case"LLL":return e.month(o,{width:"abbreviated",context:"standalone"});case"LLLLL":return e.month(o,{width:"narrow",context:"standalone"});default:return e.month(o,{width:"wide",context:"standalone"})}},w:function(n,t,e,o){const r=An(n,o);return"wo"===t?e.ordinalNumber(r,{unit:"week"}):ln(r,t.length)},I:function(n,t,e){const o=cn(n);return"Io"===t?e.ordinalNumber(o,{unit:"week"}):ln(o,t.length)},d:function(n,t,e){return"do"===t?e.ordinalNumber(n.getDate(),{unit:"date"}):un.d(n,t)},D:function(n,t,e){const o=on(n);return"Do"===t?e.ordinalNumber(o,{unit:"dayOfYear"}):ln(o,t.length)},E:function(n,t,e){const o=n.getDay();switch(t){case"E":case"EE":case"EEE":return e.day(o,{width:"abbreviated",context:"formatting"});case"EEEEE":return e.day(o,{width:"narrow",context:"formatting"});case"EEEEEE":return e.day(o,{width:"short",context:"formatting"});default:return e.day(o,{width:"wide",context:"formatting"})}},e:function(n,t,e,o){const r=n.getDay(),a=(r-o.weekStartsOn+8)%7||7;switch(t){case"e":return String(a);case"ee":return ln(a,2);case"eo":return e.ordinalNumber(a,{unit:"day"});case"eee":return e.day(r,{width:"abbreviated",context:"formatting"});case"eeeee":return e.day(r,{width:"narrow",context:"formatting"});case"eeeeee":return e.day(r,{width:"short",context:"formatting"});default:return e.day(r,{width:"wide",context:"formatting"})}},c:function(n,t,e,o){const r=n.getDay(),a=(r-o.weekStartsOn+8)%7||7;switch(t){case"c":return String(a);case"cc":return ln(a,t.length);case"co":return e.ordinalNumber(a,{unit:"day"});case"ccc":return e.day(r,{width:"abbreviated",context:"standalone"});case"ccccc":return e.day(r,{width:"narrow",context:"standalone"});case"cccccc":return e.day(r,{width:"short",context:"standalone"});default:return e.day(r,{width:"wide",context:"standalone"})}},i:function(n,t,e){const o=n.getDay(),r=0===o?7:o;switch(t){case"i":return String(r);case"ii":return ln(r,t.length);case"io":return e.ordinalNumber(r,{unit:"day"});case"iii":return e.day(o,{width:"abbreviated",context:"formatting"});case"iiiii":return e.day(o,{width:"narrow",context:"formatting"});case"iiiiii":return e.day(o,{width:"short",context:"formatting"});default:return e.day(o,{width:"wide",context:"formatting"})}},a:function(n,t,e){const o=n.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return e.dayPeriod(o,{width:"abbreviated",context:"formatting"});case"aaa":return e.dayPeriod(o,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return e.dayPeriod(o,{width:"narrow",context:"formatting"});default:return e.dayPeriod(o,{width:"wide",context:"formatting"})}},b:function(n,t,e){const o=n.getHours();let r;switch(r=12===o?"noon":0===o?"midnight":o/12>=1?"pm":"am",t){case"b":case"bb":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"bbb":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return e.dayPeriod(r,{width:"narrow",context:"formatting"});default:return e.dayPeriod(r,{width:"wide",context:"formatting"})}},B:function(n,t,e){const o=n.getHours();let r;switch(r=o>=17?"evening":o>=12?"afternoon":o>=4?"morning":"night",t){case"B":case"BB":case"BBB":return e.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"BBBBB":return e.dayPeriod(r,{width:"narrow",context:"formatting"});default:return e.dayPeriod(r,{width:"wide",context:"formatting"})}},h:function(n,t,e){if("ho"===t){let t=n.getHours()%12;return 0===t&&(t=12),e.ordinalNumber(t,{unit:"hour"})}return un.h(n,t)},H:function(n,t,e){return"Ho"===t?e.ordinalNumber(n.getHours(),{unit:"hour"}):un.H(n,t)},K:function(n,t,e){const o=n.getHours()%12;return"Ko"===t?e.ordinalNumber(o,{unit:"hour"}):ln(o,t.length)},k:function(n,t,e){let o=n.getHours();return 0===o&&(o=24),"ko"===t?e.ordinalNumber(o,{unit:"hour"}):ln(o,t.length)},m:function(n,t,e){return"mo"===t?e.ordinalNumber(n.getMinutes(),{unit:"minute"}):un.m(n,t)},s:function(n,t,e){return"so"===t?e.ordinalNumber(n.getSeconds(),{unit:"second"}):un.s(n,t)},S:function(n,t){return un.S(n,t)},X:function(n,t,e){const o=n.getTimezoneOffset();if(0===o)return"Z";switch(t){case"X":return hn(o);case"XXXX":case"XX":return gn(o);default:return gn(o,":")}},x:function(n,t,e){const o=n.getTimezoneOffset();switch(t){case"x":return hn(o);case"xxxx":case"xx":return gn(o);default:return gn(o,":")}},O:function(n,t,e){const o=n.getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+pn(o,":");default:return"GMT"+gn(o,":")}},z:function(n,t,e){const o=n.getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+pn(o,":");default:return"GMT"+gn(o,":")}},t:function(n,t,e){return ln(Math.trunc(n.getTime()/1e3),t.length)},T:function(n,t,e){return ln(n.getTime(),t.length)}};function pn(n,t=""){const e=n>0?"-":"+",o=Math.abs(n),r=Math.trunc(o/60),a=o%60;return 0===a?e+String(r):e+String(r)+t+ln(a,2)}function hn(n,t){return n%60==0?(n>0?"-":"+")+ln(Math.abs(n)/60,2):gn(n,t)}function gn(n,t=""){const e=n>0?"-":"+",o=Math.abs(n);return e+ln(Math.trunc(o/60),2)+t+ln(o%60,2)}const bn=(n,t)=>{switch(n){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});default:return t.date({width:"full"})}},mn=(n,t)=>{switch(n){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});default:return t.time({width:"full"})}},Cn={p:mn,P:(n,t)=>{const e=n.match(/(P+)(p+)?/)||[],o=e[1],r=e[2];if(!r)return bn(n,t);let a;switch(o){case"P":a=t.dateTime({width:"short"});break;case"PP":a=t.dateTime({width:"medium"});break;case"PPP":a=t.dateTime({width:"long"});break;default:a=t.dateTime({width:"full"})}return a.replace("{{date}}",bn(o,t)).replace("{{time}}",mn(r,t))}},wn=/^D+$/,yn=/^Y+$/,Bn=["D","DD","YY","YYYY"];function vn(n){if(!(t=n,t instanceof Date||"object"==typeof t&&"[object Date]"===Object.prototype.toString.call(t)||"number"==typeof n))return!1;var t;const e=K(n);return!isNaN(Number(e))}const In=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,xn=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,kn=/^'([^]*?)'?$/,En=/''/g,Dn=/[a-zA-Z]/;function jn(n,t,e){const o=Z(),r=e?.locale??o.locale??X,a=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??o.firstWeekContainsDate??o.locale?.options?.firstWeekContainsDate??1,i=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??o.weekStartsOn??o.locale?.options?.weekStartsOn??0,s=K(n);if(!vn(s))throw new RangeError("Invalid time value");let c=t.match(xn).map((n=>{const t=n[0];return"p"===t||"P"===t?(0,Cn[t])(n,r.formatLong):n})).join("").match(In).map((n=>{if("''"===n)return{isToken:!1,value:"'"};const t=n[0];if("'"===t)return{isToken:!1,value:qn(n)};if(fn[t])return{isToken:!0,value:n};if(t.match(Dn))throw new RangeError("Format string contains an unescaped latin alphabet character `"+t+"`");return{isToken:!1,value:n}}));r.localize.preprocessor&&(c=r.localize.preprocessor(s,c));const d={firstWeekContainsDate:a,weekStartsOn:i,locale:r};return c.map((o=>{if(!o.isToken)return o.value;const a=o.value;return(!e?.useAdditionalWeekYearTokens&&function(n){return yn.test(n)}(a)||!e?.useAdditionalDayOfYearTokens&&function(n){return wn.test(n)}(a))&&function(n,t,e){const o=function(n,t,e){const o="Y"===n[0]?"years":"days of the month";return`Use \`${n.toLowerCase()}\` instead of \`${n}\` (in \`${t}\`) for formatting ${o} to the input \`${e}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}(n,t,e);if(console.warn(o),Bn.includes(n))throw new RangeError(o)}(a,t,String(n)),(0,fn[a[0]])(s,a,r.localize,d)})).join("")}function qn(n){const t=n.match(kn);return t?t[1].replace(En,"'"):n}const Sn=function(n){return jn(n,"MM/dd/yyyy HH:mm:ss")},Mn=function(n){return Tn(n).value},Tn=function(n){return new b(n.toString()).get()},zn=function(){const n=()=>Mn("#title-input"),t=()=>Mn("#desc-input"),e=()=>Sn(Mn("#due-date-input")),o=function(){return{title:n(),description:t(),dueDate:e()}};return{getTitle:n,getDesc:t,getDueDate:e,extractValues:o,extractAllValues:function(){let n=o();return n.tasks=[],n.notes="",n.started=Sn(new Date),n}}}(),Nn=function(n){return Mn(`${n} input[type="radio"]:checked`)},Pn=()=>({task:Mn("#task-name"),dueDate:Sn(Mn("#due-date-task")),priority:Nn("#task-priority-list"),finished:JSON.parse(Nn("#task-finished-state"))});function Wn(n,t){const e=K(n);return isNaN(t)?en(n,NaN):t?(e.setDate(e.getDate()+t),e):e}function Yn(n,t){const e=K(n);if(isNaN(t))return en(n,NaN);if(!t)return e;const o=e.getDate(),r=en(n,e.getTime());return r.setMonth(e.getMonth()+t+1,0),o>=r.getDate()?r:(e.setFullYear(r.getFullYear(),r.getMonth(),o),e)}function $n(){const n=Sn(new Date),t=Sn(function(n,t){const{years:e=0,months:o=0,weeks:r=0,days:a=0,hours:i=0,minutes:s=0,seconds:c=0}=t,d=K(n),A=o||e?Yn(d,o+12*e):d,l=1e3*(c+60*(s+60*i));return en(n,(a||r?Wn(A,a+7*r):A).getTime()+l)}(n,{days:1}));return[{title:"To-Do List",description:"Make a to-do list app",tasks:[{task:"Setup webpack",dueDate:t,priority:"high",finished:!0},{task:"Finish Project",dueDate:t,priority:"high",finished:!0},{task:"Submit Project",dueDate:t,priority:"high",finished:!0}],dueDate:t,notes:'This is a project for "The Odin Project"s online curriculum.',started:n}]}function Fn(n,t){const{years:e=0,months:o=0,weeks:r=0,days:a=0,hours:i=0,minutes:s=0,seconds:c=0}=t,d=1e3*(c+60*(s+60*i));return en(n,function(n,t){return Wn(n,-t)}(function(n,t){return Yn(n,-t)}(n,o+12*e),a+7*r).getTime()-d)}const Ln=n=>w("tab",`${n}`),On=function(n){v().forEach((t=>{t.id===n?t.className="tab active-tab":t.className="tab"}))},Un=x(),Qn=function(){const n=tt();On("today-tab"),Jn(n)},Hn=function(){Jn(et())},Rn=function(){Jn(ot())},Gn=function(){Jn(rt())},Xn=function(){Jn(Zn())},Jn=function(n){x().innerHTML="",n.forEach((n=>{y(Un,function(n){const t=at(n.title),e=C("project-card"),o=C("card-upper"),r=m("project-title",n.title,"h3"),a=w(`delete delete-project-${t}`,"");B((()=>At(`Are you sure you want to delete the "${n.title}" project?`,(()=>{it(document.querySelector(`.delete-project-${t}`))}))),a),y(o,r,a);const i=C("card-lower"),s=m("project-desc",n.description,"p"),c=m("project-started",` -${jn(n.started,"MM/dd/yyyy")}`,"span");y(s,c);const d=C("card-buttons"),A=w("view view-project","");B((()=>ft(n.title)),A);const l=w("project-add-task","");B((()=>At("Do you want to add a task for this project?",(()=>{ft(n.title),gt()}))),l);const u=w("project-notes","");return B((()=>Bt(n.title)),u),y(d,u,l,A),y(i,s,d),y(e,o,i),e}(n))}))},Zn=function(){return JSON.parse(localStorage.getItem("projects"))},Vn=function(n){localStorage.setItem("projects",JSON.stringify(n))},_n=function(n){n.preventDefault();const t=zn.extractAllValues();if(!Kn(t.title)){const n=Zn();n.push(t),Vn(n),Qn(),j()}},Kn=function(n){const t=Zn();let e=!1;return t.map((t=>{t.title===n&&(e=!0)})),e},nt=function(n,t,e){return Date.parse(e)>=Date.parse(t)&&Date.parse(e)<=Date.parse(n)},tt=function(){const n=Zn(),t=new Date;return n.filter((n=>nt(t,Fn(t,{days:1}),n.started)))},et=function(){const n=Zn(),t=new Date;return n.filter((n=>nt(t,Fn(t,{weeks:1}),n.started)))},ot=function(){const n=Zn(),t=new Date;return n.filter((n=>nt(t,Fn(t,{months:1}),n.started)))},rt=function(){const n=Zn(),t=new Date;return n.filter((n=>nt(t,Fn(t,{years:1}),n.started)))},at=function(n){const t=Zn();let e=null;return t.forEach(((t,o)=>{t.title===n&&(e=o)})),e},it=function(n){const t=Array.from(n.parentNode.getElementsByClassName("project-title"))[0].textContent;console.log(n.parentNode),Kn(t)&&(function(n){const t=Zn();t.splice(n,1),Vn(t)}(at(t)),Qn())},st=function(n,t){let e;return Zn()[at(t)].tasks.map(((t,o)=>{t.task===n&&(e=o)})),e},ct=N(),dt=function(n,t){const e=function(n,t){const e=document.createElement("dialog");return e.className=n,e.id=t,e}(n,t),o=w("cancel-btn","X");return B(j,o),y(e,o),e},At=function(n,t){const e=dt("bool-dialog"),o=m("question",`${n}`,"p"),r=C("choices"),a=w("dialog-btn yes-btn","Yes"),i=w("dialog-btn no-btn","No");B(q,a,i),B(t,a),y(r,a,i),y(e,o,r),y(ct,e),D()},lt=function(){const n=ut();y(ct,n),D()},ut=function(){const n=dt("add-new","add-project"),t=S("add-form","new-project"),e=m("form-title","Add New Project","h2"),o=C("group title-group"),r=M("Title:","title-input","project-label"),a=function(){const n=T("text","title-input","project-input required");return n.setAttribute("required",""),n}();y(o,r,a);const i=C("group desc-group"),s=M("Description:","desc-input","project-label"),c=T("text","desc-input","project-input");pt(c),y(i,s,c);const d=C("group due-date-group"),A=M("Due Date:","due-date-input","project-label"),l=T("datetime-local","due-date-input","project-input");pt(l),y(d,A,l);const u=z("Add","add-button project-submit");return Y(_n,t),y(t,e,o,i,d,u),y(n,t),n},ft=function(n){const t=ht(at(n));y(ct,t),D()},pt=function(...n){n.map((n=>{n.setAttribute("required","")}))},ht=function(n){const t=Zn()[n],e=dt("tasks-dialog",`tasks-${n}`),o=C("tasks-container"),r=m("tasks-header",`${t.title}`,"h3"),a=function(){const n=document.createElement("ul");return n.className="task-list",n}();t.tasks.map(((n,e)=>{const o=n.task,r=C("task-container"),i=T("checkbox",`check-${s=o,s.replace(/\s+/g,"-").toLowerCase()}`,"task-checkbox");var s;i.checked=n.finished,B((()=>{!function(n,t,e){const o=Zn();o[at(e)].tasks[st(t,e)].finished=n.checked,Vn(o)}(Array.from(document.querySelectorAll(".task-checkbox")[e]),o,t.title)}),i);const c=function(n,t){const e=document.createElement("li");return e.className="task",e.textContent=t,e}(0,o),d=C(`priority ${n.priority}-priority`),A=m("due-date-task",jn(n.dueDate,"yyyy/MM/dd"),"p"),l=w("delete-task","");B((()=>function(n,t){At("Are you sure you want to delete this task?",(()=>function(n,t){const e=Zn();e[at(t)].tasks.splice(st(n,t),1),Vn(e),yt(t)}(n,t)))}(n.task,t.title)),l),y(r,i,c,d,A,l),y(a,r)}));const i=C("add-task-container"),s=w("tasks-add-task task-btn",""),c=m("tasks-add-task task-text","Add new task...");return B(gt,s,c),y(i,s,c),y(a,i),y(o,r,a),y(e,o),e},gt=function(){const n=wt();y(ct,n),D()},bt=function(n,[...t],[...e]){const o=C(n.toString()),r=M(t[0],t[1],t[2]),a=T(e[0],e[1],e[2]);return pt(a),y(o,r,a),o},mt=function(n,t,e,o){const r=C("radio-container"),a=P(t,n,"radio",e,"dialog-radio"),i=M(o,e,"dialog-label");return y(r,a,i),r},Ct=function(n,t,e,o){const r=C("radio-container"),a=P(t,n,"radio",e,"dialog-radio"),i=M(o,e,"dialog-label");return pt(a),y(r,a,i),r},wt=function(){const n=dt("new-task-dialog","new-task-dialog"),t=C("new-task-container"),e=m("dialog-title","Add New Task","h3"),o=S("new-task-form","new-task-form"),r=bt("input-container",["Task:","task-name","dialog-label"],["text","task-name","add-task task-name"]),a=bt("input-container",["Due Date:","due-date-task","dialog-label"],["date","due-date-task","add-task task-due-date"]),i=C("input-container"),s=M("Priority:","task-priority-list","dialog-label"),c=W("radios-container");c.setAttribute("id","task-priority-list");const d=Ct("low","task-priority","","Low"),A=mt("medium","task-priority","","Medium"),l=mt("high","task-priority","","High");y(c,d,A,l),y(i,s,c);const u=C("input-container"),f=M("Finished?","task-finished-state","dialog-label"),p=W("radios-container");p.setAttribute("id","task-finished-state");const h=Ct("true","task-finished-state","","Yes"),g=mt("false","task-finished-state","","No");y(p,h,g),y(u,f,p);const b=z("Add","add-task task-submit");return y(o,r,a,i,u,b),Y((()=>function(n){const t=Zn(),e=Pn();(function(n,t){const e=Zn()[at(t)];let o=!1;return e.tasks.map((t=>{t.task===n&&(o=!0)})),o})(e.task,n)||(t[at(n)].tasks.push(e),Vn(t)),yt(n)}(Tn("#dialogs dialog:first-child h3.tasks-header").textContent)),o),y(t,e,o),y(n,t),n},yt=function(n){j(),ft(n)},Bt=function(n){const t=vt(n);y(ct,t),D()},vt=function(n){const t=dt("project-notes-dialog","project-notes-dialog"),e=C("notes-container"),o=m("notes-title","Project Notes:","h3"),r=function(){const n=document.createElement("textarea");return n.setAttribute("class","notes-textarea"),n.setAttribute("id","notes-textarea"),n.setAttribute("rows",4..toString()),n.setAttribute("cols",50..toString()),n.setAttribute("placeholder","Write something here for the project..."),n}();r.value=function(n){return Zn()[at(n)].notes}(n);const a=w("save-notes-btn","Save");return B((()=>function(n){const t=Zn(),e=Mn("#notes-textarea");t[at(n)].notes=e,Vn(t),j()}(n)),a),y(e,o,r,a),y(t,e),t},It=e.p+"e2644dd674270ad9f231.png";function xt(){const n=I(),t=C("web-info"),e=function(n,t){const e=document.createElement("img");return e.src=t,e.alt="website logo",e.className="web-logo",e}(0,It),o=m("web-title","Dailist","h1");y(t,e,o);const r=function(){const n=C("tabs"),t=Ln("Today"),e=Ln("This Week"),o=Ln("This Month"),r=Ln("This Year"),a=Ln("All");return function(...n){n.forEach((n=>{n.id=`${n.textContent.toLowerCase()}-${n.className}`}))}(t,e,o,r,a),function(...n){n.forEach((n=>{n.addEventListener("click",(()=>{On(n.id)}))}))}(t,e,o,r,a),B(Qn,t),B(Hn,e),B(Rn,o),B(Gn,r),B(Xn,a),y(n,t,e,o,r,a),n}(),a=w("new-project","+ New Project");B(lt,a),y(n,t,r,a)}document.addEventListener("DOMContentLoaded",(function(){!function(){if(null===localStorage.getItem("projects"))localStorage.setItem("projects",JSON.stringify($n()));else if(0===Zn().length){const n=Zn();n.push($n()[0]),Vn(n)}}(),xt(),Qn()}))})(); //# sourceMappingURL=main.js.map \ No newline at end of file diff --git a/main.js.map b/main.js.map index 17a22ab..b84346e 100644 --- a/main.js.map +++ b/main.js.map @@ -1 +1 @@ -{"version":3,"file":"main.js","mappings":"mHAIIA,EAAgC,IAAIC,IAAI,YACxCC,EAAgC,IAAID,IAAI,YACxCE,EAAgC,IAAIF,IAAI,YACxCG,EAAgC,IAAIH,IAAI,YACxCI,EAAgC,IAAIJ,IAAI,YACxCK,EAAgC,IAAIL,IAAI,YACxCM,EAAgC,IAAIN,IAAI,YACxCO,EAAgC,IAAIP,IAAI,YACxCQ,EAA0B,IAA4B,KACtDC,EAAqC,IAAgCV,GACrEW,EAAqC,IAAgCT,GACrEU,EAAqC,IAAgCT,GACrEU,EAAqC,IAAgCT,GACrEU,EAAqC,IAAgCT,GACrEU,EAAqC,IAAgCT,GACrEU,EAAqC,IAAgCT,GACrEU,EAAqC,IAAgCT,GAEzEC,EAAwBS,KAAK,CAACC,EAAOC,GAAI,4JAM1BV,qCACAC,kJAWAC,qCACAC,mJAWAC,qCACAC,kJAWAC,qCACAC,6EAIX,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,oDAAoD,MAAQ,GAAG,SAAW,0RAA0R,eAAiB,CAAC,i/BAAi/B,WAAa,MAEn5C,S,2FCnEIjB,EAAgC,IAAIC,IAAI,YACxCC,EAAgC,IAAID,IAAI,YACxCQ,EAA0B,IAA4B,KACtDC,EAAqC,IAAgCV,GACrEW,EAAqC,IAAgCT,GAEzEO,EAAwBS,KAAK,CAACC,EAAOC,GAAI,gKAM1BV,qCACAC,6EAIX,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,mDAAmD,MAAQ,GAAG,SAAW,iFAAiF,eAAiB,CAAC,4UAA4U,WAAa,MAEpiB,S,6GCjBIX,EAAgC,IAAIC,IAAI,YACxCC,EAAgC,IAAID,IAAI,YACxCE,EAAgC,IAAIF,IAAI,YACxCG,EAAgC,IAAIH,IAAI,YACxCQ,EAA0B,IAA4B,KAC1DA,EAAwBY,EAAE,KAC1BZ,EAAwBY,EAAE,KAC1B,IAAIX,EAAqC,IAAgCV,GACrEW,EAAqC,IAAgCT,GACrEU,EAAqC,IAAgCT,GACrEU,EAAqC,IAAgCT,GAEzEK,EAAwBS,KAAK,CAACC,EAAOC,GAAI,62JA8ObV,4DAIAC,yDAIAC,g6BAmDAC,i5CA+EAF,8wCAmFAE,mqCAkExB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,0CAA0C,MAAQ,GAAG,SAAW,g7HAAg7H,eAAiB,CAAC,66TAAm7T,WAAa,MAEj+b,S,UC3hBAM,EAAOG,QAAU,SAAUC,GACzB,IAAIC,EAAO,GA4EX,OAzEAA,EAAKC,SAAW,WACd,OAAOC,KAAKC,KAAI,SAAUC,GACxB,IAAIC,EAAU,GACVC,OAA+B,IAAZF,EAAK,GAoB5B,OAnBIA,EAAK,KACPC,GAAW,cAAcE,OAAOH,EAAK,GAAI,QAEvCA,EAAK,KACPC,GAAW,UAAUE,OAAOH,EAAK,GAAI,OAEnCE,IACFD,GAAW,SAASE,OAAOH,EAAK,GAAGI,OAAS,EAAI,IAAID,OAAOH,EAAK,IAAM,GAAI,OAE5EC,GAAWN,EAAuBK,GAC9BE,IACFD,GAAW,KAETD,EAAK,KACPC,GAAW,KAETD,EAAK,KACPC,GAAW,KAENA,CACT,IAAGI,KAAK,GACV,EAGAT,EAAKH,EAAI,SAAWa,EAASC,EAAOC,EAAQC,EAAUC,GAC7B,iBAAZJ,IACTA,EAAU,CAAC,CAAC,KAAMA,OAASK,KAE7B,IAAIC,EAAyB,CAAC,EAC9B,GAAIJ,EACF,IAAK,IAAIK,EAAI,EAAGA,EAAIf,KAAKM,OAAQS,IAAK,CACpC,IAAIrB,EAAKM,KAAKe,GAAG,GACP,MAANrB,IACFoB,EAAuBpB,IAAM,EAEjC,CAEF,IAAK,IAAIsB,EAAK,EAAGA,EAAKR,EAAQF,OAAQU,IAAM,CAC1C,IAAId,EAAO,GAAGG,OAAOG,EAAQQ,IACzBN,GAAUI,EAAuBZ,EAAK,WAGrB,IAAVU,SACc,IAAZV,EAAK,KAGdA,EAAK,GAAK,SAASG,OAAOH,EAAK,GAAGI,OAAS,EAAI,IAAID,OAAOH,EAAK,IAAM,GAAI,MAAMG,OAAOH,EAAK,GAAI,MAF/FA,EAAK,GAAKU,GAMVH,IACGP,EAAK,IAGRA,EAAK,GAAK,UAAUG,OAAOH,EAAK,GAAI,MAAMG,OAAOH,EAAK,GAAI,KAC1DA,EAAK,GAAKO,GAHVP,EAAK,GAAKO,GAMVE,IACGT,EAAK,IAGRA,EAAK,GAAK,cAAcG,OAAOH,EAAK,GAAI,OAAOG,OAAOH,EAAK,GAAI,KAC/DA,EAAK,GAAKS,GAHVT,EAAK,GAAK,GAAGG,OAAOM,IAMxBb,EAAKN,KAAKU,GACZ,CACF,EACOJ,CACT,C,UClFAL,EAAOG,QAAU,SAAUqB,EAAKC,GAI9B,OAHKA,IACHA,EAAU,CAAC,GAERD,GAGLA,EAAME,OAAOF,EAAIG,WAAaH,EAAII,QAAUJ,GAGxC,eAAeK,KAAKL,KACtBA,EAAMA,EAAIM,MAAM,GAAI,IAElBL,EAAQM,OACVP,GAAOC,EAAQM,MAKb,oBAAoBF,KAAKL,IAAQC,EAAQO,WACpC,IAAKpB,OAAOY,EAAIS,QAAQ,KAAM,OAAOA,QAAQ,MAAO,OAAQ,KAE9DT,GAjBEA,CAkBX,C,UCvBAxB,EAAOG,QAAU,SAAUM,GACzB,IAAIC,EAAUD,EAAK,GACfyB,EAAazB,EAAK,GACtB,IAAKyB,EACH,OAAOxB,EAET,GAAoB,mBAATyB,KAAqB,CAC9B,IAAIC,EAASD,KAAKE,SAASC,mBAAmBC,KAAKC,UAAUN,MACzDO,EAAO,+DAA+D7B,OAAOwB,GAC7EM,EAAgB,OAAO9B,OAAO6B,EAAM,OACxC,MAAO,CAAC/B,GAASE,OAAO,CAAC8B,IAAgB5B,KAAK,KAChD,CACA,MAAO,CAACJ,GAASI,KAAK,KACxB,C,SCbA,IAAI6B,EAAc,GAClB,SAASC,EAAqBC,GAE5B,IADA,IAAIC,GAAU,EACL5C,EAAI,EAAGA,EAAIyC,EAAY9B,OAAQX,IACtC,GAAIyC,EAAYzC,GAAG2C,aAAeA,EAAY,CAC5CC,EAAS5C,EACT,KACF,CAEF,OAAO4C,CACT,CACA,SAASC,EAAa1C,EAAMoB,GAG1B,IAFA,IAAIuB,EAAa,CAAC,EACdC,EAAc,GACT/C,EAAI,EAAGA,EAAIG,EAAKQ,OAAQX,IAAK,CACpC,IAAIO,EAAOJ,EAAKH,GACZD,EAAKwB,EAAQyB,KAAOzC,EAAK,GAAKgB,EAAQyB,KAAOzC,EAAK,GAClD0C,EAAQH,EAAW/C,IAAO,EAC1B4C,EAAa,GAAGjC,OAAOX,EAAI,KAAKW,OAAOuC,GAC3CH,EAAW/C,GAAMkD,EAAQ,EACzB,IAAIC,EAAoBR,EAAqBC,GACzCQ,EAAM,CACRC,IAAK7C,EAAK,GACVO,MAAOP,EAAK,GACZ8C,UAAW9C,EAAK,GAChBS,SAAUT,EAAK,GACfU,MAAOV,EAAK,IAEd,IAA2B,IAAvB2C,EACFT,EAAYS,GAAmBI,aAC/Bb,EAAYS,GAAmBK,QAAQJ,OAClC,CACL,IAAII,EAAUC,EAAgBL,EAAK5B,GACnCA,EAAQkC,QAAUzD,EAClByC,EAAYiB,OAAO1D,EAAG,EAAG,CACvB2C,WAAYA,EACZY,QAASA,EACTD,WAAY,GAEhB,CACAP,EAAYlD,KAAK8C,EACnB,CACA,OAAOI,CACT,CACA,SAASS,EAAgBL,EAAK5B,GAC5B,IAAIoC,EAAMpC,EAAQqC,OAAOrC,GAYzB,OAXAoC,EAAIE,OAAOV,GACG,SAAiBW,GAC7B,GAAIA,EAAQ,CACV,GAAIA,EAAOV,MAAQD,EAAIC,KAAOU,EAAOhD,QAAUqC,EAAIrC,OAASgD,EAAOT,YAAcF,EAAIE,WAAaS,EAAO9C,WAAamC,EAAInC,UAAY8C,EAAO7C,QAAUkC,EAAIlC,MACzJ,OAEF0C,EAAIE,OAAOV,EAAMW,EACnB,MACEH,EAAII,QAER,CAEF,CACAjE,EAAOG,QAAU,SAAUE,EAAMoB,GAG/B,IAAIyC,EAAkBnB,EADtB1C,EAAOA,GAAQ,GADfoB,EAAUA,GAAW,CAAC,GAGtB,OAAO,SAAgB0C,GACrBA,EAAUA,GAAW,GACrB,IAAK,IAAIjE,EAAI,EAAGA,EAAIgE,EAAgBrD,OAAQX,IAAK,CAC/C,IACIkE,EAAQxB,EADKsB,EAAgBhE,IAEjCyC,EAAYyB,GAAOZ,YACrB,CAEA,IADA,IAAIa,EAAqBtB,EAAaoB,EAAS1C,GACtC6C,EAAK,EAAGA,EAAKJ,EAAgBrD,OAAQyD,IAAM,CAClD,IACIC,EAAS3B,EADKsB,EAAgBI,IAEK,IAAnC3B,EAAY4B,GAAQf,aACtBb,EAAY4B,GAAQd,UACpBd,EAAYiB,OAAOW,EAAQ,GAE/B,CACAL,EAAkBG,CACpB,CACF,C,UCjFA,IAAIG,EAAO,CAAC,EA+BZxE,EAAOG,QAPP,SAA0BsE,EAAQC,GAChC,IAAIC,EAtBN,SAAmBA,GACjB,QAA4B,IAAjBH,EAAKG,GAAyB,CACvC,IAAIC,EAAcC,SAASC,cAAcH,GAGzC,GAAII,OAAOC,mBAAqBJ,aAAuBG,OAAOC,kBAC5D,IAGEJ,EAAcA,EAAYK,gBAAgBC,IAC5C,CAAE,MAAOC,GAEPP,EAAc,IAChB,CAEFJ,EAAKG,GAAUC,CACjB,CACA,OAAOJ,EAAKG,EACd,CAIeS,CAAUX,GACvB,IAAKE,EACH,MAAM,IAAIU,MAAM,2GAElBV,EAAOW,YAAYZ,EACrB,C,UCvBA1E,EAAOG,QANP,SAA4BsB,GAC1B,IAAI8D,EAAUV,SAASW,cAAc,SAGrC,OAFA/D,EAAQgE,cAAcF,EAAS9D,EAAQiE,YACvCjE,EAAQgD,OAAOc,EAAS9D,EAAQA,SACzB8D,CACT,C,eCCAvF,EAAOG,QANP,SAAwCwF,GACtC,IAAIC,EAAmD,KACnDA,GACFD,EAAaE,aAAa,QAASD,EAEvC,C,UCoDA5F,EAAOG,QAjBP,SAAgBsB,GACd,GAAwB,oBAAboD,SACT,MAAO,CACLd,OAAQ,WAAmB,EAC3BE,OAAQ,WAAmB,GAG/B,IAAI0B,EAAelE,EAAQqE,mBAAmBrE,GAC9C,MAAO,CACLsC,OAAQ,SAAgBV,IAjD5B,SAAesC,EAAclE,EAAS4B,GACpC,IAAIC,EAAM,GACND,EAAInC,WACNoC,GAAO,cAAc1C,OAAOyC,EAAInC,SAAU,QAExCmC,EAAIrC,QACNsC,GAAO,UAAU1C,OAAOyC,EAAIrC,MAAO,OAErC,IAAIL,OAAiC,IAAd0C,EAAIlC,MACvBR,IACF2C,GAAO,SAAS1C,OAAOyC,EAAIlC,MAAMN,OAAS,EAAI,IAAID,OAAOyC,EAAIlC,OAAS,GAAI,OAE5EmC,GAAOD,EAAIC,IACP3C,IACF2C,GAAO,KAELD,EAAIrC,QACNsC,GAAO,KAELD,EAAInC,WACNoC,GAAO,KAET,IAAIC,EAAYF,EAAIE,UAChBA,GAA6B,oBAATpB,OACtBmB,GAAO,uDAAuD1C,OAAOuB,KAAKE,SAASC,mBAAmBC,KAAKC,UAAUe,MAAe,QAKtI9B,EAAQsE,kBAAkBzC,EAAKqC,EAAclE,EAAQA,QACvD,CAoBMuE,CAAML,EAAclE,EAAS4B,EAC/B,EACAY,OAAQ,YArBZ,SAA4B0B,GAE1B,GAAgC,OAA5BA,EAAaM,WACf,OAAO,EAETN,EAAaM,WAAWC,YAAYP,EACtC,CAgBMQ,CAAmBR,EACrB,EAEJ,C,UC9CA3F,EAAOG,QAVP,SAA2BmD,EAAKqC,GAC9B,GAAIA,EAAaS,WACfT,EAAaS,WAAWC,QAAU/C,MAC7B,CACL,KAAOqC,EAAaW,YAClBX,EAAaO,YAAYP,EAAaW,YAExCX,EAAaL,YAAYT,SAAS0B,eAAejD,GACnD,CACF,C,kyBCXIkD,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBtF,IAAjBuF,EACH,OAAOA,EAAaxG,QAGrB,IAAIH,EAASwG,EAAyBE,GAAY,CACjDzG,GAAIyG,EAEJvG,QAAS,CAAC,GAOX,OAHAyG,EAAoBF,GAAU1G,EAAQA,EAAOG,QAASsG,GAG/CzG,EAAOG,OACf,CAGAsG,EAAoBI,EAAID,ECxBxBH,EAAoBK,EAAK9G,IACxB,IAAI+G,EAAS/G,GAAUA,EAAO2B,WAC7B,IAAO3B,EAAiB,QACxB,IAAM,EAEP,OADAyG,EAAoBO,EAAED,EAAQ,CAAEE,EAAGF,IAC5BA,CAAM,ECLdN,EAAoBO,EAAI,CAAC7G,EAAS+G,KACjC,IAAI,IAAIC,KAAOD,EACXT,EAAoBW,EAAEF,EAAYC,KAASV,EAAoBW,EAAEjH,EAASgH,IAC5EE,OAAOC,eAAenH,EAASgH,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,IAE1E,ECNDV,EAAoBgB,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOnH,MAAQ,IAAIoH,SAAS,cAAb,EAChB,CAAE,MAAOxC,GACR,GAAsB,iBAAXJ,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxB0B,EAAoBW,EAAI,CAAC/D,EAAKuE,IAAUP,OAAOQ,UAAUC,eAAeC,KAAK1E,EAAKuE,G,MCAlF,IAAII,EACAvB,EAAoBgB,EAAEQ,gBAAeD,EAAYvB,EAAoBgB,EAAES,SAAW,IACtF,IAAIrD,EAAW4B,EAAoBgB,EAAE5C,SACrC,IAAKmD,GAAanD,IACbA,EAASsD,eAAkE,WAAjDtD,EAASsD,cAAcC,QAAQC,gBAC5DL,EAAYnD,EAASsD,cAAcG,MAC/BN,GAAW,CACf,IAAIO,EAAU1D,EAAS2D,qBAAqB,UAC5C,GAAGD,EAAQ1H,OAEV,IADA,IAAIX,EAAIqI,EAAQ1H,OAAS,EAClBX,GAAK,KAAO8H,IAAc,aAAanG,KAAKmG,KAAaA,EAAYO,EAAQrI,KAAKoI,GAE3F,CAID,IAAKN,EAAW,MAAM,IAAI3C,MAAM,yDAChC2C,EAAYA,EAAU/F,QAAQ,OAAQ,IAAIA,QAAQ,QAAS,IAAIA,QAAQ,YAAa,KACpFwE,EAAoBgC,EAAIT,C,KClBxBvB,EAAoBiC,EAAI7D,SAAS8D,SAAWC,KAAKV,SAASW,KCA1DpC,EAAoBqC,QAAK1H,E,uHCWrBK,EAAU,CAAC,EAEfA,EAAQsE,kBAAoB,IAC5BtE,EAAQgE,cAAgB,IACxBhE,EAAQgD,OAAS,SAAc,KAAM,QACrChD,EAAQqC,OAAS,IACjBrC,EAAQqE,mBAAqB,IAEhB,IAAI,IAASrE,GAKJ,KAAW,IAAQsH,QAAS,IAAQA,OCxBnD,MAAMC,EACT,WAAAC,CAAYC,GACR3I,KAAK2I,MAAQA,CACjB,CAEA1B,IAAM,IACK3C,SAASC,cAAcvE,KAAK2I,OAGvCC,OAAS,IACEC,MAAMC,KAAKxE,SAASyE,iBAAiB/I,KAAK2I,QAIlD,MAQMK,EAAa,SAASC,EAAW9I,EAAS+I,GACnD,MAAMC,EAAO7E,SAASW,cAAc,GAAGiE,KAGvC,OAFAC,EAAKC,YAAcjJ,EACnBgJ,EAAKF,UAAYA,EACVE,CACX,EAEaE,EAAY,SAASJ,GAC9B,MAAMK,EAAMhF,SAASW,cAAc,OAEnC,OADAqE,EAAIL,UAAYA,EACTK,CACX,EAEaC,EAAe,SAASN,EAAW9I,GAC5C,MAAMqJ,EAASlF,SAASW,cAAc,UAGtC,OAFAuE,EAAOJ,YAAcjJ,EACrBqJ,EAAOP,UAAYA,EACZO,CACX,EAEaC,EAAW,SAASC,KAAkBC,GAC/CA,EAAcC,SAASC,IACnBH,EAAc3E,YAAY8E,EAAa,GAE/C,EASaC,EAAc,SAASC,KAAOC,GACvCA,EAASJ,SAAS5E,IAAcA,EAAQiF,iBAAiB,QAASF,EAAE,GACxE,EAEaG,EAAa,IAAIzB,EAAM,QAAQG,OAE/BuB,EAAY,IAAI1B,EAAM,UAAUxB,IAEhCmD,EAAa,IAAI3B,EAAM,YAAYxB,IAE1CoD,EAAa,IAAI5B,EAAM,UAAUG,OACjC0B,EAAY,KACd,MAAMC,EAAUF,IAChB,OAAOE,EAAQA,EAAQjK,OAAS,EAAE,EAGzBkK,EAAiB,KAC1BF,IAAYG,WAAW,EAGdC,EAAe,KACRL,IACRT,SAASe,IACbA,EAAOC,QACPD,EAAOjH,QAAO,GAChB,EAEOmH,EAAc,KACvB,MAAMF,EAASL,IACfK,EAAOC,QACPD,EAAOjH,QAAQ,EAGNoH,EAAa,SAAS7B,EAAW8B,EAAIC,GAC9C,MAAMC,EAAO3G,SAASW,cAAc,QAGpC,OAFAgG,EAAK3F,aAAa,QAAS,GAAG2D,KAC9BgC,EAAK3F,aAAa,KAAM,GAAGyF,KACpBE,CACX,EAEaC,EAAc,SAAS/K,EAASgL,EAAOlC,GAChD,MAAMmC,EAAQ9G,SAASW,cAAc,SAIrC,OAHAmG,EAAM9F,aAAa,QAAS,GAAG2D,KAC/BmC,EAAMhC,YAAcjJ,EACpBiL,EAAM9F,aAAa,MAAO,GAAG6F,KACtBC,CACX,EAEaC,EAAc,SAASC,EAAMP,EAAI9B,GAC1C,MAAMsC,EAAQjH,SAASW,cAAc,SAIrC,OAHAsG,EAAMjG,aAAa,OAAQ,GAAGgG,KAC9BC,EAAMjG,aAAa,KAAM,GAAGyF,KAC5BQ,EAAMjG,aAAa,QAAS,GAAG2D,KACxBsC,CACX,EAqBaC,EAAqB,SAASrL,EAAS8I,GAChD,MAAMwC,EAAelC,EAAaN,EAAW9I,GAE7C,OADAsL,EAAanG,aAAa,OAAQ,UAC3BmG,CACX,EAMaC,EAAiB,IAAIjD,EAAM,YAAYxB,IAmBvC0E,EAAoB,SAASC,EAAMC,EAAOP,EAAMP,EAAI9B,GAC7D,MAAMsC,EAAQF,EAAYC,EAAMP,EAAI9B,GAGpC,OAFAsC,EAAMjG,aAAa,OAAQsG,GAC3BL,EAAMjG,aAAa,QAASuG,GACrBN,CACX,EAEaO,EAAiB,SAAS7C,GACnC,MAAM8C,EAAWzH,SAASW,cAAc,YAExC,OADA8G,EAAS9C,UAAYA,EACd8C,CACX,EC1KaC,GDsLY,IAAIvD,EAAM,UAAUxB,ICtLjB,SAAS8C,KAAOkC,GACxCA,EAAMrC,SAASqB,IACXA,EAAKhB,iBAAiB,UAAWiC,IAAYA,EAAMC,gBAAe,IAClElB,EAAKhB,iBAAiB,SAAUF,EAAG,GAE3C,GCLMqC,EAAuB,CAC3BC,iBAAkB,CAChBC,IAAK,qBACLC,MAAO,+BAGTC,SAAU,CACRF,IAAK,WACLC,MAAO,qBAGTE,YAAa,gBAEbC,iBAAkB,CAChBJ,IAAK,qBACLC,MAAO,+BAGTI,SAAU,CACRL,IAAK,WACLC,MAAO,qBAGTK,YAAa,CACXN,IAAK,eACLC,MAAO,yBAGTM,OAAQ,CACNP,IAAK,SACLC,MAAO,mBAGTO,MAAO,CACLR,IAAK,QACLC,MAAO,kBAGTQ,YAAa,CACXT,IAAK,eACLC,MAAO,yBAGTS,OAAQ,CACNV,IAAK,SACLC,MAAO,mBAGTU,aAAc,CACZX,IAAK,gBACLC,MAAO,0BAGTW,QAAS,CACPZ,IAAK,UACLC,MAAO,oBAGTY,YAAa,CACXb,IAAK,eACLC,MAAO,yBAGTa,OAAQ,CACNd,IAAK,SACLC,MAAO,mBAGTc,WAAY,CACVf,IAAK,cACLC,MAAO,wBAGTe,aAAc,CACZhB,IAAK,gBACLC,MAAO,2BC3EJ,SAASgB,EAAkBC,GAChC,MAAO,CAACtM,EAAU,CAAC,KAEjB,MAAMuM,EAAQvM,EAAQuM,MAAQtM,OAAOD,EAAQuM,OAASD,EAAKE,aAE3D,OADeF,EAAKG,QAAQF,IAAUD,EAAKG,QAAQH,EAAKE,aAC3C,CAEjB,CCLA,MAqBaE,EAAa,CACxBC,KAAMN,EAAkB,CACtBI,QAvBgB,CAClBG,KAAM,mBACNC,KAAM,aACNC,OAAQ,WACRC,MAAO,cAoBLP,aAAc,SAGhBQ,KAAMX,EAAkB,CACtBI,QArBgB,CAClBG,KAAM,iBACNC,KAAM,cACNC,OAAQ,YACRC,MAAO,UAkBLP,aAAc,SAGhBS,SAAUZ,EAAkB,CAC1BI,QAnBoB,CACtBG,KAAM,yBACNC,KAAM,yBACNC,OAAQ,qBACRC,MAAO,sBAgBLP,aAAc,UCpCZU,EAAuB,CAC3BC,SAAU,qBACVC,UAAW,mBACXC,MAAO,eACPC,SAAU,kBACVC,SAAU,cACVlC,MAAO,KCmCF,SAASmC,EAAgBlB,GAC9B,MAAO,CAAC3B,EAAO3K,KAGb,IAAIyN,EACJ,GAAgB,gBAHAzN,GAAS0N,QAAUzN,OAAOD,EAAQ0N,SAAW,eAG7BpB,EAAKqB,iBAAkB,CACrD,MAAMnB,EAAeF,EAAKsB,wBAA0BtB,EAAKE,aACnDD,EAAQvM,GAASuM,MAAQtM,OAAOD,EAAQuM,OAASC,EAEvDiB,EACEnB,EAAKqB,iBAAiBpB,IAAUD,EAAKqB,iBAAiBnB,EAC1D,KAAO,CACL,MAAMA,EAAeF,EAAKE,aACpBD,EAAQvM,GAASuM,MAAQtM,OAAOD,EAAQuM,OAASD,EAAKE,aAE5DiB,EAAcnB,EAAKuB,OAAOtB,IAAUD,EAAKuB,OAAOrB,EAClD,CAIA,OAAOiB,EAHOnB,EAAKwB,iBAAmBxB,EAAKwB,iBAAiBnD,GAASA,EAG5C,CAE7B,CC7DA,MA0JaoD,EAAW,CACtBC,cAzBoB,CAACC,EAAaC,KAClC,MAAMC,EAASC,OAAOH,GAShBI,EAASF,EAAS,IACxB,GAAIE,EAAS,IAAMA,EAAS,GAC1B,OAAQA,EAAS,IACf,KAAK,EACH,OAAOF,EAAS,KAClB,KAAK,EACH,OAAOA,EAAS,KAClB,KAAK,EACH,OAAOA,EAAS,KAGtB,OAAOA,EAAS,IAAI,EAMpBG,IAAKd,EAAgB,CACnBK,OA9Jc,CAChBU,OAAQ,CAAC,IAAK,KACdC,YAAa,CAAC,KAAM,MACpBC,KAAM,CAAC,gBAAiB,gBA4JtBjC,aAAc,SAGhBkC,QAASlB,EAAgB,CACvBK,OA7JkB,CACpBU,OAAQ,CAAC,IAAK,IAAK,IAAK,KACxBC,YAAa,CAAC,KAAM,KAAM,KAAM,MAChCC,KAAM,CAAC,cAAe,cAAe,cAAe,gBA2JlDjC,aAAc,OACdsB,iBAAmBY,GAAYA,EAAU,IAG3CC,MAAOnB,EAAgB,CACrBK,OAzJgB,CAClBU,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAChEC,YAAa,CACX,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAGFC,KAAM,CACJ,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,aA6HAjC,aAAc,SAGhBoC,IAAKpB,EAAgB,CACnBK,OA7Hc,CAChBU,OAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACvCxB,MAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAC5CyB,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACxDC,KAAM,CACJ,SACA,SACA,UACA,YACA,WACA,SACA,aAmHAjC,aAAc,SAGhBqC,UAAWrB,EAAgB,CACzBK,OAnHoB,CACtBU,OAAQ,CACNO,GAAI,IACJC,GAAI,IACJC,SAAU,KACVC,KAAM,IACNC,QAAS,UACTC,UAAW,YACXC,QAAS,UACTC,MAAO,SAETb,YAAa,CACXM,GAAI,KACJC,GAAI,KACJC,SAAU,WACVC,KAAM,OACNC,QAAS,UACTC,UAAW,YACXC,QAAS,UACTC,MAAO,SAETZ,KAAM,CACJK,GAAI,OACJC,GAAI,OACJC,SAAU,WACVC,KAAM,OACNC,QAAS,UACTC,UAAW,YACXC,QAAS,UACTC,MAAO,UAuFP7C,aAAc,OACdmB,iBApF8B,CAChCY,OAAQ,CACNO,GAAI,IACJC,GAAI,IACJC,SAAU,KACVC,KAAM,IACNC,QAAS,iBACTC,UAAW,mBACXC,QAAS,iBACTC,MAAO,YAETb,YAAa,CACXM,GAAI,KACJC,GAAI,KACJC,SAAU,WACVC,KAAM,OACNC,QAAS,iBACTC,UAAW,mBACXC,QAAS,iBACTC,MAAO,YAETZ,KAAM,CACJK,GAAI,OACJC,GAAI,OACJC,SAAU,WACVC,KAAM,OACNC,QAAS,iBACTC,UAAW,mBACXC,QAAS,iBACTC,MAAO,aAwDPzB,uBAAwB,UCxLrB,SAAS0B,EAAahD,GAC3B,MAAO,CAACiD,EAAQvP,EAAU,CAAC,KACzB,MAAMuM,EAAQvM,EAAQuM,MAEhBiD,EACHjD,GAASD,EAAKmD,cAAclD,IAC7BD,EAAKmD,cAAcnD,EAAKoD,mBACpBC,EAAcJ,EAAOK,MAAMJ,GAEjC,IAAKG,EACH,OAAO,KAET,MAAME,EAAgBF,EAAY,GAE5BG,EACHvD,GAASD,EAAKwD,cAAcvD,IAC7BD,EAAKwD,cAAcxD,EAAKyD,mBAEpBrK,EAAMiC,MAAMqI,QAAQF,GA+B9B,SAAmBG,GACjB,IAAK,IAAIvK,EAAM,EAAGA,EAAMuK,EAAM7Q,OAAQsG,IACpC,GAAcuK,EAAMvK,GAhC8BtF,KAAKyP,GAiCrD,OAAOnK,CAIb,CArCQwK,CAAUJ,GAkBlB,SAAiBK,GACf,IAAK,MAAMzK,KAAOyK,EAChB,GACEvK,OAAOQ,UAAUC,eAAeC,KAAK6J,EAAQzK,IACnCyK,EAAOzK,GApB6BtF,KAAKyP,GAsBnD,OAAOnK,CAIb,CA1BQ0K,CAAQN,GAEZ,IAAInF,EAUJ,OARAA,EAAQ2B,EAAK+D,cAAgB/D,EAAK+D,cAAc3K,GAAOA,EACvDiF,EAAQ3K,EAAQqQ,cAEZrQ,EAAQqQ,cAAc1F,GACtBA,EAIG,CAAEA,QAAO2F,KAFHf,EAAOlP,MAAMwP,EAAczQ,QAElB,CAE1B,CChCA,MAsFawQ,EAAQ,CACnB5B,eC1FkC1B,ED0FC,CACjCkD,aAxF8B,wBAyF9Be,aAxF8B,OAyF9BF,cAAgB1F,GAAU6F,SAAS7F,EAAO,KC5FrC,CAAC4E,EAAQvP,EAAU,CAAC,KACzB,MAAM2P,EAAcJ,EAAOK,MAAMtD,EAAKkD,cACtC,IAAKG,EAAa,OAAO,KACzB,MAAME,EAAgBF,EAAY,GAE5Bc,EAAclB,EAAOK,MAAMtD,EAAKiE,cACtC,IAAKE,EAAa,OAAO,KACzB,IAAI9F,EAAQ2B,EAAK+D,cACb/D,EAAK+D,cAAcI,EAAY,IAC/BA,EAAY,GAOhB,OAJA9F,EAAQ3K,EAAQqQ,cAAgBrQ,EAAQqQ,cAAc1F,GAASA,EAIxD,CAAEA,QAAO2F,KAFHf,EAAOlP,MAAMwP,EAAczQ,QAElB,GD+ExBkP,IAAKgB,EAAa,CAChBG,cA3FqB,CACvBlB,OAAQ,UACRC,YAAa,6DACbC,KAAM,8DAyFJiB,kBAAmB,OACnBI,cAxFqB,CACvBY,IAAK,CAAC,MAAO,YAwFXX,kBAAmB,QAGrBrB,QAASY,EAAa,CACpBG,cAzFyB,CAC3BlB,OAAQ,WACRC,YAAa,YACbC,KAAM,kCAuFJiB,kBAAmB,OACnBI,cAtFyB,CAC3BY,IAAK,CAAC,KAAM,KAAM,KAAM,OAsFtBX,kBAAmB,MACnBM,cAAgB1N,GAAUA,EAAQ,IAGpCgM,MAAOW,EAAa,CAClBG,cAxFuB,CACzBlB,OAAQ,eACRC,YAAa,sDACbC,KAAM,6FAsFJiB,kBAAmB,OACnBI,cArFuB,CACzBvB,OAAQ,CACN,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAGFmC,IAAK,CACH,OACA,MACA,QACA,OACA,QACA,QACA,QACA,OACA,MACA,MACA,MACA,QA0DAX,kBAAmB,QAGrBnB,IAAKU,EAAa,CAChBG,cA1DqB,CACvBlB,OAAQ,YACRxB,MAAO,2BACPyB,YAAa,kCACbC,KAAM,gEAuDJiB,kBAAmB,OACnBI,cAtDqB,CACvBvB,OAAQ,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OACnDmC,IAAK,CAAC,OAAQ,MAAO,OAAQ,MAAO,OAAQ,MAAO,SAqDjDX,kBAAmB,QAGrBlB,UAAWS,EAAa,CACtBG,cAtD2B,CAC7BlB,OAAQ,6DACRmC,IAAK,kFAqDHhB,kBAAmB,MACnBI,cApD2B,CAC7BY,IAAK,CACH5B,GAAI,MACJC,GAAI,MACJC,SAAU,OACVC,KAAM,OACNC,QAAS,WACTC,UAAW,aACXC,QAAS,WACTC,MAAO,WA4CPU,kBAAmB,SCjIhB,IAA6BzD,ECc7B,MAAMqE,EAAO,CAClBC,KAAM,QACNC,eT+D4B,CAACC,EAAOpP,EAAO1B,KAC3C,IAAIqB,EAEJ,MAAM0P,EAAa7F,EAAqB4F,GASxC,OAPEzP,EADwB,iBAAf0P,EACAA,EACU,IAAVrP,EACAqP,EAAW3F,IAEX2F,EAAW1F,MAAM7K,QAAQ,YAAakB,EAAM7C,YAGnDmB,GAASgR,UACPhR,EAAQiR,YAAcjR,EAAQiR,WAAa,EACtC,MAAQ5P,EAERA,EAAS,OAIbA,CAAM,ESlFbqL,WAAYA,EACZwE,eNT4B,CAACJ,EAAOK,EAAOC,EAAWlD,IACtDhB,EAAqB4D,GMSrB/C,SAAUA,EACV6B,MAAOA,EACP5P,QAAS,CACPqR,aAAc,EACdC,sBAAuB,ICvB3B,IAAIC,EAAiB,CAAC,EAEf,SAASC,IACd,OAAOD,CACT,CCiDuBE,KAAKC,IAAI,GAAI,GA/B7B,MAsDMC,EAAqB,OAOrBC,EAAoB,MCnD1B,SAASC,EAAOC,GACrB,MAAMC,EAASnM,OAAOQ,UAAUvH,SAASyH,KAAKwL,GAG9C,OACEA,aAAoBE,MACC,iBAAbF,GAAoC,kBAAXC,EAG1B,IAAID,EAAStK,aAAasK,GAEb,iBAAbA,GACI,oBAAXC,GACoB,iBAAbD,GACI,oBAAXC,EAGO,IAAIC,KAAKF,GAGT,IAAIE,KAAKC,IAEpB,CChCO,SAASC,GAAWvF,GACzB,MAAMwE,EAAQU,EAAOlF,GAErB,OADAwE,EAAMgB,SAAS,EAAG,EAAG,EAAG,GACjBhB,CACT,CCbO,SAASiB,GAAgCzF,GAC9C,MAAMwE,EAAQU,EAAOlF,GACf0F,EAAU,IAAIL,KAClBA,KAAKM,IACHnB,EAAMoB,cACNpB,EAAMqB,WACNrB,EAAMsB,UACNtB,EAAMuB,WACNvB,EAAMwB,aACNxB,EAAMyB,aACNzB,EAAM0B,oBAIV,OADAR,EAAQS,eAAe3B,EAAMoB,gBACrB5F,GAAQ0F,CAClB,CCEO,SAASU,GAAcpG,EAAMhC,GAClC,OAAIgC,aAAgBqF,KACX,IAAIrF,EAAKnF,YAAYmD,GAErB,IAAIqH,KAAKrH,EAEpB,CCbO,SAASqI,GAAarG,GAC3B,MAAMwE,EAAQU,EAAOlF,GAGrB,OCSK,SAAkCsG,EAAUC,GACjD,MAAMC,EAAiBjB,GAAWe,GAC5BG,EAAkBlB,GAAWgB,GAE7BG,GACHF,EAAiBf,GAAgCe,GAC9CG,GACHF,EAAkBhB,GAAgCgB,GAKrD,OAAO3B,KAAK8B,OAAOF,EAAgBC,GAAkB1B,EACvD,CDxBe4B,CAAyBrC,EEFjC,SAAqBxE,GAC1B,MAAM8G,EAAY5B,EAAOlF,GACnBwE,EAAQ4B,GAAcpG,EAAM,GAGlC,OAFAwE,EAAMuC,YAAYD,EAAUlB,cAAe,EAAG,GAC9CpB,EAAMgB,SAAS,EAAG,EAAG,EAAG,GACjBhB,CACT,CFJ+CwC,CAAYxC,IAChC,CAE3B,CGKO,SAASyC,GAAYjH,EAAM3M,GAChC,MAAMuR,EAAiBC,IACjBH,EACJrR,GAASqR,cACTrR,GAAS6T,QAAQ7T,SAASqR,cAC1BE,EAAeF,cACfE,EAAesC,QAAQ7T,SAASqR,cAChC,EAEIF,EAAQU,EAAOlF,GACfiC,EAAMuC,EAAM2C,SACZC,GAAQnF,EAAMyC,EAAe,EAAI,GAAKzC,EAAMyC,EAIlD,OAFAF,EAAM6C,QAAQ7C,EAAMsB,UAAYsB,GAChC5C,EAAMgB,SAAS,EAAG,EAAG,EAAG,GACjBhB,CACT,CCzBO,SAAS8C,GAAetH,GAC7B,OAAOiH,GAAYjH,EAAM,CAAE0E,aAAc,GAC3C,CCAO,SAAS6C,GAAevH,GAC7B,MAAMwE,EAAQU,EAAOlF,GACfwH,EAAOhD,EAAMoB,cAEb6B,EAA4BrB,GAAcpG,EAAM,GACtDyH,EAA0BV,YAAYS,EAAO,EAAG,EAAG,GACnDC,EAA0BjC,SAAS,EAAG,EAAG,EAAG,GAC5C,MAAMkC,EAAkBJ,GAAeG,GAEjCE,EAA4BvB,GAAcpG,EAAM,GACtD2H,EAA0BZ,YAAYS,EAAM,EAAG,GAC/CG,EAA0BnC,SAAS,EAAG,EAAG,EAAG,GAC5C,MAAMoC,EAAkBN,GAAeK,GAEvC,OAAInD,EAAMqD,WAAaH,EAAgBG,UAC9BL,EAAO,EACLhD,EAAMqD,WAAaD,EAAgBC,UACrCL,EAEAA,EAAO,CAElB,CCrBO,SAASM,GAAW9H,GACzB,MAAMwE,EAAQU,EAAOlF,GACfoH,GAAQE,GAAe9C,ICDxB,SAA4BxE,GACjC,MAAMwH,EAAOD,GAAevH,GACtB+H,EAAkB3B,GAAcpG,EAAM,GAG5C,OAFA+H,EAAgBhB,YAAYS,EAAM,EAAG,GACrCO,EAAgBvC,SAAS,EAAG,EAAG,EAAG,GAC3B8B,GAAeS,EACxB,CDLyCC,CAAmBxD,GAK1D,OAAOM,KAAK8B,MAAMQ,EAAOpC,GAAsB,CACjD,CEWO,SAASiD,GAAYjI,EAAM3M,GAChC,MAAMmR,EAAQU,EAAOlF,GACfwH,EAAOhD,EAAMoB,cAEbhB,EAAiBC,IACjBF,EACJtR,GAASsR,uBACTtR,GAAS6T,QAAQ7T,SAASsR,uBAC1BC,EAAeD,uBACfC,EAAesC,QAAQ7T,SAASsR,uBAChC,EAEIuD,EAAsB9B,GAAcpG,EAAM,GAChDkI,EAAoBnB,YAAYS,EAAO,EAAG,EAAG7C,GAC7CuD,EAAoB1C,SAAS,EAAG,EAAG,EAAG,GACtC,MAAMkC,EAAkBT,GAAYiB,EAAqB7U,GAEnD8U,EAAsB/B,GAAcpG,EAAM,GAChDmI,EAAoBpB,YAAYS,EAAM,EAAG7C,GACzCwD,EAAoB3C,SAAS,EAAG,EAAG,EAAG,GACtC,MAAMoC,EAAkBX,GAAYkB,EAAqB9U,GAEzD,OAAImR,EAAMqD,WAAaH,EAAgBG,UAC9BL,EAAO,EACLhD,EAAMqD,WAAaD,EAAgBC,UACrCL,EAEAA,EAAO,CAElB,CC5BO,SAASY,GAAQpI,EAAM3M,GAC5B,MAAMmR,EAAQU,EAAOlF,GACfoH,GAAQH,GAAYzC,EAAOnR,ICH5B,SAAyB2M,EAAM3M,GACpC,MAAMuR,EAAiBC,IACjBF,EACJtR,GAASsR,uBACTtR,GAAS6T,QAAQ7T,SAASsR,uBAC1BC,EAAeD,uBACfC,EAAesC,QAAQ7T,SAASsR,uBAChC,EAEI6C,EAAOS,GAAYjI,EAAM3M,GACzBgV,EAAYjC,GAAcpG,EAAM,GAItC,OAHAqI,EAAUtB,YAAYS,EAAM,EAAG7C,GAC/B0D,EAAU7C,SAAS,EAAG,EAAG,EAAG,GACdyB,GAAYoB,EAAWhV,EAEvC,CDZ+CiV,CAAgB9D,EAAOnR,GAKpE,OAAOyR,KAAK8B,MAAMQ,EAAOpC,GAAsB,CACjD,CEtDO,SAASuD,GAAgB/G,EAAQgH,GAGtC,OAFahH,EAAS,EAAI,IAAM,IACjBsD,KAAK2D,IAAIjH,GAAQtP,WAAWwW,SAASF,EAAc,IAEpE,CCWO,MAAMG,GAAkB,CAE7B,CAAAC,CAAE5I,EAAMmE,GAUN,MAAM0E,EAAa7I,EAAK4F,cAElB4B,EAAOqB,EAAa,EAAIA,EAAa,EAAIA,EAC/C,OAAON,GAA0B,OAAVpE,EAAiBqD,EAAO,IAAMA,EAAMrD,EAAM1R,OACnE,EAGA,CAAAqW,CAAE9I,EAAMmE,GACN,MAAMnC,EAAQhC,EAAK6F,WACnB,MAAiB,MAAV1B,EAAgB7Q,OAAO0O,EAAQ,GAAKuG,GAAgBvG,EAAQ,EAAG,EACxE,EAGApJ,EAAC,CAACoH,EAAMmE,IACCoE,GAAgBvI,EAAK8F,UAAW3B,EAAM1R,QAI/C,CAAAoG,CAAEmH,EAAMmE,GACN,MAAM4E,EAAqB/I,EAAK+F,WAAa,IAAM,EAAI,KAAO,KAE9D,OAAQ5B,GACN,IAAK,IACL,IAAK,KACH,OAAO4E,EAAmB9O,cAC5B,IAAK,MACH,OAAO8O,EACT,IAAK,QACH,OAAOA,EAAmB,GAE5B,QACE,MAA8B,OAAvBA,EAA8B,OAAS,OAEpD,EAGAC,EAAC,CAAChJ,EAAMmE,IACCoE,GAAgBvI,EAAK+F,WAAa,IAAM,GAAI5B,EAAM1R,QAI3DwW,EAAC,CAACjJ,EAAMmE,IACCoE,GAAgBvI,EAAK+F,WAAY5B,EAAM1R,QAIhDgG,EAAC,CAACuH,EAAMmE,IACCoE,GAAgBvI,EAAKgG,aAAc7B,EAAM1R,QAIlDyW,EAAC,CAAClJ,EAAMmE,IACCoE,GAAgBvI,EAAKiG,aAAc9B,EAAM1R,QAIlD,CAAA0W,CAAEnJ,EAAMmE,GACN,MAAMiF,EAAiBjF,EAAM1R,OACvB4W,EAAerJ,EAAKkG,kBAI1B,OAAOqC,GAHmBzD,KAAKwE,MAC7BD,EAAevE,KAAKC,IAAI,GAAIqE,EAAiB,IAELjF,EAAM1R,OAClD,GCzBW8W,GAAa,CAExBC,EAAG,SAAUxJ,EAAMmE,EAAO/C,GACxB,MAAMO,EAAM3B,EAAK4F,cAAgB,EAAI,EAAI,EACzC,OAAQzB,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAO/C,EAASO,IAAIA,EAAK,CAAE/B,MAAO,gBAEpC,IAAK,QACH,OAAOwB,EAASO,IAAIA,EAAK,CAAE/B,MAAO,WAGpC,QACE,OAAOwB,EAASO,IAAIA,EAAK,CAAE/B,MAAO,SAExC,EAGAgJ,EAAG,SAAU5I,EAAMmE,EAAO/C,GAExB,GAAc,OAAV+C,EAAgB,CAClB,MAAM0E,EAAa7I,EAAK4F,cAElB4B,EAAOqB,EAAa,EAAIA,EAAa,EAAIA,EAC/C,OAAOzH,EAASC,cAAcmG,EAAM,CAAEiC,KAAM,QAC9C,CAEA,OAAOd,GAAgBC,EAAE5I,EAAMmE,EACjC,EAGAuF,EAAG,SAAU1J,EAAMmE,EAAO/C,EAAU/N,GAClC,MAAMsW,EAAiB1B,GAAYjI,EAAM3M,GAEnCuW,EAAWD,EAAiB,EAAIA,EAAiB,EAAIA,EAG3D,MAAc,OAAVxF,EAEKoE,GADcqB,EAAW,IACK,GAIzB,OAAVzF,EACK/C,EAASC,cAAcuI,EAAU,CAAEH,KAAM,SAI3ClB,GAAgBqB,EAAUzF,EAAM1R,OACzC,EAGAoX,EAAG,SAAU7J,EAAMmE,GAIjB,OAAOoE,GAHahB,GAAevH,GAGCmE,EAAM1R,OAC5C,EAWAqX,EAAG,SAAU9J,EAAMmE,GAEjB,OAAOoE,GADMvI,EAAK4F,cACWzB,EAAM1R,OACrC,EAGAsX,EAAG,SAAU/J,EAAMmE,EAAO/C,GACxB,MAAMW,EAAU+C,KAAKkF,MAAMhK,EAAK6F,WAAa,GAAK,GAClD,OAAQ1B,GAEN,IAAK,IACH,OAAO7Q,OAAOyO,GAEhB,IAAK,KACH,OAAOwG,GAAgBxG,EAAS,GAElC,IAAK,KACH,OAAOX,EAASC,cAAcU,EAAS,CAAE0H,KAAM,YAEjD,IAAK,MACH,OAAOrI,EAASW,QAAQA,EAAS,CAC/BnC,MAAO,cACPmB,QAAS,eAGb,IAAK,QACH,OAAOK,EAASW,QAAQA,EAAS,CAC/BnC,MAAO,SACPmB,QAAS,eAIb,QACE,OAAOK,EAASW,QAAQA,EAAS,CAC/BnC,MAAO,OACPmB,QAAS,eAGjB,EAGAkJ,EAAG,SAAUjK,EAAMmE,EAAO/C,GACxB,MAAMW,EAAU+C,KAAKkF,MAAMhK,EAAK6F,WAAa,GAAK,GAClD,OAAQ1B,GAEN,IAAK,IACH,OAAO7Q,OAAOyO,GAEhB,IAAK,KACH,OAAOwG,GAAgBxG,EAAS,GAElC,IAAK,KACH,OAAOX,EAASC,cAAcU,EAAS,CAAE0H,KAAM,YAEjD,IAAK,MACH,OAAOrI,EAASW,QAAQA,EAAS,CAC/BnC,MAAO,cACPmB,QAAS,eAGb,IAAK,QACH,OAAOK,EAASW,QAAQA,EAAS,CAC/BnC,MAAO,SACPmB,QAAS,eAIb,QACE,OAAOK,EAASW,QAAQA,EAAS,CAC/BnC,MAAO,OACPmB,QAAS,eAGjB,EAGA+H,EAAG,SAAU9I,EAAMmE,EAAO/C,GACxB,MAAMY,EAAQhC,EAAK6F,WACnB,OAAQ1B,GACN,IAAK,IACL,IAAK,KACH,OAAOwE,GAAgBG,EAAE9I,EAAMmE,GAEjC,IAAK,KACH,OAAO/C,EAASC,cAAcW,EAAQ,EAAG,CAAEyH,KAAM,UAEnD,IAAK,MACH,OAAOrI,EAASY,MAAMA,EAAO,CAC3BpC,MAAO,cACPmB,QAAS,eAGb,IAAK,QACH,OAAOK,EAASY,MAAMA,EAAO,CAC3BpC,MAAO,SACPmB,QAAS,eAIb,QACE,OAAOK,EAASY,MAAMA,EAAO,CAAEpC,MAAO,OAAQmB,QAAS,eAE7D,EAGAmJ,EAAG,SAAUlK,EAAMmE,EAAO/C,GACxB,MAAMY,EAAQhC,EAAK6F,WACnB,OAAQ1B,GAEN,IAAK,IACH,OAAO7Q,OAAO0O,EAAQ,GAExB,IAAK,KACH,OAAOuG,GAAgBvG,EAAQ,EAAG,GAEpC,IAAK,KACH,OAAOZ,EAASC,cAAcW,EAAQ,EAAG,CAAEyH,KAAM,UAEnD,IAAK,MACH,OAAOrI,EAASY,MAAMA,EAAO,CAC3BpC,MAAO,cACPmB,QAAS,eAGb,IAAK,QACH,OAAOK,EAASY,MAAMA,EAAO,CAC3BpC,MAAO,SACPmB,QAAS,eAIb,QACE,OAAOK,EAASY,MAAMA,EAAO,CAAEpC,MAAO,OAAQmB,QAAS,eAE7D,EAGAoJ,EAAG,SAAUnK,EAAMmE,EAAO/C,EAAU/N,GAClC,MAAM+W,EAAOhC,GAAQpI,EAAM3M,GAE3B,MAAc,OAAV8Q,EACK/C,EAASC,cAAc+I,EAAM,CAAEX,KAAM,SAGvClB,GAAgB6B,EAAMjG,EAAM1R,OACrC,EAGA4X,EAAG,SAAUrK,EAAMmE,EAAO/C,GACxB,MAAMkJ,EAAUxC,GAAW9H,GAE3B,MAAc,OAAVmE,EACK/C,EAASC,cAAciJ,EAAS,CAAEb,KAAM,SAG1ClB,GAAgB+B,EAASnG,EAAM1R,OACxC,EAGAmG,EAAG,SAAUoH,EAAMmE,EAAO/C,GACxB,MAAc,OAAV+C,EACK/C,EAASC,cAAcrB,EAAK8F,UAAW,CAAE2D,KAAM,SAGjDd,GAAgB/P,EAAEoH,EAAMmE,EACjC,EAGAoG,EAAG,SAAUvK,EAAMmE,EAAO/C,GACxB,MAAMoJ,EAAYnE,GAAarG,GAE/B,MAAc,OAAVmE,EACK/C,EAASC,cAAcmJ,EAAW,CAAEf,KAAM,cAG5ClB,GAAgBiC,EAAWrG,EAAM1R,OAC1C,EAGAgY,EAAG,SAAUzK,EAAMmE,EAAO/C,GACxB,MAAMsJ,EAAY1K,EAAKmH,SACvB,OAAQhD,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAO/C,EAASa,IAAIyI,EAAW,CAC7B9K,MAAO,cACPmB,QAAS,eAGb,IAAK,QACH,OAAOK,EAASa,IAAIyI,EAAW,CAC7B9K,MAAO,SACPmB,QAAS,eAGb,IAAK,SACH,OAAOK,EAASa,IAAIyI,EAAW,CAC7B9K,MAAO,QACPmB,QAAS,eAIb,QACE,OAAOK,EAASa,IAAIyI,EAAW,CAC7B9K,MAAO,OACPmB,QAAS,eAGjB,EAGAhK,EAAG,SAAUiJ,EAAMmE,EAAO/C,EAAU/N,GAClC,MAAMqX,EAAY1K,EAAKmH,SACjBwD,GAAkBD,EAAYrX,EAAQqR,aAAe,GAAK,GAAK,EACrE,OAAQP,GAEN,IAAK,IACH,OAAO7Q,OAAOqX,GAEhB,IAAK,KACH,OAAOpC,GAAgBoC,EAAgB,GAEzC,IAAK,KACH,OAAOvJ,EAASC,cAAcsJ,EAAgB,CAAElB,KAAM,QACxD,IAAK,MACH,OAAOrI,EAASa,IAAIyI,EAAW,CAC7B9K,MAAO,cACPmB,QAAS,eAGb,IAAK,QACH,OAAOK,EAASa,IAAIyI,EAAW,CAC7B9K,MAAO,SACPmB,QAAS,eAGb,IAAK,SACH,OAAOK,EAASa,IAAIyI,EAAW,CAC7B9K,MAAO,QACPmB,QAAS,eAIb,QACE,OAAOK,EAASa,IAAIyI,EAAW,CAC7B9K,MAAO,OACPmB,QAAS,eAGjB,EAGA6J,EAAG,SAAU5K,EAAMmE,EAAO/C,EAAU/N,GAClC,MAAMqX,EAAY1K,EAAKmH,SACjBwD,GAAkBD,EAAYrX,EAAQqR,aAAe,GAAK,GAAK,EACrE,OAAQP,GAEN,IAAK,IACH,OAAO7Q,OAAOqX,GAEhB,IAAK,KACH,OAAOpC,GAAgBoC,EAAgBxG,EAAM1R,QAE/C,IAAK,KACH,OAAO2O,EAASC,cAAcsJ,EAAgB,CAAElB,KAAM,QACxD,IAAK,MACH,OAAOrI,EAASa,IAAIyI,EAAW,CAC7B9K,MAAO,cACPmB,QAAS,eAGb,IAAK,QACH,OAAOK,EAASa,IAAIyI,EAAW,CAC7B9K,MAAO,SACPmB,QAAS,eAGb,IAAK,SACH,OAAOK,EAASa,IAAIyI,EAAW,CAC7B9K,MAAO,QACPmB,QAAS,eAIb,QACE,OAAOK,EAASa,IAAIyI,EAAW,CAC7B9K,MAAO,OACPmB,QAAS,eAGjB,EAGAjP,EAAG,SAAUkO,EAAMmE,EAAO/C,GACxB,MAAMsJ,EAAY1K,EAAKmH,SACjB0D,EAA6B,IAAdH,EAAkB,EAAIA,EAC3C,OAAQvG,GAEN,IAAK,IACH,OAAO7Q,OAAOuX,GAEhB,IAAK,KACH,OAAOtC,GAAgBsC,EAAc1G,EAAM1R,QAE7C,IAAK,KACH,OAAO2O,EAASC,cAAcwJ,EAAc,CAAEpB,KAAM,QAEtD,IAAK,MACH,OAAOrI,EAASa,IAAIyI,EAAW,CAC7B9K,MAAO,cACPmB,QAAS,eAGb,IAAK,QACH,OAAOK,EAASa,IAAIyI,EAAW,CAC7B9K,MAAO,SACPmB,QAAS,eAGb,IAAK,SACH,OAAOK,EAASa,IAAIyI,EAAW,CAC7B9K,MAAO,QACPmB,QAAS,eAIb,QACE,OAAOK,EAASa,IAAIyI,EAAW,CAC7B9K,MAAO,OACPmB,QAAS,eAGjB,EAGAlI,EAAG,SAAUmH,EAAMmE,EAAO/C,GACxB,MACM2H,EADQ/I,EAAK+F,WACgB,IAAM,EAAI,KAAO,KAEpD,OAAQ5B,GACN,IAAK,IACL,IAAK,KACH,OAAO/C,EAASc,UAAU6G,EAAoB,CAC5CnJ,MAAO,cACPmB,QAAS,eAEb,IAAK,MACH,OAAOK,EACJc,UAAU6G,EAAoB,CAC7BnJ,MAAO,cACPmB,QAAS,eAEV+J,cACL,IAAK,QACH,OAAO1J,EAASc,UAAU6G,EAAoB,CAC5CnJ,MAAO,SACPmB,QAAS,eAGb,QACE,OAAOK,EAASc,UAAU6G,EAAoB,CAC5CnJ,MAAO,OACPmB,QAAS,eAGjB,EAGAzG,EAAG,SAAU0F,EAAMmE,EAAO/C,GACxB,MAAM2J,EAAQ/K,EAAK+F,WACnB,IAAIgD,EASJ,OAPEA,EADY,KAAVgC,EAjfA,OAmfiB,IAAVA,EApfH,WAufeA,EAAQ,IAAM,EAAI,KAAO,KAGxC5G,GACN,IAAK,IACL,IAAK,KACH,OAAO/C,EAASc,UAAU6G,EAAoB,CAC5CnJ,MAAO,cACPmB,QAAS,eAEb,IAAK,MACH,OAAOK,EACJc,UAAU6G,EAAoB,CAC7BnJ,MAAO,cACPmB,QAAS,eAEV+J,cACL,IAAK,QACH,OAAO1J,EAASc,UAAU6G,EAAoB,CAC5CnJ,MAAO,SACPmB,QAAS,eAGb,QACE,OAAOK,EAASc,UAAU6G,EAAoB,CAC5CnJ,MAAO,OACPmB,QAAS,eAGjB,EAGAiK,EAAG,SAAUhL,EAAMmE,EAAO/C,GACxB,MAAM2J,EAAQ/K,EAAK+F,WACnB,IAAIgD,EAWJ,OATEA,EADEgC,GAAS,GAthBN,UAwhBIA,GAAS,GAzhBX,YA2hBEA,GAAS,EA5hBb,UAGF,QA+hBG5G,GACN,IAAK,IACL,IAAK,KACL,IAAK,MACH,OAAO/C,EAASc,UAAU6G,EAAoB,CAC5CnJ,MAAO,cACPmB,QAAS,eAEb,IAAK,QACH,OAAOK,EAASc,UAAU6G,EAAoB,CAC5CnJ,MAAO,SACPmB,QAAS,eAGb,QACE,OAAOK,EAASc,UAAU6G,EAAoB,CAC5CnJ,MAAO,OACPmB,QAAS,eAGjB,EAGAiI,EAAG,SAAUhJ,EAAMmE,EAAO/C,GACxB,GAAc,OAAV+C,EAAgB,CAClB,IAAI4G,EAAQ/K,EAAK+F,WAAa,GAE9B,OADc,IAAVgF,IAAaA,EAAQ,IAClB3J,EAASC,cAAc0J,EAAO,CAAEtB,KAAM,QAC/C,CAEA,OAAOd,GAAgBK,EAAEhJ,EAAMmE,EACjC,EAGA8E,EAAG,SAAUjJ,EAAMmE,EAAO/C,GACxB,MAAc,OAAV+C,EACK/C,EAASC,cAAcrB,EAAK+F,WAAY,CAAE0D,KAAM,SAGlDd,GAAgBM,EAAEjJ,EAAMmE,EACjC,EAGA8G,EAAG,SAAUjL,EAAMmE,EAAO/C,GACxB,MAAM2J,EAAQ/K,EAAK+F,WAAa,GAEhC,MAAc,OAAV5B,EACK/C,EAASC,cAAc0J,EAAO,CAAEtB,KAAM,SAGxClB,GAAgBwC,EAAO5G,EAAM1R,OACtC,EAGAS,EAAG,SAAU8M,EAAMmE,EAAO/C,GACxB,IAAI2J,EAAQ/K,EAAK+F,WAGjB,OAFc,IAAVgF,IAAaA,EAAQ,IAEX,OAAV5G,EACK/C,EAASC,cAAc0J,EAAO,CAAEtB,KAAM,SAGxClB,GAAgBwC,EAAO5G,EAAM1R,OACtC,EAGAgG,EAAG,SAAUuH,EAAMmE,EAAO/C,GACxB,MAAc,OAAV+C,EACK/C,EAASC,cAAcrB,EAAKgG,aAAc,CAAEyD,KAAM,WAGpDd,GAAgBlQ,EAAEuH,EAAMmE,EACjC,EAGA+E,EAAG,SAAUlJ,EAAMmE,EAAO/C,GACxB,MAAc,OAAV+C,EACK/C,EAASC,cAAcrB,EAAKiG,aAAc,CAAEwD,KAAM,WAGpDd,GAAgBO,EAAElJ,EAAMmE,EACjC,EAGAgF,EAAG,SAAUnJ,EAAMmE,GACjB,OAAOwE,GAAgBQ,EAAEnJ,EAAMmE,EACjC,EAGA+G,EAAG,SAAUlL,EAAMmE,EAAOgH,GACxB,MAAMC,EAAiBpL,EAAKqL,oBAE5B,GAAuB,IAAnBD,EACF,MAAO,IAGT,OAAQjH,GAEN,IAAK,IACH,OAAOmH,GAAkCF,GAK3C,IAAK,OACL,IAAK,KACH,OAAOG,GAAeH,GAOxB,QACE,OAAOG,GAAeH,EAAgB,KAE5C,EAGAI,EAAG,SAAUxL,EAAMmE,EAAOgH,GACxB,MAAMC,EAAiBpL,EAAKqL,oBAE5B,OAAQlH,GAEN,IAAK,IACH,OAAOmH,GAAkCF,GAK3C,IAAK,OACL,IAAK,KACH,OAAOG,GAAeH,GAOxB,QACE,OAAOG,GAAeH,EAAgB,KAE5C,EAGAK,EAAG,SAAUzL,EAAMmE,EAAOgH,GACxB,MAAMC,EAAiBpL,EAAKqL,oBAE5B,OAAQlH,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,MAAO,MAAQuH,GAAoBN,EAAgB,KAGrD,QACE,MAAO,MAAQG,GAAeH,EAAgB,KAEpD,EAGAO,EAAG,SAAU3L,EAAMmE,EAAOgH,GACxB,MAAMC,EAAiBpL,EAAKqL,oBAE5B,OAAQlH,GAEN,IAAK,IACL,IAAK,KACL,IAAK,MACH,MAAO,MAAQuH,GAAoBN,EAAgB,KAGrD,QACE,MAAO,MAAQG,GAAeH,EAAgB,KAEpD,EAGAQ,EAAG,SAAU5L,EAAMmE,EAAOgH,GAExB,OAAO5C,GADWzD,KAAKwE,MAAMtJ,EAAK6H,UAAY,KACZ1D,EAAM1R,OAC1C,EAGAoZ,EAAG,SAAU7L,EAAMmE,EAAOgH,GAExB,OAAO5C,GADWvI,EAAK6H,UACW1D,EAAM1R,OAC1C,GAGF,SAASiZ,GAAoBI,EAAQC,EAAY,IAC/C,MAAMC,EAAOF,EAAS,EAAI,IAAM,IAC1BG,EAAYnH,KAAK2D,IAAIqD,GACrBf,EAAQjG,KAAKwE,MAAM2C,EAAY,IAC/BC,EAAUD,EAAY,GAC5B,OAAgB,IAAZC,EACKF,EAAO1Y,OAAOyX,GAEhBiB,EAAO1Y,OAAOyX,GAASgB,EAAYxD,GAAgB2D,EAAS,EACrE,CAEA,SAASZ,GAAkCQ,EAAQC,GACjD,OAAID,EAAS,IAAO,GACLA,EAAS,EAAI,IAAM,KAClBvD,GAAgBzD,KAAK2D,IAAIqD,GAAU,GAAI,GAEhDP,GAAeO,EAAQC,EAChC,CAEA,SAASR,GAAeO,EAAQC,EAAY,IAC1C,MAAMC,EAAOF,EAAS,EAAI,IAAM,IAC1BG,EAAYnH,KAAK2D,IAAIqD,GAG3B,OAAOE,EAFOzD,GAAgBzD,KAAKwE,MAAM2C,EAAY,IAAK,GAEpCF,EADNxD,GAAgB0D,EAAY,GAAI,EAElD,CCvwBA,MAAME,GAAoB,CAACC,EAASrM,KAClC,OAAQqM,GACN,IAAK,IACH,OAAOrM,EAAWC,KAAK,CAAEJ,MAAO,UAClC,IAAK,KACH,OAAOG,EAAWC,KAAK,CAAEJ,MAAO,WAClC,IAAK,MACH,OAAOG,EAAWC,KAAK,CAAEJ,MAAO,SAElC,QACE,OAAOG,EAAWC,KAAK,CAAEJ,MAAO,SACpC,EAGIyM,GAAoB,CAACD,EAASrM,KAClC,OAAQqM,GACN,IAAK,IACH,OAAOrM,EAAWM,KAAK,CAAET,MAAO,UAClC,IAAK,KACH,OAAOG,EAAWM,KAAK,CAAET,MAAO,WAClC,IAAK,MACH,OAAOG,EAAWM,KAAK,CAAET,MAAO,SAElC,QACE,OAAOG,EAAWM,KAAK,CAAET,MAAO,SACpC,EAmCW0M,GAAiB,CAC5BjS,EAAGgS,GACHE,EAlC4B,CAACH,EAASrM,KACtC,MAAMiD,EAAcoJ,EAAQnJ,MAAM,cAAgB,GAC5CuJ,EAAcxJ,EAAY,GAC1ByJ,EAAczJ,EAAY,GAEhC,IAAKyJ,EACH,OAAON,GAAkBC,EAASrM,GAGpC,IAAI2M,EAEJ,OAAQF,GACN,IAAK,IACHE,EAAiB3M,EAAWO,SAAS,CAAEV,MAAO,UAC9C,MACF,IAAK,KACH8M,EAAiB3M,EAAWO,SAAS,CAAEV,MAAO,WAC9C,MACF,IAAK,MACH8M,EAAiB3M,EAAWO,SAAS,CAAEV,MAAO,SAC9C,MAEF,QACE8M,EAAiB3M,EAAWO,SAAS,CAAEV,MAAO,SAIlD,OAAO8M,EACJ7Y,QAAQ,WAAYsY,GAAkBK,EAAazM,IACnDlM,QAAQ,WAAYwY,GAAkBI,EAAa1M,GAAY,GCzD9D4M,GAAmB,OACnBC,GAAkB,OAElBC,GAAc,CAAC,IAAK,KAAM,KAAM,QCiC/B,SAASC,GAAQ9M,GACtB,KCLqBhC,EDKTgC,ECHVhC,aAAiBqH,MACC,iBAAVrH,GACoC,kBAA1C/E,OAAOQ,UAAUvH,SAASyH,KAAKqE,IDCE,iBAATgC,GAC1B,OAAO,ECNJ,IAAgBhC,EDQrB,MAAMwG,EAAQU,EAAOlF,GACrB,OAAQ+M,MAAMtL,OAAO+C,GACvB,CAGA,MElBMwI,GACJ,wDAIIC,GAA6B,oCAE7BC,GAAsB,eACtBC,GAAoB,MACpBC,GAAgC,WAsS/B,SAASC,GAAOrN,EAAMsN,EAAWja,GACtC,MAAMuR,EAAiBC,IACjBqC,EAAS7T,GAAS6T,QAAUtC,EAAesC,QAAU,EAErDvC,EACJtR,GAASsR,uBACTtR,GAAS6T,QAAQ7T,SAASsR,uBAC1BC,EAAeD,uBACfC,EAAesC,QAAQ7T,SAASsR,uBAChC,EAEID,EACJrR,GAASqR,cACTrR,GAAS6T,QAAQ7T,SAASqR,cAC1BE,EAAeF,cACfE,EAAesC,QAAQ7T,SAASqR,cAChC,EAEI6I,EAAerI,EAAOlF,GAE5B,IAAK8M,GAAQS,GACX,MAAM,IAAIC,WAAW,sBAGvB,IAAIC,EAAQH,EACTrK,MAAMgK,IACN7a,KAAKsb,IACJ,MAAMC,EAAiBD,EAAU,GACjC,MAAuB,MAAnBC,GAA6C,MAAnBA,GAErBC,EADetB,GAAeqB,IAChBD,EAAWxG,EAAOnH,YAElC2N,CAAS,IAEjBhb,KAAK,IACLuQ,MAAM+J,IACN5a,KAAKsb,IAEJ,GAAkB,OAAdA,EACF,MAAO,CAAEG,SAAS,EAAO7P,MAAO,KAGlC,MAAM2P,EAAiBD,EAAU,GACjC,GAAuB,MAAnBC,EACF,MAAO,CAAEE,SAAS,EAAO7P,MAAO8P,GAAmBJ,IAGrD,GAAInE,GAAWoE,GACb,MAAO,CAAEE,SAAS,EAAM7P,MAAO0P,GAGjC,GAAIC,EAAe1K,MAAMmK,IACvB,MAAM,IAAII,WACR,iEACEG,EACA,KAIN,MAAO,CAAEE,SAAS,EAAO7P,MAAO0P,EAAW,IAI3CxG,EAAO9F,SAAS2M,eAClBN,EAAQvG,EAAO9F,SAAS2M,aAAaR,EAAcE,IAGrD,MAAMO,EAAmB,CACvBrJ,wBACAD,eACAwC,UAGF,OAAOuG,EACJrb,KAAK6b,IACJ,IAAKA,EAAKJ,QAAS,OAAOI,EAAKjQ,MAE/B,MAAMmG,EAAQ8J,EAAKjQ,MAYnB,QATI3K,GAAS6a,6BHjZZ,SAAkC/J,GACvC,OAAOyI,GAAgBnZ,KAAK0Q,EAC9B,CGgZUgK,CAAyBhK,KACzB9Q,GAAS+a,8BHvZZ,SAAmCjK,GACxC,OAAOwI,GAAiBlZ,KAAK0Q,EAC/B,CGsZUkK,CAA0BlK,KHhZ7B,SAAmCA,EAAOkJ,EAAQ3P,GACvD,MAAM4Q,EAKR,SAAiBnK,EAAOkJ,EAAQ3P,GAC9B,MAAM6Q,EAAuB,MAAbpK,EAAM,GAAa,QAAU,oBAC7C,MAAO,SAASA,EAAM2G,gCAAgC3G,aAAiBkJ,uBAA4BkB,oBAA0B7Q,kFAC/H,CARmB8Q,CAAQrK,EAAOkJ,EAAQ3P,GAExC,GADA+Q,QAAQC,KAAKJ,GACTzB,GAAY8B,SAASxK,GAAQ,MAAM,IAAIqJ,WAAWc,EACxD,CG8YQM,CAA0BzK,EAAOmJ,EAAWha,OAAO0M,KAI9C6O,EADWtF,GAAWpF,EAAM,KAClBoJ,EAAcpJ,EAAO+C,EAAO9F,SAAU4M,EAAiB,IAEzEtb,KAAK,GACV,CAEA,SAASob,GAAmBpQ,GAC1B,MAAMoR,EAAUpR,EAAMuF,MAAMiK,IAE5B,OAAK4B,EAIEA,EAAQ,GAAGjb,QAAQsZ,GAAmB,KAHpCzP,CAIX,CAGA,MCjbaqR,GAAa,SAAS/O,GAC/B,OAAOqN,GAAOrN,EAAM,sBACxB,ECCMgP,GAAW,SAASlU,GACtB,OAAO1B,GAAI0B,GAAOkD,KACtB,EAEa5E,GAAM,SAAS0B,GACxB,OAAO,IAAIF,EAAME,EAAM5I,YAAYkH,KACvC,EAEa6V,GAAU,WACnB,MAAMC,EAAW,IAAMF,GAAS,gBAC1BG,EAAU,IAAMH,GAAS,eACzBI,EAAa,IAAML,GAAWC,GAAS,oBACvCK,EAAgB,WAClB,MAAO,CAAEC,MAAOJ,IAAYK,YAAaJ,IAAWK,QAASJ,IACjE,EAQA,MAAO,CAAEF,WAAUC,UAASC,aAAYC,gBAAeI,iBAP9B,WACrB,IAAIvO,EAASmO,IAIb,OAHAnO,EAAOwO,MAAQ,GACfxO,EAAOyO,MAAQ,GACfzO,EAAO0O,QAAUb,GAAW,IAAI1J,MACzBnE,CACX,EAEH,CAfsB,GAiBjB2O,GAAgB,SAASC,GAC3B,OAAOd,GAAS,GAAGc,gCACvB,EAEaC,GAKgB,KACd,CACHC,KANchB,GAAS,cAOvBQ,QANiBT,GAAWC,GAAS,mBAOrCiB,SANkBJ,GAAc,uBAOhCK,SANuB/b,KAAKgc,MAAMN,GAAc,2BCfrD,SAASO,GAAQpQ,EAAMqQ,GAC5B,MAAM7L,EAAQU,EAAOlF,GACrB,OAAI+M,MAAMsD,GAAgBjK,GAAcpG,EAAMsF,KACzC+K,GAIL7L,EAAM6C,QAAQ7C,EAAMsB,UAAYuK,GACzB7L,GAHEA,CAIX,CCLO,SAAS8L,GAAUtQ,EAAMqQ,GAC9B,MAAM7L,EAAQU,EAAOlF,GACrB,GAAI+M,MAAMsD,GAAS,OAAOjK,GAAcpG,EAAMsF,KAC9C,IAAK+K,EAEH,OAAO7L,EAET,MAAM+L,EAAa/L,EAAMsB,UAUnB0K,EAAoBpK,GAAcpG,EAAMwE,EAAMqD,WAGpD,OAFA2I,EAAkBC,SAASjM,EAAMqB,WAAawK,EAAS,EAAG,GAEtDE,GADgBC,EAAkB1K,UAI7B0K,GASPhM,EAAMuC,YACJyJ,EAAkB5K,cAClB4K,EAAkB3K,WAClB0K,GAEK/L,EAEX,CC9De,SAASkM,KACpB,MAAMC,EAAU5B,GAAW,IAAI1J,MACzBuL,EAAe7B,GCuClB,SAAa/O,EAAM6Q,GACxB,MAAM,MACJC,EAAQ,EAAC,OACTC,EAAS,EAAC,MACVC,EAAQ,EAAC,KACTC,EAAO,EAAC,MACRlG,EAAQ,EAAC,QACTmB,EAAU,EAAC,QACXgF,EAAU,GACRL,EAGErM,EAAQU,EAAOlF,GACfmR,EACJJ,GAAUD,EAAQR,GAAU9L,EAAOuM,EAAiB,GAARD,GAActM,EAStD4M,EAAyB,KADVF,EAAyB,IADzBhF,EAAkB,GAARnB,IAK/B,OAFkB3E,GAAcpG,GAN9BiR,GAAQD,EAAQZ,GAAQe,EAAgBF,EAAe,EAARD,GAAaG,GAMXtJ,UAAYuJ,EAGjE,CDlEoCC,CAAIV,EAAS,CAAEM,KAAM,KACrD,MAAO,CACH,CACI3B,MAAO,aACPC,YAAa,wBACbG,MAAO,CACH,CACIM,KAAM,gBACNR,QAASoB,EACTX,SAAU,OACVC,UAAU,GAEd,CACIF,KAAM,iBACNR,QAASoB,EACTX,SAAU,OACVC,UAAU,GAEd,CACIF,KAAM,iBACNR,QAASoB,EACTX,SAAU,OACVC,UAAU,IAGlBV,QAASoB,EACTjB,MAAO,+DACPC,QAASe,GAGrB,CEQO,SAASW,GAAItR,EAAM6Q,GACxB,MAAM,MACJC,EAAQ,EAAC,OACTC,EAAS,EAAC,MACVC,EAAQ,EAAC,KACTC,EAAO,EAAC,MACRlG,EAAQ,EAAC,QACTmB,EAAU,EAAC,QACXgF,EAAU,GACRL,EAWEU,EAAyB,KADVL,EAAyB,IADzBhF,EAAkB,GAARnB,IAK/B,OAFkB3E,GAAcpG,EC3C3B,SAAiBA,EAAMqQ,GAC5B,OAAOD,GAAQpQ,GAAOqQ,EACxB,CDmC0BmB,CErCnB,SAAmBxR,EAAMqQ,GAC9B,OAAOC,GAAUtQ,GAAOqQ,EAC1B,CFgC4BoB,CAAUzR,EAAM+Q,EAAiB,GAARD,GAGAG,EAAe,EAARD,GAMJnJ,UAAY0J,EAGpE,CAGA,MGlEMG,GAAapf,GAAYoJ,EAAa,MAAO,GAAGpJ,KAkChDqf,GAAc,SAASC,GACzBvV,IAAaN,SAAS8V,IACdA,EAAIhgB,KAAO+f,EACXC,EAAIzW,UAAY,iBAGhByW,EAAIzW,UAAY,KACpB,GAER,EAEM9I,GAAUiK,IA4BHuV,GAAY,WACrB,MAAMC,EAAWC,KACjBL,GAAY,aACZM,GAAUF,EACd,EAEMG,GAAW,WACbD,GAAUE,KACd,EAEMC,GAAY,WACdH,GAAUI,KACd,EAEMC,GAAW,WACbL,GAAUM,KACd,EAEMC,GAAU,WACZP,GAAUQ,KACd,EAEMR,GAAY,SAASF,G9C2CvBxV,IAAamW,UAAY,G8CzCzBX,EAAShW,SAAS4W,IACd/W,EAAStJ,GAnDS,SAASqgB,GAC/B,MAAMC,EAAeC,GAAgBF,EAAQrD,OACvCwD,EAActX,EAAU,gBACxBuX,EAAYvX,EAAU,cACtBwX,EAAe7X,EAAW,gBAAiBwX,EAAQrD,MAAO,MAC1D2D,EAAevX,EAAa,yBAAyBkX,IAAgB,IAC3E3W,GAAY,IAAMiX,GAAiB,wCAAyCP,EAAQrD,mBAChF,KAAQ6D,GAAoB1c,SAASC,cAAc,mBAAmBkc,KAAe,KAAMK,GAC/FrX,EAASmX,EAAWC,EAAcC,GAClC,MAAMG,EAAY5X,EAAU,cACtB6X,EAAclY,EAAW,eAAgBwX,EAAQpD,YAAa,KAC9D+D,EAAgBnY,EAAW,kBAAmB,KAAKkS,GAAOsF,EAAQ/C,QAAS,gBAAiB,QAClGhU,EAASyX,EAAaC,GACtB,MAAMC,EAAU/X,EAAU,gBACpBgY,EAAa9X,EAAa,oBAAqB,IACrDO,GAAY,IAAMwX,GAAgBd,EAAQrD,QAAQkE,GAClD,MAAME,EAAgBhY,EAAa,mBAAoB,IACvDO,GAAY,IAAMiX,GAAiB,8CAA+CS,KAAkBD,GACpG,MAAME,EAAclY,EAAa,gBAAiB,IAKlD,OAJAO,GAAY,IAAM4X,GAAgBlB,EAAQrD,QAAQsE,GAClDhY,EAAS2X,EAASK,EAAaF,EAAeF,GAC9C5X,EAASwX,EAAWC,EAAaE,GACjC3X,EAASkX,EAAaC,EAAWK,GAC1BN,CACX,CA2B0BgB,CAAkBnB,GAAS,GAErD,ECpFaF,GAAc,WACvB,OAAOte,KAAKgc,MAAM4D,aAAaC,QAAQ,YAC3C,EAMMC,GAAc,SAASC,GACzBH,aAAaI,QAAQ,WAAYhgB,KAAKC,UAAU8f,GACpD,EAEaE,GAAgB,SAAS/V,GAClCA,EAAMC,iBACN,MAAM+V,EAAgBpF,GAAQQ,mBAC9B,IAAK6E,GAAcD,EAAc/E,OAAQ,CACrC,MAAMiF,EAAqB9B,KAC3B8B,EAAmB5iB,KAAK0iB,GACxBJ,GAAYM,GACZzC,KACAjV,GACJ,CACJ,EAEMyX,GAAgB,SAAShF,GAC3B,MAAMyC,EAAWU,KACjB,IAAI+B,GAAM,EAMV,OALAzC,EAAS3f,KAAKugB,IACNA,EAAQrD,QAAUA,IAClBkF,GAAM,EACV,IAEGA,CACX,EAaMC,GAAY,SAASC,EAAWC,EAAWC,GAC7C,OAAOvP,KAAK8K,MAAMyE,IAAmBvP,KAAK8K,MAAMwE,IAActP,KAAK8K,MAAMyE,IAAmBvP,KAAK8K,MAAMuE,EAC3G,EAEa1C,GAAmB,WAC5B,MAAMD,EAAWU,KACX9B,EAAU,IAAItL,KAIpB,OAHsB0M,EAAS8C,QAAQlC,GAC5B8B,GAAU9D,EAASW,GAAIX,EAAS,CAAEM,KAAM,IAAM0B,EAAQ/C,UAGrE,EAEauC,GAAkB,WAC3B,MAAMJ,EAAWU,KACX9B,EAAU,IAAItL,KAIpB,OAHqB0M,EAAS8C,QAAQlC,GAC3B8B,GAAU9D,EAASW,GAAIX,EAAS,CAAEK,MAAO,IAAM2B,EAAQ/C,UAGtE,EAEayC,GAAmB,WAC5B,MAAMN,EAAWU,KACX9B,EAAU,IAAItL,KAIpB,OAHsB0M,EAAS8C,QAAQlC,GAC5B8B,GAAU9D,EAASW,GAAIX,EAAS,CAAEI,OAAQ,IAAM4B,EAAQ/C,UAGvE,EAEa2C,GAAkB,WAC3B,MAAMR,EAAWU,KACX9B,EAAU,IAAItL,KAIpB,OAHqB0M,EAAS8C,QAAQlC,GAC3B8B,GAAU9D,EAASW,GAAIX,EAAS,CAAEG,MAAO,IAAM6B,EAAQ/C,UAGtE,EAQaiD,GAAkB,SAASG,GACpC,MAAMjB,EAAWU,KACjB,IAAI+B,EAAM,KAMV,OALAzC,EAAShW,SAAQ,CAAC4W,EAAS3c,KACnB2c,EAAQrD,QAAU0D,IAClBwB,EAAMxe,EACV,IAEGwe,CACX,EAEarB,GAAsB,SAASF,GACxC,MAAMD,EAAehY,MAAMC,KAAKgY,EAAapb,WAAWid,uBAAuB,kBAAkB,GAAGvZ,YACpGkT,QAAQsG,IAAI9B,EAAapb,YACrByc,GAActB,KApBO,SAASJ,GAClC,MAAMb,EAAWU,KACjBV,EAASvc,OAAOod,EAAc,GAC9BqB,GAAYlC,EAChB,CAiBQiD,CAAcnC,GAAgBG,IAC9BlB,KAER,EAYMmD,GAAe,SAASjF,EAAMgD,GAEhC,IAAIhd,EAMJ,OAPgByc,KAAcI,GAAgBG,IAEtCtD,MAAMtd,KAAI,CAAC8iB,EAAYC,KACvBD,EAAWlF,OAASA,IACpBha,EAAQmf,EACZ,IAEGnf,CACX,EC3IMof,GAAcvX,IAEdwX,GAAgB,SAASja,EAAW8B,GACtC,MAAMJ,EhDgCkB,SAAS1B,EAAW8B,GAC5C,MAAMJ,EAASrG,SAASW,cAAc,UAGtC,OAFA0F,EAAO1B,UAAYA,EACnB0B,EAAOjL,GAAKqL,EACLJ,CACX,CgDrCmBwY,CAAala,EAAW8B,GACjCqY,EAAe7Z,EAAa,aAAc,KAGhD,OAFAO,EAAYY,EAAc0Y,GAC1B3Z,EAASkB,EAAQyY,GACVzY,CACX,EAEaoW,GAAmB,SAASsC,EAAUC,GAC/C,MAAM3Y,EAASuY,GAAc,eACvB/Z,EAAOH,EAAW,WAAY,GAAGqa,IAAY,KAC7CE,EAAUla,EAAU,WACpBma,EAAYja,EAAa,qBAAsB,OAC/Cka,EAAWla,EAAa,oBAAqB,MACnDO,EAAYe,EAAa2Y,EAAWC,GACpC3Z,EAAYwZ,EAAUE,GACtB/Z,EAAS8Z,EAASC,EAAWC,GAC7Bha,EAASkB,EAAQxB,EAAMoa,GACvB9Z,EAASwZ,GAAatY,GACtBH,GACJ,EAEakZ,GAAoB,WAC7B,MAAMC,EAAgBC,KACtBna,EAASwZ,GAAaU,GACtBnZ,GACJ,EAEMoZ,GAAsB,WACxB,MAAMjZ,EAASuY,GAAc,UAAW,eAClCjY,EAAOH,EAAW,WAAY,eAC9B3B,EAAOH,EAAW,aAAc,kBAAmB,MACnD6a,EAAaxa,EAAU,qBACvBya,EAAa5Y,EAAY,SAAU,cAAe,iBAClD6Y,EhD8DyB,WAC/B,MAAMxY,EAAQF,EgD/DyB,OAAQ,cAAe,0BhDiE9D,OADAE,EAAMjG,aAAa,WAAY,IACxBiG,CACX,CgDlEuByY,GACnBva,EAASoa,EAAYC,EAAYC,GACjC,MAAME,EAAY5a,EAAU,oBACtB6a,EAAYhZ,EAAY,eAAgB,aAAc,iBACtDiZ,EAAY9Y,EAAY,OAAQ,aAAc,iBACpD+Y,GAAYD,GACZ1a,EAASwa,EAAWC,EAAWC,GAC/B,MAAME,EAAehb,EAAU,wBACzBib,EAAepZ,EAAY,YAAa,iBAAkB,iBAC1DmS,EAAUhS,EAAY,iBAAkB,iBAAkB,iBAChE+Y,GAAY/G,GACZ5T,EAAS4a,EAAcC,EAAcjH,GACrC,MAAM5R,EAAeD,EAAmB,MAAO,6BAI/C,OAHAQ,EAAaiW,GAAehX,GAC5BxB,EAASwB,EAAM9B,EAAM0a,EAAYI,EAAWI,EAAc5Y,GAC1DhC,EAASkB,EAAQM,GACVN,CACX,EAEa2W,GAAkB,SAAST,GACpC,MAAM0D,EAAcC,GAAkB9D,GAAgBG,IACtDpX,EAASwZ,GAAasB,GACtB/Z,GACJ,EAUM4Z,GAAc,YAAYpa,GAC5BA,EAAS/J,KAAK+E,IACVA,EAAQM,aAAa,WAAY,GAAG,GAE5C,EAEMkf,GAAoB,SAAS/D,GAC/B,MAAMD,EAAUF,KAAcG,GACxB9V,EAASuY,GAAc,eAAgB,SAASzC,KAChDgE,EAAYpb,EAAU,mBACtBwX,EAAe7X,EAAW,eAAgB,GAAGwX,EAAQrD,QAAS,MAC9DuH,EhDqDsB,WAC5B,MAAMC,EAAargB,SAASW,cAAc,MAE1C,OADA0f,EAAW1b,UgDvDuB,YhDwD3B0b,CACX,CgDzDqBC,GACjBpE,EAAQjD,MAAMtd,KAAI,CAAC8iB,EAAYlf,KAC3B,MAAMga,EAAOkF,EAAWlF,KAClBgH,EAAmBxb,EAAU,kBAC7Byb,EAAezZ,EAAY,WAAY,SAvBxBlC,EAuB6C0U,EAtB/D1U,EAAKzH,QAAQ,OAAQ,KAAKiX,gBAsB8C,iBAvB/D,IAASxP,EAwBrB2b,EAAaC,QAAUhC,EAAWhF,SAClCjU,GAAY,MD8DO,SAASkb,EAAUnH,EAAMgD,GAChD,MAAMjB,EAAWU,KACjBV,EAASc,GAAgBG,IACpBtD,MAAMuF,GAAajF,EAAMgD,IACzB9C,SAAWiH,EAASD,QACzBjD,GAAYlC,EAChB,CCnEYqF,CAAYpc,MAAMC,KAAKxE,SAASyE,iBAAiB,kBAAkBlF,IAASga,EAAM2C,EAAQrD,MAAK,GAChG2H,GACH,MAAMI,EhDkDgB,SAASjc,EAAW9I,GAC9C,MAAMglB,EAAW7gB,SAASW,cAAc,MAGxC,OAFAkgB,EAASlc,UgDpD0B,OhDqDnCkc,EAAS/b,YAAcjJ,EAChBglB,CACX,CgDvDwBC,CAAe,EAAQvH,GACjCwH,EAAiBhc,EAAU,YAAY0Z,EAAWjF,qBAClDwH,EAActc,EAAW,gBAAiBkS,GAAO6H,EAAW1F,QAAS,cAAe,KACpFkI,EAAmBhc,EAAa,cAAe,IACrDO,GAAY,IA5BK,SAAS+T,EAAMgD,GACpCE,GAAiB,8CAA8C,ID2EzC,SAASlD,EAAMgD,GACrC,MAAMjB,EAAWU,KACjBV,EAASc,GAAgBG,IAAetD,MAAMla,OAAOyf,GAAajF,EAAMgD,GAAe,GACvFiB,GAAYlC,GACZ4F,GAAkB3E,EACtB,CChFyE4E,CAAW5H,EAAMgD,IAC1F,CA0B0B6E,CAAiB3C,EAAWlF,KAAM2C,EAAQrD,QAAQoI,GACpE9b,EAASob,EAAkBC,EAAcI,EAASG,EAAgBC,EAAaC,GAC/E9b,EAASib,EAAUG,EAAiB,IAExC,MAAMc,EAAStc,EAAU,sBACnBkY,EAAgBhY,EAAa,0BAA2B,IACxDqc,EAAc5c,EAAW,2BAA4B,mBAM3D,OALAc,EAAY0X,GAAiBD,EAAeqE,GAC5Cnc,EAASkc,EAAQpE,EAAeqE,GAChCnc,EAASib,EAAUiB,GACnBlc,EAASgb,EAAW5D,EAAc6D,GAClCjb,EAASkB,EAAQ8Z,GACV9Z,CACX,EAEa6W,GAAkB,WAC3B,MAAMqE,EAAcC,KACpBrc,EAASwZ,GAAa4C,GACtBrb,GACJ,EAEMub,GAAc,SAASC,MAAoBC,OAAsBC,IACnE,MAAMzB,EAAYpb,EAAU2c,EAAejmB,YACrCqL,EAAQF,EAAY+a,EAAgB,GAAIA,EAAgB,GAAIA,EAAgB,IAC5E1a,EAAQF,EAAY6a,EAAgB,GAAIA,EAAgB,GAAIA,EAAgB,IAGlF,OAFA9B,GAAY7Y,GACZ9B,EAASgb,EAAWrZ,EAAOG,GACpBkZ,CACX,EAEM0B,GAAoB,SAASta,EAAOD,EAAMb,EAAIqb,GAChD,MAAM3B,EAAYpb,EAAU,mBACtBgd,EAAc1a,EAAkBC,EAAMC,EAAO,QAASd,EAAI,gBAC1DK,EAAQF,EAAYkb,EAAcrb,EAAI,gBAE5C,OADAtB,EAASgb,EAAW4B,EAAajb,GAC1BqZ,CACX,EAEM6B,GAA4B,SAASza,EAAOD,EAAMb,EAAIqb,GACxD,MAAM3B,EAAYpb,EAAU,mBACtBgd,EAAc1a,EAAkBC,EAAMC,EAAO,QAASd,EAAI,gBAC1DK,EAAQF,EAAYkb,EAAcrb,EAAI,gBAG5C,OAFAqZ,GAAYiC,GACZ5c,EAASgb,EAAW4B,EAAajb,GAC1BqZ,CACX,EAEMqB,GAAoB,WACtB,MAAMnb,EAASuY,GAAc,kBAAmB,mBAC1CuB,EAAYpb,EAAU,sBACtBkd,EAAcvd,EAAW,eAAgB,eAAgB,MACzDiC,EAAOH,EAAW,gBAAiB,iBACnC0b,EAAWT,GAAY,kBAAmB,CAAC,QAAS,YAAa,gBACnE,CAAC,OAAQ,YAAa,uBACpB1I,EAAU0I,GAAY,kBAAmB,CAAC,YAAa,gBAAiB,gBAC1E,CAAC,OAAQ,gBAAiB,2BAExBU,EAAoBpd,EAAU,mBAC9Bqd,EAAgBxb,EAAY,YAAa,qBAAsB,gBAC/Dyb,EAA0B7a,EAAe,oBAC/C6a,EAAwBrhB,aAAa,KAAM,sBAC3C,MAAMshB,EAAcN,GAA0B,MAAO,gBAAiB,GAAI,OACpEO,EAAcV,GAAkB,SAAU,gBAAiB,GAAI,UAC/DW,EAAeX,GAAkB,OAAQ,gBAAiB,GAAI,QACpE1c,EAASkd,EAAyBC,EAAaC,EAAaC,GAC5Drd,EAASgd,EAAmBC,EAAeC,GAC3C,MAAMI,EAAoB1d,EAAU,mBAC9B2d,EAAgB9b,EAAY,YAAa,sBAAuB,gBAChE+b,EAA0Bnb,EAAe,oBAC/Cmb,EAAwB3hB,aAAa,KAAM,uBAC3C,MAAM4hB,EAAWZ,GAA0B,OAAQ,sBAAuB,GAAI,OACxEa,EAAUhB,GAAkB,QAAS,sBAAuB,GAAI,MACtE1c,EAASwd,EAAyBC,EAAUC,GAC5C1d,EAASsd,EAAmBC,EAAeC,GAC3C,MAAMxb,EAAeD,EAAmB,MAAO,wBAK/C,OAJA/B,EAASwB,EAAMub,EAAUnJ,EAASoJ,EAAmBM,EAAmBtb,GACxEO,GAAa,IDjDS,SAAS6U,GAC/B,MAAMjB,EAAWU,KACX4E,EAAUtH,MA/EC,SAASC,EAAMgD,GAChC,MAAML,EAAUF,KAAcI,GAAgBG,IAC9C,IAAIwB,GAAM,EAMV,OALA7B,EAAQjD,MAAMtd,KAAK8iB,IACXA,EAAWlF,OAASA,IACpBwE,GAAM,EACV,IAEGA,CACX,EAuES+E,CAAalC,EAAQrH,KAAMgD,KAC5BjB,EAASc,GAAgBG,IAAetD,MAAM/d,KAAK0lB,GACnDpD,GAAYlC,IAEhB4F,GAAkB3E,EACtB,CCyCuBwG,CAAWpgB,GAAI,+CAA+CmC,cAAc6B,GAC/FxB,EAASgb,EAAW8B,EAAatb,GACjCxB,EAASkB,EAAQ8Z,GACV9Z,CACX,EAEa6a,GAAoB,SAAS3E,GACtCnW,IACA4W,GAAgBT,EACpB,EAEaa,GAAkB,SAASb,GACpC,MAAMyG,EAAcC,GAAkB1G,GACtCpX,EAASwZ,GAAaqE,GACtB9c,GACJ,EAEM+c,GAAoB,SAAS1G,GAC/B,MAAMlW,EAASuY,GAAc,uBAAwB,wBAC/CuB,EAAYpb,EAAU,mBACtB8T,EAAQnU,EAAW,cAAe,iBAAkB,MACpDwU,EhD/BoB,WAC1B,MAAMgK,EAAWljB,SAASW,cAAc,YAMxC,OALAuiB,EAASliB,aAAa,QgD6BO,kBhD5B7BkiB,EAASliB,aAAa,KgD4ByB,kBhD3B/CkiB,EAASliB,aAAa,OgD2B2C,GhD3B9BvF,YACnCynB,EAASliB,aAAa,OgD0B8C,IhD1B9BvF,YACtCynB,EAASliB,aAAa,cgDyBkD,2ChDxBjEkiB,CACX,CgDuBkBC,GACdjK,EAAM3R,MVxJyB,SAASgV,GAExC,OADgBP,KAAcI,GAAgBG,IAC/BrD,KACnB,CUqJkBkK,CAAoB7G,GAClC,MAAM8G,EAAape,EAAa,iBAAkB,QAIlD,OAHAO,GAAY,IDrCS,SAAS+W,GAC9B,MAAMjB,EAAWU,KACX9C,ETzHoBX,GAAS,mBS0HnC+C,EAASc,GAAgBG,IAAerD,MAAQA,EAChDsE,GAAYlC,GACZlV,GACJ,CC+BsBkd,CAAU/G,IAAe8G,GAC3Cle,EAASgb,EAAWtH,EAAOK,EAAOmK,GAClCle,EAASkB,EAAQ8Z,GACV9Z,CACX,E,kCC3Me,SAASkd,KACpB,MAAMC,EAAS3d,IAET4d,EAAc1e,EAAU,YACxB2e,EjDGiB,SAAS/e,EAAWgf,GAC3C,MAAMC,EAAM5jB,SAASW,cAAc,OAInC,OAHAijB,EAAIngB,IAAMkgB,EACVC,EAAIC,IiDN8C,ejDOlDD,EAAIjf,UiDPqB,WjDQlBif,CACX,CiDTiBE,CAAY,EAAY,IAC/BjL,EAAQnU,EAAW,YAAa,UAAW,MACjDS,EAASse,EAAaC,EAAM7K,GAE5B,MAAMkL,EHMK,WACX,MAAMA,EAAOhf,EAAU,QACjBkF,EAAQgR,GAAU,SAClB+I,EAAW/I,GAAU,aACrBgJ,EAAYhJ,GAAU,cACtBiJ,EAAWjJ,GAAU,aACrBkJ,EAAUlJ,GAAU,OAS1B,OA7BW,YAAYvV,GACvBA,EAASJ,SAAS5E,IACdA,EAAQtF,GAAK,GAAGsF,EAAQoE,YAAYuP,iBAAiB3T,EAAQiE,WAAW,GAEhF,CAiBIyf,CAAOna,EAAO+Z,EAAUC,EAAWC,EAAUC,GAf/B,YAAYze,GAC1BA,EAASJ,SAAS5E,IACdA,EAAQiF,iBAAiB,SAAS,KAC9BuV,GAAYxa,EAAQtF,GAAG,GACzB,GAEV,CAUIipB,CAAUpa,EAAO+Z,EAAUC,EAAWC,EAAUC,GAChD3e,EAAY6V,GAAWpR,GACvBzE,EAAYiW,GAAUuI,GACtBxe,EAAYmW,GAAWsI,GACvBze,EAAYqW,GAAUqI,GACtB1e,EAAYuW,GAASoI,GACrBhf,EAAS4e,EAAM9Z,EAAO+Z,EAAUC,EAAWC,EAAUC,GAC9CJ,CACX,CGtBiBO,GAEPC,ECdStf,EAAa,cAAe,iBDe3CO,EAAY4Z,GAAmBmF,GAE/Bpf,EAASqe,EAAQC,EAAaM,EAAMQ,EACxC,CERAvkB,SAAS2F,iBAAiB,oBANH,YJGW,WAC9B,GAAyC,OAArC2X,aAAaC,QAAQ,YACrBD,aAAaI,QAAQ,WAAYhgB,KAAKC,UAAUsc,YAE/C,GAA6B,IAAzB+B,KAAchgB,OAAc,CACjC,MAAMsf,EAAWU,KACjBV,EAASpgB,KAAK+e,KAAoB,IAClCuD,GAAYlC,EAChB,CACJ,CIXIkJ,GACAjB,KACAlI,IACJ,G","sources":["webpack://todo-list/./src/fonts/Roboto-Font/stylesheet.css","webpack://todo-list/./src/fonts/alex-brush/stylesheet.css","webpack://todo-list/./src/stylesheets/styles.css","webpack://todo-list/./node_modules/css-loader/dist/runtime/api.js","webpack://todo-list/./node_modules/css-loader/dist/runtime/getUrl.js","webpack://todo-list/./node_modules/css-loader/dist/runtime/sourceMaps.js","webpack://todo-list/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://todo-list/./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://todo-list/./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://todo-list/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack://todo-list/./node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack://todo-list/./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack://todo-list/webpack/bootstrap","webpack://todo-list/webpack/runtime/compat get default export","webpack://todo-list/webpack/runtime/define property getters","webpack://todo-list/webpack/runtime/global","webpack://todo-list/webpack/runtime/hasOwnProperty shorthand","webpack://todo-list/webpack/runtime/publicPath","webpack://todo-list/webpack/runtime/jsonp chunk loading","webpack://todo-list/webpack/runtime/nonce","webpack://todo-list/./src/stylesheets/styles.css?3fea","webpack://todo-list/./src/scripts/dom/helpers.js","webpack://todo-list/./src/scripts/logic/form.js","webpack://todo-list/./node_modules/date-fns/locale/en-US/_lib/formatDistance.mjs","webpack://todo-list/./node_modules/date-fns/locale/_lib/buildFormatLongFn.mjs","webpack://todo-list/./node_modules/date-fns/locale/en-US/_lib/formatLong.mjs","webpack://todo-list/./node_modules/date-fns/locale/en-US/_lib/formatRelative.mjs","webpack://todo-list/./node_modules/date-fns/locale/_lib/buildLocalizeFn.mjs","webpack://todo-list/./node_modules/date-fns/locale/en-US/_lib/localize.mjs","webpack://todo-list/./node_modules/date-fns/locale/_lib/buildMatchFn.mjs","webpack://todo-list/./node_modules/date-fns/locale/en-US/_lib/match.mjs","webpack://todo-list/./node_modules/date-fns/locale/_lib/buildMatchPatternFn.mjs","webpack://todo-list/./node_modules/date-fns/locale/en-US.mjs","webpack://todo-list/./node_modules/date-fns/_lib/defaultOptions.mjs","webpack://todo-list/./node_modules/date-fns/constants.mjs","webpack://todo-list/./node_modules/date-fns/toDate.mjs","webpack://todo-list/./node_modules/date-fns/startOfDay.mjs","webpack://todo-list/./node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.mjs","webpack://todo-list/./node_modules/date-fns/constructFrom.mjs","webpack://todo-list/./node_modules/date-fns/getDayOfYear.mjs","webpack://todo-list/./node_modules/date-fns/differenceInCalendarDays.mjs","webpack://todo-list/./node_modules/date-fns/startOfYear.mjs","webpack://todo-list/./node_modules/date-fns/startOfWeek.mjs","webpack://todo-list/./node_modules/date-fns/startOfISOWeek.mjs","webpack://todo-list/./node_modules/date-fns/getISOWeekYear.mjs","webpack://todo-list/./node_modules/date-fns/getISOWeek.mjs","webpack://todo-list/./node_modules/date-fns/startOfISOWeekYear.mjs","webpack://todo-list/./node_modules/date-fns/getWeekYear.mjs","webpack://todo-list/./node_modules/date-fns/getWeek.mjs","webpack://todo-list/./node_modules/date-fns/startOfWeekYear.mjs","webpack://todo-list/./node_modules/date-fns/_lib/addLeadingZeros.mjs","webpack://todo-list/./node_modules/date-fns/_lib/format/lightFormatters.mjs","webpack://todo-list/./node_modules/date-fns/_lib/format/formatters.mjs","webpack://todo-list/./node_modules/date-fns/_lib/format/longFormatters.mjs","webpack://todo-list/./node_modules/date-fns/_lib/protectedTokens.mjs","webpack://todo-list/./node_modules/date-fns/isValid.mjs","webpack://todo-list/./node_modules/date-fns/isDate.mjs","webpack://todo-list/./node_modules/date-fns/format.mjs","webpack://todo-list/./src/scripts/logic/dates.js","webpack://todo-list/./src/scripts/dom/get.js","webpack://todo-list/./node_modules/date-fns/addDays.mjs","webpack://todo-list/./node_modules/date-fns/addMonths.mjs","webpack://todo-list/./src/scripts/logic/default.js","webpack://todo-list/./node_modules/date-fns/add.mjs","webpack://todo-list/./node_modules/date-fns/sub.mjs","webpack://todo-list/./node_modules/date-fns/subDays.mjs","webpack://todo-list/./node_modules/date-fns/subMonths.mjs","webpack://todo-list/./src/scripts/logic/tabs.js","webpack://todo-list/./src/scripts/logic/object.js","webpack://todo-list/./src/scripts/dom/dialogs.js","webpack://todo-list/./src/scripts/dom/header.js","webpack://todo-list/./src/scripts/dom/buttons.js","webpack://todo-list/./src/index.js"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"roboto-regular-webfont.woff2\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"roboto-regular-webfont.woff\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"roboto-thin-webfont.woff2\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"roboto-thin-webfont.woff\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_4___ = new URL(\"roboto-black-webfont.woff2\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_5___ = new URL(\"roboto-black-webfont.woff\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_6___ = new URL(\"roboto-bold-webfont.woff2\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_7___ = new URL(\"roboto-bold-webfont.woff\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\nvar ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___);\nvar ___CSS_LOADER_URL_REPLACEMENT_6___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___);\nvar ___CSS_LOADER_URL_REPLACEMENT_7___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*! Generated by Font Squirrel (https://www.fontsquirrel.com) on August 13, 2024 */\n\n\n\n@font-face {\n font-family: 'robotoregular';\n src: url(${___CSS_LOADER_URL_REPLACEMENT_0___}) format('woff2'),\n url(${___CSS_LOADER_URL_REPLACEMENT_1___}) format('woff');\n font-weight: normal;\n font-style: normal;\n\n}\n\n\n\n\n@font-face {\n font-family: 'robotothin';\n src: url(${___CSS_LOADER_URL_REPLACEMENT_2___}) format('woff2'),\n url(${___CSS_LOADER_URL_REPLACEMENT_3___}) format('woff');\n font-weight: normal;\n font-style: normal;\n\n}\n\n\n\n\n@font-face {\n font-family: 'robotoblack';\n src: url(${___CSS_LOADER_URL_REPLACEMENT_4___}) format('woff2'),\n url(${___CSS_LOADER_URL_REPLACEMENT_5___}) format('woff');\n font-weight: normal;\n font-style: normal;\n\n}\n\n\n\n\n@font-face {\n font-family: 'robotobold';\n src: url(${___CSS_LOADER_URL_REPLACEMENT_6___}) format('woff2'),\n url(${___CSS_LOADER_URL_REPLACEMENT_7___}) format('woff');\n font-weight: normal;\n font-style: normal;\n\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/fonts/Roboto-Font/stylesheet.css\"],\"names\":[],\"mappings\":\"AAAA,kFAAkF;;;;AAIlF;IACI,4BAA4B;IAC5B;+DACsD;IACtD,mBAAmB;IACnB,kBAAkB;;AAEtB;;;;;AAKA;IACI,yBAAyB;IACzB;+DACmD;IACnD,mBAAmB;IACnB,kBAAkB;;AAEtB;;;;;AAKA;IACI,0BAA0B;IAC1B;+DACoD;IACpD,mBAAmB;IACnB,kBAAkB;;AAEtB;;;;;AAKA;IACI,yBAAyB;IACzB;+DACmD;IACnD,mBAAmB;IACnB,kBAAkB;;AAEtB\",\"sourcesContent\":[\"/*! Generated by Font Squirrel (https://www.fontsquirrel.com) on August 13, 2024 */\\n\\n\\n\\n@font-face {\\n font-family: 'robotoregular';\\n src: url('roboto-regular-webfont.woff2') format('woff2'),\\n url('roboto-regular-webfont.woff') format('woff');\\n font-weight: normal;\\n font-style: normal;\\n\\n}\\n\\n\\n\\n\\n@font-face {\\n font-family: 'robotothin';\\n src: url('roboto-thin-webfont.woff2') format('woff2'),\\n url('roboto-thin-webfont.woff') format('woff');\\n font-weight: normal;\\n font-style: normal;\\n\\n}\\n\\n\\n\\n\\n@font-face {\\n font-family: 'robotoblack';\\n src: url('roboto-black-webfont.woff2') format('woff2'),\\n url('roboto-black-webfont.woff') format('woff');\\n font-weight: normal;\\n font-style: normal;\\n\\n}\\n\\n\\n\\n\\n@font-face {\\n font-family: 'robotobold';\\n src: url('roboto-bold-webfont.woff2') format('woff2'),\\n url('roboto-bold-webfont.woff') format('woff');\\n font-weight: normal;\\n font-style: normal;\\n\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"alexbrush-regular-webfont.woff2\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"alexbrush-regular-webfont.woff\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*! Generated by Font Squirrel (https://www.fontsquirrel.com) on August 28, 2024 */\n\n\n\n@font-face {\n font-family: 'alex_brushregular';\n src: url(${___CSS_LOADER_URL_REPLACEMENT_0___}) format('woff2'),\n url(${___CSS_LOADER_URL_REPLACEMENT_1___}) format('woff');\n font-weight: normal;\n font-style: normal;\n\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/fonts/alex-brush/stylesheet.css\"],\"names\":[],\"mappings\":\"AAAA,kFAAkF;;;;AAIlF;IACI,gCAAgC;IAChC;+DACyD;IACzD,mBAAmB;IACnB,kBAAkB;;AAEtB\",\"sourcesContent\":[\"/*! Generated by Font Squirrel (https://www.fontsquirrel.com) on August 28, 2024 */\\n\\n\\n\\n@font-face {\\n font-family: 'alex_brushregular';\\n src: url('alexbrush-regular-webfont.woff2') format('woff2'),\\n url('alexbrush-regular-webfont.woff') format('woff');\\n font-weight: normal;\\n font-style: normal;\\n\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_0___ from \"-!../../node_modules/css-loader/dist/cjs.js!../fonts/Roboto-Font/stylesheet.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_1___ from \"-!../../node_modules/css-loader/dist/cjs.js!../fonts/alex-brush/stylesheet.css\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../images/view-project.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"../images/add.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"../images/notes.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"../images/delete.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:root {\n --main-color: #222831;\n --secondary-color: #393E46;\n --tertiary-color: #00ADB5;\n --dark-tertiary-color: hsl(183, 100%, 25%);\n --quaternary-color: #EEEEEE;\n --logo-color: #FFC90E; \n --pad-height: 8px;\n --pad-width: 16px;\n --pad-neg-height: calc(var(--pad-height) - (var(--pad-height) * 2));\n --pad-neg-width: calc(var(--pad-width) - (var(--pad-width) * 2));\n --mild-shadow: 5px 5px 10px rgba(0, 0, 0, 0.25);\n --generic-padding: var(--pad-height) var(--pad-width);\n --small-padding: calc(var(--pad-height) / 2) calc(var(--pad-width) / 2);\n --softer-shadow: 5px 5px 10px rgba(0, 0, 0, 0.10);\n --light-tertiary-color: hsl(183, 100%, 45%);\n}\n\nbody {\n height: 100vh;\n width: auto;\n background-color: var(--quaternary-color);\n overflow: hidden;\n margin: 0;\n padding: 0;\n display: grid;\n grid-template: max-content 1fr max-content / 1fr;\n grid-template-areas:\n \"header\"\n \"content\"\n \"footer\";\n}\n\n* {\n padding: 0;\n margin: 0;\n font-family: 'robotoregular', sans-serif;\n}\n\n.web-info {\n display: flex;\n align-items: center;\n cursor: pointer;\n}\n\n.web-logo {\n height: 48px;\n width: 48px;\n position: relative;\n top: -4px;\n}\n\n.web-title {\n font-family: 'alex_brushregular', sans-serif;\n color: var(--logo-color);\n font-size: 48px;\n}\n\nheader {\n grid-area: header;\n background-image: linear-gradient(var(--main-color), var(--secondary-color));\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: var(--pad-height) var(--pad-width);\n box-shadow: var(--mild-shadow);\n}\n\n.tabs {\n align-self: flex-end;\n position: relative;\n bottom: var(--pad-neg-height);\n display: flex;\n gap: var(--pad-width);\n}\n\n.tab {\n font-family: 'robotothin', sans-serif;\n font-size: 24px;\n border: 0;\n background-color: transparent;\n padding-bottom: var(--pad-height);\n color: var(--quaternary-color);\n margin-bottom: 2px;\n}\n\n.tab:not(.active-tab):hover,\n.active-tab {\n color: var(--logo-color);\n border-bottom: 1px solid var(--logo-color);\n margin-bottom: 1px;\n text-shadow: var(--mild-shadow);\n} \n\n.active-tab {\n cursor: auto;\n}\n\nbutton {\n cursor: pointer;\n font-family: 'robotobold', sans-serif;\n}\n\nbutton:not(.tab):hover {\n box-shadow: var(--mild-shadow);\n}\n\nbutton.new-project {\n border: 0;\n padding: var(--pad-height) var(--pad-width);\n border-radius: 25px;\n font-family: 'robotobold', sans-serif;\n background-color: var(--secondary-color);\n color: var(--quaternary-color);\n}\n\nbutton.new-project:hover {\n background-color: var(--logo-color);\n text-shadow: var(--mild-shadow);\n color: var(--secondary-color);\n}\n\ndiv#content {\n grid-area: content;\n}\n\nfooter {\n grid-area: footer;\n}\n\ndialog {\n margin: auto;\n padding: var(--pad-height) var(--pad-width);\n overflow: visible;\n border: 2px solid black;\n border-radius: 5px;\n background-color: var(--quaternary-color);\n}\n\ndialog::backdrop {\n background-color: rgba(0, 0, 0, 0.10);\n}\n\nform {\n display: flex;\n flex-direction: column;\n gap: var(--pad-height);\n}\n\n.cancel-btn {\n position: absolute;\n --square-pad: 5px;\n --neg-square-pad: -8px;\n top: var(--neg-square-pad);\n right: var(--neg-square-pad);\n padding: 0 var(--square-pad);\n border-radius: 10px;\n background-color: hsl(0, 50%, 50%);\n border: 2px solid black;\n}\n\ninput,\nselect {\n font-size: 14px;\n}\n\ninput[type=\"text\"] {\n border: 0;\n background-color: var(--quaternary-color);\n border-bottom: 1px solid black;\n}\n\ninput {\n outline: 0;\n}\n\n.group {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n}\n\nlabel,\n.form-title {\n font-family: 'robotobold';\n}\n\nlabel {\n font-size: 18px;\n}\n\n.group > :not(label) {\n width: 50%;\n}\n\ndialog .add-button:hover,\ndialog .cancel-btn:hover {\n box-shadow: none;\n}\n\n#content {\n display: grid;\n grid-auto-rows: minmax(50px, 250px);\n grid-template-columns: repeat(auto-fill, minmax(50px, 250px));\n gap: 16px;\n padding: 16px;\n overflow: auto;\n}\n\n.project-card button {\n height: 20px;\n width: 20px;\n border: 0;\n background-size: 20px;\n background-color: transparent;\n}\n\n.card-lower button:hover {\n background-color: var(--light-tertiary-color);\n border-radius: 5px;\n overflow: visible;\n}\n\n.project-card {\n border-radius: 15px;\n background-color: var(--tertiary-color);\n color: var(--quaternary-color);\n box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.15);\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n.project-card:hover {\n box-shadow: var(--mild-shadow);\n}\n\n.view {\n background-image: url(${___CSS_LOADER_URL_REPLACEMENT_0___});\n}\n\n.project-add-task {\n background-image: url(${___CSS_LOADER_URL_REPLACEMENT_1___});\n}\n\n.project-notes {\n background-image: url(${___CSS_LOADER_URL_REPLACEMENT_2___});\n}\n\n.card-upper {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--pad-height);\n background-color: var(--secondary-color);\n border-radius: 15px;\n}\n\n.card-upper:hover,\n.card-lower:hover {\n padding-bottom: var(--pad-height);\n}\n\n.card-upper:hover {\n border-bottom: 5px solid var(--main-color);\n}\n\n.card-lower:hover {\n border-bottom: 5px solid var(--dark-tertiary-color);\n}\n\n.card-lower {\n display: flex;\n flex-direction: column;\n padding: var(--pad-height);\n flex-grow: 1;\n gap: 18px;\n border-radius: 15px;\n justify-content: space-between;\n}\n\n.card-upper,\n.card-lower {\n padding-bottom: calc(var(--pad-height) + 5px);\n}\n\n.card-buttons {\n align-self: flex-end;\n display: flex;\n gap: 4px;\n}\n\n.project-desc {\n hyphens: auto;\n}\n\n.card-upper .delete {\n background-image: url(${___CSS_LOADER_URL_REPLACEMENT_3___});\n background-color: rgba(255, 68, 68, 0.5);\n border-radius: 5px;\n}\n\n.card-upper .delete:hover {\n background-color: rgb(255, 68, 68);\n}\n\n.bool-dialog {\n padding: var(--generic-padding);\n background-color: var(--quaternary-color);\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.question {\n font-family: 'robotothin', sans-serif;\n font-weight: bold;\n}\n\n.choices {\n display: flex;\n justify-content: space-around;\n}\n\n.dialog-btn {\n padding: var(--small-padding);\n border: 1px solid black;\n border-radius: 5px;\n}\n\n.dialog-btn:hover {\n box-shadow: var(--softer-shadow);\n}\n\n.yes-btn {\n background-color: hsl(120, 100%, 50%);\n}\n\n.yes-btn:hover {\n background-color: hsl(120, 100%, 75%);\n}\n\n.no-btn {\n background-color: hsl(0, 50%, 50%);\n}\n\n.no-btn:hover {\n background-color: hsl(0, 50%, 75%);\n}\n\n.task-list {\n list-style-type: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.task-container,\n.add-task-container {\n display: flex;\n gap: 8px;\n font-family: 'robotothin', sans-serif;\n align-items: center;\n justify-content: space-between;\n}\n\n.tasks-header {\n text-align: center;\n border-bottom: 2px solid var(--main-color);\n margin-bottom: 4px;\n}\n\n.task-btn {\n --size: 20px;\n background-image: url(${___CSS_LOADER_URL_REPLACEMENT_1___});\n height: var(--size);\n width: var(--size);\n background-size: var(--size);\n border: 0;\n background-color: transparent;\n position: relative;\n right: 4px;\n}\n\nbutton.tasks-add-task.task-btn:hover {\n box-shadow: none;\n}\n\n.tasks-add-task {\n cursor: pointer;\n}\n\n.add-task-container {\n gap: 0;\n justify-content: flex-start;\n}\n\n.priority {\n --size: 5px;\n border-radius: var(--size);\n height: var(--size);\n width: var(--size);\n}\n\n.low-priority {\n background-color: green;\n}\n\n.medium-priority {\n background-color: yellow;\n}\n\n.high-priority {\n background-color: red;\n}\n\n.due-date-task {\n font-size: 0.75rem;\n color: grey;\n}\n\n.new-task-container {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.input-container > :nth-child(2) {\n width: 50%;\n}\n\n.input-container {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: 4px;\n}\n\n.radios-container {\n display: flex;\n flex-direction: column;\n}\n\n.radio-container {\n display: flex;\n}\n\n.task-submit {\n align-self: flex-end;\n}\n\n.new-task-container .task-submit:hover {\n box-shadow: none;\n}\n\n.delete-task {\n --size: 15px;\n background-image: url(${___CSS_LOADER_URL_REPLACEMENT_3___});\n background-size: var(--size);\n height: var(--size);\n width: var(--size);\n border: 0;\n}\n\nbutton.delete-task:hover {\n box-shadow: none;\n}\n\nfieldset {\n border: 0;\n}\n\n.notes-container {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.save-notes-btn {\n align-self: flex-end;\n}\n\nbutton.save-notes-btn:hover {\n box-shadow: none;\n}\n\n.save-notes-btn,\n.add-button,\nbutton.add-task {\n border-radius: 5px;\n align-self: flex-end;\n padding: 8px 16px;\n background-color: hsl(120, 100%, 50%);\n}\n\n\n.save-notes-btn:hover,\n.add-button:hover,\nbutton.add-task:hover {\n background-color: hsl(120, 100%, 75%);\n}\n\nfooter {\n display: flex;\n justify-content: space-around;\n padding: var(--generic-padding);\n background-image: linear-gradient(var(--secondary-color), var(--main-color));\n box-shadow: 0 -5px 10px rgba(0, 0, 0, 0.25);\n}\n\nfooter * {\n color: var(--quaternary-color);\n}\n\na:hover {\n text-decoration: none;\n}\n\n.project-started {\n display: block;\n font-family: 'robotobold', sans-serif;\n color: var(--dark-tertiary-color);\n text-align: end;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/stylesheets/styles.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"@import url(\\\"../fonts/Roboto-Font/stylesheet.css\\\");\\n@import url(\\\"../fonts/alex-brush/stylesheet.css\\\");\\n\\n:root {\\n --main-color: #222831;\\n --secondary-color: #393E46;\\n --tertiary-color: #00ADB5;\\n --dark-tertiary-color: hsl(183, 100%, 25%);\\n --quaternary-color: #EEEEEE;\\n --logo-color: #FFC90E; \\n --pad-height: 8px;\\n --pad-width: 16px;\\n --pad-neg-height: calc(var(--pad-height) - (var(--pad-height) * 2));\\n --pad-neg-width: calc(var(--pad-width) - (var(--pad-width) * 2));\\n --mild-shadow: 5px 5px 10px rgba(0, 0, 0, 0.25);\\n --generic-padding: var(--pad-height) var(--pad-width);\\n --small-padding: calc(var(--pad-height) / 2) calc(var(--pad-width) / 2);\\n --softer-shadow: 5px 5px 10px rgba(0, 0, 0, 0.10);\\n --light-tertiary-color: hsl(183, 100%, 45%);\\n}\\n\\nbody {\\n height: 100vh;\\n width: auto;\\n background-color: var(--quaternary-color);\\n overflow: hidden;\\n margin: 0;\\n padding: 0;\\n display: grid;\\n grid-template: max-content 1fr max-content / 1fr;\\n grid-template-areas:\\n \\\"header\\\"\\n \\\"content\\\"\\n \\\"footer\\\";\\n}\\n\\n* {\\n padding: 0;\\n margin: 0;\\n font-family: 'robotoregular', sans-serif;\\n}\\n\\n.web-info {\\n display: flex;\\n align-items: center;\\n cursor: pointer;\\n}\\n\\n.web-logo {\\n height: 48px;\\n width: 48px;\\n position: relative;\\n top: -4px;\\n}\\n\\n.web-title {\\n font-family: 'alex_brushregular', sans-serif;\\n color: var(--logo-color);\\n font-size: 48px;\\n}\\n\\nheader {\\n grid-area: header;\\n background-image: linear-gradient(var(--main-color), var(--secondary-color));\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n padding: var(--pad-height) var(--pad-width);\\n box-shadow: var(--mild-shadow);\\n}\\n\\n.tabs {\\n align-self: flex-end;\\n position: relative;\\n bottom: var(--pad-neg-height);\\n display: flex;\\n gap: var(--pad-width);\\n}\\n\\n.tab {\\n font-family: 'robotothin', sans-serif;\\n font-size: 24px;\\n border: 0;\\n background-color: transparent;\\n padding-bottom: var(--pad-height);\\n color: var(--quaternary-color);\\n margin-bottom: 2px;\\n}\\n\\n.tab:not(.active-tab):hover,\\n.active-tab {\\n color: var(--logo-color);\\n border-bottom: 1px solid var(--logo-color);\\n margin-bottom: 1px;\\n text-shadow: var(--mild-shadow);\\n} \\n\\n.active-tab {\\n cursor: auto;\\n}\\n\\nbutton {\\n cursor: pointer;\\n font-family: 'robotobold', sans-serif;\\n}\\n\\nbutton:not(.tab):hover {\\n box-shadow: var(--mild-shadow);\\n}\\n\\nbutton.new-project {\\n border: 0;\\n padding: var(--pad-height) var(--pad-width);\\n border-radius: 25px;\\n font-family: 'robotobold', sans-serif;\\n background-color: var(--secondary-color);\\n color: var(--quaternary-color);\\n}\\n\\nbutton.new-project:hover {\\n background-color: var(--logo-color);\\n text-shadow: var(--mild-shadow);\\n color: var(--secondary-color);\\n}\\n\\ndiv#content {\\n grid-area: content;\\n}\\n\\nfooter {\\n grid-area: footer;\\n}\\n\\ndialog {\\n margin: auto;\\n padding: var(--pad-height) var(--pad-width);\\n overflow: visible;\\n border: 2px solid black;\\n border-radius: 5px;\\n background-color: var(--quaternary-color);\\n}\\n\\ndialog::backdrop {\\n background-color: rgba(0, 0, 0, 0.10);\\n}\\n\\nform {\\n display: flex;\\n flex-direction: column;\\n gap: var(--pad-height);\\n}\\n\\n.cancel-btn {\\n position: absolute;\\n --square-pad: 5px;\\n --neg-square-pad: -8px;\\n top: var(--neg-square-pad);\\n right: var(--neg-square-pad);\\n padding: 0 var(--square-pad);\\n border-radius: 10px;\\n background-color: hsl(0, 50%, 50%);\\n border: 2px solid black;\\n}\\n\\ninput,\\nselect {\\n font-size: 14px;\\n}\\n\\ninput[type=\\\"text\\\"] {\\n border: 0;\\n background-color: var(--quaternary-color);\\n border-bottom: 1px solid black;\\n}\\n\\ninput {\\n outline: 0;\\n}\\n\\n.group {\\n display: flex;\\n justify-content: flex-end;\\n gap: 8px;\\n}\\n\\nlabel,\\n.form-title {\\n font-family: 'robotobold';\\n}\\n\\nlabel {\\n font-size: 18px;\\n}\\n\\n.group > :not(label) {\\n width: 50%;\\n}\\n\\ndialog .add-button:hover,\\ndialog .cancel-btn:hover {\\n box-shadow: none;\\n}\\n\\n#content {\\n display: grid;\\n grid-auto-rows: minmax(50px, 250px);\\n grid-template-columns: repeat(auto-fill, minmax(50px, 250px));\\n gap: 16px;\\n padding: 16px;\\n overflow: auto;\\n}\\n\\n.project-card button {\\n height: 20px;\\n width: 20px;\\n border: 0;\\n background-size: 20px;\\n background-color: transparent;\\n}\\n\\n.card-lower button:hover {\\n background-color: var(--light-tertiary-color);\\n border-radius: 5px;\\n overflow: visible;\\n}\\n\\n.project-card {\\n border-radius: 15px;\\n background-color: var(--tertiary-color);\\n color: var(--quaternary-color);\\n box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.15);\\n overflow: auto;\\n display: flex;\\n flex-direction: column;\\n}\\n\\n.project-card:hover {\\n box-shadow: var(--mild-shadow);\\n}\\n\\n.view {\\n background-image: url(\\\"../images/view-project.png\\\");\\n}\\n\\n.project-add-task {\\n background-image: url(\\\"../images/add.png\\\");\\n}\\n\\n.project-notes {\\n background-image: url(\\\"../images/notes.png\\\");\\n}\\n\\n.card-upper {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n padding: var(--pad-height);\\n background-color: var(--secondary-color);\\n border-radius: 15px;\\n}\\n\\n.card-upper:hover,\\n.card-lower:hover {\\n padding-bottom: var(--pad-height);\\n}\\n\\n.card-upper:hover {\\n border-bottom: 5px solid var(--main-color);\\n}\\n\\n.card-lower:hover {\\n border-bottom: 5px solid var(--dark-tertiary-color);\\n}\\n\\n.card-lower {\\n display: flex;\\n flex-direction: column;\\n padding: var(--pad-height);\\n flex-grow: 1;\\n gap: 18px;\\n border-radius: 15px;\\n justify-content: space-between;\\n}\\n\\n.card-upper,\\n.card-lower {\\n padding-bottom: calc(var(--pad-height) + 5px);\\n}\\n\\n.card-buttons {\\n align-self: flex-end;\\n display: flex;\\n gap: 4px;\\n}\\n\\n.project-desc {\\n hyphens: auto;\\n}\\n\\n.card-upper .delete {\\n background-image: url(\\\"../images/delete.png\\\");\\n background-color: rgba(255, 68, 68, 0.5);\\n border-radius: 5px;\\n}\\n\\n.card-upper .delete:hover {\\n background-color: rgb(255, 68, 68);\\n}\\n\\n.bool-dialog {\\n padding: var(--generic-padding);\\n background-color: var(--quaternary-color);\\n display: flex;\\n flex-direction: column;\\n gap: 8px;\\n}\\n\\n.question {\\n font-family: 'robotothin', sans-serif;\\n font-weight: bold;\\n}\\n\\n.choices {\\n display: flex;\\n justify-content: space-around;\\n}\\n\\n.dialog-btn {\\n padding: var(--small-padding);\\n border: 1px solid black;\\n border-radius: 5px;\\n}\\n\\n.dialog-btn:hover {\\n box-shadow: var(--softer-shadow);\\n}\\n\\n.yes-btn {\\n background-color: hsl(120, 100%, 50%);\\n}\\n\\n.yes-btn:hover {\\n background-color: hsl(120, 100%, 75%);\\n}\\n\\n.no-btn {\\n background-color: hsl(0, 50%, 50%);\\n}\\n\\n.no-btn:hover {\\n background-color: hsl(0, 50%, 75%);\\n}\\n\\n.task-list {\\n list-style-type: none;\\n margin: 0;\\n padding: 0;\\n display: flex;\\n flex-direction: column;\\n gap: 4px;\\n}\\n\\n.task-container,\\n.add-task-container {\\n display: flex;\\n gap: 8px;\\n font-family: 'robotothin', sans-serif;\\n align-items: center;\\n justify-content: space-between;\\n}\\n\\n.tasks-header {\\n text-align: center;\\n border-bottom: 2px solid var(--main-color);\\n margin-bottom: 4px;\\n}\\n\\n.task-btn {\\n --size: 20px;\\n background-image: url(\\\"../images/add.png\\\");\\n height: var(--size);\\n width: var(--size);\\n background-size: var(--size);\\n border: 0;\\n background-color: transparent;\\n position: relative;\\n right: 4px;\\n}\\n\\nbutton.tasks-add-task.task-btn:hover {\\n box-shadow: none;\\n}\\n\\n.tasks-add-task {\\n cursor: pointer;\\n}\\n\\n.add-task-container {\\n gap: 0;\\n justify-content: flex-start;\\n}\\n\\n.priority {\\n --size: 5px;\\n border-radius: var(--size);\\n height: var(--size);\\n width: var(--size);\\n}\\n\\n.low-priority {\\n background-color: green;\\n}\\n\\n.medium-priority {\\n background-color: yellow;\\n}\\n\\n.high-priority {\\n background-color: red;\\n}\\n\\n.due-date-task {\\n font-size: 0.75rem;\\n color: grey;\\n}\\n\\n.new-task-container {\\n display: flex;\\n flex-direction: column;\\n gap: 8px;\\n}\\n\\n.input-container > :nth-child(2) {\\n width: 50%;\\n}\\n\\n.input-container {\\n display: flex;\\n justify-content: flex-end;\\n align-items: center;\\n gap: 4px;\\n}\\n\\n.radios-container {\\n display: flex;\\n flex-direction: column;\\n}\\n\\n.radio-container {\\n display: flex;\\n}\\n\\n.task-submit {\\n align-self: flex-end;\\n}\\n\\n.new-task-container .task-submit:hover {\\n box-shadow: none;\\n}\\n\\n.delete-task {\\n --size: 15px;\\n background-image: url(\\\"../images/delete.png\\\");\\n background-size: var(--size);\\n height: var(--size);\\n width: var(--size);\\n border: 0;\\n}\\n\\nbutton.delete-task:hover {\\n box-shadow: none;\\n}\\n\\nfieldset {\\n border: 0;\\n}\\n\\n.notes-container {\\n display: flex;\\n flex-direction: column;\\n gap: 8px;\\n}\\n\\n.save-notes-btn {\\n align-self: flex-end;\\n}\\n\\nbutton.save-notes-btn:hover {\\n box-shadow: none;\\n}\\n\\n.save-notes-btn,\\n.add-button,\\nbutton.add-task {\\n border-radius: 5px;\\n align-self: flex-end;\\n padding: 8px 16px;\\n background-color: hsl(120, 100%, 50%);\\n}\\n\\n\\n.save-notes-btn:hover,\\n.add-button:hover,\\nbutton.add-task:hover {\\n background-color: hsl(120, 100%, 75%);\\n}\\n\\nfooter {\\n display: flex;\\n justify-content: space-around;\\n padding: var(--generic-padding);\\n background-image: linear-gradient(var(--secondary-color), var(--main-color));\\n box-shadow: 0 -5px 10px rgba(0, 0, 0, 0.25);\\n}\\n\\nfooter * {\\n color: var(--quaternary-color);\\n}\\n\\na:hover {\\n text-decoration: none;\\n}\\n\\n.project-started {\\n display: block;\\n font-family: 'robotobold', sans-serif;\\n color: var(--dark-tertiary-color);\\n text-align: end;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (url, options) {\n if (!options) {\n options = {};\n }\n if (!url) {\n return url;\n }\n url = String(url.__esModule ? url.default : url);\n\n // If url is already wrapped in quotes, remove them\n if (/^['\"].*['\"]$/.test(url)) {\n url = url.slice(1, -1);\n }\n if (options.hash) {\n url += options.hash;\n }\n\n // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n if (/[\"'() \\t\\n]|(%20)/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n return url;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","\"use strict\";\n\nvar stylesInDOM = [];\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n return result;\n}\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n identifiers.push(identifier);\n }\n return identifiers;\n}\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n return updater;\n}\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n var newLastIdentifiers = modulesToDom(newList, options);\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n var _index = getIndexByIdentifier(_identifier);\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n stylesInDOM.splice(_index, 1);\n }\n }\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n\n/* istanbul ignore next */\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target);\n\n // Special case to return head of iframe instead of iframe itself\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n memo[target] = styleTarget;\n }\n return memo[target];\n}\n\n/* istanbul ignore next */\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n target.appendChild(style);\n}\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n var needLayer = typeof obj.layer !== \"undefined\";\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n css += obj.css;\n if (needLayer) {\n css += \"}\";\n }\n if (obj.media) {\n css += \"}\";\n }\n if (obj.supports) {\n css += \"}\";\n }\n var sourceMap = obj.sourceMap;\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n }\n\n // For old IE\n /* istanbul ignore if */\n options.styleTagTransform(css, styleElement, options.options);\n}\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n styleElement.parentNode.removeChild(styleElement);\n}\n\n/* istanbul ignore next */\nfunction domAPI(options) {\n if (typeof document === \"undefined\") {\n return {\n update: function update() {},\n remove: function remove() {}\n };\n }\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n styleElement.appendChild(document.createTextNode(css));\n }\n}\nmodule.exports = styleTagTransform;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// no jsonp function","__webpack_require__.nc = undefined;","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!./styles.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!./styles.css\";\n export default content && content.locals ? content.locals : undefined;\n","export class Query {\n constructor(query) {\n this.query = query;\n }\n\n get = () => {\n return document.querySelector(this.query);\n }\n\n getAll = () => {\n return Array.from(document.querySelectorAll(this.query));\n }\n}\n\nexport const createImage = function(className, imageURL, altText) {\n const img = document.createElement(\"img\");\n img.src = imageURL;\n img.alt = altText;\n img.className = className;\n return img;\n}\n\nexport const createText = function(className, content, elementType) {\n const text = document.createElement(`${elementType}`);\n text.textContent = content;\n text.className = className;\n return text;\n}\n\nexport const createDiv = function(className) {\n const div = document.createElement(\"div\");\n div.className = className;\n return div;\n}\n\nexport const createButton = function(className, content) {\n const button = document.createElement(\"button\");\n button.textContent = content;\n button.className = className;\n return button;\n}\n\nexport const appendTo = function(parentElement, ...childElements) {\n childElements.forEach((childElement) => {\n parentElement.appendChild(childElement);\n });\n}\n\nexport const createDialog = function(className, Id) {\n const dialog = document.createElement(\"dialog\");\n dialog.className = className;\n dialog.id = Id;\n return dialog;\n}\n\nexport const handleClick = function(fn, ...elements) {\n elements.forEach((element) => { element.addEventListener(\"click\", fn) });\n}\n\nexport const getAllTabs = new Query(\".tab\").getAll;\n\nexport const getHeader = new Query(\"header\").get;\n\nexport const getContent = new Query(\"#content\").get;\n\nconst getDialogs = new Query(\"dialog\").getAll;\nconst getDialog = () => {\n const dialogs = getDialogs();\n return dialogs[dialogs.length - 1];\n};\n\nexport const showLastDialog = () => {\n getDialog().showModal();\n};\n\nexport const closeDialogs = () => {\n const dialogs = getDialogs();\n dialogs.forEach((dialog) => {\n dialog.close()\n dialog.remove()\n });\n};\nexport const closeDialog = () => {\n const dialog = getDialog();\n dialog.close()\n dialog.remove();\n};\n\nexport const createForm = function(className, Id, method) {\n const form = document.createElement(\"form\");\n form.setAttribute(\"class\", `${className}`);\n form.setAttribute(\"id\", `${Id}`);\n return form;\n}\n\nexport const createLabel = function(content, forId, className) {\n const label = document.createElement(\"label\");\n label.setAttribute(\"class\", `${className}`);\n label.textContent = content;\n label.setAttribute(\"for\", `${forId}`);\n return label;\n}\n\nexport const createInput = function(type, Id, className) {\n const input = document.createElement(\"input\");\n input.setAttribute(\"type\", `${type}`);\n input.setAttribute(\"id\", `${Id}`);\n input.setAttribute(\"class\", `${className}`);\n return input;\n}\n\nexport const createRequiredInput = function(type, Id, className) {\n const input = createInput(type, Id, className);\n input.setAttribute(\"required\", \"\");\n return input;\n}\n\nexport const createSelection = function(className, Id, ...selectionValues) {\n const selection = document.createElement(\"select\");\n selection.setAttribute(\"class\", `${className}`);\n selection.setAttribute(\"id\", `${Id}`);\n selectionValues.forEach((value) => {\n const option = document.createElement(\"option\");\n option.setAttribute(\"value\", `${value.trim().replace(/\\s+/g, \"-\").toLowerCase()}`);\n option.textContent = value.trim();\n appendTo(selection, option);\n });\n return selection;\n}\n\nexport const createSubmitButton = function(content, className) {\n const submitButton = createButton(className, content);\n submitButton.setAttribute(\"type\", \"submit\");\n return submitButton;\n}\n\nexport const addRequired = function(element) {\n element.setAttribute(\"required\", \"\");\n}\n\nexport const getDialogSpace = new Query(\"#dialogs\").get;\n\nexport const resetContent = () => {\n getContent().innerHTML = \"\";\n};\n\nexport const createBulletList = function(className) {\n const bulletList = document.createElement(\"ul\");\n bulletList.className = className;\n return bulletList;\n}\n\nexport const createListItem = function(className, content) {\n const listItem = document.createElement(\"li\");\n listItem.className = className;\n listItem.textContent = content;\n return listItem;\n}\n\nexport const createRadioButton = function(name, value, type, Id, className) {\n const input = createInput(type, Id, className);\n input.setAttribute(\"name\", name);\n input.setAttribute(\"value\", value);\n return input;\n}\n\nexport const createFieldSet = function(className) {\n const fieldSet = document.createElement(\"fieldset\");\n fieldSet.className = className;\n return fieldSet;\n}\n\nexport const createTextArea = function(className, Id, rows, columns, placeholder) {\n const textArea = document.createElement(\"textarea\");\n textArea.setAttribute(\"class\", className);\n textArea.setAttribute(\"id\", Id);\n textArea.setAttribute(\"rows\", rows.toString());\n textArea.setAttribute(\"cols\", columns.toString());\n textArea.setAttribute(\"placeholder\", placeholder);\n return textArea;\n}\n\nexport const getFooter = new Query(\"footer\").get;","export const handleSubmit = function(fn, ...forms) {\n forms.forEach((form) => {\n form.addEventListener(\"submit\", (event) => { event.preventDefault() });\n form.addEventListener(\"submit\", fn);\n });\n}","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\n","export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.mjs\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","/* eslint-disable no-unused-vars */\n\n/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.mjs\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.mjs\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.mjs\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","import { formatDistance } from \"./en-US/_lib/formatDistance.mjs\";\nimport { formatLong } from \"./en-US/_lib/formatLong.mjs\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.mjs\";\nimport { localize } from \"./en-US/_lib/localize.mjs\";\nimport { match } from \"./en-US/_lib/match.mjs\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n code: \"en-US\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n","/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument) {\n const argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (\n argument instanceof Date ||\n (typeof argument === \"object\" && argStr === \"[object Date]\")\n ) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new argument.constructor(+argument);\n } else if (\n typeof argument === \"number\" ||\n argStr === \"[object Number]\" ||\n typeof argument === \"string\" ||\n argStr === \"[object String]\"\n ) {\n // TODO: Can we get rid of as?\n return new Date(argument);\n } else {\n // TODO: Can we get rid of as?\n return new Date(NaN);\n }\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date) {\n const _date = toDate(date);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { toDate } from \"../toDate.mjs\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from 'date-fns'\n *\n * // A function that clones a date preserving the original type\n * function cloneDate 183\n */\nexport function getDayOfYear(date) {\n const _date = toDate(date);\n const diff = differenceInCalendarDays(_date, startOfYear(_date));\n const dayOfYear = diff + 1;\n return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n","import { millisecondsInDay } from \"./constants.mjs\";\nimport { startOfDay } from \"./startOfDay.mjs\";\nimport { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.mjs\";\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(dateLeft, dateRight) {\n const startOfDayLeft = startOfDay(dateLeft);\n const startOfDayRight = startOfDay(dateRight);\n\n const timestampLeft =\n +startOfDayLeft - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n const timestampRight =\n +startOfDayRight - getTimezoneOffsetInMilliseconds(startOfDayRight);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((timestampLeft - timestampRight) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date) {\n const cleanDate = toDate(date);\n const _date = constructFrom(date, 0);\n _date.setFullYear(cleanDate.getFullYear(), 0, 1);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n","import { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n _date.setDate(_date.getDate() - diff);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n","import { startOfWeek } from \"./startOfWeek.mjs\";\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date) {\n return startOfWeek(date, { weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n\n const fourthOfJanuaryOfNextYear = constructFrom(date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n const fourthOfJanuaryOfThisYear = constructFrom(date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n","import { millisecondsInWeek } from \"./constants.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date) {\n const _date = toDate(date);\n const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n","import { getISOWeekYear } from \"./getISOWeekYear.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date) {\n const year = getISOWeekYear(date);\n const fourthOfJanuary = constructFrom(date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const firstWeekOfNextYear = constructFrom(date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n const firstWeekOfThisYear = constructFrom(date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n","import { millisecondsInWeek } from \"./constants.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { startOfWeekYear } from \"./startOfWeekYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\n\nexport function getWeek(date, options) {\n const _date = toDate(date);\n const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { getWeekYear } from \"./getWeekYear.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const year = getWeekYear(date, options);\n const firstWeek = constructFrom(date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n const _date = startOfWeek(firstWeek, options);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n","export function addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign + output;\n}\n","import { addLeadingZeros } from \"../addLeadingZeros.mjs\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n // Year\n y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n },\n\n // Month\n M(date, token) {\n const month = date.getMonth();\n return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n\n // Day of the month\n d(date, token) {\n return addLeadingZeros(date.getDate(), token.length);\n },\n\n // AM or PM\n a(date, token) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return dayPeriodEnumValue.toUpperCase();\n case \"aaa\":\n return dayPeriodEnumValue;\n case \"aaaaa\":\n return dayPeriodEnumValue[0];\n case \"aaaa\":\n default:\n return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n }\n },\n\n // Hour [1-12]\n h(date, token) {\n return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n },\n\n // Hour [0-23]\n H(date, token) {\n return addLeadingZeros(date.getHours(), token.length);\n },\n\n // Minute\n m(date, token) {\n return addLeadingZeros(date.getMinutes(), token.length);\n },\n\n // Second\n s(date, token) {\n return addLeadingZeros(date.getSeconds(), token.length);\n },\n\n // Fraction of second\n S(date, token) {\n const numberOfDigits = token.length;\n const milliseconds = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds * Math.pow(10, numberOfDigits - 3),\n );\n return addLeadingZeros(fractionalSeconds, token.length);\n },\n};\n","import { getDayOfYear } from \"../../getDayOfYear.mjs\";\nimport { getISOWeek } from \"../../getISOWeek.mjs\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.mjs\";\nimport { getWeek } from \"../../getWeek.mjs\";\nimport { getWeekYear } from \"../../getWeekYear.mjs\";\nimport { addLeadingZeros } from \"../addLeadingZeros.mjs\";\nimport { lightFormatters } from \"./lightFormatters.mjs\";\n\nconst dayPeriodEnum = {\n am: \"am\",\n pm: \"pm\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n // Era\n G: function (date, token, localize) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize.era(era, { width: \"wide\" });\n }\n },\n\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === \"yo\") {\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, { unit: \"year\" });\n }\n\n return lightFormatters.y(date, token);\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n const signedWeekYear = getWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === \"Yo\") {\n return localize.ordinalNumber(weekYear, { unit: \"year\" });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n\n // ISO week-numbering year\n R: function (date, token) {\n const isoWeekYear = getISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n const year = date.getFullYear();\n return addLeadingZeros(year, token.length);\n },\n\n // Quarter\n Q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // Month\n M: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n case \"M\":\n case \"MM\":\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n const week = getWeek(date, options);\n\n if (token === \"wo\") {\n return localize.ordinalNumber(week, { unit: \"week\" });\n }\n\n return addLeadingZeros(week, token.length);\n },\n\n // ISO week of year\n I: function (date, token, localize) {\n const isoWeek = getISOWeek(date);\n\n if (token === \"Io\") {\n return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n\n // Day of the month\n d: function (date, token, localize) {\n if (token === \"do\") {\n return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n\n return lightFormatters.d(date, token);\n },\n\n // Day of year\n D: function (date, token, localize) {\n const dayOfYear = getDayOfYear(date);\n\n if (token === \"Do\") {\n return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n\n // Day of week\n E: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"EEEEE\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case \"e\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"ee\":\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"eeeee\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // T\n case \"ccccc\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\",\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // ISO day of week\n i: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case \"io\":\n return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"iiiii\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"iiiiii\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n const hours = date.getHours();\n const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"aaa\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"aaaaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n }\n\n switch (token) {\n case \"b\":\n case \"bb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"bbb\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"bbbbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"BBBBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === \"ho\") {\n let hours = date.getHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return lightFormatters.h(date, token);\n },\n\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === \"Ho\") {\n return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n\n return lightFormatters.H(date, token);\n },\n\n // Hour [0-11]\n K: function (date, token, localize) {\n const hours = date.getHours() % 12;\n\n if (token === \"Ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Hour [1-24]\n k: function (date, token, localize) {\n let hours = date.getHours();\n if (hours === 0) hours = 24;\n\n if (token === \"ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Minute\n m: function (date, token, localize) {\n if (token === \"mo\") {\n return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n\n return lightFormatters.m(date, token);\n },\n\n // Second\n s: function (date, token, localize) {\n if (token === \"so\") {\n return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n\n return lightFormatters.s(date, token);\n },\n\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n\n switch (token) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case \"XXXX\":\n case \"XX\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case \"XXXXX\":\n case \"XXX\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case \"xxxx\":\n case \"xx\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case \"xxxxx\":\n case \"xxx\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Seconds timestamp\n t: function (date, token, _localize) {\n const timestamp = Math.trunc(date.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n\n // Milliseconds timestamp\n T: function (date, token, _localize) {\n const timestamp = date.getTime();\n return addLeadingZeros(timestamp, token.length);\n },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = Math.trunc(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? \"-\" : \"+\";\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n const minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n","const dateLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"P\":\n return formatLong.date({ width: \"short\" });\n case \"PP\":\n return formatLong.date({ width: \"medium\" });\n case \"PPP\":\n return formatLong.date({ width: \"long\" });\n case \"PPPP\":\n default:\n return formatLong.date({ width: \"full\" });\n }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"p\":\n return formatLong.time({ width: \"short\" });\n case \"pp\":\n return formatLong.time({ width: \"medium\" });\n case \"ppp\":\n return formatLong.time({ width: \"long\" });\n case \"pppp\":\n default:\n return formatLong.time({ width: \"full\" });\n }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n const matchResult = pattern.match(/(P+)(p+)?/) || [];\n const datePattern = matchResult[1];\n const timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n let dateTimeFormat;\n\n switch (datePattern) {\n case \"P\":\n dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n break;\n case \"PP\":\n dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n break;\n }\n\n return dateTimeFormat\n .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter,\n};\n","const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n const _message = message(token, format, input);\n console.warn(_message);\n if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n","import { isDate } from \"./isDate.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n if (!isDate(date) && typeof date !== \"number\") {\n return false;\n }\n const _date = toDate(date);\n return !isNaN(Number(_date));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { defaultLocale } from \"./_lib/defaultLocale.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\nimport { formatters } from \"./_lib/format/formatters.mjs\";\nimport { longFormatters } from \"./_lib/format/longFormatters.mjs\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.mjs\";\nimport { isValid } from \"./isValid.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n * and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const originalDate = toDate(date);\n\n if (!isValid(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n let parts = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp)\n .map((substring) => {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString(substring) };\n }\n\n if (formatters[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n return { isToken: false, value: substring };\n });\n\n // invoke localize preprocessor (only for french locales at the moment)\n if (locale.localize.preprocessor) {\n parts = locale.localize.preprocessor(originalDate, parts);\n }\n\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n return parts\n .map((part) => {\n if (!part.isToken) return part.value;\n\n const token = part.value;\n\n if (\n (!options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)) ||\n (!options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token))\n ) {\n warnOrThrowProtectedError(token, formatStr, String(date));\n }\n\n const formatter = formatters[token[0]];\n return formatter(originalDate, token, locale.localize, formatterOptions);\n })\n .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n const matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n","import { format } from \"date-fns\";\n\nexport const formatDate = function(date) {\n return format(date, \"MM/dd/yyyy HH:mm:ss\");\n}","import { Query } from \"./helpers\";\n\nimport { formatDate } from \"../logic/dates\";\nimport { getProjects, getTitleIndexOf } from \"../logic/object\";\n\nconst getValue = function(query) {\n return get(query).value;\n}\n\nexport const get = function(query) {\n return new Query(query.toString()).get();\n}\n\nexport const Project = (function() {\n const getTitle = () => getValue(\"#title-input\");\n const getDesc = () => getValue(\"#desc-input\");\n const getDueDate = () => formatDate(getValue(\"#due-date-input\"));\n const extractValues = function() {\n return { title: getTitle(), description: getDesc(), dueDate: getDueDate() };\n }\n const extractAllValues = function() {\n let values = extractValues();\n values.tasks = [];\n values.notes = \"\";\n values.started = formatDate(new Date());\n return values;\n }\n return { getTitle, getDesc, getDueDate, extractValues, extractAllValues };\n})();\n\nconst getRadioValue = function(radioContainerQuery) {\n return getValue(`${radioContainerQuery} input[type=\\\"radio\\\"]:checked`);\n}\n\nexport const Tasks = (function() {\n const getTask = () => getValue(\"#task-name\");\n const getDueDate = () => formatDate(getValue(\"#due-date-task\"));\n const getPriority = () => getRadioValue(\"#task-priority-list\");\n const getFinishedState = () => JSON.parse(getRadioValue(\"#task-finished-state\"));\n const extractAllValues = () => {\n return {\n task: getTask(),\n dueDate: getDueDate(),\n priority: getPriority(),\n finished: getFinishedState()\n };\n }\n return { extractAllValues };\n})();\n\nexport const getNotes = () => getValue(\"#notes-textarea\");\n\nexport const getNotesFromProject = function(projectTitle) {\n const project = getProjects()[getTitleIndexOf(projectTitle)];\n return project.notes;\n}","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport function addDays(date, amount) {\n const _date = toDate(date);\n if (isNaN(amount)) return constructFrom(date, NaN);\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n _date.setDate(_date.getDate() + amount);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be added.\n *\n * @returns The new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n *\n * // Add one month to 30 January 2023:\n * const result = addMonths(new Date(2023, 0, 30), 1)\n * //=> Tue Feb 28 2023 00:00:00\n */\nexport function addMonths(date, amount) {\n const _date = toDate(date);\n if (isNaN(amount)) return constructFrom(date, NaN);\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n const dayOfMonth = _date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n const endOfDesiredMonth = constructFrom(date, _date.getTime());\n endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);\n const daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n _date.setFullYear(\n endOfDesiredMonth.getFullYear(),\n endOfDesiredMonth.getMonth(),\n dayOfMonth,\n );\n return _date;\n }\n}\n\n// Fallback for modularized imports:\nexport default addMonths;\n","import { add } from \"date-fns\";\n\nimport { formatDate } from \"./dates\";\n\nexport default function getDefaultProject() {\n const DateNow = formatDate(new Date());\n const DateVariable = formatDate(add(DateNow, { days: 1 }));\n return [\n {\n title: \"To-Do List\",\n description: \"Make a to-do list app\",\n tasks: [\n {\n task: \"Setup webpack\",\n dueDate: DateVariable,\n priority: \"high\",\n finished: true\n },\n {\n task: \"Finish Project\",\n dueDate: DateVariable,\n priority: \"high\",\n finished: true\n },\n {\n task: \"Submit Project\",\n dueDate: DateVariable,\n priority: \"high\",\n finished: true\n }\n ],\n dueDate: DateVariable,\n notes: \"This is a project for \\\"The Odin Project\\\"s online curriculum.\",\n started: DateNow\n }\n ];\n}","import { addDays } from \"./addDays.mjs\";\nimport { addMonths } from \"./addMonths.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name add\n * @category Common Helpers\n * @summary Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.\n *\n * @description\n * Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param duration - The object with years, months, weeks, days, hours, minutes and seconds to be added.\n *\n * | Key | Description |\n * |----------------|------------------------------------|\n * | years | Amount of years to be added |\n * | months | Amount of months to be added |\n * | weeks | Amount of weeks to be added |\n * | days | Amount of days to be added |\n * | hours | Amount of hours to be added |\n * | minutes | Amount of minutes to be added |\n * | seconds | Amount of seconds to be added |\n *\n * All values default to 0\n *\n * @returns The new date with the seconds added\n *\n * @example\n * // Add the following duration to 1 September 2014, 10:19:50\n * const result = add(new Date(2014, 8, 1, 10, 19, 50), {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\\\\-7\n * minutes: 9,\n * seconds: 30,\n * })\n * //=> Thu Jun 15 2017 15:29:20\n */\nexport function add(date, duration) {\n const {\n years = 0,\n months = 0,\n weeks = 0,\n days = 0,\n hours = 0,\n minutes = 0,\n seconds = 0,\n } = duration;\n\n // Add years and months\n const _date = toDate(date);\n const dateWithMonths =\n months || years ? addMonths(_date, months + years * 12) : _date;\n\n // Add weeks and days\n const dateWithDays =\n days || weeks ? addDays(dateWithMonths, days + weeks * 7) : dateWithMonths;\n\n // Add days, hours, minutes and seconds\n const minutesToAdd = minutes + hours * 60;\n const secondsToAdd = seconds + minutesToAdd * 60;\n const msToAdd = secondsToAdd * 1000;\n const finalDate = constructFrom(date, dateWithDays.getTime() + msToAdd);\n\n return finalDate;\n}\n\n// Fallback for modularized imports:\nexport default add;\n","import { subDays } from \"./subDays.mjs\";\nimport { subMonths } from \"./subMonths.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name sub\n * @category Common Helpers\n * @summary Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.\n *\n * @description\n * Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param duration - The object with years, months, weeks, days, hours, minutes and seconds to be subtracted\n *\n * | Key | Description |\n * |---------|------------------------------------|\n * | years | Amount of years to be subtracted |\n * | months | Amount of months to be subtracted |\n * | weeks | Amount of weeks to be subtracted |\n * | days | Amount of days to be subtracted |\n * | hours | Amount of hours to be subtracted |\n * | minutes | Amount of minutes to be subtracted |\n * | seconds | Amount of seconds to be subtracted |\n *\n * All values default to 0\n *\n * @returns The new date with the seconds subtracted\n *\n * @example\n * // Subtract the following duration from 15 June 2017 15:29:20\n * const result = sub(new Date(2017, 5, 15, 15, 29, 20), {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30\n * })\n * //=> Mon Sep 1 2014 10:19:50\n */\nexport function sub(date, duration) {\n const {\n years = 0,\n months = 0,\n weeks = 0,\n days = 0,\n hours = 0,\n minutes = 0,\n seconds = 0,\n } = duration;\n\n // Subtract years and months\n const dateWithoutMonths = subMonths(date, months + years * 12);\n\n // Subtract weeks and days\n const dateWithoutDays = subDays(dateWithoutMonths, days + weeks * 7);\n\n // Subtract hours, minutes and seconds\n const minutestoSub = minutes + hours * 60;\n const secondstoSub = seconds + minutestoSub * 60;\n const mstoSub = secondstoSub * 1000;\n const finalDate = constructFrom(date, dateWithoutDays.getTime() - mstoSub);\n\n return finalDate;\n}\n\n// Fallback for modularized imports:\nexport default sub;\n","import { addDays } from \"./addDays.mjs\";\n\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be subtracted.\n *\n * @returns The new date with the days subtracted\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport function subDays(date, amount) {\n return addDays(date, -amount);\n}\n\n// Fallback for modularized imports:\nexport default subDays;\n","import { addMonths } from \"./addMonths.mjs\";\n\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be subtracted.\n *\n * @returns The new date with the months subtracted\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function subMonths(date, amount) {\n return addMonths(date, -amount);\n}\n\n// Fallback for modularized imports:\nexport default subMonths;\n","import { boolChoiceDialog, showNewTaskForm, showNotesDialog, showTasksDialog } from \"../dom/dialogs\";\nimport { createDiv, createButton, appendTo, getAllTabs, createText, getContent, resetContent, handleClick } from \"../dom/helpers\";\nimport { getMonthProjects, getProjects, getTitleIndexOf, getTodayProjects, getWeekProjects, getYearProjects, handleDeleteProject } from \"./object\";\nimport { format } from \"date-fns\";\n\nconst createTab = (content) => createButton(\"tab\", `${content}`);\n\nconst setIds = function(...elements) {\n elements.forEach((element) => {\n element.id = `${element.textContent.toLowerCase()}-${element.className}`;\n });\n}\n\nconst setEvents = function(...elements) {\n elements.forEach((element) => {\n element.addEventListener(\"click\", () => {\n activateTab(element.id);\n });\n });\n}\n\nexport default function getTabs() {\n const tabs = createDiv(\"tabs\");\n const today = createTab(\"Today\");\n const thisWeek = createTab(\"This Week\");\n const thisMonth = createTab(\"This Month\");\n const thisYear = createTab(\"This Year\");\n const allTime = createTab(\"All\");\n setIds(today, thisWeek, thisMonth, thisYear, allTime);\n setEvents(today, thisWeek, thisMonth, thisYear, allTime);\n handleClick(loadToday, today);\n handleClick(loadWeek, thisWeek);\n handleClick(loadMonth, thisMonth);\n handleClick(loadYear, thisYear);\n handleClick(loadAll, allTime);\n appendTo(tabs, today, thisWeek, thisMonth, thisYear, allTime);\n return tabs;\n}\n\nconst activateTab = function(tabId) {\n getAllTabs().forEach((tab) => {\n if (tab.id === tabId) {\n tab.className = \"tab active-tab\";\n }\n else {\n tab.className = \"tab\";\n }\n });\n}\n\nconst content = getContent();\n\nconst createProjectCard = function(project) {\n const projectIndex = getTitleIndexOf(project.title);\n const projectCard = createDiv(\"project-card\");\n const upperPart = createDiv(\"card-upper\");\n const projectTitle = createText(\"project-title\", project.title, \"h3\");\n const deleteButton = createButton(`delete delete-project-${projectIndex}`, \"\");\n handleClick(() => boolChoiceDialog(`Are you sure you want to delete the \\\"${project.title}\\\" project?`,\n () => { handleDeleteProject(document.querySelector(`.delete-project-${projectIndex}`)) }), deleteButton);\n appendTo(upperPart, projectTitle, deleteButton);\n const lowerPart = createDiv(\"card-lower\");\n const projectDesc = createText(\"project-desc\", project.description, \"p\");\n const startedStatus = createText(\"project-started\", ` -${format(project.started, \"MM/dd/yyyy\")}`, \"span\");\n appendTo(projectDesc, startedStatus);\n const buttons = createDiv(\"card-buttons\");\n const viewButton = createButton(\"view view-project\", \"\");\n handleClick(() => showTasksDialog(project.title), viewButton);\n const addTaskButton = createButton(\"project-add-task\", \"\");\n handleClick(() => boolChoiceDialog(\"Do you want to add a task for this project?\", showNewTaskForm), addTaskButton);\n const notesButton = createButton(\"project-notes\", \"\");\n handleClick(() => showNotesDialog(project.title), notesButton);\n appendTo(buttons, notesButton, addTaskButton, viewButton);\n appendTo(lowerPart, projectDesc, buttons);\n appendTo(projectCard, upperPart, lowerPart);\n return projectCard;\n}\n\nexport const loadToday = function() {\n const projects = getTodayProjects();\n activateTab(\"today-tab\");\n updateTab(projects);\n}\n\nconst loadWeek = function() {\n updateTab(getWeekProjects());\n}\n\nconst loadMonth = function() {\n updateTab(getMonthProjects());\n}\n\nconst loadYear = function() {\n updateTab(getYearProjects());\n}\n\nconst loadAll = function() {\n updateTab(getProjects());\n}\n\nconst updateTab = function(projects) {\n resetContent();\n projects.forEach((project) => {\n appendTo(content, createProjectCard(project));\n });\n}","import { getNotes, Project, Tasks } from \"../dom/get\";\n\nimport getDefaultProject from \"./default\";\n\nimport { sub, compareDesc } from \"date-fns\";\nimport { formatDate } from \"./dates\";\nimport { loadToday } from \"./tabs\";\nimport { handleTaskDialogs } from \"../dom/dialogs\";\nimport { closeDialogs } from \"../dom/helpers\";\n\nexport const handleEmptyStorage = function() {\n if (localStorage.getItem(\"projects\") === null) {\n localStorage.setItem(\"projects\", JSON.stringify(getDefaultProject()));\n }\n else if (getProjects().length === 0) {\n const projects = getProjects();\n projects.push(getDefaultProject()[0]);\n setProjects(projects);\n }\n}\n\nexport const getProjects = function() {\n return JSON.parse(localStorage.getItem(\"projects\"));\n}\n\nexport const getProjectsLength = function() {\n return getProjects().length;\n}\n\nconst setProjects = function(newProjects) {\n localStorage.setItem(\"projects\", JSON.stringify(newProjects));\n}\n\nexport const addNewProject = function(event) {\n event.preventDefault();\n const projectObject = Project.extractAllValues();\n if (!includesTitle(projectObject.title)) {\n const newProjectsStorage = getProjects();\n newProjectsStorage.push(projectObject);\n setProjects(newProjectsStorage);\n loadToday();\n closeDialogs();\n }\n}\n\nconst includesTitle = function(title) {\n const projects = getProjects();\n let res = false;\n projects.map((project) => {\n if (project.title === title) {\n res = true;\n }\n });\n return res;\n}\n\nconst includesTask = function(task, projectTitle) {\n const project = getProjects()[getTitleIndexOf(projectTitle)];\n let res = false;\n project.tasks.map((taskObject) => {\n if (taskObject.task === task) {\n res = true;\n }\n });\n return res;\n}\n\nconst isBetween = function(newerDate, olderDate, dateForCompare) {\n return Date.parse(dateForCompare) >= Date.parse(olderDate) && Date.parse(dateForCompare) <= Date.parse(newerDate); \n}\n\nexport const getTodayProjects = function() {\n const projects = getProjects();\n const DateNow = new Date();\n const todayProjects = projects.filter((project) => {\n return isBetween(DateNow, sub(DateNow, { days: 1 }), project.started);\n });\n return todayProjects;\n}\n\nexport const getWeekProjects = function() {\n const projects = getProjects();\n const DateNow = new Date();\n const weekProjects = projects.filter((project) => {\n return isBetween(DateNow, sub(DateNow, { weeks: 1 }), project.started);\n });\n return weekProjects;\n}\n\nexport const getMonthProjects = function() {\n const projects = getProjects();\n const DateNow = new Date();\n const monthProjects = projects.filter((project) => {\n return isBetween(DateNow, sub(DateNow, { months: 1 }), project.started);\n });\n return monthProjects;\n}\n\nexport const getYearProjects = function() {\n const projects = getProjects();\n const DateNow = new Date();\n const yearProjects = projects.filter((project) => {\n return isBetween(DateNow, sub(DateNow, { years: 1 }), project.started);\n });\n return yearProjects;\n}\n\nexport const removeProject = function(projectIndex) {\n const projects = getProjects();\n projects.splice(projectIndex, 1);\n setProjects(projects);\n}\n\nexport const getTitleIndexOf = function(projectTitle) {\n const projects = getProjects();\n let res = null;\n projects.forEach((project, index) => {\n if (project.title === projectTitle) {\n res = index;\n }\n });\n return res;\n}\n\nexport const handleDeleteProject = function(deleteButton) {\n const projectTitle = Array.from(deleteButton.parentNode.getElementsByClassName(\"project-title\"))[0].textContent;\n console.log(deleteButton.parentNode);\n if (includesTitle(projectTitle)) {\n removeProject(getTitleIndexOf(projectTitle));\n loadToday();\n }\n}\n\nexport const addNewTask = function(projectTitle) {\n const projects = getProjects();\n const newTask = Tasks.extractAllValues();\n if (!includesTask(newTask.task, projectTitle)) {\n projects[getTitleIndexOf(projectTitle)].tasks.push(newTask);\n setProjects(projects);\n }\n handleTaskDialogs(projectTitle);\n}\n\nconst getTaskIndex = function(task, projectTitle) {\n const project = getProjects()[getTitleIndexOf(projectTitle)];\n let index;\n project.tasks.map((taskObject, taskIndex) => {\n if (taskObject.task === task) {\n index = taskIndex;\n }\n })\n return index;\n}\n\nexport const deleteTask = function(task, projectTitle) {\n const projects = getProjects();\n projects[getTitleIndexOf(projectTitle)].tasks.splice(getTaskIndex(task, projectTitle), 1);\n setProjects(projects);\n handleTaskDialogs(projectTitle);\n}\n\nexport const handleCheck = function(checkBox, task, projectTitle) {\n const projects = getProjects();\n projects[getTitleIndexOf(projectTitle)]\n .tasks[getTaskIndex(task, projectTitle)]\n .finished = checkBox.checked;\n setProjects(projects);\n}\n\nexport const saveNotes = function(projectTitle) {\n const projects = getProjects();\n const notes = getNotes();\n projects[getTitleIndexOf(projectTitle)].notes = notes;\n setProjects(projects);\n closeDialogs();\n}","import { handleSubmit } from \"../logic/form\";\nimport { getDialogSpace, createDiv, createButton, createDialog, appendTo, createText,\n handleClick, showLastDialog, closeDialog, closeDialogs, createForm, createLabel,\n createInput, createRequiredInput, createSubmitButton,\n createBulletList, createListItem,\n createRadioButton,\n createFieldSet,\n createTextArea\n } from \"./helpers\";\nimport { addNewProject, addNewTask, deleteTask, getProjects, getTitleIndexOf, handleCheck, saveNotes } from \"../logic/object\";\nimport { format } from \"date-fns\";\nimport { get, getNotesFromProject } from \"./get\";\n\nconst dialogSpace = getDialogSpace();\n\nconst genericDialog = function(className, Id) {\n const dialog = createDialog(className, Id);\n const cancelButton = createButton(\"cancel-btn\", \"X\");\n handleClick(closeDialogs, cancelButton);\n appendTo(dialog, cancelButton);\n return dialog;\n}\n\nexport const boolChoiceDialog = function(question, nextStep) {\n const dialog = genericDialog(\"bool-dialog\");\n const text = createText(\"question\", `${question}`, \"p\");\n const choices = createDiv(\"choices\");\n const yesButton = createButton(\"dialog-btn yes-btn\", \"Yes\");\n const noButton = createButton(\"dialog-btn no-btn\", \"No\");\n handleClick(closeDialog, yesButton, noButton);\n handleClick(nextStep, yesButton)\n appendTo(choices, yesButton, noButton);\n appendTo(dialog, text, choices);\n appendTo(dialogSpace, dialog);\n showLastDialog();\n}\n\nexport const showProjectDialog = function() {\n const projectDialog = createProjectDialog();\n appendTo(dialogSpace, projectDialog);\n showLastDialog();\n}\n\nconst createProjectDialog = function() {\n const dialog = genericDialog(\"add-new\", \"add-project\");\n const form = createForm(\"add-form\", \"new-project\");\n const text = createText(\"form-title\", \"Add New Project\", \"h2\");\n const titleGroup = createDiv(\"group title-group\");\n const titleLabel = createLabel(\"Title:\", \"title-input\", \"project-label\");\n const titleInput = createRequiredInput(\"text\", \"title-input\", \"project-input required\");\n appendTo(titleGroup, titleLabel, titleInput);\n const descGroup = createDiv(\"group desc-group\");\n const descLabel = createLabel(\"Description:\", \"desc-input\", \"project-label\");\n const descInput = createInput(\"text\", \"desc-input\", \"project-input\");\n setRequired(descInput);\n appendTo(descGroup, descLabel, descInput);\n const dueDateGroup = createDiv(\"group due-date-group\");\n const dueDateLabel = createLabel(\"Due Date:\", \"due-date-input\", \"project-label\");\n const dueDate = createInput(\"datetime-local\", \"due-date-input\", \"project-input\");\n setRequired(dueDate);\n appendTo(dueDateGroup, dueDateLabel, dueDate);\n const submitButton = createSubmitButton(\"Add\", \"add-button project-submit\");\n handleSubmit(addNewProject, form);\n appendTo(form, text, titleGroup, descGroup, dueDateGroup, submitButton);\n appendTo(dialog, form);\n return dialog;\n}\n\nexport const showTasksDialog = function(projectTitle) {\n const tasksDialog = createTasksDialog(getTitleIndexOf(projectTitle));\n appendTo(dialogSpace, tasksDialog);\n showLastDialog();\n}\n\nconst hyphenLower = function(text) {\n return text.replace(/\\s+/g, \"-\").toLowerCase();\n}\n\nconst handleDeleteTask = function(task, projectTitle) {\n boolChoiceDialog(\"Are you sure you want to delete this task?\", () => deleteTask(task, projectTitle));\n}\n\nconst setRequired = function(...elements) {\n elements.map((element) => {\n element.setAttribute(\"required\", \"\");\n })\n}\n\nconst createTasksDialog = function(projectIndex) {\n const project = getProjects()[projectIndex];\n const dialog = genericDialog(\"tasks-dialog\", `tasks-${projectIndex}`);\n const container = createDiv(\"tasks-container\");\n const projectTitle = createText(\"tasks-header\", `${project.title}`, \"h3\");\n const taskList = createBulletList(\"task-list\");\n project.tasks.map((taskObject, index) => {\n const task = taskObject.task;\n const newTaskContainer = createDiv(\"task-container\");\n const taskCheckBox = createInput(\"checkbox\", `check-${hyphenLower(task)}`, \"task-checkbox\");\n taskCheckBox.checked = taskObject.finished;\n handleClick(() => {\n handleCheck(Array.from(document.querySelectorAll(\".task-checkbox\")[index]), task, project.title)\n }, taskCheckBox);\n const newTask = createListItem(\"task\", task);\n const prioritySignal = createDiv(`priority ${taskObject.priority}-priority`);\n const dueDateText = createText(\"due-date-task\", format(taskObject.dueDate, \"yyyy/MM/dd\"), \"p\");\n const deleteTaskButton = createButton(\"delete-task\", \"\");\n handleClick(() => handleDeleteTask(taskObject.task, project.title), deleteTaskButton);\n appendTo(newTaskContainer, taskCheckBox, newTask, prioritySignal, dueDateText, deleteTaskButton);\n appendTo(taskList, newTaskContainer);\n });\n const addDiv = createDiv(\"add-task-container\");\n const addTaskButton = createButton(\"tasks-add-task task-btn\", \"\");\n const addTaskText = createText(\"tasks-add-task task-text\", \"Add new task...\");\n handleClick(showNewTaskForm, addTaskButton, addTaskText);\n appendTo(addDiv, addTaskButton, addTaskText);\n appendTo(taskList, addDiv);\n appendTo(container, projectTitle, taskList);\n appendTo(dialog, container);\n return dialog;\n}\n\nexport const showNewTaskForm = function() {\n const newTaskForm = createNewTaskForm();\n appendTo(dialogSpace, newTaskForm);\n showLastDialog();\n}\n\nconst presetInput = function(containerClass, [...labelProperties], [...inputProperties]) {\n const container = createDiv(containerClass.toString());\n const label = createLabel(labelProperties[0], labelProperties[1], labelProperties[2]);\n const input = createInput(inputProperties[0], inputProperties[1], inputProperties[2]);\n setRequired(input);\n appendTo(container, label, input);\n return container;\n}\n\nconst presetRadioButton = function(value, name, Id, labelContent) {\n const container = createDiv(\"radio-container\");\n const radioButton = createRadioButton(name, value, \"radio\", Id, \"dialog-radio\");\n const label = createLabel(labelContent, Id, \"dialog-label\");\n appendTo(container, radioButton, label);\n return container;\n}\n\nconst presetRadioButtonRequired = function(value, name, Id, labelContent) {\n const container = createDiv(\"radio-container\");\n const radioButton = createRadioButton(name, value, \"radio\", Id, \"dialog-radio\");\n const label = createLabel(labelContent, Id, \"dialog-label\");\n setRequired(radioButton);\n appendTo(container, radioButton, label);\n return container;\n}\n\nconst createNewTaskForm = function() {\n const dialog = genericDialog(\"new-task-dialog\", \"new-task-dialog\");\n const container = createDiv(\"new-task-container\");\n const dialogTitle = createText(\"dialog-title\", \"Add New Task\", \"h3\");\n const form = createForm(\"new-task-form\", \"new-task-form\");\n const taskName = presetInput(\"input-container\", [\"Task:\", \"task-name\", \"dialog-label\"],\n [\"text\", \"task-name\", \"add-task task-name\"]);\n const dueDate = presetInput(\"input-container\", [\"Due Date:\", \"due-date-task\", \"dialog-label\"],\n [\"date\", \"due-date-task\", \"add-task task-due-date\"]\n );\n const priorityContainer = createDiv(\"input-container\");\n const priorityLabel = createLabel(\"Priority:\", \"task-priority-list\", \"dialog-label\");\n const priorityButtonContainer = createFieldSet(\"radios-container\");\n priorityButtonContainer.setAttribute(\"id\", \"task-priority-list\");\n const lowPriority = presetRadioButtonRequired(\"low\", \"task-priority\", \"\", \"Low\");\n const medPriority = presetRadioButton(\"medium\", \"task-priority\", \"\", \"Medium\");\n const highPriority = presetRadioButton(\"high\", \"task-priority\", \"\", \"High\");\n appendTo(priorityButtonContainer, lowPriority, medPriority, highPriority);\n appendTo(priorityContainer, priorityLabel, priorityButtonContainer);\n const finishedContainer = createDiv(\"input-container\");\n const finishedLabel = createLabel(\"Finished?\", \"task-finished-state\", \"dialog-label\");\n const finishedButtonContainer = createFieldSet(\"radios-container\");\n finishedButtonContainer.setAttribute(\"id\", \"task-finished-state\");\n const yesRadio = presetRadioButtonRequired(\"true\", \"task-finished-state\", \"\", \"Yes\");\n const noRadio = presetRadioButton(\"false\", \"task-finished-state\", \"\", \"No\");\n appendTo(finishedButtonContainer, yesRadio, noRadio);\n appendTo(finishedContainer, finishedLabel, finishedButtonContainer);\n const submitButton = createSubmitButton(\"Add\", \"add-task task-submit\");\n appendTo(form, taskName, dueDate, priorityContainer, finishedContainer, submitButton);\n handleSubmit(() => addNewTask(get(\"#dialogs dialog:first-child h3.tasks-header\").textContent), form);\n appendTo(container, dialogTitle, form);\n appendTo(dialog, container);\n return dialog;\n}\n\nexport const handleTaskDialogs = function(projectTitle) {\n closeDialogs();\n showTasksDialog(projectTitle);\n}\n\nexport const showNotesDialog = function(projectTitle) {\n const notesDialog = createNotesDialog(projectTitle);\n appendTo(dialogSpace, notesDialog);\n showLastDialog();\n}\n\nconst createNotesDialog = function(projectTitle) {\n const dialog = genericDialog(\"project-notes-dialog\", \"project-notes-dialog\");\n const container = createDiv(\"notes-container\");\n const title = createText(\"notes-title\", \"Project Notes:\", \"h3\");\n const notes = createTextArea(\"notes-textarea\", \"notes-textarea\", 4, 50, \"Write something here for the project...\");\n notes.value = getNotesFromProject(projectTitle);\n const saveButton = createButton(\"save-notes-btn\", \"Save\");\n handleClick(() => saveNotes(projectTitle), saveButton);\n appendTo(container, title, notes, saveButton);\n appendTo(dialog, container);\n return dialog;\n}","import { getHeader, createText, createImage, createDiv, appendTo, handleClick } from \"./helpers\";\nimport { showProjectDialog } from \"./dialogs\";\nimport getTabs from \"../logic/tabs\";\nimport { getProjectButton } from \"./buttons\";\n\nimport WebsiteLogo from \"../../images/logo.png\";\n\nexport default function loadHeader() {\n const header = getHeader();\n\n const websiteInfo = createDiv(\"web-info\");\n const icon = createImage(\"web-logo\", WebsiteLogo, \"website logo\");\n const title = createText(\"web-title\", \"Dailist\", \"h1\");\n appendTo(websiteInfo, icon, title);\n\n const tabs = getTabs();\n\n const newProjectButton = getProjectButton();\n handleClick(showProjectDialog, newProjectButton);\n\n appendTo(header, websiteInfo, tabs, newProjectButton);\n}","import { createButton } from \"./helpers\";\n\nexport const getProjectButton = function() {\n const button = createButton(\"new-project\", \"+ New Project\");\n return button;\n}","import \"./stylesheets/styles.css\";\n\nimport loadHeader from \"./scripts/dom/header\";\n\nimport { handleEmptyStorage } from \"./scripts/logic/object\";\nimport { loadToday } from \"./scripts/logic/tabs\";\n\nconst loadEverything = function() {\n handleEmptyStorage();\n loadHeader();\n loadToday();\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", loadEverything);\n"],"names":["___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_IMPORT_2___","___CSS_LOADER_URL_IMPORT_3___","___CSS_LOADER_URL_IMPORT_4___","___CSS_LOADER_URL_IMPORT_5___","___CSS_LOADER_URL_IMPORT_6___","___CSS_LOADER_URL_IMPORT_7___","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","___CSS_LOADER_URL_REPLACEMENT_3___","___CSS_LOADER_URL_REPLACEMENT_4___","___CSS_LOADER_URL_REPLACEMENT_5___","___CSS_LOADER_URL_REPLACEMENT_6___","___CSS_LOADER_URL_REPLACEMENT_7___","push","module","id","i","exports","cssWithMappingToString","list","toString","this","map","item","content","needLayer","concat","length","join","modules","media","dedupe","supports","layer","undefined","alreadyImportedModules","k","_k","url","options","String","__esModule","default","test","slice","hash","needQuotes","replace","cssMapping","btoa","base64","unescape","encodeURIComponent","JSON","stringify","data","sourceMapping","stylesInDOM","getIndexByIdentifier","identifier","result","modulesToDom","idCountMap","identifiers","base","count","indexByIdentifier","obj","css","sourceMap","references","updater","addElementStyle","byIndex","splice","api","domAPI","update","newObj","remove","lastIdentifiers","newList","index","newLastIdentifiers","_i","_index","memo","insert","style","target","styleTarget","document","querySelector","window","HTMLIFrameElement","contentDocument","head","e","getTarget","Error","appendChild","element","createElement","setAttributes","attributes","styleElement","nonce","setAttribute","insertStyleElement","styleTagTransform","apply","parentNode","removeChild","removeStyleElement","styleSheet","cssText","firstChild","createTextNode","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","m","n","getter","d","a","definition","key","o","Object","defineProperty","enumerable","get","g","globalThis","Function","prop","prototype","hasOwnProperty","call","scriptUrl","importScripts","location","currentScript","tagName","toUpperCase","src","scripts","getElementsByTagName","p","b","baseURI","self","href","nc","locals","Query","constructor","query","getAll","Array","from","querySelectorAll","createText","className","elementType","text","textContent","createDiv","div","createButton","button","appendTo","parentElement","childElements","forEach","childElement","handleClick","fn","elements","addEventListener","getAllTabs","getHeader","getContent","getDialogs","getDialog","dialogs","showLastDialog","showModal","closeDialogs","dialog","close","closeDialog","createForm","Id","method","form","createLabel","forId","label","createInput","type","input","createSubmitButton","submitButton","getDialogSpace","createRadioButton","name","value","createFieldSet","fieldSet","handleSubmit","forms","event","preventDefault","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","args","width","defaultWidth","formats","formatLong","date","full","long","medium","short","time","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","valuesArray","context","formattingValues","defaultFormattingWidth","values","argumentCallback","localize","ordinalNumber","dirtyNumber","_options","number","Number","rem100","era","narrow","abbreviated","wide","quarter","month","day","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","buildMatchFn","string","matchPattern","matchPatterns","defaultMatchWidth","matchResult","match","matchedString","parsePatterns","defaultParseWidth","isArray","array","findIndex","object","findKey","valueCallback","rest","parsePattern","parseInt","parseResult","any","enUS","code","formatDistance","token","tokenValue","addSuffix","comparison","formatRelative","_date","_baseDate","weekStartsOn","firstWeekContainsDate","defaultOptions","getDefaultOptions","Math","pow","millisecondsInWeek","millisecondsInDay","toDate","argument","argStr","Date","NaN","startOfDay","setHours","getTimezoneOffsetInMilliseconds","utcDate","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","setUTCFullYear","constructFrom","getDayOfYear","dateLeft","dateRight","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","round","differenceInCalendarDays","cleanDate","setFullYear","startOfYear","startOfWeek","locale","getDay","diff","setDate","startOfISOWeek","getISOWeekYear","year","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","getTime","getISOWeek","fourthOfJanuary","startOfISOWeekYear","getWeekYear","firstWeekOfNextYear","firstWeekOfThisYear","getWeek","firstWeek","startOfWeekYear","addLeadingZeros","targetLength","abs","padStart","lightFormatters","y","signedYear","M","dayPeriodEnumValue","h","H","s","S","numberOfDigits","milliseconds","trunc","formatters","G","unit","Y","signedWeekYear","weekYear","R","u","Q","ceil","q","L","w","week","I","isoWeek","D","dayOfYear","E","dayOfWeek","localDayOfWeek","c","isoDayOfWeek","toLowerCase","hours","B","K","X","_localize","timezoneOffset","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","x","O","formatTimezoneShort","z","t","T","offset","delimiter","sign","absOffset","minutes","dateLongFormatter","pattern","timeLongFormatter","longFormatters","P","datePattern","timePattern","dateTimeFormat","dayOfYearTokenRE","weekYearTokenRE","throwTokens","isValid","isNaN","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","format","formatStr","originalDate","RangeError","parts","substring","firstCharacter","longFormatter","isToken","cleanEscapedString","preprocessor","formatterOptions","part","useAdditionalWeekYearTokens","isProtectedWeekYearToken","useAdditionalDayOfYearTokens","isProtectedDayOfYearToken","_message","subject","message","console","warn","includes","warnOrThrowProtectedError","formatter","matched","formatDate","getValue","Project","getTitle","getDesc","getDueDate","extractValues","title","description","dueDate","extractAllValues","tasks","notes","started","getRadioValue","radioContainerQuery","Tasks","task","priority","finished","parse","addDays","amount","addMonths","dayOfMonth","endOfDesiredMonth","setMonth","getDefaultProject","DateNow","DateVariable","duration","years","months","weeks","days","seconds","dateWithMonths","msToAdd","add","sub","mstoSub","subDays","subMonths","createTab","activateTab","tabId","tab","loadToday","projects","getTodayProjects","updateTab","loadWeek","getWeekProjects","loadMonth","getMonthProjects","loadYear","getYearProjects","loadAll","getProjects","innerHTML","project","projectIndex","getTitleIndexOf","projectCard","upperPart","projectTitle","deleteButton","boolChoiceDialog","handleDeleteProject","lowerPart","projectDesc","startedStatus","buttons","viewButton","showTasksDialog","addTaskButton","showNewTaskForm","notesButton","showNotesDialog","createProjectCard","localStorage","getItem","setProjects","newProjects","setItem","addNewProject","projectObject","includesTitle","newProjectsStorage","res","isBetween","newerDate","olderDate","dateForCompare","filter","getElementsByClassName","log","removeProject","getTaskIndex","taskObject","taskIndex","dialogSpace","genericDialog","createDialog","cancelButton","question","nextStep","choices","yesButton","noButton","showProjectDialog","projectDialog","createProjectDialog","titleGroup","titleLabel","titleInput","createRequiredInput","descGroup","descLabel","descInput","setRequired","dueDateGroup","dueDateLabel","tasksDialog","createTasksDialog","container","taskList","bulletList","createBulletList","newTaskContainer","taskCheckBox","checked","checkBox","handleCheck","newTask","listItem","createListItem","prioritySignal","dueDateText","deleteTaskButton","handleTaskDialogs","deleteTask","handleDeleteTask","addDiv","addTaskText","newTaskForm","createNewTaskForm","presetInput","containerClass","labelProperties","inputProperties","presetRadioButton","labelContent","radioButton","presetRadioButtonRequired","dialogTitle","taskName","priorityContainer","priorityLabel","priorityButtonContainer","lowPriority","medPriority","highPriority","finishedContainer","finishedLabel","finishedButtonContainer","yesRadio","noRadio","includesTask","addNewTask","notesDialog","createNotesDialog","textArea","createTextArea","getNotesFromProject","saveButton","saveNotes","loadHeader","header","websiteInfo","icon","imageURL","img","alt","createImage","tabs","thisWeek","thisMonth","thisYear","allTime","setIds","setEvents","getTabs","newProjectButton","handleEmptyStorage"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"main.js","mappings":"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","sources":["webpack://todo-list/./src/fonts/Roboto-Font/stylesheet.css","webpack://todo-list/./src/fonts/alex-brush/stylesheet.css","webpack://todo-list/./src/stylesheets/styles.css","webpack://todo-list/./node_modules/css-loader/dist/runtime/api.js","webpack://todo-list/./node_modules/css-loader/dist/runtime/getUrl.js","webpack://todo-list/./node_modules/css-loader/dist/runtime/sourceMaps.js","webpack://todo-list/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://todo-list/./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://todo-list/./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://todo-list/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack://todo-list/./node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack://todo-list/./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack://todo-list/webpack/bootstrap","webpack://todo-list/webpack/runtime/compat get default export","webpack://todo-list/webpack/runtime/define property getters","webpack://todo-list/webpack/runtime/global","webpack://todo-list/webpack/runtime/hasOwnProperty shorthand","webpack://todo-list/webpack/runtime/publicPath","webpack://todo-list/webpack/runtime/jsonp chunk loading","webpack://todo-list/webpack/runtime/nonce","webpack://todo-list/./src/stylesheets/styles.css?3fea","webpack://todo-list/./src/scripts/dom/helpers.js","webpack://todo-list/./src/scripts/logic/form.js","webpack://todo-list/./node_modules/date-fns/locale/en-US/_lib/formatDistance.mjs","webpack://todo-list/./node_modules/date-fns/locale/_lib/buildFormatLongFn.mjs","webpack://todo-list/./node_modules/date-fns/locale/en-US/_lib/formatLong.mjs","webpack://todo-list/./node_modules/date-fns/locale/en-US/_lib/formatRelative.mjs","webpack://todo-list/./node_modules/date-fns/locale/_lib/buildLocalizeFn.mjs","webpack://todo-list/./node_modules/date-fns/locale/en-US/_lib/localize.mjs","webpack://todo-list/./node_modules/date-fns/locale/_lib/buildMatchFn.mjs","webpack://todo-list/./node_modules/date-fns/locale/en-US/_lib/match.mjs","webpack://todo-list/./node_modules/date-fns/locale/_lib/buildMatchPatternFn.mjs","webpack://todo-list/./node_modules/date-fns/locale/en-US.mjs","webpack://todo-list/./node_modules/date-fns/_lib/defaultOptions.mjs","webpack://todo-list/./node_modules/date-fns/constants.mjs","webpack://todo-list/./node_modules/date-fns/toDate.mjs","webpack://todo-list/./node_modules/date-fns/startOfDay.mjs","webpack://todo-list/./node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.mjs","webpack://todo-list/./node_modules/date-fns/constructFrom.mjs","webpack://todo-list/./node_modules/date-fns/getDayOfYear.mjs","webpack://todo-list/./node_modules/date-fns/differenceInCalendarDays.mjs","webpack://todo-list/./node_modules/date-fns/startOfYear.mjs","webpack://todo-list/./node_modules/date-fns/startOfWeek.mjs","webpack://todo-list/./node_modules/date-fns/startOfISOWeek.mjs","webpack://todo-list/./node_modules/date-fns/getISOWeekYear.mjs","webpack://todo-list/./node_modules/date-fns/getISOWeek.mjs","webpack://todo-list/./node_modules/date-fns/startOfISOWeekYear.mjs","webpack://todo-list/./node_modules/date-fns/getWeekYear.mjs","webpack://todo-list/./node_modules/date-fns/getWeek.mjs","webpack://todo-list/./node_modules/date-fns/startOfWeekYear.mjs","webpack://todo-list/./node_modules/date-fns/_lib/addLeadingZeros.mjs","webpack://todo-list/./node_modules/date-fns/_lib/format/lightFormatters.mjs","webpack://todo-list/./node_modules/date-fns/_lib/format/formatters.mjs","webpack://todo-list/./node_modules/date-fns/_lib/format/longFormatters.mjs","webpack://todo-list/./node_modules/date-fns/_lib/protectedTokens.mjs","webpack://todo-list/./node_modules/date-fns/isValid.mjs","webpack://todo-list/./node_modules/date-fns/isDate.mjs","webpack://todo-list/./node_modules/date-fns/format.mjs","webpack://todo-list/./src/scripts/logic/dates.js","webpack://todo-list/./src/scripts/dom/get.js","webpack://todo-list/./node_modules/date-fns/addDays.mjs","webpack://todo-list/./node_modules/date-fns/addMonths.mjs","webpack://todo-list/./src/scripts/logic/default.js","webpack://todo-list/./node_modules/date-fns/add.mjs","webpack://todo-list/./node_modules/date-fns/sub.mjs","webpack://todo-list/./node_modules/date-fns/subDays.mjs","webpack://todo-list/./node_modules/date-fns/subMonths.mjs","webpack://todo-list/./src/scripts/logic/tabs.js","webpack://todo-list/./src/scripts/logic/object.js","webpack://todo-list/./src/scripts/dom/dialogs.js","webpack://todo-list/./src/scripts/dom/header.js","webpack://todo-list/./src/scripts/dom/buttons.js","webpack://todo-list/./src/index.js"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"roboto-regular-webfont.woff2\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"roboto-regular-webfont.woff\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"roboto-thin-webfont.woff2\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"roboto-thin-webfont.woff\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_4___ = new URL(\"roboto-black-webfont.woff2\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_5___ = new URL(\"roboto-black-webfont.woff\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_6___ = new URL(\"roboto-bold-webfont.woff2\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_7___ = new URL(\"roboto-bold-webfont.woff\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\nvar ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___);\nvar ___CSS_LOADER_URL_REPLACEMENT_6___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___);\nvar ___CSS_LOADER_URL_REPLACEMENT_7___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*! Generated by Font Squirrel (https://www.fontsquirrel.com) on August 13, 2024 */\n\n\n\n@font-face {\n font-family: 'robotoregular';\n src: url(${___CSS_LOADER_URL_REPLACEMENT_0___}) format('woff2'),\n url(${___CSS_LOADER_URL_REPLACEMENT_1___}) format('woff');\n font-weight: normal;\n font-style: normal;\n\n}\n\n\n\n\n@font-face {\n font-family: 'robotothin';\n src: url(${___CSS_LOADER_URL_REPLACEMENT_2___}) format('woff2'),\n url(${___CSS_LOADER_URL_REPLACEMENT_3___}) format('woff');\n font-weight: normal;\n font-style: normal;\n\n}\n\n\n\n\n@font-face {\n font-family: 'robotoblack';\n src: url(${___CSS_LOADER_URL_REPLACEMENT_4___}) format('woff2'),\n url(${___CSS_LOADER_URL_REPLACEMENT_5___}) format('woff');\n font-weight: normal;\n font-style: normal;\n\n}\n\n\n\n\n@font-face {\n font-family: 'robotobold';\n src: url(${___CSS_LOADER_URL_REPLACEMENT_6___}) format('woff2'),\n url(${___CSS_LOADER_URL_REPLACEMENT_7___}) format('woff');\n font-weight: normal;\n font-style: normal;\n\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/fonts/Roboto-Font/stylesheet.css\"],\"names\":[],\"mappings\":\"AAAA,kFAAkF;;;;AAIlF;IACI,4BAA4B;IAC5B;+DACsD;IACtD,mBAAmB;IACnB,kBAAkB;;AAEtB;;;;;AAKA;IACI,yBAAyB;IACzB;+DACmD;IACnD,mBAAmB;IACnB,kBAAkB;;AAEtB;;;;;AAKA;IACI,0BAA0B;IAC1B;+DACoD;IACpD,mBAAmB;IACnB,kBAAkB;;AAEtB;;;;;AAKA;IACI,yBAAyB;IACzB;+DACmD;IACnD,mBAAmB;IACnB,kBAAkB;;AAEtB\",\"sourcesContent\":[\"/*! Generated by Font Squirrel (https://www.fontsquirrel.com) on August 13, 2024 */\\n\\n\\n\\n@font-face {\\n font-family: 'robotoregular';\\n src: url('roboto-regular-webfont.woff2') format('woff2'),\\n url('roboto-regular-webfont.woff') format('woff');\\n font-weight: normal;\\n font-style: normal;\\n\\n}\\n\\n\\n\\n\\n@font-face {\\n font-family: 'robotothin';\\n src: url('roboto-thin-webfont.woff2') format('woff2'),\\n url('roboto-thin-webfont.woff') format('woff');\\n font-weight: normal;\\n font-style: normal;\\n\\n}\\n\\n\\n\\n\\n@font-face {\\n font-family: 'robotoblack';\\n src: url('roboto-black-webfont.woff2') format('woff2'),\\n url('roboto-black-webfont.woff') format('woff');\\n font-weight: normal;\\n font-style: normal;\\n\\n}\\n\\n\\n\\n\\n@font-face {\\n font-family: 'robotobold';\\n src: url('roboto-bold-webfont.woff2') format('woff2'),\\n url('roboto-bold-webfont.woff') format('woff');\\n font-weight: normal;\\n font-style: normal;\\n\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"alexbrush-regular-webfont.woff2\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"alexbrush-regular-webfont.woff\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `/*! Generated by Font Squirrel (https://www.fontsquirrel.com) on August 28, 2024 */\n\n\n\n@font-face {\n font-family: 'alex_brushregular';\n src: url(${___CSS_LOADER_URL_REPLACEMENT_0___}) format('woff2'),\n url(${___CSS_LOADER_URL_REPLACEMENT_1___}) format('woff');\n font-weight: normal;\n font-style: normal;\n\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/fonts/alex-brush/stylesheet.css\"],\"names\":[],\"mappings\":\"AAAA,kFAAkF;;;;AAIlF;IACI,gCAAgC;IAChC;+DACyD;IACzD,mBAAmB;IACnB,kBAAkB;;AAEtB\",\"sourcesContent\":[\"/*! Generated by Font Squirrel (https://www.fontsquirrel.com) on August 28, 2024 */\\n\\n\\n\\n@font-face {\\n font-family: 'alex_brushregular';\\n src: url('alexbrush-regular-webfont.woff2') format('woff2'),\\n url('alexbrush-regular-webfont.woff') format('woff');\\n font-weight: normal;\\n font-style: normal;\\n\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_0___ from \"-!../../node_modules/css-loader/dist/cjs.js!../fonts/Roboto-Font/stylesheet.css\";\nimport ___CSS_LOADER_AT_RULE_IMPORT_1___ from \"-!../../node_modules/css-loader/dist/cjs.js!../fonts/alex-brush/stylesheet.css\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../images/view-project.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"../images/add.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"../images/notes.png\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"../images/delete.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_0___);\n___CSS_LOADER_EXPORT___.i(___CSS_LOADER_AT_RULE_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:root {\n --main-color: #222831;\n --secondary-color: #393E46;\n --tertiary-color: #00ADB5;\n --dark-tertiary-color: hsl(183, 100%, 25%);\n --quaternary-color: #EEEEEE;\n --logo-color: #FFC90E; \n --pad-height: 8px;\n --pad-width: 16px;\n --pad-neg-height: calc(var(--pad-height) - (var(--pad-height) * 2));\n --pad-neg-width: calc(var(--pad-width) - (var(--pad-width) * 2));\n --mild-shadow: 5px 5px 10px rgba(0, 0, 0, 0.25);\n --generic-padding: var(--pad-height) var(--pad-width);\n --small-padding: calc(var(--pad-height) / 2) calc(var(--pad-width) / 2);\n --softer-shadow: 5px 5px 10px rgba(0, 0, 0, 0.10);\n --light-tertiary-color: hsl(183, 100%, 45%);\n}\n\nbody {\n height: 100vh;\n width: auto;\n background-color: var(--quaternary-color);\n overflow: hidden;\n margin: 0;\n padding: 0;\n display: grid;\n grid-template: max-content 1fr max-content / 1fr;\n grid-template-areas:\n \"header\"\n \"content\"\n \"footer\";\n}\n\n* {\n padding: 0;\n margin: 0;\n font-family: 'robotoregular', sans-serif;\n}\n\n.web-info {\n display: flex;\n align-items: center;\n cursor: pointer;\n}\n\n.web-logo {\n height: 48px;\n width: 48px;\n position: relative;\n top: -4px;\n}\n\n.web-title {\n font-family: 'alex_brushregular', sans-serif;\n color: var(--logo-color);\n font-size: 48px;\n}\n\nheader {\n grid-area: header;\n background-image: linear-gradient(var(--main-color), var(--secondary-color));\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: var(--pad-height) var(--pad-width);\n box-shadow: var(--mild-shadow);\n}\n\n.tabs {\n align-self: flex-end;\n position: relative;\n bottom: var(--pad-neg-height);\n display: flex;\n gap: var(--pad-width);\n}\n\n.tab {\n font-family: 'robotothin', sans-serif;\n font-size: 24px;\n border: 0;\n background-color: transparent;\n padding-bottom: var(--pad-height);\n color: var(--quaternary-color);\n margin-bottom: 2px;\n}\n\n.tab:not(.active-tab):hover,\n.active-tab {\n color: var(--logo-color);\n border-bottom: 1px solid var(--logo-color);\n margin-bottom: 1px;\n text-shadow: var(--mild-shadow);\n} \n\n.active-tab {\n cursor: auto;\n}\n\nbutton {\n cursor: pointer;\n font-family: 'robotobold', sans-serif;\n}\n\nbutton:not(.tab):hover {\n box-shadow: var(--mild-shadow);\n}\n\nbutton.new-project {\n border: 0;\n padding: var(--pad-height) var(--pad-width);\n border-radius: 25px;\n font-family: 'robotobold', sans-serif;\n background-color: var(--secondary-color);\n color: var(--quaternary-color);\n}\n\nbutton.new-project:hover {\n background-color: var(--logo-color);\n text-shadow: var(--mild-shadow);\n color: var(--secondary-color);\n}\n\ndiv#content {\n grid-area: content;\n}\n\nfooter {\n grid-area: footer;\n}\n\ndialog {\n margin: auto;\n padding: var(--pad-height) var(--pad-width);\n overflow: visible;\n border: 2px solid black;\n border-radius: 5px;\n background-color: var(--quaternary-color);\n}\n\ndialog::backdrop {\n background-color: rgba(0, 0, 0, 0.10);\n}\n\nform {\n display: flex;\n flex-direction: column;\n gap: var(--pad-height);\n}\n\n.cancel-btn {\n position: absolute;\n --square-pad: 5px;\n --neg-square-pad: -8px;\n top: var(--neg-square-pad);\n right: var(--neg-square-pad);\n padding: 0 var(--square-pad);\n border-radius: 10px;\n background-color: hsl(0, 50%, 50%);\n border: 2px solid black;\n}\n\ninput,\nselect {\n font-size: 14px;\n}\n\ninput[type=\"text\"] {\n border: 0;\n background-color: var(--quaternary-color);\n border-bottom: 1px solid black;\n}\n\ninput {\n outline: 0;\n}\n\n.group {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n}\n\nlabel,\n.form-title {\n font-family: 'robotobold';\n}\n\nlabel {\n font-size: 18px;\n}\n\n.group > :not(label) {\n width: 50%;\n}\n\ndialog .add-button:hover,\ndialog .cancel-btn:hover {\n box-shadow: none;\n}\n\n#content {\n display: grid;\n grid-auto-rows: minmax(50px, 250px);\n grid-template-columns: repeat(auto-fill, minmax(50px, 250px));\n gap: 16px;\n padding: 16px;\n overflow: auto;\n}\n\n.project-card button {\n height: 20px;\n width: 20px;\n border: 0;\n background-size: 20px;\n background-color: transparent;\n}\n\n.card-lower button:hover {\n background-color: var(--light-tertiary-color);\n border-radius: 5px;\n overflow: visible;\n}\n\n.project-card {\n border-radius: 15px;\n background-color: var(--tertiary-color);\n color: var(--quaternary-color);\n box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.15);\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n.project-card:hover {\n box-shadow: var(--mild-shadow);\n}\n\n.view {\n background-image: url(${___CSS_LOADER_URL_REPLACEMENT_0___});\n}\n\n.project-add-task {\n background-image: url(${___CSS_LOADER_URL_REPLACEMENT_1___});\n}\n\n.project-notes {\n background-image: url(${___CSS_LOADER_URL_REPLACEMENT_2___});\n}\n\n.card-upper {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--pad-height);\n background-color: var(--secondary-color);\n border-radius: 15px;\n}\n\n.card-upper:hover,\n.card-lower:hover {\n padding-bottom: var(--pad-height);\n}\n\n.card-upper:hover {\n border-bottom: 5px solid var(--main-color);\n}\n\n.card-lower:hover {\n border-bottom: 5px solid var(--dark-tertiary-color);\n}\n\n.card-lower {\n display: flex;\n flex-direction: column;\n padding: var(--pad-height);\n flex-grow: 1;\n gap: 18px;\n border-radius: 15px;\n justify-content: space-between;\n}\n\n.card-upper,\n.card-lower {\n padding-bottom: calc(var(--pad-height) + 5px);\n}\n\n.card-buttons {\n align-self: flex-end;\n display: flex;\n gap: 4px;\n}\n\n.project-desc {\n hyphens: auto;\n}\n\n.card-upper .delete {\n background-image: url(${___CSS_LOADER_URL_REPLACEMENT_3___});\n background-color: rgba(255, 68, 68, 0.5);\n border-radius: 5px;\n}\n\n.card-upper .delete:hover {\n background-color: rgb(255, 68, 68);\n}\n\n.bool-dialog {\n padding: var(--generic-padding);\n background-color: var(--quaternary-color);\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.question {\n font-family: 'robotothin', sans-serif;\n font-weight: bold;\n}\n\n.choices {\n display: flex;\n justify-content: space-around;\n}\n\n.dialog-btn {\n padding: var(--small-padding);\n border: 1px solid black;\n border-radius: 5px;\n}\n\n.dialog-btn:hover {\n box-shadow: var(--softer-shadow);\n}\n\n.yes-btn {\n background-color: hsl(120, 100%, 50%);\n}\n\n.yes-btn:hover {\n background-color: hsl(120, 100%, 75%);\n}\n\n.no-btn {\n background-color: hsl(0, 50%, 50%);\n}\n\n.no-btn:hover {\n background-color: hsl(0, 50%, 75%);\n}\n\n.task-list {\n list-style-type: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.task-container,\n.add-task-container {\n display: flex;\n gap: 8px;\n font-family: 'robotothin', sans-serif;\n align-items: center;\n justify-content: space-between;\n}\n\n.tasks-header {\n text-align: center;\n border-bottom: 2px solid var(--main-color);\n margin-bottom: 4px;\n}\n\n.task-btn {\n --size: 20px;\n background-image: url(${___CSS_LOADER_URL_REPLACEMENT_1___});\n height: var(--size);\n width: var(--size);\n background-size: var(--size);\n border: 0;\n background-color: transparent;\n position: relative;\n right: 4px;\n}\n\nbutton.tasks-add-task.task-btn:hover {\n box-shadow: none;\n}\n\n.tasks-add-task {\n cursor: pointer;\n}\n\n.add-task-container {\n gap: 0;\n justify-content: flex-start;\n}\n\n.priority {\n --size: 5px;\n border-radius: var(--size);\n height: var(--size);\n width: var(--size);\n}\n\n.low-priority {\n background-color: green;\n}\n\n.medium-priority {\n background-color: yellow;\n}\n\n.high-priority {\n background-color: red;\n}\n\n.due-date-task {\n font-size: 0.75rem;\n color: grey;\n}\n\n.new-task-container {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.input-container > :nth-child(2) {\n width: 50%;\n}\n\n.input-container {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: 4px;\n}\n\n.radios-container {\n display: flex;\n flex-direction: column;\n}\n\n.radio-container {\n display: flex;\n}\n\n.task-submit {\n align-self: flex-end;\n}\n\n.new-task-container .task-submit:hover {\n box-shadow: none;\n}\n\n.delete-task {\n --size: 15px;\n background-image: url(${___CSS_LOADER_URL_REPLACEMENT_3___});\n background-size: var(--size);\n height: var(--size);\n width: var(--size);\n border: 0;\n}\n\nbutton.delete-task:hover {\n box-shadow: none;\n}\n\nfieldset {\n border: 0;\n}\n\n.notes-container {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.save-notes-btn {\n align-self: flex-end;\n}\n\nbutton.save-notes-btn:hover {\n box-shadow: none;\n}\n\n.save-notes-btn,\n.add-button,\nbutton.add-task {\n border-radius: 5px;\n align-self: flex-end;\n padding: 8px 16px;\n background-color: hsl(120, 100%, 50%);\n}\n\n\n.save-notes-btn:hover,\n.add-button:hover,\nbutton.add-task:hover {\n background-color: hsl(120, 100%, 75%);\n}\n\nfooter {\n display: flex;\n justify-content: space-around;\n padding: var(--generic-padding);\n background-image: linear-gradient(var(--secondary-color), var(--main-color));\n box-shadow: 0 -5px 10px rgba(0, 0, 0, 0.25);\n}\n\nfooter * {\n color: var(--quaternary-color);\n}\n\na:hover {\n text-decoration: none;\n}\n\n.project-started {\n display: block;\n font-family: 'robotobold', sans-serif;\n color: var(--dark-tertiary-color);\n text-align: end;\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/stylesheets/styles.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"@import url(\\\"../fonts/Roboto-Font/stylesheet.css\\\");\\n@import url(\\\"../fonts/alex-brush/stylesheet.css\\\");\\n\\n:root {\\n --main-color: #222831;\\n --secondary-color: #393E46;\\n --tertiary-color: #00ADB5;\\n --dark-tertiary-color: hsl(183, 100%, 25%);\\n --quaternary-color: #EEEEEE;\\n --logo-color: #FFC90E; \\n --pad-height: 8px;\\n --pad-width: 16px;\\n --pad-neg-height: calc(var(--pad-height) - (var(--pad-height) * 2));\\n --pad-neg-width: calc(var(--pad-width) - (var(--pad-width) * 2));\\n --mild-shadow: 5px 5px 10px rgba(0, 0, 0, 0.25);\\n --generic-padding: var(--pad-height) var(--pad-width);\\n --small-padding: calc(var(--pad-height) / 2) calc(var(--pad-width) / 2);\\n --softer-shadow: 5px 5px 10px rgba(0, 0, 0, 0.10);\\n --light-tertiary-color: hsl(183, 100%, 45%);\\n}\\n\\nbody {\\n height: 100vh;\\n width: auto;\\n background-color: var(--quaternary-color);\\n overflow: hidden;\\n margin: 0;\\n padding: 0;\\n display: grid;\\n grid-template: max-content 1fr max-content / 1fr;\\n grid-template-areas:\\n \\\"header\\\"\\n \\\"content\\\"\\n \\\"footer\\\";\\n}\\n\\n* {\\n padding: 0;\\n margin: 0;\\n font-family: 'robotoregular', sans-serif;\\n}\\n\\n.web-info {\\n display: flex;\\n align-items: center;\\n cursor: pointer;\\n}\\n\\n.web-logo {\\n height: 48px;\\n width: 48px;\\n position: relative;\\n top: -4px;\\n}\\n\\n.web-title {\\n font-family: 'alex_brushregular', sans-serif;\\n color: var(--logo-color);\\n font-size: 48px;\\n}\\n\\nheader {\\n grid-area: header;\\n background-image: linear-gradient(var(--main-color), var(--secondary-color));\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n padding: var(--pad-height) var(--pad-width);\\n box-shadow: var(--mild-shadow);\\n}\\n\\n.tabs {\\n align-self: flex-end;\\n position: relative;\\n bottom: var(--pad-neg-height);\\n display: flex;\\n gap: var(--pad-width);\\n}\\n\\n.tab {\\n font-family: 'robotothin', sans-serif;\\n font-size: 24px;\\n border: 0;\\n background-color: transparent;\\n padding-bottom: var(--pad-height);\\n color: var(--quaternary-color);\\n margin-bottom: 2px;\\n}\\n\\n.tab:not(.active-tab):hover,\\n.active-tab {\\n color: var(--logo-color);\\n border-bottom: 1px solid var(--logo-color);\\n margin-bottom: 1px;\\n text-shadow: var(--mild-shadow);\\n} \\n\\n.active-tab {\\n cursor: auto;\\n}\\n\\nbutton {\\n cursor: pointer;\\n font-family: 'robotobold', sans-serif;\\n}\\n\\nbutton:not(.tab):hover {\\n box-shadow: var(--mild-shadow);\\n}\\n\\nbutton.new-project {\\n border: 0;\\n padding: var(--pad-height) var(--pad-width);\\n border-radius: 25px;\\n font-family: 'robotobold', sans-serif;\\n background-color: var(--secondary-color);\\n color: var(--quaternary-color);\\n}\\n\\nbutton.new-project:hover {\\n background-color: var(--logo-color);\\n text-shadow: var(--mild-shadow);\\n color: var(--secondary-color);\\n}\\n\\ndiv#content {\\n grid-area: content;\\n}\\n\\nfooter {\\n grid-area: footer;\\n}\\n\\ndialog {\\n margin: auto;\\n padding: var(--pad-height) var(--pad-width);\\n overflow: visible;\\n border: 2px solid black;\\n border-radius: 5px;\\n background-color: var(--quaternary-color);\\n}\\n\\ndialog::backdrop {\\n background-color: rgba(0, 0, 0, 0.10);\\n}\\n\\nform {\\n display: flex;\\n flex-direction: column;\\n gap: var(--pad-height);\\n}\\n\\n.cancel-btn {\\n position: absolute;\\n --square-pad: 5px;\\n --neg-square-pad: -8px;\\n top: var(--neg-square-pad);\\n right: var(--neg-square-pad);\\n padding: 0 var(--square-pad);\\n border-radius: 10px;\\n background-color: hsl(0, 50%, 50%);\\n border: 2px solid black;\\n}\\n\\ninput,\\nselect {\\n font-size: 14px;\\n}\\n\\ninput[type=\\\"text\\\"] {\\n border: 0;\\n background-color: var(--quaternary-color);\\n border-bottom: 1px solid black;\\n}\\n\\ninput {\\n outline: 0;\\n}\\n\\n.group {\\n display: flex;\\n justify-content: flex-end;\\n gap: 8px;\\n}\\n\\nlabel,\\n.form-title {\\n font-family: 'robotobold';\\n}\\n\\nlabel {\\n font-size: 18px;\\n}\\n\\n.group > :not(label) {\\n width: 50%;\\n}\\n\\ndialog .add-button:hover,\\ndialog .cancel-btn:hover {\\n box-shadow: none;\\n}\\n\\n#content {\\n display: grid;\\n grid-auto-rows: minmax(50px, 250px);\\n grid-template-columns: repeat(auto-fill, minmax(50px, 250px));\\n gap: 16px;\\n padding: 16px;\\n overflow: auto;\\n}\\n\\n.project-card button {\\n height: 20px;\\n width: 20px;\\n border: 0;\\n background-size: 20px;\\n background-color: transparent;\\n}\\n\\n.card-lower button:hover {\\n background-color: var(--light-tertiary-color);\\n border-radius: 5px;\\n overflow: visible;\\n}\\n\\n.project-card {\\n border-radius: 15px;\\n background-color: var(--tertiary-color);\\n color: var(--quaternary-color);\\n box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.15);\\n overflow: auto;\\n display: flex;\\n flex-direction: column;\\n}\\n\\n.project-card:hover {\\n box-shadow: var(--mild-shadow);\\n}\\n\\n.view {\\n background-image: url(\\\"../images/view-project.png\\\");\\n}\\n\\n.project-add-task {\\n background-image: url(\\\"../images/add.png\\\");\\n}\\n\\n.project-notes {\\n background-image: url(\\\"../images/notes.png\\\");\\n}\\n\\n.card-upper {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n padding: var(--pad-height);\\n background-color: var(--secondary-color);\\n border-radius: 15px;\\n}\\n\\n.card-upper:hover,\\n.card-lower:hover {\\n padding-bottom: var(--pad-height);\\n}\\n\\n.card-upper:hover {\\n border-bottom: 5px solid var(--main-color);\\n}\\n\\n.card-lower:hover {\\n border-bottom: 5px solid var(--dark-tertiary-color);\\n}\\n\\n.card-lower {\\n display: flex;\\n flex-direction: column;\\n padding: var(--pad-height);\\n flex-grow: 1;\\n gap: 18px;\\n border-radius: 15px;\\n justify-content: space-between;\\n}\\n\\n.card-upper,\\n.card-lower {\\n padding-bottom: calc(var(--pad-height) + 5px);\\n}\\n\\n.card-buttons {\\n align-self: flex-end;\\n display: flex;\\n gap: 4px;\\n}\\n\\n.project-desc {\\n hyphens: auto;\\n}\\n\\n.card-upper .delete {\\n background-image: url(\\\"../images/delete.png\\\");\\n background-color: rgba(255, 68, 68, 0.5);\\n border-radius: 5px;\\n}\\n\\n.card-upper .delete:hover {\\n background-color: rgb(255, 68, 68);\\n}\\n\\n.bool-dialog {\\n padding: var(--generic-padding);\\n background-color: var(--quaternary-color);\\n display: flex;\\n flex-direction: column;\\n gap: 8px;\\n}\\n\\n.question {\\n font-family: 'robotothin', sans-serif;\\n font-weight: bold;\\n}\\n\\n.choices {\\n display: flex;\\n justify-content: space-around;\\n}\\n\\n.dialog-btn {\\n padding: var(--small-padding);\\n border: 1px solid black;\\n border-radius: 5px;\\n}\\n\\n.dialog-btn:hover {\\n box-shadow: var(--softer-shadow);\\n}\\n\\n.yes-btn {\\n background-color: hsl(120, 100%, 50%);\\n}\\n\\n.yes-btn:hover {\\n background-color: hsl(120, 100%, 75%);\\n}\\n\\n.no-btn {\\n background-color: hsl(0, 50%, 50%);\\n}\\n\\n.no-btn:hover {\\n background-color: hsl(0, 50%, 75%);\\n}\\n\\n.task-list {\\n list-style-type: none;\\n margin: 0;\\n padding: 0;\\n display: flex;\\n flex-direction: column;\\n gap: 4px;\\n}\\n\\n.task-container,\\n.add-task-container {\\n display: flex;\\n gap: 8px;\\n font-family: 'robotothin', sans-serif;\\n align-items: center;\\n justify-content: space-between;\\n}\\n\\n.tasks-header {\\n text-align: center;\\n border-bottom: 2px solid var(--main-color);\\n margin-bottom: 4px;\\n}\\n\\n.task-btn {\\n --size: 20px;\\n background-image: url(\\\"../images/add.png\\\");\\n height: var(--size);\\n width: var(--size);\\n background-size: var(--size);\\n border: 0;\\n background-color: transparent;\\n position: relative;\\n right: 4px;\\n}\\n\\nbutton.tasks-add-task.task-btn:hover {\\n box-shadow: none;\\n}\\n\\n.tasks-add-task {\\n cursor: pointer;\\n}\\n\\n.add-task-container {\\n gap: 0;\\n justify-content: flex-start;\\n}\\n\\n.priority {\\n --size: 5px;\\n border-radius: var(--size);\\n height: var(--size);\\n width: var(--size);\\n}\\n\\n.low-priority {\\n background-color: green;\\n}\\n\\n.medium-priority {\\n background-color: yellow;\\n}\\n\\n.high-priority {\\n background-color: red;\\n}\\n\\n.due-date-task {\\n font-size: 0.75rem;\\n color: grey;\\n}\\n\\n.new-task-container {\\n display: flex;\\n flex-direction: column;\\n gap: 8px;\\n}\\n\\n.input-container > :nth-child(2) {\\n width: 50%;\\n}\\n\\n.input-container {\\n display: flex;\\n justify-content: flex-end;\\n align-items: center;\\n gap: 4px;\\n}\\n\\n.radios-container {\\n display: flex;\\n flex-direction: column;\\n}\\n\\n.radio-container {\\n display: flex;\\n}\\n\\n.task-submit {\\n align-self: flex-end;\\n}\\n\\n.new-task-container .task-submit:hover {\\n box-shadow: none;\\n}\\n\\n.delete-task {\\n --size: 15px;\\n background-image: url(\\\"../images/delete.png\\\");\\n background-size: var(--size);\\n height: var(--size);\\n width: var(--size);\\n border: 0;\\n}\\n\\nbutton.delete-task:hover {\\n box-shadow: none;\\n}\\n\\nfieldset {\\n border: 0;\\n}\\n\\n.notes-container {\\n display: flex;\\n flex-direction: column;\\n gap: 8px;\\n}\\n\\n.save-notes-btn {\\n align-self: flex-end;\\n}\\n\\nbutton.save-notes-btn:hover {\\n box-shadow: none;\\n}\\n\\n.save-notes-btn,\\n.add-button,\\nbutton.add-task {\\n border-radius: 5px;\\n align-self: flex-end;\\n padding: 8px 16px;\\n background-color: hsl(120, 100%, 50%);\\n}\\n\\n\\n.save-notes-btn:hover,\\n.add-button:hover,\\nbutton.add-task:hover {\\n background-color: hsl(120, 100%, 75%);\\n}\\n\\nfooter {\\n display: flex;\\n justify-content: space-around;\\n padding: var(--generic-padding);\\n background-image: linear-gradient(var(--secondary-color), var(--main-color));\\n box-shadow: 0 -5px 10px rgba(0, 0, 0, 0.25);\\n}\\n\\nfooter * {\\n color: var(--quaternary-color);\\n}\\n\\na:hover {\\n text-decoration: none;\\n}\\n\\n.project-started {\\n display: block;\\n font-family: 'robotobold', sans-serif;\\n color: var(--dark-tertiary-color);\\n text-align: end;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (url, options) {\n if (!options) {\n options = {};\n }\n if (!url) {\n return url;\n }\n url = String(url.__esModule ? url.default : url);\n\n // If url is already wrapped in quotes, remove them\n if (/^['\"].*['\"]$/.test(url)) {\n url = url.slice(1, -1);\n }\n if (options.hash) {\n url += options.hash;\n }\n\n // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n if (/[\"'() \\t\\n]|(%20)/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n return url;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","\"use strict\";\n\nvar stylesInDOM = [];\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n return result;\n}\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n identifiers.push(identifier);\n }\n return identifiers;\n}\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n return updater;\n}\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n var newLastIdentifiers = modulesToDom(newList, options);\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n var _index = getIndexByIdentifier(_identifier);\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n stylesInDOM.splice(_index, 1);\n }\n }\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n\n/* istanbul ignore next */\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target);\n\n // Special case to return head of iframe instead of iframe itself\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n memo[target] = styleTarget;\n }\n return memo[target];\n}\n\n/* istanbul ignore next */\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n target.appendChild(style);\n}\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n var needLayer = typeof obj.layer !== \"undefined\";\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n css += obj.css;\n if (needLayer) {\n css += \"}\";\n }\n if (obj.media) {\n css += \"}\";\n }\n if (obj.supports) {\n css += \"}\";\n }\n var sourceMap = obj.sourceMap;\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n }\n\n // For old IE\n /* istanbul ignore if */\n options.styleTagTransform(css, styleElement, options.options);\n}\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n styleElement.parentNode.removeChild(styleElement);\n}\n\n/* istanbul ignore next */\nfunction domAPI(options) {\n if (typeof document === \"undefined\") {\n return {\n update: function update() {},\n remove: function remove() {}\n };\n }\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n styleElement.appendChild(document.createTextNode(css));\n }\n}\nmodule.exports = styleTagTransform;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// no jsonp function","__webpack_require__.nc = undefined;","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!./styles.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!./styles.css\";\n export default content && content.locals ? content.locals : undefined;\n","export class Query {\n constructor(query) {\n this.query = query;\n }\n\n get = () => {\n return document.querySelector(this.query);\n }\n\n getAll = () => {\n return Array.from(document.querySelectorAll(this.query));\n }\n}\n\nexport const createImage = function(className, imageURL, altText) {\n const img = document.createElement(\"img\");\n img.src = imageURL;\n img.alt = altText;\n img.className = className;\n return img;\n}\n\nexport const createText = function(className, content, elementType) {\n const text = document.createElement(`${elementType}`);\n text.textContent = content;\n text.className = className;\n return text;\n}\n\nexport const createDiv = function(className) {\n const div = document.createElement(\"div\");\n div.className = className;\n return div;\n}\n\nexport const createButton = function(className, content) {\n const button = document.createElement(\"button\");\n button.textContent = content;\n button.className = className;\n return button;\n}\n\nexport const appendTo = function(parentElement, ...childElements) {\n childElements.forEach((childElement) => {\n parentElement.appendChild(childElement);\n });\n}\n\nexport const createDialog = function(className, Id) {\n const dialog = document.createElement(\"dialog\");\n dialog.className = className;\n dialog.id = Id;\n return dialog;\n}\n\nexport const handleClick = function(fn, ...elements) {\n elements.forEach((element) => { element.addEventListener(\"click\", fn) });\n}\n\nexport const getAllTabs = new Query(\".tab\").getAll;\n\nexport const getHeader = new Query(\"header\").get;\n\nexport const getContent = new Query(\"#content\").get;\n\nconst getDialogs = new Query(\"dialog\").getAll;\nconst getDialog = () => {\n const dialogs = getDialogs();\n return dialogs[dialogs.length - 1];\n};\n\nexport const showLastDialog = () => {\n getDialog().showModal();\n};\n\nexport const closeDialogs = () => {\n const dialogs = getDialogs();\n dialogs.forEach((dialog) => {\n dialog.close()\n dialog.remove()\n });\n};\nexport const closeDialog = () => {\n const dialog = getDialog();\n dialog.close()\n dialog.remove();\n};\n\nexport const createForm = function(className, Id, method) {\n const form = document.createElement(\"form\");\n form.setAttribute(\"class\", `${className}`);\n form.setAttribute(\"id\", `${Id}`);\n return form;\n}\n\nexport const createLabel = function(content, forId, className) {\n const label = document.createElement(\"label\");\n label.setAttribute(\"class\", `${className}`);\n label.textContent = content;\n label.setAttribute(\"for\", `${forId}`);\n return label;\n}\n\nexport const createInput = function(type, Id, className) {\n const input = document.createElement(\"input\");\n input.setAttribute(\"type\", `${type}`);\n input.setAttribute(\"id\", `${Id}`);\n input.setAttribute(\"class\", `${className}`);\n return input;\n}\n\nexport const createRequiredInput = function(type, Id, className) {\n const input = createInput(type, Id, className);\n input.setAttribute(\"required\", \"\");\n return input;\n}\n\nexport const createSelection = function(className, Id, ...selectionValues) {\n const selection = document.createElement(\"select\");\n selection.setAttribute(\"class\", `${className}`);\n selection.setAttribute(\"id\", `${Id}`);\n selectionValues.forEach((value) => {\n const option = document.createElement(\"option\");\n option.setAttribute(\"value\", `${value.trim().replace(/\\s+/g, \"-\").toLowerCase()}`);\n option.textContent = value.trim();\n appendTo(selection, option);\n });\n return selection;\n}\n\nexport const createSubmitButton = function(content, className) {\n const submitButton = createButton(className, content);\n submitButton.setAttribute(\"type\", \"submit\");\n return submitButton;\n}\n\nexport const addRequired = function(element) {\n element.setAttribute(\"required\", \"\");\n}\n\nexport const getDialogSpace = new Query(\"#dialogs\").get;\n\nexport const resetContent = () => {\n getContent().innerHTML = \"\";\n};\n\nexport const createBulletList = function(className) {\n const bulletList = document.createElement(\"ul\");\n bulletList.className = className;\n return bulletList;\n}\n\nexport const createListItem = function(className, content) {\n const listItem = document.createElement(\"li\");\n listItem.className = className;\n listItem.textContent = content;\n return listItem;\n}\n\nexport const createRadioButton = function(name, value, type, Id, className) {\n const input = createInput(type, Id, className);\n input.setAttribute(\"name\", name);\n input.setAttribute(\"value\", value);\n return input;\n}\n\nexport const createFieldSet = function(className) {\n const fieldSet = document.createElement(\"fieldset\");\n fieldSet.className = className;\n return fieldSet;\n}\n\nexport const createTextArea = function(className, Id, rows, columns, placeholder) {\n const textArea = document.createElement(\"textarea\");\n textArea.setAttribute(\"class\", className);\n textArea.setAttribute(\"id\", Id);\n textArea.setAttribute(\"rows\", rows.toString());\n textArea.setAttribute(\"cols\", columns.toString());\n textArea.setAttribute(\"placeholder\", placeholder);\n return textArea;\n}\n\nexport const getFooter = new Query(\"footer\").get;","export const handleSubmit = function(fn, ...forms) {\n forms.forEach((form) => {\n form.addEventListener(\"submit\", (event) => { event.preventDefault() });\n form.addEventListener(\"submit\", fn);\n });\n}","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\n","export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.mjs\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","/* eslint-disable no-unused-vars */\n\n/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.mjs\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.mjs\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.mjs\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- I challange you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","import { formatDistance } from \"./en-US/_lib/formatDistance.mjs\";\nimport { formatLong } from \"./en-US/_lib/formatLong.mjs\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.mjs\";\nimport { localize } from \"./en-US/_lib/localize.mjs\";\nimport { match } from \"./en-US/_lib/match.mjs\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n code: \"en-US\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n","/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument) {\n const argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (\n argument instanceof Date ||\n (typeof argument === \"object\" && argStr === \"[object Date]\")\n ) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new argument.constructor(+argument);\n } else if (\n typeof argument === \"number\" ||\n argStr === \"[object Number]\" ||\n typeof argument === \"string\" ||\n argStr === \"[object String]\"\n ) {\n // TODO: Can we get rid of as?\n return new Date(argument);\n } else {\n // TODO: Can we get rid of as?\n return new Date(NaN);\n }\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","import { toDate } from \"./toDate.mjs\";\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date) {\n const _date = toDate(date);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { toDate } from \"../toDate.mjs\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from 'date-fns'\n *\n * // A function that clones a date preserving the original type\n * function cloneDate 183\n */\nexport function getDayOfYear(date) {\n const _date = toDate(date);\n const diff = differenceInCalendarDays(_date, startOfYear(_date));\n const dayOfYear = diff + 1;\n return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n","import { millisecondsInDay } from \"./constants.mjs\";\nimport { startOfDay } from \"./startOfDay.mjs\";\nimport { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.mjs\";\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(dateLeft, dateRight) {\n const startOfDayLeft = startOfDay(dateLeft);\n const startOfDayRight = startOfDay(dateRight);\n\n const timestampLeft =\n +startOfDayLeft - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n const timestampRight =\n +startOfDayRight - getTimezoneOffsetInMilliseconds(startOfDayRight);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((timestampLeft - timestampRight) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date) {\n const cleanDate = toDate(date);\n const _date = constructFrom(date, 0);\n _date.setFullYear(cleanDate.getFullYear(), 0, 1);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n","import { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n _date.setDate(_date.getDate() - diff);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n","import { startOfWeek } from \"./startOfWeek.mjs\";\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date) {\n return startOfWeek(date, { weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n\n const fourthOfJanuaryOfNextYear = constructFrom(date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n const fourthOfJanuaryOfThisYear = constructFrom(date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n","import { millisecondsInWeek } from \"./constants.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date) {\n const _date = toDate(date);\n const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n","import { getISOWeekYear } from \"./getISOWeekYear.mjs\";\nimport { startOfISOWeek } from \"./startOfISOWeek.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date) {\n const year = getISOWeekYear(date);\n const fourthOfJanuary = constructFrom(date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { toDate } from \"./toDate.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n const _date = toDate(date);\n const year = _date.getFullYear();\n\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const firstWeekOfNextYear = constructFrom(date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n const firstWeekOfThisYear = constructFrom(date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n","import { millisecondsInWeek } from \"./constants.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { startOfWeekYear } from \"./startOfWeekYear.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\n\nexport function getWeek(date, options) {\n const _date = toDate(date);\n const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n","import { constructFrom } from \"./constructFrom.mjs\";\nimport { getWeekYear } from \"./getWeekYear.mjs\";\nimport { startOfWeek } from \"./startOfWeek.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const year = getWeekYear(date, options);\n const firstWeek = constructFrom(date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n const _date = startOfWeek(firstWeek, options);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n","export function addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign + output;\n}\n","import { addLeadingZeros } from \"../addLeadingZeros.mjs\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n // Year\n y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n },\n\n // Month\n M(date, token) {\n const month = date.getMonth();\n return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n\n // Day of the month\n d(date, token) {\n return addLeadingZeros(date.getDate(), token.length);\n },\n\n // AM or PM\n a(date, token) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return dayPeriodEnumValue.toUpperCase();\n case \"aaa\":\n return dayPeriodEnumValue;\n case \"aaaaa\":\n return dayPeriodEnumValue[0];\n case \"aaaa\":\n default:\n return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n }\n },\n\n // Hour [1-12]\n h(date, token) {\n return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n },\n\n // Hour [0-23]\n H(date, token) {\n return addLeadingZeros(date.getHours(), token.length);\n },\n\n // Minute\n m(date, token) {\n return addLeadingZeros(date.getMinutes(), token.length);\n },\n\n // Second\n s(date, token) {\n return addLeadingZeros(date.getSeconds(), token.length);\n },\n\n // Fraction of second\n S(date, token) {\n const numberOfDigits = token.length;\n const milliseconds = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds * Math.pow(10, numberOfDigits - 3),\n );\n return addLeadingZeros(fractionalSeconds, token.length);\n },\n};\n","import { getDayOfYear } from \"../../getDayOfYear.mjs\";\nimport { getISOWeek } from \"../../getISOWeek.mjs\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.mjs\";\nimport { getWeek } from \"../../getWeek.mjs\";\nimport { getWeekYear } from \"../../getWeekYear.mjs\";\nimport { addLeadingZeros } from \"../addLeadingZeros.mjs\";\nimport { lightFormatters } from \"./lightFormatters.mjs\";\n\nconst dayPeriodEnum = {\n am: \"am\",\n pm: \"pm\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n // Era\n G: function (date, token, localize) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize.era(era, { width: \"wide\" });\n }\n },\n\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === \"yo\") {\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, { unit: \"year\" });\n }\n\n return lightFormatters.y(date, token);\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n const signedWeekYear = getWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === \"Yo\") {\n return localize.ordinalNumber(weekYear, { unit: \"year\" });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n\n // ISO week-numbering year\n R: function (date, token) {\n const isoWeekYear = getISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n const year = date.getFullYear();\n return addLeadingZeros(year, token.length);\n },\n\n // Quarter\n Q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // Month\n M: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n case \"M\":\n case \"MM\":\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n const week = getWeek(date, options);\n\n if (token === \"wo\") {\n return localize.ordinalNumber(week, { unit: \"week\" });\n }\n\n return addLeadingZeros(week, token.length);\n },\n\n // ISO week of year\n I: function (date, token, localize) {\n const isoWeek = getISOWeek(date);\n\n if (token === \"Io\") {\n return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n\n // Day of the month\n d: function (date, token, localize) {\n if (token === \"do\") {\n return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n\n return lightFormatters.d(date, token);\n },\n\n // Day of year\n D: function (date, token, localize) {\n const dayOfYear = getDayOfYear(date);\n\n if (token === \"Do\") {\n return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n\n // Day of week\n E: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"EEEEE\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case \"e\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"ee\":\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"eeeee\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // T\n case \"ccccc\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\",\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // ISO day of week\n i: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case \"io\":\n return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"iiiii\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"iiiiii\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n const hours = date.getHours();\n const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"aaa\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"aaaaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n }\n\n switch (token) {\n case \"b\":\n case \"bb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"bbb\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"bbbbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"BBBBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === \"ho\") {\n let hours = date.getHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return lightFormatters.h(date, token);\n },\n\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === \"Ho\") {\n return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n\n return lightFormatters.H(date, token);\n },\n\n // Hour [0-11]\n K: function (date, token, localize) {\n const hours = date.getHours() % 12;\n\n if (token === \"Ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Hour [1-24]\n k: function (date, token, localize) {\n let hours = date.getHours();\n if (hours === 0) hours = 24;\n\n if (token === \"ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Minute\n m: function (date, token, localize) {\n if (token === \"mo\") {\n return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n\n return lightFormatters.m(date, token);\n },\n\n // Second\n s: function (date, token, localize) {\n if (token === \"so\") {\n return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n\n return lightFormatters.s(date, token);\n },\n\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n\n switch (token) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case \"XXXX\":\n case \"XX\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case \"XXXXX\":\n case \"XXX\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case \"xxxx\":\n case \"xx\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case \"xxxxx\":\n case \"xxx\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Seconds timestamp\n t: function (date, token, _localize) {\n const timestamp = Math.trunc(date.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n\n // Milliseconds timestamp\n T: function (date, token, _localize) {\n const timestamp = date.getTime();\n return addLeadingZeros(timestamp, token.length);\n },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = Math.trunc(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? \"-\" : \"+\";\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n const minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n","const dateLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"P\":\n return formatLong.date({ width: \"short\" });\n case \"PP\":\n return formatLong.date({ width: \"medium\" });\n case \"PPP\":\n return formatLong.date({ width: \"long\" });\n case \"PPPP\":\n default:\n return formatLong.date({ width: \"full\" });\n }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"p\":\n return formatLong.time({ width: \"short\" });\n case \"pp\":\n return formatLong.time({ width: \"medium\" });\n case \"ppp\":\n return formatLong.time({ width: \"long\" });\n case \"pppp\":\n default:\n return formatLong.time({ width: \"full\" });\n }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n const matchResult = pattern.match(/(P+)(p+)?/) || [];\n const datePattern = matchResult[1];\n const timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n let dateTimeFormat;\n\n switch (datePattern) {\n case \"P\":\n dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n break;\n case \"PP\":\n dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n break;\n }\n\n return dateTimeFormat\n .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter,\n};\n","const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n const _message = message(token, format, input);\n console.warn(_message);\n if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n","import { isDate } from \"./isDate.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n if (!isDate(date) && typeof date !== \"number\") {\n return false;\n }\n const _date = toDate(date);\n return !isNaN(Number(_date));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { defaultLocale } from \"./_lib/defaultLocale.mjs\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.mjs\";\nimport { formatters } from \"./_lib/format/formatters.mjs\";\nimport { longFormatters } from \"./_lib/format/longFormatters.mjs\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.mjs\";\nimport { isValid } from \"./isValid.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n * and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const originalDate = toDate(date);\n\n if (!isValid(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n let parts = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp)\n .map((substring) => {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString(substring) };\n }\n\n if (formatters[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n return { isToken: false, value: substring };\n });\n\n // invoke localize preprocessor (only for french locales at the moment)\n if (locale.localize.preprocessor) {\n parts = locale.localize.preprocessor(originalDate, parts);\n }\n\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n return parts\n .map((part) => {\n if (!part.isToken) return part.value;\n\n const token = part.value;\n\n if (\n (!options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)) ||\n (!options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token))\n ) {\n warnOrThrowProtectedError(token, formatStr, String(date));\n }\n\n const formatter = formatters[token[0]];\n return formatter(originalDate, token, locale.localize, formatterOptions);\n })\n .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n const matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n","import { format } from \"date-fns\";\n\nexport const formatDate = function(date) {\n return format(date, \"MM/dd/yyyy HH:mm:ss\");\n}","import { Query } from \"./helpers\";\n\nimport { formatDate } from \"../logic/dates\";\nimport { getProjects, getTitleIndexOf } from \"../logic/object\";\n\nconst getValue = function(query) {\n return get(query).value;\n}\n\nexport const get = function(query) {\n return new Query(query.toString()).get();\n}\n\nexport const Project = (function() {\n const getTitle = () => getValue(\"#title-input\");\n const getDesc = () => getValue(\"#desc-input\");\n const getDueDate = () => formatDate(getValue(\"#due-date-input\"));\n const extractValues = function() {\n return { title: getTitle(), description: getDesc(), dueDate: getDueDate() };\n }\n const extractAllValues = function() {\n let values = extractValues();\n values.tasks = [];\n values.notes = \"\";\n values.started = formatDate(new Date());\n return values;\n }\n return { getTitle, getDesc, getDueDate, extractValues, extractAllValues };\n})();\n\nconst getRadioValue = function(radioContainerQuery) {\n return getValue(`${radioContainerQuery} input[type=\\\"radio\\\"]:checked`);\n}\n\nexport const Tasks = (function() {\n const getTask = () => getValue(\"#task-name\");\n const getDueDate = () => formatDate(getValue(\"#due-date-task\"));\n const getPriority = () => getRadioValue(\"#task-priority-list\");\n const getFinishedState = () => JSON.parse(getRadioValue(\"#task-finished-state\"));\n const extractAllValues = () => {\n return {\n task: getTask(),\n dueDate: getDueDate(),\n priority: getPriority(),\n finished: getFinishedState()\n };\n }\n return { extractAllValues };\n})();\n\nexport const getNotes = () => getValue(\"#notes-textarea\");\n\nexport const getNotesFromProject = function(projectTitle) {\n const project = getProjects()[getTitleIndexOf(projectTitle)];\n return project.notes;\n}","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport function addDays(date, amount) {\n const _date = toDate(date);\n if (isNaN(amount)) return constructFrom(date, NaN);\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n _date.setDate(_date.getDate() + amount);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n","import { toDate } from \"./toDate.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be added.\n *\n * @returns The new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n *\n * // Add one month to 30 January 2023:\n * const result = addMonths(new Date(2023, 0, 30), 1)\n * //=> Tue Feb 28 2023 00:00:00\n */\nexport function addMonths(date, amount) {\n const _date = toDate(date);\n if (isNaN(amount)) return constructFrom(date, NaN);\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n const dayOfMonth = _date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n const endOfDesiredMonth = constructFrom(date, _date.getTime());\n endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);\n const daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n _date.setFullYear(\n endOfDesiredMonth.getFullYear(),\n endOfDesiredMonth.getMonth(),\n dayOfMonth,\n );\n return _date;\n }\n}\n\n// Fallback for modularized imports:\nexport default addMonths;\n","import { add } from \"date-fns\";\n\nimport { formatDate } from \"./dates\";\n\nexport default function getDefaultProject() {\n const DateNow = formatDate(new Date());\n const DateVariable = formatDate(add(DateNow, { days: 1 }));\n return [\n {\n title: \"To-Do List\",\n description: \"Make a to-do list app\",\n tasks: [\n {\n task: \"Setup webpack\",\n dueDate: DateVariable,\n priority: \"high\",\n finished: true\n },\n {\n task: \"Finish Project\",\n dueDate: DateVariable,\n priority: \"high\",\n finished: true\n },\n {\n task: \"Submit Project\",\n dueDate: DateVariable,\n priority: \"high\",\n finished: true\n }\n ],\n dueDate: DateVariable,\n notes: \"This is a project for \\\"The Odin Project\\\"s online curriculum.\",\n started: DateNow\n }\n ];\n}","import { addDays } from \"./addDays.mjs\";\nimport { addMonths } from \"./addMonths.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\nimport { toDate } from \"./toDate.mjs\";\n\n/**\n * @name add\n * @category Common Helpers\n * @summary Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.\n *\n * @description\n * Add the specified years, months, weeks, days, hours, minutes and seconds to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param duration - The object with years, months, weeks, days, hours, minutes and seconds to be added.\n *\n * | Key | Description |\n * |----------------|------------------------------------|\n * | years | Amount of years to be added |\n * | months | Amount of months to be added |\n * | weeks | Amount of weeks to be added |\n * | days | Amount of days to be added |\n * | hours | Amount of hours to be added |\n * | minutes | Amount of minutes to be added |\n * | seconds | Amount of seconds to be added |\n *\n * All values default to 0\n *\n * @returns The new date with the seconds added\n *\n * @example\n * // Add the following duration to 1 September 2014, 10:19:50\n * const result = add(new Date(2014, 8, 1, 10, 19, 50), {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\\\\-7\n * minutes: 9,\n * seconds: 30,\n * })\n * //=> Thu Jun 15 2017 15:29:20\n */\nexport function add(date, duration) {\n const {\n years = 0,\n months = 0,\n weeks = 0,\n days = 0,\n hours = 0,\n minutes = 0,\n seconds = 0,\n } = duration;\n\n // Add years and months\n const _date = toDate(date);\n const dateWithMonths =\n months || years ? addMonths(_date, months + years * 12) : _date;\n\n // Add weeks and days\n const dateWithDays =\n days || weeks ? addDays(dateWithMonths, days + weeks * 7) : dateWithMonths;\n\n // Add days, hours, minutes and seconds\n const minutesToAdd = minutes + hours * 60;\n const secondsToAdd = seconds + minutesToAdd * 60;\n const msToAdd = secondsToAdd * 1000;\n const finalDate = constructFrom(date, dateWithDays.getTime() + msToAdd);\n\n return finalDate;\n}\n\n// Fallback for modularized imports:\nexport default add;\n","import { subDays } from \"./subDays.mjs\";\nimport { subMonths } from \"./subMonths.mjs\";\nimport { constructFrom } from \"./constructFrom.mjs\";\n\n/**\n * @name sub\n * @category Common Helpers\n * @summary Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.\n *\n * @description\n * Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param duration - The object with years, months, weeks, days, hours, minutes and seconds to be subtracted\n *\n * | Key | Description |\n * |---------|------------------------------------|\n * | years | Amount of years to be subtracted |\n * | months | Amount of months to be subtracted |\n * | weeks | Amount of weeks to be subtracted |\n * | days | Amount of days to be subtracted |\n * | hours | Amount of hours to be subtracted |\n * | minutes | Amount of minutes to be subtracted |\n * | seconds | Amount of seconds to be subtracted |\n *\n * All values default to 0\n *\n * @returns The new date with the seconds subtracted\n *\n * @example\n * // Subtract the following duration from 15 June 2017 15:29:20\n * const result = sub(new Date(2017, 5, 15, 15, 29, 20), {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30\n * })\n * //=> Mon Sep 1 2014 10:19:50\n */\nexport function sub(date, duration) {\n const {\n years = 0,\n months = 0,\n weeks = 0,\n days = 0,\n hours = 0,\n minutes = 0,\n seconds = 0,\n } = duration;\n\n // Subtract years and months\n const dateWithoutMonths = subMonths(date, months + years * 12);\n\n // Subtract weeks and days\n const dateWithoutDays = subDays(dateWithoutMonths, days + weeks * 7);\n\n // Subtract hours, minutes and seconds\n const minutestoSub = minutes + hours * 60;\n const secondstoSub = seconds + minutestoSub * 60;\n const mstoSub = secondstoSub * 1000;\n const finalDate = constructFrom(date, dateWithoutDays.getTime() - mstoSub);\n\n return finalDate;\n}\n\n// Fallback for modularized imports:\nexport default sub;\n","import { addDays } from \"./addDays.mjs\";\n\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be subtracted.\n *\n * @returns The new date with the days subtracted\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport function subDays(date, amount) {\n return addDays(date, -amount);\n}\n\n// Fallback for modularized imports:\nexport default subDays;\n","import { addMonths } from \"./addMonths.mjs\";\n\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be subtracted.\n *\n * @returns The new date with the months subtracted\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function subMonths(date, amount) {\n return addMonths(date, -amount);\n}\n\n// Fallback for modularized imports:\nexport default subMonths;\n","import { boolChoiceDialog, showNewTaskForm, showNotesDialog, showTasksDialog } from \"../dom/dialogs\";\nimport { createDiv, createButton, appendTo, getAllTabs, createText, getContent, resetContent, handleClick } from \"../dom/helpers\";\nimport { getMonthProjects, getProjects, getTitleIndexOf, getTodayProjects, getWeekProjects, getYearProjects, handleDeleteProject } from \"./object\";\nimport { format } from \"date-fns\";\n\nconst createTab = (content) => createButton(\"tab\", `${content}`);\n\nconst setIds = function(...elements) {\n elements.forEach((element) => {\n element.id = `${element.textContent.toLowerCase()}-${element.className}`;\n });\n}\n\nconst setEvents = function(...elements) {\n elements.forEach((element) => {\n element.addEventListener(\"click\", () => {\n activateTab(element.id);\n });\n });\n}\n\nexport default function getTabs() {\n const tabs = createDiv(\"tabs\");\n const today = createTab(\"Today\");\n const thisWeek = createTab(\"This Week\");\n const thisMonth = createTab(\"This Month\");\n const thisYear = createTab(\"This Year\");\n const allTime = createTab(\"All\");\n setIds(today, thisWeek, thisMonth, thisYear, allTime);\n setEvents(today, thisWeek, thisMonth, thisYear, allTime);\n handleClick(loadToday, today);\n handleClick(loadWeek, thisWeek);\n handleClick(loadMonth, thisMonth);\n handleClick(loadYear, thisYear);\n handleClick(loadAll, allTime);\n appendTo(tabs, today, thisWeek, thisMonth, thisYear, allTime);\n return tabs;\n}\n\nconst activateTab = function(tabId) {\n getAllTabs().forEach((tab) => {\n if (tab.id === tabId) {\n tab.className = \"tab active-tab\";\n }\n else {\n tab.className = \"tab\";\n }\n });\n}\n\nconst content = getContent();\n\nconst createProjectCard = function(project) {\n const projectIndex = getTitleIndexOf(project.title);\n const projectCard = createDiv(\"project-card\");\n const upperPart = createDiv(\"card-upper\");\n const projectTitle = createText(\"project-title\", project.title, \"h3\");\n const deleteButton = createButton(`delete delete-project-${projectIndex}`, \"\");\n handleClick(() => boolChoiceDialog(`Are you sure you want to delete the \\\"${project.title}\\\" project?`,\n () => { handleDeleteProject(document.querySelector(`.delete-project-${projectIndex}`)) }), deleteButton);\n appendTo(upperPart, projectTitle, deleteButton);\n const lowerPart = createDiv(\"card-lower\");\n const projectDesc = createText(\"project-desc\", project.description, \"p\");\n const startedStatus = createText(\"project-started\", ` -${format(project.started, \"MM/dd/yyyy\")}`, \"span\");\n appendTo(projectDesc, startedStatus);\n const buttons = createDiv(\"card-buttons\");\n const viewButton = createButton(\"view view-project\", \"\");\n handleClick(() => showTasksDialog(project.title), viewButton);\n const addTaskButton = createButton(\"project-add-task\", \"\");\n handleClick(() => boolChoiceDialog(\"Do you want to add a task for this project?\", () => { showTasksDialog(project.title); showNewTaskForm() }), addTaskButton);\n const notesButton = createButton(\"project-notes\", \"\");\n handleClick(() => showNotesDialog(project.title), notesButton);\n appendTo(buttons, notesButton, addTaskButton, viewButton);\n appendTo(lowerPart, projectDesc, buttons);\n appendTo(projectCard, upperPart, lowerPart);\n return projectCard;\n}\n\nexport const loadToday = function() {\n const projects = getTodayProjects();\n activateTab(\"today-tab\");\n updateTab(projects);\n}\n\nconst loadWeek = function() {\n updateTab(getWeekProjects());\n}\n\nconst loadMonth = function() {\n updateTab(getMonthProjects());\n}\n\nconst loadYear = function() {\n updateTab(getYearProjects());\n}\n\nconst loadAll = function() {\n updateTab(getProjects());\n}\n\nconst updateTab = function(projects) {\n resetContent();\n projects.forEach((project) => {\n appendTo(content, createProjectCard(project));\n });\n}","import { getNotes, Project, Tasks } from \"../dom/get\";\n\nimport getDefaultProject from \"./default\";\n\nimport { sub, compareDesc } from \"date-fns\";\nimport { formatDate } from \"./dates\";\nimport { loadToday } from \"./tabs\";\nimport { handleTaskDialogs } from \"../dom/dialogs\";\nimport { closeDialogs } from \"../dom/helpers\";\n\nexport const handleEmptyStorage = function() {\n if (localStorage.getItem(\"projects\") === null) {\n localStorage.setItem(\"projects\", JSON.stringify(getDefaultProject()));\n }\n else if (getProjects().length === 0) {\n const projects = getProjects();\n projects.push(getDefaultProject()[0]);\n setProjects(projects);\n }\n}\n\nexport const getProjects = function() {\n return JSON.parse(localStorage.getItem(\"projects\"));\n}\n\nexport const getProjectsLength = function() {\n return getProjects().length;\n}\n\nconst setProjects = function(newProjects) {\n localStorage.setItem(\"projects\", JSON.stringify(newProjects));\n}\n\nexport const addNewProject = function(event) {\n event.preventDefault();\n const projectObject = Project.extractAllValues();\n if (!includesTitle(projectObject.title)) {\n const newProjectsStorage = getProjects();\n newProjectsStorage.push(projectObject);\n setProjects(newProjectsStorage);\n loadToday();\n closeDialogs();\n }\n}\n\nconst includesTitle = function(title) {\n const projects = getProjects();\n let res = false;\n projects.map((project) => {\n if (project.title === title) {\n res = true;\n }\n });\n return res;\n}\n\nconst includesTask = function(task, projectTitle) {\n const project = getProjects()[getTitleIndexOf(projectTitle)];\n let res = false;\n project.tasks.map((taskObject) => {\n if (taskObject.task === task) {\n res = true;\n }\n });\n return res;\n}\n\nconst isBetween = function(newerDate, olderDate, dateForCompare) {\n return Date.parse(dateForCompare) >= Date.parse(olderDate) && Date.parse(dateForCompare) <= Date.parse(newerDate); \n}\n\nexport const getTodayProjects = function() {\n const projects = getProjects();\n const DateNow = new Date();\n const todayProjects = projects.filter((project) => {\n return isBetween(DateNow, sub(DateNow, { days: 1 }), project.started);\n });\n return todayProjects;\n}\n\nexport const getWeekProjects = function() {\n const projects = getProjects();\n const DateNow = new Date();\n const weekProjects = projects.filter((project) => {\n return isBetween(DateNow, sub(DateNow, { weeks: 1 }), project.started);\n });\n return weekProjects;\n}\n\nexport const getMonthProjects = function() {\n const projects = getProjects();\n const DateNow = new Date();\n const monthProjects = projects.filter((project) => {\n return isBetween(DateNow, sub(DateNow, { months: 1 }), project.started);\n });\n return monthProjects;\n}\n\nexport const getYearProjects = function() {\n const projects = getProjects();\n const DateNow = new Date();\n const yearProjects = projects.filter((project) => {\n return isBetween(DateNow, sub(DateNow, { years: 1 }), project.started);\n });\n return yearProjects;\n}\n\nexport const removeProject = function(projectIndex) {\n const projects = getProjects();\n projects.splice(projectIndex, 1);\n setProjects(projects);\n}\n\nexport const getTitleIndexOf = function(projectTitle) {\n const projects = getProjects();\n let res = null;\n projects.forEach((project, index) => {\n if (project.title === projectTitle) {\n res = index;\n }\n });\n return res;\n}\n\nexport const handleDeleteProject = function(deleteButton) {\n const projectTitle = Array.from(deleteButton.parentNode.getElementsByClassName(\"project-title\"))[0].textContent;\n console.log(deleteButton.parentNode);\n if (includesTitle(projectTitle)) {\n removeProject(getTitleIndexOf(projectTitle));\n loadToday();\n }\n}\n\nexport const addNewTask = function(projectTitle) {\n const projects = getProjects();\n const newTask = Tasks.extractAllValues();\n if (!includesTask(newTask.task, projectTitle)) {\n projects[getTitleIndexOf(projectTitle)].tasks.push(newTask);\n setProjects(projects);\n }\n handleTaskDialogs(projectTitle);\n}\n\nconst getTaskIndex = function(task, projectTitle) {\n const project = getProjects()[getTitleIndexOf(projectTitle)];\n let index;\n project.tasks.map((taskObject, taskIndex) => {\n if (taskObject.task === task) {\n index = taskIndex;\n }\n })\n return index;\n}\n\nexport const deleteTask = function(task, projectTitle) {\n const projects = getProjects();\n projects[getTitleIndexOf(projectTitle)].tasks.splice(getTaskIndex(task, projectTitle), 1);\n setProjects(projects);\n handleTaskDialogs(projectTitle);\n}\n\nexport const handleCheck = function(checkBox, task, projectTitle) {\n const projects = getProjects();\n projects[getTitleIndexOf(projectTitle)]\n .tasks[getTaskIndex(task, projectTitle)]\n .finished = checkBox.checked;\n setProjects(projects);\n}\n\nexport const saveNotes = function(projectTitle) {\n const projects = getProjects();\n const notes = getNotes();\n projects[getTitleIndexOf(projectTitle)].notes = notes;\n setProjects(projects);\n closeDialogs();\n}","import { handleSubmit } from \"../logic/form\";\nimport { getDialogSpace, createDiv, createButton, createDialog, appendTo, createText,\n handleClick, showLastDialog, closeDialog, closeDialogs, createForm, createLabel,\n createInput, createRequiredInput, createSubmitButton,\n createBulletList, createListItem,\n createRadioButton,\n createFieldSet,\n createTextArea\n } from \"./helpers\";\nimport { addNewProject, addNewTask, deleteTask, getProjects, getTitleIndexOf, handleCheck, saveNotes } from \"../logic/object\";\nimport { format } from \"date-fns\";\nimport { get, getNotesFromProject } from \"./get\";\n\nconst dialogSpace = getDialogSpace();\n\nconst genericDialog = function(className, Id) {\n const dialog = createDialog(className, Id);\n const cancelButton = createButton(\"cancel-btn\", \"X\");\n handleClick(closeDialogs, cancelButton);\n appendTo(dialog, cancelButton);\n return dialog;\n}\n\nexport const boolChoiceDialog = function(question, nextStep) {\n const dialog = genericDialog(\"bool-dialog\");\n const text = createText(\"question\", `${question}`, \"p\");\n const choices = createDiv(\"choices\");\n const yesButton = createButton(\"dialog-btn yes-btn\", \"Yes\");\n const noButton = createButton(\"dialog-btn no-btn\", \"No\");\n handleClick(closeDialog, yesButton, noButton);\n handleClick(nextStep, yesButton)\n appendTo(choices, yesButton, noButton);\n appendTo(dialog, text, choices);\n appendTo(dialogSpace, dialog);\n showLastDialog();\n}\n\nexport const showProjectDialog = function() {\n const projectDialog = createProjectDialog();\n appendTo(dialogSpace, projectDialog);\n showLastDialog();\n}\n\nconst createProjectDialog = function() {\n const dialog = genericDialog(\"add-new\", \"add-project\");\n const form = createForm(\"add-form\", \"new-project\");\n const text = createText(\"form-title\", \"Add New Project\", \"h2\");\n const titleGroup = createDiv(\"group title-group\");\n const titleLabel = createLabel(\"Title:\", \"title-input\", \"project-label\");\n const titleInput = createRequiredInput(\"text\", \"title-input\", \"project-input required\");\n appendTo(titleGroup, titleLabel, titleInput);\n const descGroup = createDiv(\"group desc-group\");\n const descLabel = createLabel(\"Description:\", \"desc-input\", \"project-label\");\n const descInput = createInput(\"text\", \"desc-input\", \"project-input\");\n setRequired(descInput);\n appendTo(descGroup, descLabel, descInput);\n const dueDateGroup = createDiv(\"group due-date-group\");\n const dueDateLabel = createLabel(\"Due Date:\", \"due-date-input\", \"project-label\");\n const dueDate = createInput(\"datetime-local\", \"due-date-input\", \"project-input\");\n setRequired(dueDate);\n appendTo(dueDateGroup, dueDateLabel, dueDate);\n const submitButton = createSubmitButton(\"Add\", \"add-button project-submit\");\n handleSubmit(addNewProject, form);\n appendTo(form, text, titleGroup, descGroup, dueDateGroup, submitButton);\n appendTo(dialog, form);\n return dialog;\n}\n\nexport const showTasksDialog = function(projectTitle) {\n const tasksDialog = createTasksDialog(getTitleIndexOf(projectTitle));\n appendTo(dialogSpace, tasksDialog);\n showLastDialog();\n}\n\nconst hyphenLower = function(text) {\n return text.replace(/\\s+/g, \"-\").toLowerCase();\n}\n\nconst handleDeleteTask = function(task, projectTitle) {\n boolChoiceDialog(\"Are you sure you want to delete this task?\", () => deleteTask(task, projectTitle));\n}\n\nconst setRequired = function(...elements) {\n elements.map((element) => {\n element.setAttribute(\"required\", \"\");\n })\n}\n\nconst createTasksDialog = function(projectIndex) {\n const project = getProjects()[projectIndex];\n const dialog = genericDialog(\"tasks-dialog\", `tasks-${projectIndex}`);\n const container = createDiv(\"tasks-container\");\n const projectTitle = createText(\"tasks-header\", `${project.title}`, \"h3\");\n const taskList = createBulletList(\"task-list\");\n project.tasks.map((taskObject, index) => {\n const task = taskObject.task;\n const newTaskContainer = createDiv(\"task-container\");\n const taskCheckBox = createInput(\"checkbox\", `check-${hyphenLower(task)}`, \"task-checkbox\");\n taskCheckBox.checked = taskObject.finished;\n handleClick(() => {\n handleCheck(Array.from(document.querySelectorAll(\".task-checkbox\")[index]), task, project.title)\n }, taskCheckBox);\n const newTask = createListItem(\"task\", task);\n const prioritySignal = createDiv(`priority ${taskObject.priority}-priority`);\n const dueDateText = createText(\"due-date-task\", format(taskObject.dueDate, \"yyyy/MM/dd\"), \"p\");\n const deleteTaskButton = createButton(\"delete-task\", \"\");\n handleClick(() => handleDeleteTask(taskObject.task, project.title), deleteTaskButton);\n appendTo(newTaskContainer, taskCheckBox, newTask, prioritySignal, dueDateText, deleteTaskButton);\n appendTo(taskList, newTaskContainer);\n });\n const addDiv = createDiv(\"add-task-container\");\n const addTaskButton = createButton(\"tasks-add-task task-btn\", \"\");\n const addTaskText = createText(\"tasks-add-task task-text\", \"Add new task...\");\n handleClick(showNewTaskForm, addTaskButton, addTaskText);\n appendTo(addDiv, addTaskButton, addTaskText);\n appendTo(taskList, addDiv);\n appendTo(container, projectTitle, taskList);\n appendTo(dialog, container);\n return dialog;\n}\n\nexport const showNewTaskForm = function() {\n const newTaskForm = createNewTaskForm();\n appendTo(dialogSpace, newTaskForm);\n showLastDialog();\n}\n\nconst presetInput = function(containerClass, [...labelProperties], [...inputProperties]) {\n const container = createDiv(containerClass.toString());\n const label = createLabel(labelProperties[0], labelProperties[1], labelProperties[2]);\n const input = createInput(inputProperties[0], inputProperties[1], inputProperties[2]);\n setRequired(input);\n appendTo(container, label, input);\n return container;\n}\n\nconst presetRadioButton = function(value, name, Id, labelContent) {\n const container = createDiv(\"radio-container\");\n const radioButton = createRadioButton(name, value, \"radio\", Id, \"dialog-radio\");\n const label = createLabel(labelContent, Id, \"dialog-label\");\n appendTo(container, radioButton, label);\n return container;\n}\n\nconst presetRadioButtonRequired = function(value, name, Id, labelContent) {\n const container = createDiv(\"radio-container\");\n const radioButton = createRadioButton(name, value, \"radio\", Id, \"dialog-radio\");\n const label = createLabel(labelContent, Id, \"dialog-label\");\n setRequired(radioButton);\n appendTo(container, radioButton, label);\n return container;\n}\n\nconst createNewTaskForm = function() {\n const dialog = genericDialog(\"new-task-dialog\", \"new-task-dialog\");\n const container = createDiv(\"new-task-container\");\n const dialogTitle = createText(\"dialog-title\", \"Add New Task\", \"h3\");\n const form = createForm(\"new-task-form\", \"new-task-form\");\n const taskName = presetInput(\"input-container\", [\"Task:\", \"task-name\", \"dialog-label\"],\n [\"text\", \"task-name\", \"add-task task-name\"]);\n const dueDate = presetInput(\"input-container\", [\"Due Date:\", \"due-date-task\", \"dialog-label\"],\n [\"date\", \"due-date-task\", \"add-task task-due-date\"]\n );\n const priorityContainer = createDiv(\"input-container\");\n const priorityLabel = createLabel(\"Priority:\", \"task-priority-list\", \"dialog-label\");\n const priorityButtonContainer = createFieldSet(\"radios-container\");\n priorityButtonContainer.setAttribute(\"id\", \"task-priority-list\");\n const lowPriority = presetRadioButtonRequired(\"low\", \"task-priority\", \"\", \"Low\");\n const medPriority = presetRadioButton(\"medium\", \"task-priority\", \"\", \"Medium\");\n const highPriority = presetRadioButton(\"high\", \"task-priority\", \"\", \"High\");\n appendTo(priorityButtonContainer, lowPriority, medPriority, highPriority);\n appendTo(priorityContainer, priorityLabel, priorityButtonContainer);\n const finishedContainer = createDiv(\"input-container\");\n const finishedLabel = createLabel(\"Finished?\", \"task-finished-state\", \"dialog-label\");\n const finishedButtonContainer = createFieldSet(\"radios-container\");\n finishedButtonContainer.setAttribute(\"id\", \"task-finished-state\");\n const yesRadio = presetRadioButtonRequired(\"true\", \"task-finished-state\", \"\", \"Yes\");\n const noRadio = presetRadioButton(\"false\", \"task-finished-state\", \"\", \"No\");\n appendTo(finishedButtonContainer, yesRadio, noRadio);\n appendTo(finishedContainer, finishedLabel, finishedButtonContainer);\n const submitButton = createSubmitButton(\"Add\", \"add-task task-submit\");\n appendTo(form, taskName, dueDate, priorityContainer, finishedContainer, submitButton);\n handleSubmit(() => addNewTask(get(\"#dialogs dialog:first-child h3.tasks-header\").textContent), form);\n appendTo(container, dialogTitle, form);\n appendTo(dialog, container);\n return dialog;\n}\n\nexport const handleTaskDialogs = function(projectTitle) {\n closeDialogs();\n showTasksDialog(projectTitle);\n}\n\nexport const showNotesDialog = function(projectTitle) {\n const notesDialog = createNotesDialog(projectTitle);\n appendTo(dialogSpace, notesDialog);\n showLastDialog();\n}\n\nconst createNotesDialog = function(projectTitle) {\n const dialog = genericDialog(\"project-notes-dialog\", \"project-notes-dialog\");\n const container = createDiv(\"notes-container\");\n const title = createText(\"notes-title\", \"Project Notes:\", \"h3\");\n const notes = createTextArea(\"notes-textarea\", \"notes-textarea\", 4, 50, \"Write something here for the project...\");\n notes.value = getNotesFromProject(projectTitle);\n const saveButton = createButton(\"save-notes-btn\", \"Save\");\n handleClick(() => saveNotes(projectTitle), saveButton);\n appendTo(container, title, notes, saveButton);\n appendTo(dialog, container);\n return dialog;\n}","import { getHeader, createText, createImage, createDiv, appendTo, handleClick } from \"./helpers\";\nimport { showProjectDialog } from \"./dialogs\";\nimport getTabs from \"../logic/tabs\";\nimport { getProjectButton } from \"./buttons\";\n\nimport WebsiteLogo from \"../../images/logo.png\";\n\nexport default function loadHeader() {\n const header = getHeader();\n\n const websiteInfo = createDiv(\"web-info\");\n const icon = createImage(\"web-logo\", WebsiteLogo, \"website logo\");\n const title = createText(\"web-title\", \"Dailist\", \"h1\");\n appendTo(websiteInfo, icon, title);\n\n const tabs = getTabs();\n\n const newProjectButton = getProjectButton();\n handleClick(showProjectDialog, newProjectButton);\n\n appendTo(header, websiteInfo, tabs, newProjectButton);\n}","import { createButton } from \"./helpers\";\n\nexport const getProjectButton = function() {\n const button = createButton(\"new-project\", \"+ New Project\");\n return button;\n}","import \"./stylesheets/styles.css\";\n\nimport loadHeader from \"./scripts/dom/header\";\n\nimport { handleEmptyStorage } from \"./scripts/logic/object\";\nimport { loadToday } from \"./scripts/logic/tabs\";\n\nconst loadEverything = function() {\n handleEmptyStorage();\n loadHeader();\n loadToday();\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", loadEverything);\n"],"names":["___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_IMPORT_2___","___CSS_LOADER_URL_IMPORT_3___","___CSS_LOADER_URL_IMPORT_4___","___CSS_LOADER_URL_IMPORT_5___","___CSS_LOADER_URL_IMPORT_6___","___CSS_LOADER_URL_IMPORT_7___","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","___CSS_LOADER_URL_REPLACEMENT_3___","___CSS_LOADER_URL_REPLACEMENT_4___","___CSS_LOADER_URL_REPLACEMENT_5___","___CSS_LOADER_URL_REPLACEMENT_6___","___CSS_LOADER_URL_REPLACEMENT_7___","push","module","id","i","exports","cssWithMappingToString","list","toString","this","map","item","content","needLayer","concat","length","join","modules","media","dedupe","supports","layer","undefined","alreadyImportedModules","k","_k","url","options","String","__esModule","default","test","slice","hash","needQuotes","replace","cssMapping","btoa","base64","unescape","encodeURIComponent","JSON","stringify","data","sourceMapping","stylesInDOM","getIndexByIdentifier","identifier","result","modulesToDom","idCountMap","identifiers","base","count","indexByIdentifier","obj","css","sourceMap","references","updater","addElementStyle","byIndex","splice","api","domAPI","update","newObj","remove","lastIdentifiers","newList","index","newLastIdentifiers","_i","_index","memo","insert","style","target","styleTarget","document","querySelector","window","HTMLIFrameElement","contentDocument","head","e","getTarget","Error","appendChild","element","createElement","setAttributes","attributes","styleElement","nonce","setAttribute","insertStyleElement","styleTagTransform","apply","parentNode","removeChild","removeStyleElement","styleSheet","cssText","firstChild","createTextNode","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","m","n","getter","d","a","definition","key","o","Object","defineProperty","enumerable","get","g","globalThis","Function","prop","prototype","hasOwnProperty","call","scriptUrl","importScripts","location","currentScript","tagName","toUpperCase","src","scripts","getElementsByTagName","p","b","baseURI","self","href","nc","locals","Query","constructor","query","getAll","Array","from","querySelectorAll","createText","className","elementType","text","textContent","createDiv","div","createButton","button","appendTo","parentElement","childElements","forEach","childElement","handleClick","fn","elements","addEventListener","getAllTabs","getHeader","getContent","getDialogs","getDialog","dialogs","showLastDialog","showModal","closeDialogs","dialog","close","closeDialog","createForm","Id","method","form","createLabel","forId","label","createInput","type","input","createSubmitButton","submitButton","getDialogSpace","createRadioButton","name","value","createFieldSet","fieldSet","handleSubmit","forms","event","preventDefault","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","args","width","defaultWidth","formats","formatLong","date","full","long","medium","short","time","dateTime","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","valuesArray","context","formattingValues","defaultFormattingWidth","values","argumentCallback","localize","ordinalNumber","dirtyNumber","_options","number","Number","rem100","era","narrow","abbreviated","wide","quarter","month","day","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","buildMatchFn","string","matchPattern","matchPatterns","defaultMatchWidth","matchResult","match","matchedString","parsePatterns","defaultParseWidth","isArray","array","findIndex","object","findKey","valueCallback","rest","parsePattern","parseInt","parseResult","any","enUS","code","formatDistance","token","tokenValue","addSuffix","comparison","formatRelative","_date","_baseDate","weekStartsOn","firstWeekContainsDate","defaultOptions","getDefaultOptions","Math","pow","millisecondsInWeek","millisecondsInDay","toDate","argument","argStr","Date","NaN","startOfDay","setHours","getTimezoneOffsetInMilliseconds","utcDate","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","setUTCFullYear","constructFrom","getDayOfYear","dateLeft","dateRight","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","round","differenceInCalendarDays","cleanDate","setFullYear","startOfYear","startOfWeek","locale","getDay","diff","setDate","startOfISOWeek","getISOWeekYear","year","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","getTime","getISOWeek","fourthOfJanuary","startOfISOWeekYear","getWeekYear","firstWeekOfNextYear","firstWeekOfThisYear","getWeek","firstWeek","startOfWeekYear","addLeadingZeros","targetLength","abs","padStart","lightFormatters","y","signedYear","M","dayPeriodEnumValue","h","H","s","S","numberOfDigits","milliseconds","trunc","formatters","G","unit","Y","signedWeekYear","weekYear","R","u","Q","ceil","q","L","w","week","I","isoWeek","D","dayOfYear","E","dayOfWeek","localDayOfWeek","c","isoDayOfWeek","toLowerCase","hours","B","K","X","_localize","timezoneOffset","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","x","O","formatTimezoneShort","z","t","T","offset","delimiter","sign","absOffset","minutes","dateLongFormatter","pattern","timeLongFormatter","longFormatters","P","datePattern","timePattern","dateTimeFormat","dayOfYearTokenRE","weekYearTokenRE","throwTokens","isValid","isNaN","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","format","formatStr","originalDate","RangeError","parts","substring","firstCharacter","longFormatter","isToken","cleanEscapedString","preprocessor","formatterOptions","part","useAdditionalWeekYearTokens","isProtectedWeekYearToken","useAdditionalDayOfYearTokens","isProtectedDayOfYearToken","_message","subject","message","console","warn","includes","warnOrThrowProtectedError","formatter","matched","formatDate","getValue","Project","getTitle","getDesc","getDueDate","extractValues","title","description","dueDate","extractAllValues","tasks","notes","started","getRadioValue","radioContainerQuery","Tasks","task","priority","finished","parse","addDays","amount","addMonths","dayOfMonth","endOfDesiredMonth","setMonth","getDefaultProject","DateNow","DateVariable","duration","years","months","weeks","days","seconds","dateWithMonths","msToAdd","add","sub","mstoSub","subDays","subMonths","createTab","activateTab","tabId","tab","loadToday","projects","getTodayProjects","updateTab","loadWeek","getWeekProjects","loadMonth","getMonthProjects","loadYear","getYearProjects","loadAll","getProjects","innerHTML","project","projectIndex","getTitleIndexOf","projectCard","upperPart","projectTitle","deleteButton","boolChoiceDialog","handleDeleteProject","lowerPart","projectDesc","startedStatus","buttons","viewButton","showTasksDialog","addTaskButton","showNewTaskForm","notesButton","showNotesDialog","createProjectCard","localStorage","getItem","setProjects","newProjects","setItem","addNewProject","projectObject","includesTitle","newProjectsStorage","res","isBetween","newerDate","olderDate","dateForCompare","filter","getElementsByClassName","log","removeProject","getTaskIndex","taskObject","taskIndex","dialogSpace","genericDialog","createDialog","cancelButton","question","nextStep","choices","yesButton","noButton","showProjectDialog","projectDialog","createProjectDialog","titleGroup","titleLabel","titleInput","createRequiredInput","descGroup","descLabel","descInput","setRequired","dueDateGroup","dueDateLabel","tasksDialog","createTasksDialog","container","taskList","bulletList","createBulletList","newTaskContainer","taskCheckBox","checked","checkBox","handleCheck","newTask","listItem","createListItem","prioritySignal","dueDateText","deleteTaskButton","handleTaskDialogs","deleteTask","handleDeleteTask","addDiv","addTaskText","newTaskForm","createNewTaskForm","presetInput","containerClass","labelProperties","inputProperties","presetRadioButton","labelContent","radioButton","presetRadioButtonRequired","dialogTitle","taskName","priorityContainer","priorityLabel","priorityButtonContainer","lowPriority","medPriority","highPriority","finishedContainer","finishedLabel","finishedButtonContainer","yesRadio","noRadio","includesTask","addNewTask","notesDialog","createNotesDialog","textArea","createTextArea","getNotesFromProject","saveButton","saveNotes","loadHeader","header","websiteInfo","icon","imageURL","img","alt","createImage","tabs","thisWeek","thisMonth","thisYear","allTime","setIds","setEvents","getTabs","newProjectButton","handleEmptyStorage"],"sourceRoot":""} \ No newline at end of file