diff --git a/docs/_images/fittrackee_screenshot-03.png b/docs/_images/fittrackee_screenshot-03.png index 1fa8106d..887bf4fa 100644 Binary files a/docs/_images/fittrackee_screenshot-03.png and b/docs/_images/fittrackee_screenshot-03.png differ diff --git a/docsrc/source/_images/fittrackee_screenshot-03.png b/docsrc/source/_images/fittrackee_screenshot-03.png index 1fa8106d..887bf4fa 100644 Binary files a/docsrc/source/_images/fittrackee_screenshot-03.png and b/docsrc/source/_images/fittrackee_screenshot-03.png differ diff --git a/fittrackee/dist/index.html b/fittrackee/dist/index.html index d2e824e9..a6c6e2e0 100644 --- a/fittrackee/dist/index.html +++ b/fittrackee/dist/index.html @@ -1 +1 @@ -FitTrackee
\ No newline at end of file +FitTrackee
\ No newline at end of file diff --git a/fittrackee/dist/precache-manifest.548e1c3c4463fa6d9e835b2a5a45fd90.js b/fittrackee/dist/precache-manifest.e58c9e28b2243026bdc28972a39db5d6.js similarity index 94% rename from fittrackee/dist/precache-manifest.548e1c3c4463fa6d9e835b2a5a45fd90.js rename to fittrackee/dist/precache-manifest.e58c9e28b2243026bdc28972a39db5d6.js index 12c551e7..78cf598c 100644 --- a/fittrackee/dist/precache-manifest.548e1c3c4463fa6d9e835b2a5a45fd90.js +++ b/fittrackee/dist/precache-manifest.e58c9e28b2243026bdc28972a39db5d6.js @@ -64,7 +64,7 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/img/workouts/mountains.svg" }, { - "revision": "362d14a4781f029d90962d9a0e2798af", + "revision": "d5b5aba0bf70bf6b00daa6f4a151dd8d", "url": "/index.html" }, { @@ -80,7 +80,7 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/static/css/admin.9f104fd3.css" }, { - "revision": "4ccf34f938416a1f98c6", + "revision": "856998fdc8f720c6dea3", "url": "/static/css/app.b50ad746.css" }, { @@ -108,8 +108,8 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/static/css/reset.165584bc.css" }, { - "revision": "a1a8fe166d947249a434", - "url": "/static/css/workouts.0c5cfad5.css" + "revision": "6163e12e51d7d18c9f41", + "url": "/static/css/workouts.368ff8e8.css" }, { "revision": "e719f9244c69e28e7d00e725ca1e280e", @@ -196,8 +196,8 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/static/js/admin.4047df15.js" }, { - "revision": "4ccf34f938416a1f98c6", - "url": "/static/js/app.5434baf0.js" + "revision": "856998fdc8f720c6dea3", + "url": "/static/js/app.1f820b50.js" }, { "revision": "bd7d183c9f68e5f4027d", @@ -240,7 +240,7 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/static/js/reset.98679f6c.js" }, { - "revision": "a1a8fe166d947249a434", - "url": "/static/js/workouts.f98d0408.js" + "revision": "6163e12e51d7d18c9f41", + "url": "/static/js/workouts.52ba33b8.js" } ]); \ No newline at end of file diff --git a/fittrackee/dist/service-worker.js b/fittrackee/dist/service-worker.js index e4cb3bc4..8faef1e5 100644 --- a/fittrackee/dist/service-worker.js +++ b/fittrackee/dist/service-worker.js @@ -14,7 +14,7 @@ importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); importScripts( - "/precache-manifest.548e1c3c4463fa6d9e835b2a5a45fd90.js" + "/precache-manifest.e58c9e28b2243026bdc28972a39db5d6.js" ); workbox.core.setCacheNameDetails({prefix: "fittrackee_client"}); diff --git a/fittrackee/dist/static/css/workouts.0c5cfad5.css b/fittrackee/dist/static/css/workouts.0c5cfad5.css deleted file mode 100644 index f167dbcb..00000000 --- a/fittrackee/dist/static/css/workouts.0c5cfad5.css +++ /dev/null @@ -1 +0,0 @@ -[data-v-78f33062]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,0.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#c8cdd3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--scroll-button-bg-color:hsla(0,0%,100%,0.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color))}body[data-v-78f33062]{margin:0}#app[data-v-78f33062]{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);margin:0;min-height:100vh}a[data-v-78f33062]{color:var(--app-a-color);text-decoration:none}img[data-v-78f33062]{max-width:100%}input[data-v-78f33062],select[data-v-78f33062],textarea[data-v-78f33062]{border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input[data-v-78f33062]:disabled,select[data-v-78f33062]:disabled,textarea[data-v-78f33062]:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}label[data-v-78f33062]{font-weight:700}button[data-v-78f33062]{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button[data-v-78f33062]:hover{background:var(--app-color);color:var(--button-hover-color)}button[data-v-78f33062]:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button[data-v-78f33062]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel[data-v-78f33062]{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel[data-v-78f33062]:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm[data-v-78f33062]{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm[data-v-78f33062]:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger[data-v-78f33062]{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger[data-v-78f33062]:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger[data-v-78f33062]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box[data-v-78f33062]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}.info-box[data-v-78f33062]{background-color:var(--info-background-color);border-radius:4px;color:var(--info-color);font-size:.8em;padding:10px}.container[data-v-78f33062]{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items[data-v-78f33062]{display:flex;flex-direction:column}.form-box .form-items input[data-v-78f33062]{margin:10px;padding:5px}.upper[data-v-78f33062]{text-transform:uppercase}.view[data-v-78f33062]{padding-bottom:35px}.fa-trophy[data-v-78f33062]{color:var(--workout-trophy-color)}.mountains[data-v-78f33062]{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title[data-v-78f33062]{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map[data-v-78f33062]{background-color:var(--workout-no-map-bg-color);background-image:url(/img/workouts/map.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group[data-v-78f33062]{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes[data-v-78f33062]{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes[data-v-78f33062]{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label[data-v-78f33062]{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input[data-v-78f33062]{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span[data-v-78f33062]{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span[data-v-78f33062]{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl[data-v-78f33062]{display:flex;flex-direction:column;width:100%}.description-list dl dt[data-v-78f33062]{font-weight:700}.description-list dl dd[data-v-78f33062]{margin-bottom:10px}.center-card[data-v-78f33062]{margin:0 auto;width:700px}.center-card.with-margin[data-v-78f33062]{margin-top:100px}@media screen and (max-width:1000px){.center-card[data-v-78f33062]{width:100%;margin:0 auto 50px auto}.center-card.with-margin[data-v-78f33062]{margin-top:0}}.center-text[data-v-78f33062]{text-align:center}.responsive-table[data-v-78f33062]{margin-bottom:15px}.responsive-table table[data-v-78f33062]{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th[data-v-78f33062]{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody[data-v-78f33062]{font-size:.95em}.responsive-table table tbody td[data-v-78f33062]{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td[data-v-78f33062]{border:none}.responsive-table table .cell-heading[data-v-78f33062]{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead[data-v-78f33062]{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr[data-v-78f33062]{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td[data-v-78f33062]{border:1px solid var(--card-border-color);margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td[data-v-78f33062]{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading[data-v-78f33062]{display:flex}}@media screen and (max-width:500px){.responsive-table table td[data-v-78f33062]{width:100%}}.workouts-filters .form[data-v-78f33062]{display:flex;flex-direction:column;padding-top:0}.workouts-filters .form .form-items-group[data-v-78f33062]{display:flex;flex-direction:column;padding:5px}.workouts-filters .form .form-items-group .form-item[data-v-78f33062]{display:flex;flex-direction:column}.workouts-filters .form .form-items-group .form-item .form-inputs-group[data-v-78f33062]{display:flex;flex-direction:row;justify-content:space-around;align-items:center}.workouts-filters .form .form-items-group .form-item .form-inputs-group input[data-v-78f33062]{width:34%}.workouts-filters .form .form-items-group .form-item .form-inputs-group span[data-v-78f33062]{padding:5px}.workouts-filters .form .form-items-group .form-item input[data-v-78f33062]{height:16px}.workouts-filters .form .form-items-group .form-item select[data-v-78f33062]{height:36px;padding:0 5px}.workouts-filters .form-button[data-v-78f33062]{display:flex;justify-content:center}.workouts-filters .form-button button[data-v-78f33062]{margin:20px 5px 10px 5px;width:100%}@media screen and (max-width:1000px){.workouts-filters .form[data-v-78f33062]{flex-direction:row;padding-top:5px}.workouts-filters .form .form-items-group[data-v-78f33062]{padding:0 5px;height:100%}.workouts-filters .form .form-items-group .form-item label[data-v-78f33062]{font-size:.9em}.workouts-filters .form .form-items-group .form-item .form-inputs-group[data-v-78f33062]{flex-direction:column;justify-content:normal;padding:0}.workouts-filters .form .form-items-group .form-item .form-inputs-group input[data-v-78f33062]{width:75%}.workouts-filters .form-button button[data-v-78f33062]{margin:10px 5px;width:100%}}@media screen and (max-width:700px){.workouts-filters .form[data-v-78f33062]{flex-direction:column;padding-top:0}.workouts-filters .form .form-items-group[data-v-78f33062]{padding:5px}.workouts-filters .form .form-items-group .form-item label[data-v-78f33062]{font-size:1em}.workouts-filters .form .form-items-group .form-item .form-inputs-group[data-v-78f33062]{flex-direction:row;justify-content:space-around;align-items:center}.workouts-filters .form .form-items-group .form-item .form-inputs-group input[data-v-78f33062]{width:50%}.workouts-filters .form .form-items-group .form-item .form-inputs-group span[data-v-78f33062]{padding:5px}.workouts-filters .form-button button[data-v-78f33062]{margin:10px 5px}}[data-v-a4169f0c]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,0.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#c8cdd3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--scroll-button-bg-color:hsla(0,0%,100%,0.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color))}body[data-v-a4169f0c]{margin:0}#app[data-v-a4169f0c]{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);margin:0;min-height:100vh}a[data-v-a4169f0c]{color:var(--app-a-color);text-decoration:none}img[data-v-a4169f0c]{max-width:100%}input[data-v-a4169f0c],select[data-v-a4169f0c],textarea[data-v-a4169f0c]{border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input[data-v-a4169f0c]:disabled,select[data-v-a4169f0c]:disabled,textarea[data-v-a4169f0c]:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}label[data-v-a4169f0c]{font-weight:700}button[data-v-a4169f0c]{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button[data-v-a4169f0c]:hover{background:var(--app-color);color:var(--button-hover-color)}button[data-v-a4169f0c]:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button[data-v-a4169f0c]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel[data-v-a4169f0c]{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel[data-v-a4169f0c]:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm[data-v-a4169f0c]{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm[data-v-a4169f0c]:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger[data-v-a4169f0c]{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger[data-v-a4169f0c]:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger[data-v-a4169f0c]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box[data-v-a4169f0c]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}.info-box[data-v-a4169f0c]{background-color:var(--info-background-color);border-radius:4px;color:var(--info-color);font-size:.8em;padding:10px}.container[data-v-a4169f0c]{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items[data-v-a4169f0c]{display:flex;flex-direction:column}.form-box .form-items input[data-v-a4169f0c]{margin:10px;padding:5px}.upper[data-v-a4169f0c]{text-transform:uppercase}.view[data-v-a4169f0c]{padding-bottom:35px}.fa-trophy[data-v-a4169f0c]{color:var(--workout-trophy-color)}.mountains[data-v-a4169f0c]{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title[data-v-a4169f0c]{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map[data-v-a4169f0c]{background-color:var(--workout-no-map-bg-color);background-image:url(/img/workouts/map.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group[data-v-a4169f0c]{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes[data-v-a4169f0c]{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes[data-v-a4169f0c]{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label[data-v-a4169f0c]{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input[data-v-a4169f0c]{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span[data-v-a4169f0c]{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span[data-v-a4169f0c]{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl[data-v-a4169f0c]{display:flex;flex-direction:column;width:100%}.description-list dl dt[data-v-a4169f0c]{font-weight:700}.description-list dl dd[data-v-a4169f0c]{margin-bottom:10px}.center-card[data-v-a4169f0c]{margin:0 auto;width:700px}.center-card.with-margin[data-v-a4169f0c]{margin-top:100px}@media screen and (max-width:1000px){.center-card[data-v-a4169f0c]{width:100%;margin:0 auto 50px auto}.center-card.with-margin[data-v-a4169f0c]{margin-top:0}}.center-text[data-v-a4169f0c]{text-align:center}.responsive-table[data-v-a4169f0c]{margin-bottom:15px}.responsive-table table[data-v-a4169f0c]{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th[data-v-a4169f0c]{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody[data-v-a4169f0c]{font-size:.95em}.responsive-table table tbody td[data-v-a4169f0c]{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td[data-v-a4169f0c]{border:none}.responsive-table table .cell-heading[data-v-a4169f0c]{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead[data-v-a4169f0c]{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr[data-v-a4169f0c]{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td[data-v-a4169f0c]{border:1px solid var(--card-border-color);margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td[data-v-a4169f0c]{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading[data-v-a4169f0c]{display:flex}}@media screen and (max-width:500px){.responsive-table table td[data-v-a4169f0c]{width:100%}}.workouts-list[data-v-a4169f0c]{display:flex;flex-direction:column;margin-bottom:50px;width:100%}.workouts-list .box[data-v-a4169f0c]{padding:10px 20px}@media screen and (max-width:700px){.workouts-list .box.empty-table[data-v-a4169f0c]{display:none}}.workouts-list .box .total[data-v-a4169f0c]{display:flex;gap:5px}.workouts-list .box .total .total-label[data-v-a4169f0c]{font-weight:700}.workouts-list .box .top-pagination[data-v-a4169f0c]{display:none}@media screen and (max-width:700px){.workouts-list .box .top-pagination[data-v-a4169f0c]{display:flex}}@media screen and (max-width:700px){.workouts-list .box[data-v-a4169f0c] .pagination-center ul{margin-top:0}}.workouts-list .box .workouts-table .sport-col[data-v-a4169f0c]{padding-right:0}.workouts-list .box .workouts-table .workout-title[data-v-a4169f0c]{max-width:90px;position:relative}.workouts-list .box .workouts-table .workout-title .fa-map-o[data-v-a4169f0c]{font-size:.75em}.workouts-list .box .workouts-table .workout-title .static-map[data-v-a4169f0c]{display:none;box-shadow:3px 3px 3px 1px #d3d3d3}.workouts-list .box .workouts-table .workout-title:hover .static-map[data-v-a4169f0c]{display:block}.workouts-list .box .workouts-table .sport-img[data-v-a4169f0c]{height:20px;width:20px}@media screen and (max-width:700px){.workouts-list .box .workouts-table .sport-col[data-v-a4169f0c]{display:flex;justify-content:center;padding:10px}.workouts-list .box .workouts-table .workout-title[data-v-a4169f0c]{max-width:none}.workouts-list .box .workouts-table .workout-title:hover .static-map[data-v-a4169f0c]{display:none}}.workouts-list .more-workouts[data-v-a4169f0c]{display:flex;justify-content:center;padding:10px}[data-v-22a8a7cd]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,0.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#c8cdd3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--scroll-button-bg-color:hsla(0,0%,100%,0.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color))}body[data-v-22a8a7cd]{margin:0}#app[data-v-22a8a7cd]{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);margin:0;min-height:100vh}a[data-v-22a8a7cd]{color:var(--app-a-color);text-decoration:none}img[data-v-22a8a7cd]{max-width:100%}input[data-v-22a8a7cd],select[data-v-22a8a7cd],textarea[data-v-22a8a7cd]{border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input[data-v-22a8a7cd]:disabled,select[data-v-22a8a7cd]:disabled,textarea[data-v-22a8a7cd]:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}label[data-v-22a8a7cd]{font-weight:700}button[data-v-22a8a7cd]{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button[data-v-22a8a7cd]:hover{background:var(--app-color);color:var(--button-hover-color)}button[data-v-22a8a7cd]:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button[data-v-22a8a7cd]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel[data-v-22a8a7cd]{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel[data-v-22a8a7cd]:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm[data-v-22a8a7cd]{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm[data-v-22a8a7cd]:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger[data-v-22a8a7cd]{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger[data-v-22a8a7cd]:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger[data-v-22a8a7cd]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box[data-v-22a8a7cd]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}.info-box[data-v-22a8a7cd]{background-color:var(--info-background-color);border-radius:4px;color:var(--info-color);font-size:.8em;padding:10px}.container[data-v-22a8a7cd]{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items[data-v-22a8a7cd]{display:flex;flex-direction:column}.form-box .form-items input[data-v-22a8a7cd]{margin:10px;padding:5px}.upper[data-v-22a8a7cd]{text-transform:uppercase}.view[data-v-22a8a7cd]{padding-bottom:35px}.fa-trophy[data-v-22a8a7cd]{color:var(--workout-trophy-color)}.mountains[data-v-22a8a7cd]{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title[data-v-22a8a7cd]{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map[data-v-22a8a7cd]{background-color:var(--workout-no-map-bg-color);background-image:url(/img/workouts/map.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group[data-v-22a8a7cd]{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes[data-v-22a8a7cd]{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes[data-v-22a8a7cd]{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label[data-v-22a8a7cd]{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input[data-v-22a8a7cd]{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span[data-v-22a8a7cd]{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span[data-v-22a8a7cd]{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl[data-v-22a8a7cd]{display:flex;flex-direction:column;width:100%}.description-list dl dt[data-v-22a8a7cd]{font-weight:700}.description-list dl dd[data-v-22a8a7cd]{margin-bottom:10px}.center-card[data-v-22a8a7cd]{margin:0 auto;width:700px}.center-card.with-margin[data-v-22a8a7cd]{margin-top:100px}@media screen and (max-width:1000px){.center-card[data-v-22a8a7cd]{width:100%;margin:0 auto 50px auto}.center-card.with-margin[data-v-22a8a7cd]{margin-top:0}}.center-text[data-v-22a8a7cd]{text-align:center}.responsive-table[data-v-22a8a7cd]{margin-bottom:15px}.responsive-table table[data-v-22a8a7cd]{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th[data-v-22a8a7cd]{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody[data-v-22a8a7cd]{font-size:.95em}.responsive-table table tbody td[data-v-22a8a7cd]{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td[data-v-22a8a7cd]{border:none}.responsive-table table .cell-heading[data-v-22a8a7cd]{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead[data-v-22a8a7cd]{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr[data-v-22a8a7cd]{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td[data-v-22a8a7cd]{border:1px solid var(--card-border-color);margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td[data-v-22a8a7cd]{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading[data-v-22a8a7cd]{display:flex}}@media screen and (max-width:500px){.responsive-table table td[data-v-22a8a7cd]{width:100%}}#workouts[data-v-22a8a7cd]{height:100%}#workouts .workouts-container[data-v-22a8a7cd]{display:flex;flex-direction:row}@media screen and (max-width:1000px){#workouts .workouts-container[data-v-22a8a7cd]{flex-direction:column}}#workouts .workouts-container .filters-container[data-v-22a8a7cd],#workouts .workouts-container .list-container[data-v-22a8a7cd]{display:flex;flex-direction:column}#workouts .workouts-container .filters-container[data-v-22a8a7cd]{width:25%}@media screen and (max-width:1000px){#workouts .workouts-container .filters-container[data-v-22a8a7cd]{width:100%}}@media screen and (max-width:1000px)and (max-width:700px){#workouts .workouts-container .filters-container.hidden[data-v-22a8a7cd]{display:none}}#workouts .workouts-container .display-filters[data-v-22a8a7cd]{display:none;font-size:.8em;padding:0 20px}#workouts .workouts-container .display-filters span[data-v-22a8a7cd]{cursor:pointer;font-weight:700;padding-left:5px}#workouts .workouts-container .display-filters .fa[data-v-22a8a7cd]{cursor:pointer}@media screen and (max-width:700px){#workouts .workouts-container .display-filters[data-v-22a8a7cd]{display:flex;justify-content:flex-end;align-items:center}}#workouts .workouts-container .list-container[data-v-22a8a7cd]{width:75%}@media screen and (max-width:1000px){#workouts .workouts-container .list-container[data-v-22a8a7cd]{width:100%}}[data-v-2230775e]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,0.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#c8cdd3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--scroll-button-bg-color:hsla(0,0%,100%,0.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color))}body[data-v-2230775e]{margin:0}#app[data-v-2230775e]{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);margin:0;min-height:100vh}a[data-v-2230775e]{color:var(--app-a-color);text-decoration:none}img[data-v-2230775e]{max-width:100%}input[data-v-2230775e],select[data-v-2230775e],textarea[data-v-2230775e]{border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input[data-v-2230775e]:disabled,select[data-v-2230775e]:disabled,textarea[data-v-2230775e]:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}label[data-v-2230775e]{font-weight:700}button[data-v-2230775e]{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button[data-v-2230775e]:hover{background:var(--app-color);color:var(--button-hover-color)}button[data-v-2230775e]:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button[data-v-2230775e]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel[data-v-2230775e]{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel[data-v-2230775e]:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm[data-v-2230775e]{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm[data-v-2230775e]:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger[data-v-2230775e]{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger[data-v-2230775e]:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger[data-v-2230775e]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box[data-v-2230775e]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}.info-box[data-v-2230775e]{background-color:var(--info-background-color);border-radius:4px;color:var(--info-color);font-size:.8em;padding:10px}.container[data-v-2230775e]{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items[data-v-2230775e]{display:flex;flex-direction:column}.form-box .form-items input[data-v-2230775e]{margin:10px;padding:5px}.upper[data-v-2230775e]{text-transform:uppercase}.view[data-v-2230775e]{padding-bottom:35px}.fa-trophy[data-v-2230775e]{color:var(--workout-trophy-color)}.mountains[data-v-2230775e]{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title[data-v-2230775e]{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map[data-v-2230775e]{background-color:var(--workout-no-map-bg-color);background-image:url(/img/workouts/map.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group[data-v-2230775e]{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes[data-v-2230775e]{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes[data-v-2230775e]{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label[data-v-2230775e]{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input[data-v-2230775e]{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span[data-v-2230775e]{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span[data-v-2230775e]{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl[data-v-2230775e]{display:flex;flex-direction:column;width:100%}.description-list dl dt[data-v-2230775e]{font-weight:700}.description-list dl dd[data-v-2230775e]{margin-bottom:10px}.center-card[data-v-2230775e]{margin:0 auto;width:700px}.center-card.with-margin[data-v-2230775e]{margin-top:100px}@media screen and (max-width:1000px){.center-card[data-v-2230775e]{width:100%;margin:0 auto 50px auto}.center-card.with-margin[data-v-2230775e]{margin-top:0}}.center-text[data-v-2230775e]{text-align:center}.responsive-table[data-v-2230775e]{margin-bottom:15px}.responsive-table table[data-v-2230775e]{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th[data-v-2230775e]{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody[data-v-2230775e]{font-size:.95em}.responsive-table table tbody td[data-v-2230775e]{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td[data-v-2230775e]{border:none}.responsive-table table .cell-heading[data-v-2230775e]{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead[data-v-2230775e]{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr[data-v-2230775e]{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td[data-v-2230775e]{border:1px solid var(--card-border-color);margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td[data-v-2230775e]{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading[data-v-2230775e]{display:flex}}@media screen and (max-width:500px){.responsive-table table td[data-v-2230775e]{width:100%}}#workout-chart[data-v-2230775e] .card .card-title{text-transform:capitalize}#workout-chart[data-v-2230775e] .card .card-content{display:flex;flex-direction:column}#workout-chart[data-v-2230775e] .card .card-content .chart-radio{width:100%;display:flex;justify-content:center}#workout-chart[data-v-2230775e] .card .card-content .chart-radio label{padding:0 10px}#workout-chart[data-v-2230775e] .card .card-content .no-data-cleaning{font-size:.85em;font-style:italic}@media screen and (max-width:700px){#workout-chart[data-v-2230775e] .card .card-content{padding:10px 0}#workout-chart[data-v-2230775e] .card .card-content .no-data-cleaning{padding:0 20px}}[data-v-9cab340c]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,0.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#c8cdd3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--scroll-button-bg-color:hsla(0,0%,100%,0.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color))}body[data-v-9cab340c]{margin:0}#app[data-v-9cab340c]{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);margin:0;min-height:100vh}a[data-v-9cab340c]{color:var(--app-a-color);text-decoration:none}img[data-v-9cab340c]{max-width:100%}input[data-v-9cab340c],select[data-v-9cab340c],textarea[data-v-9cab340c]{border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input[data-v-9cab340c]:disabled,select[data-v-9cab340c]:disabled,textarea[data-v-9cab340c]:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}label[data-v-9cab340c]{font-weight:700}button[data-v-9cab340c]{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button[data-v-9cab340c]:hover{background:var(--app-color);color:var(--button-hover-color)}button[data-v-9cab340c]:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button[data-v-9cab340c]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel[data-v-9cab340c]{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel[data-v-9cab340c]:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm[data-v-9cab340c]{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm[data-v-9cab340c]:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger[data-v-9cab340c]{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger[data-v-9cab340c]:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger[data-v-9cab340c]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box[data-v-9cab340c]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}.info-box[data-v-9cab340c]{background-color:var(--info-background-color);border-radius:4px;color:var(--info-color);font-size:.8em;padding:10px}.container[data-v-9cab340c]{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items[data-v-9cab340c]{display:flex;flex-direction:column}.form-box .form-items input[data-v-9cab340c]{margin:10px;padding:5px}.upper[data-v-9cab340c]{text-transform:uppercase}.view[data-v-9cab340c]{padding-bottom:35px}.fa-trophy[data-v-9cab340c]{color:var(--workout-trophy-color)}.mountains[data-v-9cab340c]{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title[data-v-9cab340c]{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map[data-v-9cab340c]{background-color:var(--workout-no-map-bg-color);background-image:url(/img/workouts/map.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group[data-v-9cab340c]{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes[data-v-9cab340c]{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes[data-v-9cab340c]{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label[data-v-9cab340c]{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input[data-v-9cab340c]{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span[data-v-9cab340c]{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span[data-v-9cab340c]{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl[data-v-9cab340c]{display:flex;flex-direction:column;width:100%}.description-list dl dt[data-v-9cab340c]{font-weight:700}.description-list dl dd[data-v-9cab340c]{margin-bottom:10px}.center-card[data-v-9cab340c]{margin:0 auto;width:700px}.center-card.with-margin[data-v-9cab340c]{margin-top:100px}@media screen and (max-width:1000px){.center-card[data-v-9cab340c]{width:100%;margin:0 auto 50px auto}.center-card.with-margin[data-v-9cab340c]{margin-top:0}}.center-text[data-v-9cab340c]{text-align:center}.responsive-table[data-v-9cab340c]{margin-bottom:15px}.responsive-table table[data-v-9cab340c]{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th[data-v-9cab340c]{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody[data-v-9cab340c]{font-size:.95em}.responsive-table table tbody td[data-v-9cab340c]{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td[data-v-9cab340c]{border:none}.responsive-table table .cell-heading[data-v-9cab340c]{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead[data-v-9cab340c]{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr[data-v-9cab340c]{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td[data-v-9cab340c]{border:1px solid var(--card-border-color);margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td[data-v-9cab340c]{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading[data-v-9cab340c]{display:flex}}@media screen and (max-width:500px){.responsive-table table td[data-v-9cab340c]{width:100%}}#workout-card-title[data-v-9cab340c]{display:flex;justify-content:space-between;align-items:center}#workout-card-title .workout-arrow[data-v-9cab340c]{cursor:pointer}#workout-card-title .workout-arrow.inactive[data-v-9cab340c]{color:var(--disabled-color);cursor:default}#workout-card-title .workout-card-title[data-v-9cab340c]{display:flex;flex-grow:1}#workout-card-title .workout-card-title .sport-img[data-v-9cab340c]{height:35px;width:35px;padding:0 10px}#workout-card-title .workout-card-title .workout-date[data-v-9cab340c]{font-size:.8em;font-weight:400}#workout-card-title .workout-card-title .workout-segment[data-v-9cab340c]{font-weight:400}#workout-card-title .workout-card-title .workout-link[data-v-9cab340c]{padding-left:10px}#workout-card-title .workout-card-title .fa[data-v-9cab340c]{padding:0 3px}@media screen and (max-width:700px){#workout-card-title .workout-card-title .fa-edit[data-v-9cab340c],#workout-card-title .workout-card-title .fa-trash[data-v-9cab340c]{border:solid 1px var(--card-border-color);border-radius:4px;margin-left:5px;padding:0 10px}}[data-v-da96984c]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,0.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#c8cdd3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--scroll-button-bg-color:hsla(0,0%,100%,0.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color))}body[data-v-da96984c]{margin:0}#app[data-v-da96984c]{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);margin:0;min-height:100vh}a[data-v-da96984c]{color:var(--app-a-color);text-decoration:none}img[data-v-da96984c]{max-width:100%}input[data-v-da96984c],select[data-v-da96984c],textarea[data-v-da96984c]{border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input[data-v-da96984c]:disabled,select[data-v-da96984c]:disabled,textarea[data-v-da96984c]:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}label[data-v-da96984c]{font-weight:700}button[data-v-da96984c]{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button[data-v-da96984c]:hover{background:var(--app-color);color:var(--button-hover-color)}button[data-v-da96984c]:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button[data-v-da96984c]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel[data-v-da96984c]{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel[data-v-da96984c]:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm[data-v-da96984c]{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm[data-v-da96984c]:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger[data-v-da96984c]{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger[data-v-da96984c]:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger[data-v-da96984c]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box[data-v-da96984c]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}.info-box[data-v-da96984c]{background-color:var(--info-background-color);border-radius:4px;color:var(--info-color);font-size:.8em;padding:10px}.container[data-v-da96984c]{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items[data-v-da96984c]{display:flex;flex-direction:column}.form-box .form-items input[data-v-da96984c]{margin:10px;padding:5px}.upper[data-v-da96984c]{text-transform:uppercase}.view[data-v-da96984c]{padding-bottom:35px}.fa-trophy[data-v-da96984c]{color:var(--workout-trophy-color)}.mountains[data-v-da96984c]{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title[data-v-da96984c]{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map[data-v-da96984c]{background-color:var(--workout-no-map-bg-color);background-image:url(/img/workouts/map.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group[data-v-da96984c]{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes[data-v-da96984c]{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes[data-v-da96984c]{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label[data-v-da96984c]{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input[data-v-da96984c]{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span[data-v-da96984c]{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span[data-v-da96984c]{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl[data-v-da96984c]{display:flex;flex-direction:column;width:100%}.description-list dl dt[data-v-da96984c]{font-weight:700}.description-list dl dd[data-v-da96984c]{margin-bottom:10px}.center-card[data-v-da96984c]{margin:0 auto;width:700px}.center-card.with-margin[data-v-da96984c]{margin-top:100px}@media screen and (max-width:1000px){.center-card[data-v-da96984c]{width:100%;margin:0 auto 50px auto}.center-card.with-margin[data-v-da96984c]{margin-top:0}}.center-text[data-v-da96984c]{text-align:center}.responsive-table[data-v-da96984c]{margin-bottom:15px}.responsive-table table[data-v-da96984c]{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th[data-v-da96984c]{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody[data-v-da96984c]{font-size:.95em}.responsive-table table tbody td[data-v-da96984c]{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td[data-v-da96984c]{border:none}.responsive-table table .cell-heading[data-v-da96984c]{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead[data-v-da96984c]{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr[data-v-da96984c]{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td[data-v-da96984c]{border:1px solid var(--card-border-color);margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td[data-v-da96984c]{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading[data-v-da96984c]{display:flex}}@media screen and (max-width:500px){.responsive-table table td[data-v-da96984c]{width:100%}}.workout-record sup[data-v-da96984c]{font-size:75%;line-height:0}[data-v-7eb41918]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,0.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#c8cdd3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--scroll-button-bg-color:hsla(0,0%,100%,0.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color))}body[data-v-7eb41918]{margin:0}#app[data-v-7eb41918]{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);margin:0;min-height:100vh}a[data-v-7eb41918]{color:var(--app-a-color);text-decoration:none}img[data-v-7eb41918]{max-width:100%}input[data-v-7eb41918],select[data-v-7eb41918],textarea[data-v-7eb41918]{border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input[data-v-7eb41918]:disabled,select[data-v-7eb41918]:disabled,textarea[data-v-7eb41918]:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}label[data-v-7eb41918]{font-weight:700}button[data-v-7eb41918]{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button[data-v-7eb41918]:hover{background:var(--app-color);color:var(--button-hover-color)}button[data-v-7eb41918]:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button[data-v-7eb41918]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel[data-v-7eb41918]{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel[data-v-7eb41918]:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm[data-v-7eb41918]{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm[data-v-7eb41918]:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger[data-v-7eb41918]{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger[data-v-7eb41918]:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger[data-v-7eb41918]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box[data-v-7eb41918]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}.info-box[data-v-7eb41918]{background-color:var(--info-background-color);border-radius:4px;color:var(--info-color);font-size:.8em;padding:10px}.container[data-v-7eb41918]{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items[data-v-7eb41918]{display:flex;flex-direction:column}.form-box .form-items input[data-v-7eb41918]{margin:10px;padding:5px}.upper[data-v-7eb41918]{text-transform:uppercase}.view[data-v-7eb41918]{padding-bottom:35px}.fa-trophy[data-v-7eb41918]{color:var(--workout-trophy-color)}.mountains[data-v-7eb41918]{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title[data-v-7eb41918]{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map[data-v-7eb41918]{background-color:var(--workout-no-map-bg-color);background-image:url(/img/workouts/map.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group[data-v-7eb41918]{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes[data-v-7eb41918]{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes[data-v-7eb41918]{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label[data-v-7eb41918]{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input[data-v-7eb41918]{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span[data-v-7eb41918]{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span[data-v-7eb41918]{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl[data-v-7eb41918]{display:flex;flex-direction:column;width:100%}.description-list dl dt[data-v-7eb41918]{font-weight:700}.description-list dl dd[data-v-7eb41918]{margin-bottom:10px}.center-card[data-v-7eb41918]{margin:0 auto;width:700px}.center-card.with-margin[data-v-7eb41918]{margin-top:100px}@media screen and (max-width:1000px){.center-card[data-v-7eb41918]{width:100%;margin:0 auto 50px auto}.center-card.with-margin[data-v-7eb41918]{margin-top:0}}.center-text[data-v-7eb41918]{text-align:center}.responsive-table[data-v-7eb41918]{margin-bottom:15px}.responsive-table table[data-v-7eb41918]{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th[data-v-7eb41918]{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody[data-v-7eb41918]{font-size:.95em}.responsive-table table tbody td[data-v-7eb41918]{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td[data-v-7eb41918]{border:none}.responsive-table table .cell-heading[data-v-7eb41918]{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead[data-v-7eb41918]{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr[data-v-7eb41918]{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td[data-v-7eb41918]{border:1px solid var(--card-border-color);margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td[data-v-7eb41918]{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading[data-v-7eb41918]{display:flex}}@media screen and (max-width:500px){.responsive-table table td[data-v-7eb41918]{width:100%}}#workout-weather[data-v-7eb41918]{padding-top:10px}#workout-weather .weather-img[data-v-7eb41918]{height:30px;filter:var(--workout-img-color)}#workout-weather .weather-img-small[data-v-7eb41918]{height:20px}#workout-weather .weather-table[data-v-7eb41918]{width:100%;text-align:center}#workout-weather .weather-table .weather-th[data-v-7eb41918]{display:flex;flex-direction:column;text-transform:capitalize}#workout-weather .weather-table tbody[data-v-7eb41918]{font-size:.8em}[data-v-aa863bde]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,0.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#c8cdd3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--scroll-button-bg-color:hsla(0,0%,100%,0.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color))}body[data-v-aa863bde]{margin:0}#app[data-v-aa863bde]{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);margin:0;min-height:100vh}a[data-v-aa863bde]{color:var(--app-a-color);text-decoration:none}img[data-v-aa863bde]{max-width:100%}input[data-v-aa863bde],select[data-v-aa863bde],textarea[data-v-aa863bde]{border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input[data-v-aa863bde]:disabled,select[data-v-aa863bde]:disabled,textarea[data-v-aa863bde]:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}label[data-v-aa863bde]{font-weight:700}button[data-v-aa863bde]{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button[data-v-aa863bde]:hover{background:var(--app-color);color:var(--button-hover-color)}button[data-v-aa863bde]:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button[data-v-aa863bde]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel[data-v-aa863bde]{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel[data-v-aa863bde]:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm[data-v-aa863bde]{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm[data-v-aa863bde]:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger[data-v-aa863bde]{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger[data-v-aa863bde]:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger[data-v-aa863bde]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box[data-v-aa863bde]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}.info-box[data-v-aa863bde]{background-color:var(--info-background-color);border-radius:4px;color:var(--info-color);font-size:.8em;padding:10px}.container[data-v-aa863bde]{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items[data-v-aa863bde]{display:flex;flex-direction:column}.form-box .form-items input[data-v-aa863bde]{margin:10px;padding:5px}.upper[data-v-aa863bde]{text-transform:uppercase}.view[data-v-aa863bde]{padding-bottom:35px}.fa-trophy[data-v-aa863bde]{color:var(--workout-trophy-color)}.mountains[data-v-aa863bde]{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title[data-v-aa863bde]{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map[data-v-aa863bde]{background-color:var(--workout-no-map-bg-color);background-image:url(/img/workouts/map.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group[data-v-aa863bde]{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes[data-v-aa863bde]{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes[data-v-aa863bde]{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label[data-v-aa863bde]{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input[data-v-aa863bde]{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span[data-v-aa863bde]{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span[data-v-aa863bde]{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl[data-v-aa863bde]{display:flex;flex-direction:column;width:100%}.description-list dl dt[data-v-aa863bde]{font-weight:700}.description-list dl dd[data-v-aa863bde]{margin-bottom:10px}.center-card[data-v-aa863bde]{margin:0 auto;width:700px}.center-card.with-margin[data-v-aa863bde]{margin-top:100px}@media screen and (max-width:1000px){.center-card[data-v-aa863bde]{width:100%;margin:0 auto 50px auto}.center-card.with-margin[data-v-aa863bde]{margin-top:0}}.center-text[data-v-aa863bde]{text-align:center}.responsive-table[data-v-aa863bde]{margin-bottom:15px}.responsive-table table[data-v-aa863bde]{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th[data-v-aa863bde]{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody[data-v-aa863bde]{font-size:.95em}.responsive-table table tbody td[data-v-aa863bde]{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td[data-v-aa863bde]{border:none}.responsive-table table .cell-heading[data-v-aa863bde]{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead[data-v-aa863bde]{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr[data-v-aa863bde]{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td[data-v-aa863bde]{border:1px solid var(--card-border-color);margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td[data-v-aa863bde]{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading[data-v-aa863bde]{display:flex}}@media screen and (max-width:500px){.responsive-table table td[data-v-aa863bde]{width:100%}}#workout-info[data-v-aa863bde]{display:flex;flex-direction:column;padding:10px 20px;width:100%}#workout-info .workout-data[data-v-aa863bde]{text-transform:capitalize;padding:5px 0}#workout-info .workout-data span[data-v-aa863bde]{font-weight:700;text-transform:lowercase}@media screen and (max-width:700px){#workout-info[data-v-aa863bde]{padding:10px}}[data-v-76f3a2e8]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,0.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#c8cdd3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--scroll-button-bg-color:hsla(0,0%,100%,0.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color))}body[data-v-76f3a2e8]{margin:0}#app[data-v-76f3a2e8]{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);margin:0;min-height:100vh}a[data-v-76f3a2e8]{color:var(--app-a-color);text-decoration:none}img[data-v-76f3a2e8]{max-width:100%}input[data-v-76f3a2e8],select[data-v-76f3a2e8],textarea[data-v-76f3a2e8]{border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input[data-v-76f3a2e8]:disabled,select[data-v-76f3a2e8]:disabled,textarea[data-v-76f3a2e8]:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}label[data-v-76f3a2e8]{font-weight:700}button[data-v-76f3a2e8]{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button[data-v-76f3a2e8]:hover{background:var(--app-color);color:var(--button-hover-color)}button[data-v-76f3a2e8]:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button[data-v-76f3a2e8]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel[data-v-76f3a2e8]{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel[data-v-76f3a2e8]:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm[data-v-76f3a2e8]{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm[data-v-76f3a2e8]:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger[data-v-76f3a2e8]{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger[data-v-76f3a2e8]:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger[data-v-76f3a2e8]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box[data-v-76f3a2e8]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}.info-box[data-v-76f3a2e8]{background-color:var(--info-background-color);border-radius:4px;color:var(--info-color);font-size:.8em;padding:10px}.container[data-v-76f3a2e8]{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items[data-v-76f3a2e8]{display:flex;flex-direction:column}.form-box .form-items input[data-v-76f3a2e8]{margin:10px;padding:5px}.upper[data-v-76f3a2e8]{text-transform:uppercase}.view[data-v-76f3a2e8]{padding-bottom:35px}.fa-trophy[data-v-76f3a2e8]{color:var(--workout-trophy-color)}.mountains[data-v-76f3a2e8]{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title[data-v-76f3a2e8]{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map[data-v-76f3a2e8]{background-color:var(--workout-no-map-bg-color);background-image:url(/img/workouts/map.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group[data-v-76f3a2e8]{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes[data-v-76f3a2e8]{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes[data-v-76f3a2e8]{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label[data-v-76f3a2e8]{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input[data-v-76f3a2e8]{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span[data-v-76f3a2e8]{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span[data-v-76f3a2e8]{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl[data-v-76f3a2e8]{display:flex;flex-direction:column;width:100%}.description-list dl dt[data-v-76f3a2e8]{font-weight:700}.description-list dl dd[data-v-76f3a2e8]{margin-bottom:10px}.center-card[data-v-76f3a2e8]{margin:0 auto;width:700px}.center-card.with-margin[data-v-76f3a2e8]{margin-top:100px}@media screen and (max-width:1000px){.center-card[data-v-76f3a2e8]{width:100%;margin:0 auto 50px auto}.center-card.with-margin[data-v-76f3a2e8]{margin-top:0}}.center-text[data-v-76f3a2e8]{text-align:center}.responsive-table[data-v-76f3a2e8]{margin-bottom:15px}.responsive-table table[data-v-76f3a2e8]{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th[data-v-76f3a2e8]{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody[data-v-76f3a2e8]{font-size:.95em}.responsive-table table tbody td[data-v-76f3a2e8]{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td[data-v-76f3a2e8]{border:none}.responsive-table table .cell-heading[data-v-76f3a2e8]{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead[data-v-76f3a2e8]{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr[data-v-76f3a2e8]{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td[data-v-76f3a2e8]{border:1px solid var(--card-border-color);margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td[data-v-76f3a2e8]{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading[data-v-76f3a2e8]{display:flex}}@media screen and (max-width:500px){.responsive-table table td[data-v-76f3a2e8]{width:100%}}#workout-map[data-v-76f3a2e8]{padding:10px 0}#workout-map .leaflet-container[data-v-76f3a2e8],#workout-map .no-map[data-v-76f3a2e8]{height:400px;width:600px}#workout-map .no-map[data-v-76f3a2e8]{line-height:400px}@media screen and (max-width:700px){#workout-map[data-v-76f3a2e8]{padding:0}#workout-map .leaflet-container[data-v-76f3a2e8]{width:100%;height:300px}#workout-map .no-map[data-v-76f3a2e8]{display:none}}[data-v-a17554ea]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,0.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#c8cdd3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--scroll-button-bg-color:hsla(0,0%,100%,0.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color))}body[data-v-a17554ea]{margin:0}#app[data-v-a17554ea]{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);margin:0;min-height:100vh}a[data-v-a17554ea]{color:var(--app-a-color);text-decoration:none}img[data-v-a17554ea]{max-width:100%}input[data-v-a17554ea],select[data-v-a17554ea],textarea[data-v-a17554ea]{border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input[data-v-a17554ea]:disabled,select[data-v-a17554ea]:disabled,textarea[data-v-a17554ea]:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}label[data-v-a17554ea]{font-weight:700}button[data-v-a17554ea]{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button[data-v-a17554ea]:hover{background:var(--app-color);color:var(--button-hover-color)}button[data-v-a17554ea]:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button[data-v-a17554ea]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel[data-v-a17554ea]{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel[data-v-a17554ea]:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm[data-v-a17554ea]{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm[data-v-a17554ea]:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger[data-v-a17554ea]{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger[data-v-a17554ea]:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger[data-v-a17554ea]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box[data-v-a17554ea]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}.info-box[data-v-a17554ea]{background-color:var(--info-background-color);border-radius:4px;color:var(--info-color);font-size:.8em;padding:10px}.container[data-v-a17554ea]{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items[data-v-a17554ea]{display:flex;flex-direction:column}.form-box .form-items input[data-v-a17554ea]{margin:10px;padding:5px}.upper[data-v-a17554ea]{text-transform:uppercase}.view[data-v-a17554ea]{padding-bottom:35px}.fa-trophy[data-v-a17554ea]{color:var(--workout-trophy-color)}.mountains[data-v-a17554ea]{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title[data-v-a17554ea]{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map[data-v-a17554ea]{background-color:var(--workout-no-map-bg-color);background-image:url(/img/workouts/map.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group[data-v-a17554ea]{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes[data-v-a17554ea]{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes[data-v-a17554ea]{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label[data-v-a17554ea]{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input[data-v-a17554ea]{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span[data-v-a17554ea]{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span[data-v-a17554ea]{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl[data-v-a17554ea]{display:flex;flex-direction:column;width:100%}.description-list dl dt[data-v-a17554ea]{font-weight:700}.description-list dl dd[data-v-a17554ea]{margin-bottom:10px}.center-card[data-v-a17554ea]{margin:0 auto;width:700px}.center-card.with-margin[data-v-a17554ea]{margin-top:100px}@media screen and (max-width:1000px){.center-card[data-v-a17554ea]{width:100%;margin:0 auto 50px auto}.center-card.with-margin[data-v-a17554ea]{margin-top:0}}.center-text[data-v-a17554ea]{text-align:center}.responsive-table[data-v-a17554ea]{margin-bottom:15px}.responsive-table table[data-v-a17554ea]{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th[data-v-a17554ea]{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody[data-v-a17554ea]{font-size:.95em}.responsive-table table tbody td[data-v-a17554ea]{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td[data-v-a17554ea]{border:none}.responsive-table table .cell-heading[data-v-a17554ea]{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead[data-v-a17554ea]{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr[data-v-a17554ea]{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td[data-v-a17554ea]{border:1px solid var(--card-border-color);margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td[data-v-a17554ea]{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading[data-v-a17554ea]{display:flex}}@media screen and (max-width:500px){.responsive-table table td[data-v-a17554ea]{width:100%}}.workout-detail[data-v-a17554ea]{display:flex}.workout-detail[data-v-a17554ea] .card{width:100%}.workout-detail[data-v-a17554ea] .card .card-content{display:flex;flex-direction:row}@media screen and (max-width:1000px){.workout-detail[data-v-a17554ea] .card .card-content{flex-direction:column}}[data-v-5c47d30a]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,0.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#c8cdd3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--scroll-button-bg-color:hsla(0,0%,100%,0.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color))}body[data-v-5c47d30a]{margin:0}#app[data-v-5c47d30a]{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);margin:0;min-height:100vh}a[data-v-5c47d30a]{color:var(--app-a-color);text-decoration:none}img[data-v-5c47d30a]{max-width:100%}input[data-v-5c47d30a],select[data-v-5c47d30a],textarea[data-v-5c47d30a]{border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input[data-v-5c47d30a]:disabled,select[data-v-5c47d30a]:disabled,textarea[data-v-5c47d30a]:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}label[data-v-5c47d30a]{font-weight:700}button[data-v-5c47d30a]{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button[data-v-5c47d30a]:hover{background:var(--app-color);color:var(--button-hover-color)}button[data-v-5c47d30a]:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button[data-v-5c47d30a]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel[data-v-5c47d30a]{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel[data-v-5c47d30a]:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm[data-v-5c47d30a]{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm[data-v-5c47d30a]:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger[data-v-5c47d30a]{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger[data-v-5c47d30a]:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger[data-v-5c47d30a]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box[data-v-5c47d30a]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}.info-box[data-v-5c47d30a]{background-color:var(--info-background-color);border-radius:4px;color:var(--info-color);font-size:.8em;padding:10px}.container[data-v-5c47d30a]{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items[data-v-5c47d30a]{display:flex;flex-direction:column}.form-box .form-items input[data-v-5c47d30a]{margin:10px;padding:5px}.upper[data-v-5c47d30a]{text-transform:uppercase}.view[data-v-5c47d30a]{padding-bottom:35px}.fa-trophy[data-v-5c47d30a]{color:var(--workout-trophy-color)}.mountains[data-v-5c47d30a]{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title[data-v-5c47d30a]{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map[data-v-5c47d30a]{background-color:var(--workout-no-map-bg-color);background-image:url(/img/workouts/map.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group[data-v-5c47d30a]{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes[data-v-5c47d30a]{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes[data-v-5c47d30a]{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label[data-v-5c47d30a]{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input[data-v-5c47d30a]{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span[data-v-5c47d30a]{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span[data-v-5c47d30a]{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl[data-v-5c47d30a]{display:flex;flex-direction:column;width:100%}.description-list dl dt[data-v-5c47d30a]{font-weight:700}.description-list dl dd[data-v-5c47d30a]{margin-bottom:10px}.center-card[data-v-5c47d30a]{margin:0 auto;width:700px}.center-card.with-margin[data-v-5c47d30a]{margin-top:100px}@media screen and (max-width:1000px){.center-card[data-v-5c47d30a]{width:100%;margin:0 auto 50px auto}.center-card.with-margin[data-v-5c47d30a]{margin-top:0}}.center-text[data-v-5c47d30a]{text-align:center}.responsive-table[data-v-5c47d30a]{margin-bottom:15px}.responsive-table table[data-v-5c47d30a]{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th[data-v-5c47d30a]{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody[data-v-5c47d30a]{font-size:.95em}.responsive-table table tbody td[data-v-5c47d30a]{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td[data-v-5c47d30a]{border:none}.responsive-table table .cell-heading[data-v-5c47d30a]{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead[data-v-5c47d30a]{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr[data-v-5c47d30a]{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td[data-v-5c47d30a]{border:1px solid var(--card-border-color);margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td[data-v-5c47d30a]{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading[data-v-5c47d30a]{display:flex}}@media screen and (max-width:500px){.responsive-table table td[data-v-5c47d30a]{width:100%}}#workout-note[data-v-5c47d30a] .card-content{font-style:italic}[data-v-5c40d110]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,0.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#c8cdd3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--scroll-button-bg-color:hsla(0,0%,100%,0.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color))}body[data-v-5c40d110]{margin:0}#app[data-v-5c40d110]{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);margin:0;min-height:100vh}a[data-v-5c40d110]{color:var(--app-a-color);text-decoration:none}img[data-v-5c40d110]{max-width:100%}input[data-v-5c40d110],select[data-v-5c40d110],textarea[data-v-5c40d110]{border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input[data-v-5c40d110]:disabled,select[data-v-5c40d110]:disabled,textarea[data-v-5c40d110]:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}label[data-v-5c40d110]{font-weight:700}button[data-v-5c40d110]{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button[data-v-5c40d110]:hover{background:var(--app-color);color:var(--button-hover-color)}button[data-v-5c40d110]:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button[data-v-5c40d110]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel[data-v-5c40d110]{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel[data-v-5c40d110]:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm[data-v-5c40d110]{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm[data-v-5c40d110]:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger[data-v-5c40d110]{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger[data-v-5c40d110]:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger[data-v-5c40d110]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box[data-v-5c40d110]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}.info-box[data-v-5c40d110]{background-color:var(--info-background-color);border-radius:4px;color:var(--info-color);font-size:.8em;padding:10px}.container[data-v-5c40d110]{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items[data-v-5c40d110]{display:flex;flex-direction:column}.form-box .form-items input[data-v-5c40d110]{margin:10px;padding:5px}.upper[data-v-5c40d110]{text-transform:uppercase}.view[data-v-5c40d110]{padding-bottom:35px}.fa-trophy[data-v-5c40d110]{color:var(--workout-trophy-color)}.mountains[data-v-5c40d110]{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title[data-v-5c40d110]{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map[data-v-5c40d110]{background-color:var(--workout-no-map-bg-color);background-image:url(/img/workouts/map.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group[data-v-5c40d110]{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes[data-v-5c40d110]{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes[data-v-5c40d110]{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label[data-v-5c40d110]{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input[data-v-5c40d110]{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span[data-v-5c40d110]{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span[data-v-5c40d110]{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl[data-v-5c40d110]{display:flex;flex-direction:column;width:100%}.description-list dl dt[data-v-5c40d110]{font-weight:700}.description-list dl dd[data-v-5c40d110]{margin-bottom:10px}.center-card[data-v-5c40d110]{margin:0 auto;width:700px}.center-card.with-margin[data-v-5c40d110]{margin-top:100px}@media screen and (max-width:1000px){.center-card[data-v-5c40d110]{width:100%;margin:0 auto 50px auto}.center-card.with-margin[data-v-5c40d110]{margin-top:0}}.center-text[data-v-5c40d110]{text-align:center}.responsive-table[data-v-5c40d110]{margin-bottom:15px}.responsive-table table[data-v-5c40d110]{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th[data-v-5c40d110]{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody[data-v-5c40d110]{font-size:.95em}.responsive-table table tbody td[data-v-5c40d110]{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td[data-v-5c40d110]{border:none}.responsive-table table .cell-heading[data-v-5c40d110]{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead[data-v-5c40d110]{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr[data-v-5c40d110]{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td[data-v-5c40d110]{border:1px solid var(--card-border-color);margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td[data-v-5c40d110]{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading[data-v-5c40d110]{display:flex}}@media screen and (max-width:500px){.responsive-table table td[data-v-5c40d110]{width:100%}}#workout-segments[data-v-5c40d110] .card .card-title{text-transform:capitalize}#workout-segments[data-v-5c40d110] .card .card-content{padding-bottom:0;padding-top:0}#workout-segments[data-v-5c40d110] .card .card-content a{font-weight:700}#workout-segments[data-v-5c40d110] .card .card-content ul{padding:0 10px;list-style:square}[data-v-05bdbd04]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,0.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#c8cdd3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--scroll-button-bg-color:hsla(0,0%,100%,0.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color))}body[data-v-05bdbd04]{margin:0}#app[data-v-05bdbd04]{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);margin:0;min-height:100vh}a[data-v-05bdbd04]{color:var(--app-a-color);text-decoration:none}img[data-v-05bdbd04]{max-width:100%}input[data-v-05bdbd04],select[data-v-05bdbd04],textarea[data-v-05bdbd04]{border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input[data-v-05bdbd04]:disabled,select[data-v-05bdbd04]:disabled,textarea[data-v-05bdbd04]:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}label[data-v-05bdbd04]{font-weight:700}button[data-v-05bdbd04]{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button[data-v-05bdbd04]:hover{background:var(--app-color);color:var(--button-hover-color)}button[data-v-05bdbd04]:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button[data-v-05bdbd04]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel[data-v-05bdbd04]{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel[data-v-05bdbd04]:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm[data-v-05bdbd04]{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm[data-v-05bdbd04]:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger[data-v-05bdbd04]{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger[data-v-05bdbd04]:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger[data-v-05bdbd04]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box[data-v-05bdbd04]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}.info-box[data-v-05bdbd04]{background-color:var(--info-background-color);border-radius:4px;color:var(--info-color);font-size:.8em;padding:10px}.container[data-v-05bdbd04]{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items[data-v-05bdbd04]{display:flex;flex-direction:column}.form-box .form-items input[data-v-05bdbd04]{margin:10px;padding:5px}.upper[data-v-05bdbd04]{text-transform:uppercase}.view[data-v-05bdbd04]{padding-bottom:35px}.fa-trophy[data-v-05bdbd04]{color:var(--workout-trophy-color)}.mountains[data-v-05bdbd04]{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title[data-v-05bdbd04]{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map[data-v-05bdbd04]{background-color:var(--workout-no-map-bg-color);background-image:url(/img/workouts/map.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group[data-v-05bdbd04]{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes[data-v-05bdbd04]{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes[data-v-05bdbd04]{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label[data-v-05bdbd04]{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input[data-v-05bdbd04]{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span[data-v-05bdbd04]{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span[data-v-05bdbd04]{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl[data-v-05bdbd04]{display:flex;flex-direction:column;width:100%}.description-list dl dt[data-v-05bdbd04]{font-weight:700}.description-list dl dd[data-v-05bdbd04]{margin-bottom:10px}.center-card[data-v-05bdbd04]{margin:0 auto;width:700px}.center-card.with-margin[data-v-05bdbd04]{margin-top:100px}@media screen and (max-width:1000px){.center-card[data-v-05bdbd04]{width:100%;margin:0 auto 50px auto}.center-card.with-margin[data-v-05bdbd04]{margin-top:0}}.center-text[data-v-05bdbd04]{text-align:center}.responsive-table[data-v-05bdbd04]{margin-bottom:15px}.responsive-table table[data-v-05bdbd04]{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th[data-v-05bdbd04]{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody[data-v-05bdbd04]{font-size:.95em}.responsive-table table tbody td[data-v-05bdbd04]{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td[data-v-05bdbd04]{border:none}.responsive-table table .cell-heading[data-v-05bdbd04]{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead[data-v-05bdbd04]{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr[data-v-05bdbd04]{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td[data-v-05bdbd04]{border:1px solid var(--card-border-color);margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td[data-v-05bdbd04]{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading[data-v-05bdbd04]{display:flex}}@media screen and (max-width:500px){.responsive-table table td[data-v-05bdbd04]{width:100%}}#workout[data-v-05bdbd04]{display:flex}#workout .container[data-v-05bdbd04]{width:100%;padding:0}#workout .container .workout-container[data-v-05bdbd04]{width:100%}#workout .container .workout-loading[data-v-05bdbd04]{height:calc(100vh - 130px);width:100%}#workout .container .workout-loading .loading[data-v-05bdbd04]{display:flex;align-items:center;height:100%}[data-v-8eb73dd0]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,0.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#c8cdd3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--scroll-button-bg-color:hsla(0,0%,100%,0.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color))}@font-face{font-family:PT Sans;font-style:normal;font-weight:400;src:url(../../static/fonts/pt-sans-v9-latin-regular.c2a4d575.eot);src:local("PT Sans"),local("PTSans-Regular"),url(../../static/fonts/pt-sans-v9-latin-regular.c2a4d575.eot?#iefix) format("embedded-opentype"),url(../../static/fonts/pt-sans-v9-latin-regular.198d320b.woff2) format("woff2"),url(../../static/fonts/pt-sans-v9-latin-regular.399a9357.woff) format("woff"),url(../../static/fonts/pt-sans-v9-latin-regular.4ffa4616.ttf) format("truetype"),url(../../static/img/pt-sans-v9-latin-regular.f1f73e45.svg#PTSans) format("svg")}@font-face{font-family:PT Sans;font-style:italic;font-weight:400;src:url(../../static/fonts/pt-sans-v9-latin-italic.d5f81343.eot);src:local("PT Sans Italic"),local("PTSans-Italic"),url(../../static/fonts/pt-sans-v9-latin-italic.d5f81343.eot?#iefix) format("embedded-opentype"),url(../../static/fonts/pt-sans-v9-latin-italic.57d98c19.woff2) format("woff2"),url(../../static/fonts/pt-sans-v9-latin-italic.de9540fd.woff) format("woff"),url(../../static/fonts/pt-sans-v9-latin-italic.4ef1aece.ttf) format("truetype"),url(../../static/img/pt-sans-v9-latin-italic.648d3351.svg#PTSans) format("svg")}@font-face{font-family:PT Sans;font-style:normal;font-weight:700;src:url(../../static/fonts/pt-sans-v9-latin-700.1db19001.eot);src:local("PT Sans Bold"),local("PTSans-Bold"),url(../../static/fonts/pt-sans-v9-latin-700.1db19001.eot?#iefix) format("embedded-opentype"),url(../../static/fonts/pt-sans-v9-latin-700.f6d5807c.woff2) format("woff2"),url(../../static/fonts/pt-sans-v9-latin-700.e86e8add.woff) format("woff"),url(../../static/fonts/pt-sans-v9-latin-700.6078a795.ttf) format("truetype"),url(../../static/img/pt-sans-v9-latin-700.061c8566.svg#PTSans) format("svg")}body[data-v-8eb73dd0]{margin:0}#app[data-v-8eb73dd0]{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);margin:0;min-height:100vh}a[data-v-8eb73dd0]{color:var(--app-a-color);text-decoration:none}img[data-v-8eb73dd0]{max-width:100%}input[data-v-8eb73dd0],select[data-v-8eb73dd0],textarea[data-v-8eb73dd0]{border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input[data-v-8eb73dd0]:disabled,select[data-v-8eb73dd0]:disabled,textarea[data-v-8eb73dd0]:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}label[data-v-8eb73dd0]{font-weight:700}button[data-v-8eb73dd0]{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button[data-v-8eb73dd0]:hover{background:var(--app-color);color:var(--button-hover-color)}button[data-v-8eb73dd0]:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button[data-v-8eb73dd0]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel[data-v-8eb73dd0]{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel[data-v-8eb73dd0]:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm[data-v-8eb73dd0]{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm[data-v-8eb73dd0]:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger[data-v-8eb73dd0]{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger[data-v-8eb73dd0]:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger[data-v-8eb73dd0]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box[data-v-8eb73dd0]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}.info-box[data-v-8eb73dd0]{background-color:var(--info-background-color);border-radius:4px;color:var(--info-color);font-size:.8em;padding:10px}.container[data-v-8eb73dd0]{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items[data-v-8eb73dd0]{display:flex;flex-direction:column}.form-box .form-items input[data-v-8eb73dd0]{margin:10px;padding:5px}.upper[data-v-8eb73dd0]{text-transform:uppercase}.view[data-v-8eb73dd0]{padding-bottom:35px}.fa-trophy[data-v-8eb73dd0]{color:var(--workout-trophy-color)}.mountains[data-v-8eb73dd0]{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title[data-v-8eb73dd0]{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map[data-v-8eb73dd0]{background-color:var(--workout-no-map-bg-color);background-image:url(/img/workouts/map.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group[data-v-8eb73dd0]{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes[data-v-8eb73dd0]{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes[data-v-8eb73dd0]{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label[data-v-8eb73dd0]{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input[data-v-8eb73dd0]{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span[data-v-8eb73dd0]{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span[data-v-8eb73dd0]{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl[data-v-8eb73dd0]{display:flex;flex-direction:column;width:100%}.description-list dl dt[data-v-8eb73dd0]{font-weight:700}.description-list dl dd[data-v-8eb73dd0]{margin-bottom:10px}.center-card[data-v-8eb73dd0]{margin:0 auto;width:700px}.center-card.with-margin[data-v-8eb73dd0]{margin-top:100px}@media screen and (max-width:1000px){.center-card[data-v-8eb73dd0]{width:100%;margin:0 auto 50px auto}.center-card.with-margin[data-v-8eb73dd0]{margin-top:0}}.center-text[data-v-8eb73dd0]{text-align:center}.responsive-table[data-v-8eb73dd0]{margin-bottom:15px}.responsive-table table[data-v-8eb73dd0]{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th[data-v-8eb73dd0]{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody[data-v-8eb73dd0]{font-size:.95em}.responsive-table table tbody td[data-v-8eb73dd0]{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td[data-v-8eb73dd0]{border:none}.responsive-table table .cell-heading[data-v-8eb73dd0]{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead[data-v-8eb73dd0]{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr[data-v-8eb73dd0]{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td[data-v-8eb73dd0]{border:1px solid var(--card-border-color);margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td[data-v-8eb73dd0]{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading[data-v-8eb73dd0]{display:flex}}@media screen and (max-width:500px){.responsive-table table td[data-v-8eb73dd0]{width:100%}}@media screen and (max-width:700px){#workout-edition.center-form[data-v-8eb73dd0]{margin:50px auto}}#workout-edition[data-v-8eb73dd0] .card .card-title{text-align:center;text-transform:uppercase}@media screen and (max-width:1000px){#workout-edition[data-v-8eb73dd0] .card .card-content{padding:10px 0}}#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .form-items{display:flex;flex-direction:column}#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .form-items input{height:20px}#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .form-items .workout-date-duration{display:flex;flex-direction:row;justify-content:space-between}@media screen and (max-width:1000px){#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .form-items .workout-date-duration{flex-direction:column}}#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .form-items .form-item{display:flex;flex-direction:column;padding:10px}#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .form-items .form-item .workout-date-time{display:flex}#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .form-items .form-item .workout-date-time #workout-date{margin-right:10px}#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .form-items .form-item .workout-duration{width:25px}#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .form-items .form-item-radio{display:flex;justify-content:space-around}#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .form-items .form-item-radio label{font-weight:400}@media screen and (max-width:1000px){#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .form-items .form-item-radio label{font-size:.9em}}#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .form-items .form-item-radio input{margin-top:-2px;vertical-align:middle}#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .form-buttons{display:flex;justify-content:flex-end}#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .form-buttons button{margin:5px}#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .files-help{display:flex;justify-content:space-around;margin-top:10px}#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .files-help div{display:flex}@media screen and (max-width:1000px){#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .files-help div{flex-direction:column}}#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .files-help div ul{margin:0;padding:0 20px} \ No newline at end of file diff --git a/fittrackee/dist/static/css/workouts.368ff8e8.css b/fittrackee/dist/static/css/workouts.368ff8e8.css new file mode 100644 index 00000000..1e844514 --- /dev/null +++ b/fittrackee/dist/static/css/workouts.368ff8e8.css @@ -0,0 +1 @@ +[data-v-cbc43e30]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,0.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#c8cdd3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--scroll-button-bg-color:hsla(0,0%,100%,0.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color))}body[data-v-cbc43e30]{margin:0}#app[data-v-cbc43e30]{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);margin:0;min-height:100vh}a[data-v-cbc43e30]{color:var(--app-a-color);text-decoration:none}img[data-v-cbc43e30]{max-width:100%}input[data-v-cbc43e30],select[data-v-cbc43e30],textarea[data-v-cbc43e30]{border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input[data-v-cbc43e30]:disabled,select[data-v-cbc43e30]:disabled,textarea[data-v-cbc43e30]:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}label[data-v-cbc43e30]{font-weight:700}button[data-v-cbc43e30]{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button[data-v-cbc43e30]:hover{background:var(--app-color);color:var(--button-hover-color)}button[data-v-cbc43e30]:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button[data-v-cbc43e30]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel[data-v-cbc43e30]{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel[data-v-cbc43e30]:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm[data-v-cbc43e30]{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm[data-v-cbc43e30]:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger[data-v-cbc43e30]{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger[data-v-cbc43e30]:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger[data-v-cbc43e30]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box[data-v-cbc43e30]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}.info-box[data-v-cbc43e30]{background-color:var(--info-background-color);border-radius:4px;color:var(--info-color);font-size:.8em;padding:10px}.container[data-v-cbc43e30]{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items[data-v-cbc43e30]{display:flex;flex-direction:column}.form-box .form-items input[data-v-cbc43e30]{margin:10px;padding:5px}.upper[data-v-cbc43e30]{text-transform:uppercase}.view[data-v-cbc43e30]{padding-bottom:35px}.fa-trophy[data-v-cbc43e30]{color:var(--workout-trophy-color)}.mountains[data-v-cbc43e30]{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title[data-v-cbc43e30]{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map[data-v-cbc43e30]{background-color:var(--workout-no-map-bg-color);background-image:url(/img/workouts/map.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group[data-v-cbc43e30]{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes[data-v-cbc43e30]{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes[data-v-cbc43e30]{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label[data-v-cbc43e30]{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input[data-v-cbc43e30]{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span[data-v-cbc43e30]{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span[data-v-cbc43e30]{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl[data-v-cbc43e30]{display:flex;flex-direction:column;width:100%}.description-list dl dt[data-v-cbc43e30]{font-weight:700}.description-list dl dd[data-v-cbc43e30]{margin-bottom:10px}.center-card[data-v-cbc43e30]{margin:0 auto;width:700px}.center-card.with-margin[data-v-cbc43e30]{margin-top:100px}@media screen and (max-width:1000px){.center-card[data-v-cbc43e30]{width:100%;margin:0 auto 50px auto}.center-card.with-margin[data-v-cbc43e30]{margin-top:0}}.center-text[data-v-cbc43e30]{text-align:center}.responsive-table[data-v-cbc43e30]{margin-bottom:15px}.responsive-table table[data-v-cbc43e30]{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th[data-v-cbc43e30]{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody[data-v-cbc43e30]{font-size:.95em}.responsive-table table tbody td[data-v-cbc43e30]{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td[data-v-cbc43e30]{border:none}.responsive-table table .cell-heading[data-v-cbc43e30]{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead[data-v-cbc43e30]{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr[data-v-cbc43e30]{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td[data-v-cbc43e30]{border:1px solid var(--card-border-color);margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td[data-v-cbc43e30]{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading[data-v-cbc43e30]{display:flex}}@media screen and (max-width:500px){.responsive-table table td[data-v-cbc43e30]{width:100%}}.workouts-filters .form[data-v-cbc43e30]{display:flex;flex-direction:column;padding-top:0}.workouts-filters .form .form-items-group[data-v-cbc43e30]{display:flex;flex-direction:column;padding:5px}.workouts-filters .form .form-items-group .form-item[data-v-cbc43e30]{display:flex;flex-direction:column}.workouts-filters .form .form-items-group .form-item .form-inputs-group[data-v-cbc43e30]{display:flex;flex-direction:row;justify-content:space-around;align-items:center}.workouts-filters .form .form-items-group .form-item .form-inputs-group input[data-v-cbc43e30]{width:34%}.workouts-filters .form .form-items-group .form-item .form-inputs-group span[data-v-cbc43e30]{padding:5px}.workouts-filters .form .form-items-group .form-item input[data-v-cbc43e30]{height:16px}.workouts-filters .form .form-items-group .form-item select[data-v-cbc43e30]{height:36px;padding:0 5px}.workouts-filters .form-button[data-v-cbc43e30]{display:flex;justify-content:center;flex-wrap:wrap;margin:5px}.workouts-filters .form-button button[data-v-cbc43e30]{margin-top:10px;width:100%}@media screen and (max-width:1000px){.workouts-filters .form[data-v-cbc43e30]{flex-direction:row;padding-top:5px}.workouts-filters .form .form-items-group[data-v-cbc43e30]{padding:0 5px;height:100%}.workouts-filters .form .form-items-group .form-item label[data-v-cbc43e30]{font-size:.9em}.workouts-filters .form .form-items-group .form-item .form-inputs-group[data-v-cbc43e30]{flex-direction:column;justify-content:normal;padding:0}.workouts-filters .form .form-items-group .form-item .form-inputs-group input[data-v-cbc43e30]{width:75%}.workouts-filters .form-button[data-v-cbc43e30]{flex-wrap:nowrap}.workouts-filters .form-button button[data-v-cbc43e30]{margin:10px 5px;width:100%}}@media screen and (max-width:700px){.workouts-filters .form[data-v-cbc43e30]{flex-direction:column;padding-top:0}.workouts-filters .form .form-items-group[data-v-cbc43e30]{padding:5px}.workouts-filters .form .form-items-group .form-item label[data-v-cbc43e30]{font-size:1em}.workouts-filters .form .form-items-group .form-item .form-inputs-group[data-v-cbc43e30]{flex-direction:row;justify-content:space-around;align-items:center}.workouts-filters .form .form-items-group .form-item .form-inputs-group input[data-v-cbc43e30]{width:50%}.workouts-filters .form .form-items-group .form-item .form-inputs-group span[data-v-cbc43e30]{padding:5px}.workouts-filters .form-button[data-v-cbc43e30]{flex-wrap:nowrap}.workouts-filters .form-button button[data-v-cbc43e30]{margin:10px 5px}}@media screen and (max-width:500px){.workouts-filters .form-button[data-v-cbc43e30]{flex-wrap:wrap}}[data-v-0144da86]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,0.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#c8cdd3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--scroll-button-bg-color:hsla(0,0%,100%,0.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color))}body[data-v-0144da86]{margin:0}#app[data-v-0144da86]{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);margin:0;min-height:100vh}a[data-v-0144da86]{color:var(--app-a-color);text-decoration:none}img[data-v-0144da86]{max-width:100%}input[data-v-0144da86],select[data-v-0144da86],textarea[data-v-0144da86]{border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input[data-v-0144da86]:disabled,select[data-v-0144da86]:disabled,textarea[data-v-0144da86]:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}label[data-v-0144da86]{font-weight:700}button[data-v-0144da86]{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button[data-v-0144da86]:hover{background:var(--app-color);color:var(--button-hover-color)}button[data-v-0144da86]:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button[data-v-0144da86]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel[data-v-0144da86]{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel[data-v-0144da86]:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm[data-v-0144da86]{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm[data-v-0144da86]:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger[data-v-0144da86]{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger[data-v-0144da86]:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger[data-v-0144da86]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box[data-v-0144da86]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}.info-box[data-v-0144da86]{background-color:var(--info-background-color);border-radius:4px;color:var(--info-color);font-size:.8em;padding:10px}.container[data-v-0144da86]{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items[data-v-0144da86]{display:flex;flex-direction:column}.form-box .form-items input[data-v-0144da86]{margin:10px;padding:5px}.upper[data-v-0144da86]{text-transform:uppercase}.view[data-v-0144da86]{padding-bottom:35px}.fa-trophy[data-v-0144da86]{color:var(--workout-trophy-color)}.mountains[data-v-0144da86]{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title[data-v-0144da86]{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map[data-v-0144da86]{background-color:var(--workout-no-map-bg-color);background-image:url(/img/workouts/map.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group[data-v-0144da86]{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes[data-v-0144da86]{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes[data-v-0144da86]{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label[data-v-0144da86]{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input[data-v-0144da86]{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span[data-v-0144da86]{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span[data-v-0144da86]{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl[data-v-0144da86]{display:flex;flex-direction:column;width:100%}.description-list dl dt[data-v-0144da86]{font-weight:700}.description-list dl dd[data-v-0144da86]{margin-bottom:10px}.center-card[data-v-0144da86]{margin:0 auto;width:700px}.center-card.with-margin[data-v-0144da86]{margin-top:100px}@media screen and (max-width:1000px){.center-card[data-v-0144da86]{width:100%;margin:0 auto 50px auto}.center-card.with-margin[data-v-0144da86]{margin-top:0}}.center-text[data-v-0144da86]{text-align:center}.responsive-table[data-v-0144da86]{margin-bottom:15px}.responsive-table table[data-v-0144da86]{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th[data-v-0144da86]{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody[data-v-0144da86]{font-size:.95em}.responsive-table table tbody td[data-v-0144da86]{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td[data-v-0144da86]{border:none}.responsive-table table .cell-heading[data-v-0144da86]{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead[data-v-0144da86]{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr[data-v-0144da86]{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td[data-v-0144da86]{border:1px solid var(--card-border-color);margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td[data-v-0144da86]{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading[data-v-0144da86]{display:flex}}@media screen and (max-width:500px){.responsive-table table td[data-v-0144da86]{width:100%}}.workouts-list[data-v-0144da86]{display:flex;flex-direction:column;margin-bottom:50px;width:100%}.workouts-list .box[data-v-0144da86]{padding:10px 20px}@media screen and (max-width:700px){.workouts-list .box.empty-table[data-v-0144da86]{display:none}}.workouts-list .box .total[data-v-0144da86]{display:flex;gap:5px}.workouts-list .box .total .total-label[data-v-0144da86]{font-weight:700}.workouts-list .box .top-pagination[data-v-0144da86]{display:none}@media screen and (max-width:700px){.workouts-list .box .top-pagination[data-v-0144da86]{display:flex}}@media screen and (max-width:700px){.workouts-list .box[data-v-0144da86] .pagination-center ul{margin-top:0}}.workouts-list .box .workouts-table .sport-col[data-v-0144da86]{padding-right:0}.workouts-list .box .workouts-table .workout-title[data-v-0144da86]{max-width:90px;position:relative}.workouts-list .box .workouts-table .workout-title .fa-map-o[data-v-0144da86]{font-size:.75em}.workouts-list .box .workouts-table .workout-title .static-map[data-v-0144da86]{display:none;box-shadow:3px 3px 3px 1px #d3d3d3}.workouts-list .box .workouts-table .workout-title:hover .static-map[data-v-0144da86]{display:block}.workouts-list .box .workouts-table .sport-img[data-v-0144da86]{height:20px;width:20px}@media screen and (max-width:700px){.workouts-list .box .workouts-table .sport-col[data-v-0144da86]{display:flex;justify-content:center;padding:10px}.workouts-list .box .workouts-table .workout-title[data-v-0144da86]{max-width:none}.workouts-list .box .workouts-table .workout-title:hover .static-map[data-v-0144da86]{display:none}}.workouts-list .more-workouts[data-v-0144da86]{display:flex;justify-content:center;padding:10px}[data-v-22a8a7cd]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,0.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#c8cdd3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--scroll-button-bg-color:hsla(0,0%,100%,0.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color))}body[data-v-22a8a7cd]{margin:0}#app[data-v-22a8a7cd]{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);margin:0;min-height:100vh}a[data-v-22a8a7cd]{color:var(--app-a-color);text-decoration:none}img[data-v-22a8a7cd]{max-width:100%}input[data-v-22a8a7cd],select[data-v-22a8a7cd],textarea[data-v-22a8a7cd]{border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input[data-v-22a8a7cd]:disabled,select[data-v-22a8a7cd]:disabled,textarea[data-v-22a8a7cd]:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}label[data-v-22a8a7cd]{font-weight:700}button[data-v-22a8a7cd]{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button[data-v-22a8a7cd]:hover{background:var(--app-color);color:var(--button-hover-color)}button[data-v-22a8a7cd]:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button[data-v-22a8a7cd]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel[data-v-22a8a7cd]{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel[data-v-22a8a7cd]:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm[data-v-22a8a7cd]{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm[data-v-22a8a7cd]:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger[data-v-22a8a7cd]{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger[data-v-22a8a7cd]:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger[data-v-22a8a7cd]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box[data-v-22a8a7cd]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}.info-box[data-v-22a8a7cd]{background-color:var(--info-background-color);border-radius:4px;color:var(--info-color);font-size:.8em;padding:10px}.container[data-v-22a8a7cd]{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items[data-v-22a8a7cd]{display:flex;flex-direction:column}.form-box .form-items input[data-v-22a8a7cd]{margin:10px;padding:5px}.upper[data-v-22a8a7cd]{text-transform:uppercase}.view[data-v-22a8a7cd]{padding-bottom:35px}.fa-trophy[data-v-22a8a7cd]{color:var(--workout-trophy-color)}.mountains[data-v-22a8a7cd]{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title[data-v-22a8a7cd]{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map[data-v-22a8a7cd]{background-color:var(--workout-no-map-bg-color);background-image:url(/img/workouts/map.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group[data-v-22a8a7cd]{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes[data-v-22a8a7cd]{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes[data-v-22a8a7cd]{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label[data-v-22a8a7cd]{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input[data-v-22a8a7cd]{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span[data-v-22a8a7cd]{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span[data-v-22a8a7cd]{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl[data-v-22a8a7cd]{display:flex;flex-direction:column;width:100%}.description-list dl dt[data-v-22a8a7cd]{font-weight:700}.description-list dl dd[data-v-22a8a7cd]{margin-bottom:10px}.center-card[data-v-22a8a7cd]{margin:0 auto;width:700px}.center-card.with-margin[data-v-22a8a7cd]{margin-top:100px}@media screen and (max-width:1000px){.center-card[data-v-22a8a7cd]{width:100%;margin:0 auto 50px auto}.center-card.with-margin[data-v-22a8a7cd]{margin-top:0}}.center-text[data-v-22a8a7cd]{text-align:center}.responsive-table[data-v-22a8a7cd]{margin-bottom:15px}.responsive-table table[data-v-22a8a7cd]{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th[data-v-22a8a7cd]{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody[data-v-22a8a7cd]{font-size:.95em}.responsive-table table tbody td[data-v-22a8a7cd]{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td[data-v-22a8a7cd]{border:none}.responsive-table table .cell-heading[data-v-22a8a7cd]{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead[data-v-22a8a7cd]{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr[data-v-22a8a7cd]{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td[data-v-22a8a7cd]{border:1px solid var(--card-border-color);margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td[data-v-22a8a7cd]{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading[data-v-22a8a7cd]{display:flex}}@media screen and (max-width:500px){.responsive-table table td[data-v-22a8a7cd]{width:100%}}#workouts[data-v-22a8a7cd]{height:100%}#workouts .workouts-container[data-v-22a8a7cd]{display:flex;flex-direction:row}@media screen and (max-width:1000px){#workouts .workouts-container[data-v-22a8a7cd]{flex-direction:column}}#workouts .workouts-container .filters-container[data-v-22a8a7cd],#workouts .workouts-container .list-container[data-v-22a8a7cd]{display:flex;flex-direction:column}#workouts .workouts-container .filters-container[data-v-22a8a7cd]{width:25%}@media screen and (max-width:1000px){#workouts .workouts-container .filters-container[data-v-22a8a7cd]{width:100%}}@media screen and (max-width:1000px)and (max-width:700px){#workouts .workouts-container .filters-container.hidden[data-v-22a8a7cd]{display:none}}#workouts .workouts-container .display-filters[data-v-22a8a7cd]{display:none;font-size:.8em;padding:0 20px}#workouts .workouts-container .display-filters span[data-v-22a8a7cd]{cursor:pointer;font-weight:700;padding-left:5px}#workouts .workouts-container .display-filters .fa[data-v-22a8a7cd]{cursor:pointer}@media screen and (max-width:700px){#workouts .workouts-container .display-filters[data-v-22a8a7cd]{display:flex;justify-content:flex-end;align-items:center}}#workouts .workouts-container .list-container[data-v-22a8a7cd]{width:75%}@media screen and (max-width:1000px){#workouts .workouts-container .list-container[data-v-22a8a7cd]{width:100%}}[data-v-2230775e]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,0.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#c8cdd3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--scroll-button-bg-color:hsla(0,0%,100%,0.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color))}body[data-v-2230775e]{margin:0}#app[data-v-2230775e]{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);margin:0;min-height:100vh}a[data-v-2230775e]{color:var(--app-a-color);text-decoration:none}img[data-v-2230775e]{max-width:100%}input[data-v-2230775e],select[data-v-2230775e],textarea[data-v-2230775e]{border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input[data-v-2230775e]:disabled,select[data-v-2230775e]:disabled,textarea[data-v-2230775e]:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}label[data-v-2230775e]{font-weight:700}button[data-v-2230775e]{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button[data-v-2230775e]:hover{background:var(--app-color);color:var(--button-hover-color)}button[data-v-2230775e]:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button[data-v-2230775e]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel[data-v-2230775e]{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel[data-v-2230775e]:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm[data-v-2230775e]{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm[data-v-2230775e]:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger[data-v-2230775e]{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger[data-v-2230775e]:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger[data-v-2230775e]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box[data-v-2230775e]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}.info-box[data-v-2230775e]{background-color:var(--info-background-color);border-radius:4px;color:var(--info-color);font-size:.8em;padding:10px}.container[data-v-2230775e]{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items[data-v-2230775e]{display:flex;flex-direction:column}.form-box .form-items input[data-v-2230775e]{margin:10px;padding:5px}.upper[data-v-2230775e]{text-transform:uppercase}.view[data-v-2230775e]{padding-bottom:35px}.fa-trophy[data-v-2230775e]{color:var(--workout-trophy-color)}.mountains[data-v-2230775e]{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title[data-v-2230775e]{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map[data-v-2230775e]{background-color:var(--workout-no-map-bg-color);background-image:url(/img/workouts/map.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group[data-v-2230775e]{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes[data-v-2230775e]{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes[data-v-2230775e]{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label[data-v-2230775e]{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input[data-v-2230775e]{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span[data-v-2230775e]{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span[data-v-2230775e]{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl[data-v-2230775e]{display:flex;flex-direction:column;width:100%}.description-list dl dt[data-v-2230775e]{font-weight:700}.description-list dl dd[data-v-2230775e]{margin-bottom:10px}.center-card[data-v-2230775e]{margin:0 auto;width:700px}.center-card.with-margin[data-v-2230775e]{margin-top:100px}@media screen and (max-width:1000px){.center-card[data-v-2230775e]{width:100%;margin:0 auto 50px auto}.center-card.with-margin[data-v-2230775e]{margin-top:0}}.center-text[data-v-2230775e]{text-align:center}.responsive-table[data-v-2230775e]{margin-bottom:15px}.responsive-table table[data-v-2230775e]{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th[data-v-2230775e]{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody[data-v-2230775e]{font-size:.95em}.responsive-table table tbody td[data-v-2230775e]{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td[data-v-2230775e]{border:none}.responsive-table table .cell-heading[data-v-2230775e]{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead[data-v-2230775e]{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr[data-v-2230775e]{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td[data-v-2230775e]{border:1px solid var(--card-border-color);margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td[data-v-2230775e]{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading[data-v-2230775e]{display:flex}}@media screen and (max-width:500px){.responsive-table table td[data-v-2230775e]{width:100%}}#workout-chart[data-v-2230775e] .card .card-title{text-transform:capitalize}#workout-chart[data-v-2230775e] .card .card-content{display:flex;flex-direction:column}#workout-chart[data-v-2230775e] .card .card-content .chart-radio{width:100%;display:flex;justify-content:center}#workout-chart[data-v-2230775e] .card .card-content .chart-radio label{padding:0 10px}#workout-chart[data-v-2230775e] .card .card-content .no-data-cleaning{font-size:.85em;font-style:italic}@media screen and (max-width:700px){#workout-chart[data-v-2230775e] .card .card-content{padding:10px 0}#workout-chart[data-v-2230775e] .card .card-content .no-data-cleaning{padding:0 20px}}[data-v-9cab340c]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,0.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#c8cdd3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--scroll-button-bg-color:hsla(0,0%,100%,0.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color))}body[data-v-9cab340c]{margin:0}#app[data-v-9cab340c]{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);margin:0;min-height:100vh}a[data-v-9cab340c]{color:var(--app-a-color);text-decoration:none}img[data-v-9cab340c]{max-width:100%}input[data-v-9cab340c],select[data-v-9cab340c],textarea[data-v-9cab340c]{border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input[data-v-9cab340c]:disabled,select[data-v-9cab340c]:disabled,textarea[data-v-9cab340c]:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}label[data-v-9cab340c]{font-weight:700}button[data-v-9cab340c]{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button[data-v-9cab340c]:hover{background:var(--app-color);color:var(--button-hover-color)}button[data-v-9cab340c]:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button[data-v-9cab340c]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel[data-v-9cab340c]{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel[data-v-9cab340c]:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm[data-v-9cab340c]{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm[data-v-9cab340c]:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger[data-v-9cab340c]{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger[data-v-9cab340c]:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger[data-v-9cab340c]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box[data-v-9cab340c]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}.info-box[data-v-9cab340c]{background-color:var(--info-background-color);border-radius:4px;color:var(--info-color);font-size:.8em;padding:10px}.container[data-v-9cab340c]{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items[data-v-9cab340c]{display:flex;flex-direction:column}.form-box .form-items input[data-v-9cab340c]{margin:10px;padding:5px}.upper[data-v-9cab340c]{text-transform:uppercase}.view[data-v-9cab340c]{padding-bottom:35px}.fa-trophy[data-v-9cab340c]{color:var(--workout-trophy-color)}.mountains[data-v-9cab340c]{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title[data-v-9cab340c]{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map[data-v-9cab340c]{background-color:var(--workout-no-map-bg-color);background-image:url(/img/workouts/map.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group[data-v-9cab340c]{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes[data-v-9cab340c]{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes[data-v-9cab340c]{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label[data-v-9cab340c]{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input[data-v-9cab340c]{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span[data-v-9cab340c]{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span[data-v-9cab340c]{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl[data-v-9cab340c]{display:flex;flex-direction:column;width:100%}.description-list dl dt[data-v-9cab340c]{font-weight:700}.description-list dl dd[data-v-9cab340c]{margin-bottom:10px}.center-card[data-v-9cab340c]{margin:0 auto;width:700px}.center-card.with-margin[data-v-9cab340c]{margin-top:100px}@media screen and (max-width:1000px){.center-card[data-v-9cab340c]{width:100%;margin:0 auto 50px auto}.center-card.with-margin[data-v-9cab340c]{margin-top:0}}.center-text[data-v-9cab340c]{text-align:center}.responsive-table[data-v-9cab340c]{margin-bottom:15px}.responsive-table table[data-v-9cab340c]{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th[data-v-9cab340c]{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody[data-v-9cab340c]{font-size:.95em}.responsive-table table tbody td[data-v-9cab340c]{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td[data-v-9cab340c]{border:none}.responsive-table table .cell-heading[data-v-9cab340c]{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead[data-v-9cab340c]{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr[data-v-9cab340c]{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td[data-v-9cab340c]{border:1px solid var(--card-border-color);margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td[data-v-9cab340c]{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading[data-v-9cab340c]{display:flex}}@media screen and (max-width:500px){.responsive-table table td[data-v-9cab340c]{width:100%}}#workout-card-title[data-v-9cab340c]{display:flex;justify-content:space-between;align-items:center}#workout-card-title .workout-arrow[data-v-9cab340c]{cursor:pointer}#workout-card-title .workout-arrow.inactive[data-v-9cab340c]{color:var(--disabled-color);cursor:default}#workout-card-title .workout-card-title[data-v-9cab340c]{display:flex;flex-grow:1}#workout-card-title .workout-card-title .sport-img[data-v-9cab340c]{height:35px;width:35px;padding:0 10px}#workout-card-title .workout-card-title .workout-date[data-v-9cab340c]{font-size:.8em;font-weight:400}#workout-card-title .workout-card-title .workout-segment[data-v-9cab340c]{font-weight:400}#workout-card-title .workout-card-title .workout-link[data-v-9cab340c]{padding-left:10px}#workout-card-title .workout-card-title .fa[data-v-9cab340c]{padding:0 3px}@media screen and (max-width:700px){#workout-card-title .workout-card-title .fa-edit[data-v-9cab340c],#workout-card-title .workout-card-title .fa-trash[data-v-9cab340c]{border:solid 1px var(--card-border-color);border-radius:4px;margin-left:5px;padding:0 10px}}[data-v-da96984c]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,0.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#c8cdd3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--scroll-button-bg-color:hsla(0,0%,100%,0.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color))}body[data-v-da96984c]{margin:0}#app[data-v-da96984c]{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);margin:0;min-height:100vh}a[data-v-da96984c]{color:var(--app-a-color);text-decoration:none}img[data-v-da96984c]{max-width:100%}input[data-v-da96984c],select[data-v-da96984c],textarea[data-v-da96984c]{border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input[data-v-da96984c]:disabled,select[data-v-da96984c]:disabled,textarea[data-v-da96984c]:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}label[data-v-da96984c]{font-weight:700}button[data-v-da96984c]{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button[data-v-da96984c]:hover{background:var(--app-color);color:var(--button-hover-color)}button[data-v-da96984c]:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button[data-v-da96984c]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel[data-v-da96984c]{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel[data-v-da96984c]:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm[data-v-da96984c]{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm[data-v-da96984c]:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger[data-v-da96984c]{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger[data-v-da96984c]:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger[data-v-da96984c]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box[data-v-da96984c]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}.info-box[data-v-da96984c]{background-color:var(--info-background-color);border-radius:4px;color:var(--info-color);font-size:.8em;padding:10px}.container[data-v-da96984c]{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items[data-v-da96984c]{display:flex;flex-direction:column}.form-box .form-items input[data-v-da96984c]{margin:10px;padding:5px}.upper[data-v-da96984c]{text-transform:uppercase}.view[data-v-da96984c]{padding-bottom:35px}.fa-trophy[data-v-da96984c]{color:var(--workout-trophy-color)}.mountains[data-v-da96984c]{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title[data-v-da96984c]{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map[data-v-da96984c]{background-color:var(--workout-no-map-bg-color);background-image:url(/img/workouts/map.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group[data-v-da96984c]{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes[data-v-da96984c]{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes[data-v-da96984c]{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label[data-v-da96984c]{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input[data-v-da96984c]{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span[data-v-da96984c]{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span[data-v-da96984c]{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl[data-v-da96984c]{display:flex;flex-direction:column;width:100%}.description-list dl dt[data-v-da96984c]{font-weight:700}.description-list dl dd[data-v-da96984c]{margin-bottom:10px}.center-card[data-v-da96984c]{margin:0 auto;width:700px}.center-card.with-margin[data-v-da96984c]{margin-top:100px}@media screen and (max-width:1000px){.center-card[data-v-da96984c]{width:100%;margin:0 auto 50px auto}.center-card.with-margin[data-v-da96984c]{margin-top:0}}.center-text[data-v-da96984c]{text-align:center}.responsive-table[data-v-da96984c]{margin-bottom:15px}.responsive-table table[data-v-da96984c]{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th[data-v-da96984c]{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody[data-v-da96984c]{font-size:.95em}.responsive-table table tbody td[data-v-da96984c]{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td[data-v-da96984c]{border:none}.responsive-table table .cell-heading[data-v-da96984c]{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead[data-v-da96984c]{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr[data-v-da96984c]{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td[data-v-da96984c]{border:1px solid var(--card-border-color);margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td[data-v-da96984c]{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading[data-v-da96984c]{display:flex}}@media screen and (max-width:500px){.responsive-table table td[data-v-da96984c]{width:100%}}.workout-record sup[data-v-da96984c]{font-size:75%;line-height:0}[data-v-7eb41918]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,0.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#c8cdd3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--scroll-button-bg-color:hsla(0,0%,100%,0.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color))}body[data-v-7eb41918]{margin:0}#app[data-v-7eb41918]{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);margin:0;min-height:100vh}a[data-v-7eb41918]{color:var(--app-a-color);text-decoration:none}img[data-v-7eb41918]{max-width:100%}input[data-v-7eb41918],select[data-v-7eb41918],textarea[data-v-7eb41918]{border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input[data-v-7eb41918]:disabled,select[data-v-7eb41918]:disabled,textarea[data-v-7eb41918]:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}label[data-v-7eb41918]{font-weight:700}button[data-v-7eb41918]{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button[data-v-7eb41918]:hover{background:var(--app-color);color:var(--button-hover-color)}button[data-v-7eb41918]:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button[data-v-7eb41918]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel[data-v-7eb41918]{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel[data-v-7eb41918]:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm[data-v-7eb41918]{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm[data-v-7eb41918]:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger[data-v-7eb41918]{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger[data-v-7eb41918]:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger[data-v-7eb41918]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box[data-v-7eb41918]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}.info-box[data-v-7eb41918]{background-color:var(--info-background-color);border-radius:4px;color:var(--info-color);font-size:.8em;padding:10px}.container[data-v-7eb41918]{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items[data-v-7eb41918]{display:flex;flex-direction:column}.form-box .form-items input[data-v-7eb41918]{margin:10px;padding:5px}.upper[data-v-7eb41918]{text-transform:uppercase}.view[data-v-7eb41918]{padding-bottom:35px}.fa-trophy[data-v-7eb41918]{color:var(--workout-trophy-color)}.mountains[data-v-7eb41918]{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title[data-v-7eb41918]{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map[data-v-7eb41918]{background-color:var(--workout-no-map-bg-color);background-image:url(/img/workouts/map.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group[data-v-7eb41918]{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes[data-v-7eb41918]{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes[data-v-7eb41918]{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label[data-v-7eb41918]{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input[data-v-7eb41918]{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span[data-v-7eb41918]{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span[data-v-7eb41918]{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl[data-v-7eb41918]{display:flex;flex-direction:column;width:100%}.description-list dl dt[data-v-7eb41918]{font-weight:700}.description-list dl dd[data-v-7eb41918]{margin-bottom:10px}.center-card[data-v-7eb41918]{margin:0 auto;width:700px}.center-card.with-margin[data-v-7eb41918]{margin-top:100px}@media screen and (max-width:1000px){.center-card[data-v-7eb41918]{width:100%;margin:0 auto 50px auto}.center-card.with-margin[data-v-7eb41918]{margin-top:0}}.center-text[data-v-7eb41918]{text-align:center}.responsive-table[data-v-7eb41918]{margin-bottom:15px}.responsive-table table[data-v-7eb41918]{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th[data-v-7eb41918]{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody[data-v-7eb41918]{font-size:.95em}.responsive-table table tbody td[data-v-7eb41918]{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td[data-v-7eb41918]{border:none}.responsive-table table .cell-heading[data-v-7eb41918]{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead[data-v-7eb41918]{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr[data-v-7eb41918]{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td[data-v-7eb41918]{border:1px solid var(--card-border-color);margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td[data-v-7eb41918]{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading[data-v-7eb41918]{display:flex}}@media screen and (max-width:500px){.responsive-table table td[data-v-7eb41918]{width:100%}}#workout-weather[data-v-7eb41918]{padding-top:10px}#workout-weather .weather-img[data-v-7eb41918]{height:30px;filter:var(--workout-img-color)}#workout-weather .weather-img-small[data-v-7eb41918]{height:20px}#workout-weather .weather-table[data-v-7eb41918]{width:100%;text-align:center}#workout-weather .weather-table .weather-th[data-v-7eb41918]{display:flex;flex-direction:column;text-transform:capitalize}#workout-weather .weather-table tbody[data-v-7eb41918]{font-size:.8em}[data-v-aa863bde]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,0.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#c8cdd3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--scroll-button-bg-color:hsla(0,0%,100%,0.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color))}body[data-v-aa863bde]{margin:0}#app[data-v-aa863bde]{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);margin:0;min-height:100vh}a[data-v-aa863bde]{color:var(--app-a-color);text-decoration:none}img[data-v-aa863bde]{max-width:100%}input[data-v-aa863bde],select[data-v-aa863bde],textarea[data-v-aa863bde]{border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input[data-v-aa863bde]:disabled,select[data-v-aa863bde]:disabled,textarea[data-v-aa863bde]:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}label[data-v-aa863bde]{font-weight:700}button[data-v-aa863bde]{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button[data-v-aa863bde]:hover{background:var(--app-color);color:var(--button-hover-color)}button[data-v-aa863bde]:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button[data-v-aa863bde]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel[data-v-aa863bde]{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel[data-v-aa863bde]:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm[data-v-aa863bde]{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm[data-v-aa863bde]:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger[data-v-aa863bde]{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger[data-v-aa863bde]:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger[data-v-aa863bde]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box[data-v-aa863bde]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}.info-box[data-v-aa863bde]{background-color:var(--info-background-color);border-radius:4px;color:var(--info-color);font-size:.8em;padding:10px}.container[data-v-aa863bde]{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items[data-v-aa863bde]{display:flex;flex-direction:column}.form-box .form-items input[data-v-aa863bde]{margin:10px;padding:5px}.upper[data-v-aa863bde]{text-transform:uppercase}.view[data-v-aa863bde]{padding-bottom:35px}.fa-trophy[data-v-aa863bde]{color:var(--workout-trophy-color)}.mountains[data-v-aa863bde]{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title[data-v-aa863bde]{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map[data-v-aa863bde]{background-color:var(--workout-no-map-bg-color);background-image:url(/img/workouts/map.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group[data-v-aa863bde]{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes[data-v-aa863bde]{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes[data-v-aa863bde]{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label[data-v-aa863bde]{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input[data-v-aa863bde]{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span[data-v-aa863bde]{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span[data-v-aa863bde]{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl[data-v-aa863bde]{display:flex;flex-direction:column;width:100%}.description-list dl dt[data-v-aa863bde]{font-weight:700}.description-list dl dd[data-v-aa863bde]{margin-bottom:10px}.center-card[data-v-aa863bde]{margin:0 auto;width:700px}.center-card.with-margin[data-v-aa863bde]{margin-top:100px}@media screen and (max-width:1000px){.center-card[data-v-aa863bde]{width:100%;margin:0 auto 50px auto}.center-card.with-margin[data-v-aa863bde]{margin-top:0}}.center-text[data-v-aa863bde]{text-align:center}.responsive-table[data-v-aa863bde]{margin-bottom:15px}.responsive-table table[data-v-aa863bde]{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th[data-v-aa863bde]{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody[data-v-aa863bde]{font-size:.95em}.responsive-table table tbody td[data-v-aa863bde]{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td[data-v-aa863bde]{border:none}.responsive-table table .cell-heading[data-v-aa863bde]{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead[data-v-aa863bde]{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr[data-v-aa863bde]{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td[data-v-aa863bde]{border:1px solid var(--card-border-color);margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td[data-v-aa863bde]{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading[data-v-aa863bde]{display:flex}}@media screen and (max-width:500px){.responsive-table table td[data-v-aa863bde]{width:100%}}#workout-info[data-v-aa863bde]{display:flex;flex-direction:column;padding:10px 20px;width:100%}#workout-info .workout-data[data-v-aa863bde]{text-transform:capitalize;padding:5px 0}#workout-info .workout-data span[data-v-aa863bde]{font-weight:700;text-transform:lowercase}@media screen and (max-width:700px){#workout-info[data-v-aa863bde]{padding:10px}}[data-v-76f3a2e8]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,0.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#c8cdd3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--scroll-button-bg-color:hsla(0,0%,100%,0.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color))}body[data-v-76f3a2e8]{margin:0}#app[data-v-76f3a2e8]{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);margin:0;min-height:100vh}a[data-v-76f3a2e8]{color:var(--app-a-color);text-decoration:none}img[data-v-76f3a2e8]{max-width:100%}input[data-v-76f3a2e8],select[data-v-76f3a2e8],textarea[data-v-76f3a2e8]{border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input[data-v-76f3a2e8]:disabled,select[data-v-76f3a2e8]:disabled,textarea[data-v-76f3a2e8]:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}label[data-v-76f3a2e8]{font-weight:700}button[data-v-76f3a2e8]{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button[data-v-76f3a2e8]:hover{background:var(--app-color);color:var(--button-hover-color)}button[data-v-76f3a2e8]:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button[data-v-76f3a2e8]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel[data-v-76f3a2e8]{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel[data-v-76f3a2e8]:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm[data-v-76f3a2e8]{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm[data-v-76f3a2e8]:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger[data-v-76f3a2e8]{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger[data-v-76f3a2e8]:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger[data-v-76f3a2e8]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box[data-v-76f3a2e8]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}.info-box[data-v-76f3a2e8]{background-color:var(--info-background-color);border-radius:4px;color:var(--info-color);font-size:.8em;padding:10px}.container[data-v-76f3a2e8]{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items[data-v-76f3a2e8]{display:flex;flex-direction:column}.form-box .form-items input[data-v-76f3a2e8]{margin:10px;padding:5px}.upper[data-v-76f3a2e8]{text-transform:uppercase}.view[data-v-76f3a2e8]{padding-bottom:35px}.fa-trophy[data-v-76f3a2e8]{color:var(--workout-trophy-color)}.mountains[data-v-76f3a2e8]{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title[data-v-76f3a2e8]{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map[data-v-76f3a2e8]{background-color:var(--workout-no-map-bg-color);background-image:url(/img/workouts/map.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group[data-v-76f3a2e8]{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes[data-v-76f3a2e8]{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes[data-v-76f3a2e8]{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label[data-v-76f3a2e8]{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input[data-v-76f3a2e8]{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span[data-v-76f3a2e8]{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span[data-v-76f3a2e8]{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl[data-v-76f3a2e8]{display:flex;flex-direction:column;width:100%}.description-list dl dt[data-v-76f3a2e8]{font-weight:700}.description-list dl dd[data-v-76f3a2e8]{margin-bottom:10px}.center-card[data-v-76f3a2e8]{margin:0 auto;width:700px}.center-card.with-margin[data-v-76f3a2e8]{margin-top:100px}@media screen and (max-width:1000px){.center-card[data-v-76f3a2e8]{width:100%;margin:0 auto 50px auto}.center-card.with-margin[data-v-76f3a2e8]{margin-top:0}}.center-text[data-v-76f3a2e8]{text-align:center}.responsive-table[data-v-76f3a2e8]{margin-bottom:15px}.responsive-table table[data-v-76f3a2e8]{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th[data-v-76f3a2e8]{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody[data-v-76f3a2e8]{font-size:.95em}.responsive-table table tbody td[data-v-76f3a2e8]{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td[data-v-76f3a2e8]{border:none}.responsive-table table .cell-heading[data-v-76f3a2e8]{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead[data-v-76f3a2e8]{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr[data-v-76f3a2e8]{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td[data-v-76f3a2e8]{border:1px solid var(--card-border-color);margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td[data-v-76f3a2e8]{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading[data-v-76f3a2e8]{display:flex}}@media screen and (max-width:500px){.responsive-table table td[data-v-76f3a2e8]{width:100%}}#workout-map[data-v-76f3a2e8]{padding:10px 0}#workout-map .leaflet-container[data-v-76f3a2e8],#workout-map .no-map[data-v-76f3a2e8]{height:400px;width:600px}#workout-map .no-map[data-v-76f3a2e8]{line-height:400px}@media screen and (max-width:700px){#workout-map[data-v-76f3a2e8]{padding:0}#workout-map .leaflet-container[data-v-76f3a2e8]{width:100%;height:300px}#workout-map .no-map[data-v-76f3a2e8]{display:none}}[data-v-a17554ea]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,0.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#c8cdd3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--scroll-button-bg-color:hsla(0,0%,100%,0.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color))}body[data-v-a17554ea]{margin:0}#app[data-v-a17554ea]{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);margin:0;min-height:100vh}a[data-v-a17554ea]{color:var(--app-a-color);text-decoration:none}img[data-v-a17554ea]{max-width:100%}input[data-v-a17554ea],select[data-v-a17554ea],textarea[data-v-a17554ea]{border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input[data-v-a17554ea]:disabled,select[data-v-a17554ea]:disabled,textarea[data-v-a17554ea]:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}label[data-v-a17554ea]{font-weight:700}button[data-v-a17554ea]{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button[data-v-a17554ea]:hover{background:var(--app-color);color:var(--button-hover-color)}button[data-v-a17554ea]:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button[data-v-a17554ea]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel[data-v-a17554ea]{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel[data-v-a17554ea]:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm[data-v-a17554ea]{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm[data-v-a17554ea]:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger[data-v-a17554ea]{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger[data-v-a17554ea]:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger[data-v-a17554ea]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box[data-v-a17554ea]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}.info-box[data-v-a17554ea]{background-color:var(--info-background-color);border-radius:4px;color:var(--info-color);font-size:.8em;padding:10px}.container[data-v-a17554ea]{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items[data-v-a17554ea]{display:flex;flex-direction:column}.form-box .form-items input[data-v-a17554ea]{margin:10px;padding:5px}.upper[data-v-a17554ea]{text-transform:uppercase}.view[data-v-a17554ea]{padding-bottom:35px}.fa-trophy[data-v-a17554ea]{color:var(--workout-trophy-color)}.mountains[data-v-a17554ea]{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title[data-v-a17554ea]{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map[data-v-a17554ea]{background-color:var(--workout-no-map-bg-color);background-image:url(/img/workouts/map.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group[data-v-a17554ea]{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes[data-v-a17554ea]{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes[data-v-a17554ea]{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label[data-v-a17554ea]{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input[data-v-a17554ea]{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span[data-v-a17554ea]{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span[data-v-a17554ea]{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl[data-v-a17554ea]{display:flex;flex-direction:column;width:100%}.description-list dl dt[data-v-a17554ea]{font-weight:700}.description-list dl dd[data-v-a17554ea]{margin-bottom:10px}.center-card[data-v-a17554ea]{margin:0 auto;width:700px}.center-card.with-margin[data-v-a17554ea]{margin-top:100px}@media screen and (max-width:1000px){.center-card[data-v-a17554ea]{width:100%;margin:0 auto 50px auto}.center-card.with-margin[data-v-a17554ea]{margin-top:0}}.center-text[data-v-a17554ea]{text-align:center}.responsive-table[data-v-a17554ea]{margin-bottom:15px}.responsive-table table[data-v-a17554ea]{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th[data-v-a17554ea]{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody[data-v-a17554ea]{font-size:.95em}.responsive-table table tbody td[data-v-a17554ea]{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td[data-v-a17554ea]{border:none}.responsive-table table .cell-heading[data-v-a17554ea]{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead[data-v-a17554ea]{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr[data-v-a17554ea]{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td[data-v-a17554ea]{border:1px solid var(--card-border-color);margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td[data-v-a17554ea]{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading[data-v-a17554ea]{display:flex}}@media screen and (max-width:500px){.responsive-table table td[data-v-a17554ea]{width:100%}}.workout-detail[data-v-a17554ea]{display:flex}.workout-detail[data-v-a17554ea] .card{width:100%}.workout-detail[data-v-a17554ea] .card .card-content{display:flex;flex-direction:row}@media screen and (max-width:1000px){.workout-detail[data-v-a17554ea] .card .card-content{flex-direction:column}}[data-v-5c47d30a]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,0.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#c8cdd3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--scroll-button-bg-color:hsla(0,0%,100%,0.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color))}body[data-v-5c47d30a]{margin:0}#app[data-v-5c47d30a]{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);margin:0;min-height:100vh}a[data-v-5c47d30a]{color:var(--app-a-color);text-decoration:none}img[data-v-5c47d30a]{max-width:100%}input[data-v-5c47d30a],select[data-v-5c47d30a],textarea[data-v-5c47d30a]{border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input[data-v-5c47d30a]:disabled,select[data-v-5c47d30a]:disabled,textarea[data-v-5c47d30a]:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}label[data-v-5c47d30a]{font-weight:700}button[data-v-5c47d30a]{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button[data-v-5c47d30a]:hover{background:var(--app-color);color:var(--button-hover-color)}button[data-v-5c47d30a]:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button[data-v-5c47d30a]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel[data-v-5c47d30a]{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel[data-v-5c47d30a]:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm[data-v-5c47d30a]{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm[data-v-5c47d30a]:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger[data-v-5c47d30a]{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger[data-v-5c47d30a]:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger[data-v-5c47d30a]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box[data-v-5c47d30a]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}.info-box[data-v-5c47d30a]{background-color:var(--info-background-color);border-radius:4px;color:var(--info-color);font-size:.8em;padding:10px}.container[data-v-5c47d30a]{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items[data-v-5c47d30a]{display:flex;flex-direction:column}.form-box .form-items input[data-v-5c47d30a]{margin:10px;padding:5px}.upper[data-v-5c47d30a]{text-transform:uppercase}.view[data-v-5c47d30a]{padding-bottom:35px}.fa-trophy[data-v-5c47d30a]{color:var(--workout-trophy-color)}.mountains[data-v-5c47d30a]{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title[data-v-5c47d30a]{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map[data-v-5c47d30a]{background-color:var(--workout-no-map-bg-color);background-image:url(/img/workouts/map.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group[data-v-5c47d30a]{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes[data-v-5c47d30a]{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes[data-v-5c47d30a]{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label[data-v-5c47d30a]{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input[data-v-5c47d30a]{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span[data-v-5c47d30a]{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span[data-v-5c47d30a]{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl[data-v-5c47d30a]{display:flex;flex-direction:column;width:100%}.description-list dl dt[data-v-5c47d30a]{font-weight:700}.description-list dl dd[data-v-5c47d30a]{margin-bottom:10px}.center-card[data-v-5c47d30a]{margin:0 auto;width:700px}.center-card.with-margin[data-v-5c47d30a]{margin-top:100px}@media screen and (max-width:1000px){.center-card[data-v-5c47d30a]{width:100%;margin:0 auto 50px auto}.center-card.with-margin[data-v-5c47d30a]{margin-top:0}}.center-text[data-v-5c47d30a]{text-align:center}.responsive-table[data-v-5c47d30a]{margin-bottom:15px}.responsive-table table[data-v-5c47d30a]{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th[data-v-5c47d30a]{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody[data-v-5c47d30a]{font-size:.95em}.responsive-table table tbody td[data-v-5c47d30a]{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td[data-v-5c47d30a]{border:none}.responsive-table table .cell-heading[data-v-5c47d30a]{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead[data-v-5c47d30a]{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr[data-v-5c47d30a]{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td[data-v-5c47d30a]{border:1px solid var(--card-border-color);margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td[data-v-5c47d30a]{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading[data-v-5c47d30a]{display:flex}}@media screen and (max-width:500px){.responsive-table table td[data-v-5c47d30a]{width:100%}}#workout-note[data-v-5c47d30a] .card-content{font-style:italic}[data-v-5c40d110]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,0.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#c8cdd3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--scroll-button-bg-color:hsla(0,0%,100%,0.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color))}body[data-v-5c40d110]{margin:0}#app[data-v-5c40d110]{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);margin:0;min-height:100vh}a[data-v-5c40d110]{color:var(--app-a-color);text-decoration:none}img[data-v-5c40d110]{max-width:100%}input[data-v-5c40d110],select[data-v-5c40d110],textarea[data-v-5c40d110]{border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input[data-v-5c40d110]:disabled,select[data-v-5c40d110]:disabled,textarea[data-v-5c40d110]:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}label[data-v-5c40d110]{font-weight:700}button[data-v-5c40d110]{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button[data-v-5c40d110]:hover{background:var(--app-color);color:var(--button-hover-color)}button[data-v-5c40d110]:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button[data-v-5c40d110]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel[data-v-5c40d110]{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel[data-v-5c40d110]:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm[data-v-5c40d110]{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm[data-v-5c40d110]:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger[data-v-5c40d110]{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger[data-v-5c40d110]:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger[data-v-5c40d110]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box[data-v-5c40d110]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}.info-box[data-v-5c40d110]{background-color:var(--info-background-color);border-radius:4px;color:var(--info-color);font-size:.8em;padding:10px}.container[data-v-5c40d110]{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items[data-v-5c40d110]{display:flex;flex-direction:column}.form-box .form-items input[data-v-5c40d110]{margin:10px;padding:5px}.upper[data-v-5c40d110]{text-transform:uppercase}.view[data-v-5c40d110]{padding-bottom:35px}.fa-trophy[data-v-5c40d110]{color:var(--workout-trophy-color)}.mountains[data-v-5c40d110]{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title[data-v-5c40d110]{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map[data-v-5c40d110]{background-color:var(--workout-no-map-bg-color);background-image:url(/img/workouts/map.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group[data-v-5c40d110]{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes[data-v-5c40d110]{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes[data-v-5c40d110]{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label[data-v-5c40d110]{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input[data-v-5c40d110]{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span[data-v-5c40d110]{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span[data-v-5c40d110]{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl[data-v-5c40d110]{display:flex;flex-direction:column;width:100%}.description-list dl dt[data-v-5c40d110]{font-weight:700}.description-list dl dd[data-v-5c40d110]{margin-bottom:10px}.center-card[data-v-5c40d110]{margin:0 auto;width:700px}.center-card.with-margin[data-v-5c40d110]{margin-top:100px}@media screen and (max-width:1000px){.center-card[data-v-5c40d110]{width:100%;margin:0 auto 50px auto}.center-card.with-margin[data-v-5c40d110]{margin-top:0}}.center-text[data-v-5c40d110]{text-align:center}.responsive-table[data-v-5c40d110]{margin-bottom:15px}.responsive-table table[data-v-5c40d110]{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th[data-v-5c40d110]{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody[data-v-5c40d110]{font-size:.95em}.responsive-table table tbody td[data-v-5c40d110]{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td[data-v-5c40d110]{border:none}.responsive-table table .cell-heading[data-v-5c40d110]{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead[data-v-5c40d110]{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr[data-v-5c40d110]{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td[data-v-5c40d110]{border:1px solid var(--card-border-color);margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td[data-v-5c40d110]{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading[data-v-5c40d110]{display:flex}}@media screen and (max-width:500px){.responsive-table table td[data-v-5c40d110]{width:100%}}#workout-segments[data-v-5c40d110] .card .card-title{text-transform:capitalize}#workout-segments[data-v-5c40d110] .card .card-content{padding-bottom:0;padding-top:0}#workout-segments[data-v-5c40d110] .card .card-content a{font-weight:700}#workout-segments[data-v-5c40d110] .card .card-content ul{padding:0 10px;list-style:square}[data-v-05bdbd04]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,0.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#c8cdd3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--scroll-button-bg-color:hsla(0,0%,100%,0.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color))}body[data-v-05bdbd04]{margin:0}#app[data-v-05bdbd04]{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);margin:0;min-height:100vh}a[data-v-05bdbd04]{color:var(--app-a-color);text-decoration:none}img[data-v-05bdbd04]{max-width:100%}input[data-v-05bdbd04],select[data-v-05bdbd04],textarea[data-v-05bdbd04]{border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input[data-v-05bdbd04]:disabled,select[data-v-05bdbd04]:disabled,textarea[data-v-05bdbd04]:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}label[data-v-05bdbd04]{font-weight:700}button[data-v-05bdbd04]{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button[data-v-05bdbd04]:hover{background:var(--app-color);color:var(--button-hover-color)}button[data-v-05bdbd04]:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button[data-v-05bdbd04]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel[data-v-05bdbd04]{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel[data-v-05bdbd04]:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm[data-v-05bdbd04]{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm[data-v-05bdbd04]:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger[data-v-05bdbd04]{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger[data-v-05bdbd04]:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger[data-v-05bdbd04]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box[data-v-05bdbd04]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}.info-box[data-v-05bdbd04]{background-color:var(--info-background-color);border-radius:4px;color:var(--info-color);font-size:.8em;padding:10px}.container[data-v-05bdbd04]{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items[data-v-05bdbd04]{display:flex;flex-direction:column}.form-box .form-items input[data-v-05bdbd04]{margin:10px;padding:5px}.upper[data-v-05bdbd04]{text-transform:uppercase}.view[data-v-05bdbd04]{padding-bottom:35px}.fa-trophy[data-v-05bdbd04]{color:var(--workout-trophy-color)}.mountains[data-v-05bdbd04]{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title[data-v-05bdbd04]{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map[data-v-05bdbd04]{background-color:var(--workout-no-map-bg-color);background-image:url(/img/workouts/map.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group[data-v-05bdbd04]{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes[data-v-05bdbd04]{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes[data-v-05bdbd04]{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label[data-v-05bdbd04]{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input[data-v-05bdbd04]{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span[data-v-05bdbd04]{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span[data-v-05bdbd04]{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl[data-v-05bdbd04]{display:flex;flex-direction:column;width:100%}.description-list dl dt[data-v-05bdbd04]{font-weight:700}.description-list dl dd[data-v-05bdbd04]{margin-bottom:10px}.center-card[data-v-05bdbd04]{margin:0 auto;width:700px}.center-card.with-margin[data-v-05bdbd04]{margin-top:100px}@media screen and (max-width:1000px){.center-card[data-v-05bdbd04]{width:100%;margin:0 auto 50px auto}.center-card.with-margin[data-v-05bdbd04]{margin-top:0}}.center-text[data-v-05bdbd04]{text-align:center}.responsive-table[data-v-05bdbd04]{margin-bottom:15px}.responsive-table table[data-v-05bdbd04]{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th[data-v-05bdbd04]{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody[data-v-05bdbd04]{font-size:.95em}.responsive-table table tbody td[data-v-05bdbd04]{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td[data-v-05bdbd04]{border:none}.responsive-table table .cell-heading[data-v-05bdbd04]{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead[data-v-05bdbd04]{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr[data-v-05bdbd04]{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td[data-v-05bdbd04]{border:1px solid var(--card-border-color);margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td[data-v-05bdbd04]{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading[data-v-05bdbd04]{display:flex}}@media screen and (max-width:500px){.responsive-table table td[data-v-05bdbd04]{width:100%}}#workout[data-v-05bdbd04]{display:flex}#workout .container[data-v-05bdbd04]{width:100%;padding:0}#workout .container .workout-container[data-v-05bdbd04]{width:100%}#workout .container .workout-loading[data-v-05bdbd04]{height:calc(100vh - 130px);width:100%}#workout .container .workout-loading .loading[data-v-05bdbd04]{display:flex;align-items:center;height:100%}[data-v-8eb73dd0]:root{--app-background-color:#fff;--app-color:#2c3e50;--app-color-light:#808b96;--app-a-color:#40578a;--app-shadow-color:#d3d3d3;--app-loading-color:#f3f3f3;--app-loading-top-color:var(--app-color);--button-hover-color:#fff;--button-cancel-bg-color:#fff;--button-cancel-color:var(--app-color);--button-confirm-bg-color:#fff;--button-confirm-color:var(--app-color);--button-danger-bg-color:#fff;--button-danger-color:#dc3545;--button-danger-hover-bg-color:#dc3545;--button-danger-hover-color:#fff;--card-border-color:#c4c7cf;--input-border-color:#9da3af;--custom-checkbox-border-color:#9da3af;--custom-checkbox-checked-bg-color:#9da3af;--custom-checkbox-checked-color:#fff;--calendar-border-color:#c4c7cf;--calendar-week-end-color:#f5f5f5;--calendar-today-color:#eff1f3;--modal-background-color:rgba(0,0,0,0.3);--nav-bar-background-color:#fff;--nav-bar-link-active:#485b6e;--nav-border-color:#c5ccdb;--mobile-menu-selected-color:#fff;--mobile-menu-selected-bgcolor:#9da3af;--footer-background-color:#fff;--footer-border-color:#ebeef3;--footer-color:#8b8c8c;--alert-background-color:#c8cdd3;--alert-color:#3f3f3f;--info-background-color:#e5e7ea;--info-color:var(--app-color);--error-background-color:#ffd2d2;--error-color:#db1924;--disabled-background-color:#e0e0e0;--disabled-color:#a3a3a3;--scroll-button-bg-color:hsla(0,0%,100%,0.7);--workout-trophy-color:#daa520;--workout-img-color:invert(22%) sepia(25%) saturate(646%) hue-rotate(169deg) brightness(97%) contrast(96%);--workout-no-map-bg-color:#eaeaea;--workout-no-map-color:#666;--cell-heading-bg-color:#eee;--cell-heading-color:#696969;--svg-filter:drop-shadow(10px 10px 10px var(--app-shadow-color))}@font-face{font-family:PT Sans;font-style:normal;font-weight:400;src:url(../../static/fonts/pt-sans-v9-latin-regular.c2a4d575.eot);src:local("PT Sans"),local("PTSans-Regular"),url(../../static/fonts/pt-sans-v9-latin-regular.c2a4d575.eot?#iefix) format("embedded-opentype"),url(../../static/fonts/pt-sans-v9-latin-regular.198d320b.woff2) format("woff2"),url(../../static/fonts/pt-sans-v9-latin-regular.399a9357.woff) format("woff"),url(../../static/fonts/pt-sans-v9-latin-regular.4ffa4616.ttf) format("truetype"),url(../../static/img/pt-sans-v9-latin-regular.f1f73e45.svg#PTSans) format("svg")}@font-face{font-family:PT Sans;font-style:italic;font-weight:400;src:url(../../static/fonts/pt-sans-v9-latin-italic.d5f81343.eot);src:local("PT Sans Italic"),local("PTSans-Italic"),url(../../static/fonts/pt-sans-v9-latin-italic.d5f81343.eot?#iefix) format("embedded-opentype"),url(../../static/fonts/pt-sans-v9-latin-italic.57d98c19.woff2) format("woff2"),url(../../static/fonts/pt-sans-v9-latin-italic.de9540fd.woff) format("woff"),url(../../static/fonts/pt-sans-v9-latin-italic.4ef1aece.ttf) format("truetype"),url(../../static/img/pt-sans-v9-latin-italic.648d3351.svg#PTSans) format("svg")}@font-face{font-family:PT Sans;font-style:normal;font-weight:700;src:url(../../static/fonts/pt-sans-v9-latin-700.1db19001.eot);src:local("PT Sans Bold"),local("PTSans-Bold"),url(../../static/fonts/pt-sans-v9-latin-700.1db19001.eot?#iefix) format("embedded-opentype"),url(../../static/fonts/pt-sans-v9-latin-700.f6d5807c.woff2) format("woff2"),url(../../static/fonts/pt-sans-v9-latin-700.e86e8add.woff) format("woff"),url(../../static/fonts/pt-sans-v9-latin-700.6078a795.ttf) format("truetype"),url(../../static/img/pt-sans-v9-latin-700.061c8566.svg#PTSans) format("svg")}body[data-v-8eb73dd0]{margin:0}#app[data-v-8eb73dd0]{font-family:PT Sans,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--app-color);background-color:var(--app-background-color);margin:0;min-height:100vh}a[data-v-8eb73dd0]{color:var(--app-a-color);text-decoration:none}img[data-v-8eb73dd0]{max-width:100%}input[data-v-8eb73dd0],select[data-v-8eb73dd0],textarea[data-v-8eb73dd0]{border-radius:4px;border:solid 1px var(--input-border-color);padding:10px}input[data-v-8eb73dd0]:disabled,select[data-v-8eb73dd0]:disabled,textarea[data-v-8eb73dd0]:disabled{background-color:var(--disabled-background-color);border-color:var(--disabled-color)}label[data-v-8eb73dd0]{font-weight:700}button[data-v-8eb73dd0]{background:var(--app-background-color);border:solid 1px var(--input-border-color);border-radius:4px;box-shadow:2px 2px 2px var(--app-shadow-color);color:var(--app-color);padding:6px 14px}button[data-v-8eb73dd0]:hover{background:var(--app-color);color:var(--button-hover-color)}button[data-v-8eb73dd0]:enabled:active{box-shadow:2px 0 2px var(--app-shadow-color);transform:translateY(2px)}button[data-v-8eb73dd0]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}button.cancel[data-v-8eb73dd0]{background:var(--button-cancel-bg-color);color:var(--button-cancel-color)}button.cancel[data-v-8eb73dd0]:hover{background:var(--app-color);color:var(--button-hover-color)}button.confirm[data-v-8eb73dd0]{background:var(--button-confirm-bg-color);color:var(--button-confirm-color)}button.confirm[data-v-8eb73dd0]:hover{background:var(--app-color);color:var(--button-hover-color)}button.danger[data-v-8eb73dd0]{background:var(--button-danger-bg-color);color:var(--button-danger-color)}button.danger[data-v-8eb73dd0]:hover{background:var(--button-danger-hover-bg-color);color:var(--button-danger-hover-color)}button.danger[data-v-8eb73dd0]:disabled{background:var(--disabled-background-color);border-color:var(--disabled-color);color:var(--disabled-color)}.box[data-v-8eb73dd0]{border:solid 1px var(--card-border-color);border-radius:4px;padding:10px;margin:10px}.info-box[data-v-8eb73dd0]{background-color:var(--info-background-color);border-radius:4px;color:var(--info-color);font-size:.8em;padding:10px}.container[data-v-8eb73dd0]{display:flex;margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px;max-width:1140px}.form-box .form-items[data-v-8eb73dd0]{display:flex;flex-direction:column}.form-box .form-items input[data-v-8eb73dd0]{margin:10px;padding:5px}.upper[data-v-8eb73dd0]{text-transform:uppercase}.view[data-v-8eb73dd0]{padding-bottom:35px}.fa-trophy[data-v-8eb73dd0]{color:var(--workout-trophy-color)}.mountains[data-v-8eb73dd0]{margin-bottom:-3px;height:16px;filter:var(--workout-img-color)}.section-title[data-v-8eb73dd0]{font-weight:700;padding-top:15px;padding-left:10px;text-transform:capitalize}.no-map[data-v-8eb73dd0]{background-color:var(--workout-no-map-bg-color);background-image:url(/img/workouts/map.svg);background-size:contain;background-repeat:no-repeat;background-position:50%;color:var(--workout-no-map-color);font-style:italic;font-weight:700;text-align:center;vertical-align:center}.custom-checkboxes-group[data-v-8eb73dd0]{display:flex;justify-content:space-around}.custom-checkboxes-group .custom-checkboxes[data-v-8eb73dd0]{display:inline-flex}@media screen and (max-width:300px){.custom-checkboxes-group .custom-checkboxes[data-v-8eb73dd0]{display:flex;flex-direction:column;align-items:center;gap:5px}}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label[data-v-8eb73dd0]{font-weight:400;float:left;padding:0 5px;cursor:pointer}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label input[data-v-8eb73dd0]{display:none}.custom-checkboxes-group .custom-checkboxes .custom-checkbox label span[data-v-8eb73dd0]{border:solid 1px var(--custom-checkbox-border-color);border-radius:5px;display:block;font-size:.9em;padding:2px 6px;text-align:center}.custom-checkboxes-group .custom-checkboxes .custom-checkbox input:checked+span[data-v-8eb73dd0]{background-color:var(--custom-checkbox-checked-bg-color);color:var(--custom-checkbox-checked-color)}.description-list dl[data-v-8eb73dd0]{display:flex;flex-direction:column;width:100%}.description-list dl dt[data-v-8eb73dd0]{font-weight:700}.description-list dl dd[data-v-8eb73dd0]{margin-bottom:10px}.center-card[data-v-8eb73dd0]{margin:0 auto;width:700px}.center-card.with-margin[data-v-8eb73dd0]{margin-top:100px}@media screen and (max-width:1000px){.center-card[data-v-8eb73dd0]{width:100%;margin:0 auto 50px auto}.center-card.with-margin[data-v-8eb73dd0]{margin-top:0}}.center-text[data-v-8eb73dd0]{text-align:center}.responsive-table[data-v-8eb73dd0]{margin-bottom:15px}.responsive-table table[data-v-8eb73dd0]{width:100%;padding:10px;font-size:.9em;border-collapse:collapse}.responsive-table table thead th[data-v-8eb73dd0]{vertical-align:center;padding:10px;border-bottom:2px solid var(--card-border-color)}.responsive-table table tbody[data-v-8eb73dd0]{font-size:.95em}.responsive-table table tbody td[data-v-8eb73dd0]{padding:10px;border-bottom:1px solid var(--card-border-color)}.responsive-table table tbody tr:last-child td[data-v-8eb73dd0]{border:none}.responsive-table table .cell-heading[data-v-8eb73dd0]{background:var(--cell-heading-bg-color);color:var(--cell-heading-color);display:none;font-size:10px;font-weight:700;padding:5px;position:absolute;text-transform:uppercase;top:0;left:0}@media screen and (max-width:700px){.responsive-table table thead[data-v-8eb73dd0]{left:-9999px;position:absolute;visibility:hidden}.responsive-table table tr[data-v-8eb73dd0]{border-bottom:0;display:flex;flex-direction:row;flex-wrap:wrap;margin-bottom:40px}.responsive-table table td[data-v-8eb73dd0]{border:1px solid var(--card-border-color);margin:0 -1px -1px 0;padding-top:25px!important;position:relative;text-align:center;width:45%}.responsive-table table tbody tr:last-child td[data-v-8eb73dd0]{border:1px solid var(--card-border-color)}.responsive-table table .cell-heading[data-v-8eb73dd0]{display:flex}}@media screen and (max-width:500px){.responsive-table table td[data-v-8eb73dd0]{width:100%}}@media screen and (max-width:700px){#workout-edition.center-form[data-v-8eb73dd0]{margin:50px auto}}#workout-edition[data-v-8eb73dd0] .card .card-title{text-align:center;text-transform:uppercase}@media screen and (max-width:1000px){#workout-edition[data-v-8eb73dd0] .card .card-content{padding:10px 0}}#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .form-items{display:flex;flex-direction:column}#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .form-items input{height:20px}#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .form-items .workout-date-duration{display:flex;flex-direction:row;justify-content:space-between}@media screen and (max-width:1000px){#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .form-items .workout-date-duration{flex-direction:column}}#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .form-items .form-item{display:flex;flex-direction:column;padding:10px}#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .form-items .form-item .workout-date-time{display:flex}#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .form-items .form-item .workout-date-time #workout-date{margin-right:10px}#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .form-items .form-item .workout-duration{width:25px}#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .form-items .form-item-radio{display:flex;justify-content:space-around}#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .form-items .form-item-radio label{font-weight:400}@media screen and (max-width:1000px){#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .form-items .form-item-radio label{font-size:.9em}}#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .form-items .form-item-radio input{margin-top:-2px;vertical-align:middle}#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .form-buttons{display:flex;justify-content:flex-end}#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .form-buttons button{margin:5px}#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .files-help{display:flex;justify-content:space-around;margin-top:10px}#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .files-help div{display:flex}@media screen and (max-width:1000px){#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .files-help div{flex-direction:column}}#workout-edition[data-v-8eb73dd0] .card .card-content #workout-form .files-help div ul{margin:0;padding:0 20px} \ No newline at end of file diff --git a/fittrackee/dist/static/js/app.1f820b50.js b/fittrackee/dist/static/js/app.1f820b50.js new file mode 100644 index 00000000..20bf7ac0 --- /dev/null +++ b/fittrackee/dist/static/js/app.1f820b50.js @@ -0,0 +1,2 @@ +(function(e){function t(t){for(var r,o,i=t[0],s=t[1],l=t[2],u=0,d=[];ur?1:n2&&void 0!==arguments[2]&&arguments[2];return e.filter((function(e){return!n||e.is_active})).map((function(e){return Object(r["a"])(Object(r["a"])({},e),{},{translatedLabel:t("sports.".concat(e.label,".LABEL"))})})).sort(a)},s=function(e,t){return t.filter((function(t){return t.id===e.sport_id})).map((function(e){return e.label}))[0]}},"13dc":function(e,t,n){"use strict";n("c0dc")},"16c2":function(e,t,n){"use strict";n("a03e")},1850:function(e,t,n){"use strict";n("da66")},"18b2":function(e,t,n){},"1f4c":function(e,t,n){},2024:function(e,t,n){},"21a0":function(e,t,n){"use strict";n("8f8e")},"25ba":function(e,t,n){"use strict";n("cabe")},2906:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n("5502");function o(){return Object(r["b"])()}},3214:function(e,t,n){"use strict";n("2024")},3853:function(e,t,n){"use strict";n("c75e")},"3c44":function(e,t,n){"use strict";n("b680"),n("a9e3");var r=n("7a23"),o=function(e){return Object(r["pushScopeId"])("data-v-a6fa997c"),e=e(),Object(r["popScopeId"])(),e},c={class:"box user-header"},a={class:"user-details"},i={class:"user-name"},s={class:"user-stats"},l={class:"user-stat"},u={class:"stat-number"},d={class:"stat-label"},O={class:"user-stat"},m={class:"stat-number"},E=o((function(){return Object(r["createElementVNode"])("span",{class:"stat-label"},"km",-1)})),p={class:"user-stat hide-small"},b={class:"stat-number"},T={class:"stat-label"};function S(e,t,n,o,S,f){var _=Object(r["resolveComponent"])("UserPicture");return Object(r["openBlock"])(),Object(r["createElementBlock"])("div",c,[Object(r["createVNode"])(_,{user:e.user},null,8,["user"]),Object(r["createElementVNode"])("div",a,[Object(r["createElementVNode"])("div",i,Object(r["toDisplayString"])(e.user.username),1),Object(r["createElementVNode"])("div",s,[Object(r["createElementVNode"])("div",l,[Object(r["createElementVNode"])("span",u,Object(r["toDisplayString"])(e.user.nb_workouts),1),Object(r["createElementVNode"])("span",d,Object(r["toDisplayString"])(e.$t("workouts.WORKOUT",e.user.nb_workouts)),1)]),Object(r["createElementVNode"])("div",O,[Object(r["createElementVNode"])("span",m,Object(r["toDisplayString"])(Number(e.user.total_distance).toFixed(0)),1),E]),Object(r["createElementVNode"])("div",p,[Object(r["createElementVNode"])("span",b,Object(r["toDisplayString"])(e.user.nb_sports),1),Object(r["createElementVNode"])("span",T,Object(r["toDisplayString"])(e.$t("workouts.SPORT",e.user.nb_sports)),1)])])])])}var f=n("c46a"),_=Object(r["defineComponent"])({name:"ProfileDisplay",components:{UserPicture:f["a"]},props:{user:{type:Object,required:!0}}}),j=(n("5085"),n("6b0d")),A=n.n(j);const N=A()(_,[["render",S],["__scopeId","data-v-a6fa997c"]]);t["a"]=N},4870:function(e,t,n){"use strict";var r,o,c;n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return o})),n.d(t,"c",(function(){return c})),function(e){e["ADD_WORKOUT"]="ADD_WORKOUT",e["ADD_WORKOUT_WITHOUT_GPX"]="ADD_WORKOUT_WITHOUT_GPX",e["DELETE_WORKOUT"]="DELETE_WORKOUT",e["EDIT_WORKOUT"]="EDIT_WORKOUT",e["GET_CALENDAR_WORKOUTS"]="GET_CALENDAR_WORKOUTS",e["GET_USER_WORKOUTS"]="GET_USER_WORKOUTS",e["GET_TIMELINE_WORKOUTS"]="GET_TIMELINE_WORKOUTS",e["GET_MORE_TIMELINE_WORKOUTS"]="GET_MORE_TIMELINE_WORKOUTS",e["GET_WORKOUT_DATA"]="GET_WORKOUT_DATA"}(r||(r={})),function(e){e["CALENDAR_WORKOUTS"]="CALENDAR_WORKOUTS",e["TIMELINE_WORKOUTS"]="TIMELINE_WORKOUTS",e["USER_WORKOUTS"]="USER_WORKOUTS",e["WORKOUT_DATA"]="WORKOUT_DATA",e["WORKOUTS_PAGINATION"]="WORKOUTS_PAGINATION"}(o||(o={})),function(e){e["ADD_TIMELINE_WORKOUTS"]="ADD_TIMELINE_WORKOUTS",e["EMPTY_WORKOUTS"]="EMPTY_WORKOUTS",e["EMPTY_CALENDAR_WORKOUTS"]="EMPTY_CALENDAR_WORKOUTS",e["EMPTY_WORKOUT"]="EMPTY_WORKOUT",e["SET_CALENDAR_WORKOUTS"]="SET_CALENDAR_WORKOUTS",e["SET_TIMELINE_WORKOUTS"]="SET_TIMELINE_WORKOUTS",e["SET_USER_WORKOUTS"]="SET_USER_WORKOUTS",e["SET_WORKOUT"]="SET_WORKOUT",e["SET_WORKOUT_GPX"]="SET_WORKOUT_GPX",e["SET_WORKOUT_CHART_DATA"]="SET_WORKOUT_CHART_DATA",e["SET_WORKOUT_LOADING"]="SET_WORKOUT_LOADING",e["SET_WORKOUTS_PAGINATION"]="SET_WORKOUTS_PAGINATION"}(c||(c={}))},"4a13":function(e,t,n){"use strict";n("92d6")},"4b55":function(e,t,n){"use strict";n("8384")},"4c14":function(e,t,n){"use strict";n("abe8")},5085:function(e,t,n){"use strict";n("1f4c")},"57ba":function(e,t,n){"use strict";n("18b2")},"5df8":function(e,t,n){},"5e65":function(e,t,n){"use strict";n.d(t,"d",(function(){return m})),n.d(t,"e",(function(){return E})),n.d(t,"c",(function(){return p})),n.d(t,"b",(function(){return b})),n.d(t,"a",(function(){return T}));var r=n("69eb"),o=n("d6e9"),c=n("f628"),a=n("f7f1"),i=n("cdb6"),s=n("74b5"),l=n("8cac"),u=n("2fc8"),d=n("b166"),O=n("78b2"),m=function(e,t,n){switch(e){case"week":return Object(r["a"])(t,{weekStartsOn:n?1:0});case"year":return Object(o["a"])(t);case"month":return Object(c["a"])(t);default:throw new Error('Invalid duration, expected: "week", "month", "year", got: "'.concat(e,'"'))}},E=function(e,t){switch(e){case"week":return Object(a["a"])(t,7);case"year":return Object(i["a"])(t,1);case"month":return Object(s["a"])(t,1);default:throw new Error('Invalid duration, expected: "week", "month", "year", got: "'.concat(e,'"'))}},p=function(e,t){return Object(O["a"])(new Date(e),t)},b=function(e,t){var n=Object(c["a"])(e),o=Object(l["a"])(e),a=t?1:0;return{start:Object(r["a"])(n,{weekStartsOn:a}),end:Object(u["a"])(o,{weekStartsOn:a})}},T=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return t||(t="yyyy/MM/dd"),n||(n="HH:mm"),{workout_date:Object(d["a"])(e,t),workout_time:Object(d["a"])(e,n)}}},"608d":function(e,t,n){"use strict";n("90b9")},"663e":function(e,t,n){"use strict";n.r(t);var r={ACTION:e=>{const{normalize:t}=e;return t(["Action"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Ajouter/retirer des droits d'administration, supprimer des comptes utilisateurs."])},ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ADMINISTRATION:e=>{const{normalize:t}=e;return t(["Administration"])},APPLICATION:e=>{const{normalize:t}=e;return t(["Application"])},APP_CONFIG:{MAX_USERS_LABEL:e=>{const{normalize:t}=e;return t(["Nombre maximum d'utilisateurs actifs "])},MAX_USERS_HELP:e=>{const{normalize:t}=e;return t(["Si égal à 0, pas limite d'inscription"])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:t}=e;return t(["Taille max. des archives zip (en Mo) "])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Taille max. des fichiers (en Mo) "])},TITLE:e=>{const{normalize:t}=e;return t(["Configuration de l'application"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Nombre max. de fichiers dans une archive zip "])}},BACK_TO_ADMIN:e=>{const{normalize:t}=e;return t(["Revenir à l'admin"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Etes-vous sûr de vouloir supprimer le compte de ",n(r(0))," ? Toutes les données seront définitivement."])},DELETE_USER:e=>{const{normalize:t}=e;return t(["Supprimer l'utilisateur"])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:t}=e;return t(["Activer/désactiver des sports."])},REGISTRATION_DISABLED:e=>{const{normalize:t}=e;return t(["Les inscriptions sont actuellement désactivées."])},REGISTRATION_ENABLED:e=>{const{normalize:t}=e;return t(["Les inscriptions sont actuellement activées."])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:t}=e;return t(["Actif"])},HAS_WORKOUTS:e=>{const{normalize:t}=e;return t(["des séances existent"])},IMAGE:e=>{const{normalize:t}=e;return t(["Image"])},LABEL:e=>{const{normalize:t}=e;return t(["Label"])}},TITLE:e=>{const{normalize:t}=e;return t(["Administration - Sports"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:t}=e;return t(["Configurer l'application (nombre maximum d'utilisateurs inscrits, taille maximale des fichers)."])},USER:e=>{const{normalize:t,plural:n}=e;return n([t(["utilisateur"]),t(["utilisateurs"])])},USERS:{TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Ajouter les drois d'admin"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Retirer les drois d'admin"])}},SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:t}=e;return t(["status administrateur"])},CREATED_AT:e=>{const{normalize:t}=e;return t(["date d'inscription"])},USERNAME:e=>{const{normalize:t}=e;return t(["nom d'utilisateur"])},WORKOUTS_COUNT:e=>{const{normalize:t}=e;return t(["nombre de séances"])}}}}},o={ERROR:{UNKNOWN:e=>{const{normalize:t}=e;return t(["Erreur. Veuillez réessayer ou contacter l'administrateur."])},"email: valid email must be provided":e=>{const{normalize:t}=e;return t(["Email : une adresse email valide doit être fournie."])},"error on getting configuration":e=>{const{normalize:t}=e;return t(["Erreur lors de la récupération de la configuration."])},"error when updating configuration":e=>{const{normalize:t}=e;return t(["Erreur lors de la mise à jour de la configuration"])},"error, please try again or contact the administrator":e=>{const{normalize:t}=e;return t(["Erreur, veuillez réessayer ou contacter l'administrateur."])},"error, registration is disabled":e=>{const{normalize:t}=e;return t(["Erreur, les inscriptions sont désactivées."])},"file extension not allowed":e=>{const{normalize:t}=e;return t(["Extension de fichier non autorisée."])},"file size is greater than the allowed size":e=>{const{normalize:t}=e;return t(["La taille du fichier est supérieure à la limite autorisée."])},"invalid credentials":e=>{const{normalize:t}=e;return t(["Identifiants invalides."])},"invalid payload":e=>{const{normalize:t}=e;return t(["Données fournies incorrectes."])},"invalid token, please log in again":e=>{const{normalize:t}=e;return t(["Jeton de connexion invalide, merci de vous reconnecter."])},"invalid token, please request a new token":e=>{const{normalize:t}=e;return t(["Jeton de connexion, merci de vous reconnecter."])},"no file part":e=>{const{normalize:t}=e;return t(["Pas de fichier fourni."])},"no selected file":e=>{const{normalize:t}=e;return t(["Pas de fichier sélectionné."])},"Network Error":e=>{const{normalize:t}=e;return t(["Erreur Réseau."])},"password: password and password confirmation do not match":e=>{const{normalize:t}=e;return t(["Mot de passe : les mots de passe saisis sont différents."])},"provide a valid auth token":e=>{const{normalize:t}=e;return t(["Merci de fournir un jeton de connexion valide."])},"password: 8 characters required":e=>{const{normalize:t}=e;return t(["Mot de passe : 8 caractères minimum."])},"sport does not exist":e=>{const{normalize:t}=e;return t(["Ce sport n'existe pas."])},"signature expired, please log in again":e=>{const{normalize:t}=e;return t(["Signature expirée. Merci de vous reconnecter."])},"sorry, that user already exists":e=>{const{normalize:t}=e;return t(["Désolé, cet utilisateur existe déjà."])},"successfully registered":e=>{const{normalize:t}=e;return t(["Inscription validée."])},"user does not exist":e=>{const{normalize:t}=e;return t(["L'utilisateur n'existe pas"])},"username: 3 to 12 characters required":e=>{const{normalize:t}=e;return t(["Nom d'utilisateur : 3 à 12 caractères requis."])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:t}=e;return t(["Vous ne pouvez pas supprimer votre compte, aucun autre utilisateur n'a des droits d'administration."])},"you do not have permissions":e=>{const{normalize:t}=e;return t(["Vous n'avez pas les permissions nécessaires."])}},PAGINATION:{PREVIOUS:e=>{const{normalize:t}=e;return t(["précédent"])},NEXT:e=>{const{normalize:t}=e;return t(["suivant"])}}},c={BACK:e=>{const{normalize:t}=e;return t(["Précédent"])},CANCEL:e=>{const{normalize:t}=e;return t(["Annuler"])},CLEAR_FILTER:e=>{const{normalize:t}=e;return t(["Réinitialiser"])},DELETE_MY_ACCOUNT:e=>{const{normalize:t}=e;return t(["Supprimer mon compte"])},DISABLE:e=>{const{normalize:t}=e;return t(["Désactiver"])},EDIT:e=>{const{normalize:t}=e;return t(["Modifier"])},ENABLE:e=>{const{normalize:t}=e;return t(["Activer"])},FILTER:e=>{const{normalize:t}=e;return t(["Filtrer"])},LOGIN:e=>{const{normalize:t}=e;return t(["Se connecter"])},NO:e=>{const{normalize:t}=e;return t(["Non"])},REGISTER:e=>{const{normalize:t}=e;return t(["S'inscrire"])},SUBMIT:e=>{const{normalize:t}=e;return t(["Valider"])},YES:e=>{const{normalize:t}=e;return t(["Oui"])}},a={CONFIRMATION:e=>{const{normalize:t}=e;return t(["Confirmation"])},DAY:e=>{const{normalize:t,plural:n}=e;return n([t(["jour"]),t(["jours"])])},HOME:e=>{const{normalize:t}=e;return t(["Accueil"])},HERE:e=>{const{normalize:t}=e;return t(["ici"])},SELECTS:{ORDER_BY:{LABEL:e=>{const{normalize:t}=e;return t(["trier par "])}},ORDER:{LABEL:e=>{const{normalize:t}=e;return t(["tri"])},ASC:e=>{const{normalize:t}=e;return t(["ascendant"])},DESC:e=>{const{normalize:t}=e;return t(["descendant"])}},PER_PAGE:{LABEL:e=>{const{normalize:t}=e;return t(["par page"])}}},"TOTAL ":e=>{const{normalize:t}=e;return t(["Total"])}},i={DASHBOARD:e=>{const{normalize:t}=e;return t(["Tableau de Bord"])},THIS_MONTH:e=>{const{normalize:t}=e;return t(["Ce mois"])}},s={UNKNOWN:e=>{const{normalize:t}=e;return t(["Erreur. Veuillez réessayer ou contacter l'administrateur."])},APP_ERROR:e=>{const{normalize:t}=e;return t(["L'application semble rencontrer quelques problèmes.
Veuillez réessayer plus tard ou contacter l'administrateur."])},NOT_FOUND:{PAGE:e=>{const{normalize:t}=e;return t(["Page introuvable"])},WORKOUT:e=>{const{normalize:t}=e;return t(["Séance introuvable"])}}},l={"Cycling (Sport)":{LABEL:e=>{const{normalize:t}=e;return t(["Vélo (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:t}=e;return t(["Vélo (Transport)"])}},Hiking:{LABEL:e=>{const{normalize:t}=e;return t(["Randonnée"])}},"Mountain Biking":{LABEL:e=>{const{normalize:t}=e;return t(["VTT"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:t}=e;return t(["VTT (Electrique)"])}},Rowing:{LABEL:e=>{const{normalize:t}=e;return t(["Aviron"])}},Running:{LABEL:e=>{const{normalize:t}=e;return t(["Course"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:t}=e;return t(["Ski (Alpin)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:t}=e;return t(["Ski (Randonnée)"])}},Trail:{LABEL:e=>{const{normalize:t}=e;return t(["Trail"])}},Walking:{LABEL:e=>{const{normalize:t}=e;return t(["Marche"])}}},u={STATISTICS:e=>{const{normalize:t}=e;return t(["Statistiques"])},TIME_FRAMES:{week:e=>{const{normalize:t}=e;return t(["semaine"])},month:e=>{const{normalize:t}=e;return t(["mois"])},year:e=>{const{normalize:t}=e;return t(["année"])}}},d={ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:t}=e;return t(["Vous avez déjà un compte ?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:t}=e;return t(["Etes-vous sûr de vouloir supprimer votre compte ? Toutes les données seront définitivement effacés."])},EMAIL:e=>{const{normalize:t}=e;return t(["Email"])},ENTER_EMAIL:e=>{const{normalize:t}=e;return t(["Saisir une adresse email"])},ENTER_PASSWORD:e=>{const{normalize:t}=e;return t(["Saisir un mot de passe"])},ENTER_PASSWORD_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Confirmer le mot de passe"])},INVALID_TOKEN:e=>{const{normalize:t}=e;return t(["Jeton invalide, veullez demander une nouvelle réinitialisation de mot de passe."])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Langue"])},LOGIN:e=>{const{normalize:t}=e;return t(["Se connecter"])},LOGOUT:e=>{const{normalize:t}=e;return t(["Se déconnecter"])},PASSWORD:e=>{const{normalize:t}=e;return t(["Mot de passe"])},PASSWORD_CONFIRM:e=>{const{normalize:t}=e;return t(["Confirmation du mot de passe"])},PASSWORD_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Confirmation du mot de passe"])},PASSWORD_FORGOTTEN:e=>{const{normalize:t}=e;return t(["Mot de passe oublié ?"])},PASSWORD_RESET:e=>{const{normalize:t}=e;return t(["Réinitialisation du mot de passe"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:t}=e;return t(["Vérifiez votre boite mail. Si vote adresse est dans notre base de données, vous recevrez un email avec un lien pour réinitialiser votre mot de passe."])},PASSWORD_UPDATED:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Votre mot de passe a été mis à jour. Cliquez ",n(r(0))," pour vous connecter."])},PROFILE:{BACK_TO_PROFILE:e=>{const{normalize:t}=e;return t(["Revenir au profil"])},BIO:e=>{const{normalize:t}=e;return t(["Bio"])},BIRTH_DATE:e=>{const{normalize:t}=e;return t(["Date de naissance"])},EDIT:e=>{const{normalize:t}=e;return t(["Modifier le profil"])},EDIT_PREFERENCES:e=>{const{normalize:t}=e;return t(["Modifier les préférences"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:t}=e;return t(["Premier jour de la semaine"])},FIRST_NAME:e=>{const{normalize:t}=e;return t(["Prénom"])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Langue"])},LAST_NAME:e=>{const{normalize:t}=e;return t(["Nom"])},LOCATION:e=>{const{normalize:t}=e;return t(["Lieu"])},MONDAY:e=>{const{normalize:t}=e;return t(["Lundi"])},PICTURE:e=>{const{normalize:t}=e;return t(["Image de profil"])},PICTURE_EDITION:e=>{const{normalize:t}=e;return t(["Mise à jour de l'image de profil"])},PICTURE_UPDATE:e=>{const{normalize:t}=e;return t(["Mettre à jour l'image"])},PICTURE_REMOVE:e=>{const{normalize:t}=e;return t(["Supprimer"])},PREFERENCES_EDITION:e=>{const{normalize:t}=e;return t(["Mise à jour des préférences"])},PROFILE_EDITION:e=>{const{normalize:t}=e;return t(["Mise à jour du profil"])},REGISTRATION_DATE:e=>{const{normalize:t}=e;return t(["Date d'inscription"])},SUNDAY:e=>{const{normalize:t}=e;return t(["Dimanche"])},TABS:{PICTURE:e=>{const{normalize:t}=e;return t(["image"])},PREFERENCES:e=>{const{normalize:t}=e;return t(["préférences"])},PROFILE:e=>{const{normalize:t}=e;return t(["profil"])}},TIMEZONE:e=>{const{normalize:t}=e;return t(["Fuseau horaire"])}},REGISTER:e=>{const{normalize:t}=e;return t(["S'inscrire"])},REGISTER_DISABLED:e=>{const{normalize:t}=e;return t(["Désolé, les inscriptions sont désactivées."])},RESET_PASSWORD:e=>{const{normalize:t}=e;return t(["Réinitialiser votre mot de passe"])},USER_PICTURE:e=>{const{normalize:t}=e;return t(["photo de l'utilisateur"])},USERNAME:e=>{const{normalize:t}=e;return t(["Nom d'utilisateur"])}},O={ADD_WORKOUT:e=>{const{normalize:t}=e;return t(["Ajouter une séance"])},ANALYSIS:e=>{const{normalize:t}=e;return t(["analyse"])},ASCENT:e=>{const{normalize:t}=e;return t(["dénivelé positif"])},AVERAGE_SPEED:e=>{const{normalize:t}=e;return t(["vitesse moyenne"])},AVE_SPEED:e=>{const{normalize:t}=e;return t(["vitesse moy."])},BACK_TO_WORKOUT:e=>{const{normalize:t}=e;return t(["revenir à la séance"])},DATE:e=>{const{normalize:t}=e;return t(["date"])},DESCENT:e=>{const{normalize:t}=e;return t(["dénivelé négatif"])},DISPLAY_FILTERS:e=>{const{normalize:t}=e;return t(["afficher les filtres"])},DISTANCE:e=>{const{normalize:t}=e;return t(["distance"])},DURATION:e=>{const{normalize:t}=e;return t(["durée"])},EDIT_WORKOUT:e=>{const{normalize:t}=e;return t(["Modifier la séance"])},ELEVATION:e=>{const{normalize:t}=e;return t(["altitude"])},END:e=>{const{normalize:t}=e;return t(["fin"])},FROM:e=>{const{normalize:t}=e;return t(["à partir de"])},GPX_FILE:e=>{const{normalize:t}=e;return t(["fichier .gpx"])},HIDE_FILTERS:e=>{const{normalize:t}=e;return t(["masquer les filtres"])},KM:e=>{const{normalize:t}=e;return t(["km"])},LATEST_WORKOUTS:e=>{const{normalize:t}=e;return t(["Séances récentes"])},LOAD_MORE_WORKOUT:e=>{const{normalize:t}=e;return t(["Charger les séances suivantes"])},MAX_ALTITUDE:e=>{const{normalize:t}=e;return t(["altitude max"])},MAX_FILES:e=>{const{normalize:t}=e;return t(["fichiers max. "])},MAX_SIZE:e=>{const{normalize:t}=e;return t(["taille max. "])},MAX_SPEED:e=>{const{normalize:t}=e;return t(["vitesse max"])},MIN_ALTITUDE:e=>{const{normalize:t}=e;return t(["altitude min"])},NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["Segment suivant"])},NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["Séance suivante"])},NO_DATA_CLEANING:e=>{const{normalize:t}=e;return t(["données issues du fichier gpx, sans correction"])},NO_FILE_PROVIDED:e=>{const{normalize:t}=e;return t(["Pas de fichier fourni"])},NO_FOLDER:e=>{const{normalize:t}=e;return t(["pas de répertoire"])},NO_MAP:e=>{const{normalize:t}=e;return t(["Pas de carte"])},NO_NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["Pas de segment suivant"])},NO_NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["Pas de séance suivante"])},NO_NOTES:e=>{const{normalize:t}=e;return t(["Pas de notes"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["Pas de segment précédent"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["Pas de séance précédente"])},NO_RECORDS:e=>{const{normalize:t}=e;return t(["Pas de records."])},NO_WORKOUTS:e=>{const{normalize:t}=e;return t(["Pas de séances."])},NOTES:e=>{const{normalize:t}=e;return t(["notes"])},PAUSES:e=>{const{normalize:t}=e;return t(["pauses"])},PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["Segment précédent"])},PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["Séance précédente"])},RECORD:e=>{const{normalize:t,plural:n}=e;return n([t(["record"]),t(["records"])])},RECORD_AS:e=>{const{normalize:t}=e;return t(["Vitesse moy."])},RECORD_FD:e=>{const{normalize:t}=e;return t(["Distance la + longue"])},RECORD_LD:e=>{const{normalize:t}=e;return t(["Durée la + longue"])},RECORD_MS:e=>{const{normalize:t}=e;return t(["Vitesse max."])},REMAINING_CHARS:e=>{const{normalize:t}=e;return t(["nombre de caractères restants "])},SEGMENT:e=>{const{normalize:t,plural:n}=e;return n([t(["segment"]),t(["segments"])])},SPEED:e=>{const{normalize:t}=e;return t(["vitesse"])},SPORT:e=>{const{normalize:t,plural:n}=e;return n([t(["sport"]),t(["sports"])])},START:e=>{const{normalize:t}=e;return t(["début"])},TITLE:e=>{const{normalize:t}=e;return t(["titre"])},TO:e=>{const{normalize:t}=e;return t(["jusqu'au"])},TOTAL_DURATION:e=>{const{normalize:t}=e;return t(["durée totale"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:t}=e;return t(["Ajoutez votre première séance !"])},WEATHER:{HUMIDITY:e=>{const{normalize:t}=e;return t(["humidité"])},TEMPERATURE:e=>{const{normalize:t}=e;return t(["température"])},WIND:e=>{const{normalize:t}=e;return t(["vent"])},DARK_SKY:{"clear-day":e=>{const{normalize:t}=e;return t(["ensoleillé"])},"clear-night":e=>{const{normalize:t}=e;return t(["nuit claire"])},cloudy:e=>{const{normalize:t}=e;return t(["nuageux"])},fog:e=>{const{normalize:t}=e;return t(["brouillard"])},"partly-cloudy-day":e=>{const{normalize:t}=e;return t(["partiellement nuageux"])},"partly-cloudy-night":e=>{const{normalize:t}=e;return t(["nuit partiellement nuageuse"])},rain:e=>{const{normalize:t}=e;return t(["pluie"])},sleet:e=>{const{normalize:t}=e;return t(["neige fondue"])},snow:e=>{const{normalize:t}=e;return t(["neige"])},wind:e=>{const{normalize:t}=e;return t(["venteux"])}}},WITH_GPX:e=>{const{normalize:t}=e;return t(["avec un fichier .gpx"])},WITHOUT_GPX:e=>{const{normalize:t}=e;return t(["sans fichier .gpx"])},WORKOUT:e=>{const{normalize:t,plural:n}=e;return n([t(["séance"]),t(["séances"])])},WORKOUT_DATE:e=>{const{normalize:t}=e;return t(["date de la séance"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Etes-vous sûr de vouloir supprimer cette séance ?"])},ZIP_ARCHIVE:e=>{const{normalize:t}=e;return t(["archive .zip"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["ou une archive .zip contenant des fichiers .gpx"])}};t["default"]={admin:r,api:o,buttons:c,common:a,dashboard:i,error:s,sports:l,statistics:u,user:d,workouts:O}},"6d7d":function(e,t,n){"use strict";var r=n("7a23"),o=function(e){return Object(r["pushScopeId"])("data-v-56dc89d4"),e=e(),Object(r["popScopeId"])(),e},c={class:"pagination-center","aria-label":"navigation"},a={class:"pagination"},i=o((function(){return Object(r["createElementVNode"])("i",{class:"fa fa-chevron-left","aria-hidden":"true"},null,-1)})),s={key:0},l=o((function(){return Object(r["createElementVNode"])("i",{class:"fa fa-chevron-right","aria-hidden":"true"},null,-1)}));function u(e,t,n,o,u,d){var O=Object(r["resolveComponent"])("router-link");return Object(r["openBlock"])(),Object(r["createElementBlock"])("nav",c,[Object(r["createElementVNode"])("ul",a,[Object(r["createElementVNode"])("li",{class:Object(r["normalizeClass"])(["page-prev",{disabled:!e.pagination.has_prev}])},[Object(r["createVNode"])(O,{class:"page-link",to:{path:e.path,query:e.getQuery(e.pagination.page,-1)},event:e.pagination.has_prev?"click":"",disabled:!e.pagination.has_prev},{default:Object(r["withCtx"])((function(){return[i,Object(r["createTextVNode"])(" "+Object(r["toDisplayString"])(e.$t("api.PAGINATION.PREVIOUS")),1)]})),_:1},8,["to","event","disabled"])],2),(Object(r["openBlock"])(!0),Object(r["createElementBlock"])(r["Fragment"],null,Object(r["renderList"])(e.rangePagination(e.pagination.pages,e.pagination.page),(function(t){return Object(r["openBlock"])(),Object(r["createElementBlock"])("li",{key:t,class:Object(r["normalizeClass"])(["page",{active:t===e.pagination.page}])},["..."===t?(Object(r["openBlock"])(),Object(r["createElementBlock"])("span",s," ... ")):(Object(r["openBlock"])(),Object(r["createBlock"])(O,{key:1,class:"page-link",to:{path:e.path,query:e.getQuery(+t)}},{default:Object(r["withCtx"])((function(){return[Object(r["createTextVNode"])(Object(r["toDisplayString"])(t),1)]})),_:2},1032,["to"]))],2)})),128)),Object(r["createElementVNode"])("li",{class:Object(r["normalizeClass"])(["page-next",{disabled:!e.pagination.has_next}])},[Object(r["createVNode"])(O,{class:"page-link",to:{path:e.path,query:e.getQuery(e.pagination.page,1)},event:e.pagination.has_next?"click":"",disabled:!e.pagination.has_next},{default:Object(r["withCtx"])((function(){return[Object(r["createTextVNode"])(Object(r["toDisplayString"])(e.$t("api.PAGINATION.NEXT"))+" ",1),l]})),_:1},8,["to","event","disabled"])],2)])])}var d=n("97e5"),O=Object(r["defineComponent"])({name:"Pagination",props:{pagination:{type:Object,required:!0},path:{type:String,required:!0},query:{type:Object,required:!0}},setup:function(e){function t(t,n){var r=Object.assign({},e.query);return r.page=n?t+n:t,r}return{rangePagination:d["b"],getQuery:t}}}),m=(n("1850"),n("6b0d")),E=n.n(m);const p=E()(O,[["render",u],["__scopeId","data-v-56dc89d4"]]);t["a"]=p},"6eb4":function(e,t,n){},"71a7":function(e,t,n){"use strict";var r=n("7a23"),o={id:"user-infos",class:"description-list"},c={class:"user-bio"},a={key:1,class:"profile-buttons"},i={key:2,class:"profile-buttons"};function s(e,t,n,s,l,u){var d=Object(r["resolveComponent"])("Modal");return Object(r["openBlock"])(),Object(r["createElementBlock"])("div",o,[e.displayModal?(Object(r["openBlock"])(),Object(r["createBlock"])(d,{key:0,title:e.$t("common.CONFIRMATION"),message:"admin.CONFIRM_USER_ACCOUNT_DELETION",strongMessage:e.user.username,onConfirmAction:t[0]||(t[0]=function(t){return e.deleteUserAccount(e.user.username)}),onCancelAction:t[1]||(t[1]=function(t){return e.updateDisplayModal(!1)})},null,8,["title","strongMessage"])):Object(r["createCommentVNode"])("",!0),Object(r["createElementVNode"])("dl",null,[Object(r["createElementVNode"])("dt",null,Object(r["toDisplayString"])(e.$t("user.PROFILE.REGISTRATION_DATE"))+":",1),Object(r["createElementVNode"])("dd",null,Object(r["toDisplayString"])(e.registrationDate),1),Object(r["createElementVNode"])("dt",null,Object(r["toDisplayString"])(e.$t("user.PROFILE.FIRST_NAME"))+":",1),Object(r["createElementVNode"])("dd",null,Object(r["toDisplayString"])(e.user.first_name),1),Object(r["createElementVNode"])("dt",null,Object(r["toDisplayString"])(e.$t("user.PROFILE.LAST_NAME"))+":",1),Object(r["createElementVNode"])("dd",null,Object(r["toDisplayString"])(e.user.last_name),1),Object(r["createElementVNode"])("dt",null,Object(r["toDisplayString"])(e.$t("user.PROFILE.BIRTH_DATE"))+":",1),Object(r["createElementVNode"])("dd",null,Object(r["toDisplayString"])(e.birthDate),1),Object(r["createElementVNode"])("dt",null,Object(r["toDisplayString"])(e.$t("user.PROFILE.LOCATION"))+":",1),Object(r["createElementVNode"])("dd",null,Object(r["toDisplayString"])(e.user.location),1),Object(r["createElementVNode"])("dt",null,Object(r["toDisplayString"])(e.$t("user.PROFILE.BIO"))+":",1),Object(r["createElementVNode"])("dd",c,Object(r["toDisplayString"])(e.user.bio),1)]),e.fromAdmin?(Object(r["openBlock"])(),Object(r["createElementBlock"])("div",a,[e.authUser.username!==e.user.username?(Object(r["openBlock"])(),Object(r["createElementBlock"])("button",{key:0,class:"danger",onClick:t[2]||(t[2]=Object(r["withModifiers"])((function(t){return e.updateDisplayModal(!0)}),["prevent"]))},Object(r["toDisplayString"])(e.$t("admin.DELETE_USER")),1)):Object(r["createCommentVNode"])("",!0),Object(r["createElementVNode"])("button",{onClick:t[3]||(t[3]=function(t){return e.$router.go(-1)})},Object(r["toDisplayString"])(e.$t("buttons.BACK")),1)])):(Object(r["openBlock"])(),Object(r["createElementBlock"])("div",i,[Object(r["createElementVNode"])("button",{onClick:t[4]||(t[4]=function(t){return e.$router.push("/profile/edit")})},Object(r["toDisplayString"])(e.$t("user.PROFILE.EDIT")),1),Object(r["createElementVNode"])("button",{onClick:t[5]||(t[5]=function(t){return e.$router.push("/")})},Object(r["toDisplayString"])(e.$t("common.HOME")),1)]))])}var l=n("b166"),u=n("dad5"),d=n("2906"),O=Object(r["defineComponent"])({name:"UserInfos",props:{user:{type:Object,required:!0},fromAdmin:{type:Boolean,default:!1}},setup:function(e){var t=Object(d["a"])(),n=Object(r["computed"])((function(){return t.getters[u["a"].GETTERS.AUTH_USER_PROFILE]})),o=Object(r["computed"])((function(){return e.user.created_at?Object(l["a"])(new Date(e.user.created_at),"dd/MM/yyyy HH:mm"):""})),c=Object(r["computed"])((function(){return e.user.birth_date?Object(l["a"])(new Date(e.user.birth_date),"dd/MM/yyyy"):""})),a=Object(r["ref"])(!1);function i(e){a.value=e}function s(e){t.dispatch(u["a"].ACTIONS.DELETE_ACCOUNT,{username:e})}return{authUser:n,birthDate:c,displayModal:a,registrationDate:o,deleteUserAccount:s,updateDisplayModal:i}}}),m=(n("4c14"),n("6b0d")),E=n.n(m);const p=E()(O,[["render",s],["__scopeId","data-v-17c7b32c"]]);t["a"]=p},"79e1":function(e,t,n){"use strict";n("851f")},"7ffe":function(e,t,n){"use strict";n("9f54")},8384:function(e,t,n){},"851f":function(e,t,n){},"85fa":function(e,t,n){"use strict";n("0a59")},"8f8e":function(e,t,n){},"90b9":function(e,t,n){},9176:function(e,t,n){"use strict";n("99af"),n("4e82");var r=n("7a23"),o={class:"table-selects"},c=["value"],a=["value"],i=["value"],s=["value"],l=["value"],u=["value"];function d(e,t,n,d,O,m){return Object(r["openBlock"])(),Object(r["createElementBlock"])("div",o,[Object(r["createElementVNode"])("label",null,[Object(r["createTextVNode"])(Object(r["toDisplayString"])(e.$t("common.SELECTS.ORDER_BY.LABEL"))+": ",1),Object(r["createElementVNode"])("select",{name:"order_by",id:"order_by",value:e.query.order_by,onChange:t[0]||(t[0]=function(){return e.onSelectUpdate&&e.onSelectUpdate.apply(e,arguments)})},[(Object(r["openBlock"])(!0),Object(r["createElementBlock"])(r["Fragment"],null,Object(r["renderList"])(e.order_by,(function(t){return Object(r["openBlock"])(),Object(r["createElementBlock"])("option",{value:t,key:t},Object(r["toDisplayString"])(e.$t("".concat(e.message,".").concat(t.toUpperCase()))),9,a)})),128))],40,c)]),Object(r["createElementVNode"])("label",null,[Object(r["createTextVNode"])(Object(r["toDisplayString"])(e.$t("common.SELECTS.ORDER.LABEL"))+": ",1),Object(r["createElementVNode"])("select",{name:"order",id:"order",value:e.query.order,onChange:t[1]||(t[1]=function(){return e.onSelectUpdate&&e.onSelectUpdate.apply(e,arguments)})},[(Object(r["openBlock"])(!0),Object(r["createElementBlock"])(r["Fragment"],null,Object(r["renderList"])(e.sort,(function(t){return Object(r["openBlock"])(),Object(r["createElementBlock"])("option",{value:t,key:t},Object(r["toDisplayString"])(e.$t("common.SELECTS.ORDER.".concat(t.toUpperCase()))),9,s)})),128))],40,i)]),Object(r["createElementVNode"])("label",null,[Object(r["createTextVNode"])(Object(r["toDisplayString"])(e.$t("common.SELECTS.PER_PAGE.LABEL"))+": ",1),Object(r["createElementVNode"])("select",{name:"per_page",id:"per_page",value:e.query.per_page,onChange:t[2]||(t[2]=function(){return e.onSelectUpdate&&e.onSelectUpdate.apply(e,arguments)})},[(Object(r["openBlock"])(!0),Object(r["createElementBlock"])(r["Fragment"],null,Object(r["renderList"])(e.per_page,(function(e){return Object(r["openBlock"])(),Object(r["createElementBlock"])("option",{value:e,key:e},Object(r["toDisplayString"])(e),9,u)})),128))],40,l)])])}var O=Object(r["defineComponent"])({name:"FilterSelects",props:{order_by:{type:Object,required:!0},query:{type:Object,required:!0},sort:{type:Object,required:!0},message:{type:String,required:!0}},emits:["updateSelect"],setup:function(e,t){var n=t.emit;function r(e){n("updateSelect",e.target.id,e.target.value)}return{per_page:[10,25,50,100],onSelectUpdate:r}}}),m=(n("79e1"),n("6b0d")),E=n.n(m);const p=E()(O,[["render",d],["__scopeId","data-v-50c78582"]]);t["a"]=p},9242:function(e,t,n){"use strict";n("ee25")},"92d6":function(e,t,n){},"95ba":function(e,t,n){"use strict";n("6eb4")},"97e5":function(e,t,n){"use strict";n.d(t,"c",(function(){return r})),n.d(t,"a",(function(){return s})),n.d(t,"d",(function(){return l})),n.d(t,"b",(function(){return d}));n("caad"),n("2532"),n("a630"),n("3ca3"),n("99af");var r=["asc","desc"],o=1,c=10,a=function(e,t){return e&&"string"===typeof e&&+e>0?+e:t},i=function(e,t,n){return e&&"string"===typeof e&&t.includes(e)?e:n},s=function(e,t,n,s){var l=s||{},u=l.defaultSort||"asc",d={};return d.page=a(e.page,o),d.per_page=a(e.per_page,c),d.order=i(e.order,r,u),d.order_by=i(e.order_by,t,n),d},l=["from","to","ave_speed_from","ave_speed_to","max_speed_from","max_speed_to","distance_from","distance_to","duration_from","duration_to","sport_id"],u=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return Array.from({length:e-t+1},(function(e,n){return t+n}))},d=function(e,t){if(e<0)return[];if(e<9)return u(e);var n=[1,2];return t<4?n=n.concat([3,4,5]):t<6?n=n.concat(u(t+2,3)):(n=n.concat(["..."]),t=e-2&&n[n.length-1]{const{normalize:t}=e;return t(["Action"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Add/remove admin rights, delete user account."])},ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ADMINISTRATION:e=>{const{normalize:t}=e;return t(["Administration"])},APPLICATION:e=>{const{normalize:t}=e;return t(["Application"])},APP_CONFIG:{MAX_USERS_LABEL:e=>{const{normalize:t}=e;return t(["Max. number of active users"])},MAX_USERS_HELP:e=>{const{normalize:t}=e;return t(["If 0, no limitation on registration."])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:t}=e;return t(["Max. files of zip archive"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Max. size of uploaded files (in Mb)"])},TITLE:e=>{const{normalize:t}=e;return t(["Application configuration"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Max. size of zip archive (in Mb)"])}},BACK_TO_ADMIN:e=>{const{normalize:t}=e;return t(["Back to admin"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Are you sure you want to delete ",n(r(0))," account? All data will be deleted, this cannot be undone."])},DELETE_USER:e=>{const{normalize:t}=e;return t(["Delete user"])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:t}=e;return t(["Enable/disable sports."])},REGISTRATION_DISABLED:e=>{const{normalize:t}=e;return t(["Registration is currently disabled."])},REGISTRATION_ENABLED:e=>{const{normalize:t}=e;return t(["Registration is currently enabled."])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:t}=e;return t(["Active"])},HAS_WORKOUTS:e=>{const{normalize:t}=e;return t(["workouts exist"])},IMAGE:e=>{const{normalize:t}=e;return t(["Image"])},LABEL:e=>{const{normalize:t}=e;return t(["Label"])}},TITLE:e=>{const{normalize:t}=e;return t(["Sports administration"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:t}=e;return t(["Update application configuration (maximum number of registered users, maximum files size)."])},USER:e=>{const{normalize:t,plural:n}=e;return n([t(["user"]),t(["users"])])},USERS:{TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Add admin rights"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Remove admin rights"])}},SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:t}=e;return t(["admin status"])},CREATED_AT:e=>{const{normalize:t}=e;return t(["registration date"])},USERNAME:e=>{const{normalize:t}=e;return t(["username"])},WORKOUTS_COUNT:e=>{const{normalize:t}=e;return t(["workout count"])}}}}},o={ERROR:{UNKNOWN:e=>{const{normalize:t}=e;return t(["Error. Please try again or contact the administrator."])},"email: valid email must be provided":e=>{const{normalize:t}=e;return t(["Email: valid email must be provided."])},"error on getting configuration":e=>{const{normalize:t}=e;return t(["Error on getting configuration."])},"error when updating configuration":e=>{const{normalize:t}=e;return t(["Error when updating configuration"])},"error, please try again or contact the administrator":e=>{const{normalize:t}=e;return t(["Error, please try again or contact the administrator."])},"error, registration is disabled":e=>{const{normalize:t}=e;return t(["Error, registration is disabled."])},"file extension not allowed":e=>{const{normalize:t}=e;return t(["File extension not allowed."])},"file size is greater than the allowed size":e=>{const{normalize:t}=e;return t(["File size is greater than the allowed size."])},"invalid credentials":e=>{const{normalize:t}=e;return t(["Invalid credentials."])},"invalid payload":e=>{const{normalize:t}=e;return t(["Provided data are invalid."])},"invalid token, please log in again":e=>{const{normalize:t}=e;return t(["Invalid token, please log in again."])},"invalid token, please request a new token":e=>{const{normalize:t}=e;return t(["Invalid token, please log in again."])},"Network Error":e=>{const{normalize:t}=e;return t(["Network Error."])},"no file part":e=>{const{normalize:t}=e;return t(["No file provided."])},"no selected file":e=>{const{normalize:t}=e;return t(["No selected file."])},"password: password and password confirmation do not match":e=>{const{normalize:t}=e;return t(["Password: password and password confirmation don't match."])},"provide a valid auth token":e=>{const{normalize:t}=e;return t(["Provide a valid auth token."])},"password: 8 characters required":e=>{const{normalize:t}=e;return t(["Password: 8 characters required."])},"sorry, that user already exists":e=>{const{normalize:t}=e;return t(["Sorry, that user already exists."])},"sport does not exist":e=>{const{normalize:t}=e;return t(["Sport does not exist."])},"signature expired, please log in again":e=>{const{normalize:t}=e;return t(["Signature expired. Please log in again."])},"successfully registered":e=>{const{normalize:t}=e;return t(["Successfully registered."])},"user does not exist":e=>{const{normalize:t}=e;return t(["User does not exist."])},"username: 3 to 12 characters required":e=>{const{normalize:t}=e;return t(["Username: 3 to 12 characters required."])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:t}=e;return t(["You can not delete your account, no other user has admin rights."])},"you do not have permissions":e=>{const{normalize:t}=e;return t(["You do not have permissions."])}},PAGINATION:{PREVIOUS:e=>{const{normalize:t}=e;return t(["previous"])},NEXT:e=>{const{normalize:t}=e;return t(["next"])}}},c={BACK:e=>{const{normalize:t}=e;return t(["Back"])},CANCEL:e=>{const{normalize:t}=e;return t(["Cancel"])},CLEAR_FILTER:e=>{const{normalize:t}=e;return t(["Clear filters"])},DELETE_MY_ACCOUNT:e=>{const{normalize:t}=e;return t(["Delete my account"])},DISABLE:e=>{const{normalize:t}=e;return t(["Disable"])},EDIT:e=>{const{normalize:t}=e;return t(["Edit"])},ENABLE:e=>{const{normalize:t}=e;return t(["Enable"])},FILTER:e=>{const{normalize:t}=e;return t(["Filter"])},LOGIN:e=>{const{normalize:t}=e;return t(["Log in"])},NO:e=>{const{normalize:t}=e;return t(["No"])},REGISTER:e=>{const{normalize:t}=e;return t(["Register"])},SUBMIT:e=>{const{normalize:t}=e;return t(["Submit"])},YES:e=>{const{normalize:t}=e;return t(["Yes"])}},a={CONFIRMATION:e=>{const{normalize:t}=e;return t(["Confirmation"])},DAY:e=>{const{normalize:t,plural:n}=e;return n([t(["day"]),t(["days"])])},HOME:e=>{const{normalize:t}=e;return t(["Home"])},HERE:e=>{const{normalize:t}=e;return t(["here"])},SELECTS:{ORDER_BY:{LABEL:e=>{const{normalize:t}=e;return t(["order by"])}},ORDER:{LABEL:e=>{const{normalize:t}=e;return t(["sort"])},ASC:e=>{const{normalize:t}=e;return t(["ascending"])},DESC:e=>{const{normalize:t}=e;return t(["descending"])}},PER_PAGE:{LABEL:e=>{const{normalize:t}=e;return t(["par page"])}}},TOTAL:e=>{const{normalize:t}=e;return t(["Total"])}},i={DASHBOARD:e=>{const{normalize:t}=e;return t(["Dashboard"])},THIS_MONTH:e=>{const{normalize:t}=e;return t(["This month"])}},s={UNKNOWN:e=>{const{normalize:t}=e;return t(["Error. Please try again or contact the administrator."])},APP_ERROR:e=>{const{normalize:t}=e;return t(["The application seems encounter some issues.
Please try later or contact the administrator."])},NOT_FOUND:{PAGE:e=>{const{normalize:t}=e;return t(["Page not found"])},WORKOUT:e=>{const{normalize:t}=e;return t(["Workout not found"])}}},l={"Cycling (Sport)":{LABEL:e=>{const{normalize:t}=e;return t(["Cycling (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:t}=e;return t(["Cycling (Transport)"])}},Hiking:{LABEL:e=>{const{normalize:t}=e;return t(["Hiking"])}},"Mountain Biking":{LABEL:e=>{const{normalize:t}=e;return t(["Mountain Biking"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:t}=e;return t(["Mountain Biking (Electric)"])}},Rowing:{LABEL:e=>{const{normalize:t}=e;return t(["Rowing"])}},Running:{LABEL:e=>{const{normalize:t}=e;return t(["Running"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:t}=e;return t(["Skiing (Alpine)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:t}=e;return t(["Skiing (Cross Country)"])}},Trail:{LABEL:e=>{const{normalize:t}=e;return t(["Trail"])}},Walking:{LABEL:e=>{const{normalize:t}=e;return t(["Walking"])}}},u={STATISTICS:e=>{const{normalize:t}=e;return t(["Statistics"])},TIME_FRAMES:{week:e=>{const{normalize:t}=e;return t(["week"])},month:e=>{const{normalize:t}=e;return t(["month"])},year:e=>{const{normalize:t}=e;return t(["year"])}}},d={ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:t}=e;return t(["Already have an account?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:t}=e;return t(["Are you sure you want to delete your account? All data will be deleted, this cannot be undone"])},EMAIL:e=>{const{normalize:t}=e;return t(["Email"])},ENTER_EMAIL:e=>{const{normalize:t}=e;return t(["Enter an email address"])},ENTER_PASSWORD:e=>{const{normalize:t}=e;return t(["Enter a password"])},ENTER_PASSWORD_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Confirm the password"])},INVALID_TOKEN:e=>{const{normalize:t}=e;return t(["Invalid token, please request a new password reset."])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Language"])},LOGIN:e=>{const{normalize:t}=e;return t(["Login"])},LOGOUT:e=>{const{normalize:t}=e;return t(["Logout"])},PASSWORD:e=>{const{normalize:t}=e;return t(["Password"])},PASSWORD_CONFIRM:e=>{const{normalize:t}=e;return t(["Confirm Password"])},PASSWORD_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Password confirmation"])},PASSWORD_FORGOTTEN:e=>{const{normalize:t}=e;return t(["Forgot password?"])},PASSWORD_RESET:e=>{const{normalize:t}=e;return t(["Password reset"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:t}=e;return t(["Check your email. If your address is in our database, you'll received an email with a link to reset your password."])},PASSWORD_UPDATED:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Your password have been updated. Click ",n(r(0))," to log in."])},PROFILE:{BACK_TO_PROFILE:e=>{const{normalize:t}=e;return t(["Back to profile"])},BIO:e=>{const{normalize:t}=e;return t(["Bio"])},BIRTH_DATE:e=>{const{normalize:t}=e;return t(["Birth date"])},EDIT:e=>{const{normalize:t}=e;return t(["Edit profile"])},EDIT_PREFERENCES:e=>{const{normalize:t}=e;return t(["Edit preferences"])},FIRST_NAME:e=>{const{normalize:t}=e;return t(["First name"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:t}=e;return t(["First day of week"])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Language"])},LAST_NAME:e=>{const{normalize:t}=e;return t(["Last name"])},LOCATION:e=>{const{normalize:t}=e;return t(["Location"])},MONDAY:e=>{const{normalize:t}=e;return t(["Monday"])},PICTURE:e=>{const{normalize:t}=e;return t(["Picture"])},PICTURE_EDITION:e=>{const{normalize:t}=e;return t(["Picture edition"])},PICTURE_UPDATE:e=>{const{normalize:t}=e;return t(["Update picture"])},PICTURE_REMOVE:e=>{const{normalize:t}=e;return t(["Remove picture"])},PREFERENCES_EDITION:e=>{const{normalize:t}=e;return t(["Preferences edition"])},PROFILE_EDITION:e=>{const{normalize:t}=e;return t(["Profile edition"])},REGISTRATION_DATE:e=>{const{normalize:t}=e;return t(["Registration date"])},SUNDAY:e=>{const{normalize:t}=e;return t(["Sunday"])},TABS:{PICTURE:e=>{const{normalize:t}=e;return t(["picture"])},PREFERENCES:e=>{const{normalize:t}=e;return t(["preferences"])},PROFILE:e=>{const{normalize:t}=e;return t(["profile"])}},TIMEZONE:e=>{const{normalize:t}=e;return t(["Timezone"])}},REGISTER:e=>{const{normalize:t}=e;return t(["Register"])},REGISTER_DISABLED:e=>{const{normalize:t}=e;return t(["Sorry, registration is disabled."])},RESET_PASSWORD:e=>{const{normalize:t}=e;return t(["Reset your password"])},USER_PICTURE:e=>{const{normalize:t}=e;return t(["user picture"])},USERNAME:e=>{const{normalize:t}=e;return t(["Username"])}},O={ADD_WORKOUT:e=>{const{normalize:t}=e;return t(["Add a workout"])},ANALYSIS:e=>{const{normalize:t}=e;return t(["analysis"])},ASCENT:e=>{const{normalize:t}=e;return t(["ascent"])},AVE_SPEED:e=>{const{normalize:t}=e;return t(["ave. speed"])},AVERAGE_SPEED:e=>{const{normalize:t}=e;return t(["average speed"])},BACK_TO_WORKOUT:e=>{const{normalize:t}=e;return t(["back to workout"])},DATE:e=>{const{normalize:t}=e;return t(["date"])},DESCENT:e=>{const{normalize:t}=e;return t(["descent"])},DISPLAY_FILTERS:e=>{const{normalize:t}=e;return t(["display filters"])},DISTANCE:e=>{const{normalize:t}=e;return t(["distance"])},DURATION:e=>{const{normalize:t}=e;return t(["duration"])},EDIT_WORKOUT:e=>{const{normalize:t}=e;return t(["Edit the workout"])},ELEVATION:e=>{const{normalize:t}=e;return t(["elevation"])},END:e=>{const{normalize:t}=e;return t(["end"])},FROM:e=>{const{normalize:t}=e;return t(["from"])},GPX_FILE:e=>{const{normalize:t}=e;return t([".gpx file"])},HIDE_FILTERS:e=>{const{normalize:t}=e;return t(["hide filters"])},KM:e=>{const{normalize:t}=e;return t(["km"])},LATEST_WORKOUTS:e=>{const{normalize:t}=e;return t(["Latest workouts"])},LOAD_MORE_WORKOUT:e=>{const{normalize:t}=e;return t(["Load more workouts"])},MAX_ALTITUDE:e=>{const{normalize:t}=e;return t(["max. altitude"])},MAX_FILES:e=>{const{normalize:t}=e;return t(["max files"])},MAX_SIZE:e=>{const{normalize:t}=e;return t(["max size"])},MAX_SPEED:e=>{const{normalize:t}=e;return t(["max. speed"])},MIN_ALTITUDE:e=>{const{normalize:t}=e;return t(["min. altitude"])},NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["No next segment"])},NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["Next workout"])},NO_DATA_CLEANING:e=>{const{normalize:t}=e;return t(["data from gpx, without any cleaning"])},NO_FILE_PROVIDED:e=>{const{normalize:t}=e;return t(["No file provided"])},NO_FOLDER:e=>{const{normalize:t}=e;return t(["no folder inside"])},NO_MAP:e=>{const{normalize:t}=e;return t(["No map"])},NO_NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["No next segment"])},NO_NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["No next workout"])},NO_NOTES:e=>{const{normalize:t}=e;return t(["No notes"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["No previous segment"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["No previous workout"])},NO_RECORDS:e=>{const{normalize:t}=e;return t(["No records."])},NO_WORKOUTS:e=>{const{normalize:t}=e;return t(["No workouts."])},NOTES:e=>{const{normalize:t}=e;return t(["notes"])},PAUSES:e=>{const{normalize:t}=e;return t(["pauses"])},PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["Previous segment"])},PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["Previous workout"])},RECORD:e=>{const{normalize:t,plural:n}=e;return n([t(["record"]),t(["records"])])},RECORD_AS:e=>{const{normalize:t}=e;return t(["Ave. speed"])},RECORD_FD:e=>{const{normalize:t}=e;return t(["Farest distance"])},RECORD_LD:e=>{const{normalize:t}=e;return t(["Longest duration"])},RECORD_MS:e=>{const{normalize:t}=e;return t(["Max. speed"])},REMAINING_CHARS:e=>{const{normalize:t}=e;return t(["remaining characters"])},SEGMENT:e=>{const{normalize:t,plural:n}=e;return n([t(["segment"]),t(["segments"])])},SPEED:e=>{const{normalize:t}=e;return t(["speed"])},SPORT:e=>{const{normalize:t,plural:n}=e;return n([t(["sport"]),t(["sports"])])},START:e=>{const{normalize:t}=e;return t(["start"])},TITLE:e=>{const{normalize:t}=e;return t(["title"])},TO:e=>{const{normalize:t}=e;return t(["to"])},TOTAL_DURATION:e=>{const{normalize:t}=e;return t(["total duration"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:t}=e;return t(["Upload one!"])},WEATHER:{HUMIDITY:e=>{const{normalize:t}=e;return t(["humidity"])},TEMPERATURE:e=>{const{normalize:t}=e;return t(["temperature"])},WIND:e=>{const{normalize:t}=e;return t(["wind"])},DARK_SKY:{"clear-day":e=>{const{normalize:t}=e;return t(["clear day"])},"clear-night":e=>{const{normalize:t}=e;return t(["clear night"])},cloudy:e=>{const{normalize:t}=e;return t(["cloudy"])},fog:e=>{const{normalize:t}=e;return t(["fog"])},"partly-cloudy-day":e=>{const{normalize:t}=e;return t(["partly cloudy day"])},"partly-cloudy-night":e=>{const{normalize:t}=e;return t(["partly cloudy night"])},rain:e=>{const{normalize:t}=e;return t(["rain"])},sleet:e=>{const{normalize:t}=e;return t(["sleet"])},snow:e=>{const{normalize:t}=e;return t(["snow"])},wind:e=>{const{normalize:t}=e;return t(["wind"])}}},WITH_GPX:e=>{const{normalize:t}=e;return t(["with .gpx file"])},WITHOUT_GPX:e=>{const{normalize:t}=e;return t(["without .gpx file"])},WORKOUT:e=>{const{normalize:t,plural:n}=e;return n([t(["workout"]),t(["workouts"])])},WORKOUT_DATE:e=>{const{normalize:t}=e;return t(["workout date"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Are you sure you want to delete this workout?"])},ZIP_ARCHIVE:e=>{const{normalize:t}=e;return t([".zip file"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["or .zip file containing .gpx files"])}};t["default"]={admin:r,api:o,buttons:c,common:a,dashboard:i,error:s,sports:l,statistics:u,user:d,workouts:O}},c364:function(e,t,n){"use strict";n.d(t,"b",(function(){return o})),n.d(t,"a",(function(){return c}));n("b680"),n("99af");var r=["bytes","KB","MB","GB","TB"],o=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=Math.floor(Math.log(e)/Math.log(1024));if(!e)return t?"0 bytes":{size:"0",suffix:"bytes"};var o=(e/Math.pow(1024,n)).toFixed(1),c=r[n];return t?"".concat(o).concat(c):{size:o,suffix:c}},c=function(e){var t=e/1048576;return+t.toFixed(2)}},c46a:function(e,t,n){"use strict";var r=n("7a23"),o={class:"user-picture"},c=["alt","src"],a={key:1,class:"no-picture"},i=Object(r["createElementVNode"])("i",{class:"fa fa-user-circle-o","aria-hidden":"true"},null,-1),s=[i];function l(e,t,n,i,l,u){return Object(r["openBlock"])(),Object(r["createElementBlock"])("div",o,[""!==e.authUserPictureUrl?(Object(r["openBlock"])(),Object(r["createElementBlock"])("img",{key:0,class:"profile-user-img",alt:e.$t("user.USER_PICTURE"),src:e.authUserPictureUrl},null,8,c)):(Object(r["openBlock"])(),Object(r["createElementBlock"])("div",a,s))])}n("99af");var u=n("d257"),d=Object(r["defineComponent"])({name:"UserPicture",props:{user:{type:Object,required:!0}},setup:function(e){return{authUserPictureUrl:Object(r["computed"])((function(){return e.user.picture?"".concat(Object(u["a"])(),"users/").concat(e.user.username,"/picture"):""}))}}}),O=(n("13dc"),n("6b0d")),m=n.n(O);const E=m()(d,[["render",l]]);t["a"]=E},c75e:function(e,t,n){},cabe:function(e,t,n){},cbea:function(e,t,n){"use strict";n("fb41")},cd49:function(e,t,n){"use strict";n.r(t);n("e260"),n("e6cf"),n("cca6"),n("a79d"),n("d3b7"),n("159b"),n("b0c0");var r=n("9b4a"),o=n("d9fa"),c=n("7a23"),a=n("9483");Object(a["a"])("".concat("/","service-worker.js"),{ready:function(){console.log("App is being served from cache by a service worker.\nFor more details, visit https://goo.gl/AFskqB")},registered:function(){console.log("Service worker has been registered.")},cached:function(){console.log("Content has been cached for offline use.")},updatefound:function(){console.log("New content is downloading.")},updated:function(){console.log("New content is available; please refresh.")},offline:function(){console.log("No internet connection found. App is running in offline mode.")},error:function(e){console.error("Error during service worker registration:",e)}});var i=function(e){return Object(c["pushScopeId"])("data-v-317a6409"),e=e(),Object(c["popScopeId"])(),e},s=i((function(){return Object(c["createElementVNode"])("div",{id:"top"},null,-1)})),l={key:0,class:"app-container"},u={class:"app-loading"},d={class:"container scroll"},O=i((function(){return Object(c["createElementVNode"])("i",{class:"fa fa-chevron-up","aria-hidden":"true"},null,-1)})),m=[O];function E(e,t,n,r,o,a){var i=Object(c["resolveComponent"])("NavBar"),O=Object(c["resolveComponent"])("Loader"),E=Object(c["resolveComponent"])("router-view"),p=Object(c["resolveComponent"])("NoConfig"),b=Object(c["resolveComponent"])("Footer");return Object(c["openBlock"])(),Object(c["createElementBlock"])(c["Fragment"],null,[s,Object(c["createVNode"])(i,{onMenuInteraction:e.updateHideScrollBar},null,8,["onMenuInteraction"]),e.appLoading?(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",l,[Object(c["createElementVNode"])("div",u,[Object(c["createVNode"])(O)])])):(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",{key:1,class:Object(c["normalizeClass"])(["app-container",{"hide-scroll":e.hideScrollBar}])},[e.appConfig?(Object(c["openBlock"])(),Object(c["createBlock"])(E,{key:0})):(Object(c["openBlock"])(),Object(c["createBlock"])(p,{key:1}))],2)),Object(c["createElementVNode"])("div",d,[Object(c["createElementVNode"])("div",{class:Object(c["normalizeClass"])(["scroll-button",{"display-button":e.displayScrollButton}]),onClick:t[0]||(t[0]=function(){return e.scrollToTop&&e.scrollToTop.apply(e,arguments)})},m,2)]),e.appConfig?(Object(c["openBlock"])(),Object(c["createBlock"])(b,{key:2,version:e.appConfig?e.appConfig.version:""},null,8,["version"])):Object(c["createCommentVNode"])("",!0)],64)}var p=function(e){return Object(c["pushScopeId"])("data-v-36297652"),e=e(),Object(c["popScopeId"])(),e},b={id:"footer"},T={class:"footer-items"},S={class:"footer-item"},f=p((function(){return Object(c["createElementVNode"])("strong",null,"FitTrackee",-1)})),_=Object(c["createStaticVNode"])('',4);function j(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",b,[Object(c["createElementVNode"])("div",T,[Object(c["createElementVNode"])("div",S,[f,Object(c["createTextVNode"])(" v"+Object(c["toDisplayString"])(e.version),1)]),_])])}var A=Object(c["defineComponent"])({name:"Footer",props:{version:{type:String,required:!0}}}),N=(n("fa79"),n("6b0d")),g=n.n(N);const R=g()(A,[["render",j],["__scopeId","data-v-36297652"]]);var I=R,U=function(e){return Object(c["pushScopeId"])("data-v-9d3d8adc"),e=e(),Object(c["popScopeId"])(),e},v={id:"nav"},h={class:"nav-container"},D={class:"nav-app-name"},C={class:"nav-items-close"},k=U((function(){return Object(c["createElementVNode"])("div",{class:"app-name"},"FitTrackee",-1)})),P={key:0,class:"nav-items-group"},M=U((function(){return Object(c["createElementVNode"])("div",{class:"nav-item nav-separator"},null,-1)})),L={class:"nav-items-user-menu"},z={key:0,class:"nav-items-group"},y={class:"nav-item nav-profile-img"},w={key:1,class:"nav-items-group"},V=U((function(){return Object(c["createElementVNode"])("i",{class:"fa fa-language"},null,-1)}));function B(e,t,n,r,o,a){var i=Object(c["resolveComponent"])("router-link"),s=Object(c["resolveComponent"])("UserPicture"),l=Object(c["resolveComponent"])("Dropdown");return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",v,[Object(c["createElementVNode"])("div",h,[Object(c["createElementVNode"])("div",D,[Object(c["createElementVNode"])("div",{class:"nav-item app-name",onClick:t[0]||(t[0]=function(t){return e.$router.push("/")})}," FitTrackee ")]),Object(c["createElementVNode"])("div",{class:Object(c["normalizeClass"])(["nav-icon-open",{"menu-open":e.isMenuOpen}])},[Object(c["createElementVNode"])("i",{class:"fa fa-bars hamburger-icon",onClick:t[1]||(t[1]=function(t){return e.openMenu()})})],2),Object(c["createElementVNode"])("div",{class:Object(c["normalizeClass"])(["nav-items",{"menu-open":e.isMenuOpen}])},[Object(c["createElementVNode"])("div",C,[k,Object(c["createElementVNode"])("i",{class:Object(c["normalizeClass"])(["fa fa-close close-icon nav-item",{"menu-closed":!e.isMenuOpen}]),onClick:t[2]||(t[2]=function(t){return e.closeMenu()})},null,2)]),Object(c["createElementVNode"])("div",{class:"nav-items-app-menu",onClick:t[3]||(t[3]=function(t){return e.closeMenu()})},[e.isAuthenticated?(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",P,[Object(c["createVNode"])(i,{class:"nav-item",to:"/"},{default:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("dashboard.DASHBOARD")),1)]})),_:1}),Object(c["createVNode"])(i,{class:"nav-item",to:"/workouts"},{default:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.capitalize(e.$t("workouts.WORKOUT",2))),1)]})),_:1}),Object(c["createVNode"])(i,{class:"nav-item",to:"/statistics"},{default:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("statistics.STATISTICS")),1)]})),_:1}),Object(c["createVNode"])(i,{class:"nav-item",to:"/workouts/add"},{default:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("workouts.ADD_WORKOUT")),1)]})),_:1}),e.isAuthenticated&&e.authUser.admin?(Object(c["openBlock"])(),Object(c["createBlock"])(i,{key:0,class:"nav-item",to:"/admin"},{default:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("admin.ADMIN")),1)]})),_:1})):Object(c["createCommentVNode"])("",!0),M])):Object(c["createCommentVNode"])("",!0)]),Object(c["createElementVNode"])("div",L,[e.isAuthenticated?(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",z,[Object(c["createElementVNode"])("div",y,[Object(c["createVNode"])(s,{user:e.authUser},null,8,["user"])]),Object(c["createVNode"])(i,{class:"nav-item",to:"/profile",onClick:e.closeMenu},{default:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.authUser.username),1)]})),_:1},8,["onClick"]),Object(c["createElementVNode"])("div",{class:"nav-item nav-link",onClick:t[4]||(t[4]=function(){return e.logout&&e.logout.apply(e,arguments)})},Object(c["toDisplayString"])(e.$t("user.LOGOUT")),1)])):(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",w,[Object(c["createVNode"])(i,{class:"nav-item",to:"/login",onClick:e.closeMenu},{default:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("user.LOGIN")),1)]})),_:1},8,["onClick"]),Object(c["createVNode"])(i,{class:"nav-item",to:"/register",onClick:e.closeMenu},{default:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("user.REGISTER")),1)]})),_:1},8,["onClick"])])),e.availableLanguages&&e.language?(Object(c["openBlock"])(),Object(c["createBlock"])(l,{key:2,class:"nav-item",options:e.availableLanguages,selected:e.language,onSelected:e.updateLanguage},{default:Object(c["withCtx"])((function(){return[V]})),_:1},8,["options","selected","onSelected"])):Object(c["createCommentVNode"])("",!0)])],2)])])}n("99af"),n("25f0");var G=n("47e2"),x=n("c46a"),F=n("dad5"),W=n("2906"),K=n("d257"),$=(n("d81d"),n("8923")),H=n("d481");n("ddb0"),n("ac1f"),n("466d");function Y(){var e=n("e7b6"),t={};return e.keys().forEach((function(n){var r=n.match(/([A-Za-z0-9-_]+)\./i);if(r&&r.length>1){var o=r[1];t[o]=e(n).default}})),t}var q=Object(G["a"])({legacy:!1,locale:"en",fallbackLocale:"en",globalInjection:!0,messages:Y()}),X={en:$["a"],fr:H["a"]},Z={en:"English",fr:"Français"},Q=q.global.availableLocales,J=Q.map((function(e){return{label:Z[e],value:e}})),ee=Object(c["defineComponent"])({name:"NavBar",components:{UserPicture:x["a"]},emits:["menuInteraction"],setup:function(e,t){var n=t.emit,r=Object(G["b"])(),o=r.locale,a=Object(W["a"])(),i=Object(c["computed"])((function(){return a.getters[F["a"].GETTERS.AUTH_USER_PROFILE]})),s=Object(c["computed"])((function(){return a.getters[F["a"].GETTERS.IS_AUTHENTICATED]})),l=Object(c["computed"])((function(){return s.value&&i.value.picture?"".concat(Object(K["a"])(),"/users/").concat(i.value.username,"/picture?").concat(Date.now()):""})),u=Object(c["computed"])((function(){return a.getters[F["b"].GETTERS.LANGUAGE]})),d=Object(c["ref"])(!1);function O(){d.value=!0,n("menuInteraction",!0)}function m(){d.value=!1,n("menuInteraction",!1)}function E(e){o.value=e.value.toString(),a.commit(F["b"].MUTATIONS.UPDATE_LANG,e.value)}function p(){a.dispatch(F["a"].ACTIONS.LOGOUT)}return{availableLanguages:J,authUser:i,authUserPictureUrl:l,isAuthenticated:s,isMenuOpen:d,language:u,capitalize:c["capitalize"],openMenu:O,closeMenu:m,updateLanguage:E,logout:p}}});n("9242");const te=g()(ee,[["render",B],["__scopeId","data-v-9d3d8adc"]]);var ne=te,re={id:"no-config"},oe={class:"error-page"},ce=Object(c["createStaticVNode"])('
',1),ae=["innerHTML"];function ie(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",re,[Object(c["createElementVNode"])("div",oe,[ce,Object(c["createElementVNode"])("p",{class:"error-message",innerHTML:e.$t("error.APP_ERROR")},null,8,ae)])])}var se=Object(c["defineComponent"])({name:"NoConfig",setup:function(){var e=Object(G["b"])(),t=e.t;return{t:t}}});n("f037");const le=g()(se,[["render",ie],["__scopeId","data-v-01d4a985"]]);var ue=le,de=Object(c["defineComponent"])({name:"App",components:{Footer:I,NavBar:ne,NoConfig:ue},setup:function(){var e=Object(W["a"])(),t=Object(c["computed"])((function(){return e.getters[F["b"].GETTERS.APP_CONFIG]})),n=Object(c["computed"])((function(){return e.getters[F["b"].GETTERS.APP_LOADING]})),r=Object(c["ref"])(!1),o=Object(c["ref"])(!1);function a(e){r.value=e}function i(e){return e.getBoundingClientRect().top=0}function s(){window.onscroll=function(){var e=document.querySelector("#bottom");o.value=null!==e&&i(e)}}function l(){window.scrollTo({top:0,behavior:"smooth"}),setTimeout((function(){o.value=!1}),300)}return Object(c["onBeforeMount"])((function(){return e.dispatch(F["b"].ACTIONS.GET_APPLICATION_CONFIG)})),Object(c["onMounted"])((function(){return s()})),{appConfig:t,appLoading:n,hideScrollBar:r,displayScrollButton:o,scrollToTop:l,updateHideScrollBar:a}}});n("608d");const Oe=g()(de,[["render",E],["__scopeId","data-v-317a6409"]]);var me=Oe,Ee=(n("5319"),n("3ca3"),n("caad"),n("6c02")),pe=function(e){return Object(c["pushScopeId"])("data-v-26175b66"),e=e(),Object(c["popScopeId"])(),e},be={id:"admin-app",class:"admin-card"},Te={for:"max_users"},Se=["disabled"],fe={class:"user-limit-help"},_e={class:"info-box"},je=pe((function(){return Object(c["createElementVNode"])("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)})),Ae={for:"max_single_file_size"},Ne=["disabled"],ge={for:"max_zip_file_size"},Re=["disabled"],Ie={for:"gpx_limit_import"},Ue=["disabled"],ve={key:1,class:"form-buttons"},he={class:"confirm",type:"submit"},De={key:2,class:"form-buttons"};function Ce(e,t,n,r,o,a){var i=Object(c["resolveComponent"])("ErrorMessage"),s=Object(c["resolveComponent"])("Card");return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",be,[Object(c["createVNode"])(s,null,{title:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("admin.APP_CONFIG.TITLE")),1)]})),content:Object(c["withCtx"])((function(){return[Object(c["createElementVNode"])("form",{class:"admin-form",onSubmit:t[7]||(t[7]=Object(c["withModifiers"])((function(){return e.onSubmit&&e.onSubmit.apply(e,arguments)}),["prevent"]))},[Object(c["createElementVNode"])("label",Te,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("admin.APP_CONFIG.MAX_USERS_LABEL"))+": ",1),Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{id:"max_users",name:"max_users",type:"number",min:"0","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.appData.max_users=t}),disabled:!e.edition},null,8,Se),[[c["vModelText"],e.appData.max_users]])]),Object(c["createElementVNode"])("div",fe,[Object(c["createElementVNode"])("span",_e,[je,Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(e.$t("admin.APP_CONFIG.MAX_USERS_HELP")),1)])]),Object(c["createElementVNode"])("label",Ae,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("admin.APP_CONFIG.SINGLE_UPLOAD_MAX_SIZE_LABEL"))+": ",1),Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{id:"max_single_file_size",name:"max_single_file_size",type:"number",step:"0.1",min:"0","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.appData.max_single_file_size=t}),disabled:!e.edition},null,8,Ne),[[c["vModelText"],e.appData.max_single_file_size]])]),Object(c["createElementVNode"])("label",ge,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("admin.APP_CONFIG.ZIP_UPLOAD_MAX_SIZE_LABEL"))+": ",1),Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{id:"max_zip_file_size",name:"max_zip_file_size",type:"number",step:"0.1",min:"0","onUpdate:modelValue":t[2]||(t[2]=function(t){return e.appData.max_zip_file_size=t}),disabled:!e.edition},null,8,Re),[[c["vModelText"],e.appData.max_zip_file_size]])]),Object(c["createElementVNode"])("label",Ie,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("admin.APP_CONFIG.MAX_FILES_IN_ZIP_LABEL"))+": ",1),Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{id:"gpx_limit_import",name:"gpx_limit_import",type:"number",min:"0","onUpdate:modelValue":t[3]||(t[3]=function(t){return e.appData.gpx_limit_import=t}),disabled:!e.edition},null,8,Ue),[[c["vModelText"],e.appData.gpx_limit_import]])]),e.errorMessages?(Object(c["openBlock"])(),Object(c["createBlock"])(i,{key:0,message:e.errorMessages},null,8,["message"])):Object(c["createCommentVNode"])("",!0),e.edition?(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",ve,[Object(c["createElementVNode"])("button",he,Object(c["toDisplayString"])(e.$t("buttons.SUBMIT")),1),Object(c["createElementVNode"])("button",{class:"cancel",onClick:t[4]||(t[4]=Object(c["withModifiers"])((function(){return e.onCancel&&e.onCancel.apply(e,arguments)}),["prevent"]))},Object(c["toDisplayString"])(e.$t("buttons.CANCEL")),1)])):(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",De,[Object(c["createElementVNode"])("button",{class:"confirm",onClick:t[5]||(t[5]=Object(c["withModifiers"])((function(t){return e.$router.push("/admin/application/edit")}),["prevent"]))},Object(c["toDisplayString"])(e.$t("buttons.EDIT")),1),Object(c["createElementVNode"])("button",{class:"cancel",onClick:t[6]||(t[6]=Object(c["withModifiers"])((function(t){return e.$router.push("/admin")}),["prevent"]))},Object(c["toDisplayString"])(e.$t("admin.BACK_TO_ADMIN")),1)]))],32)]})),_:1})])}n("b64b");var ke=n("c364"),Pe=Object(c["defineComponent"])({name:"AdminApplication",props:{appConfig:{type:Object,required:!0},edition:{type:Boolean,default:!1}},setup:function(e){var t=Object(W["a"])(),n=Object(Ee["d"])(),r=Object(c["reactive"])({max_users:0,max_single_file_size:0,max_zip_file_size:0,gpx_limit_import:0}),o=Object(c["computed"])((function(){return t.getters[F["b"].GETTERS.ERROR_MESSAGES]}));function a(e){Object.keys(r).map((function(t){["max_single_file_size","max_zip_file_size"].includes(t)?r[t]=Object(ke["a"])(e[t]):r[t]=e[t]}))}function i(){a(e.appConfig),t.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),n.push("/admin/application")}function s(){var e=Object.assign({},r);e.max_single_file_size*=1048576,e.max_zip_file_size*=1048576,t.dispatch(F["b"].ACTIONS.UPDATE_APPLICATION_CONFIG,e)}return Object(c["onBeforeMount"])((function(){e.appConfig&&a(e.appConfig)})),{appData:r,errorMessages:o,onCancel:i,onSubmit:s}}});n("3853");const Me=g()(Pe,[["render",Ce],["__scopeId","data-v-26175b66"]]);var Le=Me,ze=function(e){return Object(c["pushScopeId"])("data-v-4f30aa64"),e=e(),Object(c["popScopeId"])(),e},ye={id:"admin-menu",class:"center-card"},we={class:"admin-menu description-list"},Ve=ze((function(){return Object(c["createElementVNode"])("br",null,null,-1)})),Be={class:"registration-status"};function Ge(e,t,n,r,o,a){var i=Object(c["resolveComponent"])("AppStatsCards"),s=Object(c["resolveComponent"])("router-link"),l=Object(c["resolveComponent"])("Card");return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",ye,[Object(c["createVNode"])(l,null,{title:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("admin.ADMINISTRATION")),1)]})),content:Object(c["withCtx"])((function(){return[Object(c["createVNode"])(i,{"app-statistics":e.appStatistics},null,8,["app-statistics"]),Object(c["createElementVNode"])("div",we,[Object(c["createElementVNode"])("dl",null,[Object(c["createElementVNode"])("dt",null,[Object(c["createVNode"])(s,{to:"/admin/application"},{default:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("admin.APPLICATION")),1)]})),_:1})]),Object(c["createElementVNode"])("dd",null,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("admin.UPDATE_APPLICATION_DESCRIPTION")),1),Ve,Object(c["createElementVNode"])("span",Be,Object(c["toDisplayString"])(e.$t("admin.REGISTRATION_".concat(e.appConfig.is_registration_enabled?"ENABLED":"DISABLED"))),1)]),Object(c["createElementVNode"])("dt",null,[Object(c["createVNode"])(s,{to:"/admin/sports"},{default:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.capitalize(e.$t("workouts.SPORT",0))),1)]})),_:1})]),Object(c["createElementVNode"])("dd",null,Object(c["toDisplayString"])(e.$t("admin.ENABLE_DISABLE_SPORTS")),1),Object(c["createElementVNode"])("dt",null,[Object(c["createVNode"])(s,{to:"/admin/users"},{default:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.capitalize(e.$t("admin.USER",0))),1)]})),_:1})]),Object(c["createElementVNode"])("dd",null,Object(c["toDisplayString"])(e.$t("admin.ADMIN_RIGHTS_DELETE_USER_ACCOUNT")),1)])])]})),_:1})])}var xe={id:"user-stats"};function Fe(e,t,n,r,o,a){var i=Object(c["resolveComponent"])("StatCard");return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",xe,[Object(c["createVNode"])(i,{icon:"users",value:e.usersCount,text:e.$t("admin.USER",e.usersCount)},null,8,["value","text"]),Object(c["createVNode"])(i,{icon:"tags",value:e.sportsCount,text:e.$t("workouts.SPORT",e.sportsCount)},null,8,["value","text"]),Object(c["createVNode"])(i,{icon:"calendar",value:e.workoutCount,text:e.$t("workouts.WORKOUT",e.workoutCount)},null,8,["value","text"]),Object(c["createVNode"])(i,{icon:"folder-open",value:e.uploadDirSize.size,text:e.uploadDirSize.suffix},null,8,["value","text"])])}var We=n("05d9"),Ke=Object(c["defineComponent"])({name:"UserStatsCards",components:{StatCard:We["a"]},props:{appStatistics:{type:Object,default:function(){return{}}}},setup:function(e){return{uploadDirSize:Object(c["computed"])((function(){return e.appStatistics.uploads_dir_size?Object(ke["b"])(e.appStatistics.uploads_dir_size,!1):{size:0,suffix:"bytes"}})),usersCount:Object(c["computed"])((function(){return e.appStatistics.users?e.appStatistics.users:0})),sportsCount:Object(c["computed"])((function(){return e.appStatistics.sports?e.appStatistics.sports:0})),workoutCount:Object(c["computed"])((function(){return e.appStatistics.workouts?e.appStatistics.workouts:0}))}}});n("a1fe");const $e=g()(Ke,[["render",Fe]]);var He=$e,Ye={class:"card"},qe={class:"card-title"},Xe={class:"card-content"};function Ze(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",Ye,[Object(c["createElementVNode"])("div",qe,[Object(c["renderSlot"])(e.$slots,"title")]),Object(c["createElementVNode"])("div",Xe,[Object(c["renderSlot"])(e.$slots,"content")])])}var Qe=Object(c["defineComponent"])({name:"Card"});n("16c2");const Je=g()(Qe,[["render",Ze]]);var et=Je,tt=Object(c["defineComponent"])({name:"AdminMenu",components:{AppStatsCards:He,Card:et},props:{appConfig:{type:Object,required:!0},appStatistics:{type:Object}},setup:function(){return{capitalize:c["capitalize"]}}});n("4a13");const nt=g()(tt,[["render",Ge],["__scopeId","data-v-4f30aa64"]]);var rt=nt,ot=function(e){return Object(c["pushScopeId"])("data-v-6d930723"),e=e(),Object(c["popScopeId"])(),e},ct={id:"admin-sports",class:"admin-card"},at={class:"responsive-table"},it=ot((function(){return Object(c["createElementVNode"])("th",null,"#",-1)})),st={class:"text-left"},lt={class:"text-left sport-action"},ut=ot((function(){return Object(c["createElementVNode"])("th",null,null,-1)})),dt={class:"center-text"},Ot=ot((function(){return Object(c["createElementVNode"])("span",{class:"cell-heading"},"id",-1)})),mt={class:"cell-heading"},Et={class:"sport-label"},pt={class:"cell-heading"},bt={class:"center-text"},Tt={class:"cell-heading"},St={class:"sport-action"},ft={class:"cell-heading"},_t={class:"action-button"},jt=["onClick"],At={key:0,class:"has-workouts"},Nt=ot((function(){return Object(c["createElementVNode"])("i",{class:"fa fa-warning","aria-hidden":"true"},null,-1)}));function gt(e,t,n,r,o,a){var i=Object(c["resolveComponent"])("SportImage"),s=Object(c["resolveComponent"])("ErrorMessage"),l=Object(c["resolveComponent"])("Card");return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",ct,[Object(c["createVNode"])(l,null,{title:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("admin.SPORTS.TITLE")),1)]})),content:Object(c["withCtx"])((function(){return[Object(c["createElementVNode"])("button",{class:"top-button",onClick:t[0]||(t[0]=Object(c["withModifiers"])((function(t){return e.$router.push("/admin")}),["prevent"]))},Object(c["toDisplayString"])(e.$t("admin.BACK_TO_ADMIN")),1),Object(c["createElementVNode"])("div",at,[Object(c["createElementVNode"])("table",null,[Object(c["createElementVNode"])("thead",null,[Object(c["createElementVNode"])("tr",null,[it,Object(c["createElementVNode"])("th",null,Object(c["toDisplayString"])(e.$t("admin.SPORTS.TABLE.IMAGE")),1),Object(c["createElementVNode"])("th",st,Object(c["toDisplayString"])(e.$t("admin.SPORTS.TABLE.LABEL")),1),Object(c["createElementVNode"])("th",null,Object(c["toDisplayString"])(e.$t("admin.SPORTS.TABLE.ACTIVE")),1),Object(c["createElementVNode"])("th",lt,Object(c["toDisplayString"])(e.$t("admin.ACTION")),1),ut])]),Object(c["createElementVNode"])("tbody",null,[(Object(c["openBlock"])(!0),Object(c["createElementBlock"])(c["Fragment"],null,Object(c["renderList"])(e.translatedSports,(function(t){return Object(c["openBlock"])(),Object(c["createElementBlock"])("tr",{key:t.id},[Object(c["createElementVNode"])("td",dt,[Ot,Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(t.id),1)]),Object(c["createElementVNode"])("td",null,[Object(c["createElementVNode"])("span",mt,Object(c["toDisplayString"])(e.$t("admin.SPORTS.TABLE.IMAGE")),1),Object(c["createVNode"])(i,{title:t.translatedLabel,"sport-label":t.label},null,8,["title","sport-label"])]),Object(c["createElementVNode"])("td",Et,[Object(c["createElementVNode"])("span",pt,Object(c["toDisplayString"])(e.$t("admin.SPORTS.TABLE.LABEL")),1),Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(t.translatedLabel),1)]),Object(c["createElementVNode"])("td",bt,[Object(c["createElementVNode"])("span",Tt,Object(c["toDisplayString"])(e.$t("admin.SPORTS.TABLE.ACTIVE")),1),Object(c["createElementVNode"])("i",{class:Object(c["normalizeClass"])("fa fa".concat(t.is_active?"-check":"","-square-o")),"aria-hidden":"true"},null,2)]),Object(c["createElementVNode"])("td",St,[Object(c["createElementVNode"])("span",ft,Object(c["toDisplayString"])(e.$t("admin.ACTION")),1),Object(c["createElementVNode"])("div",_t,[Object(c["createElementVNode"])("button",{class:Object(c["normalizeClass"])({danger:t.is_active}),onClick:function(n){return e.updateSportStatus(t.id,!t.is_active)}},Object(c["toDisplayString"])(e.$t("buttons.".concat(t.is_active?"DIS":"EN","ABLE"))),11,jt),t.has_workouts?(Object(c["openBlock"])(),Object(c["createElementBlock"])("span",At,[Nt,Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(e.$t("admin.SPORTS.TABLE.HAS_WORKOUTS")),1)])):Object(c["createCommentVNode"])("",!0)])])])})),128))])]),e.errorMessages?(Object(c["openBlock"])(),Object(c["createBlock"])(s,{key:0,message:e.errorMessages},null,8,["message"])):Object(c["createCommentVNode"])("",!0),Object(c["createElementVNode"])("button",{onClick:t[1]||(t[1]=Object(c["withModifiers"])((function(t){return e.$router.push("/admin")}),["prevent"]))},Object(c["toDisplayString"])(e.$t("admin.BACK_TO_ADMIN")),1)])]})),_:1})])}var Rt=n("1119"),It=Object(c["defineComponent"])({name:"AdminSports",setup:function(){var e=Object(G["b"])(),t=e.t,n=Object(W["a"])(),r=Object(c["computed"])((function(){return Object(Rt["d"])(n.getters[F["c"].GETTERS.SPORTS],t)})),o=Object(c["computed"])((function(){return n.getters[F["b"].GETTERS.ERROR_MESSAGES]}));function a(e,t){n.dispatch(F["c"].ACTIONS.UPDATE_SPORTS,{id:e,isActive:t})}return{errorMessages:o,translatedSports:r,updateSportStatus:a}}});n("3214");const Ut=g()(It,[["render",gt],["__scopeId","data-v-6d930723"]]);var vt=Ut,ht=function(e){return Object(c["pushScopeId"])("data-v-eb17bef8"),e=e(),Object(c["popScopeId"])(),e},Dt={id:"admin-users",class:"admin-card"},Ct={class:"responsive-table"},kt=ht((function(){return Object(c["createElementVNode"])("th",null,"#",-1)})),Pt={class:"left-text"},Mt={class:"left-text"},Lt={class:"left-text"},zt={class:"cell-heading"},yt={class:"cell-heading"},wt={class:"cell-heading"},Vt={class:"cell-heading"},Bt={class:"center-text"},Gt={class:"cell-heading"},xt={class:"center-text"},Ft={class:"cell-heading"},Wt={class:"center-text"},Kt={class:"cell-heading"},$t=["disabled","onClick"];function Ht(e,t,n,r,o,a){var i=Object(c["resolveComponent"])("FilterSelects"),s=Object(c["resolveComponent"])("UserPicture"),l=Object(c["resolveComponent"])("router-link"),u=Object(c["resolveComponent"])("Pagination"),d=Object(c["resolveComponent"])("ErrorMessage"),O=Object(c["resolveComponent"])("Card");return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",Dt,[Object(c["createVNode"])(O,null,{title:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.capitalize(e.$t("admin.USER",0))),1)]})),content:Object(c["withCtx"])((function(){return[Object(c["createElementVNode"])("button",{class:"top-button",onClick:t[0]||(t[0]=Object(c["withModifiers"])((function(t){return e.$router.push("/admin")}),["prevent"]))},Object(c["toDisplayString"])(e.$t("admin.BACK_TO_ADMIN")),1),Object(c["createVNode"])(i,{sort:e.sortList,order_by:e.orderByList,query:e.query,message:"admin.USERS.SELECTS.ORDER_BY",onUpdateSelect:e.reloadUsers},null,8,["sort","order_by","query","onUpdateSelect"]),Object(c["createElementVNode"])("div",Ct,[Object(c["createElementVNode"])("table",null,[Object(c["createElementVNode"])("thead",null,[Object(c["createElementVNode"])("tr",null,[kt,Object(c["createElementVNode"])("th",Pt,Object(c["toDisplayString"])(e.$t("user.USERNAME")),1),Object(c["createElementVNode"])("th",Mt,Object(c["toDisplayString"])(e.$t("user.EMAIL")),1),Object(c["createElementVNode"])("th",Lt,Object(c["toDisplayString"])(e.$t("user.PROFILE.REGISTRATION_DATE")),1),Object(c["createElementVNode"])("th",null,Object(c["toDisplayString"])(e.capitalize(e.$t("workouts.WORKOUT",0))),1),Object(c["createElementVNode"])("th",null,Object(c["toDisplayString"])(e.$t("user.ADMIN")),1),Object(c["createElementVNode"])("th",null,Object(c["toDisplayString"])(e.$t("admin.ACTION")),1)])]),Object(c["createElementVNode"])("tbody",null,[(Object(c["openBlock"])(!0),Object(c["createElementBlock"])(c["Fragment"],null,Object(c["renderList"])(e.users,(function(t){return Object(c["openBlock"])(),Object(c["createElementBlock"])("tr",{key:t.username},[Object(c["createElementVNode"])("td",null,[Object(c["createElementVNode"])("span",zt,Object(c["toDisplayString"])(e.$t("user.PROFILE.PICTURE")),1),Object(c["createVNode"])(s,{user:t},null,8,["user"])]),Object(c["createElementVNode"])("td",null,[Object(c["createElementVNode"])("span",yt,Object(c["toDisplayString"])(e.$t("user.USERNAME")),1),Object(c["createVNode"])(l,{to:"/users/".concat(t.username)},{default:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(t.username),1)]})),_:2},1032,["to"])]),Object(c["createElementVNode"])("td",null,[Object(c["createElementVNode"])("span",wt,Object(c["toDisplayString"])(e.$t("user.EMAIL")),1),Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(t.email),1)]),Object(c["createElementVNode"])("td",null,[Object(c["createElementVNode"])("span",Vt,Object(c["toDisplayString"])(e.$t("user.PROFILE.REGISTRATION_DATE")),1),Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(e.format(e.getDateWithTZ(t.created_at,e.authUser.timezone),"dd/MM/yyyy HH:mm")),1)]),Object(c["createElementVNode"])("td",Bt,[Object(c["createElementVNode"])("span",Gt,Object(c["toDisplayString"])(e.capitalize(e.$t("workouts.WORKOUT",0))),1),Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(t.nb_workouts),1)]),Object(c["createElementVNode"])("td",xt,[Object(c["createElementVNode"])("span",Ft,Object(c["toDisplayString"])(e.$t("user.ADMIN")),1),Object(c["createElementVNode"])("i",{class:Object(c["normalizeClass"])("fa fa".concat(t.admin?"-check":"","-square-o")),"aria-hidden":"true"},null,2)]),Object(c["createElementVNode"])("td",Wt,[Object(c["createElementVNode"])("span",Kt,Object(c["toDisplayString"])(e.$t("admin.ACTION")),1),Object(c["createElementVNode"])("button",{class:Object(c["normalizeClass"])({danger:t.admin}),disabled:t.username===e.authUser.username,onClick:function(n){return e.updateUser(t.username,!t.admin)}},Object(c["toDisplayString"])(e.$t("admin.USERS.TABLE.".concat(t.admin?"REMOVE":"ADD","_ADMIN_RIGHTS"))),11,$t)])])})),128))])]),e.pagination.page?(Object(c["openBlock"])(),Object(c["createBlock"])(u,{key:0,path:"/admin/users",pagination:e.pagination,query:e.query},null,8,["pagination","query"])):Object(c["createCommentVNode"])("",!0),e.errorMessages?(Object(c["openBlock"])(),Object(c["createBlock"])(d,{key:1,message:e.errorMessages},null,8,["message"])):Object(c["createCommentVNode"])("",!0),Object(c["createElementVNode"])("button",{onClick:t[1]||(t[1]=Object(c["withModifiers"])((function(t){return e.$router.push("/admin")}),["prevent"]))},Object(c["toDisplayString"])(e.$t("admin.BACK_TO_ADMIN")),1)])]})),_:1})])}var Yt=n("b166"),qt=n("9176"),Xt=n("6d7d"),Zt=n("97e5"),Qt=n("5e65"),Jt=Object(c["defineComponent"])({name:"AdminUsers",components:{FilterSelects:qt["a"],Pagination:Xt["a"],UserPicture:x["a"]},setup:function(){var e=Object(W["a"])(),t=Object(Ee["c"])(),n=Object(Ee["d"])(),r=["admin","created_at","username","workouts_count"],o="created_at",a=Object(c["reactive"])(Object(Zt["a"])(t.query,r,o)),i=Object(c["computed"])((function(){return e.getters[F["a"].GETTERS.AUTH_USER_PROFILE]})),s=Object(c["computed"])((function(){return e.getters[F["e"].GETTERS.USERS]})),l=Object(c["computed"])((function(){return e.getters[F["e"].GETTERS.USERS_PAGINATION]})),u=Object(c["computed"])((function(){return e.getters[F["b"].GETTERS.ERROR_MESSAGES]}));function d(t){e.dispatch(F["e"].ACTIONS.GET_USERS,t)}function O(t,n){e.dispatch(F["e"].ACTIONS.UPDATE_USER,{username:t,admin:n})}function m(e,t){a[e]=t,"per_page"===e&&(a.page=1),n.push({path:"/admin/users",query:a})}return Object(c["onBeforeMount"])((function(){return d(a)})),Object(c["watch"])((function(){return t.query}),(function(e){a=Object(Zt["a"])(e,r,o,{query:a}),d(a)})),Object(c["onUnmounted"])((function(){e.dispatch(F["e"].ACTIONS.EMPTY_USERS)})),{authUser:i,errorMessages:u,orderByList:r,pagination:l,query:a,sortList:Zt["c"],users:s,capitalize:c["capitalize"],format:Yt["a"],getDateWithTZ:Qt["c"],reloadUsers:m,updateUser:O}}});n("b986");const en=g()(Jt,[["render",Ht],["__scopeId","data-v-eb17bef8"]]);var tn=en,nn={id:"user-profile"},rn={class:"box"};function on(e,t,n,r,o,a){var i=Object(c["resolveComponent"])("UserHeader"),s=Object(c["resolveComponent"])("UserProfileTabs"),l=Object(c["resolveComponent"])("router-view");return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",nn,[Object(c["createVNode"])(i,{user:e.user},null,8,["user"]),Object(c["createElementVNode"])("div",rn,[Object(c["createVNode"])(s,{tabs:e.tabs,selectedTab:e.tab,edition:!1},null,8,["tabs","selectedTab"]),Object(c["createVNode"])(l,{user:e.user},null,8,["user"])])])}var cn=n("3c44"),an={class:"profile-tabs custom-checkboxes-group"},sn={class:"profile-tabs-checkboxes custom-checkboxes"},ln=["id","name","checked","disabled","onInput"];function un(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",an,[Object(c["createElementVNode"])("div",sn,[(Object(c["openBlock"])(!0),Object(c["createElementBlock"])(c["Fragment"],null,Object(c["renderList"])(e.tabs,(function(t){return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",{class:"profile-tab custom-checkbox",key:t},[Object(c["createElementVNode"])("label",null,[Object(c["createElementVNode"])("input",{type:"radio",id:t,name:t,checked:e.selectedTab===t,disabled:e.disabled,onInput:function(n){return e.$router.push(e.getPath(t))}},null,40,ln),Object(c["createElementVNode"])("span",null,Object(c["toDisplayString"])(e.$t("user.PROFILE.TABS.".concat(t))),1)])])})),128))])])}var dn=Object(c["defineComponent"])({name:"UserProfileTabs",props:{tabs:{type:Object,required:!0},selectedTab:{type:String,required:!0},edition:{type:Boolean,required:!0},disabled:{type:Boolean,default:!1}},setup:function(e){function t(t){switch(t){case"PICTURE":return"/profile/edit/picture";case"PREFERENCES":return"/profile".concat(e.edition?"/edit":"","/preferences");default:case"PROFILE":return"/profile".concat(e.edition?"/edit":"")}}return{getPath:t}}});n("d42e");const On=g()(dn,[["render",un]]);var mn=On,En=Object(c["defineComponent"])({name:"ProfileDisplay",components:{UserHeader:cn["a"],UserProfileTabs:mn},props:{user:{type:Object,required:!0},tab:{type:String,required:!0}},setup:function(){return{tabs:["PROFILE","PREFERENCES"]}}});n("7ffe");const pn=g()(En,[["render",on],["__scopeId","data-v-c81580c0"]]);var bn=pn,Tn=n("71a7"),Sn={id:"user-preferences",class:"description-list"},fn={class:"profile-buttons"};function _n(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",Sn,[Object(c["createElementVNode"])("dl",null,[Object(c["createElementVNode"])("dt",null,Object(c["toDisplayString"])(e.$t("user.PROFILE.LANGUAGE"))+":",1),Object(c["createElementVNode"])("dd",null,Object(c["toDisplayString"])(e.language),1),Object(c["createElementVNode"])("dt",null,Object(c["toDisplayString"])(e.$t("user.PROFILE.TIMEZONE"))+":",1),Object(c["createElementVNode"])("dd",null,Object(c["toDisplayString"])(e.timezone),1),Object(c["createElementVNode"])("dt",null,Object(c["toDisplayString"])(e.$t("user.PROFILE.FIRST_DAY_OF_WEEK"))+":",1),Object(c["createElementVNode"])("dd",null,Object(c["toDisplayString"])(e.$t("user.PROFILE.".concat(e.fistDayOfWeek))),1)]),Object(c["createElementVNode"])("div",fn,[Object(c["createElementVNode"])("button",{onClick:t[0]||(t[0]=function(t){return e.$router.push("/profile/edit/preferences")})},Object(c["toDisplayString"])(e.$t("user.PROFILE.EDIT_PREFERENCES")),1),Object(c["createElementVNode"])("button",{onClick:t[1]||(t[1]=function(t){return e.$router.push("/")})},Object(c["toDisplayString"])(e.$t("common.HOME")),1)])])}var jn=Object(c["defineComponent"])({name:"UserPreferences",props:{user:{type:Object,required:!0}},setup:function(e){var t=Object(c["computed"])((function(){return e.user.language?Z[e.user.language]:Z["en"]})),n=Object(c["computed"])((function(){return e.user.weekm?"MONDAY":"SUNDAY"})),r=Object(c["computed"])((function(){return e.user.timezone?e.user.timezone:"Europe/Paris"}));return{fistDayOfWeek:n,language:t,timezone:r}}});n("cbea");const An=g()(jn,[["render",_n],["__scopeId","data-v-39667dbe"]]);var Nn=An,gn={id:"user-profile-edition",class:"center-card"};function Rn(e,t,n,r,o,a){var i=Object(c["resolveComponent"])("UserProfileTabs"),s=Object(c["resolveComponent"])("router-view"),l=Object(c["resolveComponent"])("Card");return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",gn,[Object(c["createVNode"])(l,null,{title:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("user.PROFILE.".concat(e.tab,"_EDITION"))),1)]})),content:Object(c["withCtx"])((function(){return[Object(c["createVNode"])(i,{tabs:e.tabs,selectedTab:e.tab,edition:!0,disabled:e.loading},null,8,["tabs","selectedTab","disabled"]),Object(c["createVNode"])(s,{user:e.user},null,8,["user"])]})),_:1})])}var In=Object(c["defineComponent"])({name:"ProfileEdition",components:{UserProfileTabs:mn},props:{user:{type:Object,required:!0},tab:{type:String,required:!0}},setup:function(){var e=Object(W["a"])();return{loading:Object(c["computed"])((function(){return e.getters[F["a"].GETTERS.USER_LOADING]})),tabs:["PROFILE","PICTURE","PREFERENCES"]}}});const Un=g()(In,[["render",Rn]]);var vn=Un,hn={id:"user-infos-edition"},Dn={class:"profile-form form-box"},Cn={class:"form-items",for:"email"},kn=["value"],Pn={class:"form-items",for:"registrationDate"},Mn=["value"],Ln={class:"form-items",for:"password"},zn=["disabled"],yn={class:"form-items",for:"passwordConfirmation"},wn=["disabled"],Vn=Object(c["createElementVNode"])("hr",null,null,-1),Bn={class:"form-items",for:"first_name"},Gn=["disabled"],xn={class:"form-items",for:"last_name"},Fn={class:"form-items",for:"birth_date"},Wn=["disabled"],Kn={class:"form-items",for:"location"},$n=["disabled"],Hn={class:"form-items"},Yn={class:"form-buttons"},qn={class:"confirm",type:"submit"};function Xn(e,t,n,r,o,a){var i=Object(c["resolveComponent"])("Modal"),s=Object(c["resolveComponent"])("ErrorMessage"),l=Object(c["resolveComponent"])("CustomTextArea");return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",hn,[e.displayModal?(Object(c["openBlock"])(),Object(c["createBlock"])(i,{key:0,title:e.$t("common.CONFIRMATION"),message:e.$t("user.CONFIRM_ACCOUNT_DELETION"),onConfirmAction:t[0]||(t[0]=function(t){return e.deleteAccount(e.user.username)}),onCancelAction:t[1]||(t[1]=function(t){return e.updateDisplayModal(!1)})},null,8,["title","message"])):Object(c["createCommentVNode"])("",!0),Object(c["createElementVNode"])("div",Dn,[e.errorMessages?(Object(c["openBlock"])(),Object(c["createBlock"])(s,{key:0,message:e.errorMessages},null,8,["message"])):Object(c["createCommentVNode"])("",!0),Object(c["createElementVNode"])("form",{onSubmit:t[10]||(t[10]=Object(c["withModifiers"])((function(){return e.updateProfile&&e.updateProfile.apply(e,arguments)}),["prevent"]))},[Object(c["createElementVNode"])("label",Cn,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("user.EMAIL"))+" ",1),Object(c["createElementVNode"])("input",{id:"email",value:e.user.email,disabled:""},null,8,kn)]),Object(c["createElementVNode"])("label",Pn,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("user.PROFILE.REGISTRATION_DATE"))+" ",1),Object(c["createElementVNode"])("input",{id:"registrationDate",value:e.registrationDate,disabled:""},null,8,Mn)]),Object(c["createElementVNode"])("label",Ln,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("user.PASSWORD"))+" ",1),Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{id:"password",type:"password","onUpdate:modelValue":t[2]||(t[2]=function(t){return e.userForm.password=t}),disabled:e.loading},null,8,zn),[[c["vModelText"],e.userForm.password]])]),Object(c["createElementVNode"])("label",yn,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("user.PASSWORD_CONFIRMATION"))+" ",1),Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{id:"passwordConfirmation",type:"password","onUpdate:modelValue":t[3]||(t[3]=function(t){return e.userForm.password_conf=t}),disabled:e.loading},null,8,wn),[[c["vModelText"],e.userForm.password_conf]])]),Vn,Object(c["createElementVNode"])("label",Bn,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("user.PROFILE.FIRST_NAME"))+" ",1),Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{id:"first_name","onUpdate:modelValue":t[4]||(t[4]=function(t){return e.userForm.first_name=t}),disabled:e.loading},null,8,Gn),[[c["vModelText"],e.userForm.first_name]])]),Object(c["createElementVNode"])("label",xn,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("user.PROFILE.LAST_NAME"))+" ",1),Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{id:"last_name","onUpdate:modelValue":t[5]||(t[5]=function(t){return e.userForm.last_name=t})},null,512),[[c["vModelText"],e.userForm.last_name]])]),Object(c["createElementVNode"])("label",Fn,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("user.PROFILE.BIRTH_DATE"))+" ",1),Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{id:"birth_date",type:"date",class:"birth-date","onUpdate:modelValue":t[6]||(t[6]=function(t){return e.userForm.birth_date=t}),disabled:e.loading},null,8,Wn),[[c["vModelText"],e.userForm.birth_date]])]),Object(c["createElementVNode"])("label",Kn,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("user.PROFILE.LOCATION"))+" ",1),Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{id:"location","onUpdate:modelValue":t[7]||(t[7]=function(t){return e.userForm.location=t}),disabled:e.loading},null,8,$n),[[c["vModelText"],e.userForm.location]])]),Object(c["createElementVNode"])("label",Hn,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("user.PROFILE.BIO"))+" ",1),Object(c["createVNode"])(l,{name:"bio",charLimit:200,input:e.userForm.bio,disabled:e.loading,onUpdateValue:e.updateBio},null,8,["input","disabled","onUpdateValue"])]),Object(c["createElementVNode"])("div",Yn,[Object(c["createElementVNode"])("button",qn,Object(c["toDisplayString"])(e.$t("buttons.SUBMIT")),1),Object(c["createElementVNode"])("button",{class:"cancel",onClick:t[8]||(t[8]=Object(c["withModifiers"])((function(t){return e.$router.push("/profile")}),["prevent"]))},Object(c["toDisplayString"])(e.$t("buttons.CANCEL")),1),Object(c["createElementVNode"])("button",{class:"danger",onClick:t[9]||(t[9]=Object(c["withModifiers"])((function(t){return e.updateDisplayModal(!0)}),["prevent"]))},Object(c["toDisplayString"])(e.$t("buttons.DELETE_MY_ACCOUNT")),1)])],32)])])}var Zn=Object(c["defineComponent"])({name:"UserInfosEdition",props:{user:{type:Object,required:!0}},setup:function(e){var t=Object(W["a"])(),n=Object(c["reactive"])({password:"",password_conf:"",first_name:"",last_name:"",birth_date:"",location:"",bio:""}),r=Object(c["computed"])((function(){return e.user.created_at?Object(Yt["a"])(new Date(e.user.created_at),"dd/MM/yyyy HH:mm"):""})),o=Object(c["computed"])((function(){return t.getters[F["a"].GETTERS.USER_LOADING]})),a=Object(c["computed"])((function(){return t.getters[F["b"].GETTERS.ERROR_MESSAGES]})),i=Object(c["ref"])(!1);function s(e){n.first_name=e.first_name?e.first_name:"",n.last_name=e.last_name?e.last_name:"",n.birth_date=e.birth_date?Object(Yt["a"])(new Date(e.birth_date),"yyyy-MM-dd"):"",n.location=e.location?e.location:"",n.bio=e.bio?e.bio:""}function l(e){n.bio=e}function u(){t.dispatch(F["a"].ACTIONS.UPDATE_USER_PROFILE,n)}function d(e){i.value=e}function O(e){t.dispatch(F["a"].ACTIONS.DELETE_ACCOUNT,{username:e})}return Object(c["onMounted"])((function(){e.user&&s(e.user)})),{displayModal:i,errorMessages:a,loading:o,registrationDate:r,userForm:n,deleteAccount:O,updateBio:l,updateDisplayModal:d,updateProfile:u}}});n("57ba");const Qn=g()(Zn,[["render",Xn]]);var Jn=Qn,er=function(e){return Object(c["pushScopeId"])("data-v-0ea4550a"),e=e(),Object(c["popScopeId"])(),e},tr={id:"user-picture-edition"},nr={class:"user-picture-form"},rr={class:"picture-help"},or={class:"info-box"},cr=er((function(){return Object(c["createElementVNode"])("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)})),ar={class:"picture-buttons"},ir=["disabled"];function sr(e,t,n,r,o,a){var i=Object(c["resolveComponent"])("ErrorMessage"),s=Object(c["resolveComponent"])("UserPicture");return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",tr,[Object(c["createElementVNode"])("div",nr,[e.errorMessages?(Object(c["openBlock"])(),Object(c["createBlock"])(i,{key:0,message:e.errorMessages},null,8,["message"])):Object(c["createCommentVNode"])("",!0),Object(c["createVNode"])(s,{user:e.user},null,8,["user"]),Object(c["createElementVNode"])("form",{onSubmit:t[3]||(t[3]=Object(c["withModifiers"])((function(){return e.updateUserPicture&&e.updateUserPicture.apply(e,arguments)}),["prevent"]))},[Object(c["createElementVNode"])("input",{type:"file",name:"picture",accept:".png,.jpg,.gif",onInput:t[0]||(t[0]=function(){return e.updatePictureFile&&e.updatePictureFile.apply(e,arguments)})},null,32),Object(c["createElementVNode"])("div",rr,[Object(c["createElementVNode"])("span",or,[cr,Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(e.$t("workouts.MAX_SIZE"))+": "+Object(c["toDisplayString"])(e.fileSizeLimit),1)])]),Object(c["createElementVNode"])("div",ar,[Object(c["createElementVNode"])("button",{type:"submit",disabled:!e.pictureFile},Object(c["toDisplayString"])(e.$t("user.PROFILE.PICTURE_UPDATE")),9,ir),e.user.picture?(Object(c["openBlock"])(),Object(c["createElementBlock"])("button",{key:0,class:"danger",onClick:t[1]||(t[1]=function(){return e.deleteUserPicture&&e.deleteUserPicture.apply(e,arguments)})},Object(c["toDisplayString"])(e.$t("user.PROFILE.PICTURE_REMOVE")),1)):Object(c["createCommentVNode"])("",!0),Object(c["createElementVNode"])("button",{class:"cancel",onClick:t[2]||(t[2]=function(t){return e.$router.push("/profile")})},Object(c["toDisplayString"])(e.$t("user.PROFILE.BACK_TO_PROFILE")),1)])],32)])])}var lr=Object(c["defineComponent"])({name:"UserPictureEdition",components:{UserPicture:x["a"]},props:{user:{type:Object,required:!0}},setup:function(){var e=Object(W["a"])(),t=Object(c["computed"])((function(){return e.getters[F["b"].GETTERS.ERROR_MESSAGES]})),n=Object(c["computed"])((function(){return e.getters[F["b"].GETTERS.APP_CONFIG]})),r=n.value.max_single_file_size?Object(ke["b"])(n.value.max_single_file_size):"",o=Object(c["ref"])(null);function a(){e.dispatch(F["a"].ACTIONS.DELETE_PICTURE)}function i(e){e.target.files&&(o.value=e.target.files[0])}function s(){o.value&&e.dispatch(F["a"].ACTIONS.UPDATE_USER_PICTURE,{picture:o.value})}return{errorMessages:t,fileSizeLimit:r,pictureFile:o,deleteUserPicture:a,updateUserPicture:s,updatePictureFile:i}}});n("21a0");const ur=g()(lr,[["render",sr],["__scopeId","data-v-0ea4550a"]]);var dr=ur,Or={id:"user-preferences-edition"},mr={class:"profile-form form-box"},Er={class:"form-items"},pr=["disabled"],br=["value"],Tr={class:"form-items",for:"timezone"},Sr=["disabled"],fr={class:"form-items"},_r=["disabled"],jr=["value"],Ar={class:"form-buttons"},Nr={class:"confirm",type:"submit"};function gr(e,t,n,r,o,a){var i=Object(c["resolveComponent"])("ErrorMessage");return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",Or,[Object(c["createElementVNode"])("div",mr,[e.errorMessages?(Object(c["openBlock"])(),Object(c["createBlock"])(i,{key:0,message:e.errorMessages},null,8,["message"])):Object(c["createCommentVNode"])("",!0),Object(c["createElementVNode"])("form",{onSubmit:t[4]||(t[4]=Object(c["withModifiers"])((function(){return e.updateProfile&&e.updateProfile.apply(e,arguments)}),["prevent"]))},[Object(c["createElementVNode"])("label",Er,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("user.PROFILE.LANGUAGE"))+" ",1),Object(c["withDirectives"])(Object(c["createElementVNode"])("select",{id:"language","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.userForm.language=t}),disabled:e.loading},[(Object(c["openBlock"])(!0),Object(c["createElementBlock"])(c["Fragment"],null,Object(c["renderList"])(e.availableLanguages,(function(e){return Object(c["openBlock"])(),Object(c["createElementBlock"])("option",{value:e.value,key:e.value},Object(c["toDisplayString"])(e.label),9,br)})),128))],8,pr),[[c["vModelSelect"],e.userForm.language]])]),Object(c["createElementVNode"])("label",Tr,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("user.PROFILE.TIMEZONE"))+" ",1),Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{id:"timezone","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.userForm.timezone=t}),disabled:e.loading},null,8,Sr),[[c["vModelText"],e.userForm.timezone]])]),Object(c["createElementVNode"])("label",fr,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("user.PROFILE.FIRST_DAY_OF_WEEK"))+" ",1),Object(c["withDirectives"])(Object(c["createElementVNode"])("select",{id:"weekm","onUpdate:modelValue":t[2]||(t[2]=function(t){return e.userForm.weekm=t}),disabled:e.loading},[(Object(c["openBlock"])(!0),Object(c["createElementBlock"])(c["Fragment"],null,Object(c["renderList"])(e.weekStart,(function(t){return Object(c["openBlock"])(),Object(c["createElementBlock"])("option",{value:t.value,key:t.value},Object(c["toDisplayString"])(e.$t("user.PROFILE.".concat(t.label))),9,jr)})),128))],8,_r),[[c["vModelSelect"],e.userForm.weekm]])]),Object(c["createElementVNode"])("div",Ar,[Object(c["createElementVNode"])("button",Nr,Object(c["toDisplayString"])(e.$t("buttons.SUBMIT")),1),Object(c["createElementVNode"])("button",{class:"cancel",onClick:t[3]||(t[3]=Object(c["withModifiers"])((function(t){return e.$router.push("/profile/preferences")}),["prevent"]))},Object(c["toDisplayString"])(e.$t("buttons.CANCEL")),1)])],32)])])}var Rr=Object(c["defineComponent"])({name:"UserPreferencesEdition",props:{user:{type:Object,required:!0}},setup:function(e){var t=Object(W["a"])(),n=Object(c["reactive"])({language:"",timezone:"Europe/Paris",weekm:!1}),r=[{label:"MONDAY",value:!0},{label:"SUNDAY",value:!1}],o=Object(c["computed"])((function(){return t.getters[F["a"].GETTERS.USER_LOADING]})),a=Object(c["computed"])((function(){return t.getters[F["b"].GETTERS.ERROR_MESSAGES]}));function i(e){n.language=e.language?e.language:"en",n.timezone=e.timezone?e.timezone:"Europe/Paris",n.weekm=!!e.weekm&&e.weekm}function s(){t.dispatch(F["a"].ACTIONS.UPDATE_USER_PREFERENCES,n)}return Object(c["onMounted"])((function(){e.user&&i(e.user)})),{availableLanguages:J,errorMessages:a,loading:o,userForm:n,weekStart:r,updateProfile:s}}});const Ir=g()(Rr,[["render",gr]]);var Ur=Ir,vr=n("5502"),hr=n("ade3"),Dr=n("bc3a"),Cr=n.n(Dr),kr=Cr.a.create({baseURL:Object(K["a"])()});kr.interceptors.request.use((function(e){var t=Vo.getters[F["a"].GETTERS.AUTH_TOKEN];if(t){var n="Bearer ".concat(t);e.headers&&e.headers.Authorization!==n&&(e.headers.Authorization="Bearer ".concat(t))}return e}),(function(e){return Promise.reject(e)}));var Pr,Mr,Lr,zr,yr,wr,Vr,Br,Gr,xr,Fr,Wr,Kr,$r,Hr=kr,Yr=Cr.a.create({baseURL:Object(K["a"])()}),qr=Yr,Xr=q.global.locale,Zr=function(e){localStorage.removeItem("authToken"),e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(F["d"].MUTATIONS.EMPTY_USER_STATS),e.commit(F["a"].MUTATIONS.CLEAR_AUTH_USER_TOKEN),e.commit(F["e"].MUTATIONS.UPDATE_USERS,[]),e.commit(F["f"].MUTATIONS.EMPTY_WORKOUTS),e.commit(F["f"].MUTATIONS.EMPTY_WORKOUT),Wo.push("/login")},Qr=(Pr={},Object(hr["a"])(Pr,F["a"].ACTIONS.CHECK_AUTH_USER,(function(e){window.localStorage.authToken&&!e.getters[F["a"].GETTERS.IS_AUTHENTICATED]&&(e.commit(F["a"].MUTATIONS.UPDATE_AUTH_TOKEN,window.localStorage.authToken),e.dispatch(F["a"].ACTIONS.GET_USER_PROFILE))})),Object(hr["a"])(Pr,F["a"].ACTIONS.GET_USER_PROFILE,(function(e){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),Hr.get("auth/profile").then((function(t){"success"===t.data.status?(e.commit(F["a"].MUTATIONS.UPDATE_AUTH_USER_PROFILE,t.data.data),t.data.data.language&&(e.commit(F["b"].MUTATIONS.UPDATE_LANG,t.data.data.language),Xr.value=t.data.data.language),e.dispatch(F["c"].ACTIONS.GET_SPORTS)):(Object(K["b"])(e,null),Zr(e))})).catch((function(t){Object(K["b"])(e,t),Zr(e)}))})),Object(hr["a"])(Pr,F["a"].ACTIONS.LOGIN_OR_REGISTER,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),qr.post("/auth/".concat(t.actionType),t.formData).then((function(n){if("success"===n.data.status){var r=n.data.auth_token;window.localStorage.setItem("authToken",r),e.commit(F["a"].MUTATIONS.UPDATE_AUTH_TOKEN,r),e.dispatch(F["a"].ACTIONS.GET_USER_PROFILE).then((function(){return Wo.push("string"===typeof t.redirectUrl?t.redirectUrl:"/")}))}else Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)}))})),Object(hr["a"])(Pr,F["a"].ACTIONS.LOGOUT,(function(e){Zr(e)})),Object(hr["a"])(Pr,F["a"].ACTIONS.UPDATE_USER_PROFILE,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(F["a"].MUTATIONS.UPDATE_USER_LOADING,!0),Hr.post("auth/profile/edit",t).then((function(t){"success"===t.data.status?(e.commit(F["a"].MUTATIONS.UPDATE_AUTH_USER_PROFILE,t.data.data),Wo.push("/profile")):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)})).finally((function(){return e.commit(F["a"].MUTATIONS.UPDATE_USER_LOADING,!1)}))})),Object(hr["a"])(Pr,F["a"].ACTIONS.UPDATE_USER_PREFERENCES,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(F["a"].MUTATIONS.UPDATE_USER_LOADING,!0),Hr.post("auth/profile/edit/preferences",t).then((function(t){"success"===t.data.status?(e.commit(F["a"].MUTATIONS.UPDATE_AUTH_USER_PROFILE,t.data.data),e.commit(F["b"].MUTATIONS.UPDATE_LANG,t.data.data.language),Xr.value=t.data.data.language,Wo.push("/profile/preferences")):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)})).finally((function(){return e.commit(F["a"].MUTATIONS.UPDATE_USER_LOADING,!1)}))})),Object(hr["a"])(Pr,F["a"].ACTIONS.UPDATE_USER_PICTURE,(function(e,t){if(e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(F["a"].MUTATIONS.UPDATE_USER_LOADING,!0),!t.picture)throw new Error("No file part");var n=new FormData;n.append("file",t.picture),Hr.post("auth/picture",n,{headers:{"content-type":"multipart/form-data"}}).then((function(t){"success"===t.data.status?e.dispatch(F["a"].ACTIONS.GET_USER_PROFILE).then((function(){return Wo.push("/profile")})):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)})).finally((function(){return e.commit(F["a"].MUTATIONS.UPDATE_USER_LOADING,!1)}))})),Object(hr["a"])(Pr,F["a"].ACTIONS.DELETE_ACCOUNT,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),Hr.delete("users/".concat(t.username)).then((function(t){204===t.status?e.dispatch(F["a"].ACTIONS.LOGOUT).then((function(){return Wo.push("/")})):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)}))})),Object(hr["a"])(Pr,F["a"].ACTIONS.DELETE_PICTURE,(function(e){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(F["a"].MUTATIONS.UPDATE_USER_LOADING,!0),Hr.delete("auth/picture").then((function(t){204===t.status?e.dispatch(F["a"].ACTIONS.GET_USER_PROFILE).then((function(){return Wo.push("/profile")})):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)})).finally((function(){return e.commit(F["a"].MUTATIONS.UPDATE_USER_LOADING,!1)}))})),Object(hr["a"])(Pr,F["a"].ACTIONS.SEND_PASSWORD_RESET_REQUEST,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),qr.post("auth/password/reset-request",t).then((function(t){"success"===t.data.status?Wo.push("/password-reset/sent"):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)}))})),Object(hr["a"])(Pr,F["a"].ACTIONS.RESET_USER_PASSWORD,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),qr.post("auth/password/update",t).then((function(t){"success"===t.data.status?Wo.push("/password-reset/password-updated"):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)}))})),Pr),Jr=(Mr={},Object(hr["a"])(Mr,F["a"].GETTERS.AUTH_TOKEN,(function(e){return e.authToken})),Object(hr["a"])(Mr,F["a"].GETTERS.AUTH_USER_PROFILE,(function(e){return e.authUserProfile})),Object(hr["a"])(Mr,F["a"].GETTERS.IS_AUTHENTICATED,(function(e){return null!==e.authToken})),Object(hr["a"])(Mr,F["a"].GETTERS.IS_ADMIN,(function(e){return e.authUserProfile&&e.authUserProfile.admin})),Object(hr["a"])(Mr,F["a"].GETTERS.USER_LOADING,(function(e){return e.loading})),Mr),eo=(Lr={},Object(hr["a"])(Lr,F["a"].MUTATIONS.CLEAR_AUTH_USER_TOKEN,(function(e){e.authToken=null,e.authUserProfile={}})),Object(hr["a"])(Lr,F["a"].MUTATIONS.UPDATE_AUTH_TOKEN,(function(e,t){e.authToken=t})),Object(hr["a"])(Lr,F["a"].MUTATIONS.UPDATE_AUTH_USER_PROFILE,(function(e,t){e.authUserProfile=t})),Object(hr["a"])(Lr,F["a"].MUTATIONS.UPDATE_USER_LOADING,(function(e,t){e.loading=t})),Lr),to={authToken:null,authUserProfile:{},loading:!1},no={state:to,actions:Qr,getters:Jr,mutations:eo},ro=no,oo=(zr={},Object(hr["a"])(zr,F["b"].ACTIONS.GET_APPLICATION_CONFIG,(function(e){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(F["b"].MUTATIONS.UPDATE_APPLICATION_LOADING,!0),Hr.get("config").then((function(t){"success"===t.data.status?e.commit(F["b"].MUTATIONS.UPDATE_APPLICATION_CONFIG,t.data.data):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)})).finally((function(){return e.commit(F["b"].MUTATIONS.UPDATE_APPLICATION_LOADING,!1)}))})),Object(hr["a"])(zr,F["b"].ACTIONS.GET_APPLICATION_STATS,(function(e){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),Hr.get("stats/all").then((function(t){"success"===t.data.status?e.commit(F["b"].MUTATIONS.UPDATE_APPLICATION_STATS,t.data.data):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)}))})),Object(hr["a"])(zr,F["b"].ACTIONS.UPDATE_APPLICATION_CONFIG,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),Hr.patch("config",t).then((function(t){"success"===t.data.status?(e.commit(F["b"].MUTATIONS.UPDATE_APPLICATION_CONFIG,t.data.data),Wo.push("/admin/application")):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)}))})),zr),co=(yr={},Object(hr["a"])(yr,F["b"].GETTERS.APP_CONFIG,(function(e){return e.application.config})),Object(hr["a"])(yr,F["b"].GETTERS.APP_LOADING,(function(e){return e.appLoading})),Object(hr["a"])(yr,F["b"].GETTERS.APP_STATS,(function(e){return e.application.statistics})),Object(hr["a"])(yr,F["b"].GETTERS.ERROR_MESSAGES,(function(e){return e.errorMessages})),Object(hr["a"])(yr,F["b"].GETTERS.LANGUAGE,(function(e){return e.language})),Object(hr["a"])(yr,F["b"].GETTERS.LOCALE,(function(e){return e.locale})),yr),ao=(wr={},Object(hr["a"])(wr,F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES,(function(e){e.errorMessages=null})),Object(hr["a"])(wr,F["b"].MUTATIONS.SET_ERROR_MESSAGES,(function(e,t){e.errorMessages=t})),Object(hr["a"])(wr,F["b"].MUTATIONS.UPDATE_APPLICATION_CONFIG,(function(e,t){e.application.config=t})),Object(hr["a"])(wr,F["b"].MUTATIONS.UPDATE_APPLICATION_LOADING,(function(e,t){e.appLoading=t})),Object(hr["a"])(wr,F["b"].MUTATIONS.UPDATE_APPLICATION_STATS,(function(e,t){e.application.statistics=t})),Object(hr["a"])(wr,F["b"].MUTATIONS.UPDATE_LANG,(function(e,t){e.language=t,e.locale=X[t]})),wr),io={root:!0,language:"en",locale:$["a"],errorMessages:null,application:{},appLoading:!1},so=(Vr={},Object(hr["a"])(Vr,F["c"].ACTIONS.GET_SPORTS,(function(e){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),Hr.get("sports").then((function(t){"success"===t.data.status?e.commit(F["c"].MUTATIONS.SET_SPORTS,t.data.data.sports):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)}))})),Object(hr["a"])(Vr,F["c"].ACTIONS.UPDATE_SPORTS,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),Hr.patch("sports/".concat(t.id),{is_active:t.isActive}).then((function(t){"success"===t.data.status?e.dispatch(F["c"].ACTIONS.GET_SPORTS):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)}))})),Vr),lo=Object(hr["a"])({},F["c"].GETTERS.SPORTS,(function(e){return e.sports})),uo=Object(hr["a"])({},F["c"].MUTATIONS.SET_SPORTS,(function(e,t){e.sports=t})),Oo={sports:[]},mo={state:Oo,actions:so,getters:lo,mutations:uo},Eo=mo,po=Object(hr["a"])({},F["d"].ACTIONS.GET_USER_STATS,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),Hr.get("stats/".concat(t.username,"/").concat(t.filterType),{params:t.params}).then((function(t){"success"===t.data.status?e.commit(F["d"].MUTATIONS.UPDATE_USER_STATS,t.data.data.statistics):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)}))})),bo=Object(hr["a"])({},F["d"].GETTERS.USER_STATS,(function(e){return e.statistics})),To=(Br={},Object(hr["a"])(Br,F["d"].MUTATIONS.UPDATE_USER_STATS,(function(e,t){e.statistics=t})),Object(hr["a"])(Br,F["d"].MUTATIONS.EMPTY_USER_STATS,(function(e){e.statistics={}})),Br),So={statistics:{}},fo={state:So,actions:po,getters:bo,mutations:To},_o=fo,jo=(Gr={},Object(hr["a"])(Gr,F["e"].ACTIONS.EMPTY_USER,(function(e){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(F["e"].MUTATIONS.UPDATE_USER,{})})),Object(hr["a"])(Gr,F["e"].ACTIONS.EMPTY_USERS,(function(e){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(F["e"].MUTATIONS.UPDATE_USERS,[]),e.commit(F["e"].MUTATIONS.UPDATE_USERS_PAGINATION,{})})),Object(hr["a"])(Gr,F["e"].ACTIONS.GET_USER,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(F["e"].MUTATIONS.UPDATE_USERS_LOADING,!0),Hr.get("users/".concat(t)).then((function(t){"success"===t.data.status?e.commit(F["e"].MUTATIONS.UPDATE_USER,t.data.data.users[0]):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)})).finally((function(){return e.commit(F["e"].MUTATIONS.UPDATE_USERS_LOADING,!1)}))})),Object(hr["a"])(Gr,F["e"].ACTIONS.GET_USERS,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(F["e"].MUTATIONS.UPDATE_USERS_LOADING,!0),Hr.get("users",{params:t}).then((function(t){"success"===t.data.status?(e.commit(F["e"].MUTATIONS.UPDATE_USERS,t.data.data.users),e.commit(F["e"].MUTATIONS.UPDATE_USERS_PAGINATION,t.data.pagination)):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)})).finally((function(){return e.commit(F["e"].MUTATIONS.UPDATE_USERS_LOADING,!1)}))})),Object(hr["a"])(Gr,F["e"].ACTIONS.UPDATE_USER,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),Hr.patch("users/".concat(t.username),{admin:t.admin}).then((function(t){"success"===t.data.status?e.commit(F["e"].MUTATIONS.UPDATE_USER_IN_USERS,t.data.data.users[0]):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)})).finally((function(){return e.commit(F["e"].MUTATIONS.UPDATE_USERS_LOADING,!1)}))})),Gr),Ao=(xr={},Object(hr["a"])(xr,F["e"].GETTERS.USER,(function(e){return e.user})),Object(hr["a"])(xr,F["e"].GETTERS.USERS,(function(e){return e.users})),Object(hr["a"])(xr,F["e"].GETTERS.USERS_LOADING,(function(e){return e.loading})),Object(hr["a"])(xr,F["e"].GETTERS.USERS_PAGINATION,(function(e){return e.pagination})),xr),No=(Fr={},Object(hr["a"])(Fr,F["e"].MUTATIONS.UPDATE_USER,(function(e,t){e.user=t})),Object(hr["a"])(Fr,F["e"].MUTATIONS.UPDATE_USER_IN_USERS,(function(e,t){e.users=e.users.map((function(e){return e.username===t.username?t:e}))})),Object(hr["a"])(Fr,F["e"].MUTATIONS.UPDATE_USERS,(function(e,t){e.users=t})),Object(hr["a"])(Fr,F["e"].MUTATIONS.UPDATE_USERS_LOADING,(function(e,t){e.loading=t})),Object(hr["a"])(Fr,F["e"].MUTATIONS.UPDATE_USERS_PAGINATION,(function(e,t){e.pagination=t})),Fr),go={user:{},users:[],loading:!1,pagination:{}},Ro={state:go,actions:jo,getters:Ao,mutations:No},Io=Ro,Uo=n("4870"),vo=function(e,t,n){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),Hr.get("workouts",{params:t}).then((function(t){"success"===t.data.status?(e.commit(F["f"].MUTATIONS[n],t.data.data.workouts),n===Uo["c"]["SET_USER_WORKOUTS"]&&e.commit(F["f"].MUTATIONS.SET_WORKOUTS_PAGINATION,t.data.pagination)):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)}))},ho=(Wr={},Object(hr["a"])(Wr,F["f"].ACTIONS.GET_CALENDAR_WORKOUTS,(function(e,t){e.commit(F["f"].MUTATIONS.EMPTY_CALENDAR_WORKOUTS),vo(e,t,Uo["c"]["SET_CALENDAR_WORKOUTS"])})),Object(hr["a"])(Wr,F["f"].ACTIONS.GET_USER_WORKOUTS,(function(e,t){vo(e,t,Uo["c"]["SET_USER_WORKOUTS"])})),Object(hr["a"])(Wr,F["f"].ACTIONS.GET_TIMELINE_WORKOUTS,(function(e,t){vo(e,t,Uo["c"]["SET_TIMELINE_WORKOUTS"])})),Object(hr["a"])(Wr,F["f"].ACTIONS.GET_MORE_TIMELINE_WORKOUTS,(function(e,t){vo(e,t,Uo["c"]["ADD_TIMELINE_WORKOUTS"])})),Object(hr["a"])(Wr,F["f"].ACTIONS.GET_WORKOUT_DATA,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(F["f"].MUTATIONS.SET_WORKOUT_LOADING,!0);var n=t.segmentId?"/segment/".concat(t.segmentId):"";Hr.get("workouts/".concat(t.workoutId)).then((function(r){var o=r.data.data.workouts[0];if("success"===r.data.status){if(t.segmentId&&(0===o.segments.length||!o.segments[+t.segmentId-1]))throw new Error("WORKOUT_NOT_FOUND");e.commit(F["f"].MUTATIONS.SET_WORKOUT,r.data.data.workouts[0]),r.data.data.workouts[0].with_gpx&&(Hr.get("workouts/".concat(t.workoutId,"/chart_data").concat(n)).then((function(t){"success"===t.data.status&&e.commit(F["f"].MUTATIONS.SET_WORKOUT_CHART_DATA,t.data.data.chart_data)})),Hr.get("workouts/".concat(t.workoutId,"/gpx").concat(n)).then((function(t){"success"===t.data.status&&e.commit(F["f"].MUTATIONS.SET_WORKOUT_GPX,t.data.data.gpx)})))}else e.commit(F["f"].MUTATIONS.EMPTY_WORKOUT),Object(K["b"])(e,null)})).catch((function(t){e.commit(F["f"].MUTATIONS.EMPTY_WORKOUT),Object(K["b"])(e,t)})).finally((function(){return e.commit(F["f"].MUTATIONS.SET_WORKOUT_LOADING,!1)}))})),Object(hr["a"])(Wr,F["f"].ACTIONS.DELETE_WORKOUT,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(F["f"].MUTATIONS.SET_WORKOUT_LOADING,!0),Hr.delete("workouts/".concat(t.workoutId)).then((function(){e.commit(F["f"].MUTATIONS.EMPTY_WORKOUT),e.dispatch(F["a"].ACTIONS.GET_USER_PROFILE),Wo.push("/")})).catch((function(t){Object(K["b"])(e,t)})).finally((function(){return e.commit(F["f"].MUTATIONS.SET_WORKOUT_LOADING,!1)}))})),Object(hr["a"])(Wr,F["f"].ACTIONS.EDIT_WORKOUT,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(F["f"].MUTATIONS.SET_WORKOUT_LOADING,!0),Hr.patch("workouts/".concat(t.workoutId),t.data).then((function(){e.dispatch(F["a"].ACTIONS.GET_USER_PROFILE),e.dispatch(F["f"].ACTIONS.GET_WORKOUT_DATA,{workoutId:t.workoutId}).then((function(){Wo.push({name:"Workout",params:{workoutId:t.workoutId}})}))})).catch((function(t){Object(K["b"])(e,t)})).finally((function(){return e.commit(F["f"].MUTATIONS.SET_WORKOUT_LOADING,!1)}))})),Object(hr["a"])(Wr,F["f"].ACTIONS.ADD_WORKOUT,(function(e,t){if(e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(F["f"].MUTATIONS.SET_WORKOUT_LOADING,!0),!t.file)throw new Error("No file part");var n=new FormData;n.append("file",t.file),n.append("data",'{"sport_id": '.concat(t.sport_id,', "notes": "').concat(t.notes,'"}')),Hr.post("workouts",n,{headers:{"content-type":"multipart/form-data"}}).then((function(t){if("created"===t.data.status){e.dispatch(F["a"].ACTIONS.GET_USER_PROFILE);var n=t.data.data.workouts[0];Wo.push(1===t.data.data.workouts.length?"/workouts/".concat(n.id):"/")}})).catch((function(t){Object(K["b"])(e,t)})).finally((function(){return e.commit(F["f"].MUTATIONS.SET_WORKOUT_LOADING,!1)}))})),Object(hr["a"])(Wr,F["f"].ACTIONS.ADD_WORKOUT_WITHOUT_GPX,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(F["f"].MUTATIONS.SET_WORKOUT_LOADING,!0),Hr.post("workouts/no_gpx",t).then((function(t){if("created"===t.data.status){e.dispatch(F["a"].ACTIONS.GET_USER_PROFILE);var n=t.data.data.workouts[0];Wo.push("/workouts/".concat(n.id))}})).catch((function(t){Object(K["b"])(e,t)})).finally((function(){return e.commit(F["f"].MUTATIONS.SET_WORKOUT_LOADING,!1)}))})),Wr),Do=(Kr={},Object(hr["a"])(Kr,F["f"].GETTERS.CALENDAR_WORKOUTS,(function(e){return e.calendar_workouts})),Object(hr["a"])(Kr,F["f"].GETTERS.TIMELINE_WORKOUTS,(function(e){return e.timeline_workouts})),Object(hr["a"])(Kr,F["f"].GETTERS.USER_WORKOUTS,(function(e){return e.user_workouts})),Object(hr["a"])(Kr,F["f"].GETTERS.WORKOUT_DATA,(function(e){return e.workoutData})),Object(hr["a"])(Kr,F["f"].GETTERS.WORKOUTS_PAGINATION,(function(e){return e.pagination})),Kr),Co=($r={},Object(hr["a"])($r,F["f"].MUTATIONS.ADD_TIMELINE_WORKOUTS,(function(e,t){e.timeline_workouts=e.timeline_workouts.concat(t)})),Object(hr["a"])($r,F["f"].MUTATIONS.SET_CALENDAR_WORKOUTS,(function(e,t){e.calendar_workouts=t})),Object(hr["a"])($r,F["f"].MUTATIONS.SET_TIMELINE_WORKOUTS,(function(e,t){e.timeline_workouts=t})),Object(hr["a"])($r,F["f"].MUTATIONS.SET_USER_WORKOUTS,(function(e,t){e.user_workouts=t})),Object(hr["a"])($r,F["f"].MUTATIONS.SET_WORKOUTS_PAGINATION,(function(e,t){e.pagination=t})),Object(hr["a"])($r,F["f"].MUTATIONS.SET_WORKOUT,(function(e,t){e.workoutData.workout=t})),Object(hr["a"])($r,F["f"].MUTATIONS.SET_WORKOUT_CHART_DATA,(function(e,t){e.workoutData.chartData=t})),Object(hr["a"])($r,F["f"].MUTATIONS.SET_WORKOUT_GPX,(function(e,t){e.workoutData.gpx=t})),Object(hr["a"])($r,F["f"].MUTATIONS.SET_WORKOUT_LOADING,(function(e,t){e.workoutData.loading=t})),Object(hr["a"])($r,F["f"].MUTATIONS.EMPTY_CALENDAR_WORKOUTS,(function(e){e.calendar_workouts=[]})),Object(hr["a"])($r,F["f"].MUTATIONS.EMPTY_WORKOUTS,(function(e){e.calendar_workouts=[],e.user_workouts=[],e.timeline_workouts=[]})),Object(hr["a"])($r,F["f"].MUTATIONS.EMPTY_WORKOUT,(function(e){e.workoutData={gpx:"",loading:!1,workout:{},chartData:[]}})),$r),ko={calendar_workouts:[],timeline_workouts:[],pagination:{},user_workouts:[],workoutData:{gpx:"",loading:!1,workout:{},chartData:[]}},Po={state:ko,actions:ho,getters:Do,mutations:Co},Mo=Po,Lo={authUserModule:ro,sportsModule:Eo,statsModule:_o,usersModule:Io,workoutsModule:Mo},zo={state:io,actions:oo,getters:co,mutations:ao,modules:Lo},yo=zo,wo=Object(vr["a"])(yo),Vo=wo,Bo=function(e){var t=/(\/profile)(\/edit)*(\/*)/,n=e.replace(t,"").toUpperCase();return""===n?"PROFILE":n.toUpperCase()},Go=[{path:"/",name:"Dashboard",component:function(){return Promise.all([n.e("main~workouts"),n.e("main")]).then(n.bind(null,"7277"))}},{path:"/login",name:"Login",component:function(){return Promise.all([n.e("main~workouts"),n.e("main")]).then(n.bind(null,"d277"))},props:{action:"login"}},{path:"/register",name:"Register",component:function(){return Promise.all([n.e("main~workouts"),n.e("main")]).then(n.bind(null,"d277"))},props:{action:"register"}},{path:"/password-reset/sent",name:"PasswordEmailSent",component:function(){return n.e("reset").then(n.bind(null,"364c"))},props:{action:"request-sent"}},{path:"/password-reset/request",name:"PasswordResetRequest",component:function(){return n.e("reset").then(n.bind(null,"364c"))},props:{action:"reset-request"}},{path:"/password-reset/password-updated",name:"PasswordUpdated",component:function(){return n.e("reset").then(n.bind(null,"364c"))},props:{action:"password-updated"}},{path:"/password-reset",name:"PasswordReset",component:function(){return n.e("reset").then(n.bind(null,"364c"))},props:{action:"reset"}},{path:"/profile",name:"Profile",component:function(){return n.e("profile").then(n.bind(null,"36e8"))},children:[{path:"",name:"UserProfile",component:bn,props:function(e){return{tab:Bo(e.path)}},children:[{path:"",name:"UserInfos",component:Tn["a"]},{path:"preferences",name:"UserPreferences",component:Nn}]},{path:"edit",name:"UserProfileEdition",component:vn,props:function(e){return{tab:Bo(e.path)}},children:[{path:"",name:"UserInfosEdition",component:Jn},{path:"picture",name:"UserPictureEdition",component:dr},{path:"preferences",name:"UserPreferencesEdition",component:Ur}]}]},{path:"/statistics",name:"Statistics",component:function(){return Promise.all([n.e("main~workouts"),n.e("main")]).then(n.bind(null,"ccb2"))}},{path:"/users/:username",name:"User",component:function(){return n.e("profile").then(n.bind(null,"ad3d"))}},{path:"/workouts",name:"Workouts",component:function(){return Promise.all([n.e("main~workouts"),n.e("workouts")]).then(n.bind(null,"0385"))}},{path:"/workouts/:workoutId",name:"Workout",component:function(){return Promise.all([n.e("main~workouts"),n.e("workouts")]).then(n.bind(null,"304a"))},props:{displaySegment:!1}},{path:"/workouts/:workoutId/edit",name:"EditWorkout",component:function(){return Promise.all([n.e("main~workouts"),n.e("workouts")]).then(n.bind(null,"8ee9"))}},{path:"/workouts/:workoutId/segment/:segmentId",name:"WorkoutSegment",component:function(){return Promise.all([n.e("main~workouts"),n.e("workouts")]).then(n.bind(null,"304a"))},props:{displaySegment:!0}},{path:"/workouts/add",name:"AddWorkout",component:function(){return Promise.all([n.e("main~workouts"),n.e("workouts")]).then(n.bind(null,"692d"))}},{path:"/admin",name:"Administration",component:function(){return n.e("admin").then(n.bind(null,"89b3"))},children:[{path:"",name:"AdministrationMenu",component:rt},{path:"application",name:"ApplicationAdministration",component:Le},{path:"application/edit",name:"ApplicationAdministrationEdition",component:Le,props:{edition:!0}},{path:"sports",name:"SportsAdministration",component:vt},{path:"users",name:"UsersAdministration",component:tn}]},{path:"/:pathMatch(.*)*",name:"not-found",component:function(){return Promise.all([n.e("main~workouts"),n.e("main")]).then(n.bind(null,"e19f"))}}],xo=Object(Ee["a"])({history:Object(Ee["b"])("/"),routes:Go}),Fo=["/login","/password-reset","/password-reset/password-updated","/password-reset/request","/password-reset/sent","/register"];xo.beforeEach((function(e,t,n){Vo.dispatch(F["a"].ACTIONS.CHECK_AUTH_USER).then((function(){if(Vo.getters[F["a"].GETTERS.IS_AUTHENTICATED]&&Fo.includes(e.path))return n("/");if(Vo.getters[F["a"].GETTERS.IS_AUTHENTICATED]||Fo.includes(e.path))n();else{var t="/"===e.path?{path:"/login"}:{path:"/login",query:{from:e.fullPath}};n(t)}})).catch((function(e){console.error(e),n()}))}));var Wo=xo,Ko={class:"alert-message"},$o=["innerHTML"];function Ho(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",Ko,[Object(c["createElementVNode"])("div",{innerHTML:e.$t(e.message)},null,8,$o)])}var Yo=Object(c["defineComponent"])({name:"AlertMessage",props:{message:String}});n("f5dfd");const qo=g()(Yo,[["render",Ho],["__scopeId","data-v-f5e8066a"]]);var Xo=qo,Zo={class:"custom-textarea"},Qo=["id","name","maxLenght","disabled"],Jo={class:"remaining-chars"};function ec(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",Zo,[Object(c["withDirectives"])(Object(c["createElementVNode"])("textarea",{id:e.name,name:e.name,maxLenght:e.charLimit,disabled:e.disabled,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.text=t}),onInput:t[1]||(t[1]=function(){return e.updateText&&e.updateText.apply(e,arguments)})},null,40,Qo),[[c["vModelText"],e.text]]),Object(c["createElementVNode"])("div",Jo,Object(c["toDisplayString"])(e.$t("workouts.REMAINING_CHARS"))+": "+Object(c["toDisplayString"])(e.text.length)+"/"+Object(c["toDisplayString"])(e.charLimit),1)])}n("a9e3");var tc=Object(c["defineComponent"])({name:"CustomTextArea",props:{charLimit:{type:Number,default:500},disabled:{type:Boolean,default:!1},input:{type:String,default:""},name:{type:String,required:!0}},emits:["updateValue"],setup:function(e,t){var n=t.emit,r=Object(c["ref"])("");function o(e){n("updateValue",e.target.value)}return Object(c["watch"])((function(){return e.input}),(function(e){r.value=e})),{text:r,updateText:o}}});n("aa0a");const nc=g()(tc,[["render",ec],["__scopeId","data-v-ad3739fc"]]);var rc=nc,oc={class:"dropdown-wrapper"},cc={key:0,class:"dropdown-list"},ac=["onClick"];function ic(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",oc,[Object(c["createElementVNode"])("div",{class:"dropdown-selected",onClick:t[0]||(t[0]=function(){return e.toggleDropdown&&e.toggleDropdown.apply(e,arguments)})},[Object(c["renderSlot"])(e.$slots,"default",{},void 0,!0)]),e.isOpen?(Object(c["openBlock"])(),Object(c["createElementBlock"])("ul",cc,[(Object(c["openBlock"])(!0),Object(c["createElementBlock"])(c["Fragment"],null,Object(c["renderList"])(e.dropdownOptions,(function(t,n){return Object(c["openBlock"])(),Object(c["createElementBlock"])("li",{class:Object(c["normalizeClass"])(["dropdown-item",{selected:t.value===e.selected}]),key:n,onClick:function(n){return e.updateSelected(t)}},Object(c["toDisplayString"])(t.label),11,ac)})),128))])):Object(c["createCommentVNode"])("",!0)])}var sc=Object(c["defineComponent"])({name:"Dropdown",props:{options:{type:Object,required:!0},selected:{type:String,required:!0}},emits:{selected:function(e){return e}},setup:function(e,t){var n=t.emit,r=Object(Ee["c"])(),o=Object(c["ref"])(!1),a=e.options.map((function(e){return e}));function i(){o.value=!o.value}function s(e){n("selected",e),o.value=!1}return Object(c["watch"])((function(){return r.path}),(function(){return o.value=!1})),{dropdownOptions:a,isOpen:o,toggleDropdown:i,updateSelected:s}}});n("95ba");const lc=g()(sc,[["render",ic],["__scopeId","data-v-5ef2ddef"]]);var uc=lc,dc={class:"error-message"},Oc={key:0},mc={key:1};function Ec(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",dc,[Array.isArray(e.message)?(Object(c["openBlock"])(),Object(c["createElementBlock"])("ul",Oc,[(Object(c["openBlock"])(!0),Object(c["createElementBlock"])(c["Fragment"],null,Object(c["renderList"])(e.message,(function(t,n){return Object(c["openBlock"])(),Object(c["createElementBlock"])("li",{key:n},Object(c["toDisplayString"])(e.$t(t)),1)})),128))])):(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",mc,Object(c["toDisplayString"])(e.$t(e.message)),1))])}var pc=Object(c["defineComponent"])({name:"ErrorMessage",props:{message:[String,Array]}});n("4b55");const bc=g()(pc,[["render",Ec],["__scopeId","data-v-5c177a93"]]);var Tc=bc,Sc=["title"];function fc(e,t,n,r,o,a){var i=Object(c["resolveComponent"])("CyclingSport"),s=Object(c["resolveComponent"])("CyclingTransport"),l=Object(c["resolveComponent"])("Hiking"),u=Object(c["resolveComponent"])("MountainBiking"),d=Object(c["resolveComponent"])("MountainBikingElectric"),O=Object(c["resolveComponent"])("Rowing"),m=Object(c["resolveComponent"])("Running"),E=Object(c["resolveComponent"])("SkiingAlpine"),p=Object(c["resolveComponent"])("SkiingCrossCountry"),b=Object(c["resolveComponent"])("Trail"),T=Object(c["resolveComponent"])("Walking");return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",{class:"sport-img",style:Object(c["normalizeStyle"])({fill:e.sportColors[e.sportLabel]}),title:e.title?e.title:e.$t("sports.".concat(e.sportLabel,".LABEL"))},["Cycling (Sport)"===e.sportLabel?(Object(c["openBlock"])(),Object(c["createBlock"])(i,{key:0})):Object(c["createCommentVNode"])("",!0),"Cycling (Transport)"===e.sportLabel?(Object(c["openBlock"])(),Object(c["createBlock"])(s,{key:1})):Object(c["createCommentVNode"])("",!0),"Hiking"===e.sportLabel?(Object(c["openBlock"])(),Object(c["createBlock"])(l,{key:2})):Object(c["createCommentVNode"])("",!0),"Mountain Biking"===e.sportLabel?(Object(c["openBlock"])(),Object(c["createBlock"])(u,{key:3})):Object(c["createCommentVNode"])("",!0),"Mountain Biking (Electric)"===e.sportLabel?(Object(c["openBlock"])(),Object(c["createBlock"])(d,{key:4})):Object(c["createCommentVNode"])("",!0),"Rowing"===e.sportLabel?(Object(c["openBlock"])(),Object(c["createBlock"])(O,{key:5})):Object(c["createCommentVNode"])("",!0),"Running"===e.sportLabel?(Object(c["openBlock"])(),Object(c["createBlock"])(m,{key:6})):Object(c["createCommentVNode"])("",!0),"Skiing (Alpine)"===e.sportLabel?(Object(c["openBlock"])(),Object(c["createBlock"])(E,{key:7})):Object(c["createCommentVNode"])("",!0),"Skiing (Cross Country)"===e.sportLabel?(Object(c["openBlock"])(),Object(c["createBlock"])(p,{key:8})):Object(c["createCommentVNode"])("",!0),"Trail"===e.sportLabel?(Object(c["openBlock"])(),Object(c["createBlock"])(b,{key:9})):Object(c["createCommentVNode"])("",!0),"Walking"===e.sportLabel?(Object(c["openBlock"])(),Object(c["createBlock"])(T,{key:10})):Object(c["createCommentVNode"])("",!0)],12,Sc)}var _c={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 491.737 491.737",style:{"enable-background":"new 0 0 491.737 491.737"},"xml:space":"preserve"},jc=Object(c["createElementVNode"])("desc",{id:"cyclingSportDescription"}," silhouette of a person riding a bicycle ",-1),Ac=Object(c["createElementVNode"])("g",null,[Object(c["createElementVNode"])("path",{d:"M321.097,112.359c20.973,12.338,47.985,5.315,60.293-15.652c12.34-20.973,5.35-47.974-15.623-60.304\n\t\tc-21.009-12.332-47.99-5.317-60.314,15.65C293.129,73.036,300.103,100.027,321.097,112.359z"}),Object(c["createElementVNode"])("path",{d:"M393.081,264.102c-2.414,0-4.8,0.194-7.169,0.362l-14.431-71.605l4.702-1.757c10.666-3.987,16.093-15.868,12.098-26.54\n\t\tc-3.994-10.681-15.946-16.084-26.531-12.09l-51.823,19.38l-2.321-18.864c6.3-13.193,5.541-29.78-4.767-41.482\n\t\tc-21.224-24.092-47.12-12.508-55.191-5.976l-106.884,86.555l0.016,0.024c-3.319,2.893-6.089,6.485-7.86,10.842\n\t\tc-2.191,5.396-2.596,11.067-1.564,16.384c-8.503,0.669-15.255,7.571-15.255,16.246c0,9.085,7.346,16.44,16.432,16.48l-6.797,15.906\n\t\tc-8.62-2.465-17.674-3.866-27.066-3.866C44.27,264.102,0,308.354,0,362.754c0,54.403,44.27,98.663,98.668,98.663\n\t\tc54.403,0,98.652-44.26,98.652-98.663c0-36.228-19.683-67.867-48.858-85.024l10.957-25.652h17.767l60.281,24.462l-32.201,52.773\n\t\tc-8.297,13.612-3.994,31.382,9.615,39.685c4.691,2.86,9.878,4.229,15,4.229c9.729,0,19.234-4.929,24.677-13.838l29.339-48.095\n\t\tl19.072,11.511c-5.447,12.227-8.54,25.726-8.54,39.95c0,54.403,44.254,98.663,98.652,98.663c54.402,0,98.656-44.26,98.656-98.663\n\t\tC491.737,308.354,447.483,264.102,393.081,264.102z M98.668,436.671c-40.756,0-73.923-33.161-73.923-73.917\n\t\tc0-40.756,33.167-73.909,73.923-73.909c5.944,0,11.649,0.896,17.188,2.224l-20.476,47.893\n\t\tc-11.758,1.619-20.843,11.598-20.843,23.792c0,13.323,10.808,24.132,24.13,24.132c8.767,0,16.367-4.745,20.589-11.76h52.065\n\t\tC165.395,409.988,135.188,436.671,98.668,436.671z M171.322,350.383h-52.065c-0.355-0.588-0.708-1.176-1.112-1.732l20.476-47.901\n\t\tC155.679,311.776,167.793,329.595,171.322,350.383z M296.781,290.175l7.666-12.564c4.416-7.233,5.431-16.038,2.774-24.084\n\t\tc-2.661-8.046-8.718-14.515-16.562-17.704l-52.725-21.395l32.443-26.281l1.804,14.691c0.756,6.267,4.366,11.841,9.761,15.12\n\t\tc3.271,1.981,6.979,2.988,10.698,2.988c2.435,0,4.88-0.435,7.218-1.306l48.15-18.001l13.627,67.691\n\t\tc-18.268,6.162-34.117,17.51-45.848,32.314L296.781,290.175z M375.396,337.633l-38.003-22.94\n\t\tc7.877-9.118,17.787-16.319,29.205-20.734L375.396,337.633z M393.081,436.671c-40.757,0-73.907-33.161-73.907-73.917\n\t\tc0-9.544,1.965-18.597,5.268-26.983l44.541,26.888c0,0.032-0.016,0.064-0.016,0.095c0,13.323,10.808,24.132,24.114,24.132\n\t\tc13.322,0,24.118-10.81,24.118-24.132c0-10.478-6.721-19.307-16.06-22.64l-10.277-51.043c0.756-0.024,1.463-0.226,2.22-0.226\n\t\tc40.757,0,73.911,33.153,73.911,73.909C466.992,403.51,433.838,436.671,393.081,436.671z"})],-1),Nc=[jc,Ac];function gc(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("svg",_c,Nc)}var Rc={name:"CyclingSport"};const Ic=g()(Rc,[["render",gc]]);var Uc=Ic,vc={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 491.737 491.737",style:{"enable-background":"new 0 0 491.737 491.737"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"},hc=Object(c["createElementVNode"])("desc",{id:"cyclingTransportDescription"}," silhouette of a person riding a bicycle (for transportation) ",-1),Dc=Object(c["createElementVNode"])("g",{id:"g147"},[Object(c["createElementVNode"])("path",{d:"m 189.097,82.359 c 20.97701,12.331184 47.97442,5.308784 60.293,-15.652 12.32942,-20.979222 5.35418,-47.981117 -15.623,-60.304 -21.00482,-12.3391184 -47.99,-5.317 -60.314,15.65 -12.324,20.983 -5.34599,47.967183 15.644,60.306 z",id:"path143"}),Object(c["createElementVNode"])("path",{d:"m 393.081,264.102 c -2.414,0 -4.8,0.194 -7.169,0.362 l -14.431,-71.605 4.702,-1.757 c 10.666,-3.987 16.093,-15.868 12.098,-26.54 -3.994,-10.681 -15.946,-16.084 -26.531,-12.09 l -63.05508,-1.53717 C 284.04753,137.09803 248.90259,106.55858 243.33317,101.62481 217.77732,75.090916 186.1698,85.012419 178.0988,91.544419 L 140.764,192.085 l 0.016,0.024 c -3.319,2.893 -6.089,6.485 -7.86,10.842 -2.191,5.396 -2.596,11.067 -1.564,16.384 -8.503,0.669 -15.255,7.571 -15.255,16.246 0,9.085 7.346,16.44 16.432,16.48 l -6.797,15.906 c -8.62,-2.465 -17.674,-3.866 -27.066,-3.866 C 44.27,264.102 0,308.354 0,362.754 c 0,54.403 44.27,98.663 98.668,98.663 54.403,0 98.652,-44.26 98.652,-98.663 0,-36.228 -19.683,-67.867 -48.858,-85.024 l 10.957,-25.652 h 17.767 l 60.281,24.462 -32.201,52.773 c -8.297,13.612 -3.994,31.382 9.615,39.685 4.691,2.86 9.878,4.229 15,4.229 9.729,0 19.234,-4.929 24.677,-13.838 l 29.339,-48.095 19.072,11.511 c -5.447,12.227 -8.54,25.726 -8.54,39.95 0,54.403 44.254,98.663 98.652,98.663 54.402,0 98.656,-44.26 98.656,-98.663 0,-54.401 -44.254,-98.653 -98.656,-98.653 z M 98.668,436.671 c -40.756,0 -73.923,-33.161 -73.923,-73.917 0,-40.756 33.167,-73.909 73.923,-73.909 5.944,0 11.649,0.896 17.188,2.224 L 95.38,338.962 c -11.758,1.619 -20.843,11.598 -20.843,23.792 0,13.323 10.808,24.132 24.13,24.132 8.767,0 16.367,-4.745 20.589,-11.76 h 52.065 c -5.926,34.862 -36.133,61.545 -72.653,61.545 z m 72.654,-86.288 h -52.065 c -0.355,-0.588 -0.708,-1.176 -1.112,-1.732 l 20.476,-47.901 c 17.058,11.026 29.172,28.845 32.701,49.633 z m 125.459,-60.208 7.666,-12.564 c 4.416,-7.233 5.431,-16.038 2.774,-24.084 -2.661,-8.046 -8.718,-14.515 -16.562,-17.704 l -73.83357,-31.7176 16.7558,-45.21274 c 10.36934,4.13303 41.82171,27.90767 45.77423,28.08592 3.271,1.981 8.57725,1.46711 12.29625,1.46711 2.435,0 18.50584,0.70472 20.84384,-0.16628 L 343.32113,188.03378 361.635,269.33 c -18.268,6.162 -34.117,17.51 -45.848,32.314 z m 78.615,47.458 -38.003,-22.94 c 7.877,-9.118 17.787,-16.319 29.205,-20.734 z m 17.685,99.038 c -40.757,0 -73.907,-33.161 -73.907,-73.917 0,-9.544 1.965,-18.597 5.268,-26.983 l 44.541,26.888 c 0,0.032 -0.016,0.064 -0.016,0.095 0,13.323 10.808,24.132 24.114,24.132 13.322,0 24.118,-10.81 24.118,-24.132 0,-10.478 -6.721,-19.307 -16.06,-22.64 l -10.277,-51.043 c 0.756,-0.024 1.463,-0.226 2.22,-0.226 40.757,0 73.911,33.153 73.911,73.909 -10e-4,40.756 -33.155,73.917 -73.912,73.917 z",id:"path145"})],-1),Cc=[hc,Dc];function kc(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("svg",vc,Cc)}var Pc={name:"CyclingTransport"};const Mc=g()(Pc,[["render",kc]]);var Lc=Mc,zc={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 463.507 463.507",style:{"enable-background":"new 0 0 463.507 463.507"},"xml:space":"preserve"},yc=Object(c["createElementVNode"])("desc",{id:"hikingDescription"},"silhouette of a person hiking",-1),wc=Object(c["createElementVNode"])("g",null,[Object(c["createElementVNode"])("path",{d:"M246.413,78.492c21.688,0,39.255-17.573,39.255-39.251c0-21.67-17.567-39.24-39.255-39.24\n\t\tc-21.652,0-39.242,17.57-39.242,39.24C207.171,60.919,224.761,78.492,246.413,78.492z"}),Object(c["createElementVNode"])("path",{d:"M386.604,202.858c0-11.185-9.066-20.251-20.253-20.251h-68.479l-38.62-54.832l0.127-0.933\n\t\tc1.378-10.474-1.474-21.067-7.911-29.444c-6.441-8.378-15.932-13.852-26.408-15.23c-11.596-1.511-22.592,2.224-30.852,9.225V45.779\n\t\tc0-7.847-6.362-14.217-14.225-14.217H140.59c-7.867,0-14.225,6.37-14.225,14.217v168.953c0,20.68,15.821,37.476,35.979,39.446\n\t\tl-3.043,7.073l-23.859,90.136l-53.73,72.188c-8.006,10.768-5.794,25.987,4.984,34.001c4.348,3.245,9.443,4.811,14.491,4.811\n\t\tc7.422,0,14.729-3.385,19.511-9.795l56.529-75.945c1.851-2.484,3.213-5.299,4.003-8.289l16.266-61.414l44.521,40.877l-6.076,88.603\n\t\tc-0.917,13.393,9.177,24.99,22.58,25.908c0.552,0.04,1.124,0.056,1.691,0.056c12.66,0,23.339-9.819,24.208-22.642l6.882-100.264\n\t\tc0.508-7.364-2.371-14.572-7.815-19.564l-45.994-42.219l13.992-90.613l19.331,27.435c3.801,5.387,9.972,8.592,16.552,8.592h70.882\n\t\tl1.339,232.294c0,4.478,3.626,8.101,8.101,8.101c4.479,0,8.101-3.624,8.101-8.101l-1.339-234.036\n\t\tC381.588,218.245,386.604,211.15,386.604,202.858z"})],-1),Vc=[yc,wc];function Bc(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("svg",zc,Vc)}var Gc={name:"Hiking"};const xc=g()(Gc,[["render",Bc]]);var Fc=xc,Wc={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 503.162 503.162",style:{"enable-background":"new 0 0 503.162 503.162"},"xml:space":"preserve"},Kc=Object(c["createElementVNode"])("desc",{id:"mountainBikingDescription"}," silhouette of a person riding a mountain bike ",-1),$c=Object(c["createElementVNode"])("g",null,[Object(c["createElementVNode"])("g",null,[Object(c["createElementVNode"])("path",{d:"M149.951,67.997c15.711-7.143,22.739-25.675,15.596-41.416c-7.124-15.701-25.723-22.682-41.453-15.539\n\t\t\tc-15.721,7.134-22.702,25.752-15.578,41.444C115.679,68.216,134.23,75.14,149.951,67.997z"}),Object(c["createElementVNode"])("path",{d:"M87.517,89.072l-32.828,87.755c-1.979,5.967-1.683,12.594,1.1,18.733c4.055,8.922,12.604,14.525,21.755,15.271\n\t\t\tl76.873,6.244l29.137,64.184c4.122,9.046,14.832,13.148,23.906,9.017c9.075-4.131,13.072-14.859,8.951-23.944l-36.424-80.201\n\t\t\tc0,0-3.605-13.76-21.343-14.133l-43.873-2.572l21.009-55.166l31.671,20.588c5.584,3.663,10.997,3.682,15.1,1.722l55.051-24.997\n\t\t\tc17.069-7.755,6.952-30.036-10.108-22.29l-47.506,21.707l-53.55-34.846c0,0-11.638-8.013-24.241-2.285\n\t\t\tC102.205,73.858,91.112,77.243,87.517,89.072z"}),Object(c["createElementVNode"])("path",{d:"M423.687,182.488l-2.61,15.042c-2.123,12.154-13.35,25.092-25.092,28.888l-3.711,1.195\n\t\t\tc3.041-16.543,1.282-34.148-6.215-50.633c-19.498-42.974-70.094-61.87-112.943-42.419\n\t\t\tc-42.878,19.479-61.936,70.017-42.438,112.981c17.069,37.562,57.881,56.744,96.534,47.966l-0.784,1.415\n\t\t\tc-5.968,10.796-20.817,19.221-33.144,18.8l-17.892-0.622c-12.336-0.411-30.514,5.002-40.603,12.116l-22.376,15.759\n\t\t\tc-10.107,7.104-28.276,12.632-40.612,12.354l-12.001-0.277c12.718-22.845,14.889-51.159,3.242-76.806\n\t\t\tc-19.517-42.955-70.074-61.879-113.019-42.381c-42.792,19.44-61.87,70.007-42.372,112.933\n\t\t\tc16.667,36.711,56.084,55.788,93.914,48.444l-1.32,2.056c-6.675,10.385-22.08,18.398-34.406,17.92l-32.79-1.291\n\t\t\tc-12.326-0.497-24.021,8.97-26.096,21.143l-2.62,15.339c-0.564,3.271-0.354,6.11,0.401,8.501c-0.43,1.778-0.736,3.548-0.736,5.326\n\t\t\tv9.562c0,10.557,8.568,19.125,19.125,19.125h460.932c10.557,0,19.115-8.568,19.106-19.125l-0.125-167.507\n\t\t\tc0-2.782-0.593-5.221-1.616-7.286c1.396-3.806,2.057-7.841,1.598-11.839l-4.677-40.497c-1.415-12.249-9.763-29.146-18.637-37.724\n\t\t\tl-36.127-34.951C434.712,167.418,425.79,170.325,423.687,182.488z"})])],-1),Hc=[Kc,$c];function Yc(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("svg",Wc,Hc)}var qc={name:"MountainBiking"};const Xc=g()(qc,[["render",Yc]]);var Zc=Xc,Qc={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg",x:"0px",y:"0px",viewBox:"0 0 503.162 503.162",style:{"enable-background":"new 0 0 503.162 503.162"},"xml:space":"preserve"},Jc=Object(c["createStaticVNode"])(' silhouette of a person riding an electric mountain bike ',18),ea=[Jc];function ta(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("svg",Qc,ea)}var na={name:"MountainBikingElectric"};const ra=g()(na,[["render",ta]]);var oa=ra,ca={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 534.51 534.51",style:{"enable-background":"new 0 0 534.51 534.51"},"xml:space":"preserve"},aa=Object(c["createElementVNode"])("desc",{id:"rowingDescription"},"silhouette of a person rowing",-1),ia=Object(c["createElementVNode"])("g",null,[Object(c["createElementVNode"])("g",null,[Object(c["createElementVNode"])("path",{d:"M70.517,393.857h132.622l-67.205,68.631c-3.28,3.385-3.204,8.797,0.172,12.076c1.597,1.568,3.72,2.43,5.958,2.43\n\t\t\tc2.305,0,4.533-0.947,6.12-2.572l78.881-80.555h221.315c12.45,0,30.676-6.006,40.296-13.914\n\t\t\tc8.788-7.229,19.049-16.217,26.345-24.299c10.375-9.811,22.214-23.639-4.255-22.834c-6.98,0.248-206.789,0.02-223.926,0\n\t\t\tl47.144-48.139l22.176-22.032l28.209,9.17c10.414,3.385,22.472-0.803,26.919-9.362c4.446-8.558,0.268-18.407-9.343-21.993\n\t\t\tl-17.404-6.512l54.698-54.774c12.507,6.617,28.362,4.867,38.899-5.671l46.541-46.607c13.11-13.015,13.11-33.957,0-46.923\n\t\t\tc-12.909-13.034-34.042-13.034-46.942,0l-46.512,46.598c-10.892,10.815-12.508,27.139-5.26,39.742l-57.853,59.077L253.744,183.09\n\t\t\tc-1.482-0.851-14.153-5.786-26.833-10.643c-14.898-5.719-30.371,0.583-34.53,13.971l-7.525,24.241l-35.324,118.451\n\t\t\tc-0.468,1.34-0.603,2.562-0.746,3.711H14.136c-12.45,0-17.662,8.836-11.618,19.727l23.237,21.592\n\t\t\tC39.123,385.068,58.066,393.857,70.517,393.857z M272.63,248.727c1.797-5.967,8.099-9.39,14.075-7.64l51.37,14.975l-33.038,33.737\n\t\t\tl-43.453,43.012h-14.2L272.63,248.727z"}),Object(c["createElementVNode"])("circle",{cx:"248.953",cy:"109.842",r:"52.326"})])],-1),sa=[aa,ia];function la(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("svg",ca,sa)}var ua={name:"Rowing"};const da=g()(ua,[["render",la]]);var Oa=da,ma={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 494.49 494.49",style:{"enable-background":"new 0 0 494.49 494.49"},"xml:space":"preserve"},Ea=Object(c["createElementVNode"])("desc",{id:"runningDescription"},"silhouette of a running person",-1),pa=Object(c["createElementVNode"])("g",null,[Object(c["createElementVNode"])("path",{d:"M282.74,80.771c22.318,0,40.401-18.08,40.401-40.389C323.141,18.084,305.058,0,282.74,0\n\t\tc-22.281,0-40.378,18.084-40.378,40.383C242.362,62.691,260.458,80.771,282.74,80.771z"}),Object(c["createElementVNode"])("path",{d:"M400.207,188.547H331.47l-38.766-55.03l0.123-0.944c1.384-10.514-1.475-21.146-7.94-29.556\n\t\tc-6.461-8.409-16.007-13.903-26.52-15.287c-10.926-1.429-22.619,3.12-31.206,8.646c-1.441,0.928-84.97,54.921-84.97,54.921\n\t\tc-5.175,3.358-8.542,8.877-9.165,15.016c-0.634,6.13,1.574,12.222,5.976,16.541l58.982,58l-6.417,48.954l-18.707,65.584l-67.8-19.4\n\t\tc-12.911-3.676-26.44,3.796-30.159,16.747c-3.699,12.951,3.799,26.459,16.758,30.168l91.271,26.109\n\t\tc2.192,0.627,4.444,0.936,6.7,0.936c4.113,0,8.195-1.04,11.848-3.073c5.655-3.146,9.833-8.409,11.611-14.635l21.963-77.057\n\t\tl26.365,36.639l6.684,119.628c0.73,12.991,11.501,23.036,24.349,23.036c0.441,0,0.92-0.016,1.379-0.039\n\t\tc13.453-0.748,23.745-12.262,23-25.713l-7.083-126.736c-0.271-4.643-1.846-9.116-4.56-12.887l-32.24-44.811l11.959-91.279\n\t\tl19.409,27.555c3.794,5.407,10.005,8.624,16.613,8.624h79.28c11.226,0,20.326-9.101,20.326-20.329\n\t\tC420.533,197.647,411.432,188.547,400.207,188.547z M204.606,190.357l-19.026-18.717l23.476-15.206L204.606,190.357z"})],-1),ba=[Ea,pa];function Ta(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("svg",ma,ba)}var Sa={name:"Running"};const fa=g()(Sa,[["render",Ta]]);var _a=fa,ja={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 522.362 522.362",style:{"enable-background":"new 0 0 522.362 522.362"},"xml:space":"preserve"},Aa=Object(c["createElementVNode"])("desc",{id:"alpineSkiingDescription"},"silhouette of a person skiing",-1),Na=Object(c["createElementVNode"])("g",null,[Object(c["createElementVNode"])("g",null,[Object(c["createElementVNode"])("path",{d:"M14.314,351.859L408.088,461.78c4.484,1.311,9.104,1.97,13.731,1.97l0,0c17.471,0,33.746-9.429,42.467-24.604\n\t\t\tc2.716-4.724,3.137-10.27,1.157-15.214c-1.912-4.762-5.767-8.31-10.576-9.744c-7.373-2.237-15.481,1.109-22.146,9.229\n\t\t\tc-3.548,4.303-9.496,6.244-15.07,4.714l-136.467-38.078c1.396-0.555,2.812-1.195,4.236-2.065l103.266-63.15\n\t\t\tc15.443-9.362,18.493-33.957,7.812-43.883l-64.758-60.233l39.972-21.688l69.682,9.744c5.23,0.736,9.744-2.037,10.079-6.187\n\t\t\tc0.344-4.141-3.624-8.1-8.855-8.826l-48.605-6.828l22.472-12.192c39.895-23.275,5.823-85.192-35.334-63.112l-87.554,61.19\n\t\t\tl-117.503-16.515l2.543-12.087c0.545-2.582-1.109-5.116-3.691-5.661c-2.572-0.593-5.116,1.1-5.661,3.701l-2.678,12.709\n\t\t\tl-18.331-2.582c-5.231-0.727-9.467,2.123-9.467,6.369s4.236,8.281,9.467,9.017l15.176,2.123l-2.544,12.087\n\t\t\tc-0.545,2.582,1.109,5.125,3.691,5.671c0.334,0.076,0.66,0.105,0.994,0.105c2.209,0,4.198-1.54,4.676-3.787l2.678-12.737\n\t\t\tl102.414,14.315l-5.308,3.72c-4.332,3.022-10.155,9.151-11.723,14.201c-3.844,12.45-1.473,26.717,10.452,37.705l68.802,62.175\n\t\t\tc0,0-50.978,31.776-74.998,46.397c-14.219,8.606-13.674,23.858-6.129,33.393L23.705,318.199\n\t\t\tc-10.012-2.792-20.569,2.554-23.113,11.695C-2,339.169,4.159,349.029,14.314,351.859z"}),Object(c["createElementVNode"])("path",{d:"M450.842,72.003c-15.291,16.715-14.201,42.667,2.639,58.121c16.706,15.31,42.716,14.086,58.073-2.668\n\t\t\tc15.386-16.677,14.172-42.734-2.544-58.016C492.305,54.064,466.17,55.192,450.842,72.003z"})])],-1),ga=[Aa,Na];function Ra(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("svg",ja,ga)}var Ia={name:"SkiingAlpine"};const Ua=g()(Ia,[["render",Ra]]);var va=Ua,ha={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 296 296",style:{"enable-background":"new 0 0 296 296"},"xml:space":"preserve"},Da=Object(c["createElementVNode"])("desc",{id:"crossCountrySkiingDescription"}," silhouette of a person skiing (cross country) ",-1),Ca=Object(c["createElementVNode"])("g",null,[Object(c["createElementVNode"])("path",{d:"M241.313,246.906h-39.564l0.456-1.273c5.62-18.374,3.479-37.58-6.027-54.278c-5.653-9.929-13.443-18.018-22.745-23.959\n\t\tl12.886-51.126c3.035-12.05-4.272-24.266-16.322-27.301c-2.634-0.664-5.278-0.826-7.833-0.559\n\t\tc-0.151-0.011-0.299-0.032-0.452-0.038c-26.03-1.077-51.443,8.485-70.33,25.993L41.586,82.855\n\t\tc-4.332-2.741-10.065-1.451-12.806,2.881s-1.451,10.065,2.88,12.806l47.625,30.136c-2.557,6.013-0.962,13.224,4.375,17.531\n\t\tc2.774,2.24,6.104,3.33,9.413,3.33c4.377-0.001,8.717-1.907,11.68-5.579l0.478-0.591c8.686-10.766,20.465-18.479,33.484-22.317\n\t\tl-11.095,44.046c-1.061,4.214-0.854,8.448,0.374,12.305c-12.908,17.917-28.398,33.68-46.198,46.979l-14.649,10.727\n\t\tc-3.938,2.943-6.001,7.798-6.005,11.798H8.25c-4.556,0-8.083,4.131-8.083,8.688v2.063c0,4.556,3.527,8.25,8.083,8.25h55.188\n\t\th161.375H280c9.113,0,16.167-7.387,16.167-16.5v-2.5H241.313z M153.974,192.398c0.741-0.153,1.471-0.231,2.188-0.457\n\t\tc5.742,3.406,10.53,8.313,13.945,14.311c5.378,9.447,6.59,20.402,3.41,30.797l-1.799,5.674c-0.447,1.461-0.656,3.184-0.657,4.184\n\t\th-69.909C121.581,231.906,139.297,213.274,153.974,192.398z M167,57.938c0-15.378,12.466-27.844,27.844-27.844\n\t\ts27.844,12.466,27.844,27.844s-12.466,27.844-27.844,27.844S167,73.315,167,57.938z"})],-1),ka=[Da,Ca];function Pa(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("svg",ha,ka)}var Ma={name:"SkiingCrossCountry"};const La=g()(Ma,[["render",Pa]]);var za=La,ya={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 535.876 535.876",style:{"enable-background":"new 0 0 535.876 535.876"},"xml:space":"preserve"},wa=Object(c["createElementVNode"])("desc",{id:"trailDescription"},"silhouette of a person running (trail)",-1),Va=Object(c["createElementVNode"])("g",null,[Object(c["createElementVNode"])("g",null,[Object(c["createElementVNode"])("path",{d:"M505.204,326.949c-5.805-10.892-15.176-10.862-20.923,0.067l-7.114,13.512c-5.757,10.92-20.416,19.775-32.752,19.775\n\t\t\th-16.753c-12.346,0-29.645,6.847-38.643,15.29l-32.35,30.342l-1.233-105.388c0.822-18.446-10.596-24.634-10.596-24.634\n\t\t\tl-56.543-25.972l33.67-67.645l38.527,22.912c0,0,15.472,9.715,26.727-9.324l37.026-63.093c1.625-3.519,2.094-7.564,1.052-11.609\n\t\t\tc-2.381-9.256-11.81-14.86-21.095-12.479c-4.083,1.042-7.459,3.49-9.754,6.713l-30.772,51.962l-62.777-37.102\n\t\t\tc-4.733-2.716-10.519-3.691-16.257-2.209l-78.345,20.12c-5.03,1.291-8.96,4.762-11.017,9.142l-38.097,76.165\n\t\t\tc-2.591,3.854-3.624,8.73-2.371,13.607c2.285,8.941,11.456,14.363,20.435,12.059c5.04-1.291,8.951-4.743,10.997-9.161\n\t\t\tl35.314-70.858l28.936-7.296l-76.203,149.921l-65.981,16.734c-1.759,0.393-3.48,1.023-5.163,1.836\n\t\t\tc-10.596,5.412-14.679,18.179-9.267,28.803c4.733,9.266,15.252,13.636,24.901,10.978l78.067-20.187\n\t\t\tc18.6-4.093,23.313-14.449,23.313-14.449l30.581-58.79l62.28,35.678l0.593,86.216c0.01,1.08,0.259,2.161,0.421,3.241l-11.6-4.188\n\t\t\tc-11.608-4.188-30.57-4.608-42.361-0.956l-26.135,8.128c-11.79,3.663-30.791,3.338-42.447-0.717l-19.221-6.694\n\t\t\tc-11.657-4.054-28.831-0.984-38.374,6.838L109.9,433.954c-9.544,7.822-26.67,10.72-38.25,6.483L40.84,429.135\n\t\t\tc-11.58-4.256-25.608,1.157-31.336,12.097l-7.21,13.789c-5.728,10.93-0.354,19.794,11.982,19.794H500.27\n\t\t\tc12.336,0,24.309-9.802,26.728-21.907l8.004-39.981c2.409-12.097-0.325-30.733-6.14-41.616L505.204,326.949z"}),Object(c["createElementVNode"])("path",{d:"M326.395,126.625c17.806-4.562,28.563-22.721,23.983-40.526c-4.581-17.844-22.74-28.554-40.555-23.983\n\t\t\tc-17.796,4.581-28.535,22.711-23.964,40.535C290.439,120.476,308.599,131.205,326.395,126.625z"})])],-1),Ba=[wa,Va];function Ga(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("svg",ya,Ba)}var xa={name:"Trail"};const Fa=g()(xa,[["render",Ga]]);var Wa=Fa,Ka={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 494.49 494.49",style:{"enable-background":"new 0 0 494.49 494.49"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"},$a=Object(c["createStaticVNode"])('silhouette of a walking person',3),Ha=[$a];function Ya(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("svg",Ka,Ha)}var qa={name:"Walking"};const Xa=g()(qa,[["render",Ya]]);var Za=Xa,Qa=Object(c["defineComponent"])({name:"SportImage",components:{CyclingSport:Uc,CyclingTransport:Lc,Hiking:Fc,MountainBiking:Zc,MountainBikingElectric:oa,Rowing:Oa,Running:_a,SkiingAlpine:va,SkiingCrossCountry:za,Trail:Wa,Walking:Za},props:{sportLabel:{type:String,required:!0},title:{type:String,required:!1}},setup:function(){return{sportColors:Object(c["inject"])("sportColors")}}});const Ja=g()(Qa,[["render",fc]]);var ei=Ja,ti={class:"loader"};function ni(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",ti)}var ri=Object(c["defineComponent"])({name:"Loader"});n("b373");const oi=g()(ri,[["render",ni],["__scopeId","data-v-8bf75da8"]]);var ci=oi,ai={id:"modal"},ii={class:"custom-modal"},si={key:0,class:"modal-message"},li={key:1,class:"modal-message"},ui={class:"modal-buttons"};function di(e,t,n,r,o,a){var i=Object(c["resolveComponent"])("i18n-t"),s=Object(c["resolveComponent"])("ErrorMessage"),l=Object(c["resolveComponent"])("Card");return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",ai,[Object(c["createElementVNode"])("div",ii,[Object(c["createVNode"])(l,null,{title:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.title),1)]})),content:Object(c["withCtx"])((function(){return[e.strongMessage?(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",si,[Object(c["createVNode"])(i,{keypath:e.message},{default:Object(c["withCtx"])((function(){return[Object(c["createElementVNode"])("span",null,Object(c["toDisplayString"])(e.strongMessage),1)]})),_:1},8,["keypath"])])):(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",li,Object(c["toDisplayString"])(e.message),1)),e.errorMessages?(Object(c["openBlock"])(),Object(c["createBlock"])(s,{key:2,message:e.errorMessages},null,8,["message"])):Object(c["createCommentVNode"])("",!0),Object(c["createElementVNode"])("div",ui,[e.errorMessages?Object(c["createCommentVNode"])("",!0):(Object(c["openBlock"])(),Object(c["createElementBlock"])("button",{key:0,class:"confirm",onClick:t[0]||(t[0]=function(t){return e.emit("confirmAction")})},Object(c["toDisplayString"])(e.$t("buttons.YES")),1)),Object(c["createElementVNode"])("button",{class:"cancel",onClick:t[1]||(t[1]=function(t){return e.emit("cancelAction")})},Object(c["toDisplayString"])(e.$t("buttons.".concat(e.errorMessages?"CANCEL":"NO"))),1)])]})),_:1})])])}var Oi=Object(c["defineComponent"])({name:"Modal",props:{title:{type:String,required:!0},message:{type:String,required:!0},strongMessage:{type:String||null,default:null}},emits:["cancelAction","confirmAction"],setup:function(e,t){var n=t.emit,r=Object(W["a"])(),o=Object(c["computed"])((function(){return r.getters[F["b"].GETTERS.ERROR_MESSAGES]}));return Object(c["onUnmounted"])((function(){return r.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES)})),{errorMessages:o,emit:n}}});n("25ba");const mi=g()(Oi,[["render",di],["__scopeId","data-v-366182c4"]]);var Ei=mi,pi=[Xo,et,rc,uc,Tc,ci,Ei,ei],bi={mounted:function(e,t){e.clickOutsideEvent=function(n){e===n.target||e.contains(n.target)||t.value(n)},document.body.addEventListener("click",e.clickOutsideEvent),document.body.addEventListener("touchstart",e.clickOutsideEvent)},unmounted:function(e){e.clickOutsideEvent&&(document.body.removeEventListener("click",e.clickOutsideEvent),document.body.removeEventListener("touchstart",e.clickOutsideEvent),e.clickOutsideEvent=void 0)}};r["Chart"].register(r["BarElement"],r["LineElement"],r["PointElement"],r["Legend"],r["Title"],r["Tooltip"],r["Filler"],r["BarController"],r["CategoryScale"],r["LineController"],r["LinearScale"],o["a"]);var Ti=Object(c["createApp"])(me).provide("sportColors",Rt["b"]).use(q).use(Vo).use(Wo).directive("click-outside",bi);pi.forEach((function(e){Ti.component(e.name,e)})),Ti.mount("#app")},d257:function(e,t,n){"use strict";n.d(t,"a",(function(){return o})),n.d(t,"b",(function(){return c}));n("caad"),n("2532"),n("d81d"),n("4de4"),n("d3b7"),n("ac1f"),n("1276");var r=n("dad5"),o=function(){return"/api/"},c=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"UNKNOWN",o=t?t.response?413===t.response.status?"file size is greater than the allowed size":t.response.data.message?t.response.data.message:n:t.message?t.message:n:n;e.commit(r["b"].MUTATIONS.SET_ERROR_MESSAGES,o.includes("\n")?o.split("\n").filter((function(e){return""!==e})).map((function(e){return"api.ERROR.".concat(e)})):"api.ERROR.".concat(o))}},d42e:function(e,t,n){"use strict";n("dc79")},da66:function(e,t,n){},dad5:function(e,t,n){"use strict";var r,o,c,a,i,s,l,u,d,O,m,E,p,b,T;n.d(t,"b",(function(){return f})),n.d(t,"c",(function(){return _})),n.d(t,"d",(function(){return j})),n.d(t,"a",(function(){return A})),n.d(t,"e",(function(){return N})),n.d(t,"f",(function(){return g})),function(e){e["CHECK_AUTH_USER"]="CHECK_AUTH_USER",e["DELETE_ACCOUNT"]="DELETE_ACCOUNT",e["DELETE_PICTURE"]="DELETE_PICTURE",e["GET_USER_PROFILE"]="GET_USER_PROFILE",e["LOGIN_OR_REGISTER"]="LOGIN_OR_REGISTER",e["LOGOUT"]="LOGOUT",e["SEND_PASSWORD_RESET_REQUEST"]="SEND_PASSWORD_RESET_REQUEST",e["RESET_USER_PASSWORD"]="RESET_USER_PASSWORD",e["UPDATE_USER_PICTURE"]="UPDATE_USER_PICTURE",e["UPDATE_USER_PROFILE"]="UPDATE_USER_PROFILE",e["UPDATE_USER_PREFERENCES"]="UPDATE_USER_PREFERENCES"}(r||(r={})),function(e){e["AUTH_TOKEN"]="AUTH_TOKEN",e["AUTH_USER_PROFILE"]="AUTH_USER_PROFILE",e["IS_ADMIN"]="IS_ADMIN",e["IS_AUTHENTICATED"]="IS_AUTHENTICATED",e["USER_LOADING"]="USER_LOADING"}(o||(o={})),function(e){e["CLEAR_AUTH_USER_TOKEN"]="CLEAR_AUTH_USER_TOKEN",e["UPDATE_AUTH_TOKEN"]="UPDATE_AUTH_TOKEN",e["UPDATE_AUTH_USER_PROFILE"]="UPDATE_AUTH_USER_PROFILE",e["UPDATE_USER_LOADING"]="UPDATE_USER_LOADING"}(c||(c={})),function(e){e["GET_APPLICATION_CONFIG"]="GET_APPLICATION_CONFIG",e["GET_APPLICATION_STATS"]="GET_APPLICATION_STATS",e["UPDATE_APPLICATION_CONFIG"]="UPDATE_APPLICATION_CONFIG"}(a||(a={})),function(e){e["APP_CONFIG"]="APP_CONFIG",e["APP_LOADING"]="APP_LOADING",e["APP_STATS"]="APP_STATS",e["ERROR_MESSAGES"]="ERROR_MESSAGES",e["LANGUAGE"]="LANGUAGE",e["LOCALE"]="LOCALE"}(i||(i={})),function(e){e["EMPTY_ERROR_MESSAGES"]="EMPTY_ERROR_MESSAGES",e["SET_ERROR_MESSAGES"]="SET_ERROR_MESSAGES",e["UPDATE_APPLICATION_CONFIG"]="UPDATE_APPLICATION_CONFIG",e["UPDATE_APPLICATION_LOADING"]="UPDATE_APPLICATION_LOADING",e["UPDATE_APPLICATION_STATS"]="UPDATE_APPLICATION_STATS",e["UPDATE_LANG"]="UPDATE_LANG"}(s||(s={})),function(e){e["GET_SPORTS"]="GET_SPORTS",e["UPDATE_SPORTS"]="UPDATE_SPORTS"}(l||(l={})),function(e){e["SPORTS"]="SPORTS"}(u||(u={})),function(e){e["SET_SPORTS"]="SET_SPORTS"}(d||(d={})),function(e){e["GET_USER_STATS"]="GET_USER_STATS"}(O||(O={})),function(e){e["USER_STATS"]="USER_STATS"}(m||(m={})),function(e){e["EMPTY_USER_STATS"]="EMPTY_USER_STATS",e["UPDATE_USER_STATS"]="UPDATE_USER_STATS"}(E||(E={})),function(e){e["EMPTY_USER"]="EMPTY_USER",e["EMPTY_USERS"]="EMPTY_USERS",e["GET_USER"]="GET_USER",e["GET_USERS"]="GET_USERS",e["UPDATE_USER"]="UPDATE_USER"}(p||(p={})),function(e){e["USER"]="USER",e["USERS"]="USERS",e["USERS_LOADING"]="USERS_LOADING",e["USERS_PAGINATION"]="USERS_PAGINATION"}(b||(b={})),function(e){e["UPDATE_USER"]="UPDATE_USER",e["UPDATE_USER_IN_USERS"]="UPDATE_USER_IN_USERS",e["UPDATE_USERS"]="UPDATE_USERS",e["UPDATE_USERS_LOADING"]="UPDATE_USERS_LOADING",e["UPDATE_USERS_PAGINATION"]="UPDATE_USERS_PAGINATION"}(T||(T={}));var S=n("4870"),f={ACTIONS:a,GETTERS:i,MUTATIONS:s},_={ACTIONS:l,GETTERS:u,MUTATIONS:d},j={ACTIONS:O,GETTERS:m,MUTATIONS:E},A={ACTIONS:r,GETTERS:o,MUTATIONS:c},N={ACTIONS:p,GETTERS:b,MUTATIONS:T},g={ACTIONS:S["a"],GETTERS:S["b"],MUTATIONS:S["c"]}},dc79:function(e,t,n){},e7b6:function(e,t,n){var r={"./en/en.ts":"c142","./fr/fr.ts":"663e"};function o(e){var t=c(e);return n(t)}function c(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=c,e.exports=o,o.id="e7b6"},edb9:function(e,t,n){},ee25:function(e,t,n){},f037:function(e,t,n){"use strict";n("aa8e")},f5dfd:function(e,t,n){"use strict";n("9838")},fa79:function(e,t,n){"use strict";n("9c9a")},fb34:function(e,t,n){},fb41:function(e,t,n){}}); +//# sourceMappingURL=app.1f820b50.js.map \ No newline at end of file diff --git a/fittrackee/dist/static/js/app.1f820b50.js.map b/fittrackee/dist/static/js/app.1f820b50.js.map new file mode 100644 index 00000000..0f8ad952 --- /dev/null +++ b/fittrackee/dist/static/js/app.1f820b50.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/Common/StatCard.vue?50fd","webpack:///./src/components/Common/StatCard.vue","webpack:///./src/components/Common/StatCard.vue?7652","webpack:///./src/utils/sports.ts","webpack:///./src/components/User/UserPicture.vue?f50a","webpack:///./src/components/Common/Card.vue?c8de","webpack:///./src/components/Common/Pagination.vue?862b","webpack:///./src/components/User/ProfileEdition/UserPictureEdition.vue?ff43","webpack:///./src/components/Common/Modal.vue?54d8","webpack:///./src/use/useStore.ts","webpack:///./src/components/Administration/AdminSports.vue?8181","webpack:///./src/components/Administration/AdminApplication.vue?90c5","webpack:///./src/components/User/ProfileDisplay/UserHeader.vue?63ff","webpack:///./src/components/User/ProfileDisplay/UserHeader.vue","webpack:///./src/components/User/ProfileDisplay/UserHeader.vue?24df","webpack:///./src/store/modules/workouts/enums.ts","webpack:///./src/components/Administration/AdminMenu.vue?9cf0","webpack:///./src/components/Common/ErrorMessage.vue?2ce3","webpack:///./src/components/User/ProfileDisplay/UserInfos.vue?46bb","webpack:///./src/components/User/ProfileDisplay/UserHeader.vue?92ff","webpack:///./src/components/User/ProfileEdition/UserInfosEdition.vue?ab94","webpack:///./src/utils/dates.ts","webpack:///./src/App.vue?fd49","webpack:///./src/locales/fr/administration.json","webpack:///./src/locales/fr/api.json","webpack:///./src/locales/fr/buttons.json","webpack:///./src/locales/fr/common.json","webpack:///./src/locales/fr/dashboard.json","webpack:///./src/locales/fr/error.json","webpack:///./src/locales/fr/sports.json","webpack:///./src/locales/fr/statistics.json","webpack:///./src/locales/fr/user.json","webpack:///./src/locales/fr/workouts.json","webpack:///./src/locales/fr/fr.ts","webpack:///./src/components/Common/Pagination.vue?600d","webpack:///./src/components/Common/Pagination.vue","webpack:///./src/components/Common/Pagination.vue?573e","webpack:///./src/components/User/ProfileDisplay/UserInfos.vue?53a8","webpack:///./src/components/User/ProfileDisplay/UserInfos.vue","webpack:///./src/components/User/ProfileDisplay/UserInfos.vue?9546","webpack:///./src/components/Common/FilterSelects.vue?d0a0","webpack:///./src/components/User/ProfileDisplay/index.vue?fee6","webpack:///./src/components/Common/StatCard.vue?c5f0","webpack:///./src/components/Common/FilterSelects.vue?5691","webpack:///./src/components/Common/FilterSelects.vue","webpack:///./src/components/Common/FilterSelects.vue?2f0a","webpack:///./src/components/NavBar.vue?09ae","webpack:///./src/components/Common/Dropdown.vue?8e34","webpack:///./src/utils/api.ts","webpack:///./src/components/Administration/AppStatsCards.vue?6b63","webpack:///./src/components/Common/CustomTextArea.vue?381d","webpack:///./src/components/Common/Loader.vue?105b","webpack:///./src/components/Administration/AdminUsers.vue?a06f","webpack:///./src/locales/en/administration.json","webpack:///./src/locales/en/api.json","webpack:///./src/locales/en/buttons.json","webpack:///./src/locales/en/common.json","webpack:///./src/locales/en/dashboard.json","webpack:///./src/locales/en/error.json","webpack:///./src/locales/en/sports.json","webpack:///./src/locales/en/statistics.json","webpack:///./src/locales/en/user.json","webpack:///./src/locales/en/workouts.json","webpack:///./src/locales/en/en.ts","webpack:///./src/utils/files.ts","webpack:///./src/components/User/UserPicture.vue?ef4d","webpack:///./src/components/User/UserPicture.vue","webpack:///./src/components/User/UserPicture.vue?dc88","webpack:///./src/components/User/ProfileDisplay/UserPreferences.vue?7c56","webpack:///./src/registerServiceWorker.ts","webpack:///./src/App.vue?f2bf","webpack:///./src/components/Footer.vue?eacb","webpack:///./src/components/Footer.vue","webpack:///./src/components/Footer.vue?14b8","webpack:///./src/components/NavBar.vue?dc7b","webpack:///./src/i18n.ts","webpack:///./src/utils/locales.ts","webpack:///./src/components/NavBar.vue","webpack:///./src/components/NavBar.vue?5ec4","webpack:///./src/components/NoConfig.vue?6f58","webpack:///./src/components/NoConfig.vue","webpack:///./src/components/NoConfig.vue?0078","webpack:///./src/App.vue","webpack:///./src/App.vue?8ecf","webpack:///./src/components/Administration/AdminApplication.vue?ca56","webpack:///./src/components/Administration/AdminApplication.vue","webpack:///./src/components/Administration/AdminApplication.vue?9c66","webpack:///./src/components/Administration/AdminMenu.vue?3001","webpack:///./src/components/Administration/AppStatsCards.vue?98e8","webpack:///./src/components/Administration/AppStatsCards.vue","webpack:///./src/components/Administration/AppStatsCards.vue?5d3b","webpack:///./src/components/Common/Card.vue?9886","webpack:///./src/components/Common/Card.vue","webpack:///./src/components/Common/Card.vue?ecbc","webpack:///./src/components/Administration/AdminMenu.vue","webpack:///./src/components/Administration/AdminMenu.vue?572b","webpack:///./src/components/Administration/AdminSports.vue?010d","webpack:///./src/components/Administration/AdminSports.vue","webpack:///./src/components/Administration/AdminSports.vue?8d91","webpack:///./src/components/Administration/AdminUsers.vue?be42","webpack:///./src/components/Administration/AdminUsers.vue","webpack:///./src/components/Administration/AdminUsers.vue?9006","webpack:///./src/components/User/ProfileDisplay/index.vue?af18","webpack:///./src/components/User/UserProfileTabs.vue?321f","webpack:///./src/components/User/UserProfileTabs.vue","webpack:///./src/components/User/UserProfileTabs.vue?68f5","webpack:///./src/components/User/ProfileDisplay/index.vue","webpack:///./src/components/User/ProfileDisplay/index.vue?d237","webpack:///./src/components/User/ProfileDisplay/UserPreferences.vue?470a","webpack:///./src/components/User/ProfileDisplay/UserPreferences.vue","webpack:///./src/components/User/ProfileDisplay/UserPreferences.vue?e51f","webpack:///./src/components/User/ProfileEdition/index.vue?a41c","webpack:///./src/components/User/ProfileEdition/index.vue","webpack:///./src/components/User/ProfileEdition/index.vue?27de","webpack:///./src/components/User/ProfileEdition/UserInfosEdition.vue?ed5f","webpack:///./src/components/User/ProfileEdition/UserInfosEdition.vue","webpack:///./src/components/User/ProfileEdition/UserInfosEdition.vue?a314","webpack:///./src/components/User/ProfileEdition/UserPictureEdition.vue?9c35","webpack:///./src/components/User/ProfileEdition/UserPictureEdition.vue","webpack:///./src/components/User/ProfileEdition/UserPictureEdition.vue?6a32","webpack:///./src/components/User/ProfileEdition/UserPreferencesEdition.vue?fa1e","webpack:///./src/components/User/ProfileEdition/UserPreferencesEdition.vue","webpack:///./src/components/User/ProfileEdition/UserPreferencesEdition.vue?a05c","webpack:///./src/api/authApi.ts","webpack:///./src/api/defaultApi.ts","webpack:///./src/store/modules/authUser/actions.ts","webpack:///./src/store/modules/authUser/getters.ts","webpack:///./src/store/modules/authUser/mutations.ts","webpack:///./src/store/modules/authUser/state.ts","webpack:///./src/store/modules/authUser/index.ts","webpack:///./src/store/modules/root/actions.ts","webpack:///./src/store/modules/root/getters.ts","webpack:///./src/store/modules/root/mutations.ts","webpack:///./src/store/modules/root/state.ts","webpack:///./src/store/modules/sports/actions.ts","webpack:///./src/store/modules/sports/getters.ts","webpack:///./src/store/modules/sports/mutations.ts","webpack:///./src/store/modules/sports/state.ts","webpack:///./src/store/modules/sports/index.ts","webpack:///./src/store/modules/statistics/actions.ts","webpack:///./src/store/modules/statistics/getters.ts","webpack:///./src/store/modules/statistics/mutations.ts","webpack:///./src/store/modules/statistics/state.ts","webpack:///./src/store/modules/statistics/index.ts","webpack:///./src/store/modules/users/actions.ts","webpack:///./src/store/modules/users/getters.ts","webpack:///./src/store/modules/users/mutations.ts","webpack:///./src/store/modules/users/state.ts","webpack:///./src/store/modules/users/index.ts","webpack:///./src/store/modules/workouts/actions.ts","webpack:///./src/store/modules/workouts/getters.ts","webpack:///./src/store/modules/workouts/mutations.ts","webpack:///./src/store/modules/workouts/state.ts","webpack:///./src/store/modules/workouts/index.ts","webpack:///./src/store/modules/root/index.ts","webpack:///./src/store/index.ts","webpack:///./src/router/index.ts","webpack:///./src/components/Common/AlertMessage.vue?e597","webpack:///./src/components/Common/AlertMessage.vue","webpack:///./src/components/Common/AlertMessage.vue?7dca","webpack:///./src/components/Common/CustomTextArea.vue?61c4","webpack:///./src/components/Common/CustomTextArea.vue","webpack:///./src/components/Common/CustomTextArea.vue?933e","webpack:///./src/components/Common/Dropdown.vue?4477","webpack:///./src/components/Common/Dropdown.vue","webpack:///./src/components/Common/Dropdown.vue?56da","webpack:///./src/components/Common/ErrorMessage.vue?b393","webpack:///./src/components/Common/ErrorMessage.vue","webpack:///./src/components/Common/ErrorMessage.vue?31ca","webpack:///./src/components/Common/Images/SportImage/index.vue?e8e2","webpack:///./src/components/Common/Images/SportImage/CyclingSport.vue","webpack:///./src/components/Common/Images/SportImage/CyclingSport.vue?1dcc","webpack:///./src/components/Common/Images/SportImage/CyclingTransport.vue","webpack:///./src/components/Common/Images/SportImage/CyclingTransport.vue?667c","webpack:///./src/components/Common/Images/SportImage/Hiking.vue","webpack:///./src/components/Common/Images/SportImage/Hiking.vue?75de","webpack:///./src/components/Common/Images/SportImage/MountainBiking.vue","webpack:///./src/components/Common/Images/SportImage/MountainBiking.vue?9b14","webpack:///./src/components/Common/Images/SportImage/MountainBikingElectric.vue","webpack:///./src/components/Common/Images/SportImage/MountainBikingElectric.vue?adb2","webpack:///./src/components/Common/Images/SportImage/Rowing.vue","webpack:///./src/components/Common/Images/SportImage/Rowing.vue?a825","webpack:///./src/components/Common/Images/SportImage/Running.vue","webpack:///./src/components/Common/Images/SportImage/Running.vue?275d","webpack:///./src/components/Common/Images/SportImage/SkiingAlpine.vue","webpack:///./src/components/Common/Images/SportImage/SkiingAlpine.vue?8028","webpack:///./src/components/Common/Images/SportImage/SkiingCrossCountry.vue","webpack:///./src/components/Common/Images/SportImage/SkiingCrossCountry.vue?a0cc","webpack:///./src/components/Common/Images/SportImage/Trail.vue","webpack:///./src/components/Common/Images/SportImage/Trail.vue?43e1","webpack:///./src/components/Common/Images/SportImage/Walking.vue","webpack:///./src/components/Common/Images/SportImage/Walking.vue?ecc5","webpack:///./src/components/Common/Images/SportImage/index.vue","webpack:///./src/components/Common/Images/SportImage/index.vue?1dbe","webpack:///./src/components/Common/Loader.vue?3fcd","webpack:///./src/components/Common/Loader.vue","webpack:///./src/components/Common/Loader.vue?bdb0","webpack:///./src/components/Common/Modal.vue?343d","webpack:///./src/components/Common/Modal.vue","webpack:///./src/components/Common/Modal.vue?1686","webpack:///./src/custom-components.ts","webpack:///./src/directives.ts","webpack:///./src/main.ts","webpack:///./src/utils/index.ts","webpack:///./src/components/User/UserProfileTabs.vue?903b","webpack:///./src/store/modules/authUser/enums.ts","webpack:///./src/store/modules/root/enums.ts","webpack:///./src/store/modules/sports/enums.ts","webpack:///./src/store/modules/statistics/enums.ts","webpack:///./src/store/modules/users/enums.ts","webpack:///./src/store/constants.ts","webpack:///./src/locales sync [A-Za-z0-9-_,\\s]+\\.ts$/","webpack:///./src/components/NoConfig.vue?6e1d","webpack:///./src/components/Common/AlertMessage.vue?4526","webpack:///./src/components/Footer.vue?24d3"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","render","_ctx","_cache","$props","$setup","$data","$options","icon","text","props","String","required","Number","__exports__","sportColors","Hiking","Rowing","Running","Trail","Walking","sportIdColors","sports","colors","map","sport","id","label","sortSports","a","b","sportATranslatedLabel","translatedLabel","toLowerCase","sportBTranslatedLabel","translateSports","onlyActive","filter","is_active","sort","getSportLabel","workout","sport_id","useStore","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_component_UserPicture","user","username","nb_workouts","$t","total_distance","toFixed","nb_sports","components","UserPicture","WorkoutsActions","WorkoutsGetters","WorkoutsMutations","getStartDate","duration","day","weekStartingMonday","weekStartsOn","incrementDate","getDateWithTZ","dateInUTC","tz","Date","getCalendarStartAndEnd","date","monthStart","monthEnd","start","end","formatWorkoutDate","dateTime","dateFormat","timeFormat","workout_date","workout_time","ctx","normalize","_normalize","interpolate","_interpolate","list","_list","plural","_plural","admin","api","buttons","common","dashboard","statistics","workouts","_component_router_link","disabled","pagination","has_prev","to","path","query","getQuery","page","default","_","rangePagination","pages","active","has_next","setup","cursor","newQuery","assign","_component_Modal","displayModal","title","strongMessage","onConfirmAction","$event","deleteUserAccount","onCancelAction","updateDisplayModal","registrationDate","first_name","last_name","birthDate","location","bio","fromAdmin","authUser","onClick","$router","go","Boolean","store","getters","GETTERS","AUTH_USER_PROFILE","created_at","format","birth_date","dispatch","ACTIONS","DELETE_ACCOUNT","order_by","onChange","onSelectUpdate","order","toUpperCase","per_page","nb","emits","emit","sortList","defaultPage","defaultPerPage","getNumberQueryValue","queryValue","defaultValue","getStringQueryValue","availableValues","includes","locationQuery","orderByList","defaultOrderBy","options","queryOptions","defaultSort","workoutsPayloadKeys","getRange","stop","Array","from","currentPage","concat","suffixes","getReadableFileSize","fileSize","asText","Math","floor","log","size","suffix","pow","getFileSizeInMB","authUserPictureUrl","alt","picture","ready","registered","cached","updatefound","updated","offline","_component_NavBar","_component_Loader","_component_router_view","_component_NoConfig","_component_Footer","onMenuInteraction","updateHideScrollBar","appLoading","hideScrollBar","appConfig","displayScrollButton","scrollToTop","version","_component_Dropdown","isMenuOpen","openMenu","closeMenu","isAuthenticated","capitalize","logout","availableLanguages","language","selected","onSelected","updateLanguage","loadLocaleMessages","locales","messages","keys","forEach","matched","match","locale","legacy","fallbackLocale","globalInjection","localeFromLanguage","en","fr","languageLabels","availableLocales","global","IS_AUTHENTICATED","now","LANGUAGE","option","toString","commit","MUTATIONS","UPDATE_LANG","LOGOUT","innerHTML","Footer","NavBar","NoConfig","APP_CONFIG","APP_LOADING","isScrolledToBottom","element","getBoundingClientRect","top","innerHeight","bottom","scroll","onscroll","querySelector","scrollTo","behavior","GET_APPLICATION_CONFIG","for","_hoisted_14","_hoisted_15","_component_ErrorMessage","_component_Card","content","onSubmit","min","appData","max_users","edition","step","max_single_file_size","max_zip_file_size","gpx_limit_import","errorMessages","onCancel","router","ERROR_MESSAGES","updateForm","EMPTY_ERROR_MESSAGES","formData","UPDATE_APPLICATION_CONFIG","_component_AppStatsCards","appStatistics","is_registration_enabled","_component_StatCard","usersCount","sportsCount","workoutCount","uploadDirSize","StatCard","uploads_dir_size","users","$slots","AppStatsCards","Card","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_component_SportImage","translatedSports","danger","updateSportStatus","has_workouts","SPORTS","isActive","UPDATE_SPORTS","_component_FilterSelects","_component_Pagination","onUpdateSelect","reloadUsers","email","timezone","updateUser","FilterSelects","Pagination","route","USERS","USERS_PAGINATION","loadUsers","queryParams","GET_USERS","UPDATE_USER","queryParam","EMPTY_USERS","_component_UserHeader","_component_UserProfileTabs","tabs","selectedTab","tab","checked","onInput","getPath","UserHeader","UserProfileTabs","fistDayOfWeek","weekm","loading","USER_LOADING","_hoisted_20","_hoisted_21","_component_CustomTextArea","deleteAccount","updateProfile","userForm","password","password_conf","charLimit","input","onUpdateValue","updateBio","updateUserForm","UPDATE_USER_PROFILE","updateUserPicture","accept","updatePictureFile","fileSizeLimit","pictureFile","deleteUserPicture","DELETE_PICTURE","files","UPDATE_USER_PICTURE","lang","weekStart","UPDATE_USER_PREFERENCES","authApi","baseURL","interceptors","use","config","authToken","AUTH_TOKEN","auth","headers","Authorization","context","localStorage","removeItem","EMPTY_USER_STATS","CLEAR_AUTH_USER_TOKEN","UPDATE_USERS","EMPTY_WORKOUTS","EMPTY_WORKOUT","actions","CHECK_AUTH_USER","UPDATE_AUTH_TOKEN","GET_USER_PROFILE","res","status","UPDATE_AUTH_USER_PROFILE","GET_SPORTS","catch","LOGIN_OR_REGISTER","post","actionType","token","auth_token","setItem","redirectUrl","payload","UPDATE_USER_LOADING","finally","form","FormData","append","delete","SEND_PASSWORD_RESET_REQUEST","RESET_USER_PASSWORD","state","authUserProfile","IS_ADMIN","mutations","authUserState","UPDATE_APPLICATION_LOADING","GET_APPLICATION_STATS","UPDATE_APPLICATION_STATS","patch","application","APP_STATS","LOCALE","SET_ERROR_MESSAGES","root","SET_SPORTS","sportsState","GET_USER_STATS","filterType","params","UPDATE_USER_STATS","USER_STATS","statisticsState","EMPTY_USER","UPDATE_USERS_PAGINATION","GET_USER","UPDATE_USERS_LOADING","UPDATE_USER_IN_USERS","USER","USERS_LOADING","updatedUser","usersState","SET_WORKOUTS_PAGINATION","GET_CALENDAR_WORKOUTS","EMPTY_CALENDAR_WORKOUTS","GET_USER_WORKOUTS","GET_TIMELINE_WORKOUTS","GET_MORE_TIMELINE_WORKOUTS","GET_WORKOUT_DATA","SET_WORKOUT_LOADING","segmentUrl","segmentId","workoutId","segments","SET_WORKOUT","with_gpx","SET_WORKOUT_CHART_DATA","chart_data","SET_WORKOUT_GPX","gpx","DELETE_WORKOUT","EDIT_WORKOUT","ADD_WORKOUT","file","notes","ADD_WORKOUT_WITHOUT_GPX","CALENDAR_WORKOUTS","calendar_workouts","TIMELINE_WORKOUTS","timeline_workouts","USER_WORKOUTS","user_workouts","WORKOUT_DATA","workoutData","WORKOUTS_PAGINATION","ADD_TIMELINE_WORKOUTS","SET_CALENDAR_WORKOUTS","SET_TIMELINE_WORKOUTS","SET_USER_WORKOUTS","chartData","workoutsState","authUserModule","sportsModule","statsModule","usersModule","workoutsModule","getTabFromPath","regex","replace","routes","component","action","children","UserInfos","UserPreferences","ProfileEdition","UserInfosEdition","UserPictureEdition","UserPreferencesEdition","displaySegment","AdminMenu","AdminApplication","AdminSports","AdminUsers","history","pathsWithoutAuthentication","beforeEach","next","fullPath","maxLenght","updateText","toggleDropdown","isOpen","dropdownOptions","index","updateSelected","isArray","subMessage","_component_CyclingSport","_component_CyclingTransport","_component_Hiking","_component_MountainBiking","_component_MountainBikingElectric","_component_Rowing","_component_Running","_component_SkiingAlpine","_component_SkiingCrossCountry","_component_Trail","_component_Walking","style","fill","sportLabel","xmlns","xmlns:xlink","x","y","viewBox","xml:space","xmlns:svg","cx","cy","CyclingSport","CyclingTransport","MountainBiking","MountainBikingElectric","SkiingAlpine","SkiingCrossCountry","_component_i18n_t","keypath","customComponents","AlertMessage","CustomTextArea","Dropdown","ErrorMessage","Loader","Modal","SportImage","clickOutsideDirective","mounted","binding","clickOutsideEvent","contains","body","addEventListener","unmounted","removeEventListener","register","app","App","provide","i18n","directive","mount","getApiUrl","handleError","msg","response","split","AuthUserActions","AuthUserGetters","AuthUserMutations","RootActions","RootGetters","RootMutations","SportsActions","SportsGetters","SportsMutation","StatisticsActions","StatisticsGetters","StatisticsMutations","UsersActions","UsersGetters","UsersMutations","ROOT_STORE","SPORTS_STORE","STATS_STORE","AUTH_USER_STORE","USERS_STORE","WORKOUTS_STORE","webpackContext","req","webpackContextResolve"],"mappings":"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","file":"static/js/app.1f820b50.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"static/js/\" + ({\"admin\":\"admin\",\"main~workouts\":\"main~workouts\",\"main\":\"main\",\"workouts\":\"workouts\",\"profile\":\"profile\",\"reset\":\"reset\"}[chunkId]||chunkId) + \".\" + {\"admin\":\"4047df15\",\"main~workouts\":\"aa540c70\",\"main\":\"265d6693\",\"workouts\":\"52ba33b8\",\"profile\":\"7e87449f\",\"reset\":\"98679f6c\",\"chunk-2d0c9189\":\"c81458cc\",\"chunk-2d0cf391\":\"020c75ea\",\"chunk-2d0da8f3\":\"c8c3e7e8\",\"chunk-2d2248b6\":\"d84473c1\",\"chunk-2d22523a\":\"4b710d99\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"admin\":1,\"main~workouts\":1,\"main\":1,\"workouts\":1,\"profile\":1,\"reset\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"static/css/\" + ({\"admin\":\"admin\",\"main~workouts\":\"main~workouts\",\"main\":\"main\",\"workouts\":\"workouts\",\"profile\":\"profile\",\"reset\":\"reset\"}[chunkId]||chunkId) + \".\" + {\"admin\":\"9f104fd3\",\"main~workouts\":\"539c93e4\",\"main\":\"0fb11713\",\"workouts\":\"368ff8e8\",\"profile\":\"1e84a078\",\"reset\":\"165584bc\",\"chunk-2d0c9189\":\"31d6cfe0\",\"chunk-2d0cf391\":\"31d6cfe0\",\"chunk-2d0da8f3\":\"31d6cfe0\",\"chunk-2d2248b6\":\"31d6cfe0\",\"chunk-2d22523a\":\"31d6cfe0\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import { normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"stat-card\" }\nconst _hoisted_2 = { class: \"stat-content box\" }\nconst _hoisted_3 = { class: \"stat-icon\" }\nconst _hoisted_4 = { class: \"stat-details\" }\nconst _hoisted_5 = { class: \"stat-huge\" }\nconst _hoisted_6 = { class: \"stat\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"i\", {\n class: _normalizeClass([\"fa\", `fa-${_ctx.icon}`])\n }, null, 2)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, _toDisplayString(_ctx.value), 1),\n _createElementVNode(\"div\", _hoisted_6, _toDisplayString(_ctx.text), 1)\n ])\n ])\n ]))\n}","\n import { defineComponent } from 'vue'\n\n export default defineComponent({\n name: 'StatCard',\n props: {\n icon: {\n type: String,\n required: true,\n },\n value: {\n type: [String, Number],\n required: true,\n },\n text: {\n type: String,\n required: true,\n },\n },\n })\n","import { render } from \"./StatCard.vue?vue&type=template&id=32e77e48&ts=true\"\nimport script from \"./StatCard.vue?vue&type=script&lang=ts\"\nexport * from \"./StatCard.vue?vue&type=script&lang=ts\"\n\nimport \"./StatCard.vue?vue&type=style&index=0&id=32e77e48&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { ISport, ITranslatedSport } from '@/types/sports'\nimport { IWorkout } from '@/types/workouts'\n\n// TODO: allow user to change colors\nexport const sportColors: Record = {\n 'Cycling (Sport)': '#4c9792',\n 'Cycling (Transport)': '#88af98',\n Hiking: '#bb757c',\n 'Mountain Biking': '#d4b371',\n 'Mountain Biking (Electric)': '#fc9d6f',\n Rowing: '#fcce72',\n Running: '#835b83',\n 'Skiing (Alpine)': '#67a4bd',\n 'Skiing (Cross Country)': '#9498d0',\n Trail: '#09a98a',\n Walking: '#838383',\n}\n\nexport const sportIdColors = (sports: ISport[]): Record => {\n const colors: Record = {}\n sports.map((sport) => (colors[sport.id] = sportColors[sport.label]))\n return colors\n}\n\nconst sortSports = (a: ITranslatedSport, b: ITranslatedSport): number => {\n const sportATranslatedLabel = a.translatedLabel.toLowerCase()\n const sportBTranslatedLabel = b.translatedLabel.toLowerCase()\n return sportATranslatedLabel > sportBTranslatedLabel\n ? 1\n : sportATranslatedLabel < sportBTranslatedLabel\n ? -1\n : 0\n}\n\nexport const translateSports = (\n sports: ISport[],\n t: CallableFunction,\n onlyActive = false\n): ITranslatedSport[] =>\n sports\n .filter((sport) => (onlyActive ? sport.is_active : true))\n .map((sport) => ({\n ...sport,\n translatedLabel: t(`sports.${sport.label}.LABEL`),\n }))\n .sort(sortSports)\n\nexport const getSportLabel = (workout: IWorkout, sports: ISport[]): string => {\n return sports\n .filter((sport) => sport.id === workout.sport_id)\n .map((sport) => sport.label)[0]\n}\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./UserPicture.vue?vue&type=style&index=0&id=4aed39f4&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Card.vue?vue&type=style&index=0&id=c5956538&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Pagination.vue?vue&type=style&index=0&id=56dc89d4&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./UserPictureEdition.vue?vue&type=style&index=0&id=0ea4550a&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Modal.vue?vue&type=style&index=0&id=366182c4&lang=scss&scoped=true\"","import { useStore as VuexStore } from 'vuex'\n\nimport { Store } from '@/store/types'\n\nexport function useStore(): Store {\n return VuexStore() as Store\n}\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./AdminSports.vue?vue&type=style&index=0&id=6d930723&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./AdminApplication.vue?vue&type=style&index=0&id=26175b66&lang=scss&scoped=true\"","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-a6fa997c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"box user-header\" }\nconst _hoisted_2 = { class: \"user-details\" }\nconst _hoisted_3 = { class: \"user-name\" }\nconst _hoisted_4 = { class: \"user-stats\" }\nconst _hoisted_5 = { class: \"user-stat\" }\nconst _hoisted_6 = { class: \"stat-number\" }\nconst _hoisted_7 = { class: \"stat-label\" }\nconst _hoisted_8 = { class: \"user-stat\" }\nconst _hoisted_9 = { class: \"stat-number\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"stat-label\" }, \"km\", -1))\nconst _hoisted_11 = { class: \"user-stat hide-small\" }\nconst _hoisted_12 = { class: \"stat-number\" }\nconst _hoisted_13 = { class: \"stat-label\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_UserPicture = _resolveComponent(\"UserPicture\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_UserPicture, { user: _ctx.user }, null, 8, [\"user\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(_ctx.user.username), 1),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"span\", _hoisted_6, _toDisplayString(_ctx.user.nb_workouts), 1),\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(_ctx.$t('workouts.WORKOUT', _ctx.user.nb_workouts)), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(Number(_ctx.user.total_distance).toFixed(0)), 1),\n _hoisted_10\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(_ctx.user.nb_sports), 1),\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('workouts.SPORT', _ctx.user.nb_sports)), 1)\n ])\n ])\n ])\n ]))\n}","\n import { PropType, defineComponent } from 'vue'\n\n import UserPicture from '@/components/User/UserPicture.vue'\n import { IUserProfile } from '@/types/user'\n\n export default defineComponent({\n name: 'ProfileDisplay',\n components: {\n UserPicture,\n },\n props: {\n user: {\n type: Object as PropType,\n required: true,\n },\n },\n })\n","import { render } from \"./UserHeader.vue?vue&type=template&id=a6fa997c&scoped=true&ts=true\"\nimport script from \"./UserHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./UserHeader.vue?vue&type=script&lang=ts\"\n\nimport \"./UserHeader.vue?vue&type=style&index=0&id=a6fa997c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-a6fa997c\"]])\n\nexport default __exports__","export enum WorkoutsActions {\n ADD_WORKOUT = 'ADD_WORKOUT',\n ADD_WORKOUT_WITHOUT_GPX = 'ADD_WORKOUT_WITHOUT_GPX',\n DELETE_WORKOUT = 'DELETE_WORKOUT',\n EDIT_WORKOUT = 'EDIT_WORKOUT',\n GET_CALENDAR_WORKOUTS = 'GET_CALENDAR_WORKOUTS',\n GET_USER_WORKOUTS = 'GET_USER_WORKOUTS',\n GET_TIMELINE_WORKOUTS = 'GET_TIMELINE_WORKOUTS',\n GET_MORE_TIMELINE_WORKOUTS = 'GET_MORE_TIMELINE_WORKOUTS',\n GET_WORKOUT_DATA = 'GET_WORKOUT_DATA',\n}\n\nexport enum WorkoutsGetters {\n CALENDAR_WORKOUTS = 'CALENDAR_WORKOUTS',\n TIMELINE_WORKOUTS = 'TIMELINE_WORKOUTS',\n USER_WORKOUTS = 'USER_WORKOUTS',\n WORKOUT_DATA = 'WORKOUT_DATA',\n WORKOUTS_PAGINATION = 'WORKOUTS_PAGINATION',\n}\n\nexport enum WorkoutsMutations {\n ADD_TIMELINE_WORKOUTS = 'ADD_TIMELINE_WORKOUTS',\n EMPTY_WORKOUTS = 'EMPTY_WORKOUTS',\n EMPTY_CALENDAR_WORKOUTS = 'EMPTY_CALENDAR_WORKOUTS',\n EMPTY_WORKOUT = 'EMPTY_WORKOUT',\n SET_CALENDAR_WORKOUTS = 'SET_CALENDAR_WORKOUTS',\n SET_TIMELINE_WORKOUTS = 'SET_TIMELINE_WORKOUTS',\n SET_USER_WORKOUTS = 'SET_USER_WORKOUTS',\n SET_WORKOUT = 'SET_WORKOUT',\n SET_WORKOUT_GPX = 'SET_WORKOUT_GPX',\n SET_WORKOUT_CHART_DATA = 'SET_WORKOUT_CHART_DATA',\n SET_WORKOUT_LOADING = 'SET_WORKOUT_LOADING',\n SET_WORKOUTS_PAGINATION = 'SET_WORKOUTS_PAGINATION',\n}\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./AdminMenu.vue?vue&type=style&index=0&id=4f30aa64&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ErrorMessage.vue?vue&type=style&index=0&id=5c177a93&scoped=true&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./UserInfos.vue?vue&type=style&index=0&id=17c7b32c&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./UserHeader.vue?vue&type=style&index=0&id=a6fa997c&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./UserInfosEdition.vue?vue&type=style&index=0&id=e9d6897c&lang=scss\"","import {\n addDays,\n addMonths,\n addYears,\n endOfMonth,\n endOfWeek,\n format,\n startOfMonth,\n startOfWeek,\n startOfYear,\n} from 'date-fns'\nimport { utcToZonedTime } from 'date-fns-tz'\n\nexport const getStartDate = (\n duration: string,\n day: Date,\n weekStartingMonday: boolean\n): Date => {\n switch (duration) {\n case 'week':\n return startOfWeek(day, { weekStartsOn: weekStartingMonday ? 1 : 0 })\n case 'year':\n return startOfYear(day)\n case 'month':\n return startOfMonth(day)\n default:\n throw new Error(\n `Invalid duration, expected: \"week\", \"month\", \"year\", got: \"${duration}\"`\n )\n }\n}\n\nexport const incrementDate = (duration: string, day: Date): Date => {\n switch (duration) {\n case 'week':\n return addDays(day, 7)\n case 'year':\n return addYears(day, 1)\n case 'month':\n return addMonths(day, 1)\n default:\n throw new Error(\n `Invalid duration, expected: \"week\", \"month\", \"year\", got: \"${duration}\"`\n )\n }\n}\n\nexport const getDateWithTZ = (dateInUTC: string, tz: string): Date => {\n return utcToZonedTime(new Date(dateInUTC), tz)\n}\n\nexport const getCalendarStartAndEnd = (\n date: Date,\n weekStartingMonday: boolean\n): Record => {\n const monthStart = startOfMonth(date)\n const monthEnd = endOfMonth(date)\n const weekStartsOn = weekStartingMonday ? 1 : 0\n return {\n start: startOfWeek(monthStart, { weekStartsOn }),\n end: endOfWeek(monthEnd, { weekStartsOn }),\n }\n}\n\nexport const formatWorkoutDate = (\n dateTime: Date,\n dateFormat: string | null = null,\n timeFormat: string | null = null\n): Record => {\n if (!dateFormat) {\n dateFormat = 'yyyy/MM/dd'\n }\n if (!timeFormat) {\n timeFormat = 'HH:mm'\n }\n return {\n workout_date: format(dateTime, dateFormat),\n workout_time: format(dateTime, timeFormat),\n }\n}\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./App.vue?vue&type=style&index=0&id=317a6409&lang=scss&scoped=true\"","export default {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Action\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter/retirer des droits d'administration, supprimer des comptes utilisateurs.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"APPLICATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application\"])},\n \"APP_CONFIG\": {\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nombre maximum d'utilisateurs actifs \"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Si égal à 0, pas limite d'inscription\"])},\n \"MAX_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Taille max. des archives zip (en Mo) \"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Taille max. des fichiers (en Mo) \"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Configuration de l'application\"])},\n \"ZIP_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nombre max. de fichiers dans une archive zip \"])}\n },\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revenir à l'admin\"])},\n \"CONFIRM_USER_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Etes-vous sûr de vouloir supprimer le compte de \", _interpolate(_list(0)), \" ? Toutes les données seront définitivement.\"])},\n \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer l'utilisateur\"])},\n \"ENABLE_DISABLE_SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activer/désactiver des sports.\"])},\n \"REGISTRATION_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Les inscriptions sont actuellement désactivées.\"])},\n \"REGISTRATION_ENABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Les inscriptions sont actuellement activées.\"])},\n \"SPORTS\": {\n \"TABLE\": {\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Actif\"])},\n \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"des séances existent\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Image\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration - Sports\"])}\n },\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Configurer l'application (nombre maximum d'utilisateurs inscrits, taille maximale des fichers).\"])},\n \"USER\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"utilisateur\"]), _normalize([\"utilisateurs\"])])},\n \"USERS\": {\n \"TABLE\": {\n \"ADD_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter les drois d'admin\"])},\n \"REMOVE_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Retirer les drois d'admin\"])}\n },\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"status administrateur\"])},\n \"CREATED_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date d'inscription\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nom d'utilisateur\"])},\n \"WORKOUTS_COUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nombre de séances\"])}\n }\n }\n }\n}","export default {\n \"ERROR\": {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur. Veuillez réessayer ou contacter l'administrateur.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email : une adresse email valide doit être fournie.\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors de la récupération de la configuration.\"])},\n \"error when updating configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors de la mise à jour de la configuration\"])},\n \"error, please try again or contact the administrator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur, veuillez réessayer ou contacter l'administrateur.\"])},\n \"error, registration is disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur, les inscriptions sont désactivées.\"])},\n \"file extension not allowed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Extension de fichier non autorisée.\"])},\n \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La taille du fichier est supérieure à la limite autorisée.\"])},\n \"invalid credentials\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Identifiants invalides.\"])},\n \"invalid payload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Données fournies incorrectes.\"])},\n \"invalid token, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jeton de connexion invalide, merci de vous reconnecter.\"])},\n \"invalid token, please request a new token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jeton de connexion, merci de vous reconnecter.\"])},\n \"no file part\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de fichier fourni.\"])},\n \"no selected file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de fichier sélectionné.\"])},\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur Réseau.\"])},\n \"password: password and password confirmation do not match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe : les mots de passe saisis sont différents.\"])},\n \"provide a valid auth token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Merci de fournir un jeton de connexion valide.\"])},\n \"password: 8 characters required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe : 8 caractères minimum.\"])},\n \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ce sport n'existe pas.\"])},\n \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Signature expirée. Merci de vous reconnecter.\"])},\n \"sorry, that user already exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Désolé, cet utilisateur existe déjà.\"])},\n \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inscription validée.\"])},\n \"user does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'utilisateur n'existe pas\"])},\n \"username: 3 to 12 characters required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nom d'utilisateur : 3 à 12 caractères requis.\"])},\n \"you can not delete your account, no other user has admin rights\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous ne pouvez pas supprimer votre compte, aucun autre utilisateur n'a des droits d'administration.\"])},\n \"you do not have permissions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous n'avez pas les permissions nécessaires.\"])}\n },\n \"PAGINATION\": {\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"précédent\"])},\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"suivant\"])}\n }\n}","export default {\n \"BACK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Précédent\"])},\n \"CANCEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Annuler\"])},\n \"CLEAR_FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinitialiser\"])},\n \"DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer mon compte\"])},\n \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Désactiver\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier\"])},\n \"ENABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activer\"])},\n \"FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtrer\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se connecter\"])},\n \"NO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Non\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S'inscrire\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Valider\"])},\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Oui\"])}\n}","export default {\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirmation\"])},\n \"DAY\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"jour\"]), _normalize([\"jours\"])])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accueil\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ici\"])},\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"trier par \"])}\n },\n \"ORDER\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"tri\"])},\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ascendant\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"descendant\"])}\n },\n \"PER_PAGE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"par page\"])}\n }\n },\n \"TOTAL \": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Total\"])}\n}","export default {\n \"DASHBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tableau de Bord\"])},\n \"THIS_MONTH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ce mois\"])}\n}","export default {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur. Veuillez réessayer ou contacter l'administrateur.\"])},\n \"APP_ERROR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'application semble rencontrer quelques problèmes.
Veuillez réessayer plus tard ou contacter l'administrateur.\"])},\n \"NOT_FOUND\": {\n \"PAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Page introuvable\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séance introuvable\"])}\n }\n}","export default {\n \"Cycling (Sport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vélo (Sport)\"])}\n },\n \"Cycling (Transport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vélo (Transport)\"])}\n },\n \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Randonnée\"])}\n },\n \"Mountain Biking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"VTT\"])}\n },\n \"Mountain Biking (Electric)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"VTT (Electrique)\"])}\n },\n \"Rowing\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aviron\"])}\n },\n \"Running\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Course\"])}\n },\n \"Skiing (Alpine)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ski (Alpin)\"])}\n },\n \"Skiing (Cross Country)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ski (Randonnée)\"])}\n },\n \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trail\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Marche\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistiques\"])},\n \"TIME_FRAMES\": {\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"semaine\"])},\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mois\"])},\n \"year\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"année\"])}\n }\n}","export default {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ALREADY_HAVE_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous avez déjà un compte ?\"])},\n \"CONFIRM_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etes-vous sûr de vouloir supprimer votre compte ? Toutes les données seront définitivement effacés.\"])},\n \"EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email\"])},\n \"ENTER_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Saisir une adresse email\"])},\n \"ENTER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Saisir un mot de passe\"])},\n \"ENTER_PASSWORD_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirmer le mot de passe\"])},\n \"INVALID_TOKEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jeton invalide, veullez demander une nouvelle réinitialisation de mot de passe.\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langue\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se connecter\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se déconnecter\"])},\n \"PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe\"])},\n \"PASSWORD_CONFIRM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirmation du mot de passe\"])},\n \"PASSWORD_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirmation du mot de passe\"])},\n \"PASSWORD_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe oublié ?\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinitialisation du mot de passe\"])},\n \"PASSWORD_SENT_EMAIL_TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vérifiez votre boite mail. Si vote adresse est dans notre base de données, vous recevrez un email avec un lien pour réinitialiser votre mot de passe.\"])},\n \"PASSWORD_UPDATED\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Votre mot de passe a été mis à jour. Cliquez \", _interpolate(_list(0)), \" pour vous connecter.\"])},\n \"PROFILE\": {\n \"BACK_TO_PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revenir au profil\"])},\n \"BIO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"BIRTH_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Date de naissance\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier le profil\"])},\n \"EDIT_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier les préférences\"])},\n \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Premier jour de la semaine\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prénom\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langue\"])},\n \"LAST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nom\"])},\n \"LOCATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lieu\"])},\n \"MONDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lundi\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Image de profil\"])},\n \"PICTURE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour de l'image de profil\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mettre à jour l'image\"])},\n \"PICTURE_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour des préférences\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour du profil\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Date d'inscription\"])},\n \"SUNDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dimanche\"])},\n \"TABS\": {\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"image\"])},\n \"PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"préférences\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"profil\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fuseau horaire\"])}\n },\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S'inscrire\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Désolé, les inscriptions sont désactivées.\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinitialiser votre mot de passe\"])},\n \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"photo de l'utilisateur\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nom d'utilisateur\"])}\n}","export default {\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter une séance\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"analyse\"])},\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"dénivelé positif\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse moyenne\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse moy.\"])},\n \"BACK_TO_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"revenir à la séance\"])},\n \"DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date\"])},\n \"DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"dénivelé négatif\"])},\n \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"afficher les filtres\"])},\n \"DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"distance\"])},\n \"DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"durée\"])},\n \"EDIT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier la séance\"])},\n \"ELEVATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitude\"])},\n \"END\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fin\"])},\n \"FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"à partir de\"])},\n \"GPX_FILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fichier .gpx\"])},\n \"HIDE_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"masquer les filtres\"])},\n \"KM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"km\"])},\n \"LATEST_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séances récentes\"])},\n \"LOAD_MORE_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Charger les séances suivantes\"])},\n \"MAX_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitude max\"])},\n \"MAX_FILES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fichiers max. \"])},\n \"MAX_SIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"taille max. \"])},\n \"MAX_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse max\"])},\n \"MIN_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitude min\"])},\n \"NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Segment suivant\"])},\n \"NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séance suivante\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"données issues du fichier gpx, sans correction\"])},\n \"NO_FILE_PROVIDED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de fichier fourni\"])},\n \"NO_FOLDER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pas de répertoire\"])},\n \"NO_MAP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de carte\"])},\n \"NO_NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de segment suivant\"])},\n \"NO_NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de séance suivante\"])},\n \"NO_NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de notes\"])},\n \"NO_PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de segment précédent\"])},\n \"NO_PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de séance précédente\"])},\n \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de records.\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de séances.\"])},\n \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notes\"])},\n \"PAUSES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pauses\"])},\n \"PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Segment précédent\"])},\n \"PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séance précédente\"])},\n \"RECORD\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"record\"]), _normalize([\"records\"])])},\n \"RECORD_AS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vitesse moy.\"])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Distance la + longue\"])},\n \"RECORD_LD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durée la + longue\"])},\n \"RECORD_MS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vitesse max.\"])},\n \"REMAINING_CHARS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nombre de caractères restants \"])},\n \"SEGMENT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"segment\"]), _normalize([\"segments\"])])},\n \"SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse\"])},\n \"SPORT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"sport\"]), _normalize([\"sports\"])])},\n \"START\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"début\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"titre\"])},\n \"TO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"jusqu'au\"])},\n \"TOTAL_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"durée totale\"])},\n \"UPLOAD_FIRST_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajoutez votre première séance !\"])},\n \"WEATHER\": {\n \"HUMIDITY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"humidité\"])},\n \"TEMPERATURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"température\"])},\n \"WIND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vent\"])},\n \"DARK_SKY\": {\n \"clear-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ensoleillé\"])},\n \"clear-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nuit claire\"])},\n \"cloudy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nuageux\"])},\n \"fog\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"brouillard\"])},\n \"partly-cloudy-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partiellement nuageux\"])},\n \"partly-cloudy-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nuit partiellement nuageuse\"])},\n \"rain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pluie\"])},\n \"sleet\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"neige fondue\"])},\n \"snow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"neige\"])},\n \"wind\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"venteux\"])}\n }\n },\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"avec un fichier .gpx\"])},\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sans fichier .gpx\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"séance\"]), _normalize([\"séances\"])])},\n \"WORKOUT_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date de la séance\"])},\n \"WORKOUT_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etes-vous sûr de vouloir supprimer cette séance ?\"])},\n \"ZIP_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"archive .zip\"])},\n \"ZIP_ARCHIVE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ou une archive .zip contenant des fichiers .gpx\"])}\n}","import AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-56dc89d4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n class: \"pagination-center\",\n \"aria-label\": \"navigation\"\n}\nconst _hoisted_2 = { class: \"pagination\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-left\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-right\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"nav\", _hoisted_1, [\n _createElementVNode(\"ul\", _hoisted_2, [\n _createElementVNode(\"li\", {\n class: _normalizeClass([\"page-prev\", { disabled: !_ctx.pagination.has_prev }])\n }, [\n _createVNode(_component_router_link, {\n class: \"page-link\",\n to: { path: _ctx.path, query: _ctx.getQuery(_ctx.pagination.page, -1) },\n event: _ctx.pagination.has_prev ? 'click' : '',\n disabled: !_ctx.pagination.has_prev\n }, {\n default: _withCtx(() => [\n _hoisted_3,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('api.PAGINATION.PREVIOUS')), 1)\n ]),\n _: 1\n }, 8, [\"to\", \"event\", \"disabled\"])\n ], 2),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.rangePagination(_ctx.pagination.pages, _ctx.pagination.page), (page) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: page,\n class: _normalizeClass([\"page\", { active: page === _ctx.pagination.page }])\n }, [\n (page === '...')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, \" ... \"))\n : (_openBlock(), _createBlock(_component_router_link, {\n key: 1,\n class: \"page-link\",\n to: { path: _ctx.path, query: _ctx.getQuery(+page) }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(page), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]))\n ], 2))\n }), 128)),\n _createElementVNode(\"li\", {\n class: _normalizeClass([\"page-next\", { disabled: !_ctx.pagination.has_next }])\n }, [\n _createVNode(_component_router_link, {\n class: \"page-link\",\n to: { path: _ctx.path, query: _ctx.getQuery(_ctx.pagination.page, 1) },\n event: _ctx.pagination.has_next ? 'click' : '',\n disabled: !_ctx.pagination.has_next\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('api.PAGINATION.NEXT')) + \" \", 1),\n _hoisted_5\n ]),\n _: 1\n }, 8, [\"to\", \"event\", \"disabled\"])\n ], 2)\n ])\n ]))\n}","\n import { PropType, defineComponent } from 'vue'\n\n import { IPagination, TPaginationPayload } from '@/types/api'\n import { rangePagination } from '@/utils/api'\n\n export default defineComponent({\n name: 'Pagination',\n props: {\n pagination: {\n type: Object as PropType,\n required: true,\n },\n path: {\n type: String,\n required: true,\n },\n query: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n function getQuery(page: number, cursor?: number): TPaginationPayload {\n const newQuery = Object.assign({}, props.query)\n newQuery.page = cursor ? page + cursor : page\n return newQuery\n }\n return { rangePagination, getQuery }\n },\n })\n","import { render } from \"./Pagination.vue?vue&type=template&id=56dc89d4&scoped=true&ts=true\"\nimport script from \"./Pagination.vue?vue&type=script&lang=ts\"\nexport * from \"./Pagination.vue?vue&type=script&lang=ts\"\n\nimport \"./Pagination.vue?vue&type=style&index=0&id=56dc89d4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-56dc89d4\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, withModifiers as _withModifiers, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-17c7b32c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"user-infos\",\n class: \"description-list\"\n}\nconst _hoisted_2 = { class: \"user-bio\" }\nconst _hoisted_3 = {\n key: 1,\n class: \"profile-buttons\"\n}\nconst _hoisted_4 = {\n key: 2,\n class: \"profile-buttons\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Modal = _resolveComponent(\"Modal\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.displayModal)\n ? (_openBlock(), _createBlock(_component_Modal, {\n key: 0,\n title: _ctx.$t('common.CONFIRMATION'),\n message: \"admin.CONFIRM_USER_ACCOUNT_DELETION\",\n strongMessage: _ctx.user.username,\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (_ctx.deleteUserAccount(_ctx.user.username))),\n onCancelAction: _cache[1] || (_cache[1] = ($event: any) => (_ctx.updateDisplayModal(false)))\n }, null, 8, [\"title\", \"strongMessage\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"dl\", null, [\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.registrationDate), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.FIRST_NAME')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.user.first_name), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.LAST_NAME')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.user.last_name), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.BIRTH_DATE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.birthDate), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.LOCATION')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.user.location), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.BIO')) + \":\", 1),\n _createElementVNode(\"dd\", _hoisted_2, _toDisplayString(_ctx.user.bio), 1)\n ]),\n (_ctx.fromAdmin)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_ctx.authUser.username !== _ctx.user.username)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"danger\",\n onClick: _cache[2] || (_cache[2] = _withModifiers(($event: any) => (_ctx.updateDisplayModal(true)), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.DELETE_USER')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.$router.go(-1)))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"button\", {\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.$router.push('/profile/edit')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.EDIT')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ]))\n ]))\n}","\n import { format } from 'date-fns'\n import {\n ComputedRef,\n PropType,\n Ref,\n computed,\n defineComponent,\n ref,\n } from 'vue'\n\n import { AUTH_USER_STORE } from '@/store/constants'\n import { IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n export default defineComponent({\n name: 'UserInfos',\n props: {\n user: {\n type: Object as PropType,\n required: true,\n },\n fromAdmin: {\n type: Boolean,\n default: false,\n },\n },\n setup(props) {\n const store = useStore()\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const registrationDate = computed(() =>\n props.user.created_at\n ? format(new Date(props.user.created_at), 'dd/MM/yyyy HH:mm')\n : ''\n )\n const birthDate = computed(() =>\n props.user.birth_date\n ? format(new Date(props.user.birth_date), 'dd/MM/yyyy')\n : ''\n )\n let displayModal: Ref = ref(false)\n\n function updateDisplayModal(value: boolean) {\n displayModal.value = value\n }\n function deleteUserAccount(username: string) {\n store.dispatch(AUTH_USER_STORE.ACTIONS.DELETE_ACCOUNT, { username })\n }\n\n return {\n authUser,\n birthDate,\n displayModal,\n registrationDate,\n deleteUserAccount,\n updateDisplayModal,\n }\n },\n })\n","import { render } from \"./UserInfos.vue?vue&type=template&id=17c7b32c&scoped=true&ts=true\"\nimport script from \"./UserInfos.vue?vue&type=script&lang=ts\"\nexport * from \"./UserInfos.vue?vue&type=script&lang=ts\"\n\nimport \"./UserInfos.vue?vue&type=style&index=0&id=17c7b32c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-17c7b32c\"]])\n\nexport default __exports__","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./FilterSelects.vue?vue&type=style&index=0&id=50c78582&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=c81580c0&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./StatCard.vue?vue&type=style&index=0&id=32e77e48&lang=scss\"","import { toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-50c78582\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"table-selects\" }\nconst _hoisted_2 = [\"value\"]\nconst _hoisted_3 = [\"value\"]\nconst _hoisted_4 = [\"value\"]\nconst _hoisted_5 = [\"value\"]\nconst _hoisted_6 = [\"value\"]\nconst _hoisted_7 = [\"value\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"label\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('common.SELECTS.ORDER_BY.LABEL')) + \": \", 1),\n _createElementVNode(\"select\", {\n name: \"order_by\",\n id: \"order_by\",\n value: _ctx.query.order_by,\n onChange: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.onSelectUpdate && _ctx.onSelectUpdate(...args)))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.order_by, (order) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: order,\n key: order\n }, _toDisplayString(_ctx.$t(`${_ctx.message}.${order.toUpperCase()}`)), 9, _hoisted_3))\n }), 128))\n ], 40, _hoisted_2)\n ]),\n _createElementVNode(\"label\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('common.SELECTS.ORDER.LABEL')) + \": \", 1),\n _createElementVNode(\"select\", {\n name: \"order\",\n id: \"order\",\n value: _ctx.query.order,\n onChange: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.onSelectUpdate && _ctx.onSelectUpdate(...args)))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.sort, (order) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: order,\n key: order\n }, _toDisplayString(_ctx.$t(`common.SELECTS.ORDER.${order.toUpperCase()}`)), 9, _hoisted_5))\n }), 128))\n ], 40, _hoisted_4)\n ]),\n _createElementVNode(\"label\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('common.SELECTS.PER_PAGE.LABEL')) + \": \", 1),\n _createElementVNode(\"select\", {\n name: \"per_page\",\n id: \"per_page\",\n value: _ctx.query.per_page,\n onChange: _cache[2] || (_cache[2] = \n//@ts-ignore\n(...args) => (_ctx.onSelectUpdate && _ctx.onSelectUpdate(...args)))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.per_page, (nb) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: nb,\n key: nb\n }, _toDisplayString(nb), 9, _hoisted_7))\n }), 128))\n ], 40, _hoisted_6)\n ])\n ]))\n}","\n import { PropType, defineComponent } from 'vue'\n\n import { TPaginationPayload } from '@/types/api'\n\n export default defineComponent({\n name: 'FilterSelects',\n props: {\n order_by: {\n type: Object as PropType,\n required: true,\n },\n query: {\n type: Object as PropType,\n required: true,\n },\n sort: {\n type: Object as PropType,\n required: true,\n },\n message: {\n type: String,\n required: true,\n },\n },\n emits: ['updateSelect'],\n setup(props, { emit }) {\n function onSelectUpdate(event: Event & { target: HTMLInputElement }) {\n emit('updateSelect', event.target.id, event.target.value)\n }\n\n return {\n per_page: [10, 25, 50, 100],\n onSelectUpdate,\n }\n },\n })\n","import { render } from \"./FilterSelects.vue?vue&type=template&id=50c78582&scoped=true&ts=true\"\nimport script from \"./FilterSelects.vue?vue&type=script&lang=ts\"\nexport * from \"./FilterSelects.vue?vue&type=script&lang=ts\"\n\nimport \"./FilterSelects.vue?vue&type=style&index=0&id=50c78582&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-50c78582\"]])\n\nexport default __exports__","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./NavBar.vue?vue&type=style&index=0&id=9d3d8adc&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Dropdown.vue?vue&type=style&index=0&id=5ef2ddef&scoped=true&lang=scss\"","import { LocationQuery } from 'vue-router'\n\nimport { IQueryOptions, TPaginationPayload } from '@/types/api'\n\nexport const sortList: string[] = ['asc', 'desc']\nexport const defaultPage = 1\nexport const defaultPerPage = 10\n\nexport const getNumberQueryValue = (\n queryValue: string | (string | null)[] | null,\n defaultValue: number\n): number => {\n return queryValue && typeof queryValue === 'string' && +queryValue > 0\n ? +queryValue\n : defaultValue\n}\n\nexport const getStringQueryValue = (\n queryValue: string | (string | null)[] | null,\n availableValues: string[],\n defaultValue: string\n): string => {\n return queryValue &&\n typeof queryValue === 'string' &&\n availableValues.includes(queryValue)\n ? queryValue\n : defaultValue\n}\n\nexport const getQuery = (\n locationQuery: LocationQuery,\n orderByList: string[],\n defaultOrderBy: string,\n options?: IQueryOptions\n): TPaginationPayload => {\n const queryOptions = options || {}\n const defaultSort = queryOptions.defaultSort || 'asc'\n const query = {}\n\n query.page = getNumberQueryValue(locationQuery.page, defaultPage)\n query.per_page = getNumberQueryValue(locationQuery.per_page, defaultPerPage)\n query.order = getStringQueryValue(locationQuery.order, sortList, defaultSort)\n query.order_by = getStringQueryValue(\n locationQuery.order_by,\n orderByList,\n defaultOrderBy\n )\n\n return query\n}\n\nexport const workoutsPayloadKeys = [\n 'from',\n 'to',\n 'ave_speed_from',\n 'ave_speed_to',\n 'max_speed_from',\n 'max_speed_to',\n 'distance_from',\n 'distance_to',\n 'duration_from',\n 'duration_to',\n 'sport_id',\n]\n\nconst getRange = (stop: number, start = 1): number[] => {\n return Array.from({ length: stop - start + 1 }, (_, i) => start + i)\n}\n\nexport const rangePagination = (\n pages: number,\n currentPage: number\n): (string | number)[] => {\n if (pages < 0) {\n return []\n }\n\n if (pages < 9) {\n return getRange(pages)\n }\n\n let pagination: (string | number)[] = [1, 2]\n if (currentPage < 4) {\n pagination = pagination.concat([3, 4, 5])\n } else if (currentPage < 6) {\n pagination = pagination.concat(getRange(currentPage + 2, 3))\n } else {\n pagination = pagination.concat(['...'])\n if (currentPage < pages - 2) {\n pagination = pagination.concat(getRange(currentPage + 2, currentPage - 2))\n }\n }\n if (currentPage + 2 <= pages - 2) {\n pagination = pagination.concat(['...'])\n pagination = pagination.concat(getRange(pages, pages - 1))\n } else {\n if (\n pagination[pagination.length - 1] !== '...' &&\n pagination[pagination.length - 1] >= pages - 2 &&\n pagination[pagination.length - 1] < pages\n ) {\n pagination = pagination.concat(\n getRange(pages, +pagination[pagination.length - 1] + 1)\n )\n } else {\n pagination = pagination.concat(\n getRange(\n pages,\n currentPage < pages - 3 ? currentPage + 3 : currentPage - 5\n )\n )\n }\n }\n\n return pagination\n}\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./AppStatsCards.vue?vue&type=style&index=0&id=cd52bcc2&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./CustomTextArea.vue?vue&type=style&index=0&id=ad3739fc&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Loader.vue?vue&type=style&index=0&id=8bf75da8&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./AdminUsers.vue?vue&type=style&index=0&id=eb17bef8&lang=scss&scoped=true\"","export default {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Action\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add/remove admin rights, delete user account.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"APPLICATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application\"])},\n \"APP_CONFIG\": {\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. number of active users\"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"If 0, no limitation on registration.\"])},\n \"MAX_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. files of zip archive\"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. size of uploaded files (in Mb)\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application configuration\"])},\n \"ZIP_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. size of zip archive (in Mb)\"])}\n },\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back to admin\"])},\n \"CONFIRM_USER_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Are you sure you want to delete \", _interpolate(_list(0)), \" account? All data will be deleted, this cannot be undone.\"])},\n \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete user\"])},\n \"ENABLE_DISABLE_SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enable/disable sports.\"])},\n \"REGISTRATION_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration is currently disabled.\"])},\n \"REGISTRATION_ENABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration is currently enabled.\"])},\n \"SPORTS\": {\n \"TABLE\": {\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Active\"])},\n \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"workouts exist\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Image\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sports administration\"])}\n },\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Update application configuration (maximum number of registered users, maximum files size).\"])},\n \"USER\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"user\"]), _normalize([\"users\"])])},\n \"USERS\": {\n \"TABLE\": {\n \"ADD_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add admin rights\"])},\n \"REMOVE_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove admin rights\"])}\n },\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"admin status\"])},\n \"CREATED_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"registration date\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"username\"])},\n \"WORKOUTS_COUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"workout count\"])}\n }\n }\n }\n}","export default {\n \"ERROR\": {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error. Please try again or contact the administrator.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email: valid email must be provided.\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error on getting configuration.\"])},\n \"error when updating configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error when updating configuration\"])},\n \"error, please try again or contact the administrator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error, please try again or contact the administrator.\"])},\n \"error, registration is disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error, registration is disabled.\"])},\n \"file extension not allowed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File extension not allowed.\"])},\n \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File size is greater than the allowed size.\"])},\n \"invalid credentials\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid credentials.\"])},\n \"invalid payload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Provided data are invalid.\"])},\n \"invalid token, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid token, please log in again.\"])},\n \"invalid token, please request a new token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid token, please log in again.\"])},\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Network Error.\"])},\n \"no file part\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No file provided.\"])},\n \"no selected file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No selected file.\"])},\n \"password: password and password confirmation do not match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password: password and password confirmation don't match.\"])},\n \"provide a valid auth token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Provide a valid auth token.\"])},\n \"password: 8 characters required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password: 8 characters required.\"])},\n \"sorry, that user already exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, that user already exists.\"])},\n \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sport does not exist.\"])},\n \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Signature expired. Please log in again.\"])},\n \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Successfully registered.\"])},\n \"user does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User does not exist.\"])},\n \"username: 3 to 12 characters required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Username: 3 to 12 characters required.\"])},\n \"you can not delete your account, no other user has admin rights\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You can not delete your account, no other user has admin rights.\"])},\n \"you do not have permissions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You do not have permissions.\"])}\n },\n \"PAGINATION\": {\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"previous\"])},\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"next\"])}\n }\n}","export default {\n \"BACK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back\"])},\n \"CANCEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])},\n \"CLEAR_FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Clear filters\"])},\n \"DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete my account\"])},\n \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disable\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit\"])},\n \"ENABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enable\"])},\n \"FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in\"])},\n \"NO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Yes\"])}\n}","export default {\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirmation\"])},\n \"DAY\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"day\"]), _normalize([\"days\"])])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Home\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"here\"])},\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"order by\"])}\n },\n \"ORDER\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sort\"])},\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ascending\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"descending\"])}\n },\n \"PER_PAGE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"par page\"])}\n }\n },\n \"TOTAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Total\"])}\n}","export default {\n \"DASHBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dashboard\"])},\n \"THIS_MONTH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This month\"])}\n}","export default {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error. Please try again or contact the administrator.\"])},\n \"APP_ERROR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The application seems encounter some issues.
Please try later or contact the administrator.\"])},\n \"NOT_FOUND\": {\n \"PAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Page not found\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Workout not found\"])}\n }\n}","export default {\n \"Cycling (Sport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cycling (Sport)\"])}\n },\n \"Cycling (Transport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cycling (Transport)\"])}\n },\n \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hiking\"])}\n },\n \"Mountain Biking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountain Biking\"])}\n },\n \"Mountain Biking (Electric)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountain Biking (Electric)\"])}\n },\n \"Rowing\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rowing\"])}\n },\n \"Running\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Running\"])}\n },\n \"Skiing (Alpine)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skiing (Alpine)\"])}\n },\n \"Skiing (Cross Country)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skiing (Cross Country)\"])}\n },\n \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trail\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Walking\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistics\"])},\n \"TIME_FRAMES\": {\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"week\"])},\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"month\"])},\n \"year\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"year\"])}\n }\n}","export default {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ALREADY_HAVE_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Already have an account?\"])},\n \"CONFIRM_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you sure you want to delete your account? All data will be deleted, this cannot be undone\"])},\n \"EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email\"])},\n \"ENTER_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter an email address\"])},\n \"ENTER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter a password\"])},\n \"ENTER_PASSWORD_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirm the password\"])},\n \"INVALID_TOKEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid token, please request a new password reset.\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Language\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Login\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Logout\"])},\n \"PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password\"])},\n \"PASSWORD_CONFIRM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirm Password\"])},\n \"PASSWORD_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password confirmation\"])},\n \"PASSWORD_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forgot password?\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password reset\"])},\n \"PASSWORD_SENT_EMAIL_TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Check your email. If your address is in our database, you'll received an email with a link to reset your password.\"])},\n \"PASSWORD_UPDATED\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Your password have been updated. Click \", _interpolate(_list(0)), \" to log in.\"])},\n \"PROFILE\": {\n \"BACK_TO_PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back to profile\"])},\n \"BIO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"BIRTH_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Birth date\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit profile\"])},\n \"EDIT_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit preferences\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"First name\"])},\n \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"First day of week\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Language\"])},\n \"LAST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Last name\"])},\n \"LOCATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Location\"])},\n \"MONDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Monday\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Picture\"])},\n \"PICTURE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Picture edition\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Update picture\"])},\n \"PICTURE_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove picture\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preferences edition\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile edition\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration date\"])},\n \"SUNDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sunday\"])},\n \"TABS\": {\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"picture\"])},\n \"PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"preferences\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"profile\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timezone\"])}\n },\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, registration is disabled.\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset your password\"])},\n \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"user picture\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Username\"])}\n}","export default {\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add a workout\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"analysis\"])},\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ascent\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ave. speed\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"average speed\"])},\n \"BACK_TO_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"back to workout\"])},\n \"DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date\"])},\n \"DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"descent\"])},\n \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"display filters\"])},\n \"DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"distance\"])},\n \"DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"duration\"])},\n \"EDIT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit the workout\"])},\n \"ELEVATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"elevation\"])},\n \"END\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"end\"])},\n \"FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"from\"])},\n \"GPX_FILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".gpx file\"])},\n \"HIDE_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hide filters\"])},\n \"KM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"km\"])},\n \"LATEST_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Latest workouts\"])},\n \"LOAD_MORE_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load more workouts\"])},\n \"MAX_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. altitude\"])},\n \"MAX_FILES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max files\"])},\n \"MAX_SIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max size\"])},\n \"MAX_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. speed\"])},\n \"MIN_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"min. altitude\"])},\n \"NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No next segment\"])},\n \"NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Next workout\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"data from gpx, without any cleaning\"])},\n \"NO_FILE_PROVIDED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No file provided\"])},\n \"NO_FOLDER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no folder inside\"])},\n \"NO_MAP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No map\"])},\n \"NO_NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No next segment\"])},\n \"NO_NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No next workout\"])},\n \"NO_NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No notes\"])},\n \"NO_PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No previous segment\"])},\n \"NO_PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No previous workout\"])},\n \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No records.\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No workouts.\"])},\n \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notes\"])},\n \"PAUSES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pauses\"])},\n \"PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Previous segment\"])},\n \"PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Previous workout\"])},\n \"RECORD\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"record\"]), _normalize([\"records\"])])},\n \"RECORD_AS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ave. speed\"])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Farest distance\"])},\n \"RECORD_LD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Longest duration\"])},\n \"RECORD_MS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. speed\"])},\n \"REMAINING_CHARS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"remaining characters\"])},\n \"SEGMENT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"segment\"]), _normalize([\"segments\"])])},\n \"SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"speed\"])},\n \"SPORT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"sport\"]), _normalize([\"sports\"])])},\n \"START\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"start\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"title\"])},\n \"TO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"to\"])},\n \"TOTAL_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"total duration\"])},\n \"UPLOAD_FIRST_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload one!\"])},\n \"WEATHER\": {\n \"HUMIDITY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"humidity\"])},\n \"TEMPERATURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"temperature\"])},\n \"WIND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wind\"])},\n \"DARK_SKY\": {\n \"clear-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"clear day\"])},\n \"clear-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"clear night\"])},\n \"cloudy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cloudy\"])},\n \"fog\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fog\"])},\n \"partly-cloudy-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partly cloudy day\"])},\n \"partly-cloudy-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partly cloudy night\"])},\n \"rain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"rain\"])},\n \"sleet\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sleet\"])},\n \"snow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"snow\"])},\n \"wind\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wind\"])}\n }\n },\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"with .gpx file\"])},\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"without .gpx file\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"workout\"]), _normalize([\"workouts\"])])},\n \"WORKOUT_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"workout date\"])},\n \"WORKOUT_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you sure you want to delete this workout?\"])},\n \"ZIP_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".zip file\"])},\n \"ZIP_ARCHIVE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"or .zip file containing .gpx files\"])}\n}","import AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","const suffixes = ['bytes', 'KB', 'MB', 'GB', 'TB']\n\nexport const getReadableFileSize = (\n fileSize: number,\n asText = true\n): string | Record => {\n const i = Math.floor(Math.log(fileSize) / Math.log(1024))\n if (!fileSize) {\n return asText ? '0 bytes' : { size: '0', suffix: 'bytes' }\n }\n const size = (fileSize / Math.pow(1024, i)).toFixed(1)\n const suffix = suffixes[i]\n return asText ? `${size}${suffix}` : { size, suffix }\n}\n\nexport const getFileSizeInMB = (fileSize: number): number => {\n const value = fileSize / 1048576\n return (!fileSize && 0) || +value.toFixed(2)\n}\n","import { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"user-picture\" }\nconst _hoisted_2 = [\"alt\", \"src\"]\nconst _hoisted_3 = {\n key: 1,\n class: \"no-picture\"\n}\nconst _hoisted_4 = /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-user-circle-o\",\n \"aria-hidden\": \"true\"\n}, null, -1)\nconst _hoisted_5 = [\n _hoisted_4\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.authUserPictureUrl !== '')\n ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n class: \"profile-user-img\",\n alt: _ctx.$t('user.USER_PICTURE'),\n src: _ctx.authUserPictureUrl\n }, null, 8, _hoisted_2))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _hoisted_5))\n ]))\n}","\n import { PropType, computed, defineComponent } from 'vue'\n\n import { IUserProfile } from '@/types/user'\n import { getApiUrl } from '@/utils'\n\n export default defineComponent({\n name: 'UserPicture',\n props: {\n user: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n return {\n authUserPictureUrl: computed(() =>\n props.user.picture\n ? `${getApiUrl()}users/${props.user.username}/picture`\n : ''\n ),\n }\n },\n })\n","import { render } from \"./UserPicture.vue?vue&type=template&id=4aed39f4&ts=true\"\nimport script from \"./UserPicture.vue?vue&type=script&lang=ts\"\nexport * from \"./UserPicture.vue?vue&type=script&lang=ts\"\n\nimport \"./UserPicture.vue?vue&type=style&index=0&id=4aed39f4&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./UserPreferences.vue?vue&type=style&index=0&id=39667dbe&lang=scss&scoped=true\"","/* eslint-disable no-console */\n\nimport { register } from 'register-service-worker'\n\nif (process.env.NODE_ENV === 'production') {\n register(`${process.env.BASE_URL}service-worker.js`, {\n ready() {\n console.log(\n 'App is being served from cache by a service worker.\\n' +\n 'For more details, visit https://goo.gl/AFskqB'\n )\n },\n registered() {\n console.log('Service worker has been registered.')\n },\n cached() {\n console.log('Content has been cached for offline use.')\n },\n updatefound() {\n console.log('New content is downloading.')\n },\n updated() {\n console.log('New content is available; please refresh.')\n },\n offline() {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n )\n },\n error(error) {\n console.error('Error during service worker registration:', error)\n },\n })\n}\n","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, normalizeClass as _normalizeClass, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-317a6409\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"top\" }, null, -1))\nconst _hoisted_2 = {\n key: 0,\n class: \"app-container\"\n}\nconst _hoisted_3 = { class: \"app-loading\" }\nconst _hoisted_4 = { class: \"container scroll\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-up\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_6 = [\n _hoisted_5\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NavBar = _resolveComponent(\"NavBar\")!\n const _component_Loader = _resolveComponent(\"Loader\")!\n const _component_router_view = _resolveComponent(\"router-view\")!\n const _component_NoConfig = _resolveComponent(\"NoConfig\")!\n const _component_Footer = _resolveComponent(\"Footer\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _hoisted_1,\n _createVNode(_component_NavBar, { onMenuInteraction: _ctx.updateHideScrollBar }, null, 8, [\"onMenuInteraction\"]),\n (_ctx.appLoading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_Loader)\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass([\"app-container\", { 'hide-scroll': _ctx.hideScrollBar }])\n }, [\n (_ctx.appConfig)\n ? (_openBlock(), _createBlock(_component_router_view, { key: 0 }))\n : (_openBlock(), _createBlock(_component_NoConfig, { key: 1 }))\n ], 2)),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"scroll-button\", { 'display-button': _ctx.displayScrollButton }]),\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.scrollToTop && _ctx.scrollToTop(...args)))\n }, _hoisted_6, 2)\n ]),\n (_ctx.appConfig)\n ? (_openBlock(), _createBlock(_component_Footer, {\n key: 2,\n version: _ctx.appConfig ? _ctx.appConfig.version : ''\n }, null, 8, [\"version\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-36297652\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"footer\" }\nconst _hoisted_2 = { class: \"footer-items\" }\nconst _hoisted_3 = { class: \"footer-item\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \"FitTrackee\", -1))\nconst _hoisted_5 = /*#__PURE__*/_createStaticVNode(\"
\", 4)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _hoisted_4,\n _createTextVNode(\" v\" + _toDisplayString(_ctx.version), 1)\n ]),\n _hoisted_5\n ])\n ]))\n}","\n import { defineComponent } from 'vue'\n\n export default defineComponent({\n name: 'Footer',\n props: {\n version: {\n type: String,\n required: true,\n },\n },\n })\n","import { render } from \"./Footer.vue?vue&type=template&id=36297652&scoped=true&ts=true\"\nimport script from \"./Footer.vue?vue&type=script&lang=ts\"\nexport * from \"./Footer.vue?vue&type=script&lang=ts\"\n\nimport \"./Footer.vue?vue&type=style&index=0&id=36297652&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-36297652\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9d3d8adc\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"nav\" }\nconst _hoisted_2 = { class: \"nav-container\" }\nconst _hoisted_3 = { class: \"nav-app-name\" }\nconst _hoisted_4 = { class: \"nav-items-close\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"app-name\" }, \"FitTrackee\", -1))\nconst _hoisted_6 = {\n key: 0,\n class: \"nav-items-group\"\n}\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"nav-item nav-separator\" }, null, -1))\nconst _hoisted_8 = { class: \"nav-items-user-menu\" }\nconst _hoisted_9 = {\n key: 0,\n class: \"nav-items-group\"\n}\nconst _hoisted_10 = { class: \"nav-item nav-profile-img\" }\nconst _hoisted_11 = {\n key: 1,\n class: \"nav-items-group\"\n}\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", { class: \"fa fa-language\" }, null, -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_UserPicture = _resolveComponent(\"UserPicture\")!\n const _component_Dropdown = _resolveComponent(\"Dropdown\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", {\n class: \"nav-item app-name\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/')))\n }, \" FitTrackee \")\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"nav-icon-open\", { 'menu-open': _ctx.isMenuOpen }])\n }, [\n _createElementVNode(\"i\", {\n class: \"fa fa-bars hamburger-icon\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.openMenu()))\n })\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"nav-items\", { 'menu-open': _ctx.isMenuOpen }])\n }, [\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createElementVNode(\"i\", {\n class: _normalizeClass([\"fa fa-close close-icon nav-item\", { 'menu-closed': !_ctx.isMenuOpen }]),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.closeMenu()))\n }, null, 2)\n ]),\n _createElementVNode(\"div\", {\n class: \"nav-items-app-menu\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.closeMenu()))\n }, [\n (_ctx.isAuthenticated)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('dashboard.DASHBOARD')), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/workouts\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.capitalize(_ctx.$t('workouts.WORKOUT', 2))), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/statistics\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('statistics.STATISTICS')), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/workouts/add\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.ADD_WORKOUT')), 1)\n ]),\n _: 1\n }),\n (_ctx.isAuthenticated && _ctx.authUser.admin)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n class: \"nav-item\",\n to: \"/admin\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.ADMIN')), 1)\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n _hoisted_7\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n (_ctx.isAuthenticated)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createElementVNode(\"div\", _hoisted_10, [\n _createVNode(_component_UserPicture, { user: _ctx.authUser }, null, 8, [\"user\"])\n ]),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/profile\",\n onClick: _ctx.closeMenu\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.authUser.username), 1)\n ]),\n _: 1\n }, 8, [\"onClick\"]),\n _createElementVNode(\"div\", {\n class: \"nav-item nav-link\",\n onClick: _cache[4] || (_cache[4] = \n//@ts-ignore\n(...args) => (_ctx.logout && _ctx.logout(...args)))\n }, _toDisplayString(_ctx.$t('user.LOGOUT')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/login\",\n onClick: _ctx.closeMenu\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.LOGIN')), 1)\n ]),\n _: 1\n }, 8, [\"onClick\"]),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/register\",\n onClick: _ctx.closeMenu\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.REGISTER')), 1)\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ])),\n (_ctx.availableLanguages && _ctx.language)\n ? (_openBlock(), _createBlock(_component_Dropdown, {\n key: 2,\n class: \"nav-item\",\n options: _ctx.availableLanguages,\n selected: _ctx.language,\n onSelected: _ctx.updateLanguage\n }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n }, 8, [\"options\", \"selected\", \"onSelected\"]))\n : _createCommentVNode(\"\", true)\n ])\n ], 2)\n ])\n ]))\n}","import { createI18n, LocaleMessages, VueMessageType } from 'vue-i18n'\n\n/**\n * Load locale messages\n *\n * The loaded `JSON` locale messages is pre-compiled by `@intlify/vue-i18n-loader`, which is integrated into `vue-cli-plugin-i18n`.\n * See: https://github.com/intlify/vue-i18n-loader#rocket-i18n-resource-pre-compilation\n */\nfunction loadLocaleMessages(): LocaleMessages {\n const locales = require.context('./locales', true, /[A-Za-z0-9-_,\\s]+\\.ts$/i)\n const messages: LocaleMessages = {}\n locales.keys().forEach((key) => {\n const matched = key.match(/([A-Za-z0-9-_]+)\\./i)\n if (matched && matched.length > 1) {\n const locale = matched[1]\n messages[locale] = locales(key).default\n }\n })\n return messages\n}\n\nexport default createI18n({\n legacy: false,\n locale: 'en',\n fallbackLocale: 'en',\n globalInjection: true,\n messages: loadLocaleMessages(),\n})\n","/* eslint-disable import/no-duplicates */\nimport { Locale } from 'date-fns'\nimport { enUS, fr } from 'date-fns/locale'\n\nimport createI18n from '@/i18n'\n\nexport const localeFromLanguage: Record = {\n en: enUS,\n fr: fr,\n}\n\nexport const languageLabels: Record = {\n en: 'English',\n fr: 'Français',\n}\n\nconst { availableLocales } = createI18n.global\nexport const availableLanguages = availableLocales.map((l) => {\n return { label: languageLabels[l], value: l }\n})\n","\n import { ComputedRef, computed, defineComponent, ref, capitalize } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import UserPicture from '@/components/User/UserPicture.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { IDropdownOption } from '@/types/forms'\n import { IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { getApiUrl } from '@/utils'\n import { availableLanguages } from '@/utils/locales'\n\n export default defineComponent({\n name: 'NavBar',\n components: {\n UserPicture,\n },\n emits: ['menuInteraction'],\n setup(props, { emit }) {\n const { locale } = useI18n()\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const isAuthenticated: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]\n )\n const authUserPictureUrl: ComputedRef = computed(() =>\n isAuthenticated.value && authUser.value.picture\n ? `${getApiUrl()}/users/${\n authUser.value.username\n }/picture?${Date.now()}`\n : ''\n )\n const language: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n let isMenuOpen = ref(false)\n\n function openMenu() {\n isMenuOpen.value = true\n emit('menuInteraction', true)\n }\n function closeMenu() {\n isMenuOpen.value = false\n emit('menuInteraction', false)\n }\n function updateLanguage(option: IDropdownOption) {\n locale.value = option.value.toString()\n store.commit(ROOT_STORE.MUTATIONS.UPDATE_LANG, option.value)\n }\n function logout() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.LOGOUT)\n }\n\n return {\n availableLanguages,\n authUser,\n authUserPictureUrl,\n isAuthenticated,\n isMenuOpen,\n language,\n capitalize,\n openMenu,\n closeMenu,\n updateLanguage,\n logout,\n }\n },\n })\n","import { render } from \"./NavBar.vue?vue&type=template&id=9d3d8adc&scoped=true&ts=true\"\nimport script from \"./NavBar.vue?vue&type=script&lang=ts\"\nexport * from \"./NavBar.vue?vue&type=script&lang=ts\"\n\nimport \"./NavBar.vue?vue&type=style&index=0&id=9d3d8adc&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-9d3d8adc\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-01d4a985\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"no-config\" }\nconst _hoisted_2 = { class: \"error-page\" }\nconst _hoisted_3 = /*#__PURE__*/_createStaticVNode(\"
\", 1)\nconst _hoisted_4 = [\"innerHTML\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"p\", {\n class: \"error-message\",\n innerHTML: _ctx.$t('error.APP_ERROR')\n }, null, 8, _hoisted_4)\n ])\n ]))\n}","\n import { defineComponent } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n export default defineComponent({\n name: 'NoConfig',\n setup() {\n const { t } = useI18n()\n return { t }\n },\n })\n","import { render } from \"./NoConfig.vue?vue&type=template&id=01d4a985&scoped=true&ts=true\"\nimport script from \"./NoConfig.vue?vue&type=script&lang=ts\"\nexport * from \"./NoConfig.vue?vue&type=script&lang=ts\"\n\nimport \"./NoConfig.vue?vue&type=style&index=0&id=01d4a985&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-01d4a985\"]])\n\nexport default __exports__","\n import {\n ComputedRef,\n computed,\n defineComponent,\n ref,\n onBeforeMount,\n onMounted,\n } from 'vue'\n\n import Footer from '@/components/Footer.vue'\n import NavBar from '@/components/NavBar.vue'\n import NoConfig from '@/components/NoConfig.vue'\n import { ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { useStore } from '@/use/useStore'\n\n export default defineComponent({\n name: 'App',\n components: {\n Footer,\n NavBar,\n NoConfig,\n },\n setup() {\n const store = useStore()\n\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const appLoading: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_LOADING]\n )\n const hideScrollBar = ref(false)\n const displayScrollButton = ref(false)\n\n onBeforeMount(() =>\n store.dispatch(ROOT_STORE.ACTIONS.GET_APPLICATION_CONFIG)\n )\n onMounted(() => scroll())\n\n function updateHideScrollBar(isMenuOpen: boolean) {\n hideScrollBar.value = isMenuOpen\n }\n\n function isScrolledToBottom(element: Element): boolean {\n return (\n element.getBoundingClientRect().top < window.innerHeight &&\n element.getBoundingClientRect().bottom >= 0\n )\n }\n function scroll() {\n window.onscroll = () => {\n let bottom = document.querySelector('#bottom')\n displayScrollButton.value =\n bottom !== null && isScrolledToBottom(bottom)\n }\n }\n function scrollToTop() {\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n })\n setTimeout(() => {\n displayScrollButton.value = false\n }, 300)\n }\n\n return {\n appConfig,\n appLoading,\n hideScrollBar,\n displayScrollButton,\n scrollToTop,\n updateHideScrollBar,\n }\n },\n })\n","import { render } from \"./App.vue?vue&type=template&id=317a6409&scoped=true&ts=true\"\nimport script from \"./App.vue?vue&type=script&lang=ts\"\nexport * from \"./App.vue?vue&type=script&lang=ts\"\n\nimport \"./App.vue?vue&type=style&index=0&id=317a6409&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-317a6409\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, vModelText as _vModelText, createElementVNode as _createElementVNode, withDirectives as _withDirectives, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, createElementBlock as _createElementBlock, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-26175b66\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-app\",\n class: \"admin-card\"\n}\nconst _hoisted_2 = { for: \"max_users\" }\nconst _hoisted_3 = [\"disabled\"]\nconst _hoisted_4 = { class: \"user-limit-help\" }\nconst _hoisted_5 = { class: \"info-box\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_7 = { for: \"max_single_file_size\" }\nconst _hoisted_8 = [\"disabled\"]\nconst _hoisted_9 = { for: \"max_zip_file_size\" }\nconst _hoisted_10 = [\"disabled\"]\nconst _hoisted_11 = { for: \"gpx_limit_import\" }\nconst _hoisted_12 = [\"disabled\"]\nconst _hoisted_13 = {\n key: 1,\n class: \"form-buttons\"\n}\nconst _hoisted_14 = {\n class: \"confirm\",\n type: \"submit\"\n}\nconst _hoisted_15 = {\n key: 2,\n class: \"form-buttons\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.TITLE')), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"form\", {\n class: \"admin-form\",\n onSubmit: _cache[7] || (_cache[7] = _withModifiers(\n//@ts-ignore\n(...args) => (_ctx.onSubmit && _ctx.onSubmit(...args)), [\"prevent\"]))\n }, [\n _createElementVNode(\"label\", _hoisted_2, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.MAX_USERS_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"max_users\",\n name: \"max_users\",\n type: \"number\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.appData.max_users) = $event)),\n disabled: !_ctx.edition\n }, null, 8, _hoisted_3), [\n [_vModelText, _ctx.appData.max_users]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"span\", _hoisted_5, [\n _hoisted_6,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('admin.APP_CONFIG.MAX_USERS_HELP')), 1)\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_7, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.SINGLE_UPLOAD_MAX_SIZE_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"max_single_file_size\",\n name: \"max_single_file_size\",\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.appData.max_single_file_size) = $event)),\n disabled: !_ctx.edition\n }, null, 8, _hoisted_8), [\n [_vModelText, _ctx.appData.max_single_file_size]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_9, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.ZIP_UPLOAD_MAX_SIZE_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"max_zip_file_size\",\n name: \"max_zip_file_size\",\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.appData.max_zip_file_size) = $event)),\n disabled: !_ctx.edition\n }, null, 8, _hoisted_10), [\n [_vModelText, _ctx.appData.max_zip_file_size]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_11, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.MAX_FILES_IN_ZIP_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"gpx_limit_import\",\n name: \"gpx_limit_import\",\n type: \"number\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((_ctx.appData.gpx_limit_import) = $event)),\n disabled: !_ctx.edition\n }, null, 8, _hoisted_12), [\n [_vModelText, _ctx.appData.gpx_limit_import]\n ])\n ]),\n (_ctx.errorMessages)\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _ctx.errorMessages\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.edition)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createElementVNode(\"button\", _hoisted_14, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[4] || (_cache[4] = _withModifiers(\n//@ts-ignore\n(...args) => (_ctx.onCancel && _ctx.onCancel(...args)), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n onClick: _cache[5] || (_cache[5] = _withModifiers(($event: any) => (_ctx.$router.push('/admin/application/edit')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.EDIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[6] || (_cache[6] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1)\n ]))\n ], 32)\n ]),\n _: 1\n })\n ]))\n}","\n import {\n ComputedRef,\n PropType,\n computed,\n defineComponent,\n reactive,\n onBeforeMount,\n } from 'vue'\n import { useRouter } from 'vue-router'\n\n import { ROOT_STORE } from '@/store/constants'\n import { TAppConfig, TAppConfigForm } from '@/types/application'\n import { useStore } from '@/use/useStore'\n import { getFileSizeInMB } from '@/utils/files'\n\n export default defineComponent({\n name: 'AdminApplication',\n props: {\n appConfig: {\n type: Object as PropType,\n required: true,\n },\n edition: {\n type: Boolean,\n default: false,\n },\n },\n setup(props) {\n const store = useStore()\n const router = useRouter()\n const appData: TAppConfigForm = reactive({\n max_users: 0,\n max_single_file_size: 0,\n max_zip_file_size: 0,\n gpx_limit_import: 0,\n })\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n onBeforeMount(() => {\n if (props.appConfig) {\n updateForm(props.appConfig)\n }\n })\n\n function updateForm(appConfig: TAppConfig) {\n Object.keys(appData).map((key) => {\n ;['max_single_file_size', 'max_zip_file_size'].includes(key)\n ? // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (appData[key] = getFileSizeInMB(appConfig[key]))\n : // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (appData[key] = appConfig[key])\n })\n }\n\n function onCancel() {\n updateForm(props.appConfig)\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n router.push('/admin/application')\n }\n function onSubmit() {\n const formData: TAppConfigForm = Object.assign({}, appData)\n formData.max_single_file_size *= 1048576\n formData.max_zip_file_size *= 1048576\n store.dispatch(ROOT_STORE.ACTIONS.UPDATE_APPLICATION_CONFIG, formData)\n }\n\n return { appData, errorMessages, onCancel, onSubmit }\n },\n })\n","import { render } from \"./AdminApplication.vue?vue&type=template&id=26175b66&scoped=true&ts=true\"\nimport script from \"./AdminApplication.vue?vue&type=script&lang=ts\"\nexport * from \"./AdminApplication.vue?vue&type=script&lang=ts\"\n\nimport \"./AdminApplication.vue?vue&type=style&index=0&id=26175b66&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-26175b66\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4f30aa64\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-menu\",\n class: \"center-card\"\n}\nconst _hoisted_2 = { class: \"admin-menu description-list\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_4 = { class: \"registration-status\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_AppStatsCards = _resolveComponent(\"AppStatsCards\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.ADMINISTRATION')), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(_component_AppStatsCards, { \"app-statistics\": _ctx.appStatistics }, null, 8, [\"app-statistics\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"dl\", null, [\n _createElementVNode(\"dt\", null, [\n _createVNode(_component_router_link, { to: \"/admin/application\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APPLICATION')), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"dd\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.UPDATE_APPLICATION_DESCRIPTION')), 1),\n _hoisted_3,\n _createElementVNode(\"span\", _hoisted_4, _toDisplayString(_ctx.$t(\n `admin.REGISTRATION_${\n _ctx.appConfig.is_registration_enabled ? 'ENABLED' : 'DISABLED'\n }`\n )), 1)\n ]),\n _createElementVNode(\"dt\", null, [\n _createVNode(_component_router_link, { to: \"/admin/sports\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.capitalize(_ctx.$t('workouts.SPORT', 0))), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t('admin.ENABLE_DISABLE_SPORTS')), 1),\n _createElementVNode(\"dt\", null, [\n _createVNode(_component_router_link, { to: \"/admin/users\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.capitalize(_ctx.$t('admin.USER', 0))), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t('admin.ADMIN_RIGHTS_DELETE_USER_ACCOUNT')), 1)\n ])\n ])\n ]),\n _: 1\n })\n ]))\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"user-stats\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_StatCard = _resolveComponent(\"StatCard\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_StatCard, {\n icon: \"users\",\n value: _ctx.usersCount,\n text: _ctx.$t('admin.USER', _ctx.usersCount)\n }, null, 8, [\"value\", \"text\"]),\n _createVNode(_component_StatCard, {\n icon: \"tags\",\n value: _ctx.sportsCount,\n text: _ctx.$t('workouts.SPORT', _ctx.sportsCount)\n }, null, 8, [\"value\", \"text\"]),\n _createVNode(_component_StatCard, {\n icon: \"calendar\",\n value: _ctx.workoutCount,\n text: _ctx.$t('workouts.WORKOUT', _ctx.workoutCount)\n }, null, 8, [\"value\", \"text\"]),\n _createVNode(_component_StatCard, {\n icon: \"folder-open\",\n value: _ctx.uploadDirSize.size,\n text: _ctx.uploadDirSize.suffix\n }, null, 8, [\"value\", \"text\"])\n ]))\n}","\n import { PropType, defineComponent, computed } from 'vue'\n\n import StatCard from '@/components/Common/StatCard.vue'\n import { IAppStatistics } from '@/types/application'\n import { getReadableFileSize } from '@/utils/files'\n\n export default defineComponent({\n name: 'UserStatsCards',\n components: {\n StatCard,\n },\n props: {\n appStatistics: {\n type: Object as PropType,\n default: () => {\n return {}\n },\n },\n },\n setup(props) {\n return {\n uploadDirSize: computed(() =>\n props.appStatistics.uploads_dir_size\n ? getReadableFileSize(props.appStatistics.uploads_dir_size, false)\n : { size: 0, suffix: 'bytes' }\n ),\n usersCount: computed(() =>\n props.appStatistics.users ? props.appStatistics.users : 0\n ),\n sportsCount: computed(() =>\n props.appStatistics.sports ? props.appStatistics.sports : 0\n ),\n workoutCount: computed(() =>\n props.appStatistics.workouts ? props.appStatistics.workouts : 0\n ),\n }\n },\n })\n","import { render } from \"./AppStatsCards.vue?vue&type=template&id=cd52bcc2&ts=true\"\nimport script from \"./AppStatsCards.vue?vue&type=script&lang=ts\"\nexport * from \"./AppStatsCards.vue?vue&type=script&lang=ts\"\n\nimport \"./AppStatsCards.vue?vue&type=style&index=0&id=cd52bcc2&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { renderSlot as _renderSlot, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"card\" }\nconst _hoisted_2 = { class: \"card-title\" }\nconst _hoisted_3 = { class: \"card-content\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _renderSlot(_ctx.$slots, \"title\")\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _renderSlot(_ctx.$slots, \"content\")\n ])\n ]))\n}","\n import { defineComponent } from 'vue'\n export default defineComponent({\n name: 'Card',\n })\n","import { render } from \"./Card.vue?vue&type=template&id=c5956538&ts=true\"\nimport script from \"./Card.vue?vue&type=script&lang=ts\"\nexport * from \"./Card.vue?vue&type=script&lang=ts\"\n\nimport \"./Card.vue?vue&type=style&index=0&id=c5956538&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n import { PropType, capitalize, defineComponent } from 'vue'\n\n import AppStatsCards from '@/components/Administration/AppStatsCards.vue'\n import Card from '@/components/Common/Card.vue'\n import { IAppStatistics, TAppConfig } from '@/types/application'\n\n export default defineComponent({\n name: 'AdminMenu',\n components: {\n AppStatsCards,\n Card,\n },\n props: {\n appConfig: {\n type: Object as PropType,\n required: true,\n },\n appStatistics: {\n type: Object as PropType,\n },\n },\n setup() {\n return { capitalize }\n },\n })\n","import { render } from \"./AdminMenu.vue?vue&type=template&id=4f30aa64&scoped=true&ts=true\"\nimport script from \"./AdminMenu.vue?vue&type=script&lang=ts\"\nexport * from \"./AdminMenu.vue?vue&type=script&lang=ts\"\n\nimport \"./AdminMenu.vue?vue&type=style&index=0&id=4f30aa64&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4f30aa64\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withModifiers as _withModifiers, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, createBlock as _createBlock, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6d930723\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-sports\",\n class: \"admin-card\"\n}\nconst _hoisted_2 = { class: \"responsive-table\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, \"#\", -1))\nconst _hoisted_4 = { class: \"text-left\" }\nconst _hoisted_5 = { class: \"text-left sport-action\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, null, -1))\nconst _hoisted_7 = { class: \"center-text\" }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"cell-heading\" }, \"id\", -1))\nconst _hoisted_9 = { class: \"cell-heading\" }\nconst _hoisted_10 = { class: \"sport-label\" }\nconst _hoisted_11 = { class: \"cell-heading\" }\nconst _hoisted_12 = { class: \"center-text\" }\nconst _hoisted_13 = { class: \"cell-heading\" }\nconst _hoisted_14 = { class: \"sport-action\" }\nconst _hoisted_15 = { class: \"cell-heading\" }\nconst _hoisted_16 = { class: \"action-button\" }\nconst _hoisted_17 = [\"onClick\"]\nconst _hoisted_18 = {\n key: 0,\n class: \"has-workouts\"\n}\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-warning\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.SPORTS.TITLE')), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"button\", {\n class: \"top-button\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _hoisted_3,\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.IMAGE')), 1),\n _createElementVNode(\"th\", _hoisted_4, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.LABEL')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.ACTIVE')), 1),\n _createElementVNode(\"th\", _hoisted_5, _toDisplayString(_ctx.$t('admin.ACTION')), 1),\n _hoisted_6\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.translatedSports, (sport) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: sport.id\n }, [\n _createElementVNode(\"td\", _hoisted_7, [\n _hoisted_8,\n _createTextVNode(\" \" + _toDisplayString(sport.id), 1)\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.IMAGE')), 1),\n _createVNode(_component_SportImage, {\n title: sport.translatedLabel,\n \"sport-label\": sport.label\n }, null, 8, [\"title\", \"sport-label\"])\n ]),\n _createElementVNode(\"td\", _hoisted_10, [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.LABEL')), 1),\n _createTextVNode(\" \" + _toDisplayString(sport.translatedLabel), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_12, [\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.ACTIVE')), 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa${sport.is_active ? '-check' : ''}-square-o`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n _createElementVNode(\"td\", _hoisted_14, [\n _createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t('admin.ACTION')), 1),\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"button\", {\n class: _normalizeClass({ danger: sport.is_active }),\n onClick: ($event: any) => (_ctx.updateSportStatus(sport.id, !sport.is_active))\n }, _toDisplayString(_ctx.$t(`buttons.${sport.is_active ? 'DIS' : 'EN'}ABLE`)), 11, _hoisted_17),\n (sport.has_workouts)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_18, [\n _hoisted_19,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.HAS_WORKOUTS')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]))\n }), 128))\n ])\n ]),\n (_ctx.errorMessages)\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _ctx.errorMessages\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1)\n ])\n ]),\n _: 1\n })\n ]))\n}","\n import { ComputedRef, computed, defineComponent } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { ROOT_STORE, SPORTS_STORE } from '@/store/constants'\n import { ITranslatedSport } from '@/types/sports'\n import { useStore } from '@/use/useStore'\n import { translateSports } from '@/utils/sports'\n\n export default defineComponent({\n name: 'AdminSports',\n setup() {\n const { t } = useI18n()\n const store = useStore()\n const translatedSports: ComputedRef = computed(() =>\n translateSports(store.getters[SPORTS_STORE.GETTERS.SPORTS], t)\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n function updateSportStatus(id: number, isActive: boolean) {\n store.dispatch(SPORTS_STORE.ACTIONS.UPDATE_SPORTS, {\n id,\n isActive,\n })\n }\n\n return { errorMessages, translatedSports, updateSportStatus }\n },\n })\n","import { render } from \"./AdminSports.vue?vue&type=template&id=6d930723&scoped=true&ts=true\"\nimport script from \"./AdminSports.vue?vue&type=script&lang=ts\"\nexport * from \"./AdminSports.vue?vue&type=script&lang=ts\"\n\nimport \"./AdminSports.vue?vue&type=style&index=0&id=6d930723&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6d930723\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withModifiers as _withModifiers, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, withCtx as _withCtx, normalizeClass as _normalizeClass, createBlock as _createBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-eb17bef8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-users\",\n class: \"admin-card\"\n}\nconst _hoisted_2 = { class: \"responsive-table\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, \"#\", -1))\nconst _hoisted_4 = { class: \"left-text\" }\nconst _hoisted_5 = { class: \"left-text\" }\nconst _hoisted_6 = { class: \"left-text\" }\nconst _hoisted_7 = { class: \"cell-heading\" }\nconst _hoisted_8 = { class: \"cell-heading\" }\nconst _hoisted_9 = { class: \"cell-heading\" }\nconst _hoisted_10 = { class: \"cell-heading\" }\nconst _hoisted_11 = { class: \"center-text\" }\nconst _hoisted_12 = { class: \"cell-heading\" }\nconst _hoisted_13 = { class: \"center-text\" }\nconst _hoisted_14 = { class: \"cell-heading\" }\nconst _hoisted_15 = { class: \"center-text\" }\nconst _hoisted_16 = { class: \"cell-heading\" }\nconst _hoisted_17 = [\"disabled\", \"onClick\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_FilterSelects = _resolveComponent(\"FilterSelects\")!\n const _component_UserPicture = _resolveComponent(\"UserPicture\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Pagination = _resolveComponent(\"Pagination\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.capitalize(_ctx.$t('admin.USER', 0))), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"button\", {\n class: \"top-button\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1),\n _createVNode(_component_FilterSelects, {\n sort: _ctx.sortList,\n order_by: _ctx.orderByList,\n query: _ctx.query,\n message: \"admin.USERS.SELECTS.ORDER_BY\",\n onUpdateSelect: _ctx.reloadUsers\n }, null, 8, [\"sort\", \"order_by\", \"query\", \"onUpdateSelect\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _hoisted_3,\n _createElementVNode(\"th\", _hoisted_4, _toDisplayString(_ctx.$t('user.USERNAME')), 1),\n _createElementVNode(\"th\", _hoisted_5, _toDisplayString(_ctx.$t('user.EMAIL')), 1),\n _createElementVNode(\"th\", _hoisted_6, _toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.capitalize(_ctx.$t('workouts.WORKOUT', 0))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('user.ADMIN')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('admin.ACTION')), 1)\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.users, (user) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: user.username\n }, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(_ctx.$t('user.PROFILE.PICTURE')), 1),\n _createVNode(_component_UserPicture, { user: user }, null, 8, [\"user\"])\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('user.USERNAME')), 1),\n _createVNode(_component_router_link, {\n to: `/users/${user.username}`\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(user.username), 1)\n ]),\n _: 2\n }, 1032, [\"to\"])\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('user.EMAIL')), 1),\n _createTextVNode(\" \" + _toDisplayString(user.email), 1)\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')), 1),\n _createTextVNode(\" \" + _toDisplayString(_ctx.format(\n _ctx.getDateWithTZ(user.created_at, _ctx.authUser.timezone),\n 'dd/MM/yyyy HH:mm'\n )), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_11, [\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(_ctx.capitalize(_ctx.$t('workouts.WORKOUT', 0))), 1),\n _createTextVNode(\" \" + _toDisplayString(user.nb_workouts), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_13, [\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.$t('user.ADMIN')), 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa${user.admin ? '-check' : ''}-square-o`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n _createElementVNode(\"td\", _hoisted_15, [\n _createElementVNode(\"span\", _hoisted_16, _toDisplayString(_ctx.$t('admin.ACTION')), 1),\n _createElementVNode(\"button\", {\n class: _normalizeClass({ danger: user.admin }),\n disabled: user.username === _ctx.authUser.username,\n onClick: ($event: any) => (_ctx.updateUser(user.username, !user.admin))\n }, _toDisplayString(_ctx.$t(\n `admin.USERS.TABLE.${\n user.admin ? 'REMOVE' : 'ADD'\n }_ADMIN_RIGHTS`\n )), 11, _hoisted_17)\n ])\n ]))\n }), 128))\n ])\n ]),\n (_ctx.pagination.page)\n ? (_openBlock(), _createBlock(_component_Pagination, {\n key: 0,\n path: \"/admin/users\",\n pagination: _ctx.pagination,\n query: _ctx.query\n }, null, 8, [\"pagination\", \"query\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.errorMessages)\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 1,\n message: _ctx.errorMessages\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1)\n ])\n ]),\n _: 1\n })\n ]))\n}","\n import { format } from 'date-fns'\n import {\n ComputedRef,\n computed,\n defineComponent,\n reactive,\n watch,\n capitalize,\n onBeforeMount,\n onUnmounted,\n } from 'vue'\n import { LocationQuery, useRoute, useRouter } from 'vue-router'\n\n import FilterSelects from '@/components/Common/FilterSelects.vue'\n import Pagination from '@/components/Common/Pagination.vue'\n import UserPicture from '@/components/User/UserPicture.vue'\n import { AUTH_USER_STORE, ROOT_STORE, USERS_STORE } from '@/store/constants'\n import { IPagination, TPaginationPayload } from '@/types/api'\n import { IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { getQuery, sortList } from '@/utils/api'\n import { getDateWithTZ } from '@/utils/dates'\n\n export default defineComponent({\n name: 'AdminUsers',\n components: {\n FilterSelects,\n Pagination,\n UserPicture,\n },\n setup() {\n const store = useStore()\n const route = useRoute()\n const router = useRouter()\n\n const orderByList: string[] = [\n 'admin',\n 'created_at',\n 'username',\n 'workouts_count',\n ]\n const defaultOrderBy = 'created_at'\n let query: TPaginationPayload = reactive(\n getQuery(route.query, orderByList, defaultOrderBy)\n )\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const users: ComputedRef = computed(\n () => store.getters[USERS_STORE.GETTERS.USERS]\n )\n const pagination: ComputedRef = computed(\n () => store.getters[USERS_STORE.GETTERS.USERS_PAGINATION]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n function loadUsers(queryParams: TPaginationPayload) {\n store.dispatch(USERS_STORE.ACTIONS.GET_USERS, queryParams)\n }\n function updateUser(username: string, admin: boolean) {\n store.dispatch(USERS_STORE.ACTIONS.UPDATE_USER, {\n username,\n admin,\n })\n }\n function reloadUsers(queryParam: string, queryValue: string) {\n query[queryParam] = queryValue\n if (queryParam === 'per_page') {\n query.page = 1\n }\n router.push({ path: '/admin/users', query })\n }\n\n onBeforeMount(() => loadUsers(query))\n\n watch(\n () => route.query,\n (newQuery: LocationQuery) => {\n query = getQuery(newQuery, orderByList, defaultOrderBy, { query })\n loadUsers(query)\n }\n )\n\n onUnmounted(() => {\n store.dispatch(USERS_STORE.ACTIONS.EMPTY_USERS)\n })\n\n return {\n authUser,\n errorMessages,\n orderByList,\n pagination,\n query,\n sortList,\n users,\n capitalize,\n format,\n getDateWithTZ,\n reloadUsers,\n updateUser,\n }\n },\n })\n","import { render } from \"./AdminUsers.vue?vue&type=template&id=eb17bef8&scoped=true&ts=true\"\nimport script from \"./AdminUsers.vue?vue&type=script&lang=ts\"\nexport * from \"./AdminUsers.vue?vue&type=script&lang=ts\"\n\nimport \"./AdminUsers.vue?vue&type=style&index=0&id=eb17bef8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-eb17bef8\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-c81580c0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-profile\" }\nconst _hoisted_2 = { class: \"box\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_UserHeader = _resolveComponent(\"UserHeader\")!\n const _component_UserProfileTabs = _resolveComponent(\"UserProfileTabs\")!\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_UserHeader, { user: _ctx.user }, null, 8, [\"user\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_UserProfileTabs, {\n tabs: _ctx.tabs,\n selectedTab: _ctx.tab,\n edition: false\n }, null, 8, [\"tabs\", \"selectedTab\"]),\n _createVNode(_component_router_view, { user: _ctx.user }, null, 8, [\"user\"])\n ])\n ]))\n}","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString } from \"vue\"\n\nconst _hoisted_1 = { class: \"profile-tabs custom-checkboxes-group\" }\nconst _hoisted_2 = { class: \"profile-tabs-checkboxes custom-checkboxes\" }\nconst _hoisted_3 = [\"id\", \"name\", \"checked\", \"disabled\", \"onInput\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.tabs, (tab) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"profile-tab custom-checkbox\",\n key: tab\n }, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n id: tab,\n name: tab,\n checked: _ctx.selectedTab === tab,\n disabled: _ctx.disabled,\n onInput: ($event: any) => (_ctx.$router.push(_ctx.getPath(tab)))\n }, null, 40, _hoisted_3),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(`user.PROFILE.TABS.${tab}`)), 1)\n ])\n ]))\n }), 128))\n ])\n ]))\n}","\n import { PropType, defineComponent } from 'vue'\n\n export default defineComponent({\n name: 'UserProfileTabs',\n props: {\n tabs: {\n type: Object as PropType,\n required: true,\n },\n selectedTab: {\n type: String,\n required: true,\n },\n edition: {\n type: Boolean,\n required: true,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n setup(props) {\n function getPath(tab: string) {\n switch (tab) {\n case 'PICTURE':\n return '/profile/edit/picture'\n case 'PREFERENCES':\n return `/profile${props.edition ? '/edit' : ''}/preferences`\n default:\n case 'PROFILE':\n return `/profile${props.edition ? '/edit' : ''}`\n }\n }\n return { getPath }\n },\n })\n","import { render } from \"./UserProfileTabs.vue?vue&type=template&id=c7276c08&ts=true\"\nimport script from \"./UserProfileTabs.vue?vue&type=script&lang=ts\"\nexport * from \"./UserProfileTabs.vue?vue&type=script&lang=ts\"\n\nimport \"./UserProfileTabs.vue?vue&type=style&index=0&id=c7276c08&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n import { PropType, defineComponent } from 'vue'\n\n import UserHeader from '@/components/User/ProfileDisplay/UserHeader.vue'\n import UserProfileTabs from '@/components/User/UserProfileTabs.vue'\n import { IUserProfile } from '@/types/user'\n\n export default defineComponent({\n name: 'ProfileDisplay',\n components: {\n UserHeader,\n UserProfileTabs,\n },\n props: {\n user: {\n type: Object as PropType,\n required: true,\n },\n tab: {\n type: String,\n required: true,\n },\n },\n setup() {\n return {\n tabs: ['PROFILE', 'PREFERENCES'],\n }\n },\n })\n","import { render } from \"./index.vue?vue&type=template&id=c81580c0&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=c81580c0&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-c81580c0\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-39667dbe\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"user-preferences\",\n class: \"description-list\"\n}\nconst _hoisted_2 = { class: \"profile-buttons\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"dl\", null, [\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.LANGUAGE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.language), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.TIMEZONE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.timezone), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.FIRST_DAY_OF_WEEK')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t(`user.PROFILE.${_ctx.fistDayOfWeek}`)), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"button\", {\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/profile/edit/preferences')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.EDIT_PREFERENCES')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ])\n ]))\n}","\n import { PropType, computed, defineComponent } from 'vue'\n\n import { IUserProfile } from '@/types/user'\n import { languageLabels } from '@/utils/locales'\n\n export default defineComponent({\n name: 'UserPreferences',\n props: {\n user: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n const language = computed(() =>\n props.user.language\n ? languageLabels[props.user.language]\n : languageLabels['en']\n )\n const fistDayOfWeek = computed(() =>\n props.user.weekm ? 'MONDAY' : 'SUNDAY'\n )\n const timezone = computed(() =>\n props.user.timezone ? props.user.timezone : 'Europe/Paris'\n )\n return { fistDayOfWeek, language, timezone }\n },\n })\n","import { render } from \"./UserPreferences.vue?vue&type=template&id=39667dbe&scoped=true&ts=true\"\nimport script from \"./UserPreferences.vue?vue&type=script&lang=ts\"\nexport * from \"./UserPreferences.vue?vue&type=script&lang=ts\"\n\nimport \"./UserPreferences.vue?vue&type=style&index=0&id=39667dbe&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-39667dbe\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"user-profile-edition\",\n class: \"center-card\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_UserProfileTabs = _resolveComponent(\"UserProfileTabs\")!\n const _component_router_view = _resolveComponent(\"router-view\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(`user.PROFILE.${_ctx.tab}_EDITION`)), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(_component_UserProfileTabs, {\n tabs: _ctx.tabs,\n selectedTab: _ctx.tab,\n edition: true,\n disabled: _ctx.loading\n }, null, 8, [\"tabs\", \"selectedTab\", \"disabled\"]),\n _createVNode(_component_router_view, { user: _ctx.user }, null, 8, [\"user\"])\n ]),\n _: 1\n })\n ]))\n}","\n import { computed, defineComponent, PropType } from 'vue'\n\n import UserProfileTabs from '@/components/User/UserProfileTabs.vue'\n import { AUTH_USER_STORE } from '@/store/constants'\n import { IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n export default defineComponent({\n name: 'ProfileEdition',\n components: {\n UserProfileTabs,\n },\n props: {\n user: {\n type: Object as PropType,\n required: true,\n },\n tab: {\n type: String,\n required: true,\n },\n },\n setup() {\n const store = useStore()\n return {\n loading: computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n ),\n tabs: ['PROFILE', 'PICTURE', 'PREFERENCES'],\n }\n },\n })\n","import { render } from \"./index.vue?vue&type=template&id=386e1de0&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, vModelText as _vModelText, withDirectives as _withDirectives, createVNode as _createVNode, withModifiers as _withModifiers, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"user-infos-edition\" }\nconst _hoisted_2 = { class: \"profile-form form-box\" }\nconst _hoisted_3 = {\n class: \"form-items\",\n for: \"email\"\n}\nconst _hoisted_4 = [\"value\"]\nconst _hoisted_5 = {\n class: \"form-items\",\n for: \"registrationDate\"\n}\nconst _hoisted_6 = [\"value\"]\nconst _hoisted_7 = {\n class: \"form-items\",\n for: \"password\"\n}\nconst _hoisted_8 = [\"disabled\"]\nconst _hoisted_9 = {\n class: \"form-items\",\n for: \"passwordConfirmation\"\n}\nconst _hoisted_10 = [\"disabled\"]\nconst _hoisted_11 = /*#__PURE__*/_createElementVNode(\"hr\", null, null, -1)\nconst _hoisted_12 = {\n class: \"form-items\",\n for: \"first_name\"\n}\nconst _hoisted_13 = [\"disabled\"]\nconst _hoisted_14 = {\n class: \"form-items\",\n for: \"last_name\"\n}\nconst _hoisted_15 = {\n class: \"form-items\",\n for: \"birth_date\"\n}\nconst _hoisted_16 = [\"disabled\"]\nconst _hoisted_17 = {\n class: \"form-items\",\n for: \"location\"\n}\nconst _hoisted_18 = [\"disabled\"]\nconst _hoisted_19 = { class: \"form-items\" }\nconst _hoisted_20 = { class: \"form-buttons\" }\nconst _hoisted_21 = {\n class: \"confirm\",\n type: \"submit\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Modal = _resolveComponent(\"Modal\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_CustomTextArea = _resolveComponent(\"CustomTextArea\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.displayModal)\n ? (_openBlock(), _createBlock(_component_Modal, {\n key: 0,\n title: _ctx.$t('common.CONFIRMATION'),\n message: _ctx.$t('user.CONFIRM_ACCOUNT_DELETION'),\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (_ctx.deleteAccount(_ctx.user.username))),\n onCancelAction: _cache[1] || (_cache[1] = ($event: any) => (_ctx.updateDisplayModal(false)))\n }, null, 8, [\"title\", \"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_2, [\n (_ctx.errorMessages)\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _ctx.errorMessages\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"form\", {\n onSubmit: _cache[10] || (_cache[10] = _withModifiers(\n//@ts-ignore\n(...args) => (_ctx.updateProfile && _ctx.updateProfile(...args)), [\"prevent\"]))\n }, [\n _createElementVNode(\"label\", _hoisted_3, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.EMAIL')) + \" \", 1),\n _createElementVNode(\"input\", {\n id: \"email\",\n value: _ctx.user.email,\n disabled: \"\"\n }, null, 8, _hoisted_4)\n ]),\n _createElementVNode(\"label\", _hoisted_5, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')) + \" \", 1),\n _createElementVNode(\"input\", {\n id: \"registrationDate\",\n value: _ctx.registrationDate,\n disabled: \"\"\n }, null, 8, _hoisted_6)\n ]),\n _createElementVNode(\"label\", _hoisted_7, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PASSWORD')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"password\",\n type: \"password\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.userForm.password) = $event)),\n disabled: _ctx.loading\n }, null, 8, _hoisted_8), [\n [_vModelText, _ctx.userForm.password]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_9, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PASSWORD_CONFIRMATION')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"passwordConfirmation\",\n type: \"password\",\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((_ctx.userForm.password_conf) = $event)),\n disabled: _ctx.loading\n }, null, 8, _hoisted_10), [\n [_vModelText, _ctx.userForm.password_conf]\n ])\n ]),\n _hoisted_11,\n _createElementVNode(\"label\", _hoisted_12, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.FIRST_NAME')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"first_name\",\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((_ctx.userForm.first_name) = $event)),\n disabled: _ctx.loading\n }, null, 8, _hoisted_13), [\n [_vModelText, _ctx.userForm.first_name]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_14, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.LAST_NAME')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"last_name\",\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((_ctx.userForm.last_name) = $event))\n }, null, 512), [\n [_vModelText, _ctx.userForm.last_name]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_15, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.BIRTH_DATE')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"birth_date\",\n type: \"date\",\n class: \"birth-date\",\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((_ctx.userForm.birth_date) = $event)),\n disabled: _ctx.loading\n }, null, 8, _hoisted_16), [\n [_vModelText, _ctx.userForm.birth_date]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_17, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.LOCATION')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"location\",\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((_ctx.userForm.location) = $event)),\n disabled: _ctx.loading\n }, null, 8, _hoisted_18), [\n [_vModelText, _ctx.userForm.location]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_19, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.BIO')) + \" \", 1),\n _createVNode(_component_CustomTextArea, {\n name: \"bio\",\n charLimit: 200,\n input: _ctx.userForm.bio,\n disabled: _ctx.loading,\n onUpdateValue: _ctx.updateBio\n }, null, 8, [\"input\", \"disabled\", \"onUpdateValue\"])\n ]),\n _createElementVNode(\"div\", _hoisted_20, [\n _createElementVNode(\"button\", _hoisted_21, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[8] || (_cache[8] = _withModifiers(($event: any) => (_ctx.$router.push('/profile')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1),\n _createElementVNode(\"button\", {\n class: \"danger\",\n onClick: _cache[9] || (_cache[9] = _withModifiers(($event: any) => (_ctx.updateDisplayModal(true)), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.DELETE_MY_ACCOUNT')), 1)\n ])\n ], 32)\n ])\n ]))\n}","\n import { format } from 'date-fns'\n import {\n ComputedRef,\n PropType,\n Ref,\n computed,\n defineComponent,\n reactive,\n ref,\n onMounted,\n } from 'vue'\n\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { IUserProfile, IUserPayload } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n export default defineComponent({\n name: 'UserInfosEdition',\n props: {\n user: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n const store = useStore()\n const userForm: IUserPayload = reactive({\n password: '',\n password_conf: '',\n first_name: '',\n last_name: '',\n birth_date: '',\n location: '',\n bio: '',\n })\n const registrationDate = computed(() =>\n props.user.created_at\n ? format(new Date(props.user.created_at), 'dd/MM/yyyy HH:mm')\n : ''\n )\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n let displayModal: Ref = ref(false)\n\n onMounted(() => {\n if (props.user) {\n updateUserForm(props.user)\n }\n })\n\n function updateUserForm(user: IUserProfile) {\n userForm.first_name = user.first_name ? user.first_name : ''\n userForm.last_name = user.last_name ? user.last_name : ''\n userForm.birth_date = user.birth_date\n ? format(new Date(user.birth_date), 'yyyy-MM-dd')\n : ''\n userForm.location = user.location ? user.location : ''\n userForm.bio = user.bio ? user.bio : ''\n }\n function updateBio(value: string) {\n userForm.bio = value\n }\n function updateProfile() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.UPDATE_USER_PROFILE, userForm)\n }\n function updateDisplayModal(value: boolean) {\n displayModal.value = value\n }\n function deleteAccount(username: string) {\n store.dispatch(AUTH_USER_STORE.ACTIONS.DELETE_ACCOUNT, { username })\n }\n\n return {\n displayModal,\n errorMessages,\n loading,\n registrationDate,\n userForm,\n deleteAccount,\n updateBio,\n updateDisplayModal,\n updateProfile,\n }\n },\n })\n","import { render } from \"./UserInfosEdition.vue?vue&type=template&id=e9d6897c&ts=true\"\nimport script from \"./UserInfosEdition.vue?vue&type=script&lang=ts\"\nexport * from \"./UserInfosEdition.vue?vue&type=script&lang=ts\"\n\nimport \"./UserInfosEdition.vue?vue&type=style&index=0&id=e9d6897c&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementBlock as _createElementBlock, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0ea4550a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-picture-edition\" }\nconst _hoisted_2 = { class: \"user-picture-form\" }\nconst _hoisted_3 = { class: \"picture-help\" }\nconst _hoisted_4 = { class: \"info-box\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_6 = { class: \"picture-buttons\" }\nconst _hoisted_7 = [\"disabled\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_UserPicture = _resolveComponent(\"UserPicture\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_ctx.errorMessages)\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _ctx.errorMessages\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_UserPicture, { user: _ctx.user }, null, 8, [\"user\"]),\n _createElementVNode(\"form\", {\n onSubmit: _cache[3] || (_cache[3] = _withModifiers(\n//@ts-ignore\n(...args) => (_ctx.updateUserPicture && _ctx.updateUserPicture(...args)), [\"prevent\"]))\n }, [\n _createElementVNode(\"input\", {\n type: \"file\",\n name: \"picture\",\n accept: \".png,.jpg,.gif\",\n onInput: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.updatePictureFile && _ctx.updatePictureFile(...args)))\n }, null, 32),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"span\", _hoisted_4, [\n _hoisted_5,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.MAX_SIZE')) + \": \" + _toDisplayString(_ctx.fileSizeLimit), 1)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"button\", {\n type: \"submit\",\n disabled: !_ctx.pictureFile\n }, _toDisplayString(_ctx.$t('user.PROFILE.PICTURE_UPDATE')), 9, _hoisted_7),\n (_ctx.user.picture)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"danger\",\n onClick: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.deleteUserPicture && _ctx.deleteUserPicture(...args)))\n }, _toDisplayString(_ctx.$t('user.PROFILE.PICTURE_REMOVE')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.$router.push('/profile')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.BACK_TO_PROFILE')), 1)\n ])\n ], 32)\n ])\n ]))\n}","\n import {\n ComputedRef,\n PropType,\n Ref,\n defineComponent,\n computed,\n ref,\n } from 'vue'\n\n import UserPicture from '@/components/User/UserPicture.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { getReadableFileSize } from '@/utils/files'\n\n export default defineComponent({\n name: 'UserPictureEdition',\n components: {\n UserPicture,\n },\n props: {\n user: {\n type: Object as PropType,\n required: true,\n },\n },\n setup() {\n const store = useStore()\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const fileSizeLimit = appConfig.value.max_single_file_size\n ? getReadableFileSize(appConfig.value.max_single_file_size)\n : ''\n let pictureFile: Ref = ref(null)\n\n function deleteUserPicture() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.DELETE_PICTURE)\n }\n function updatePictureFile(event: Event & { target: HTMLInputElement }) {\n if (event.target.files) {\n pictureFile.value = event.target.files[0]\n }\n }\n function updateUserPicture() {\n if (pictureFile.value) {\n store.dispatch(AUTH_USER_STORE.ACTIONS.UPDATE_USER_PICTURE, {\n picture: pictureFile.value,\n })\n }\n }\n\n return {\n errorMessages,\n fileSizeLimit,\n pictureFile,\n deleteUserPicture,\n updateUserPicture,\n updatePictureFile,\n }\n },\n })\n","import { render } from \"./UserPictureEdition.vue?vue&type=template&id=0ea4550a&scoped=true&ts=true\"\nimport script from \"./UserPictureEdition.vue?vue&type=script&lang=ts\"\nexport * from \"./UserPictureEdition.vue?vue&type=script&lang=ts\"\n\nimport \"./UserPictureEdition.vue?vue&type=style&index=0&id=0ea4550a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0ea4550a\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, vModelSelect as _vModelSelect, createElementVNode as _createElementVNode, withDirectives as _withDirectives, createTextVNode as _createTextVNode, vModelText as _vModelText, withModifiers as _withModifiers } from \"vue\"\n\nconst _hoisted_1 = { id: \"user-preferences-edition\" }\nconst _hoisted_2 = { class: \"profile-form form-box\" }\nconst _hoisted_3 = { class: \"form-items\" }\nconst _hoisted_4 = [\"disabled\"]\nconst _hoisted_5 = [\"value\"]\nconst _hoisted_6 = {\n class: \"form-items\",\n for: \"timezone\"\n}\nconst _hoisted_7 = [\"disabled\"]\nconst _hoisted_8 = { class: \"form-items\" }\nconst _hoisted_9 = [\"disabled\"]\nconst _hoisted_10 = [\"value\"]\nconst _hoisted_11 = { class: \"form-buttons\" }\nconst _hoisted_12 = {\n class: \"confirm\",\n type: \"submit\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_ctx.errorMessages)\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _ctx.errorMessages\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"form\", {\n onSubmit: _cache[4] || (_cache[4] = _withModifiers(\n//@ts-ignore\n(...args) => (_ctx.updateProfile && _ctx.updateProfile(...args)), [\"prevent\"]))\n }, [\n _createElementVNode(\"label\", _hoisted_3, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.LANGUAGE')) + \" \", 1),\n _withDirectives(_createElementVNode(\"select\", {\n id: \"language\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.userForm.language) = $event)),\n disabled: _ctx.loading\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.availableLanguages, (lang) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: lang.value,\n key: lang.value\n }, _toDisplayString(lang.label), 9, _hoisted_5))\n }), 128))\n ], 8, _hoisted_4), [\n [_vModelSelect, _ctx.userForm.language]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_6, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.TIMEZONE')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"timezone\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.userForm.timezone) = $event)),\n disabled: _ctx.loading\n }, null, 8, _hoisted_7), [\n [_vModelText, _ctx.userForm.timezone]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_8, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.FIRST_DAY_OF_WEEK')) + \" \", 1),\n _withDirectives(_createElementVNode(\"select\", {\n id: \"weekm\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.userForm.weekm) = $event)),\n disabled: _ctx.loading\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.weekStart, (start) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: start.value,\n key: start.value\n }, _toDisplayString(_ctx.$t(`user.PROFILE.${start.label}`)), 9, _hoisted_10))\n }), 128))\n ], 8, _hoisted_9), [\n [_vModelSelect, _ctx.userForm.weekm]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n _createElementVNode(\"button\", _hoisted_12, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[3] || (_cache[3] = _withModifiers(($event: any) => (_ctx.$router.push('/profile/preferences')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1)\n ])\n ], 32)\n ])\n ]))\n}","\n import {\n ComputedRef,\n PropType,\n computed,\n defineComponent,\n reactive,\n onMounted,\n } from 'vue'\n\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { IUserProfile, IUserPreferencesPayload } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { availableLanguages } from '@/utils/locales'\n\n export default defineComponent({\n name: 'UserPreferencesEdition',\n props: {\n user: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n const store = useStore()\n const userForm: IUserPreferencesPayload = reactive({\n language: '',\n timezone: 'Europe/Paris',\n weekm: false,\n })\n const weekStart = [\n {\n label: 'MONDAY',\n value: true,\n },\n {\n label: 'SUNDAY',\n value: false,\n },\n ]\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n onMounted(() => {\n if (props.user) {\n updateUserForm(props.user)\n }\n })\n\n function updateUserForm(user: IUserProfile) {\n userForm.language = user.language ? user.language : 'en'\n userForm.timezone = user.timezone ? user.timezone : 'Europe/Paris'\n userForm.weekm = user.weekm ? user.weekm : false\n }\n function updateProfile() {\n store.dispatch(\n AUTH_USER_STORE.ACTIONS.UPDATE_USER_PREFERENCES,\n userForm\n )\n }\n\n return {\n availableLanguages,\n errorMessages,\n loading,\n userForm,\n weekStart,\n updateProfile,\n }\n },\n })\n","import { render } from \"./UserPreferencesEdition.vue?vue&type=template&id=e42b32dc&ts=true\"\nimport script from \"./UserPreferencesEdition.vue?vue&type=script&lang=ts\"\nexport * from \"./UserPreferencesEdition.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import axios from 'axios'\n\nimport store from '@/store'\nimport { AUTH_USER_STORE } from '@/store/constants'\nimport { getApiUrl } from '@/utils'\n\nconst authApi = axios.create({\n baseURL: getApiUrl(),\n})\n\nauthApi.interceptors.request.use(\n (config) => {\n const authToken = store.getters[AUTH_USER_STORE.GETTERS.AUTH_TOKEN]\n if (authToken) {\n const auth = `Bearer ${authToken}`\n if (config.headers && config.headers.Authorization !== auth) {\n config.headers.Authorization = `Bearer ${authToken}`\n }\n }\n return config\n },\n (error) => Promise.reject(error)\n)\n\nexport default authApi\n","import axios from 'axios'\n\nimport { getApiUrl } from '@/utils'\n\nconst api = axios.create({\n baseURL: getApiUrl(),\n})\n\nexport default api\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport api from '@/api/defaultApi'\nimport createI18n from '@/i18n'\nimport router from '@/router'\nimport {\n AUTH_USER_STORE,\n ROOT_STORE,\n SPORTS_STORE,\n STATS_STORE,\n USERS_STORE,\n WORKOUTS_STORE,\n} from '@/store/constants'\nimport {\n IAuthUserActions,\n IAuthUserState,\n} from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n ILoginOrRegisterData,\n IUserDeletionPayload,\n IUserPasswordPayload,\n IUserPasswordResetPayload,\n IUserPayload,\n IUserPicturePayload,\n IUserPreferencesPayload,\n} from '@/types/user'\nimport { handleError } from '@/utils'\n\nconst { locale } = createI18n.global\n\nconst removeAuthUserData = (\n context: ActionContext\n) => {\n localStorage.removeItem('authToken')\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(STATS_STORE.MUTATIONS.EMPTY_USER_STATS)\n context.commit(AUTH_USER_STORE.MUTATIONS.CLEAR_AUTH_USER_TOKEN)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS, [])\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUTS)\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n router.push('/login')\n}\n\nexport const actions: ActionTree &\n IAuthUserActions = {\n [AUTH_USER_STORE.ACTIONS.CHECK_AUTH_USER](\n context: ActionContext\n ): void {\n if (\n window.localStorage.authToken &&\n !context.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]\n ) {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN,\n window.localStorage.authToken\n )\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n }\n },\n [AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('auth/profile')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE,\n res.data.data\n )\n if (res.data.data.language) {\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_LANG,\n res.data.data.language\n )\n locale.value = res.data.data.language\n }\n context.dispatch(SPORTS_STORE.ACTIONS.GET_SPORTS)\n } else {\n handleError(context, null)\n removeAuthUserData(context)\n }\n })\n .catch((error) => {\n handleError(context, error)\n removeAuthUserData(context)\n })\n },\n [AUTH_USER_STORE.ACTIONS.LOGIN_OR_REGISTER](\n context: ActionContext,\n data: ILoginOrRegisterData\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n api\n .post(`/auth/${data.actionType}`, data.formData)\n .then((res) => {\n if (res.data.status === 'success') {\n const token = res.data.auth_token\n window.localStorage.setItem('authToken', token)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN, token)\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() =>\n router.push(\n typeof data.redirectUrl === 'string' ? data.redirectUrl : '/'\n )\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.LOGOUT](\n context: ActionContext\n ): void {\n removeAuthUserData(context)\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_PROFILE](\n context: ActionContext,\n payload: IUserPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .post('auth/profile/edit', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE,\n res.data.data\n )\n router.push('/profile')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_PREFERENCES](\n context: ActionContext,\n payload: IUserPreferencesPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .post('auth/profile/edit/preferences', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE,\n res.data.data\n )\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_LANG,\n res.data.data.language\n )\n locale.value = res.data.data.language\n router.push('/profile/preferences')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_PICTURE](\n context: ActionContext,\n payload: IUserPicturePayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n if (!payload.picture) {\n throw new Error('No file part')\n }\n const form = new FormData()\n form.append('file', payload.picture)\n authApi\n .post('auth/picture', form, {\n headers: {\n 'content-type': 'multipart/form-data',\n },\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() => router.push('/profile'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.DELETE_ACCOUNT](\n context: ActionContext,\n payload: IUserDeletionPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .delete(`users/${payload.username}`)\n .then((res) => {\n if (res.status === 204) {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.LOGOUT)\n .then(() => router.push('/'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.DELETE_PICTURE](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .delete(`auth/picture`)\n .then((res) => {\n if (res.status === 204) {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() => router.push('/profile'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.SEND_PASSWORD_RESET_REQUEST](\n context: ActionContext,\n payload: IUserPasswordPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n api\n .post('auth/password/reset-request', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n router.push('/password-reset/sent')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.RESET_USER_PASSWORD](\n context: ActionContext,\n payload: IUserPasswordResetPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n api\n .post('auth/password/update', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n router.push('/password-reset/password-updated')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { AUTH_USER_STORE } from '@/store/constants'\nimport {\n IAuthUserGetters,\n IAuthUserState,\n} from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\n\nexport const getters: GetterTree &\n IAuthUserGetters = {\n [AUTH_USER_STORE.GETTERS.AUTH_TOKEN]: (state: IAuthUserState) => {\n return state.authToken\n },\n [AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]: (state: IAuthUserState) => {\n return state.authUserProfile\n },\n [AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]: (state: IAuthUserState) => {\n return state.authToken !== null\n },\n [AUTH_USER_STORE.GETTERS.IS_ADMIN]: (state: IAuthUserState) => {\n return state.authUserProfile && state.authUserProfile.admin\n },\n [AUTH_USER_STORE.GETTERS.USER_LOADING]: (state: IAuthUserState) => {\n return state.loading\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { AUTH_USER_STORE } from '@/store/constants'\nimport {\n IAuthUserState,\n TAuthUserMutations,\n} from '@/store/modules/authUser/types'\nimport { IUserProfile } from '@/types/user'\n\nexport const mutations: MutationTree & TAuthUserMutations = {\n [AUTH_USER_STORE.MUTATIONS.CLEAR_AUTH_USER_TOKEN](state: IAuthUserState) {\n state.authToken = null\n state.authUserProfile = {}\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN](\n state: IAuthUserState,\n authToken: string\n ) {\n state.authToken = authToken\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE](\n state: IAuthUserState,\n authUserProfile: IUserProfile\n ) {\n state.authUserProfile = authUserProfile\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING](\n state: IAuthUserState,\n loading: boolean\n ) {\n state.loading = loading\n },\n}\n","import { IAuthUserState } from '@/store/modules/authUser/types'\nimport { IUserProfile } from '@/types/user'\n\nexport const authUserState: IAuthUserState = {\n authToken: null,\n authUserProfile: {},\n loading: false,\n}\n","import { Module } from 'vuex'\n\nimport { actions } from '@/store/modules/authUser/actions'\nimport { getters } from '@/store/modules/authUser/getters'\nimport { mutations } from '@/store/modules/authUser/mutations'\nimport { authUserState } from '@/store/modules/authUser/state'\nimport { IAuthUserState } from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\n\nconst authUser: Module = {\n state: authUserState,\n actions,\n getters,\n mutations,\n}\n\nexport default authUser\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport router from '@/router'\nimport { ROOT_STORE } from '@/store/constants'\nimport { IRootActions, IRootState } from '@/store/modules/root/types'\nimport { TAppConfigForm } from '@/types/application'\nimport { handleError } from '@/utils'\n\nexport const actions: ActionTree & IRootActions = {\n [ROOT_STORE.ACTIONS.GET_APPLICATION_CONFIG](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_LOADING, true)\n authApi\n .get('config')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_CONFIG,\n res.data.data\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_LOADING, false)\n )\n },\n [ROOT_STORE.ACTIONS.GET_APPLICATION_STATS](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('stats/all')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_STATS,\n res.data.data\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [ROOT_STORE.ACTIONS.UPDATE_APPLICATION_CONFIG](\n context: ActionContext,\n payload: TAppConfigForm\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .patch('config', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_CONFIG,\n res.data.data\n )\n router.push('/admin/application')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { ROOT_STORE } from '@/store/constants'\nimport { IRootGetters, IRootState } from '@/store/modules/root/types'\n\nexport const getters: GetterTree & IRootGetters = {\n [ROOT_STORE.GETTERS.APP_CONFIG]: (state: IRootState) => {\n return state.application.config\n },\n [ROOT_STORE.GETTERS.APP_LOADING]: (state: IRootState) => {\n return state.appLoading\n },\n [ROOT_STORE.GETTERS.APP_STATS]: (state: IRootState) => {\n return state.application.statistics\n },\n [ROOT_STORE.GETTERS.ERROR_MESSAGES]: (state: IRootState) => {\n return state.errorMessages\n },\n [ROOT_STORE.GETTERS.LANGUAGE]: (state: IRootState) => {\n return state.language\n },\n [ROOT_STORE.GETTERS.LOCALE]: (state: IRootState) => {\n return state.locale\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { ROOT_STORE } from '@/store/constants'\nimport { IRootState, TRootMutations } from '@/store/modules/root/types'\nimport { TAppConfig, IAppStatistics } from '@/types/application'\nimport { localeFromLanguage } from '@/utils/locales'\n\nexport const mutations: MutationTree & TRootMutations = {\n [ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES](state: IRootState) {\n state.errorMessages = null\n },\n [ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES](\n state: IRootState,\n errorMessages: string\n ) {\n state.errorMessages = errorMessages\n },\n [ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_CONFIG](\n state: IRootState,\n config: TAppConfig\n ) {\n state.application.config = config\n },\n [ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_LOADING](\n state: IRootState,\n loading: boolean\n ) {\n state.appLoading = loading\n },\n [ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_STATS](\n state: IRootState,\n statistics: IAppStatistics\n ) {\n state.application.statistics = statistics\n },\n [ROOT_STORE.MUTATIONS.UPDATE_LANG](state: IRootState, language: string) {\n state.language = language\n state.locale = localeFromLanguage[language]\n },\n}\n","import { enUS } from 'date-fns/locale'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { IApplication } from '@/types/application'\n\nexport const state: IRootState = {\n root: true,\n language: 'en',\n locale: enUS,\n errorMessages: null,\n application: {},\n appLoading: false,\n}\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport { ROOT_STORE, SPORTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { ISportsActions, ISportsState } from '@/store/modules/sports/types'\nimport { ISportPayload } from '@/types/sports'\nimport { handleError } from '@/utils'\n\nexport const actions: ActionTree & ISportsActions = {\n [SPORTS_STORE.ACTIONS.GET_SPORTS](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('sports')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n SPORTS_STORE.MUTATIONS.SET_SPORTS,\n res.data.data.sports\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [SPORTS_STORE.ACTIONS.UPDATE_SPORTS](\n context: ActionContext,\n payload: ISportPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .patch(`sports/${payload.id}`, { is_active: payload.isActive })\n .then((res) => {\n if (res.data.status === 'success') {\n context.dispatch(SPORTS_STORE.ACTIONS.GET_SPORTS)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { SPORTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { ISportsGetters, ISportsState } from '@/store/modules/sports/types'\n\nexport const getters: GetterTree & ISportsGetters = {\n [SPORTS_STORE.GETTERS.SPORTS]: (state: ISportsState) => state.sports,\n}\n","import { MutationTree } from 'vuex'\n\nimport { SPORTS_STORE } from '@/store/constants'\nimport { ISportsState, TSportsMutations } from '@/store/modules/sports/types'\nimport { ISport } from '@/types/sports'\n\nexport const mutations: MutationTree & TSportsMutations = {\n [SPORTS_STORE.MUTATIONS.SET_SPORTS](state: ISportsState, sports: ISport[]) {\n state.sports = sports\n },\n}\n","import { ISportsState } from '@/store/modules/sports/types'\n\nexport const sportsState: ISportsState = {\n sports: [],\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/sports/actions'\nimport { getters } from '@/store/modules/sports/getters'\nimport { mutations } from '@/store/modules/sports/mutations'\nimport { sportsState } from '@/store/modules/sports/state'\nimport { ISportsState } from '@/store/modules/sports/types'\n\nconst sports: Module = {\n state: sportsState,\n actions,\n getters,\n mutations,\n}\n\nexport default sports\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport { STATS_STORE, ROOT_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n IStatisticsActions,\n IStatisticsState,\n} from '@/store/modules/statistics/types'\nimport { IUserStatisticsPayload } from '@/types/statistics'\nimport { handleError } from '@/utils'\n\nexport const actions: ActionTree &\n IStatisticsActions = {\n [STATS_STORE.ACTIONS.GET_USER_STATS](\n context: ActionContext,\n payload: IUserStatisticsPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get(`stats/${payload.username}/${payload.filterType}`, {\n params: payload.params,\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n STATS_STORE.MUTATIONS.UPDATE_USER_STATS,\n res.data.data.statistics\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { STATS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n IStatisticsGetters,\n IStatisticsState,\n} from '@/store/modules/statistics/types'\n\nexport const getters: GetterTree &\n IStatisticsGetters = {\n [STATS_STORE.GETTERS.USER_STATS]: (state: IStatisticsState) => {\n return state.statistics\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { STATS_STORE } from '@/store/constants'\nimport {\n IStatisticsState,\n TStatisticsMutations,\n} from '@/store/modules/statistics/types'\nimport { TStatisticsFromApi } from '@/types/statistics'\n\nexport const mutations: MutationTree & TStatisticsMutations =\n {\n [STATS_STORE.MUTATIONS.UPDATE_USER_STATS](\n state: IStatisticsState,\n statistics: TStatisticsFromApi\n ) {\n state.statistics = statistics\n },\n [STATS_STORE.MUTATIONS.EMPTY_USER_STATS](state: IStatisticsState) {\n state.statistics = {}\n },\n }\n","import { IStatisticsState } from '@/store/modules/statistics/types'\nimport { TStatisticsFromApi } from '@/types/statistics'\n\nexport const statisticsState: IStatisticsState = {\n statistics: {},\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/statistics/actions'\nimport { getters } from '@/store/modules/statistics/getters'\nimport { mutations } from '@/store/modules/statistics/mutations'\nimport { statisticsState } from '@/store/modules/statistics/state'\nimport { IStatisticsState } from '@/store/modules/statistics/types'\n\nconst statistics: Module = {\n state: statisticsState,\n actions,\n getters,\n mutations,\n}\n\nexport default statistics\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport { ROOT_STORE, USERS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { IUsersActions, IUsersState } from '@/store/modules/users/types'\nimport { TPaginationPayload } from '@/types/api'\nimport { IAdminUserPayload } from '@/types/user'\nimport { handleError } from '@/utils'\n\nexport const actions: ActionTree & IUsersActions = {\n [USERS_STORE.ACTIONS.EMPTY_USER](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USER, {})\n },\n [USERS_STORE.ACTIONS.EMPTY_USERS](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS, [])\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_PAGINATION, {})\n },\n [USERS_STORE.ACTIONS.GET_USER](\n context: ActionContext,\n username: string\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, true)\n authApi\n .get(`users/${username}`)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USER,\n res.data.data.users[0]\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, false)\n )\n },\n [USERS_STORE.ACTIONS.GET_USERS](\n context: ActionContext,\n payload: TPaginationPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, true)\n authApi\n .get('users', { params: payload })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USERS,\n res.data.data.users\n )\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USERS_PAGINATION,\n res.data.pagination\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, false)\n )\n },\n [USERS_STORE.ACTIONS.UPDATE_USER](\n context: ActionContext,\n payload: IAdminUserPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .patch(`users/${payload.username}`, { admin: payload.admin })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USER_IN_USERS,\n res.data.data.users[0]\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, false)\n )\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { USERS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { IUsersGetters, IUsersState } from '@/store/modules/users/types'\n\nexport const getters: GetterTree & IUsersGetters = {\n [USERS_STORE.GETTERS.USER]: (state: IUsersState) => {\n return state.user\n },\n [USERS_STORE.GETTERS.USERS]: (state: IUsersState) => {\n return state.users\n },\n [USERS_STORE.GETTERS.USERS_LOADING]: (state: IUsersState) => {\n return state.loading\n },\n [USERS_STORE.GETTERS.USERS_PAGINATION]: (state: IUsersState) => {\n return state.pagination\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { USERS_STORE } from '@/store/constants'\nimport { IUsersState, TUsersMutations } from '@/store/modules/users/types'\nimport { IPagination } from '@/types/api'\nimport { IUserProfile } from '@/types/user'\n\nexport const mutations: MutationTree & TUsersMutations = {\n [USERS_STORE.MUTATIONS.UPDATE_USER](state: IUsersState, user: IUserProfile) {\n state.user = user\n },\n [USERS_STORE.MUTATIONS.UPDATE_USER_IN_USERS](\n state: IUsersState,\n updatedUser: IUserProfile\n ) {\n state.users = state.users.map((user) => {\n if (user.username === updatedUser.username) {\n return updatedUser\n }\n return user\n })\n },\n [USERS_STORE.MUTATIONS.UPDATE_USERS](\n state: IUsersState,\n users: IUserProfile[]\n ) {\n state.users = users\n },\n [USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING](\n state: IUsersState,\n loading: boolean\n ) {\n state.loading = loading\n },\n [USERS_STORE.MUTATIONS.UPDATE_USERS_PAGINATION](\n state: IUsersState,\n pagination: IPagination\n ) {\n state.pagination = pagination\n },\n}\n","import { IUsersState } from '@/store/modules/users/types'\nimport { IPagination } from '@/types/api'\nimport { IUserProfile } from '@/types/user'\n\nexport const usersState: IUsersState = {\n user: {},\n users: [],\n loading: false,\n pagination: {},\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/users/actions'\nimport { getters } from '@/store/modules/users/getters'\nimport { mutations } from '@/store/modules/users/mutations'\nimport { usersState } from '@/store/modules/users/state'\nimport { IUsersState } from '@/store/modules/users/types'\n\nconst users: Module = {\n state: usersState,\n actions,\n getters,\n mutations,\n}\n\nexport default users\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport router from '@/router'\nimport { ROOT_STORE, AUTH_USER_STORE, WORKOUTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { WorkoutsMutations } from '@/store/modules/workouts/enums'\nimport {\n IWorkoutsActions,\n IWorkoutsState,\n} from '@/store/modules/workouts/types'\nimport {\n IWorkout,\n IWorkoutForm,\n IWorkoutPayload,\n TWorkoutsPayload,\n} from '@/types/workouts'\nimport { handleError } from '@/utils'\n\nconst getWorkouts = (\n context: ActionContext,\n payload: TWorkoutsPayload,\n target: WorkoutsMutations\n): void => {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('workouts', {\n params: payload,\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(WORKOUTS_STORE.MUTATIONS[target], res.data.data.workouts)\n if (target === WorkoutsMutations['SET_USER_WORKOUTS']) {\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUTS_PAGINATION,\n res.data.pagination\n )\n }\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n}\n\nexport const actions: ActionTree &\n IWorkoutsActions = {\n [WORKOUTS_STORE.ACTIONS.GET_CALENDAR_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_CALENDAR_WORKOUTS)\n getWorkouts(context, payload, WorkoutsMutations['SET_CALENDAR_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_USER_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n getWorkouts(context, payload, WorkoutsMutations['SET_USER_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_TIMELINE_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n getWorkouts(context, payload, WorkoutsMutations['SET_TIMELINE_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_MORE_TIMELINE_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n getWorkouts(context, payload, WorkoutsMutations['ADD_TIMELINE_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA](\n context: ActionContext,\n payload: IWorkoutPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n const segmentUrl = payload.segmentId ? `/segment/${payload.segmentId}` : ''\n authApi\n .get(`workouts/${payload.workoutId}`)\n .then((res) => {\n const workout: IWorkout = res.data.data.workouts[0]\n if (res.data.status === 'success') {\n if (\n payload.segmentId &&\n (workout.segments.length === 0 ||\n !workout.segments[+payload.segmentId - 1])\n ) {\n throw new Error('WORKOUT_NOT_FOUND')\n }\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUT,\n res.data.data.workouts[0]\n )\n if (res.data.data.workouts[0].with_gpx) {\n authApi\n .get(`workouts/${payload.workoutId}/chart_data${segmentUrl}`)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_CHART_DATA,\n res.data.data.chart_data\n )\n }\n })\n authApi\n .get(`workouts/${payload.workoutId}/gpx${segmentUrl}`)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_GPX,\n res.data.data.gpx\n )\n }\n })\n }\n } else {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n handleError(context, null)\n }\n })\n .catch((error) => {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.DELETE_WORKOUT](\n context: ActionContext,\n payload: IWorkoutPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n authApi\n .delete(`workouts/${payload.workoutId}`)\n .then(() => {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n router.push('/')\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.EDIT_WORKOUT](\n context: ActionContext,\n payload: IWorkoutPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n authApi\n .patch(`workouts/${payload.workoutId}`, payload.data)\n .then(() => {\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n context\n .dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, {\n workoutId: payload.workoutId,\n })\n .then(() => {\n router.push({\n name: 'Workout',\n params: { workoutId: payload.workoutId },\n })\n })\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.ADD_WORKOUT](\n context: ActionContext,\n payload: IWorkoutForm\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n if (!payload.file) {\n throw new Error('No file part')\n }\n const form = new FormData()\n form.append('file', payload.file)\n form.append(\n 'data',\n `{\"sport_id\": ${payload.sport_id}, \"notes\": \"${payload.notes}\"}`\n )\n authApi\n .post('workouts', form, {\n headers: {\n 'content-type': 'multipart/form-data',\n },\n })\n .then((res) => {\n if (res.data.status === 'created') {\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n const workout: IWorkout = res.data.data.workouts[0]\n router.push(\n res.data.data.workouts.length === 1\n ? `/workouts/${workout.id}`\n : '/'\n )\n }\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.ADD_WORKOUT_WITHOUT_GPX](\n context: ActionContext,\n payload: IWorkoutForm\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n authApi\n .post('workouts/no_gpx', payload)\n .then((res) => {\n if (res.data.status === 'created') {\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n const workout: IWorkout = res.data.data.workouts[0]\n router.push(`/workouts/${workout.id}`)\n }\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { WORKOUTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n IWorkoutsGetters,\n IWorkoutsState,\n} from '@/store/modules/workouts/types'\n\nexport const getters: GetterTree &\n IWorkoutsGetters = {\n [WORKOUTS_STORE.GETTERS.CALENDAR_WORKOUTS]: (state: IWorkoutsState) => {\n return state.calendar_workouts\n },\n [WORKOUTS_STORE.GETTERS.TIMELINE_WORKOUTS]: (state: IWorkoutsState) => {\n return state.timeline_workouts\n },\n [WORKOUTS_STORE.GETTERS.USER_WORKOUTS]: (state: IWorkoutsState) => {\n return state.user_workouts\n },\n [WORKOUTS_STORE.GETTERS.WORKOUT_DATA]: (state: IWorkoutsState) => {\n return state.workoutData\n },\n [WORKOUTS_STORE.GETTERS.WORKOUTS_PAGINATION]: (state: IWorkoutsState) => {\n return state.pagination\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { WORKOUTS_STORE } from '@/store/constants'\nimport {\n IWorkoutsState,\n TWorkoutsMutations,\n} from '@/store/modules/workouts/types'\nimport { IPagination } from '@/types/api'\nimport { IWorkout, IWorkoutApiChartData } from '@/types/workouts'\n\nexport const mutations: MutationTree & TWorkoutsMutations = {\n [WORKOUTS_STORE.MUTATIONS.ADD_TIMELINE_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.timeline_workouts = state.timeline_workouts.concat(workouts)\n },\n [WORKOUTS_STORE.MUTATIONS.SET_CALENDAR_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.calendar_workouts = workouts\n },\n [WORKOUTS_STORE.MUTATIONS.SET_TIMELINE_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.timeline_workouts = workouts\n },\n [WORKOUTS_STORE.MUTATIONS.SET_USER_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.user_workouts = workouts\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUTS_PAGINATION](\n state: IWorkoutsState,\n pagination: IPagination\n ) {\n state.pagination = pagination\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT](\n state: IWorkoutsState,\n workout: IWorkout\n ) {\n state.workoutData.workout = workout\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_CHART_DATA](\n state: IWorkoutsState,\n chartData: IWorkoutApiChartData[]\n ) {\n state.workoutData.chartData = chartData\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_GPX](\n state: IWorkoutsState,\n gpx: string\n ) {\n state.workoutData.gpx = gpx\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING](\n state: IWorkoutsState,\n loading: boolean\n ) {\n state.workoutData.loading = loading\n },\n [WORKOUTS_STORE.MUTATIONS.EMPTY_CALENDAR_WORKOUTS](state: IWorkoutsState) {\n state.calendar_workouts = []\n },\n [WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUTS](state: IWorkoutsState) {\n state.calendar_workouts = []\n state.user_workouts = []\n state.timeline_workouts = []\n },\n [WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT](state: IWorkoutsState) {\n state.workoutData = {\n gpx: '',\n loading: false,\n workout: {},\n chartData: [],\n }\n },\n}\n","import { IWorkoutsState } from '@/store/modules/workouts/types'\nimport { IPagination } from '@/types/api'\nimport { IWorkout } from '@/types/workouts'\n\nexport const workoutsState: IWorkoutsState = {\n calendar_workouts: [],\n timeline_workouts: [],\n pagination: {},\n user_workouts: [],\n workoutData: {\n gpx: '',\n loading: false,\n workout: {},\n chartData: [],\n },\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/workouts/actions'\nimport { getters } from '@/store/modules/workouts/getters'\nimport { mutations } from '@/store/modules/workouts/mutations'\nimport { workoutsState } from '@/store/modules/workouts/state'\nimport { IWorkoutsState } from '@/store/modules/workouts/types'\n\nconst workouts: Module = {\n state: workoutsState,\n actions,\n getters,\n mutations,\n}\n\nexport default workouts\n","import { Module, ModuleTree } from 'vuex'\n\nimport authUserModule from '@/store/modules/authUser'\nimport { actions } from '@/store/modules/root/actions'\nimport { getters } from '@/store/modules/root/getters'\nimport { mutations } from '@/store/modules/root/mutations'\nimport { state } from '@/store/modules/root/state'\nimport { IRootState } from '@/store/modules/root/types'\nimport sportsModule from '@/store/modules/sports'\nimport statsModule from '@/store/modules/statistics'\nimport usersModule from '@/store/modules/users'\nimport workoutsModule from '@/store/modules/workouts'\n\nconst modules: ModuleTree = {\n authUserModule,\n sportsModule,\n statsModule,\n usersModule,\n workoutsModule,\n}\n\nconst root: Module = {\n state,\n actions,\n getters,\n mutations,\n modules,\n}\n\nexport default root\n","import { createStore } from 'vuex'\n\nimport root from '@/store/modules/root'\nimport { IRootState } from '@/store/modules/root/types'\n\nconst store = createStore(root)\n\nexport default store\n","import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'\n\nimport AdminApplication from '@/components/Administration/AdminApplication.vue'\nimport AdminMenu from '@/components/Administration/AdminMenu.vue'\nimport AdminSports from '@/components/Administration/AdminSports.vue'\nimport AdminUsers from '@/components/Administration/AdminUsers.vue'\nimport Profile from '@/components/User/ProfileDisplay/index.vue'\nimport UserInfos from '@/components/User/ProfileDisplay/UserInfos.vue'\nimport UserPreferences from '@/components/User/ProfileDisplay/UserPreferences.vue'\nimport ProfileEdition from '@/components/User/ProfileEdition/index.vue'\nimport UserInfosEdition from '@/components/User/ProfileEdition/UserInfosEdition.vue'\nimport UserPictureEdition from '@/components/User/ProfileEdition/UserPictureEdition.vue'\nimport UserPreferencesEdition from '@/components/User/ProfileEdition/UserPreferencesEdition.vue'\nimport store from '@/store'\nimport { AUTH_USER_STORE } from '@/store/constants'\n\nconst getTabFromPath = (path: string): string => {\n const regex = /(\\/profile)(\\/edit)*(\\/*)/\n const tag = path.replace(regex, '').toUpperCase()\n return tag === '' ? 'PROFILE' : tag.toUpperCase()\n}\n\nconst routes: Array = [\n {\n path: '/',\n name: 'Dashboard',\n component: () =>\n import(/* webpackChunkName: 'main' */ '@/views/Dashboard.vue'),\n },\n {\n path: '/login',\n name: 'Login',\n component: () =>\n import(/* webpackChunkName: 'main' */ '@/views/user/LoginOrRegister.vue'),\n props: { action: 'login' },\n },\n {\n path: '/register',\n name: 'Register',\n component: () =>\n import(/* webpackChunkName: 'main' */ '@/views/user/LoginOrRegister.vue'),\n props: { action: 'register' },\n },\n {\n path: '/password-reset/sent',\n name: 'PasswordEmailSent',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'request-sent' },\n },\n {\n path: '/password-reset/request',\n name: 'PasswordResetRequest',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'reset-request' },\n },\n {\n path: '/password-reset/password-updated',\n name: 'PasswordUpdated',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'password-updated' },\n },\n {\n path: '/password-reset',\n name: 'PasswordReset',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'reset' },\n },\n {\n path: '/profile',\n name: 'Profile',\n component: () =>\n import(/* webpackChunkName: 'profile' */ '@/views/user/ProfileView.vue'),\n children: [\n {\n path: '',\n name: 'UserProfile',\n component: Profile,\n props: (route) => ({\n tab: getTabFromPath(route.path),\n }),\n children: [\n {\n path: '',\n name: 'UserInfos',\n component: UserInfos,\n },\n {\n path: 'preferences',\n name: 'UserPreferences',\n component: UserPreferences,\n },\n ],\n },\n {\n path: 'edit',\n name: 'UserProfileEdition',\n component: ProfileEdition,\n props: (route) => ({\n tab: getTabFromPath(route.path),\n }),\n children: [\n {\n path: '',\n name: 'UserInfosEdition',\n component: UserInfosEdition,\n },\n {\n path: 'picture',\n name: 'UserPictureEdition',\n component: UserPictureEdition,\n },\n {\n path: 'preferences',\n name: 'UserPreferencesEdition',\n component: UserPreferencesEdition,\n },\n ],\n },\n ],\n },\n {\n path: '/statistics',\n name: 'Statistics',\n component: () =>\n import(/* webpackChunkName: 'main' */ '@/views/StatisticsView.vue'),\n },\n {\n path: '/users/:username',\n name: 'User',\n component: () =>\n import(/* webpackChunkName: 'profile' */ '@/views/user/UserView.vue'),\n },\n {\n path: '/workouts',\n name: 'Workouts',\n component: () =>\n import(\n /* webpackChunkName: 'workouts' */ '@/views/workouts/WorkoutsView.vue'\n ),\n },\n {\n path: '/workouts/:workoutId',\n name: 'Workout',\n component: () =>\n import(/* webpackChunkName: 'workouts' */ '@/views/workouts/Workout.vue'),\n props: { displaySegment: false },\n },\n {\n path: '/workouts/:workoutId/edit',\n name: 'EditWorkout',\n component: () =>\n import(\n /* webpackChunkName: 'workouts' */ '@/views/workouts/EditWorkout.vue'\n ),\n },\n {\n path: '/workouts/:workoutId/segment/:segmentId',\n name: 'WorkoutSegment',\n component: () =>\n import(/* webpackChunkName: 'workouts' */ '@/views/workouts/Workout.vue'),\n props: { displaySegment: true },\n },\n {\n path: '/workouts/add',\n name: 'AddWorkout',\n component: () =>\n import(\n /* webpackChunkName: 'workouts' */ '@/views/workouts/AddWorkout.vue'\n ),\n },\n {\n path: '/admin',\n name: 'Administration',\n component: () =>\n import(/* webpackChunkName: 'admin' */ '@/views/AdminView.vue'),\n children: [\n {\n path: '',\n name: 'AdministrationMenu',\n component: AdminMenu,\n },\n {\n path: 'application',\n name: 'ApplicationAdministration',\n component: AdminApplication,\n },\n {\n path: 'application/edit',\n name: 'ApplicationAdministrationEdition',\n component: AdminApplication,\n props: { edition: true },\n },\n {\n path: 'sports',\n name: 'SportsAdministration',\n component: AdminSports,\n },\n {\n path: 'users',\n name: 'UsersAdministration',\n component: AdminUsers,\n },\n ],\n },\n {\n path: '/:pathMatch(.*)*',\n name: 'not-found',\n component: () =>\n import(/* webpackChunkName: 'main' */ '@/views/NotFoundView.vue'),\n },\n]\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes,\n})\n\nconst pathsWithoutAuthentication = [\n '/login',\n '/password-reset',\n '/password-reset/password-updated',\n '/password-reset/request',\n '/password-reset/sent',\n '/register',\n]\n\nrouter.beforeEach((to, from, next) => {\n store\n .dispatch(AUTH_USER_STORE.ACTIONS.CHECK_AUTH_USER)\n .then(() => {\n if (\n store.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED] &&\n pathsWithoutAuthentication.includes(to.path)\n ) {\n return next('/')\n } else if (\n !store.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED] &&\n !pathsWithoutAuthentication.includes(to.path)\n ) {\n const path =\n to.path === '/'\n ? { path: '/login' }\n : { path: '/login', query: { from: to.fullPath } }\n next(path)\n } else {\n next()\n }\n })\n .catch((error) => {\n console.error(error)\n next()\n })\n})\n\nexport default router\n","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-f5e8066a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"alert-message\" }\nconst _hoisted_2 = [\"innerHTML\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n innerHTML: _ctx.$t(_ctx.message)\n }, null, 8, _hoisted_2)\n ]))\n}","\n import { defineComponent } from 'vue'\n\n export default defineComponent({\n name: 'AlertMessage',\n props: {\n message: String,\n },\n })\n","import { render } from \"./AlertMessage.vue?vue&type=template&id=f5e8066a&scoped=true&ts=true\"\nimport script from \"./AlertMessage.vue?vue&type=script&lang=ts\"\nexport * from \"./AlertMessage.vue?vue&type=script&lang=ts\"\n\nimport \"./AlertMessage.vue?vue&type=style&index=0&id=f5e8066a&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f5e8066a\"]])\n\nexport default __exports__","import { vModelText as _vModelText, createElementVNode as _createElementVNode, withDirectives as _withDirectives, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-ad3739fc\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"custom-textarea\" }\nconst _hoisted_2 = [\"id\", \"name\", \"maxLenght\", \"disabled\"]\nconst _hoisted_3 = { class: \"remaining-chars\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _withDirectives(_createElementVNode(\"textarea\", {\n id: _ctx.name,\n name: _ctx.name,\n maxLenght: _ctx.charLimit,\n disabled: _ctx.disabled,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.text) = $event)),\n onInput: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.updateText && _ctx.updateText(...args)))\n }, null, 40, _hoisted_2), [\n [_vModelText, _ctx.text]\n ]),\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(_ctx.$t('workouts.REMAINING_CHARS')) + \": \" + _toDisplayString(_ctx.text.length) + \"/\" + _toDisplayString(_ctx.charLimit), 1)\n ]))\n}","\n import { defineComponent, ref, watch } from 'vue'\n\n export default defineComponent({\n name: 'CustomTextArea',\n props: {\n charLimit: {\n type: Number,\n default: 500,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n input: {\n type: String,\n default: '',\n },\n name: {\n type: String,\n required: true,\n },\n },\n emits: ['updateValue'],\n setup(props, { emit }) {\n let text = ref('')\n\n function updateText(event: Event & { target: HTMLInputElement }) {\n emit('updateValue', event.target.value)\n }\n\n watch(\n () => props.input,\n (value) => {\n text.value = value\n }\n )\n\n return { text, updateText }\n },\n })\n","import { render } from \"./CustomTextArea.vue?vue&type=template&id=ad3739fc&scoped=true&ts=true\"\nimport script from \"./CustomTextArea.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomTextArea.vue?vue&type=script&lang=ts\"\n\nimport \"./CustomTextArea.vue?vue&type=style&index=0&id=ad3739fc&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-ad3739fc\"]])\n\nexport default __exports__","import { renderSlot as _renderSlot, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5ef2ddef\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"dropdown-wrapper\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"dropdown-list\"\n}\nconst _hoisted_3 = [\"onClick\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"dropdown-selected\",\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.toggleDropdown && _ctx.toggleDropdown(...args)))\n }, [\n _renderSlot(_ctx.$slots, \"default\", {}, undefined, true)\n ]),\n (_ctx.isOpen)\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.dropdownOptions, (option, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n class: _normalizeClass([\"dropdown-item\", { selected: option.value === _ctx.selected }]),\n key: index,\n onClick: ($event: any) => (_ctx.updateSelected(option))\n }, _toDisplayString(option.label), 11, _hoisted_3))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}","\n import { PropType, defineComponent, ref, watch } from 'vue'\n import { useRoute } from 'vue-router'\n\n import { IDropdownOption, TDropdownOptions } from '@/types/forms'\n\n export default defineComponent({\n name: 'Dropdown',\n props: {\n options: {\n type: Object as PropType,\n required: true,\n },\n selected: {\n type: String,\n required: true,\n },\n },\n emits: {\n selected: (option: IDropdownOption) => option,\n },\n setup(props, { emit }) {\n const route = useRoute()\n let isOpen = ref(false)\n let dropdownOptions = props.options.map((option) => option)\n\n function toggleDropdown() {\n isOpen.value = !isOpen.value\n }\n function updateSelected(option: IDropdownOption) {\n emit('selected', option)\n isOpen.value = false\n }\n\n watch(\n () => route.path,\n () => (isOpen.value = false)\n )\n\n return {\n dropdownOptions,\n isOpen,\n toggleDropdown,\n updateSelected,\n }\n },\n })\n","import { render } from \"./Dropdown.vue?vue&type=template&id=5ef2ddef&scoped=true&ts=true\"\nimport script from \"./Dropdown.vue?vue&type=script&lang=ts\"\nexport * from \"./Dropdown.vue?vue&type=script&lang=ts\"\n\nimport \"./Dropdown.vue?vue&type=style&index=0&id=5ef2ddef&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5ef2ddef\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5c177a93\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"error-message\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { key: 1 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (Array.isArray(_ctx.message))\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.message, (subMessage, index) => {\n return (_openBlock(), _createElementBlock(\"li\", { key: index }, _toDisplayString(_ctx.$t(subMessage)), 1))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString(_ctx.$t(_ctx.message)), 1))\n ]))\n}","\n import { defineComponent } from 'vue'\n\n export default defineComponent({\n name: 'ErrorMessage',\n props: {\n message: [String, Array],\n },\n })\n","import { render } from \"./ErrorMessage.vue?vue&type=template&id=5c177a93&scoped=true&ts=true\"\nimport script from \"./ErrorMessage.vue?vue&type=script&lang=ts\"\nexport * from \"./ErrorMessage.vue?vue&type=script&lang=ts\"\n\nimport \"./ErrorMessage.vue?vue&type=style&index=0&id=5c177a93&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5c177a93\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"title\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_CyclingSport = _resolveComponent(\"CyclingSport\")!\n const _component_CyclingTransport = _resolveComponent(\"CyclingTransport\")!\n const _component_Hiking = _resolveComponent(\"Hiking\")!\n const _component_MountainBiking = _resolveComponent(\"MountainBiking\")!\n const _component_MountainBikingElectric = _resolveComponent(\"MountainBikingElectric\")!\n const _component_Rowing = _resolveComponent(\"Rowing\")!\n const _component_Running = _resolveComponent(\"Running\")!\n const _component_SkiingAlpine = _resolveComponent(\"SkiingAlpine\")!\n const _component_SkiingCrossCountry = _resolveComponent(\"SkiingCrossCountry\")!\n const _component_Trail = _resolveComponent(\"Trail\")!\n const _component_Walking = _resolveComponent(\"Walking\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"sport-img\",\n style: _normalizeStyle({ fill: _ctx.sportColors[_ctx.sportLabel] }),\n title: _ctx.title ? _ctx.title : _ctx.$t(`sports.${_ctx.sportLabel}.LABEL`)\n }, [\n (_ctx.sportLabel === 'Cycling (Sport)')\n ? (_openBlock(), _createBlock(_component_CyclingSport, { key: 0 }))\n : _createCommentVNode(\"\", true),\n (_ctx.sportLabel === 'Cycling (Transport)')\n ? (_openBlock(), _createBlock(_component_CyclingTransport, { key: 1 }))\n : _createCommentVNode(\"\", true),\n (_ctx.sportLabel === 'Hiking')\n ? (_openBlock(), _createBlock(_component_Hiking, { key: 2 }))\n : _createCommentVNode(\"\", true),\n (_ctx.sportLabel === 'Mountain Biking')\n ? (_openBlock(), _createBlock(_component_MountainBiking, { key: 3 }))\n : _createCommentVNode(\"\", true),\n (_ctx.sportLabel === 'Mountain Biking (Electric)')\n ? (_openBlock(), _createBlock(_component_MountainBikingElectric, { key: 4 }))\n : _createCommentVNode(\"\", true),\n (_ctx.sportLabel === 'Rowing')\n ? (_openBlock(), _createBlock(_component_Rowing, { key: 5 }))\n : _createCommentVNode(\"\", true),\n (_ctx.sportLabel === 'Running')\n ? (_openBlock(), _createBlock(_component_Running, { key: 6 }))\n : _createCommentVNode(\"\", true),\n (_ctx.sportLabel === 'Skiing (Alpine)')\n ? (_openBlock(), _createBlock(_component_SkiingAlpine, { key: 7 }))\n : _createCommentVNode(\"\", true),\n (_ctx.sportLabel === 'Skiing (Cross Country)')\n ? (_openBlock(), _createBlock(_component_SkiingCrossCountry, { key: 8 }))\n : _createCommentVNode(\"\", true),\n (_ctx.sportLabel === 'Trail')\n ? (_openBlock(), _createBlock(_component_Trail, { key: 9 }))\n : _createCommentVNode(\"\", true),\n (_ctx.sportLabel === 'Walking')\n ? (_openBlock(), _createBlock(_component_Walking, { key: 10 }))\n : _createCommentVNode(\"\", true)\n ], 12, _hoisted_1))\n}","\n\n\n","import { render } from \"./CyclingSport.vue?vue&type=template&id=be8023a2\"\nimport script from \"./CyclingSport.vue?vue&type=script&lang=js\"\nexport * from \"./CyclingSport.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./CyclingTransport.vue?vue&type=template&id=97af5148\"\nimport script from \"./CyclingTransport.vue?vue&type=script&lang=js\"\nexport * from \"./CyclingTransport.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Hiking.vue?vue&type=template&id=40903dc4\"\nimport script from \"./Hiking.vue?vue&type=script&lang=js\"\nexport * from \"./Hiking.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./MountainBiking.vue?vue&type=template&id=5bdbc6e8\"\nimport script from \"./MountainBiking.vue?vue&type=script&lang=js\"\nexport * from \"./MountainBiking.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./MountainBikingElectric.vue?vue&type=template&id=21e72aec\"\nimport script from \"./MountainBikingElectric.vue?vue&type=script&lang=js\"\nexport * from \"./MountainBikingElectric.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Rowing.vue?vue&type=template&id=31ae2dd5\"\nimport script from \"./Rowing.vue?vue&type=script&lang=js\"\nexport * from \"./Rowing.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Running.vue?vue&type=template&id=4d47a4fe\"\nimport script from \"./Running.vue?vue&type=script&lang=js\"\nexport * from \"./Running.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./SkiingAlpine.vue?vue&type=template&id=3ebf3bca\"\nimport script from \"./SkiingAlpine.vue?vue&type=script&lang=js\"\nexport * from \"./SkiingAlpine.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./SkiingCrossCountry.vue?vue&type=template&id=1561bbe6\"\nimport script from \"./SkiingCrossCountry.vue?vue&type=script&lang=js\"\nexport * from \"./SkiingCrossCountry.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Trail.vue?vue&type=template&id=32a14156\"\nimport script from \"./Trail.vue?vue&type=script&lang=js\"\nexport * from \"./Trail.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Walking.vue?vue&type=template&id=2ed4f5f4\"\nimport script from \"./Walking.vue?vue&type=script&lang=js\"\nexport * from \"./Walking.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n import { defineComponent, inject } from 'vue'\n\n import CyclingSport from '@/components/Common/Images/SportImage/CyclingSport.vue'\n import CyclingTransport from '@/components/Common/Images/SportImage/CyclingTransport.vue'\n import Hiking from '@/components/Common/Images/SportImage/Hiking.vue'\n import MountainBiking from '@/components/Common/Images/SportImage/MountainBiking.vue'\n import MountainBikingElectric from '@/components/Common/Images/SportImage/MountainBikingElectric.vue'\n import Rowing from '@/components/Common/Images/SportImage/Rowing.vue'\n import Running from '@/components/Common/Images/SportImage/Running.vue'\n import SkiingAlpine from '@/components/Common/Images/SportImage/SkiingAlpine.vue'\n import SkiingCrossCountry from '@/components/Common/Images/SportImage/SkiingCrossCountry.vue'\n import Trail from '@/components/Common/Images/SportImage/Trail.vue'\n import Walking from '@/components/Common/Images/SportImage/Walking.vue'\n\n export default defineComponent({\n name: 'SportImage',\n components: {\n CyclingSport,\n CyclingTransport,\n Hiking,\n MountainBiking,\n MountainBikingElectric,\n Rowing,\n Running,\n SkiingAlpine,\n SkiingCrossCountry,\n Trail,\n Walking,\n },\n props: {\n sportLabel: {\n type: String,\n required: true,\n },\n title: {\n type: String,\n required: false,\n },\n },\n setup() {\n return { sportColors: inject('sportColors') }\n },\n })\n","import { render } from \"./index.vue?vue&type=template&id=720e3808&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-8bf75da8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"loader\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1))\n}","\n import { defineComponent } from 'vue'\n export default defineComponent({\n name: 'Loader',\n })\n","import { render } from \"./Loader.vue?vue&type=template&id=8bf75da8&scoped=true&ts=true\"\nimport script from \"./Loader.vue?vue&type=script&lang=ts\"\nexport * from \"./Loader.vue?vue&type=script&lang=ts\"\n\nimport \"./Loader.vue?vue&type=style&index=0&id=8bf75da8&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-8bf75da8\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-366182c4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"modal\" }\nconst _hoisted_2 = { class: \"custom-modal\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"modal-message\"\n}\nconst _hoisted_4 = {\n key: 1,\n class: \"modal-message\"\n}\nconst _hoisted_5 = { class: \"modal-buttons\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_i18n_t = _resolveComponent(\"i18n-t\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.title), 1)\n ]),\n content: _withCtx(() => [\n (_ctx.strongMessage)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createVNode(_component_i18n_t, { keypath: _ctx.message }, {\n default: _withCtx(() => [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.strongMessage), 1)\n ]),\n _: 1\n }, 8, [\"keypath\"])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, _toDisplayString(_ctx.message), 1)),\n (_ctx.errorMessages)\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 2,\n message: _ctx.errorMessages\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_5, [\n (!_ctx.errorMessages)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"confirm\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.emit('confirmAction')))\n }, _toDisplayString(_ctx.$t('buttons.YES')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.emit('cancelAction')))\n }, _toDisplayString(_ctx.$t(`buttons.${_ctx.errorMessages ? 'CANCEL' : 'NO'}`)), 1)\n ])\n ]),\n _: 1\n })\n ])\n ]))\n}","\n import { ComputedRef, computed, defineComponent, onUnmounted } from 'vue'\n\n import { ROOT_STORE } from '@/store/constants'\n import { useStore } from '@/use/useStore'\n\n export default defineComponent({\n name: 'Modal',\n props: {\n title: {\n type: String,\n required: true,\n },\n message: {\n type: String,\n required: true,\n },\n strongMessage: {\n type: String || null,\n default: null,\n },\n },\n emits: ['cancelAction', 'confirmAction'],\n setup(props, { emit }) {\n const store = useStore()\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\n return { errorMessages, emit }\n },\n })\n","import { render } from \"./Modal.vue?vue&type=template&id=366182c4&scoped=true&ts=true\"\nimport script from \"./Modal.vue?vue&type=script&lang=ts\"\nexport * from \"./Modal.vue?vue&type=script&lang=ts\"\n\nimport \"./Modal.vue?vue&type=style&index=0&id=366182c4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-366182c4\"]])\n\nexport default __exports__","import AlertMessage from '@/components/Common/AlertMessage.vue'\nimport Card from '@/components/Common/Card.vue'\nimport CustomTextArea from '@/components/Common/CustomTextArea.vue'\nimport Dropdown from '@/components/Common/Dropdown.vue'\nimport ErrorMessage from '@/components/Common/ErrorMessage.vue'\nimport SportImage from '@/components/Common/Images/SportImage/index.vue'\nimport Loader from '@/components/Common/Loader.vue'\nimport Modal from '@/components/Common/Modal.vue'\n\nexport const customComponents = [\n AlertMessage,\n Card,\n CustomTextArea,\n Dropdown,\n ErrorMessage,\n Loader,\n Modal,\n SportImage,\n]\n","import { Directive, DirectiveBinding } from 'vue'\n\ninterface ClickOutsideHTMLElement extends HTMLElement {\n clickOutsideEvent?: (event: MouseEvent | TouchEvent) => void\n}\n\nexport const clickOutsideDirective: Directive = {\n mounted: (\n element: ClickOutsideHTMLElement,\n binding: DirectiveBinding\n ): void => {\n element.clickOutsideEvent = function (event) {\n if (!(element === event.target || element.contains(event.target))) {\n binding.value(event)\n }\n }\n document.body.addEventListener('click', element.clickOutsideEvent)\n document.body.addEventListener('touchstart', element.clickOutsideEvent)\n },\n unmounted: function (element: ClickOutsideHTMLElement): void {\n if (element.clickOutsideEvent) {\n document.body.removeEventListener('click', element.clickOutsideEvent)\n document.body.removeEventListener('touchstart', element.clickOutsideEvent)\n element.clickOutsideEvent = undefined\n }\n },\n}\n","import {\n Chart,\n BarElement,\n LineElement,\n PointElement,\n Legend,\n Title,\n Tooltip,\n Filler,\n BarController,\n CategoryScale,\n LineController,\n LinearScale,\n} from 'chart.js'\nimport ChartDataLabels from 'chartjs-plugin-datalabels'\nimport { createApp } from 'vue'\n\nimport './registerServiceWorker'\nimport App from './App.vue'\nimport i18n from './i18n'\nimport router from './router'\nimport store from './store'\n\nimport { customComponents } from '@/custom-components'\nimport { clickOutsideDirective } from '@/directives'\nimport { sportColors } from '@/utils/sports'\n\nChart.register(\n BarElement,\n LineElement,\n PointElement,\n Legend,\n Title,\n Tooltip,\n Filler,\n BarController,\n CategoryScale,\n LineController,\n LinearScale,\n ChartDataLabels\n)\n\nconst app = createApp(App)\n .provide('sportColors', sportColors)\n .use(i18n)\n .use(store)\n .use(router)\n .directive('click-outside', clickOutsideDirective)\n\ncustomComponents.forEach((component) => {\n app.component(component.name, component)\n})\n\napp.mount('#app')\n","import { AxiosError } from 'axios'\nimport { ActionContext } from 'vuex'\n\nimport { ROOT_STORE } from '@/store/constants'\nimport { IAuthUserState } from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\nimport { ISportsState } from '@/store/modules/sports/types'\nimport { IStatisticsState } from '@/store/modules/statistics/types'\nimport { IUsersState } from '@/store/modules/users/types'\nimport { IWorkoutsState } from '@/store/modules/workouts/types'\n\nexport const getApiUrl = (): string => {\n return process.env.NODE_ENV === 'production'\n ? '/api/'\n : `${process.env.VUE_APP_API_URL}/api/`\n}\n\nexport const handleError = (\n context:\n | ActionContext\n | ActionContext\n | ActionContext\n | ActionContext\n | ActionContext\n | ActionContext,\n error: AxiosError | null,\n msg = 'UNKNOWN'\n): void => {\n const errorMessages = !error\n ? msg\n : error.response\n ? error.response.status === 413\n ? 'file size is greater than the allowed size'\n : error.response.data.message\n ? error.response.data.message\n : msg\n : error.message\n ? error.message\n : msg\n context.commit(\n ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES,\n errorMessages.includes('\\n')\n ? errorMessages\n .split('\\n')\n .filter((m: string) => m !== '')\n .map((m: string) => `api.ERROR.${m}`)\n : `api.ERROR.${errorMessages}`\n )\n}\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./UserProfileTabs.vue?vue&type=style&index=0&id=c7276c08&lang=scss\"","export enum AuthUserActions {\n CHECK_AUTH_USER = 'CHECK_AUTH_USER',\n DELETE_ACCOUNT = 'DELETE_ACCOUNT',\n DELETE_PICTURE = 'DELETE_PICTURE',\n GET_USER_PROFILE = 'GET_USER_PROFILE',\n LOGIN_OR_REGISTER = 'LOGIN_OR_REGISTER',\n LOGOUT = 'LOGOUT',\n SEND_PASSWORD_RESET_REQUEST = 'SEND_PASSWORD_RESET_REQUEST',\n RESET_USER_PASSWORD = 'RESET_USER_PASSWORD',\n UPDATE_USER_PICTURE = 'UPDATE_USER_PICTURE',\n UPDATE_USER_PROFILE = 'UPDATE_USER_PROFILE',\n UPDATE_USER_PREFERENCES = 'UPDATE_USER_PREFERENCES',\n}\n\nexport enum AuthUserGetters {\n AUTH_TOKEN = 'AUTH_TOKEN',\n AUTH_USER_PROFILE = 'AUTH_USER_PROFILE',\n IS_ADMIN = 'IS_ADMIN',\n IS_AUTHENTICATED = 'IS_AUTHENTICATED',\n USER_LOADING = 'USER_LOADING',\n}\n\nexport enum AuthUserMutations {\n CLEAR_AUTH_USER_TOKEN = 'CLEAR_AUTH_USER_TOKEN',\n UPDATE_AUTH_TOKEN = 'UPDATE_AUTH_TOKEN',\n UPDATE_AUTH_USER_PROFILE = 'UPDATE_AUTH_USER_PROFILE',\n UPDATE_USER_LOADING = 'UPDATE_USER_LOADING',\n}\n","export enum RootActions {\n GET_APPLICATION_CONFIG = 'GET_APPLICATION_CONFIG',\n GET_APPLICATION_STATS = 'GET_APPLICATION_STATS',\n UPDATE_APPLICATION_CONFIG = 'UPDATE_APPLICATION_CONFIG',\n}\n\nexport enum RootGetters {\n APP_CONFIG = 'APP_CONFIG',\n APP_LOADING = 'APP_LOADING',\n APP_STATS = 'APP_STATS',\n ERROR_MESSAGES = 'ERROR_MESSAGES',\n LANGUAGE = 'LANGUAGE',\n LOCALE = 'LOCALE', // date-fns\n}\n\nexport enum RootMutations {\n EMPTY_ERROR_MESSAGES = 'EMPTY_ERROR_MESSAGES',\n SET_ERROR_MESSAGES = 'SET_ERROR_MESSAGES',\n UPDATE_APPLICATION_CONFIG = 'UPDATE_APPLICATION_CONFIG',\n UPDATE_APPLICATION_LOADING = 'UPDATE_APPLICATION_LOADING',\n UPDATE_APPLICATION_STATS = 'UPDATE_APPLICATION_STATS',\n UPDATE_LANG = 'UPDATE_LANG',\n}\n","export enum SportsActions {\n GET_SPORTS = 'GET_SPORTS',\n UPDATE_SPORTS = 'UPDATE_SPORTS',\n}\n\nexport enum SportsGetters {\n SPORTS = 'SPORTS',\n}\n\nexport enum SportsMutation {\n SET_SPORTS = 'SET_SPORTS',\n}\n","export enum StatisticsActions {\n GET_USER_STATS = 'GET_USER_STATS',\n}\n\nexport enum StatisticsGetters {\n USER_STATS = 'USER_STATS',\n}\n\nexport enum StatisticsMutations {\n EMPTY_USER_STATS = 'EMPTY_USER_STATS',\n UPDATE_USER_STATS = 'UPDATE_USER_STATS',\n}\n","export enum UsersActions {\n EMPTY_USER = 'EMPTY_USER',\n EMPTY_USERS = 'EMPTY_USERS',\n GET_USER = 'GET_USER',\n GET_USERS = 'GET_USERS',\n UPDATE_USER = 'UPDATE_USER',\n}\n\nexport enum UsersGetters {\n USER = 'USER',\n USERS = 'USERS',\n USERS_LOADING = 'USERS_LOADING',\n USERS_PAGINATION = 'USERS_PAGINATION',\n}\n\nexport enum UsersMutations {\n UPDATE_USER = 'UPDATE_USER',\n UPDATE_USER_IN_USERS = 'UPDATE_USER_IN_USERS',\n UPDATE_USERS = 'UPDATE_USERS',\n UPDATE_USERS_LOADING = 'UPDATE_USERS_LOADING',\n UPDATE_USERS_PAGINATION = 'UPDATE_USERS_PAGINATION',\n}\n","import {\n AuthUserActions,\n AuthUserGetters,\n AuthUserMutations,\n} from '@/store/modules/authUser/enums'\nimport {\n RootActions,\n RootGetters,\n RootMutations,\n} from '@/store/modules/root/enums'\nimport {\n SportsActions,\n SportsGetters,\n SportsMutation,\n} from '@/store/modules/sports/enums'\nimport {\n StatisticsActions,\n StatisticsGetters,\n StatisticsMutations,\n} from '@/store/modules/statistics/enums'\nimport {\n UsersActions,\n UsersGetters,\n UsersMutations,\n} from '@/store/modules/users/enums'\nimport {\n WorkoutsActions,\n WorkoutsGetters,\n WorkoutsMutations,\n} from '@/store/modules/workouts/enums'\n\nexport const ROOT_STORE = {\n ACTIONS: RootActions,\n GETTERS: RootGetters,\n MUTATIONS: RootMutations,\n}\n\nexport const SPORTS_STORE = {\n ACTIONS: SportsActions,\n GETTERS: SportsGetters,\n MUTATIONS: SportsMutation,\n}\n\nexport const STATS_STORE = {\n ACTIONS: StatisticsActions,\n GETTERS: StatisticsGetters,\n MUTATIONS: StatisticsMutations,\n}\n\nexport const AUTH_USER_STORE = {\n ACTIONS: AuthUserActions,\n GETTERS: AuthUserGetters,\n MUTATIONS: AuthUserMutations,\n}\n\nexport const USERS_STORE = {\n ACTIONS: UsersActions,\n GETTERS: UsersGetters,\n MUTATIONS: UsersMutations,\n}\n\nexport const WORKOUTS_STORE = {\n ACTIONS: WorkoutsActions,\n GETTERS: WorkoutsGetters,\n MUTATIONS: WorkoutsMutations,\n}\n","var map = {\n\t\"./en/en.ts\": \"c142\",\n\t\"./fr/fr.ts\": \"663e\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"e7b6\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./NoConfig.vue?vue&type=style&index=0&id=01d4a985&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./AlertMessage.vue?vue&type=style&index=0&id=f5e8066a&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Footer.vue?vue&type=style&index=0&id=36297652&scoped=true&lang=scss\""],"sourceRoot":""} \ No newline at end of file diff --git a/fittrackee/dist/static/js/app.5434baf0.js b/fittrackee/dist/static/js/app.5434baf0.js deleted file mode 100644 index c0cf2551..00000000 --- a/fittrackee/dist/static/js/app.5434baf0.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(e){function t(t){for(var r,o,i=t[0],s=t[1],l=t[2],u=0,d=[];ur?1:n2&&void 0!==arguments[2]&&arguments[2];return e.filter((function(e){return!n||e.is_active})).map((function(e){return Object(r["a"])(Object(r["a"])({},e),{},{translatedLabel:t("sports.".concat(e.label,".LABEL"))})})).sort(a)},s=function(e,t){return t.filter((function(t){return t.id===e.sport_id})).map((function(e){return e.label}))[0]}},"13dc":function(e,t,n){"use strict";n("c0dc")},"16c2":function(e,t,n){"use strict";n("a03e")},1850:function(e,t,n){"use strict";n("da66")},"18b2":function(e,t,n){},"1f4c":function(e,t,n){},2024:function(e,t,n){},"21a0":function(e,t,n){"use strict";n("8f8e")},"25ba":function(e,t,n){"use strict";n("cabe")},2906:function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));var r=n("5502");function o(){return Object(r["b"])()}},3214:function(e,t,n){"use strict";n("2024")},3853:function(e,t,n){"use strict";n("c75e")},"3c44":function(e,t,n){"use strict";n("b680"),n("a9e3");var r=n("7a23"),o=function(e){return Object(r["pushScopeId"])("data-v-a6fa997c"),e=e(),Object(r["popScopeId"])(),e},c={class:"box user-header"},a={class:"user-details"},i={class:"user-name"},s={class:"user-stats"},l={class:"user-stat"},u={class:"stat-number"},d={class:"stat-label"},O={class:"user-stat"},m={class:"stat-number"},E=o((function(){return Object(r["createElementVNode"])("span",{class:"stat-label"},"km",-1)})),p={class:"user-stat hide-small"},b={class:"stat-number"},T={class:"stat-label"};function S(e,t,n,o,S,f){var _=Object(r["resolveComponent"])("UserPicture");return Object(r["openBlock"])(),Object(r["createElementBlock"])("div",c,[Object(r["createVNode"])(_,{user:e.user},null,8,["user"]),Object(r["createElementVNode"])("div",a,[Object(r["createElementVNode"])("div",i,Object(r["toDisplayString"])(e.user.username),1),Object(r["createElementVNode"])("div",s,[Object(r["createElementVNode"])("div",l,[Object(r["createElementVNode"])("span",u,Object(r["toDisplayString"])(e.user.nb_workouts),1),Object(r["createElementVNode"])("span",d,Object(r["toDisplayString"])(e.$t("workouts.WORKOUT",e.user.nb_workouts)),1)]),Object(r["createElementVNode"])("div",O,[Object(r["createElementVNode"])("span",m,Object(r["toDisplayString"])(Number(e.user.total_distance).toFixed(0)),1),E]),Object(r["createElementVNode"])("div",p,[Object(r["createElementVNode"])("span",b,Object(r["toDisplayString"])(e.user.nb_sports),1),Object(r["createElementVNode"])("span",T,Object(r["toDisplayString"])(e.$t("workouts.SPORT",e.user.nb_sports)),1)])])])])}var f=n("c46a"),_=Object(r["defineComponent"])({name:"ProfileDisplay",components:{UserPicture:f["a"]},props:{user:{type:Object,required:!0}}}),j=(n("5085"),n("6b0d")),A=n.n(j);const N=A()(_,[["render",S],["__scopeId","data-v-a6fa997c"]]);t["a"]=N},4870:function(e,t,n){"use strict";var r,o,c;n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return o})),n.d(t,"c",(function(){return c})),function(e){e["ADD_WORKOUT"]="ADD_WORKOUT",e["ADD_WORKOUT_WITHOUT_GPX"]="ADD_WORKOUT_WITHOUT_GPX",e["DELETE_WORKOUT"]="DELETE_WORKOUT",e["EDIT_WORKOUT"]="EDIT_WORKOUT",e["GET_CALENDAR_WORKOUTS"]="GET_CALENDAR_WORKOUTS",e["GET_USER_WORKOUTS"]="GET_USER_WORKOUTS",e["GET_TIMELINE_WORKOUTS"]="GET_TIMELINE_WORKOUTS",e["GET_MORE_TIMELINE_WORKOUTS"]="GET_MORE_TIMELINE_WORKOUTS",e["GET_WORKOUT_DATA"]="GET_WORKOUT_DATA"}(r||(r={})),function(e){e["CALENDAR_WORKOUTS"]="CALENDAR_WORKOUTS",e["TIMELINE_WORKOUTS"]="TIMELINE_WORKOUTS",e["USER_WORKOUTS"]="USER_WORKOUTS",e["WORKOUT_DATA"]="WORKOUT_DATA",e["WORKOUTS_PAGINATION"]="WORKOUTS_PAGINATION"}(o||(o={})),function(e){e["ADD_TIMELINE_WORKOUTS"]="ADD_TIMELINE_WORKOUTS",e["EMPTY_WORKOUTS"]="EMPTY_WORKOUTS",e["EMPTY_CALENDAR_WORKOUTS"]="EMPTY_CALENDAR_WORKOUTS",e["EMPTY_WORKOUT"]="EMPTY_WORKOUT",e["SET_CALENDAR_WORKOUTS"]="SET_CALENDAR_WORKOUTS",e["SET_TIMELINE_WORKOUTS"]="SET_TIMELINE_WORKOUTS",e["SET_USER_WORKOUTS"]="SET_USER_WORKOUTS",e["SET_WORKOUT"]="SET_WORKOUT",e["SET_WORKOUT_GPX"]="SET_WORKOUT_GPX",e["SET_WORKOUT_CHART_DATA"]="SET_WORKOUT_CHART_DATA",e["SET_WORKOUT_LOADING"]="SET_WORKOUT_LOADING",e["SET_WORKOUTS_PAGINATION"]="SET_WORKOUTS_PAGINATION"}(c||(c={}))},"4a13":function(e,t,n){"use strict";n("92d6")},"4b55":function(e,t,n){"use strict";n("8384")},"4c14":function(e,t,n){"use strict";n("abe8")},5085:function(e,t,n){"use strict";n("1f4c")},"57ba":function(e,t,n){"use strict";n("18b2")},"5df8":function(e,t,n){},"5e65":function(e,t,n){"use strict";n.d(t,"d",(function(){return m})),n.d(t,"e",(function(){return E})),n.d(t,"c",(function(){return p})),n.d(t,"b",(function(){return b})),n.d(t,"a",(function(){return T}));var r=n("69eb"),o=n("d6e9"),c=n("f628"),a=n("f7f1"),i=n("cdb6"),s=n("74b5"),l=n("8cac"),u=n("2fc8"),d=n("b166"),O=n("78b2"),m=function(e,t,n){switch(e){case"week":return Object(r["a"])(t,{weekStartsOn:n?1:0});case"year":return Object(o["a"])(t);case"month":return Object(c["a"])(t);default:throw new Error('Invalid duration, expected: "week", "month", "year", got: "'.concat(e,'"'))}},E=function(e,t){switch(e){case"week":return Object(a["a"])(t,7);case"year":return Object(i["a"])(t,1);case"month":return Object(s["a"])(t,1);default:throw new Error('Invalid duration, expected: "week", "month", "year", got: "'.concat(e,'"'))}},p=function(e,t){return Object(O["a"])(new Date(e),t)},b=function(e,t){var n=Object(c["a"])(e),o=Object(l["a"])(e),a=t?1:0;return{start:Object(r["a"])(n,{weekStartsOn:a}),end:Object(u["a"])(o,{weekStartsOn:a})}},T=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return t||(t="yyyy/MM/dd"),n||(n="HH:mm"),{workout_date:Object(d["a"])(e,t),workout_time:Object(d["a"])(e,n)}}},"608d":function(e,t,n){"use strict";n("90b9")},"663e":function(e,t,n){"use strict";n.r(t);var r={ACTION:e=>{const{normalize:t}=e;return t(["Action"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Ajouter/retirer des droits d'administration, supprimer des comptes utilisateurs."])},ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ADMINISTRATION:e=>{const{normalize:t}=e;return t(["Administration"])},APPLICATION:e=>{const{normalize:t}=e;return t(["Application"])},APP_CONFIG:{MAX_USERS_LABEL:e=>{const{normalize:t}=e;return t(["Nombre maximum d'utilisateurs actifs "])},MAX_USERS_HELP:e=>{const{normalize:t}=e;return t(["Si égal à 0, pas limite d'inscription"])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:t}=e;return t(["Taille max. des archives zip (en Mo) "])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Taille max. des fichiers (en Mo) "])},TITLE:e=>{const{normalize:t}=e;return t(["Configuration de l'application"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Nombre max. de fichiers dans une archive zip "])}},BACK_TO_ADMIN:e=>{const{normalize:t}=e;return t(["Revenir à l'admin"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Etes-vous sûr de vouloir supprimer le compte de ",n(r(0))," ? Toutes les données seront définitivement."])},DELETE_USER:e=>{const{normalize:t}=e;return t(["Supprimer l'utilisateur"])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:t}=e;return t(["Activer/désactiver des sports."])},REGISTRATION_DISABLED:e=>{const{normalize:t}=e;return t(["Les inscriptions sont actuellement désactivées."])},REGISTRATION_ENABLED:e=>{const{normalize:t}=e;return t(["Les inscriptions sont actuellement activées."])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:t}=e;return t(["Actif"])},HAS_WORKOUTS:e=>{const{normalize:t}=e;return t(["des séances existent"])},IMAGE:e=>{const{normalize:t}=e;return t(["Image"])},LABEL:e=>{const{normalize:t}=e;return t(["Label"])}},TITLE:e=>{const{normalize:t}=e;return t(["Administration - Sports"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:t}=e;return t(["Configurer l'application (nombre maximum d'utilisateurs inscrits, taille maximale des fichers)."])},USER:e=>{const{normalize:t,plural:n}=e;return n([t(["utilisateur"]),t(["utilisateurs"])])},USERS:{TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Ajouter les drois d'admin"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Retirer les drois d'admin"])}},SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:t}=e;return t(["status administrateur"])},CREATED_AT:e=>{const{normalize:t}=e;return t(["date d'inscription"])},USERNAME:e=>{const{normalize:t}=e;return t(["nom d'utilisateur"])},WORKOUTS_COUNT:e=>{const{normalize:t}=e;return t(["nombre de séances"])}}}}},o={ERROR:{UNKNOWN:e=>{const{normalize:t}=e;return t(["Erreur. Veuillez réessayer ou contacter l'administrateur."])},"email: valid email must be provided":e=>{const{normalize:t}=e;return t(["Email : une adresse email valide doit être fournie."])},"error on getting configuration":e=>{const{normalize:t}=e;return t(["Erreur lors de la récupération de la configuration."])},"error when updating configuration":e=>{const{normalize:t}=e;return t(["Erreur lors de la mise à jour de la configuration"])},"error, please try again or contact the administrator":e=>{const{normalize:t}=e;return t(["Erreur, veuillez réessayer ou contacter l'administrateur."])},"error, registration is disabled":e=>{const{normalize:t}=e;return t(["Erreur, les inscriptions sont désactivées."])},"file extension not allowed":e=>{const{normalize:t}=e;return t(["Extension de fichier non autorisée."])},"file size is greater than the allowed size":e=>{const{normalize:t}=e;return t(["La taille du fichier est supérieure à la limite autorisée."])},"invalid credentials":e=>{const{normalize:t}=e;return t(["Identifiants invalides."])},"invalid payload":e=>{const{normalize:t}=e;return t(["Données fournies incorrectes."])},"invalid token, please log in again":e=>{const{normalize:t}=e;return t(["Jeton de connexion invalide, merci de vous reconnecter."])},"invalid token, please request a new token":e=>{const{normalize:t}=e;return t(["Jeton de connexion, merci de vous reconnecter."])},"no file part":e=>{const{normalize:t}=e;return t(["Pas de fichier fourni."])},"no selected file":e=>{const{normalize:t}=e;return t(["Pas de fichier sélectionné."])},"Network Error":e=>{const{normalize:t}=e;return t(["Erreur Réseau."])},"password: password and password confirmation do not match":e=>{const{normalize:t}=e;return t(["Mot de passe : les mots de passe saisis sont différents."])},"provide a valid auth token":e=>{const{normalize:t}=e;return t(["Merci de fournir un jeton de connexion valide."])},"password: 8 characters required":e=>{const{normalize:t}=e;return t(["Mot de passe : 8 caractères minimum."])},"sport does not exist":e=>{const{normalize:t}=e;return t(["Ce sport n'existe pas."])},"signature expired, please log in again":e=>{const{normalize:t}=e;return t(["Signature expirée. Merci de vous reconnecter."])},"sorry, that user already exists":e=>{const{normalize:t}=e;return t(["Désolé, cet utilisateur existe déjà."])},"successfully registered":e=>{const{normalize:t}=e;return t(["Inscription validée."])},"user does not exist":e=>{const{normalize:t}=e;return t(["L'utilisateur n'existe pas"])},"username: 3 to 12 characters required":e=>{const{normalize:t}=e;return t(["Nom d'utilisateur : 3 à 12 caractères requis."])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:t}=e;return t(["Vous ne pouvez pas supprimer votre compte, aucun autre utilisateur n'a des droits d'administration."])},"you do not have permissions":e=>{const{normalize:t}=e;return t(["Vous n'avez pas les permissions nécessaires."])}},PAGINATION:{PREVIOUS:e=>{const{normalize:t}=e;return t(["précédent"])},NEXT:e=>{const{normalize:t}=e;return t(["suivant"])}}},c={BACK:e=>{const{normalize:t}=e;return t(["Précédent"])},CANCEL:e=>{const{normalize:t}=e;return t(["Annuler"])},DELETE_MY_ACCOUNT:e=>{const{normalize:t}=e;return t(["Supprimer mon compte"])},DISABLE:e=>{const{normalize:t}=e;return t(["Désactiver"])},EDIT:e=>{const{normalize:t}=e;return t(["Modifier"])},ENABLE:e=>{const{normalize:t}=e;return t(["Activer"])},FILTER:e=>{const{normalize:t}=e;return t(["Filtrer"])},LOGIN:e=>{const{normalize:t}=e;return t(["Se connecter"])},NO:e=>{const{normalize:t}=e;return t(["Non"])},REGISTER:e=>{const{normalize:t}=e;return t(["S'inscrire"])},SUBMIT:e=>{const{normalize:t}=e;return t(["Valider"])},YES:e=>{const{normalize:t}=e;return t(["Oui"])}},a={CONFIRMATION:e=>{const{normalize:t}=e;return t(["Confirmation"])},DAY:e=>{const{normalize:t,plural:n}=e;return n([t(["jour"]),t(["jours"])])},HOME:e=>{const{normalize:t}=e;return t(["Accueil"])},HERE:e=>{const{normalize:t}=e;return t(["ici"])},SELECTS:{ORDER_BY:{LABEL:e=>{const{normalize:t}=e;return t(["trier par "])}},ORDER:{LABEL:e=>{const{normalize:t}=e;return t(["tri"])},ASC:e=>{const{normalize:t}=e;return t(["ascendant"])},DESC:e=>{const{normalize:t}=e;return t(["descendant"])}},PER_PAGE:{LABEL:e=>{const{normalize:t}=e;return t(["par page"])}}},"TOTAL ":e=>{const{normalize:t}=e;return t(["Total"])}},i={DASHBOARD:e=>{const{normalize:t}=e;return t(["Tableau de Bord"])},THIS_MONTH:e=>{const{normalize:t}=e;return t(["Ce mois"])}},s={UNKNOWN:e=>{const{normalize:t}=e;return t(["Erreur. Veuillez réessayer ou contacter l'administrateur."])},APP_ERROR:e=>{const{normalize:t}=e;return t(["L'application semble rencontrer quelques problèmes.
Veuillez réessayer plus tard ou contacter l'administrateur."])},NOT_FOUND:{PAGE:e=>{const{normalize:t}=e;return t(["Page introuvable"])},WORKOUT:e=>{const{normalize:t}=e;return t(["Séance introuvable"])}}},l={"Cycling (Sport)":{LABEL:e=>{const{normalize:t}=e;return t(["Vélo (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:t}=e;return t(["Vélo (Transport)"])}},Hiking:{LABEL:e=>{const{normalize:t}=e;return t(["Randonnée"])}},"Mountain Biking":{LABEL:e=>{const{normalize:t}=e;return t(["VTT"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:t}=e;return t(["VTT (Electrique)"])}},Rowing:{LABEL:e=>{const{normalize:t}=e;return t(["Aviron"])}},Running:{LABEL:e=>{const{normalize:t}=e;return t(["Course"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:t}=e;return t(["Ski (Alpin)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:t}=e;return t(["Ski (Randonnée)"])}},Trail:{LABEL:e=>{const{normalize:t}=e;return t(["Trail"])}},Walking:{LABEL:e=>{const{normalize:t}=e;return t(["Marche"])}}},u={STATISTICS:e=>{const{normalize:t}=e;return t(["Statistiques"])},TIME_FRAMES:{week:e=>{const{normalize:t}=e;return t(["semaine"])},month:e=>{const{normalize:t}=e;return t(["mois"])},year:e=>{const{normalize:t}=e;return t(["année"])}}},d={ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:t}=e;return t(["Vous avez déjà un compte ?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:t}=e;return t(["Etes-vous sûr de vouloir supprimer votre compte ? Toutes les données seront définitivement effacés."])},EMAIL:e=>{const{normalize:t}=e;return t(["Email"])},ENTER_EMAIL:e=>{const{normalize:t}=e;return t(["Saisir une adresse email"])},ENTER_PASSWORD:e=>{const{normalize:t}=e;return t(["Saisir un mot de passe"])},ENTER_PASSWORD_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Confirmer le mot de passe"])},INVALID_TOKEN:e=>{const{normalize:t}=e;return t(["Jeton invalide, veullez demander une nouvelle réinitialisation de mot de passe."])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Langue"])},LOGIN:e=>{const{normalize:t}=e;return t(["Se connecter"])},LOGOUT:e=>{const{normalize:t}=e;return t(["Se déconnecter"])},PASSWORD:e=>{const{normalize:t}=e;return t(["Mot de passe"])},PASSWORD_CONFIRM:e=>{const{normalize:t}=e;return t(["Confirmation du mot de passe"])},PASSWORD_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Confirmation du mot de passe"])},PASSWORD_FORGOTTEN:e=>{const{normalize:t}=e;return t(["Mot de passe oublié ?"])},PASSWORD_RESET:e=>{const{normalize:t}=e;return t(["Réinitialisation du mot de passe"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:t}=e;return t(["Vérifiez votre boite mail. Si vote adresse est dans notre base de données, vous recevrez un email avec un lien pour réinitialiser votre mot de passe."])},PASSWORD_UPDATED:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Votre mot de passe a été mis à jour. Cliquez ",n(r(0))," pour vous connecter."])},PROFILE:{BACK_TO_PROFILE:e=>{const{normalize:t}=e;return t(["Revenir au profil"])},BIO:e=>{const{normalize:t}=e;return t(["Bio"])},BIRTH_DATE:e=>{const{normalize:t}=e;return t(["Date de naissance"])},EDIT:e=>{const{normalize:t}=e;return t(["Modifier le profil"])},EDIT_PREFERENCES:e=>{const{normalize:t}=e;return t(["Modifier les préférences"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:t}=e;return t(["Premier jour de la semaine"])},FIRST_NAME:e=>{const{normalize:t}=e;return t(["Prénom"])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Langue"])},LAST_NAME:e=>{const{normalize:t}=e;return t(["Nom"])},LOCATION:e=>{const{normalize:t}=e;return t(["Lieu"])},MONDAY:e=>{const{normalize:t}=e;return t(["Lundi"])},PICTURE:e=>{const{normalize:t}=e;return t(["Image de profil"])},PICTURE_EDITION:e=>{const{normalize:t}=e;return t(["Mise à jour de l'image de profil"])},PICTURE_UPDATE:e=>{const{normalize:t}=e;return t(["Mettre à jour l'image"])},PICTURE_REMOVE:e=>{const{normalize:t}=e;return t(["Supprimer"])},PREFERENCES_EDITION:e=>{const{normalize:t}=e;return t(["Mise à jour des préférences"])},PROFILE_EDITION:e=>{const{normalize:t}=e;return t(["Mise à jour du profil"])},REGISTRATION_DATE:e=>{const{normalize:t}=e;return t(["Date d'inscription"])},SUNDAY:e=>{const{normalize:t}=e;return t(["Dimanche"])},TABS:{PICTURE:e=>{const{normalize:t}=e;return t(["image"])},PREFERENCES:e=>{const{normalize:t}=e;return t(["préférences"])},PROFILE:e=>{const{normalize:t}=e;return t(["profil"])}},TIMEZONE:e=>{const{normalize:t}=e;return t(["Fuseau horaire"])}},REGISTER:e=>{const{normalize:t}=e;return t(["S'inscrire"])},REGISTER_DISABLED:e=>{const{normalize:t}=e;return t(["Désolé, les inscriptions sont désactivées."])},RESET_PASSWORD:e=>{const{normalize:t}=e;return t(["Réinitialiser votre mot de passe"])},USER_PICTURE:e=>{const{normalize:t}=e;return t(["photo de l'utilisateur"])},USERNAME:e=>{const{normalize:t}=e;return t(["Nom d'utilisateur"])}},O={ADD_WORKOUT:e=>{const{normalize:t}=e;return t(["Ajouter une séance"])},ANALYSIS:e=>{const{normalize:t}=e;return t(["analyse"])},ASCENT:e=>{const{normalize:t}=e;return t(["dénivelé positif"])},AVERAGE_SPEED:e=>{const{normalize:t}=e;return t(["vitesse moyenne"])},AVE_SPEED:e=>{const{normalize:t}=e;return t(["vitesse moy."])},BACK_TO_WORKOUT:e=>{const{normalize:t}=e;return t(["revenir à la séance"])},DATE:e=>{const{normalize:t}=e;return t(["date"])},DESCENT:e=>{const{normalize:t}=e;return t(["dénivelé négatif"])},DISPLAY_FILTERS:e=>{const{normalize:t}=e;return t(["afficher les filtres"])},DISTANCE:e=>{const{normalize:t}=e;return t(["distance"])},DURATION:e=>{const{normalize:t}=e;return t(["durée"])},EDIT_WORKOUT:e=>{const{normalize:t}=e;return t(["Modifier la séance"])},ELEVATION:e=>{const{normalize:t}=e;return t(["altitude"])},END:e=>{const{normalize:t}=e;return t(["fin"])},FROM:e=>{const{normalize:t}=e;return t(["à partir de"])},GPX_FILE:e=>{const{normalize:t}=e;return t(["fichier .gpx"])},HIDE_FILTERS:e=>{const{normalize:t}=e;return t(["masquer les filtres"])},KM:e=>{const{normalize:t}=e;return t(["km"])},LATEST_WORKOUTS:e=>{const{normalize:t}=e;return t(["Séances récentes"])},LOAD_MORE_WORKOUT:e=>{const{normalize:t}=e;return t(["Charger les séances suivantes"])},MAX_ALTITUDE:e=>{const{normalize:t}=e;return t(["altitude max"])},MAX_FILES:e=>{const{normalize:t}=e;return t(["fichiers max. "])},MAX_SIZE:e=>{const{normalize:t}=e;return t(["taille max. "])},MAX_SPEED:e=>{const{normalize:t}=e;return t(["vitesse max"])},MIN_ALTITUDE:e=>{const{normalize:t}=e;return t(["altitude min"])},NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["Segment suivant"])},NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["Séance suivante"])},NO_DATA_CLEANING:e=>{const{normalize:t}=e;return t(["données issues du fichier gpx, sans correction"])},NO_FILE_PROVIDED:e=>{const{normalize:t}=e;return t(["Pas de fichier fourni"])},NO_FOLDER:e=>{const{normalize:t}=e;return t(["pas de répertoire"])},NO_MAP:e=>{const{normalize:t}=e;return t(["Pas de carte"])},NO_NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["Pas de segment suivant"])},NO_NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["Pas de séance suivante"])},NO_NOTES:e=>{const{normalize:t}=e;return t(["Pas de notes"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["Pas de segment précédent"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["Pas de séance précédente"])},NO_RECORDS:e=>{const{normalize:t}=e;return t(["Pas de records."])},NO_WORKOUTS:e=>{const{normalize:t}=e;return t(["Pas de séances."])},NOTES:e=>{const{normalize:t}=e;return t(["notes"])},PAUSES:e=>{const{normalize:t}=e;return t(["pauses"])},PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["Segment précédent"])},PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["Séance précédente"])},RECORD:e=>{const{normalize:t,plural:n}=e;return n([t(["record"]),t(["records"])])},RECORD_AS:e=>{const{normalize:t}=e;return t(["Vitesse moy."])},RECORD_FD:e=>{const{normalize:t}=e;return t(["Distance la + longue"])},RECORD_LD:e=>{const{normalize:t}=e;return t(["Durée la + longue"])},RECORD_MS:e=>{const{normalize:t}=e;return t(["Vitesse max."])},REMAINING_CHARS:e=>{const{normalize:t}=e;return t(["nombre de caractères restants "])},SEGMENT:e=>{const{normalize:t,plural:n}=e;return n([t(["segment"]),t(["segments"])])},SPEED:e=>{const{normalize:t}=e;return t(["vitesse"])},SPORT:e=>{const{normalize:t,plural:n}=e;return n([t(["sport"]),t(["sports"])])},START:e=>{const{normalize:t}=e;return t(["début"])},TITLE:e=>{const{normalize:t}=e;return t(["titre"])},TO:e=>{const{normalize:t}=e;return t(["jusqu'au"])},TOTAL_DURATION:e=>{const{normalize:t}=e;return t(["durée totale"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:t}=e;return t(["Ajoutez votre première séance !"])},WEATHER:{HUMIDITY:e=>{const{normalize:t}=e;return t(["humidité"])},TEMPERATURE:e=>{const{normalize:t}=e;return t(["température"])},WIND:e=>{const{normalize:t}=e;return t(["vent"])},DARK_SKY:{"clear-day":e=>{const{normalize:t}=e;return t(["ensoleillé"])},"clear-night":e=>{const{normalize:t}=e;return t(["nuit claire"])},cloudy:e=>{const{normalize:t}=e;return t(["nuageux"])},fog:e=>{const{normalize:t}=e;return t(["brouillard"])},"partly-cloudy-day":e=>{const{normalize:t}=e;return t(["partiellement nuageux"])},"partly-cloudy-night":e=>{const{normalize:t}=e;return t(["nuit partiellement nuageuse"])},rain:e=>{const{normalize:t}=e;return t(["pluie"])},sleet:e=>{const{normalize:t}=e;return t(["neige fondue"])},snow:e=>{const{normalize:t}=e;return t(["neige"])},wind:e=>{const{normalize:t}=e;return t(["venteux"])}}},WITH_GPX:e=>{const{normalize:t}=e;return t(["avec un fichier .gpx"])},WITHOUT_GPX:e=>{const{normalize:t}=e;return t(["sans fichier .gpx"])},WORKOUT:e=>{const{normalize:t,plural:n}=e;return n([t(["séance"]),t(["séances"])])},WORKOUT_DATE:e=>{const{normalize:t}=e;return t(["date de la séance"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Etes-vous sûr de vouloir supprimer cette séance ?"])},ZIP_ARCHIVE:e=>{const{normalize:t}=e;return t(["archive .zip"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["ou une archive .zip contenant des fichiers .gpx"])}};t["default"]={admin:r,api:o,buttons:c,common:a,dashboard:i,error:s,sports:l,statistics:u,user:d,workouts:O}},"6d7d":function(e,t,n){"use strict";var r=n("7a23"),o=function(e){return Object(r["pushScopeId"])("data-v-56dc89d4"),e=e(),Object(r["popScopeId"])(),e},c={class:"pagination-center","aria-label":"navigation"},a={class:"pagination"},i=o((function(){return Object(r["createElementVNode"])("i",{class:"fa fa-chevron-left","aria-hidden":"true"},null,-1)})),s={key:0},l=o((function(){return Object(r["createElementVNode"])("i",{class:"fa fa-chevron-right","aria-hidden":"true"},null,-1)}));function u(e,t,n,o,u,d){var O=Object(r["resolveComponent"])("router-link");return Object(r["openBlock"])(),Object(r["createElementBlock"])("nav",c,[Object(r["createElementVNode"])("ul",a,[Object(r["createElementVNode"])("li",{class:Object(r["normalizeClass"])(["page-prev",{disabled:!e.pagination.has_prev}])},[Object(r["createVNode"])(O,{class:"page-link",to:{path:e.path,query:e.getQuery(e.pagination.page,-1)},event:e.pagination.has_prev?"click":"",disabled:!e.pagination.has_prev},{default:Object(r["withCtx"])((function(){return[i,Object(r["createTextVNode"])(" "+Object(r["toDisplayString"])(e.$t("api.PAGINATION.PREVIOUS")),1)]})),_:1},8,["to","event","disabled"])],2),(Object(r["openBlock"])(!0),Object(r["createElementBlock"])(r["Fragment"],null,Object(r["renderList"])(e.rangePagination(e.pagination.pages,e.pagination.page),(function(t){return Object(r["openBlock"])(),Object(r["createElementBlock"])("li",{key:t,class:Object(r["normalizeClass"])(["page",{active:t===e.pagination.page}])},["..."===t?(Object(r["openBlock"])(),Object(r["createElementBlock"])("span",s," ... ")):(Object(r["openBlock"])(),Object(r["createBlock"])(O,{key:1,class:"page-link",to:{path:e.path,query:e.getQuery(+t)}},{default:Object(r["withCtx"])((function(){return[Object(r["createTextVNode"])(Object(r["toDisplayString"])(t),1)]})),_:2},1032,["to"]))],2)})),128)),Object(r["createElementVNode"])("li",{class:Object(r["normalizeClass"])(["page-next",{disabled:!e.pagination.has_next}])},[Object(r["createVNode"])(O,{class:"page-link",to:{path:e.path,query:e.getQuery(e.pagination.page,1)},event:e.pagination.has_next?"click":"",disabled:!e.pagination.has_next},{default:Object(r["withCtx"])((function(){return[Object(r["createTextVNode"])(Object(r["toDisplayString"])(e.$t("api.PAGINATION.NEXT"))+" ",1),l]})),_:1},8,["to","event","disabled"])],2)])])}var d=n("97e5"),O=Object(r["defineComponent"])({name:"Pagination",props:{pagination:{type:Object,required:!0},path:{type:String,required:!0},query:{type:Object,required:!0}},setup:function(e){function t(t,n){var r=Object.assign({},e.query);return r.page=n?t+n:t,r}return{rangePagination:d["b"],getQuery:t}}}),m=(n("1850"),n("6b0d")),E=n.n(m);const p=E()(O,[["render",u],["__scopeId","data-v-56dc89d4"]]);t["a"]=p},"6eb4":function(e,t,n){},"71a7":function(e,t,n){"use strict";var r=n("7a23"),o={id:"user-infos",class:"description-list"},c={class:"user-bio"},a={key:1,class:"profile-buttons"},i={key:2,class:"profile-buttons"};function s(e,t,n,s,l,u){var d=Object(r["resolveComponent"])("Modal");return Object(r["openBlock"])(),Object(r["createElementBlock"])("div",o,[e.displayModal?(Object(r["openBlock"])(),Object(r["createBlock"])(d,{key:0,title:e.$t("common.CONFIRMATION"),message:"admin.CONFIRM_USER_ACCOUNT_DELETION",strongMessage:e.user.username,onConfirmAction:t[0]||(t[0]=function(t){return e.deleteUserAccount(e.user.username)}),onCancelAction:t[1]||(t[1]=function(t){return e.updateDisplayModal(!1)})},null,8,["title","strongMessage"])):Object(r["createCommentVNode"])("",!0),Object(r["createElementVNode"])("dl",null,[Object(r["createElementVNode"])("dt",null,Object(r["toDisplayString"])(e.$t("user.PROFILE.REGISTRATION_DATE"))+":",1),Object(r["createElementVNode"])("dd",null,Object(r["toDisplayString"])(e.registrationDate),1),Object(r["createElementVNode"])("dt",null,Object(r["toDisplayString"])(e.$t("user.PROFILE.FIRST_NAME"))+":",1),Object(r["createElementVNode"])("dd",null,Object(r["toDisplayString"])(e.user.first_name),1),Object(r["createElementVNode"])("dt",null,Object(r["toDisplayString"])(e.$t("user.PROFILE.LAST_NAME"))+":",1),Object(r["createElementVNode"])("dd",null,Object(r["toDisplayString"])(e.user.last_name),1),Object(r["createElementVNode"])("dt",null,Object(r["toDisplayString"])(e.$t("user.PROFILE.BIRTH_DATE"))+":",1),Object(r["createElementVNode"])("dd",null,Object(r["toDisplayString"])(e.birthDate),1),Object(r["createElementVNode"])("dt",null,Object(r["toDisplayString"])(e.$t("user.PROFILE.LOCATION"))+":",1),Object(r["createElementVNode"])("dd",null,Object(r["toDisplayString"])(e.user.location),1),Object(r["createElementVNode"])("dt",null,Object(r["toDisplayString"])(e.$t("user.PROFILE.BIO"))+":",1),Object(r["createElementVNode"])("dd",c,Object(r["toDisplayString"])(e.user.bio),1)]),e.fromAdmin?(Object(r["openBlock"])(),Object(r["createElementBlock"])("div",a,[e.authUser.username!==e.user.username?(Object(r["openBlock"])(),Object(r["createElementBlock"])("button",{key:0,class:"danger",onClick:t[2]||(t[2]=Object(r["withModifiers"])((function(t){return e.updateDisplayModal(!0)}),["prevent"]))},Object(r["toDisplayString"])(e.$t("admin.DELETE_USER")),1)):Object(r["createCommentVNode"])("",!0),Object(r["createElementVNode"])("button",{onClick:t[3]||(t[3]=function(t){return e.$router.go(-1)})},Object(r["toDisplayString"])(e.$t("buttons.BACK")),1)])):(Object(r["openBlock"])(),Object(r["createElementBlock"])("div",i,[Object(r["createElementVNode"])("button",{onClick:t[4]||(t[4]=function(t){return e.$router.push("/profile/edit")})},Object(r["toDisplayString"])(e.$t("user.PROFILE.EDIT")),1),Object(r["createElementVNode"])("button",{onClick:t[5]||(t[5]=function(t){return e.$router.push("/")})},Object(r["toDisplayString"])(e.$t("common.HOME")),1)]))])}var l=n("b166"),u=n("dad5"),d=n("2906"),O=Object(r["defineComponent"])({name:"UserInfos",props:{user:{type:Object,required:!0},fromAdmin:{type:Boolean,default:!1}},setup:function(e){var t=Object(d["a"])(),n=Object(r["computed"])((function(){return t.getters[u["a"].GETTERS.AUTH_USER_PROFILE]})),o=Object(r["computed"])((function(){return e.user.created_at?Object(l["a"])(new Date(e.user.created_at),"dd/MM/yyyy HH:mm"):""})),c=Object(r["computed"])((function(){return e.user.birth_date?Object(l["a"])(new Date(e.user.birth_date),"dd/MM/yyyy"):""})),a=Object(r["ref"])(!1);function i(e){a.value=e}function s(e){t.dispatch(u["a"].ACTIONS.DELETE_ACCOUNT,{username:e})}return{authUser:n,birthDate:c,displayModal:a,registrationDate:o,deleteUserAccount:s,updateDisplayModal:i}}}),m=(n("4c14"),n("6b0d")),E=n.n(m);const p=E()(O,[["render",s],["__scopeId","data-v-17c7b32c"]]);t["a"]=p},"79e1":function(e,t,n){"use strict";n("851f")},"7ffe":function(e,t,n){"use strict";n("9f54")},8384:function(e,t,n){},"851f":function(e,t,n){},"85fa":function(e,t,n){"use strict";n("0a59")},"8f8e":function(e,t,n){},"90b9":function(e,t,n){},9176:function(e,t,n){"use strict";n("99af"),n("4e82");var r=n("7a23"),o={class:"table-selects"},c=["value"],a=["value"],i=["value"],s=["value"],l=["value"],u=["value"];function d(e,t,n,d,O,m){return Object(r["openBlock"])(),Object(r["createElementBlock"])("div",o,[Object(r["createElementVNode"])("label",null,[Object(r["createTextVNode"])(Object(r["toDisplayString"])(e.$t("common.SELECTS.ORDER_BY.LABEL"))+": ",1),Object(r["createElementVNode"])("select",{name:"order_by",id:"order_by",value:e.query.order_by,onChange:t[0]||(t[0]=function(){return e.onSelectUpdate&&e.onSelectUpdate.apply(e,arguments)})},[(Object(r["openBlock"])(!0),Object(r["createElementBlock"])(r["Fragment"],null,Object(r["renderList"])(e.order_by,(function(t){return Object(r["openBlock"])(),Object(r["createElementBlock"])("option",{value:t,key:t},Object(r["toDisplayString"])(e.$t("".concat(e.message,".").concat(t.toUpperCase()))),9,a)})),128))],40,c)]),Object(r["createElementVNode"])("label",null,[Object(r["createTextVNode"])(Object(r["toDisplayString"])(e.$t("common.SELECTS.ORDER.LABEL"))+": ",1),Object(r["createElementVNode"])("select",{name:"order",id:"order",value:e.query.order,onChange:t[1]||(t[1]=function(){return e.onSelectUpdate&&e.onSelectUpdate.apply(e,arguments)})},[(Object(r["openBlock"])(!0),Object(r["createElementBlock"])(r["Fragment"],null,Object(r["renderList"])(e.sort,(function(t){return Object(r["openBlock"])(),Object(r["createElementBlock"])("option",{value:t,key:t},Object(r["toDisplayString"])(e.$t("common.SELECTS.ORDER.".concat(t.toUpperCase()))),9,s)})),128))],40,i)]),Object(r["createElementVNode"])("label",null,[Object(r["createTextVNode"])(Object(r["toDisplayString"])(e.$t("common.SELECTS.PER_PAGE.LABEL"))+": ",1),Object(r["createElementVNode"])("select",{name:"per_page",id:"per_page",value:e.query.per_page,onChange:t[2]||(t[2]=function(){return e.onSelectUpdate&&e.onSelectUpdate.apply(e,arguments)})},[(Object(r["openBlock"])(!0),Object(r["createElementBlock"])(r["Fragment"],null,Object(r["renderList"])(e.per_page,(function(e){return Object(r["openBlock"])(),Object(r["createElementBlock"])("option",{value:e,key:e},Object(r["toDisplayString"])(e),9,u)})),128))],40,l)])])}var O=Object(r["defineComponent"])({name:"FilterSelects",props:{order_by:{type:Object,required:!0},query:{type:Object,required:!0},sort:{type:Object,required:!0},message:{type:String,required:!0}},emits:["updateSelect"],setup:function(e,t){var n=t.emit;function r(e){n("updateSelect",e.target.id,e.target.value)}return{per_page:[10,25,50,100],onSelectUpdate:r}}}),m=(n("79e1"),n("6b0d")),E=n.n(m);const p=E()(O,[["render",d],["__scopeId","data-v-50c78582"]]);t["a"]=p},9242:function(e,t,n){"use strict";n("ee25")},"92d6":function(e,t,n){},"95ba":function(e,t,n){"use strict";n("6eb4")},"97e5":function(e,t,n){"use strict";n.d(t,"c",(function(){return r})),n.d(t,"a",(function(){return s})),n.d(t,"d",(function(){return l})),n.d(t,"b",(function(){return d}));n("caad"),n("2532"),n("a630"),n("3ca3"),n("99af");var r=["asc","desc"],o=1,c=10,a=function(e,t){return e&&"string"===typeof e&&+e>0?+e:t},i=function(e,t,n){return e&&"string"===typeof e&&t.includes(e)?e:n},s=function(e,t,n,s){var l=s||{},u=l.defaultSort||"asc",d=l.query||{};return d.page=a(e.page,o),d.per_page=a(e.per_page,c),d.order=i(e.order,r,u),d.order_by=i(e.order_by,t,n),d},l=["from","to","ave_speed_from","ave_speed_to","max_speed_from","max_speed_to","distance_from","distance_to","duration_from","duration_to","sport_id"],u=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return Array.from({length:e-t+1},(function(e,n){return t+n}))},d=function(e,t){if(e<0)return[];if(e<9)return u(e);var n=[1,2];return t<4?n=n.concat([3,4,5]):t<6?n=n.concat(u(t+2,3)):(n=n.concat(["..."]),t=e-2&&n[n.length-1]{const{normalize:t}=e;return t(["Action"])},ADMIN_RIGHTS_DELETE_USER_ACCOUNT:e=>{const{normalize:t}=e;return t(["Add/remove admin rights, delete user account."])},ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ADMINISTRATION:e=>{const{normalize:t}=e;return t(["Administration"])},APPLICATION:e=>{const{normalize:t}=e;return t(["Application"])},APP_CONFIG:{MAX_USERS_LABEL:e=>{const{normalize:t}=e;return t(["Max. number of active users"])},MAX_USERS_HELP:e=>{const{normalize:t}=e;return t(["If 0, no limitation on registration."])},MAX_FILES_IN_ZIP_LABEL:e=>{const{normalize:t}=e;return t(["Max. files of zip archive"])},SINGLE_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Max. size of uploaded files (in Mb)"])},TITLE:e=>{const{normalize:t}=e;return t(["Application configuration"])},ZIP_UPLOAD_MAX_SIZE_LABEL:e=>{const{normalize:t}=e;return t(["Max. size of zip archive (in Mb)"])}},BACK_TO_ADMIN:e=>{const{normalize:t}=e;return t(["Back to admin"])},CONFIRM_USER_ACCOUNT_DELETION:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Are you sure you want to delete ",n(r(0))," account? All data will be deleted, this cannot be undone."])},DELETE_USER:e=>{const{normalize:t}=e;return t(["Delete user"])},ENABLE_DISABLE_SPORTS:e=>{const{normalize:t}=e;return t(["Enable/disable sports."])},REGISTRATION_DISABLED:e=>{const{normalize:t}=e;return t(["Registration is currently disabled."])},REGISTRATION_ENABLED:e=>{const{normalize:t}=e;return t(["Registration is currently enabled."])},SPORTS:{TABLE:{ACTIVE:e=>{const{normalize:t}=e;return t(["Active"])},HAS_WORKOUTS:e=>{const{normalize:t}=e;return t(["workouts exist"])},IMAGE:e=>{const{normalize:t}=e;return t(["Image"])},LABEL:e=>{const{normalize:t}=e;return t(["Label"])}},TITLE:e=>{const{normalize:t}=e;return t(["Sports administration"])}},UPDATE_APPLICATION_DESCRIPTION:e=>{const{normalize:t}=e;return t(["Update application configuration (maximum number of registered users, maximum files size)."])},USER:e=>{const{normalize:t,plural:n}=e;return n([t(["user"]),t(["users"])])},USERS:{TABLE:{ADD_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Add admin rights"])},REMOVE_ADMIN_RIGHTS:e=>{const{normalize:t}=e;return t(["Remove admin rights"])}},SELECTS:{ORDER_BY:{ADMIN:e=>{const{normalize:t}=e;return t(["admin status"])},CREATED_AT:e=>{const{normalize:t}=e;return t(["registration date"])},USERNAME:e=>{const{normalize:t}=e;return t(["username"])},WORKOUTS_COUNT:e=>{const{normalize:t}=e;return t(["workout count"])}}}}},o={ERROR:{UNKNOWN:e=>{const{normalize:t}=e;return t(["Error. Please try again or contact the administrator."])},"email: valid email must be provided":e=>{const{normalize:t}=e;return t(["Email: valid email must be provided."])},"error on getting configuration":e=>{const{normalize:t}=e;return t(["Error on getting configuration."])},"error when updating configuration":e=>{const{normalize:t}=e;return t(["Error when updating configuration"])},"error, please try again or contact the administrator":e=>{const{normalize:t}=e;return t(["Error, please try again or contact the administrator."])},"error, registration is disabled":e=>{const{normalize:t}=e;return t(["Error, registration is disabled."])},"file extension not allowed":e=>{const{normalize:t}=e;return t(["File extension not allowed."])},"file size is greater than the allowed size":e=>{const{normalize:t}=e;return t(["File size is greater than the allowed size."])},"invalid credentials":e=>{const{normalize:t}=e;return t(["Invalid credentials."])},"invalid payload":e=>{const{normalize:t}=e;return t(["Provided data are invalid."])},"invalid token, please log in again":e=>{const{normalize:t}=e;return t(["Invalid token, please log in again."])},"invalid token, please request a new token":e=>{const{normalize:t}=e;return t(["Invalid token, please log in again."])},"Network Error":e=>{const{normalize:t}=e;return t(["Network Error."])},"no file part":e=>{const{normalize:t}=e;return t(["No file provided."])},"no selected file":e=>{const{normalize:t}=e;return t(["No selected file."])},"password: password and password confirmation do not match":e=>{const{normalize:t}=e;return t(["Password: password and password confirmation don't match."])},"provide a valid auth token":e=>{const{normalize:t}=e;return t(["Provide a valid auth token."])},"password: 8 characters required":e=>{const{normalize:t}=e;return t(["Password: 8 characters required."])},"sorry, that user already exists":e=>{const{normalize:t}=e;return t(["Sorry, that user already exists."])},"sport does not exist":e=>{const{normalize:t}=e;return t(["Sport does not exist."])},"signature expired, please log in again":e=>{const{normalize:t}=e;return t(["Signature expired. Please log in again."])},"successfully registered":e=>{const{normalize:t}=e;return t(["Successfully registered."])},"user does not exist":e=>{const{normalize:t}=e;return t(["User does not exist."])},"username: 3 to 12 characters required":e=>{const{normalize:t}=e;return t(["Username: 3 to 12 characters required."])},"you can not delete your account, no other user has admin rights":e=>{const{normalize:t}=e;return t(["You can not delete your account, no other user has admin rights."])},"you do not have permissions":e=>{const{normalize:t}=e;return t(["You do not have permissions."])}},PAGINATION:{PREVIOUS:e=>{const{normalize:t}=e;return t(["previous"])},NEXT:e=>{const{normalize:t}=e;return t(["next"])}}},c={BACK:e=>{const{normalize:t}=e;return t(["Back"])},CANCEL:e=>{const{normalize:t}=e;return t(["Cancel"])},DELETE_MY_ACCOUNT:e=>{const{normalize:t}=e;return t(["Delete my account"])},DISABLE:e=>{const{normalize:t}=e;return t(["Disable"])},EDIT:e=>{const{normalize:t}=e;return t(["Edit"])},ENABLE:e=>{const{normalize:t}=e;return t(["Enable"])},FILTER:e=>{const{normalize:t}=e;return t(["Filter"])},LOGIN:e=>{const{normalize:t}=e;return t(["Log in"])},NO:e=>{const{normalize:t}=e;return t(["No"])},REGISTER:e=>{const{normalize:t}=e;return t(["Register"])},SUBMIT:e=>{const{normalize:t}=e;return t(["Submit"])},YES:e=>{const{normalize:t}=e;return t(["Yes"])}},a={CONFIRMATION:e=>{const{normalize:t}=e;return t(["Confirmation"])},DAY:e=>{const{normalize:t,plural:n}=e;return n([t(["day"]),t(["days"])])},HOME:e=>{const{normalize:t}=e;return t(["Home"])},HERE:e=>{const{normalize:t}=e;return t(["here"])},SELECTS:{ORDER_BY:{LABEL:e=>{const{normalize:t}=e;return t(["order by"])}},ORDER:{LABEL:e=>{const{normalize:t}=e;return t(["sort"])},ASC:e=>{const{normalize:t}=e;return t(["ascending"])},DESC:e=>{const{normalize:t}=e;return t(["descending"])}},PER_PAGE:{LABEL:e=>{const{normalize:t}=e;return t(["par page"])}}},TOTAL:e=>{const{normalize:t}=e;return t(["Total"])}},i={DASHBOARD:e=>{const{normalize:t}=e;return t(["Dashboard"])},THIS_MONTH:e=>{const{normalize:t}=e;return t(["This month"])}},s={UNKNOWN:e=>{const{normalize:t}=e;return t(["Error. Please try again or contact the administrator."])},APP_ERROR:e=>{const{normalize:t}=e;return t(["The application seems encounter some issues.
Please try later or contact the administrator."])},NOT_FOUND:{PAGE:e=>{const{normalize:t}=e;return t(["Page not found"])},WORKOUT:e=>{const{normalize:t}=e;return t(["Workout not found"])}}},l={"Cycling (Sport)":{LABEL:e=>{const{normalize:t}=e;return t(["Cycling (Sport)"])}},"Cycling (Transport)":{LABEL:e=>{const{normalize:t}=e;return t(["Cycling (Transport)"])}},Hiking:{LABEL:e=>{const{normalize:t}=e;return t(["Hiking"])}},"Mountain Biking":{LABEL:e=>{const{normalize:t}=e;return t(["Mountain Biking"])}},"Mountain Biking (Electric)":{LABEL:e=>{const{normalize:t}=e;return t(["Mountain Biking (Electric)"])}},Rowing:{LABEL:e=>{const{normalize:t}=e;return t(["Rowing"])}},Running:{LABEL:e=>{const{normalize:t}=e;return t(["Running"])}},"Skiing (Alpine)":{LABEL:e=>{const{normalize:t}=e;return t(["Skiing (Alpine)"])}},"Skiing (Cross Country)":{LABEL:e=>{const{normalize:t}=e;return t(["Skiing (Cross Country)"])}},Trail:{LABEL:e=>{const{normalize:t}=e;return t(["Trail"])}},Walking:{LABEL:e=>{const{normalize:t}=e;return t(["Walking"])}}},u={STATISTICS:e=>{const{normalize:t}=e;return t(["Statistics"])},TIME_FRAMES:{week:e=>{const{normalize:t}=e;return t(["week"])},month:e=>{const{normalize:t}=e;return t(["month"])},year:e=>{const{normalize:t}=e;return t(["year"])}}},d={ADMIN:e=>{const{normalize:t}=e;return t(["Admin"])},ALREADY_HAVE_ACCOUNT:e=>{const{normalize:t}=e;return t(["Already have an account?"])},CONFIRM_ACCOUNT_DELETION:e=>{const{normalize:t}=e;return t(["Are you sure you want to delete your account? All data will be deleted, this cannot be undone"])},EMAIL:e=>{const{normalize:t}=e;return t(["Email"])},ENTER_EMAIL:e=>{const{normalize:t}=e;return t(["Enter an email address"])},ENTER_PASSWORD:e=>{const{normalize:t}=e;return t(["Enter a password"])},ENTER_PASSWORD_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Confirm the password"])},INVALID_TOKEN:e=>{const{normalize:t}=e;return t(["Invalid token, please request a new password reset."])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Language"])},LOGIN:e=>{const{normalize:t}=e;return t(["Login"])},LOGOUT:e=>{const{normalize:t}=e;return t(["Logout"])},PASSWORD:e=>{const{normalize:t}=e;return t(["Password"])},PASSWORD_CONFIRM:e=>{const{normalize:t}=e;return t(["Confirm Password"])},PASSWORD_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Password confirmation"])},PASSWORD_FORGOTTEN:e=>{const{normalize:t}=e;return t(["Forgot password?"])},PASSWORD_RESET:e=>{const{normalize:t}=e;return t(["Password reset"])},PASSWORD_SENT_EMAIL_TEXT:e=>{const{normalize:t}=e;return t(["Check your email. If your address is in our database, you'll received an email with a link to reset your password."])},PASSWORD_UPDATED:e=>{const{normalize:t,interpolate:n,list:r}=e;return t(["Your password have been updated. Click ",n(r(0))," to log in."])},PROFILE:{BACK_TO_PROFILE:e=>{const{normalize:t}=e;return t(["Back to profile"])},BIO:e=>{const{normalize:t}=e;return t(["Bio"])},BIRTH_DATE:e=>{const{normalize:t}=e;return t(["Birth date"])},EDIT:e=>{const{normalize:t}=e;return t(["Edit profile"])},EDIT_PREFERENCES:e=>{const{normalize:t}=e;return t(["Edit preferences"])},FIRST_NAME:e=>{const{normalize:t}=e;return t(["First name"])},FIRST_DAY_OF_WEEK:e=>{const{normalize:t}=e;return t(["First day of week"])},LANGUAGE:e=>{const{normalize:t}=e;return t(["Language"])},LAST_NAME:e=>{const{normalize:t}=e;return t(["Last name"])},LOCATION:e=>{const{normalize:t}=e;return t(["Location"])},MONDAY:e=>{const{normalize:t}=e;return t(["Monday"])},PICTURE:e=>{const{normalize:t}=e;return t(["Picture"])},PICTURE_EDITION:e=>{const{normalize:t}=e;return t(["Picture edition"])},PICTURE_UPDATE:e=>{const{normalize:t}=e;return t(["Update picture"])},PICTURE_REMOVE:e=>{const{normalize:t}=e;return t(["Remove picture"])},PREFERENCES_EDITION:e=>{const{normalize:t}=e;return t(["Preferences edition"])},PROFILE_EDITION:e=>{const{normalize:t}=e;return t(["Profile edition"])},REGISTRATION_DATE:e=>{const{normalize:t}=e;return t(["Registration date"])},SUNDAY:e=>{const{normalize:t}=e;return t(["Sunday"])},TABS:{PICTURE:e=>{const{normalize:t}=e;return t(["picture"])},PREFERENCES:e=>{const{normalize:t}=e;return t(["preferences"])},PROFILE:e=>{const{normalize:t}=e;return t(["profile"])}},TIMEZONE:e=>{const{normalize:t}=e;return t(["Timezone"])}},REGISTER:e=>{const{normalize:t}=e;return t(["Register"])},REGISTER_DISABLED:e=>{const{normalize:t}=e;return t(["Sorry, registration is disabled."])},RESET_PASSWORD:e=>{const{normalize:t}=e;return t(["Reset your password"])},USER_PICTURE:e=>{const{normalize:t}=e;return t(["user picture"])},USERNAME:e=>{const{normalize:t}=e;return t(["Username"])}},O={ADD_WORKOUT:e=>{const{normalize:t}=e;return t(["Add a workout"])},ANALYSIS:e=>{const{normalize:t}=e;return t(["analysis"])},ASCENT:e=>{const{normalize:t}=e;return t(["ascent"])},AVE_SPEED:e=>{const{normalize:t}=e;return t(["ave. speed"])},AVERAGE_SPEED:e=>{const{normalize:t}=e;return t(["average speed"])},BACK_TO_WORKOUT:e=>{const{normalize:t}=e;return t(["back to workout"])},DATE:e=>{const{normalize:t}=e;return t(["date"])},DESCENT:e=>{const{normalize:t}=e;return t(["descent"])},DISPLAY_FILTERS:e=>{const{normalize:t}=e;return t(["display filters"])},DISTANCE:e=>{const{normalize:t}=e;return t(["distance"])},DURATION:e=>{const{normalize:t}=e;return t(["duration"])},EDIT_WORKOUT:e=>{const{normalize:t}=e;return t(["Edit the workout"])},ELEVATION:e=>{const{normalize:t}=e;return t(["elevation"])},END:e=>{const{normalize:t}=e;return t(["end"])},FROM:e=>{const{normalize:t}=e;return t(["from"])},GPX_FILE:e=>{const{normalize:t}=e;return t([".gpx file"])},HIDE_FILTERS:e=>{const{normalize:t}=e;return t(["hide filters"])},KM:e=>{const{normalize:t}=e;return t(["km"])},LATEST_WORKOUTS:e=>{const{normalize:t}=e;return t(["Latest workouts"])},LOAD_MORE_WORKOUT:e=>{const{normalize:t}=e;return t(["Load more workouts"])},MAX_ALTITUDE:e=>{const{normalize:t}=e;return t(["max. altitude"])},MAX_FILES:e=>{const{normalize:t}=e;return t(["max files"])},MAX_SIZE:e=>{const{normalize:t}=e;return t(["max size"])},MAX_SPEED:e=>{const{normalize:t}=e;return t(["max. speed"])},MIN_ALTITUDE:e=>{const{normalize:t}=e;return t(["min. altitude"])},NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["No next segment"])},NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["Next workout"])},NO_DATA_CLEANING:e=>{const{normalize:t}=e;return t(["data from gpx, without any cleaning"])},NO_FILE_PROVIDED:e=>{const{normalize:t}=e;return t(["No file provided"])},NO_FOLDER:e=>{const{normalize:t}=e;return t(["no folder inside"])},NO_MAP:e=>{const{normalize:t}=e;return t(["No map"])},NO_NEXT_SEGMENT:e=>{const{normalize:t}=e;return t(["No next segment"])},NO_NEXT_WORKOUT:e=>{const{normalize:t}=e;return t(["No next workout"])},NO_NOTES:e=>{const{normalize:t}=e;return t(["No notes"])},NO_PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["No previous segment"])},NO_PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["No previous workout"])},NO_RECORDS:e=>{const{normalize:t}=e;return t(["No records."])},NO_WORKOUTS:e=>{const{normalize:t}=e;return t(["No workouts."])},NOTES:e=>{const{normalize:t}=e;return t(["notes"])},PAUSES:e=>{const{normalize:t}=e;return t(["pauses"])},PREVIOUS_SEGMENT:e=>{const{normalize:t}=e;return t(["Previous segment"])},PREVIOUS_WORKOUT:e=>{const{normalize:t}=e;return t(["Previous workout"])},RECORD:e=>{const{normalize:t,plural:n}=e;return n([t(["record"]),t(["records"])])},RECORD_AS:e=>{const{normalize:t}=e;return t(["Ave. speed"])},RECORD_FD:e=>{const{normalize:t}=e;return t(["Farest distance"])},RECORD_LD:e=>{const{normalize:t}=e;return t(["Longest duration"])},RECORD_MS:e=>{const{normalize:t}=e;return t(["Max. speed"])},REMAINING_CHARS:e=>{const{normalize:t}=e;return t(["remaining characters"])},SEGMENT:e=>{const{normalize:t,plural:n}=e;return n([t(["segment"]),t(["segments"])])},SPEED:e=>{const{normalize:t}=e;return t(["speed"])},SPORT:e=>{const{normalize:t,plural:n}=e;return n([t(["sport"]),t(["sports"])])},START:e=>{const{normalize:t}=e;return t(["start"])},TITLE:e=>{const{normalize:t}=e;return t(["title"])},TO:e=>{const{normalize:t}=e;return t(["to"])},TOTAL_DURATION:e=>{const{normalize:t}=e;return t(["total duration"])},UPLOAD_FIRST_WORKOUT:e=>{const{normalize:t}=e;return t(["Upload one!"])},WEATHER:{HUMIDITY:e=>{const{normalize:t}=e;return t(["humidity"])},TEMPERATURE:e=>{const{normalize:t}=e;return t(["temperature"])},WIND:e=>{const{normalize:t}=e;return t(["wind"])},DARK_SKY:{"clear-day":e=>{const{normalize:t}=e;return t(["clear day"])},"clear-night":e=>{const{normalize:t}=e;return t(["clear night"])},cloudy:e=>{const{normalize:t}=e;return t(["cloudy"])},fog:e=>{const{normalize:t}=e;return t(["fog"])},"partly-cloudy-day":e=>{const{normalize:t}=e;return t(["partly cloudy day"])},"partly-cloudy-night":e=>{const{normalize:t}=e;return t(["partly cloudy night"])},rain:e=>{const{normalize:t}=e;return t(["rain"])},sleet:e=>{const{normalize:t}=e;return t(["sleet"])},snow:e=>{const{normalize:t}=e;return t(["snow"])},wind:e=>{const{normalize:t}=e;return t(["wind"])}}},WITH_GPX:e=>{const{normalize:t}=e;return t(["with .gpx file"])},WITHOUT_GPX:e=>{const{normalize:t}=e;return t(["without .gpx file"])},WORKOUT:e=>{const{normalize:t,plural:n}=e;return n([t(["workout"]),t(["workouts"])])},WORKOUT_DATE:e=>{const{normalize:t}=e;return t(["workout date"])},WORKOUT_DELETION_CONFIRMATION:e=>{const{normalize:t}=e;return t(["Are you sure you want to delete this workout?"])},ZIP_ARCHIVE:e=>{const{normalize:t}=e;return t([".zip file"])},ZIP_ARCHIVE_DESCRIPTION:e=>{const{normalize:t}=e;return t(["or .zip file containing .gpx files"])}};t["default"]={admin:r,api:o,buttons:c,common:a,dashboard:i,error:s,sports:l,statistics:u,user:d,workouts:O}},c364:function(e,t,n){"use strict";n.d(t,"b",(function(){return o})),n.d(t,"a",(function(){return c}));n("b680"),n("99af");var r=["bytes","KB","MB","GB","TB"],o=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=Math.floor(Math.log(e)/Math.log(1024));if(!e)return t?"0 bytes":{size:"0",suffix:"bytes"};var o=(e/Math.pow(1024,n)).toFixed(1),c=r[n];return t?"".concat(o).concat(c):{size:o,suffix:c}},c=function(e){var t=e/1048576;return+t.toFixed(2)}},c46a:function(e,t,n){"use strict";var r=n("7a23"),o={class:"user-picture"},c=["alt","src"],a={key:1,class:"no-picture"},i=Object(r["createElementVNode"])("i",{class:"fa fa-user-circle-o","aria-hidden":"true"},null,-1),s=[i];function l(e,t,n,i,l,u){return Object(r["openBlock"])(),Object(r["createElementBlock"])("div",o,[""!==e.authUserPictureUrl?(Object(r["openBlock"])(),Object(r["createElementBlock"])("img",{key:0,class:"profile-user-img",alt:e.$t("user.USER_PICTURE"),src:e.authUserPictureUrl},null,8,c)):(Object(r["openBlock"])(),Object(r["createElementBlock"])("div",a,s))])}n("99af");var u=n("d257"),d=Object(r["defineComponent"])({name:"UserPicture",props:{user:{type:Object,required:!0}},setup:function(e){return{authUserPictureUrl:Object(r["computed"])((function(){return e.user.picture?"".concat(Object(u["a"])(),"users/").concat(e.user.username,"/picture"):""}))}}}),O=(n("13dc"),n("6b0d")),m=n.n(O);const E=m()(d,[["render",l]]);t["a"]=E},c75e:function(e,t,n){},cabe:function(e,t,n){},cbea:function(e,t,n){"use strict";n("fb41")},cd49:function(e,t,n){"use strict";n.r(t);n("e260"),n("e6cf"),n("cca6"),n("a79d"),n("d3b7"),n("159b"),n("b0c0");var r=n("9b4a"),o=n("d9fa"),c=n("7a23"),a=n("9483");Object(a["a"])("".concat("/","service-worker.js"),{ready:function(){console.log("App is being served from cache by a service worker.\nFor more details, visit https://goo.gl/AFskqB")},registered:function(){console.log("Service worker has been registered.")},cached:function(){console.log("Content has been cached for offline use.")},updatefound:function(){console.log("New content is downloading.")},updated:function(){console.log("New content is available; please refresh.")},offline:function(){console.log("No internet connection found. App is running in offline mode.")},error:function(e){console.error("Error during service worker registration:",e)}});var i=function(e){return Object(c["pushScopeId"])("data-v-317a6409"),e=e(),Object(c["popScopeId"])(),e},s=i((function(){return Object(c["createElementVNode"])("div",{id:"top"},null,-1)})),l={key:0,class:"app-container"},u={class:"app-loading"},d={class:"container scroll"},O=i((function(){return Object(c["createElementVNode"])("i",{class:"fa fa-chevron-up","aria-hidden":"true"},null,-1)})),m=[O];function E(e,t,n,r,o,a){var i=Object(c["resolveComponent"])("NavBar"),O=Object(c["resolveComponent"])("Loader"),E=Object(c["resolveComponent"])("router-view"),p=Object(c["resolveComponent"])("NoConfig"),b=Object(c["resolveComponent"])("Footer");return Object(c["openBlock"])(),Object(c["createElementBlock"])(c["Fragment"],null,[s,Object(c["createVNode"])(i,{onMenuInteraction:e.updateHideScrollBar},null,8,["onMenuInteraction"]),e.appLoading?(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",l,[Object(c["createElementVNode"])("div",u,[Object(c["createVNode"])(O)])])):(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",{key:1,class:Object(c["normalizeClass"])(["app-container",{"hide-scroll":e.hideScrollBar}])},[e.appConfig?(Object(c["openBlock"])(),Object(c["createBlock"])(E,{key:0})):(Object(c["openBlock"])(),Object(c["createBlock"])(p,{key:1}))],2)),Object(c["createElementVNode"])("div",d,[Object(c["createElementVNode"])("div",{class:Object(c["normalizeClass"])(["scroll-button",{"display-button":e.displayScrollButton}]),onClick:t[0]||(t[0]=function(){return e.scrollToTop&&e.scrollToTop.apply(e,arguments)})},m,2)]),e.appConfig?(Object(c["openBlock"])(),Object(c["createBlock"])(b,{key:2,version:e.appConfig?e.appConfig.version:""},null,8,["version"])):Object(c["createCommentVNode"])("",!0)],64)}var p=function(e){return Object(c["pushScopeId"])("data-v-36297652"),e=e(),Object(c["popScopeId"])(),e},b={id:"footer"},T={class:"footer-items"},S={class:"footer-item"},f=p((function(){return Object(c["createElementVNode"])("strong",null,"FitTrackee",-1)})),_=Object(c["createStaticVNode"])('',4);function j(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",b,[Object(c["createElementVNode"])("div",T,[Object(c["createElementVNode"])("div",S,[f,Object(c["createTextVNode"])(" v"+Object(c["toDisplayString"])(e.version),1)]),_])])}var A=Object(c["defineComponent"])({name:"Footer",props:{version:{type:String,required:!0}}}),N=(n("fa79"),n("6b0d")),g=n.n(N);const R=g()(A,[["render",j],["__scopeId","data-v-36297652"]]);var I=R,U=function(e){return Object(c["pushScopeId"])("data-v-9d3d8adc"),e=e(),Object(c["popScopeId"])(),e},v={id:"nav"},h={class:"nav-container"},D={class:"nav-app-name"},C={class:"nav-items-close"},k=U((function(){return Object(c["createElementVNode"])("div",{class:"app-name"},"FitTrackee",-1)})),P={key:0,class:"nav-items-group"},M=U((function(){return Object(c["createElementVNode"])("div",{class:"nav-item nav-separator"},null,-1)})),L={class:"nav-items-user-menu"},z={key:0,class:"nav-items-group"},y={class:"nav-item nav-profile-img"},w={key:1,class:"nav-items-group"},V=U((function(){return Object(c["createElementVNode"])("i",{class:"fa fa-language"},null,-1)}));function B(e,t,n,r,o,a){var i=Object(c["resolveComponent"])("router-link"),s=Object(c["resolveComponent"])("UserPicture"),l=Object(c["resolveComponent"])("Dropdown");return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",v,[Object(c["createElementVNode"])("div",h,[Object(c["createElementVNode"])("div",D,[Object(c["createElementVNode"])("div",{class:"nav-item app-name",onClick:t[0]||(t[0]=function(t){return e.$router.push("/")})}," FitTrackee ")]),Object(c["createElementVNode"])("div",{class:Object(c["normalizeClass"])(["nav-icon-open",{"menu-open":e.isMenuOpen}])},[Object(c["createElementVNode"])("i",{class:"fa fa-bars hamburger-icon",onClick:t[1]||(t[1]=function(t){return e.openMenu()})})],2),Object(c["createElementVNode"])("div",{class:Object(c["normalizeClass"])(["nav-items",{"menu-open":e.isMenuOpen}])},[Object(c["createElementVNode"])("div",C,[k,Object(c["createElementVNode"])("i",{class:Object(c["normalizeClass"])(["fa fa-close close-icon nav-item",{"menu-closed":!e.isMenuOpen}]),onClick:t[2]||(t[2]=function(t){return e.closeMenu()})},null,2)]),Object(c["createElementVNode"])("div",{class:"nav-items-app-menu",onClick:t[3]||(t[3]=function(t){return e.closeMenu()})},[e.isAuthenticated?(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",P,[Object(c["createVNode"])(i,{class:"nav-item",to:"/"},{default:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("dashboard.DASHBOARD")),1)]})),_:1}),Object(c["createVNode"])(i,{class:"nav-item",to:"/workouts"},{default:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.capitalize(e.$t("workouts.WORKOUT",2))),1)]})),_:1}),Object(c["createVNode"])(i,{class:"nav-item",to:"/statistics"},{default:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("statistics.STATISTICS")),1)]})),_:1}),Object(c["createVNode"])(i,{class:"nav-item",to:"/workouts/add"},{default:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("workouts.ADD_WORKOUT")),1)]})),_:1}),e.isAuthenticated&&e.authUser.admin?(Object(c["openBlock"])(),Object(c["createBlock"])(i,{key:0,class:"nav-item",to:"/admin"},{default:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("admin.ADMIN")),1)]})),_:1})):Object(c["createCommentVNode"])("",!0),M])):Object(c["createCommentVNode"])("",!0)]),Object(c["createElementVNode"])("div",L,[e.isAuthenticated?(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",z,[Object(c["createElementVNode"])("div",y,[Object(c["createVNode"])(s,{user:e.authUser},null,8,["user"])]),Object(c["createVNode"])(i,{class:"nav-item",to:"/profile",onClick:e.closeMenu},{default:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.authUser.username),1)]})),_:1},8,["onClick"]),Object(c["createElementVNode"])("div",{class:"nav-item nav-link",onClick:t[4]||(t[4]=function(){return e.logout&&e.logout.apply(e,arguments)})},Object(c["toDisplayString"])(e.$t("user.LOGOUT")),1)])):(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",w,[Object(c["createVNode"])(i,{class:"nav-item",to:"/login",onClick:e.closeMenu},{default:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("user.LOGIN")),1)]})),_:1},8,["onClick"]),Object(c["createVNode"])(i,{class:"nav-item",to:"/register",onClick:e.closeMenu},{default:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("user.REGISTER")),1)]})),_:1},8,["onClick"])])),e.availableLanguages&&e.language?(Object(c["openBlock"])(),Object(c["createBlock"])(l,{key:2,class:"nav-item",options:e.availableLanguages,selected:e.language,onSelected:e.updateLanguage},{default:Object(c["withCtx"])((function(){return[V]})),_:1},8,["options","selected","onSelected"])):Object(c["createCommentVNode"])("",!0)])],2)])])}n("99af"),n("25f0");var G=n("47e2"),x=n("c46a"),F=n("dad5"),W=n("2906"),K=n("d257"),$=(n("d81d"),n("8923")),H=n("d481");n("ddb0"),n("ac1f"),n("466d");function Y(){var e=n("e7b6"),t={};return e.keys().forEach((function(n){var r=n.match(/([A-Za-z0-9-_]+)\./i);if(r&&r.length>1){var o=r[1];t[o]=e(n).default}})),t}var q=Object(G["a"])({legacy:!1,locale:"en",fallbackLocale:"en",globalInjection:!0,messages:Y()}),X={en:$["a"],fr:H["a"]},Z={en:"English",fr:"Français"},Q=q.global.availableLocales,J=Q.map((function(e){return{label:Z[e],value:e}})),ee=Object(c["defineComponent"])({name:"NavBar",components:{UserPicture:x["a"]},emits:["menuInteraction"],setup:function(e,t){var n=t.emit,r=Object(G["b"])(),o=r.locale,a=Object(W["a"])(),i=Object(c["computed"])((function(){return a.getters[F["a"].GETTERS.AUTH_USER_PROFILE]})),s=Object(c["computed"])((function(){return a.getters[F["a"].GETTERS.IS_AUTHENTICATED]})),l=Object(c["computed"])((function(){return s.value&&i.value.picture?"".concat(Object(K["a"])(),"/users/").concat(i.value.username,"/picture?").concat(Date.now()):""})),u=Object(c["computed"])((function(){return a.getters[F["b"].GETTERS.LANGUAGE]})),d=Object(c["ref"])(!1);function O(){d.value=!0,n("menuInteraction",!0)}function m(){d.value=!1,n("menuInteraction",!1)}function E(e){o.value=e.value.toString(),a.commit(F["b"].MUTATIONS.UPDATE_LANG,e.value)}function p(){a.dispatch(F["a"].ACTIONS.LOGOUT)}return{availableLanguages:J,authUser:i,authUserPictureUrl:l,isAuthenticated:s,isMenuOpen:d,language:u,capitalize:c["capitalize"],openMenu:O,closeMenu:m,updateLanguage:E,logout:p}}});n("9242");const te=g()(ee,[["render",B],["__scopeId","data-v-9d3d8adc"]]);var ne=te,re={id:"no-config"},oe={class:"error-page"},ce=Object(c["createStaticVNode"])('
',1),ae=["innerHTML"];function ie(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",re,[Object(c["createElementVNode"])("div",oe,[ce,Object(c["createElementVNode"])("p",{class:"error-message",innerHTML:e.$t("error.APP_ERROR")},null,8,ae)])])}var se=Object(c["defineComponent"])({name:"NoConfig",setup:function(){var e=Object(G["b"])(),t=e.t;return{t:t}}});n("f037");const le=g()(se,[["render",ie],["__scopeId","data-v-01d4a985"]]);var ue=le,de=Object(c["defineComponent"])({name:"App",components:{Footer:I,NavBar:ne,NoConfig:ue},setup:function(){var e=Object(W["a"])(),t=Object(c["computed"])((function(){return e.getters[F["b"].GETTERS.APP_CONFIG]})),n=Object(c["computed"])((function(){return e.getters[F["b"].GETTERS.APP_LOADING]})),r=Object(c["ref"])(!1),o=Object(c["ref"])(!1);function a(e){r.value=e}function i(e){return e.getBoundingClientRect().top=0}function s(){window.onscroll=function(){var e=document.querySelector("#bottom");o.value=null!==e&&i(e)}}function l(){window.scrollTo({top:0,behavior:"smooth"}),setTimeout((function(){o.value=!1}),300)}return Object(c["onBeforeMount"])((function(){return e.dispatch(F["b"].ACTIONS.GET_APPLICATION_CONFIG)})),Object(c["onMounted"])((function(){return s()})),{appConfig:t,appLoading:n,hideScrollBar:r,displayScrollButton:o,scrollToTop:l,updateHideScrollBar:a}}});n("608d");const Oe=g()(de,[["render",E],["__scopeId","data-v-317a6409"]]);var me=Oe,Ee=(n("5319"),n("3ca3"),n("caad"),n("6c02")),pe=function(e){return Object(c["pushScopeId"])("data-v-26175b66"),e=e(),Object(c["popScopeId"])(),e},be={id:"admin-app",class:"admin-card"},Te={for:"max_users"},Se=["disabled"],fe={class:"user-limit-help"},_e={class:"info-box"},je=pe((function(){return Object(c["createElementVNode"])("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)})),Ae={for:"max_single_file_size"},Ne=["disabled"],ge={for:"max_zip_file_size"},Re=["disabled"],Ie={for:"gpx_limit_import"},Ue=["disabled"],ve={key:1,class:"form-buttons"},he={class:"confirm",type:"submit"},De={key:2,class:"form-buttons"};function Ce(e,t,n,r,o,a){var i=Object(c["resolveComponent"])("ErrorMessage"),s=Object(c["resolveComponent"])("Card");return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",be,[Object(c["createVNode"])(s,null,{title:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("admin.APP_CONFIG.TITLE")),1)]})),content:Object(c["withCtx"])((function(){return[Object(c["createElementVNode"])("form",{class:"admin-form",onSubmit:t[7]||(t[7]=Object(c["withModifiers"])((function(){return e.onSubmit&&e.onSubmit.apply(e,arguments)}),["prevent"]))},[Object(c["createElementVNode"])("label",Te,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("admin.APP_CONFIG.MAX_USERS_LABEL"))+": ",1),Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{id:"max_users",name:"max_users",type:"number",min:"0","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.appData.max_users=t}),disabled:!e.edition},null,8,Se),[[c["vModelText"],e.appData.max_users]])]),Object(c["createElementVNode"])("div",fe,[Object(c["createElementVNode"])("span",_e,[je,Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(e.$t("admin.APP_CONFIG.MAX_USERS_HELP")),1)])]),Object(c["createElementVNode"])("label",Ae,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("admin.APP_CONFIG.SINGLE_UPLOAD_MAX_SIZE_LABEL"))+": ",1),Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{id:"max_single_file_size",name:"max_single_file_size",type:"number",step:"0.1",min:"0","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.appData.max_single_file_size=t}),disabled:!e.edition},null,8,Ne),[[c["vModelText"],e.appData.max_single_file_size]])]),Object(c["createElementVNode"])("label",ge,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("admin.APP_CONFIG.ZIP_UPLOAD_MAX_SIZE_LABEL"))+": ",1),Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{id:"max_zip_file_size",name:"max_zip_file_size",type:"number",step:"0.1",min:"0","onUpdate:modelValue":t[2]||(t[2]=function(t){return e.appData.max_zip_file_size=t}),disabled:!e.edition},null,8,Re),[[c["vModelText"],e.appData.max_zip_file_size]])]),Object(c["createElementVNode"])("label",Ie,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("admin.APP_CONFIG.MAX_FILES_IN_ZIP_LABEL"))+": ",1),Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{id:"gpx_limit_import",name:"gpx_limit_import",type:"number",min:"0","onUpdate:modelValue":t[3]||(t[3]=function(t){return e.appData.gpx_limit_import=t}),disabled:!e.edition},null,8,Ue),[[c["vModelText"],e.appData.gpx_limit_import]])]),e.errorMessages?(Object(c["openBlock"])(),Object(c["createBlock"])(i,{key:0,message:e.errorMessages},null,8,["message"])):Object(c["createCommentVNode"])("",!0),e.edition?(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",ve,[Object(c["createElementVNode"])("button",he,Object(c["toDisplayString"])(e.$t("buttons.SUBMIT")),1),Object(c["createElementVNode"])("button",{class:"cancel",onClick:t[4]||(t[4]=Object(c["withModifiers"])((function(){return e.onCancel&&e.onCancel.apply(e,arguments)}),["prevent"]))},Object(c["toDisplayString"])(e.$t("buttons.CANCEL")),1)])):(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",De,[Object(c["createElementVNode"])("button",{class:"confirm",onClick:t[5]||(t[5]=Object(c["withModifiers"])((function(t){return e.$router.push("/admin/application/edit")}),["prevent"]))},Object(c["toDisplayString"])(e.$t("buttons.EDIT")),1),Object(c["createElementVNode"])("button",{class:"cancel",onClick:t[6]||(t[6]=Object(c["withModifiers"])((function(t){return e.$router.push("/admin")}),["prevent"]))},Object(c["toDisplayString"])(e.$t("admin.BACK_TO_ADMIN")),1)]))],32)]})),_:1})])}n("b64b");var ke=n("c364"),Pe=Object(c["defineComponent"])({name:"AdminApplication",props:{appConfig:{type:Object,required:!0},edition:{type:Boolean,default:!1}},setup:function(e){var t=Object(W["a"])(),n=Object(Ee["d"])(),r=Object(c["reactive"])({max_users:0,max_single_file_size:0,max_zip_file_size:0,gpx_limit_import:0}),o=Object(c["computed"])((function(){return t.getters[F["b"].GETTERS.ERROR_MESSAGES]}));function a(e){Object.keys(r).map((function(t){["max_single_file_size","max_zip_file_size"].includes(t)?r[t]=Object(ke["a"])(e[t]):r[t]=e[t]}))}function i(){a(e.appConfig),t.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),n.push("/admin/application")}function s(){var e=Object.assign({},r);e.max_single_file_size*=1048576,e.max_zip_file_size*=1048576,t.dispatch(F["b"].ACTIONS.UPDATE_APPLICATION_CONFIG,e)}return Object(c["onBeforeMount"])((function(){e.appConfig&&a(e.appConfig)})),{appData:r,errorMessages:o,onCancel:i,onSubmit:s}}});n("3853");const Me=g()(Pe,[["render",Ce],["__scopeId","data-v-26175b66"]]);var Le=Me,ze=function(e){return Object(c["pushScopeId"])("data-v-4f30aa64"),e=e(),Object(c["popScopeId"])(),e},ye={id:"admin-menu",class:"center-card"},we={class:"admin-menu description-list"},Ve=ze((function(){return Object(c["createElementVNode"])("br",null,null,-1)})),Be={class:"registration-status"};function Ge(e,t,n,r,o,a){var i=Object(c["resolveComponent"])("AppStatsCards"),s=Object(c["resolveComponent"])("router-link"),l=Object(c["resolveComponent"])("Card");return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",ye,[Object(c["createVNode"])(l,null,{title:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("admin.ADMINISTRATION")),1)]})),content:Object(c["withCtx"])((function(){return[Object(c["createVNode"])(i,{"app-statistics":e.appStatistics},null,8,["app-statistics"]),Object(c["createElementVNode"])("div",we,[Object(c["createElementVNode"])("dl",null,[Object(c["createElementVNode"])("dt",null,[Object(c["createVNode"])(s,{to:"/admin/application"},{default:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("admin.APPLICATION")),1)]})),_:1})]),Object(c["createElementVNode"])("dd",null,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("admin.UPDATE_APPLICATION_DESCRIPTION")),1),Ve,Object(c["createElementVNode"])("span",Be,Object(c["toDisplayString"])(e.$t("admin.REGISTRATION_".concat(e.appConfig.is_registration_enabled?"ENABLED":"DISABLED"))),1)]),Object(c["createElementVNode"])("dt",null,[Object(c["createVNode"])(s,{to:"/admin/sports"},{default:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.capitalize(e.$t("workouts.SPORT",0))),1)]})),_:1})]),Object(c["createElementVNode"])("dd",null,Object(c["toDisplayString"])(e.$t("admin.ENABLE_DISABLE_SPORTS")),1),Object(c["createElementVNode"])("dt",null,[Object(c["createVNode"])(s,{to:"/admin/users"},{default:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.capitalize(e.$t("admin.USER",0))),1)]})),_:1})]),Object(c["createElementVNode"])("dd",null,Object(c["toDisplayString"])(e.$t("admin.ADMIN_RIGHTS_DELETE_USER_ACCOUNT")),1)])])]})),_:1})])}var xe={id:"user-stats"};function Fe(e,t,n,r,o,a){var i=Object(c["resolveComponent"])("StatCard");return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",xe,[Object(c["createVNode"])(i,{icon:"users",value:e.usersCount,text:e.$t("admin.USER",e.usersCount)},null,8,["value","text"]),Object(c["createVNode"])(i,{icon:"tags",value:e.sportsCount,text:e.$t("workouts.SPORT",e.sportsCount)},null,8,["value","text"]),Object(c["createVNode"])(i,{icon:"calendar",value:e.workoutCount,text:e.$t("workouts.WORKOUT",e.workoutCount)},null,8,["value","text"]),Object(c["createVNode"])(i,{icon:"folder-open",value:e.uploadDirSize.size,text:e.uploadDirSize.suffix},null,8,["value","text"])])}var We=n("05d9"),Ke=Object(c["defineComponent"])({name:"UserStatsCards",components:{StatCard:We["a"]},props:{appStatistics:{type:Object,default:function(){return{}}}},setup:function(e){return{uploadDirSize:Object(c["computed"])((function(){return e.appStatistics.uploads_dir_size?Object(ke["b"])(e.appStatistics.uploads_dir_size,!1):{size:0,suffix:"bytes"}})),usersCount:Object(c["computed"])((function(){return e.appStatistics.users?e.appStatistics.users:0})),sportsCount:Object(c["computed"])((function(){return e.appStatistics.sports?e.appStatistics.sports:0})),workoutCount:Object(c["computed"])((function(){return e.appStatistics.workouts?e.appStatistics.workouts:0}))}}});n("a1fe");const $e=g()(Ke,[["render",Fe]]);var He=$e,Ye={class:"card"},qe={class:"card-title"},Xe={class:"card-content"};function Ze(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",Ye,[Object(c["createElementVNode"])("div",qe,[Object(c["renderSlot"])(e.$slots,"title")]),Object(c["createElementVNode"])("div",Xe,[Object(c["renderSlot"])(e.$slots,"content")])])}var Qe=Object(c["defineComponent"])({name:"Card"});n("16c2");const Je=g()(Qe,[["render",Ze]]);var et=Je,tt=Object(c["defineComponent"])({name:"AdminMenu",components:{AppStatsCards:He,Card:et},props:{appConfig:{type:Object,required:!0},appStatistics:{type:Object}},setup:function(){return{capitalize:c["capitalize"]}}});n("4a13");const nt=g()(tt,[["render",Ge],["__scopeId","data-v-4f30aa64"]]);var rt=nt,ot=function(e){return Object(c["pushScopeId"])("data-v-6d930723"),e=e(),Object(c["popScopeId"])(),e},ct={id:"admin-sports",class:"admin-card"},at={class:"responsive-table"},it=ot((function(){return Object(c["createElementVNode"])("th",null,"#",-1)})),st={class:"text-left"},lt={class:"text-left sport-action"},ut=ot((function(){return Object(c["createElementVNode"])("th",null,null,-1)})),dt={class:"center-text"},Ot=ot((function(){return Object(c["createElementVNode"])("span",{class:"cell-heading"},"id",-1)})),mt={class:"cell-heading"},Et={class:"sport-label"},pt={class:"cell-heading"},bt={class:"center-text"},Tt={class:"cell-heading"},St={class:"sport-action"},ft={class:"cell-heading"},_t={class:"action-button"},jt=["onClick"],At={key:0,class:"has-workouts"},Nt=ot((function(){return Object(c["createElementVNode"])("i",{class:"fa fa-warning","aria-hidden":"true"},null,-1)}));function gt(e,t,n,r,o,a){var i=Object(c["resolveComponent"])("SportImage"),s=Object(c["resolveComponent"])("ErrorMessage"),l=Object(c["resolveComponent"])("Card");return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",ct,[Object(c["createVNode"])(l,null,{title:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("admin.SPORTS.TITLE")),1)]})),content:Object(c["withCtx"])((function(){return[Object(c["createElementVNode"])("button",{class:"top-button",onClick:t[0]||(t[0]=Object(c["withModifiers"])((function(t){return e.$router.push("/admin")}),["prevent"]))},Object(c["toDisplayString"])(e.$t("admin.BACK_TO_ADMIN")),1),Object(c["createElementVNode"])("div",at,[Object(c["createElementVNode"])("table",null,[Object(c["createElementVNode"])("thead",null,[Object(c["createElementVNode"])("tr",null,[it,Object(c["createElementVNode"])("th",null,Object(c["toDisplayString"])(e.$t("admin.SPORTS.TABLE.IMAGE")),1),Object(c["createElementVNode"])("th",st,Object(c["toDisplayString"])(e.$t("admin.SPORTS.TABLE.LABEL")),1),Object(c["createElementVNode"])("th",null,Object(c["toDisplayString"])(e.$t("admin.SPORTS.TABLE.ACTIVE")),1),Object(c["createElementVNode"])("th",lt,Object(c["toDisplayString"])(e.$t("admin.ACTION")),1),ut])]),Object(c["createElementVNode"])("tbody",null,[(Object(c["openBlock"])(!0),Object(c["createElementBlock"])(c["Fragment"],null,Object(c["renderList"])(e.translatedSports,(function(t){return Object(c["openBlock"])(),Object(c["createElementBlock"])("tr",{key:t.id},[Object(c["createElementVNode"])("td",dt,[Ot,Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(t.id),1)]),Object(c["createElementVNode"])("td",null,[Object(c["createElementVNode"])("span",mt,Object(c["toDisplayString"])(e.$t("admin.SPORTS.TABLE.IMAGE")),1),Object(c["createVNode"])(i,{title:t.translatedLabel,"sport-label":t.label},null,8,["title","sport-label"])]),Object(c["createElementVNode"])("td",Et,[Object(c["createElementVNode"])("span",pt,Object(c["toDisplayString"])(e.$t("admin.SPORTS.TABLE.LABEL")),1),Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(t.translatedLabel),1)]),Object(c["createElementVNode"])("td",bt,[Object(c["createElementVNode"])("span",Tt,Object(c["toDisplayString"])(e.$t("admin.SPORTS.TABLE.ACTIVE")),1),Object(c["createElementVNode"])("i",{class:Object(c["normalizeClass"])("fa fa".concat(t.is_active?"-check":"","-square-o")),"aria-hidden":"true"},null,2)]),Object(c["createElementVNode"])("td",St,[Object(c["createElementVNode"])("span",ft,Object(c["toDisplayString"])(e.$t("admin.ACTION")),1),Object(c["createElementVNode"])("div",_t,[Object(c["createElementVNode"])("button",{class:Object(c["normalizeClass"])({danger:t.is_active}),onClick:function(n){return e.updateSportStatus(t.id,!t.is_active)}},Object(c["toDisplayString"])(e.$t("buttons.".concat(t.is_active?"DIS":"EN","ABLE"))),11,jt),t.has_workouts?(Object(c["openBlock"])(),Object(c["createElementBlock"])("span",At,[Nt,Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(e.$t("admin.SPORTS.TABLE.HAS_WORKOUTS")),1)])):Object(c["createCommentVNode"])("",!0)])])])})),128))])]),e.errorMessages?(Object(c["openBlock"])(),Object(c["createBlock"])(s,{key:0,message:e.errorMessages},null,8,["message"])):Object(c["createCommentVNode"])("",!0),Object(c["createElementVNode"])("button",{onClick:t[1]||(t[1]=Object(c["withModifiers"])((function(t){return e.$router.push("/admin")}),["prevent"]))},Object(c["toDisplayString"])(e.$t("admin.BACK_TO_ADMIN")),1)])]})),_:1})])}var Rt=n("1119"),It=Object(c["defineComponent"])({name:"AdminSports",setup:function(){var e=Object(G["b"])(),t=e.t,n=Object(W["a"])(),r=Object(c["computed"])((function(){return Object(Rt["d"])(n.getters[F["c"].GETTERS.SPORTS],t)})),o=Object(c["computed"])((function(){return n.getters[F["b"].GETTERS.ERROR_MESSAGES]}));function a(e,t){n.dispatch(F["c"].ACTIONS.UPDATE_SPORTS,{id:e,isActive:t})}return{errorMessages:o,translatedSports:r,updateSportStatus:a}}});n("3214");const Ut=g()(It,[["render",gt],["__scopeId","data-v-6d930723"]]);var vt=Ut,ht=function(e){return Object(c["pushScopeId"])("data-v-eb17bef8"),e=e(),Object(c["popScopeId"])(),e},Dt={id:"admin-users",class:"admin-card"},Ct={class:"responsive-table"},kt=ht((function(){return Object(c["createElementVNode"])("th",null,"#",-1)})),Pt={class:"left-text"},Mt={class:"left-text"},Lt={class:"left-text"},zt={class:"cell-heading"},yt={class:"cell-heading"},wt={class:"cell-heading"},Vt={class:"cell-heading"},Bt={class:"center-text"},Gt={class:"cell-heading"},xt={class:"center-text"},Ft={class:"cell-heading"},Wt={class:"center-text"},Kt={class:"cell-heading"},$t=["disabled","onClick"];function Ht(e,t,n,r,o,a){var i=Object(c["resolveComponent"])("FilterSelects"),s=Object(c["resolveComponent"])("UserPicture"),l=Object(c["resolveComponent"])("router-link"),u=Object(c["resolveComponent"])("Pagination"),d=Object(c["resolveComponent"])("ErrorMessage"),O=Object(c["resolveComponent"])("Card");return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",Dt,[Object(c["createVNode"])(O,null,{title:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.capitalize(e.$t("admin.USER",0))),1)]})),content:Object(c["withCtx"])((function(){return[Object(c["createElementVNode"])("button",{class:"top-button",onClick:t[0]||(t[0]=Object(c["withModifiers"])((function(t){return e.$router.push("/admin")}),["prevent"]))},Object(c["toDisplayString"])(e.$t("admin.BACK_TO_ADMIN")),1),Object(c["createVNode"])(i,{sort:e.sortList,order_by:e.orderByList,query:e.query,message:"admin.USERS.SELECTS.ORDER_BY",onUpdateSelect:e.reloadUsers},null,8,["sort","order_by","query","onUpdateSelect"]),Object(c["createElementVNode"])("div",Ct,[Object(c["createElementVNode"])("table",null,[Object(c["createElementVNode"])("thead",null,[Object(c["createElementVNode"])("tr",null,[kt,Object(c["createElementVNode"])("th",Pt,Object(c["toDisplayString"])(e.$t("user.USERNAME")),1),Object(c["createElementVNode"])("th",Mt,Object(c["toDisplayString"])(e.$t("user.EMAIL")),1),Object(c["createElementVNode"])("th",Lt,Object(c["toDisplayString"])(e.$t("user.PROFILE.REGISTRATION_DATE")),1),Object(c["createElementVNode"])("th",null,Object(c["toDisplayString"])(e.capitalize(e.$t("workouts.WORKOUT",0))),1),Object(c["createElementVNode"])("th",null,Object(c["toDisplayString"])(e.$t("user.ADMIN")),1),Object(c["createElementVNode"])("th",null,Object(c["toDisplayString"])(e.$t("admin.ACTION")),1)])]),Object(c["createElementVNode"])("tbody",null,[(Object(c["openBlock"])(!0),Object(c["createElementBlock"])(c["Fragment"],null,Object(c["renderList"])(e.users,(function(t){return Object(c["openBlock"])(),Object(c["createElementBlock"])("tr",{key:t.username},[Object(c["createElementVNode"])("td",null,[Object(c["createElementVNode"])("span",zt,Object(c["toDisplayString"])(e.$t("user.PROFILE.PICTURE")),1),Object(c["createVNode"])(s,{user:t},null,8,["user"])]),Object(c["createElementVNode"])("td",null,[Object(c["createElementVNode"])("span",yt,Object(c["toDisplayString"])(e.$t("user.USERNAME")),1),Object(c["createVNode"])(l,{to:"/users/".concat(t.username)},{default:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(t.username),1)]})),_:2},1032,["to"])]),Object(c["createElementVNode"])("td",null,[Object(c["createElementVNode"])("span",wt,Object(c["toDisplayString"])(e.$t("user.EMAIL")),1),Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(t.email),1)]),Object(c["createElementVNode"])("td",null,[Object(c["createElementVNode"])("span",Vt,Object(c["toDisplayString"])(e.$t("user.PROFILE.REGISTRATION_DATE")),1),Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(e.format(e.getDateWithTZ(t.created_at,e.authUser.timezone),"dd/MM/yyyy HH:mm")),1)]),Object(c["createElementVNode"])("td",Bt,[Object(c["createElementVNode"])("span",Gt,Object(c["toDisplayString"])(e.capitalize(e.$t("workouts.WORKOUT",0))),1),Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(t.nb_workouts),1)]),Object(c["createElementVNode"])("td",xt,[Object(c["createElementVNode"])("span",Ft,Object(c["toDisplayString"])(e.$t("user.ADMIN")),1),Object(c["createElementVNode"])("i",{class:Object(c["normalizeClass"])("fa fa".concat(t.admin?"-check":"","-square-o")),"aria-hidden":"true"},null,2)]),Object(c["createElementVNode"])("td",Wt,[Object(c["createElementVNode"])("span",Kt,Object(c["toDisplayString"])(e.$t("admin.ACTION")),1),Object(c["createElementVNode"])("button",{class:Object(c["normalizeClass"])({danger:t.admin}),disabled:t.username===e.authUser.username,onClick:function(n){return e.updateUser(t.username,!t.admin)}},Object(c["toDisplayString"])(e.$t("admin.USERS.TABLE.".concat(t.admin?"REMOVE":"ADD","_ADMIN_RIGHTS"))),11,$t)])])})),128))])]),e.pagination.page?(Object(c["openBlock"])(),Object(c["createBlock"])(u,{key:0,path:"/admin/users",pagination:e.pagination,query:e.query},null,8,["pagination","query"])):Object(c["createCommentVNode"])("",!0),e.errorMessages?(Object(c["openBlock"])(),Object(c["createBlock"])(d,{key:1,message:e.errorMessages},null,8,["message"])):Object(c["createCommentVNode"])("",!0),Object(c["createElementVNode"])("button",{onClick:t[1]||(t[1]=Object(c["withModifiers"])((function(t){return e.$router.push("/admin")}),["prevent"]))},Object(c["toDisplayString"])(e.$t("admin.BACK_TO_ADMIN")),1)])]})),_:1})])}var Yt=n("b166"),qt=n("9176"),Xt=n("6d7d"),Zt=n("97e5"),Qt=n("5e65"),Jt=Object(c["defineComponent"])({name:"AdminUsers",components:{FilterSelects:qt["a"],Pagination:Xt["a"],UserPicture:x["a"]},setup:function(){var e=Object(W["a"])(),t=Object(Ee["c"])(),n=Object(Ee["d"])(),r=["admin","created_at","username","workouts_count"],o="created_at",a=Object(c["reactive"])(Object(Zt["a"])(t.query,r,o)),i=Object(c["computed"])((function(){return e.getters[F["a"].GETTERS.AUTH_USER_PROFILE]})),s=Object(c["computed"])((function(){return e.getters[F["e"].GETTERS.USERS]})),l=Object(c["computed"])((function(){return e.getters[F["e"].GETTERS.USERS_PAGINATION]})),u=Object(c["computed"])((function(){return e.getters[F["b"].GETTERS.ERROR_MESSAGES]}));function d(t){e.dispatch(F["e"].ACTIONS.GET_USERS,t)}function O(t,n){e.dispatch(F["e"].ACTIONS.UPDATE_USER,{username:t,admin:n})}function m(e,t){a[e]=t,"per_page"===e&&(a.page=1),n.push({path:"/admin/users",query:a})}return Object(c["onBeforeMount"])((function(){return d(a)})),Object(c["watch"])((function(){return t.query}),(function(e){a=Object(Zt["a"])(e,r,o,{query:a}),d(a)})),Object(c["onUnmounted"])((function(){e.dispatch(F["e"].ACTIONS.EMPTY_USERS)})),{authUser:i,errorMessages:u,orderByList:r,pagination:l,query:a,sortList:Zt["c"],users:s,capitalize:c["capitalize"],format:Yt["a"],getDateWithTZ:Qt["c"],reloadUsers:m,updateUser:O}}});n("b986");const en=g()(Jt,[["render",Ht],["__scopeId","data-v-eb17bef8"]]);var tn=en,nn={id:"user-profile"},rn={class:"box"};function on(e,t,n,r,o,a){var i=Object(c["resolveComponent"])("UserHeader"),s=Object(c["resolveComponent"])("UserProfileTabs"),l=Object(c["resolveComponent"])("router-view");return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",nn,[Object(c["createVNode"])(i,{user:e.user},null,8,["user"]),Object(c["createElementVNode"])("div",rn,[Object(c["createVNode"])(s,{tabs:e.tabs,selectedTab:e.tab,edition:!1},null,8,["tabs","selectedTab"]),Object(c["createVNode"])(l,{user:e.user},null,8,["user"])])])}var cn=n("3c44"),an={class:"profile-tabs custom-checkboxes-group"},sn={class:"profile-tabs-checkboxes custom-checkboxes"},ln=["id","name","checked","disabled","onInput"];function un(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",an,[Object(c["createElementVNode"])("div",sn,[(Object(c["openBlock"])(!0),Object(c["createElementBlock"])(c["Fragment"],null,Object(c["renderList"])(e.tabs,(function(t){return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",{class:"profile-tab custom-checkbox",key:t},[Object(c["createElementVNode"])("label",null,[Object(c["createElementVNode"])("input",{type:"radio",id:t,name:t,checked:e.selectedTab===t,disabled:e.disabled,onInput:function(n){return e.$router.push(e.getPath(t))}},null,40,ln),Object(c["createElementVNode"])("span",null,Object(c["toDisplayString"])(e.$t("user.PROFILE.TABS.".concat(t))),1)])])})),128))])])}var dn=Object(c["defineComponent"])({name:"UserProfileTabs",props:{tabs:{type:Object,required:!0},selectedTab:{type:String,required:!0},edition:{type:Boolean,required:!0},disabled:{type:Boolean,default:!1}},setup:function(e){function t(t){switch(t){case"PICTURE":return"/profile/edit/picture";case"PREFERENCES":return"/profile".concat(e.edition?"/edit":"","/preferences");default:case"PROFILE":return"/profile".concat(e.edition?"/edit":"")}}return{getPath:t}}});n("d42e");const On=g()(dn,[["render",un]]);var mn=On,En=Object(c["defineComponent"])({name:"ProfileDisplay",components:{UserHeader:cn["a"],UserProfileTabs:mn},props:{user:{type:Object,required:!0},tab:{type:String,required:!0}},setup:function(){return{tabs:["PROFILE","PREFERENCES"]}}});n("7ffe");const pn=g()(En,[["render",on],["__scopeId","data-v-c81580c0"]]);var bn=pn,Tn=n("71a7"),Sn={id:"user-preferences",class:"description-list"},fn={class:"profile-buttons"};function _n(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",Sn,[Object(c["createElementVNode"])("dl",null,[Object(c["createElementVNode"])("dt",null,Object(c["toDisplayString"])(e.$t("user.PROFILE.LANGUAGE"))+":",1),Object(c["createElementVNode"])("dd",null,Object(c["toDisplayString"])(e.language),1),Object(c["createElementVNode"])("dt",null,Object(c["toDisplayString"])(e.$t("user.PROFILE.TIMEZONE"))+":",1),Object(c["createElementVNode"])("dd",null,Object(c["toDisplayString"])(e.timezone),1),Object(c["createElementVNode"])("dt",null,Object(c["toDisplayString"])(e.$t("user.PROFILE.FIRST_DAY_OF_WEEK"))+":",1),Object(c["createElementVNode"])("dd",null,Object(c["toDisplayString"])(e.$t("user.PROFILE.".concat(e.fistDayOfWeek))),1)]),Object(c["createElementVNode"])("div",fn,[Object(c["createElementVNode"])("button",{onClick:t[0]||(t[0]=function(t){return e.$router.push("/profile/edit/preferences")})},Object(c["toDisplayString"])(e.$t("user.PROFILE.EDIT_PREFERENCES")),1),Object(c["createElementVNode"])("button",{onClick:t[1]||(t[1]=function(t){return e.$router.push("/")})},Object(c["toDisplayString"])(e.$t("common.HOME")),1)])])}var jn=Object(c["defineComponent"])({name:"UserPreferences",props:{user:{type:Object,required:!0}},setup:function(e){var t=Object(c["computed"])((function(){return e.user.language?Z[e.user.language]:Z["en"]})),n=Object(c["computed"])((function(){return e.user.weekm?"MONDAY":"SUNDAY"})),r=Object(c["computed"])((function(){return e.user.timezone?e.user.timezone:"Europe/Paris"}));return{fistDayOfWeek:n,language:t,timezone:r}}});n("cbea");const An=g()(jn,[["render",_n],["__scopeId","data-v-39667dbe"]]);var Nn=An,gn={id:"user-profile-edition",class:"center-card"};function Rn(e,t,n,r,o,a){var i=Object(c["resolveComponent"])("UserProfileTabs"),s=Object(c["resolveComponent"])("router-view"),l=Object(c["resolveComponent"])("Card");return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",gn,[Object(c["createVNode"])(l,null,{title:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("user.PROFILE.".concat(e.tab,"_EDITION"))),1)]})),content:Object(c["withCtx"])((function(){return[Object(c["createVNode"])(i,{tabs:e.tabs,selectedTab:e.tab,edition:!0,disabled:e.loading},null,8,["tabs","selectedTab","disabled"]),Object(c["createVNode"])(s,{user:e.user},null,8,["user"])]})),_:1})])}var In=Object(c["defineComponent"])({name:"ProfileEdition",components:{UserProfileTabs:mn},props:{user:{type:Object,required:!0},tab:{type:String,required:!0}},setup:function(){var e=Object(W["a"])();return{loading:Object(c["computed"])((function(){return e.getters[F["a"].GETTERS.USER_LOADING]})),tabs:["PROFILE","PICTURE","PREFERENCES"]}}});const Un=g()(In,[["render",Rn]]);var vn=Un,hn={id:"user-infos-edition"},Dn={class:"profile-form form-box"},Cn={class:"form-items",for:"email"},kn=["value"],Pn={class:"form-items",for:"registrationDate"},Mn=["value"],Ln={class:"form-items",for:"password"},zn=["disabled"],yn={class:"form-items",for:"passwordConfirmation"},wn=["disabled"],Vn=Object(c["createElementVNode"])("hr",null,null,-1),Bn={class:"form-items",for:"first_name"},Gn=["disabled"],xn={class:"form-items",for:"last_name"},Fn={class:"form-items",for:"birth_date"},Wn=["disabled"],Kn={class:"form-items",for:"location"},$n=["disabled"],Hn={class:"form-items"},Yn={class:"form-buttons"},qn={class:"confirm",type:"submit"};function Xn(e,t,n,r,o,a){var i=Object(c["resolveComponent"])("Modal"),s=Object(c["resolveComponent"])("ErrorMessage"),l=Object(c["resolveComponent"])("CustomTextArea");return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",hn,[e.displayModal?(Object(c["openBlock"])(),Object(c["createBlock"])(i,{key:0,title:e.$t("common.CONFIRMATION"),message:e.$t("user.CONFIRM_ACCOUNT_DELETION"),onConfirmAction:t[0]||(t[0]=function(t){return e.deleteAccount(e.user.username)}),onCancelAction:t[1]||(t[1]=function(t){return e.updateDisplayModal(!1)})},null,8,["title","message"])):Object(c["createCommentVNode"])("",!0),Object(c["createElementVNode"])("div",Dn,[e.errorMessages?(Object(c["openBlock"])(),Object(c["createBlock"])(s,{key:0,message:e.errorMessages},null,8,["message"])):Object(c["createCommentVNode"])("",!0),Object(c["createElementVNode"])("form",{onSubmit:t[10]||(t[10]=Object(c["withModifiers"])((function(){return e.updateProfile&&e.updateProfile.apply(e,arguments)}),["prevent"]))},[Object(c["createElementVNode"])("label",Cn,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("user.EMAIL"))+" ",1),Object(c["createElementVNode"])("input",{id:"email",value:e.user.email,disabled:""},null,8,kn)]),Object(c["createElementVNode"])("label",Pn,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("user.PROFILE.REGISTRATION_DATE"))+" ",1),Object(c["createElementVNode"])("input",{id:"registrationDate",value:e.registrationDate,disabled:""},null,8,Mn)]),Object(c["createElementVNode"])("label",Ln,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("user.PASSWORD"))+" ",1),Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{id:"password",type:"password","onUpdate:modelValue":t[2]||(t[2]=function(t){return e.userForm.password=t}),disabled:e.loading},null,8,zn),[[c["vModelText"],e.userForm.password]])]),Object(c["createElementVNode"])("label",yn,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("user.PASSWORD_CONFIRMATION"))+" ",1),Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{id:"passwordConfirmation",type:"password","onUpdate:modelValue":t[3]||(t[3]=function(t){return e.userForm.password_conf=t}),disabled:e.loading},null,8,wn),[[c["vModelText"],e.userForm.password_conf]])]),Vn,Object(c["createElementVNode"])("label",Bn,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("user.PROFILE.FIRST_NAME"))+" ",1),Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{id:"first_name","onUpdate:modelValue":t[4]||(t[4]=function(t){return e.userForm.first_name=t}),disabled:e.loading},null,8,Gn),[[c["vModelText"],e.userForm.first_name]])]),Object(c["createElementVNode"])("label",xn,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("user.PROFILE.LAST_NAME"))+" ",1),Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{id:"last_name","onUpdate:modelValue":t[5]||(t[5]=function(t){return e.userForm.last_name=t})},null,512),[[c["vModelText"],e.userForm.last_name]])]),Object(c["createElementVNode"])("label",Fn,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("user.PROFILE.BIRTH_DATE"))+" ",1),Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{id:"birth_date",type:"date",class:"birth-date","onUpdate:modelValue":t[6]||(t[6]=function(t){return e.userForm.birth_date=t}),disabled:e.loading},null,8,Wn),[[c["vModelText"],e.userForm.birth_date]])]),Object(c["createElementVNode"])("label",Kn,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("user.PROFILE.LOCATION"))+" ",1),Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{id:"location","onUpdate:modelValue":t[7]||(t[7]=function(t){return e.userForm.location=t}),disabled:e.loading},null,8,$n),[[c["vModelText"],e.userForm.location]])]),Object(c["createElementVNode"])("label",Hn,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("user.PROFILE.BIO"))+" ",1),Object(c["createVNode"])(l,{name:"bio",charLimit:200,input:e.userForm.bio,disabled:e.loading,onUpdateValue:e.updateBio},null,8,["input","disabled","onUpdateValue"])]),Object(c["createElementVNode"])("div",Yn,[Object(c["createElementVNode"])("button",qn,Object(c["toDisplayString"])(e.$t("buttons.SUBMIT")),1),Object(c["createElementVNode"])("button",{class:"cancel",onClick:t[8]||(t[8]=Object(c["withModifiers"])((function(t){return e.$router.push("/profile")}),["prevent"]))},Object(c["toDisplayString"])(e.$t("buttons.CANCEL")),1),Object(c["createElementVNode"])("button",{class:"danger",onClick:t[9]||(t[9]=Object(c["withModifiers"])((function(t){return e.updateDisplayModal(!0)}),["prevent"]))},Object(c["toDisplayString"])(e.$t("buttons.DELETE_MY_ACCOUNT")),1)])],32)])])}var Zn=Object(c["defineComponent"])({name:"UserInfosEdition",props:{user:{type:Object,required:!0}},setup:function(e){var t=Object(W["a"])(),n=Object(c["reactive"])({password:"",password_conf:"",first_name:"",last_name:"",birth_date:"",location:"",bio:""}),r=Object(c["computed"])((function(){return e.user.created_at?Object(Yt["a"])(new Date(e.user.created_at),"dd/MM/yyyy HH:mm"):""})),o=Object(c["computed"])((function(){return t.getters[F["a"].GETTERS.USER_LOADING]})),a=Object(c["computed"])((function(){return t.getters[F["b"].GETTERS.ERROR_MESSAGES]})),i=Object(c["ref"])(!1);function s(e){n.first_name=e.first_name?e.first_name:"",n.last_name=e.last_name?e.last_name:"",n.birth_date=e.birth_date?Object(Yt["a"])(new Date(e.birth_date),"yyyy-MM-dd"):"",n.location=e.location?e.location:"",n.bio=e.bio?e.bio:""}function l(e){n.bio=e}function u(){t.dispatch(F["a"].ACTIONS.UPDATE_USER_PROFILE,n)}function d(e){i.value=e}function O(e){t.dispatch(F["a"].ACTIONS.DELETE_ACCOUNT,{username:e})}return Object(c["onMounted"])((function(){e.user&&s(e.user)})),{displayModal:i,errorMessages:a,loading:o,registrationDate:r,userForm:n,deleteAccount:O,updateBio:l,updateDisplayModal:d,updateProfile:u}}});n("57ba");const Qn=g()(Zn,[["render",Xn]]);var Jn=Qn,er=function(e){return Object(c["pushScopeId"])("data-v-0ea4550a"),e=e(),Object(c["popScopeId"])(),e},tr={id:"user-picture-edition"},nr={class:"user-picture-form"},rr={class:"picture-help"},or={class:"info-box"},cr=er((function(){return Object(c["createElementVNode"])("i",{class:"fa fa-info-circle","aria-hidden":"true"},null,-1)})),ar={class:"picture-buttons"},ir=["disabled"];function sr(e,t,n,r,o,a){var i=Object(c["resolveComponent"])("ErrorMessage"),s=Object(c["resolveComponent"])("UserPicture");return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",tr,[Object(c["createElementVNode"])("div",nr,[e.errorMessages?(Object(c["openBlock"])(),Object(c["createBlock"])(i,{key:0,message:e.errorMessages},null,8,["message"])):Object(c["createCommentVNode"])("",!0),Object(c["createVNode"])(s,{user:e.user},null,8,["user"]),Object(c["createElementVNode"])("form",{onSubmit:t[3]||(t[3]=Object(c["withModifiers"])((function(){return e.updateUserPicture&&e.updateUserPicture.apply(e,arguments)}),["prevent"]))},[Object(c["createElementVNode"])("input",{type:"file",name:"picture",accept:".png,.jpg,.gif",onInput:t[0]||(t[0]=function(){return e.updatePictureFile&&e.updatePictureFile.apply(e,arguments)})},null,32),Object(c["createElementVNode"])("div",rr,[Object(c["createElementVNode"])("span",or,[cr,Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(e.$t("workouts.MAX_SIZE"))+": "+Object(c["toDisplayString"])(e.fileSizeLimit),1)])]),Object(c["createElementVNode"])("div",ar,[Object(c["createElementVNode"])("button",{type:"submit",disabled:!e.pictureFile},Object(c["toDisplayString"])(e.$t("user.PROFILE.PICTURE_UPDATE")),9,ir),e.user.picture?(Object(c["openBlock"])(),Object(c["createElementBlock"])("button",{key:0,class:"danger",onClick:t[1]||(t[1]=function(){return e.deleteUserPicture&&e.deleteUserPicture.apply(e,arguments)})},Object(c["toDisplayString"])(e.$t("user.PROFILE.PICTURE_REMOVE")),1)):Object(c["createCommentVNode"])("",!0),Object(c["createElementVNode"])("button",{class:"cancel",onClick:t[2]||(t[2]=function(t){return e.$router.push("/profile")})},Object(c["toDisplayString"])(e.$t("user.PROFILE.BACK_TO_PROFILE")),1)])],32)])])}var lr=Object(c["defineComponent"])({name:"UserPictureEdition",components:{UserPicture:x["a"]},props:{user:{type:Object,required:!0}},setup:function(){var e=Object(W["a"])(),t=Object(c["computed"])((function(){return e.getters[F["b"].GETTERS.ERROR_MESSAGES]})),n=Object(c["computed"])((function(){return e.getters[F["b"].GETTERS.APP_CONFIG]})),r=n.value.max_single_file_size?Object(ke["b"])(n.value.max_single_file_size):"",o=Object(c["ref"])(null);function a(){e.dispatch(F["a"].ACTIONS.DELETE_PICTURE)}function i(e){e.target.files&&(o.value=e.target.files[0])}function s(){o.value&&e.dispatch(F["a"].ACTIONS.UPDATE_USER_PICTURE,{picture:o.value})}return{errorMessages:t,fileSizeLimit:r,pictureFile:o,deleteUserPicture:a,updateUserPicture:s,updatePictureFile:i}}});n("21a0");const ur=g()(lr,[["render",sr],["__scopeId","data-v-0ea4550a"]]);var dr=ur,Or={id:"user-preferences-edition"},mr={class:"profile-form form-box"},Er={class:"form-items"},pr=["disabled"],br=["value"],Tr={class:"form-items",for:"timezone"},Sr=["disabled"],fr={class:"form-items"},_r=["disabled"],jr=["value"],Ar={class:"form-buttons"},Nr={class:"confirm",type:"submit"};function gr(e,t,n,r,o,a){var i=Object(c["resolveComponent"])("ErrorMessage");return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",Or,[Object(c["createElementVNode"])("div",mr,[e.errorMessages?(Object(c["openBlock"])(),Object(c["createBlock"])(i,{key:0,message:e.errorMessages},null,8,["message"])):Object(c["createCommentVNode"])("",!0),Object(c["createElementVNode"])("form",{onSubmit:t[4]||(t[4]=Object(c["withModifiers"])((function(){return e.updateProfile&&e.updateProfile.apply(e,arguments)}),["prevent"]))},[Object(c["createElementVNode"])("label",Er,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("user.PROFILE.LANGUAGE"))+" ",1),Object(c["withDirectives"])(Object(c["createElementVNode"])("select",{id:"language","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.userForm.language=t}),disabled:e.loading},[(Object(c["openBlock"])(!0),Object(c["createElementBlock"])(c["Fragment"],null,Object(c["renderList"])(e.availableLanguages,(function(e){return Object(c["openBlock"])(),Object(c["createElementBlock"])("option",{value:e.value,key:e.value},Object(c["toDisplayString"])(e.label),9,br)})),128))],8,pr),[[c["vModelSelect"],e.userForm.language]])]),Object(c["createElementVNode"])("label",Tr,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("user.PROFILE.TIMEZONE"))+" ",1),Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{id:"timezone","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.userForm.timezone=t}),disabled:e.loading},null,8,Sr),[[c["vModelText"],e.userForm.timezone]])]),Object(c["createElementVNode"])("label",fr,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.$t("user.PROFILE.FIRST_DAY_OF_WEEK"))+" ",1),Object(c["withDirectives"])(Object(c["createElementVNode"])("select",{id:"weekm","onUpdate:modelValue":t[2]||(t[2]=function(t){return e.userForm.weekm=t}),disabled:e.loading},[(Object(c["openBlock"])(!0),Object(c["createElementBlock"])(c["Fragment"],null,Object(c["renderList"])(e.weekStart,(function(t){return Object(c["openBlock"])(),Object(c["createElementBlock"])("option",{value:t.value,key:t.value},Object(c["toDisplayString"])(e.$t("user.PROFILE.".concat(t.label))),9,jr)})),128))],8,_r),[[c["vModelSelect"],e.userForm.weekm]])]),Object(c["createElementVNode"])("div",Ar,[Object(c["createElementVNode"])("button",Nr,Object(c["toDisplayString"])(e.$t("buttons.SUBMIT")),1),Object(c["createElementVNode"])("button",{class:"cancel",onClick:t[3]||(t[3]=Object(c["withModifiers"])((function(t){return e.$router.push("/profile/preferences")}),["prevent"]))},Object(c["toDisplayString"])(e.$t("buttons.CANCEL")),1)])],32)])])}var Rr=Object(c["defineComponent"])({name:"UserPreferencesEdition",props:{user:{type:Object,required:!0}},setup:function(e){var t=Object(W["a"])(),n=Object(c["reactive"])({language:"",timezone:"Europe/Paris",weekm:!1}),r=[{label:"MONDAY",value:!0},{label:"SUNDAY",value:!1}],o=Object(c["computed"])((function(){return t.getters[F["a"].GETTERS.USER_LOADING]})),a=Object(c["computed"])((function(){return t.getters[F["b"].GETTERS.ERROR_MESSAGES]}));function i(e){n.language=e.language?e.language:"en",n.timezone=e.timezone?e.timezone:"Europe/Paris",n.weekm=!!e.weekm&&e.weekm}function s(){t.dispatch(F["a"].ACTIONS.UPDATE_USER_PREFERENCES,n)}return Object(c["onMounted"])((function(){e.user&&i(e.user)})),{availableLanguages:J,errorMessages:a,loading:o,userForm:n,weekStart:r,updateProfile:s}}});const Ir=g()(Rr,[["render",gr]]);var Ur=Ir,vr=n("5502"),hr=n("ade3"),Dr=n("bc3a"),Cr=n.n(Dr),kr=Cr.a.create({baseURL:Object(K["a"])()});kr.interceptors.request.use((function(e){var t=Vo.getters[F["a"].GETTERS.AUTH_TOKEN];if(t){var n="Bearer ".concat(t);e.headers&&e.headers.Authorization!==n&&(e.headers.Authorization="Bearer ".concat(t))}return e}),(function(e){return Promise.reject(e)}));var Pr,Mr,Lr,zr,yr,wr,Vr,Br,Gr,xr,Fr,Wr,Kr,$r,Hr=kr,Yr=Cr.a.create({baseURL:Object(K["a"])()}),qr=Yr,Xr=q.global.locale,Zr=function(e){localStorage.removeItem("authToken"),e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(F["d"].MUTATIONS.EMPTY_USER_STATS),e.commit(F["a"].MUTATIONS.CLEAR_AUTH_USER_TOKEN),e.commit(F["e"].MUTATIONS.UPDATE_USERS,[]),e.commit(F["f"].MUTATIONS.EMPTY_WORKOUTS),e.commit(F["f"].MUTATIONS.EMPTY_WORKOUT),Wo.push("/login")},Qr=(Pr={},Object(hr["a"])(Pr,F["a"].ACTIONS.CHECK_AUTH_USER,(function(e){window.localStorage.authToken&&!e.getters[F["a"].GETTERS.IS_AUTHENTICATED]&&(e.commit(F["a"].MUTATIONS.UPDATE_AUTH_TOKEN,window.localStorage.authToken),e.dispatch(F["a"].ACTIONS.GET_USER_PROFILE))})),Object(hr["a"])(Pr,F["a"].ACTIONS.GET_USER_PROFILE,(function(e){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),Hr.get("auth/profile").then((function(t){"success"===t.data.status?(e.commit(F["a"].MUTATIONS.UPDATE_AUTH_USER_PROFILE,t.data.data),t.data.data.language&&(e.commit(F["b"].MUTATIONS.UPDATE_LANG,t.data.data.language),Xr.value=t.data.data.language),e.dispatch(F["c"].ACTIONS.GET_SPORTS)):(Object(K["b"])(e,null),Zr(e))})).catch((function(t){Object(K["b"])(e,t),Zr(e)}))})),Object(hr["a"])(Pr,F["a"].ACTIONS.LOGIN_OR_REGISTER,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),qr.post("/auth/".concat(t.actionType),t.formData).then((function(n){if("success"===n.data.status){var r=n.data.auth_token;window.localStorage.setItem("authToken",r),e.commit(F["a"].MUTATIONS.UPDATE_AUTH_TOKEN,r),e.dispatch(F["a"].ACTIONS.GET_USER_PROFILE).then((function(){return Wo.push("string"===typeof t.redirectUrl?t.redirectUrl:"/")}))}else Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)}))})),Object(hr["a"])(Pr,F["a"].ACTIONS.LOGOUT,(function(e){Zr(e)})),Object(hr["a"])(Pr,F["a"].ACTIONS.UPDATE_USER_PROFILE,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(F["a"].MUTATIONS.UPDATE_USER_LOADING,!0),Hr.post("auth/profile/edit",t).then((function(t){"success"===t.data.status?(e.commit(F["a"].MUTATIONS.UPDATE_AUTH_USER_PROFILE,t.data.data),Wo.push("/profile")):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)})).finally((function(){return e.commit(F["a"].MUTATIONS.UPDATE_USER_LOADING,!1)}))})),Object(hr["a"])(Pr,F["a"].ACTIONS.UPDATE_USER_PREFERENCES,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(F["a"].MUTATIONS.UPDATE_USER_LOADING,!0),Hr.post("auth/profile/edit/preferences",t).then((function(t){"success"===t.data.status?(e.commit(F["a"].MUTATIONS.UPDATE_AUTH_USER_PROFILE,t.data.data),e.commit(F["b"].MUTATIONS.UPDATE_LANG,t.data.data.language),Xr.value=t.data.data.language,Wo.push("/profile/preferences")):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)})).finally((function(){return e.commit(F["a"].MUTATIONS.UPDATE_USER_LOADING,!1)}))})),Object(hr["a"])(Pr,F["a"].ACTIONS.UPDATE_USER_PICTURE,(function(e,t){if(e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(F["a"].MUTATIONS.UPDATE_USER_LOADING,!0),!t.picture)throw new Error("No file part");var n=new FormData;n.append("file",t.picture),Hr.post("auth/picture",n,{headers:{"content-type":"multipart/form-data"}}).then((function(t){"success"===t.data.status?e.dispatch(F["a"].ACTIONS.GET_USER_PROFILE).then((function(){return Wo.push("/profile")})):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)})).finally((function(){return e.commit(F["a"].MUTATIONS.UPDATE_USER_LOADING,!1)}))})),Object(hr["a"])(Pr,F["a"].ACTIONS.DELETE_ACCOUNT,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),Hr.delete("users/".concat(t.username)).then((function(t){204===t.status?e.dispatch(F["a"].ACTIONS.LOGOUT).then((function(){return Wo.push("/")})):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)}))})),Object(hr["a"])(Pr,F["a"].ACTIONS.DELETE_PICTURE,(function(e){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(F["a"].MUTATIONS.UPDATE_USER_LOADING,!0),Hr.delete("auth/picture").then((function(t){204===t.status?e.dispatch(F["a"].ACTIONS.GET_USER_PROFILE).then((function(){return Wo.push("/profile")})):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)})).finally((function(){return e.commit(F["a"].MUTATIONS.UPDATE_USER_LOADING,!1)}))})),Object(hr["a"])(Pr,F["a"].ACTIONS.SEND_PASSWORD_RESET_REQUEST,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),qr.post("auth/password/reset-request",t).then((function(t){"success"===t.data.status?Wo.push("/password-reset/sent"):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)}))})),Object(hr["a"])(Pr,F["a"].ACTIONS.RESET_USER_PASSWORD,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),qr.post("auth/password/update",t).then((function(t){"success"===t.data.status?Wo.push("/password-reset/password-updated"):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)}))})),Pr),Jr=(Mr={},Object(hr["a"])(Mr,F["a"].GETTERS.AUTH_TOKEN,(function(e){return e.authToken})),Object(hr["a"])(Mr,F["a"].GETTERS.AUTH_USER_PROFILE,(function(e){return e.authUserProfile})),Object(hr["a"])(Mr,F["a"].GETTERS.IS_AUTHENTICATED,(function(e){return null!==e.authToken})),Object(hr["a"])(Mr,F["a"].GETTERS.IS_ADMIN,(function(e){return e.authUserProfile&&e.authUserProfile.admin})),Object(hr["a"])(Mr,F["a"].GETTERS.USER_LOADING,(function(e){return e.loading})),Mr),eo=(Lr={},Object(hr["a"])(Lr,F["a"].MUTATIONS.CLEAR_AUTH_USER_TOKEN,(function(e){e.authToken=null,e.authUserProfile={}})),Object(hr["a"])(Lr,F["a"].MUTATIONS.UPDATE_AUTH_TOKEN,(function(e,t){e.authToken=t})),Object(hr["a"])(Lr,F["a"].MUTATIONS.UPDATE_AUTH_USER_PROFILE,(function(e,t){e.authUserProfile=t})),Object(hr["a"])(Lr,F["a"].MUTATIONS.UPDATE_USER_LOADING,(function(e,t){e.loading=t})),Lr),to={authToken:null,authUserProfile:{},loading:!1},no={state:to,actions:Qr,getters:Jr,mutations:eo},ro=no,oo=(zr={},Object(hr["a"])(zr,F["b"].ACTIONS.GET_APPLICATION_CONFIG,(function(e){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(F["b"].MUTATIONS.UPDATE_APPLICATION_LOADING,!0),Hr.get("config").then((function(t){"success"===t.data.status?e.commit(F["b"].MUTATIONS.UPDATE_APPLICATION_CONFIG,t.data.data):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)})).finally((function(){return e.commit(F["b"].MUTATIONS.UPDATE_APPLICATION_LOADING,!1)}))})),Object(hr["a"])(zr,F["b"].ACTIONS.GET_APPLICATION_STATS,(function(e){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),Hr.get("stats/all").then((function(t){"success"===t.data.status?e.commit(F["b"].MUTATIONS.UPDATE_APPLICATION_STATS,t.data.data):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)}))})),Object(hr["a"])(zr,F["b"].ACTIONS.UPDATE_APPLICATION_CONFIG,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),Hr.patch("config",t).then((function(t){"success"===t.data.status?(e.commit(F["b"].MUTATIONS.UPDATE_APPLICATION_CONFIG,t.data.data),Wo.push("/admin/application")):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)}))})),zr),co=(yr={},Object(hr["a"])(yr,F["b"].GETTERS.APP_CONFIG,(function(e){return e.application.config})),Object(hr["a"])(yr,F["b"].GETTERS.APP_LOADING,(function(e){return e.appLoading})),Object(hr["a"])(yr,F["b"].GETTERS.APP_STATS,(function(e){return e.application.statistics})),Object(hr["a"])(yr,F["b"].GETTERS.ERROR_MESSAGES,(function(e){return e.errorMessages})),Object(hr["a"])(yr,F["b"].GETTERS.LANGUAGE,(function(e){return e.language})),Object(hr["a"])(yr,F["b"].GETTERS.LOCALE,(function(e){return e.locale})),yr),ao=(wr={},Object(hr["a"])(wr,F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES,(function(e){e.errorMessages=null})),Object(hr["a"])(wr,F["b"].MUTATIONS.SET_ERROR_MESSAGES,(function(e,t){e.errorMessages=t})),Object(hr["a"])(wr,F["b"].MUTATIONS.UPDATE_APPLICATION_CONFIG,(function(e,t){e.application.config=t})),Object(hr["a"])(wr,F["b"].MUTATIONS.UPDATE_APPLICATION_LOADING,(function(e,t){e.appLoading=t})),Object(hr["a"])(wr,F["b"].MUTATIONS.UPDATE_APPLICATION_STATS,(function(e,t){e.application.statistics=t})),Object(hr["a"])(wr,F["b"].MUTATIONS.UPDATE_LANG,(function(e,t){e.language=t,e.locale=X[t]})),wr),io={root:!0,language:"en",locale:$["a"],errorMessages:null,application:{},appLoading:!1},so=(Vr={},Object(hr["a"])(Vr,F["c"].ACTIONS.GET_SPORTS,(function(e){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),Hr.get("sports").then((function(t){"success"===t.data.status?e.commit(F["c"].MUTATIONS.SET_SPORTS,t.data.data.sports):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)}))})),Object(hr["a"])(Vr,F["c"].ACTIONS.UPDATE_SPORTS,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),Hr.patch("sports/".concat(t.id),{is_active:t.isActive}).then((function(t){"success"===t.data.status?e.dispatch(F["c"].ACTIONS.GET_SPORTS):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)}))})),Vr),lo=Object(hr["a"])({},F["c"].GETTERS.SPORTS,(function(e){return e.sports})),uo=Object(hr["a"])({},F["c"].MUTATIONS.SET_SPORTS,(function(e,t){e.sports=t})),Oo={sports:[]},mo={state:Oo,actions:so,getters:lo,mutations:uo},Eo=mo,po=Object(hr["a"])({},F["d"].ACTIONS.GET_USER_STATS,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),Hr.get("stats/".concat(t.username,"/").concat(t.filterType),{params:t.params}).then((function(t){"success"===t.data.status?e.commit(F["d"].MUTATIONS.UPDATE_USER_STATS,t.data.data.statistics):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)}))})),bo=Object(hr["a"])({},F["d"].GETTERS.USER_STATS,(function(e){return e.statistics})),To=(Br={},Object(hr["a"])(Br,F["d"].MUTATIONS.UPDATE_USER_STATS,(function(e,t){e.statistics=t})),Object(hr["a"])(Br,F["d"].MUTATIONS.EMPTY_USER_STATS,(function(e){e.statistics={}})),Br),So={statistics:{}},fo={state:So,actions:po,getters:bo,mutations:To},_o=fo,jo=(Gr={},Object(hr["a"])(Gr,F["e"].ACTIONS.EMPTY_USER,(function(e){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(F["e"].MUTATIONS.UPDATE_USER,{})})),Object(hr["a"])(Gr,F["e"].ACTIONS.EMPTY_USERS,(function(e){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(F["e"].MUTATIONS.UPDATE_USERS,[]),e.commit(F["e"].MUTATIONS.UPDATE_USERS_PAGINATION,{})})),Object(hr["a"])(Gr,F["e"].ACTIONS.GET_USER,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(F["e"].MUTATIONS.UPDATE_USERS_LOADING,!0),Hr.get("users/".concat(t)).then((function(t){"success"===t.data.status?e.commit(F["e"].MUTATIONS.UPDATE_USER,t.data.data.users[0]):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)})).finally((function(){return e.commit(F["e"].MUTATIONS.UPDATE_USERS_LOADING,!1)}))})),Object(hr["a"])(Gr,F["e"].ACTIONS.GET_USERS,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(F["e"].MUTATIONS.UPDATE_USERS_LOADING,!0),Hr.get("users",{params:t}).then((function(t){"success"===t.data.status?(e.commit(F["e"].MUTATIONS.UPDATE_USERS,t.data.data.users),e.commit(F["e"].MUTATIONS.UPDATE_USERS_PAGINATION,t.data.pagination)):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)})).finally((function(){return e.commit(F["e"].MUTATIONS.UPDATE_USERS_LOADING,!1)}))})),Object(hr["a"])(Gr,F["e"].ACTIONS.UPDATE_USER,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),Hr.patch("users/".concat(t.username),{admin:t.admin}).then((function(t){"success"===t.data.status?e.commit(F["e"].MUTATIONS.UPDATE_USER_IN_USERS,t.data.data.users[0]):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)})).finally((function(){return e.commit(F["e"].MUTATIONS.UPDATE_USERS_LOADING,!1)}))})),Gr),Ao=(xr={},Object(hr["a"])(xr,F["e"].GETTERS.USER,(function(e){return e.user})),Object(hr["a"])(xr,F["e"].GETTERS.USERS,(function(e){return e.users})),Object(hr["a"])(xr,F["e"].GETTERS.USERS_LOADING,(function(e){return e.loading})),Object(hr["a"])(xr,F["e"].GETTERS.USERS_PAGINATION,(function(e){return e.pagination})),xr),No=(Fr={},Object(hr["a"])(Fr,F["e"].MUTATIONS.UPDATE_USER,(function(e,t){e.user=t})),Object(hr["a"])(Fr,F["e"].MUTATIONS.UPDATE_USER_IN_USERS,(function(e,t){e.users=e.users.map((function(e){return e.username===t.username?t:e}))})),Object(hr["a"])(Fr,F["e"].MUTATIONS.UPDATE_USERS,(function(e,t){e.users=t})),Object(hr["a"])(Fr,F["e"].MUTATIONS.UPDATE_USERS_LOADING,(function(e,t){e.loading=t})),Object(hr["a"])(Fr,F["e"].MUTATIONS.UPDATE_USERS_PAGINATION,(function(e,t){e.pagination=t})),Fr),go={user:{},users:[],loading:!1,pagination:{}},Ro={state:go,actions:jo,getters:Ao,mutations:No},Io=Ro,Uo=n("4870"),vo=function(e,t,n){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),Hr.get("workouts",{params:t}).then((function(t){"success"===t.data.status?(e.commit(F["f"].MUTATIONS[n],t.data.data.workouts),n===Uo["c"]["SET_USER_WORKOUTS"]&&e.commit(F["f"].MUTATIONS.SET_WORKOUTS_PAGINATION,t.data.pagination)):Object(K["b"])(e,null)})).catch((function(t){return Object(K["b"])(e,t)}))},ho=(Wr={},Object(hr["a"])(Wr,F["f"].ACTIONS.GET_CALENDAR_WORKOUTS,(function(e,t){e.commit(F["f"].MUTATIONS.EMPTY_CALENDAR_WORKOUTS),vo(e,t,Uo["c"]["SET_CALENDAR_WORKOUTS"])})),Object(hr["a"])(Wr,F["f"].ACTIONS.GET_USER_WORKOUTS,(function(e,t){vo(e,t,Uo["c"]["SET_USER_WORKOUTS"])})),Object(hr["a"])(Wr,F["f"].ACTIONS.GET_TIMELINE_WORKOUTS,(function(e,t){vo(e,t,Uo["c"]["SET_TIMELINE_WORKOUTS"])})),Object(hr["a"])(Wr,F["f"].ACTIONS.GET_MORE_TIMELINE_WORKOUTS,(function(e,t){vo(e,t,Uo["c"]["ADD_TIMELINE_WORKOUTS"])})),Object(hr["a"])(Wr,F["f"].ACTIONS.GET_WORKOUT_DATA,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(F["f"].MUTATIONS.SET_WORKOUT_LOADING,!0);var n=t.segmentId?"/segment/".concat(t.segmentId):"";Hr.get("workouts/".concat(t.workoutId)).then((function(r){var o=r.data.data.workouts[0];if("success"===r.data.status){if(t.segmentId&&(0===o.segments.length||!o.segments[+t.segmentId-1]))throw new Error("WORKOUT_NOT_FOUND");e.commit(F["f"].MUTATIONS.SET_WORKOUT,r.data.data.workouts[0]),r.data.data.workouts[0].with_gpx&&(Hr.get("workouts/".concat(t.workoutId,"/chart_data").concat(n)).then((function(t){"success"===t.data.status&&e.commit(F["f"].MUTATIONS.SET_WORKOUT_CHART_DATA,t.data.data.chart_data)})),Hr.get("workouts/".concat(t.workoutId,"/gpx").concat(n)).then((function(t){"success"===t.data.status&&e.commit(F["f"].MUTATIONS.SET_WORKOUT_GPX,t.data.data.gpx)})))}else e.commit(F["f"].MUTATIONS.EMPTY_WORKOUT),Object(K["b"])(e,null)})).catch((function(t){e.commit(F["f"].MUTATIONS.EMPTY_WORKOUT),Object(K["b"])(e,t)})).finally((function(){return e.commit(F["f"].MUTATIONS.SET_WORKOUT_LOADING,!1)}))})),Object(hr["a"])(Wr,F["f"].ACTIONS.DELETE_WORKOUT,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(F["f"].MUTATIONS.SET_WORKOUT_LOADING,!0),Hr.delete("workouts/".concat(t.workoutId)).then((function(){e.commit(F["f"].MUTATIONS.EMPTY_WORKOUT),e.dispatch(F["a"].ACTIONS.GET_USER_PROFILE),Wo.push("/")})).catch((function(t){Object(K["b"])(e,t)})).finally((function(){return e.commit(F["f"].MUTATIONS.SET_WORKOUT_LOADING,!1)}))})),Object(hr["a"])(Wr,F["f"].ACTIONS.EDIT_WORKOUT,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(F["f"].MUTATIONS.SET_WORKOUT_LOADING,!0),Hr.patch("workouts/".concat(t.workoutId),t.data).then((function(){e.dispatch(F["a"].ACTIONS.GET_USER_PROFILE),e.dispatch(F["f"].ACTIONS.GET_WORKOUT_DATA,{workoutId:t.workoutId}).then((function(){Wo.push({name:"Workout",params:{workoutId:t.workoutId}})}))})).catch((function(t){Object(K["b"])(e,t)})).finally((function(){return e.commit(F["f"].MUTATIONS.SET_WORKOUT_LOADING,!1)}))})),Object(hr["a"])(Wr,F["f"].ACTIONS.ADD_WORKOUT,(function(e,t){if(e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(F["f"].MUTATIONS.SET_WORKOUT_LOADING,!0),!t.file)throw new Error("No file part");var n=new FormData;n.append("file",t.file),n.append("data",'{"sport_id": '.concat(t.sport_id,', "notes": "').concat(t.notes,'"}')),Hr.post("workouts",n,{headers:{"content-type":"multipart/form-data"}}).then((function(t){if("created"===t.data.status){e.dispatch(F["a"].ACTIONS.GET_USER_PROFILE);var n=t.data.data.workouts[0];Wo.push(1===t.data.data.workouts.length?"/workouts/".concat(n.id):"/")}})).catch((function(t){Object(K["b"])(e,t)})).finally((function(){return e.commit(F["f"].MUTATIONS.SET_WORKOUT_LOADING,!1)}))})),Object(hr["a"])(Wr,F["f"].ACTIONS.ADD_WORKOUT_WITHOUT_GPX,(function(e,t){e.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES),e.commit(F["f"].MUTATIONS.SET_WORKOUT_LOADING,!0),Hr.post("workouts/no_gpx",t).then((function(t){if("created"===t.data.status){e.dispatch(F["a"].ACTIONS.GET_USER_PROFILE);var n=t.data.data.workouts[0];Wo.push("/workouts/".concat(n.id))}})).catch((function(t){Object(K["b"])(e,t)})).finally((function(){return e.commit(F["f"].MUTATIONS.SET_WORKOUT_LOADING,!1)}))})),Wr),Do=(Kr={},Object(hr["a"])(Kr,F["f"].GETTERS.CALENDAR_WORKOUTS,(function(e){return e.calendar_workouts})),Object(hr["a"])(Kr,F["f"].GETTERS.TIMELINE_WORKOUTS,(function(e){return e.timeline_workouts})),Object(hr["a"])(Kr,F["f"].GETTERS.USER_WORKOUTS,(function(e){return e.user_workouts})),Object(hr["a"])(Kr,F["f"].GETTERS.WORKOUT_DATA,(function(e){return e.workoutData})),Object(hr["a"])(Kr,F["f"].GETTERS.WORKOUTS_PAGINATION,(function(e){return e.pagination})),Kr),Co=($r={},Object(hr["a"])($r,F["f"].MUTATIONS.ADD_TIMELINE_WORKOUTS,(function(e,t){e.timeline_workouts=e.timeline_workouts.concat(t)})),Object(hr["a"])($r,F["f"].MUTATIONS.SET_CALENDAR_WORKOUTS,(function(e,t){e.calendar_workouts=t})),Object(hr["a"])($r,F["f"].MUTATIONS.SET_TIMELINE_WORKOUTS,(function(e,t){e.timeline_workouts=t})),Object(hr["a"])($r,F["f"].MUTATIONS.SET_USER_WORKOUTS,(function(e,t){e.user_workouts=t})),Object(hr["a"])($r,F["f"].MUTATIONS.SET_WORKOUTS_PAGINATION,(function(e,t){e.pagination=t})),Object(hr["a"])($r,F["f"].MUTATIONS.SET_WORKOUT,(function(e,t){e.workoutData.workout=t})),Object(hr["a"])($r,F["f"].MUTATIONS.SET_WORKOUT_CHART_DATA,(function(e,t){e.workoutData.chartData=t})),Object(hr["a"])($r,F["f"].MUTATIONS.SET_WORKOUT_GPX,(function(e,t){e.workoutData.gpx=t})),Object(hr["a"])($r,F["f"].MUTATIONS.SET_WORKOUT_LOADING,(function(e,t){e.workoutData.loading=t})),Object(hr["a"])($r,F["f"].MUTATIONS.EMPTY_CALENDAR_WORKOUTS,(function(e){e.calendar_workouts=[]})),Object(hr["a"])($r,F["f"].MUTATIONS.EMPTY_WORKOUTS,(function(e){e.calendar_workouts=[],e.user_workouts=[],e.timeline_workouts=[]})),Object(hr["a"])($r,F["f"].MUTATIONS.EMPTY_WORKOUT,(function(e){e.workoutData={gpx:"",loading:!1,workout:{},chartData:[]}})),$r),ko={calendar_workouts:[],timeline_workouts:[],pagination:{},user_workouts:[],workoutData:{gpx:"",loading:!1,workout:{},chartData:[]}},Po={state:ko,actions:ho,getters:Do,mutations:Co},Mo=Po,Lo={authUserModule:ro,sportsModule:Eo,statsModule:_o,usersModule:Io,workoutsModule:Mo},zo={state:io,actions:oo,getters:co,mutations:ao,modules:Lo},yo=zo,wo=Object(vr["a"])(yo),Vo=wo,Bo=function(e){var t=/(\/profile)(\/edit)*(\/*)/,n=e.replace(t,"").toUpperCase();return""===n?"PROFILE":n.toUpperCase()},Go=[{path:"/",name:"Dashboard",component:function(){return Promise.all([n.e("main~workouts"),n.e("main")]).then(n.bind(null,"7277"))}},{path:"/login",name:"Login",component:function(){return Promise.all([n.e("main~workouts"),n.e("main")]).then(n.bind(null,"d277"))},props:{action:"login"}},{path:"/register",name:"Register",component:function(){return Promise.all([n.e("main~workouts"),n.e("main")]).then(n.bind(null,"d277"))},props:{action:"register"}},{path:"/password-reset/sent",name:"PasswordEmailSent",component:function(){return n.e("reset").then(n.bind(null,"364c"))},props:{action:"request-sent"}},{path:"/password-reset/request",name:"PasswordResetRequest",component:function(){return n.e("reset").then(n.bind(null,"364c"))},props:{action:"reset-request"}},{path:"/password-reset/password-updated",name:"PasswordUpdated",component:function(){return n.e("reset").then(n.bind(null,"364c"))},props:{action:"password-updated"}},{path:"/password-reset",name:"PasswordReset",component:function(){return n.e("reset").then(n.bind(null,"364c"))},props:{action:"reset"}},{path:"/profile",name:"Profile",component:function(){return n.e("profile").then(n.bind(null,"36e8"))},children:[{path:"",name:"UserProfile",component:bn,props:function(e){return{tab:Bo(e.path)}},children:[{path:"",name:"UserInfos",component:Tn["a"]},{path:"preferences",name:"UserPreferences",component:Nn}]},{path:"edit",name:"UserProfileEdition",component:vn,props:function(e){return{tab:Bo(e.path)}},children:[{path:"",name:"UserInfosEdition",component:Jn},{path:"picture",name:"UserPictureEdition",component:dr},{path:"preferences",name:"UserPreferencesEdition",component:Ur}]}]},{path:"/statistics",name:"Statistics",component:function(){return Promise.all([n.e("main~workouts"),n.e("main")]).then(n.bind(null,"ccb2"))}},{path:"/users/:username",name:"User",component:function(){return n.e("profile").then(n.bind(null,"ad3d"))}},{path:"/workouts",name:"Workouts",component:function(){return Promise.all([n.e("main~workouts"),n.e("workouts")]).then(n.bind(null,"0385"))}},{path:"/workouts/:workoutId",name:"Workout",component:function(){return Promise.all([n.e("main~workouts"),n.e("workouts")]).then(n.bind(null,"304a"))},props:{displaySegment:!1}},{path:"/workouts/:workoutId/edit",name:"EditWorkout",component:function(){return Promise.all([n.e("main~workouts"),n.e("workouts")]).then(n.bind(null,"8ee9"))}},{path:"/workouts/:workoutId/segment/:segmentId",name:"WorkoutSegment",component:function(){return Promise.all([n.e("main~workouts"),n.e("workouts")]).then(n.bind(null,"304a"))},props:{displaySegment:!0}},{path:"/workouts/add",name:"AddWorkout",component:function(){return Promise.all([n.e("main~workouts"),n.e("workouts")]).then(n.bind(null,"692d"))}},{path:"/admin",name:"Administration",component:function(){return n.e("admin").then(n.bind(null,"89b3"))},children:[{path:"",name:"AdministrationMenu",component:rt},{path:"application",name:"ApplicationAdministration",component:Le},{path:"application/edit",name:"ApplicationAdministrationEdition",component:Le,props:{edition:!0}},{path:"sports",name:"SportsAdministration",component:vt},{path:"users",name:"UsersAdministration",component:tn}]},{path:"/:pathMatch(.*)*",name:"not-found",component:function(){return Promise.all([n.e("main~workouts"),n.e("main")]).then(n.bind(null,"e19f"))}}],xo=Object(Ee["a"])({history:Object(Ee["b"])("/"),routes:Go}),Fo=["/login","/password-reset","/password-reset/password-updated","/password-reset/request","/password-reset/sent","/register"];xo.beforeEach((function(e,t,n){Vo.dispatch(F["a"].ACTIONS.CHECK_AUTH_USER).then((function(){if(Vo.getters[F["a"].GETTERS.IS_AUTHENTICATED]&&Fo.includes(e.path))return n("/");if(Vo.getters[F["a"].GETTERS.IS_AUTHENTICATED]||Fo.includes(e.path))n();else{var t="/"===e.path?{path:"/login"}:{path:"/login",query:{from:e.fullPath}};n(t)}})).catch((function(e){console.error(e),n()}))}));var Wo=xo,Ko={class:"alert-message"},$o=["innerHTML"];function Ho(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",Ko,[Object(c["createElementVNode"])("div",{innerHTML:e.$t(e.message)},null,8,$o)])}var Yo=Object(c["defineComponent"])({name:"AlertMessage",props:{message:String}});n("f5dfd");const qo=g()(Yo,[["render",Ho],["__scopeId","data-v-f5e8066a"]]);var Xo=qo,Zo={class:"custom-textarea"},Qo=["id","name","maxLenght","disabled"],Jo={class:"remaining-chars"};function ec(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",Zo,[Object(c["withDirectives"])(Object(c["createElementVNode"])("textarea",{id:e.name,name:e.name,maxLenght:e.charLimit,disabled:e.disabled,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.text=t}),onInput:t[1]||(t[1]=function(){return e.updateText&&e.updateText.apply(e,arguments)})},null,40,Qo),[[c["vModelText"],e.text]]),Object(c["createElementVNode"])("div",Jo,Object(c["toDisplayString"])(e.$t("workouts.REMAINING_CHARS"))+": "+Object(c["toDisplayString"])(e.text.length)+"/"+Object(c["toDisplayString"])(e.charLimit),1)])}n("a9e3");var tc=Object(c["defineComponent"])({name:"CustomTextArea",props:{charLimit:{type:Number,default:500},disabled:{type:Boolean,default:!1},input:{type:String,default:""},name:{type:String,required:!0}},emits:["updateValue"],setup:function(e,t){var n=t.emit,r=Object(c["ref"])("");function o(e){n("updateValue",e.target.value)}return Object(c["watch"])((function(){return e.input}),(function(e){r.value=e})),{text:r,updateText:o}}});n("aa0a");const nc=g()(tc,[["render",ec],["__scopeId","data-v-ad3739fc"]]);var rc=nc,oc={class:"dropdown-wrapper"},cc={key:0,class:"dropdown-list"},ac=["onClick"];function ic(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",oc,[Object(c["createElementVNode"])("div",{class:"dropdown-selected",onClick:t[0]||(t[0]=function(){return e.toggleDropdown&&e.toggleDropdown.apply(e,arguments)})},[Object(c["renderSlot"])(e.$slots,"default",{},void 0,!0)]),e.isOpen?(Object(c["openBlock"])(),Object(c["createElementBlock"])("ul",cc,[(Object(c["openBlock"])(!0),Object(c["createElementBlock"])(c["Fragment"],null,Object(c["renderList"])(e.dropdownOptions,(function(t,n){return Object(c["openBlock"])(),Object(c["createElementBlock"])("li",{class:Object(c["normalizeClass"])(["dropdown-item",{selected:t.value===e.selected}]),key:n,onClick:function(n){return e.updateSelected(t)}},Object(c["toDisplayString"])(t.label),11,ac)})),128))])):Object(c["createCommentVNode"])("",!0)])}var sc=Object(c["defineComponent"])({name:"Dropdown",props:{options:{type:Object,required:!0},selected:{type:String,required:!0}},emits:{selected:function(e){return e}},setup:function(e,t){var n=t.emit,r=Object(Ee["c"])(),o=Object(c["ref"])(!1),a=e.options.map((function(e){return e}));function i(){o.value=!o.value}function s(e){n("selected",e),o.value=!1}return Object(c["watch"])((function(){return r.path}),(function(){return o.value=!1})),{dropdownOptions:a,isOpen:o,toggleDropdown:i,updateSelected:s}}});n("95ba");const lc=g()(sc,[["render",ic],["__scopeId","data-v-5ef2ddef"]]);var uc=lc,dc={class:"error-message"},Oc={key:0},mc={key:1};function Ec(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",dc,[Array.isArray(e.message)?(Object(c["openBlock"])(),Object(c["createElementBlock"])("ul",Oc,[(Object(c["openBlock"])(!0),Object(c["createElementBlock"])(c["Fragment"],null,Object(c["renderList"])(e.message,(function(t,n){return Object(c["openBlock"])(),Object(c["createElementBlock"])("li",{key:n},Object(c["toDisplayString"])(e.$t(t)),1)})),128))])):(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",mc,Object(c["toDisplayString"])(e.$t(e.message)),1))])}var pc=Object(c["defineComponent"])({name:"ErrorMessage",props:{message:[String,Array]}});n("4b55");const bc=g()(pc,[["render",Ec],["__scopeId","data-v-5c177a93"]]);var Tc=bc,Sc=["title"];function fc(e,t,n,r,o,a){var i=Object(c["resolveComponent"])("CyclingSport"),s=Object(c["resolveComponent"])("CyclingTransport"),l=Object(c["resolveComponent"])("Hiking"),u=Object(c["resolveComponent"])("MountainBiking"),d=Object(c["resolveComponent"])("MountainBikingElectric"),O=Object(c["resolveComponent"])("Rowing"),m=Object(c["resolveComponent"])("Running"),E=Object(c["resolveComponent"])("SkiingAlpine"),p=Object(c["resolveComponent"])("SkiingCrossCountry"),b=Object(c["resolveComponent"])("Trail"),T=Object(c["resolveComponent"])("Walking");return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",{class:"sport-img",style:Object(c["normalizeStyle"])({fill:e.sportColors[e.sportLabel]}),title:e.title?e.title:e.$t("sports.".concat(e.sportLabel,".LABEL"))},["Cycling (Sport)"===e.sportLabel?(Object(c["openBlock"])(),Object(c["createBlock"])(i,{key:0})):Object(c["createCommentVNode"])("",!0),"Cycling (Transport)"===e.sportLabel?(Object(c["openBlock"])(),Object(c["createBlock"])(s,{key:1})):Object(c["createCommentVNode"])("",!0),"Hiking"===e.sportLabel?(Object(c["openBlock"])(),Object(c["createBlock"])(l,{key:2})):Object(c["createCommentVNode"])("",!0),"Mountain Biking"===e.sportLabel?(Object(c["openBlock"])(),Object(c["createBlock"])(u,{key:3})):Object(c["createCommentVNode"])("",!0),"Mountain Biking (Electric)"===e.sportLabel?(Object(c["openBlock"])(),Object(c["createBlock"])(d,{key:4})):Object(c["createCommentVNode"])("",!0),"Rowing"===e.sportLabel?(Object(c["openBlock"])(),Object(c["createBlock"])(O,{key:5})):Object(c["createCommentVNode"])("",!0),"Running"===e.sportLabel?(Object(c["openBlock"])(),Object(c["createBlock"])(m,{key:6})):Object(c["createCommentVNode"])("",!0),"Skiing (Alpine)"===e.sportLabel?(Object(c["openBlock"])(),Object(c["createBlock"])(E,{key:7})):Object(c["createCommentVNode"])("",!0),"Skiing (Cross Country)"===e.sportLabel?(Object(c["openBlock"])(),Object(c["createBlock"])(p,{key:8})):Object(c["createCommentVNode"])("",!0),"Trail"===e.sportLabel?(Object(c["openBlock"])(),Object(c["createBlock"])(b,{key:9})):Object(c["createCommentVNode"])("",!0),"Walking"===e.sportLabel?(Object(c["openBlock"])(),Object(c["createBlock"])(T,{key:10})):Object(c["createCommentVNode"])("",!0)],12,Sc)}var _c={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 491.737 491.737",style:{"enable-background":"new 0 0 491.737 491.737"},"xml:space":"preserve"},jc=Object(c["createElementVNode"])("desc",{id:"cyclingSportDescription"}," silhouette of a person riding a bicycle ",-1),Ac=Object(c["createElementVNode"])("g",null,[Object(c["createElementVNode"])("path",{d:"M321.097,112.359c20.973,12.338,47.985,5.315,60.293-15.652c12.34-20.973,5.35-47.974-15.623-60.304\n\t\tc-21.009-12.332-47.99-5.317-60.314,15.65C293.129,73.036,300.103,100.027,321.097,112.359z"}),Object(c["createElementVNode"])("path",{d:"M393.081,264.102c-2.414,0-4.8,0.194-7.169,0.362l-14.431-71.605l4.702-1.757c10.666-3.987,16.093-15.868,12.098-26.54\n\t\tc-3.994-10.681-15.946-16.084-26.531-12.09l-51.823,19.38l-2.321-18.864c6.3-13.193,5.541-29.78-4.767-41.482\n\t\tc-21.224-24.092-47.12-12.508-55.191-5.976l-106.884,86.555l0.016,0.024c-3.319,2.893-6.089,6.485-7.86,10.842\n\t\tc-2.191,5.396-2.596,11.067-1.564,16.384c-8.503,0.669-15.255,7.571-15.255,16.246c0,9.085,7.346,16.44,16.432,16.48l-6.797,15.906\n\t\tc-8.62-2.465-17.674-3.866-27.066-3.866C44.27,264.102,0,308.354,0,362.754c0,54.403,44.27,98.663,98.668,98.663\n\t\tc54.403,0,98.652-44.26,98.652-98.663c0-36.228-19.683-67.867-48.858-85.024l10.957-25.652h17.767l60.281,24.462l-32.201,52.773\n\t\tc-8.297,13.612-3.994,31.382,9.615,39.685c4.691,2.86,9.878,4.229,15,4.229c9.729,0,19.234-4.929,24.677-13.838l29.339-48.095\n\t\tl19.072,11.511c-5.447,12.227-8.54,25.726-8.54,39.95c0,54.403,44.254,98.663,98.652,98.663c54.402,0,98.656-44.26,98.656-98.663\n\t\tC491.737,308.354,447.483,264.102,393.081,264.102z M98.668,436.671c-40.756,0-73.923-33.161-73.923-73.917\n\t\tc0-40.756,33.167-73.909,73.923-73.909c5.944,0,11.649,0.896,17.188,2.224l-20.476,47.893\n\t\tc-11.758,1.619-20.843,11.598-20.843,23.792c0,13.323,10.808,24.132,24.13,24.132c8.767,0,16.367-4.745,20.589-11.76h52.065\n\t\tC165.395,409.988,135.188,436.671,98.668,436.671z M171.322,350.383h-52.065c-0.355-0.588-0.708-1.176-1.112-1.732l20.476-47.901\n\t\tC155.679,311.776,167.793,329.595,171.322,350.383z M296.781,290.175l7.666-12.564c4.416-7.233,5.431-16.038,2.774-24.084\n\t\tc-2.661-8.046-8.718-14.515-16.562-17.704l-52.725-21.395l32.443-26.281l1.804,14.691c0.756,6.267,4.366,11.841,9.761,15.12\n\t\tc3.271,1.981,6.979,2.988,10.698,2.988c2.435,0,4.88-0.435,7.218-1.306l48.15-18.001l13.627,67.691\n\t\tc-18.268,6.162-34.117,17.51-45.848,32.314L296.781,290.175z M375.396,337.633l-38.003-22.94\n\t\tc7.877-9.118,17.787-16.319,29.205-20.734L375.396,337.633z M393.081,436.671c-40.757,0-73.907-33.161-73.907-73.917\n\t\tc0-9.544,1.965-18.597,5.268-26.983l44.541,26.888c0,0.032-0.016,0.064-0.016,0.095c0,13.323,10.808,24.132,24.114,24.132\n\t\tc13.322,0,24.118-10.81,24.118-24.132c0-10.478-6.721-19.307-16.06-22.64l-10.277-51.043c0.756-0.024,1.463-0.226,2.22-0.226\n\t\tc40.757,0,73.911,33.153,73.911,73.909C466.992,403.51,433.838,436.671,393.081,436.671z"})],-1),Nc=[jc,Ac];function gc(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("svg",_c,Nc)}var Rc={name:"CyclingSport"};const Ic=g()(Rc,[["render",gc]]);var Uc=Ic,vc={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 491.737 491.737",style:{"enable-background":"new 0 0 491.737 491.737"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"},hc=Object(c["createElementVNode"])("desc",{id:"cyclingTransportDescription"}," silhouette of a person riding a bicycle (for transportation) ",-1),Dc=Object(c["createElementVNode"])("g",{id:"g147"},[Object(c["createElementVNode"])("path",{d:"m 189.097,82.359 c 20.97701,12.331184 47.97442,5.308784 60.293,-15.652 12.32942,-20.979222 5.35418,-47.981117 -15.623,-60.304 -21.00482,-12.3391184 -47.99,-5.317 -60.314,15.65 -12.324,20.983 -5.34599,47.967183 15.644,60.306 z",id:"path143"}),Object(c["createElementVNode"])("path",{d:"m 393.081,264.102 c -2.414,0 -4.8,0.194 -7.169,0.362 l -14.431,-71.605 4.702,-1.757 c 10.666,-3.987 16.093,-15.868 12.098,-26.54 -3.994,-10.681 -15.946,-16.084 -26.531,-12.09 l -63.05508,-1.53717 C 284.04753,137.09803 248.90259,106.55858 243.33317,101.62481 217.77732,75.090916 186.1698,85.012419 178.0988,91.544419 L 140.764,192.085 l 0.016,0.024 c -3.319,2.893 -6.089,6.485 -7.86,10.842 -2.191,5.396 -2.596,11.067 -1.564,16.384 -8.503,0.669 -15.255,7.571 -15.255,16.246 0,9.085 7.346,16.44 16.432,16.48 l -6.797,15.906 c -8.62,-2.465 -17.674,-3.866 -27.066,-3.866 C 44.27,264.102 0,308.354 0,362.754 c 0,54.403 44.27,98.663 98.668,98.663 54.403,0 98.652,-44.26 98.652,-98.663 0,-36.228 -19.683,-67.867 -48.858,-85.024 l 10.957,-25.652 h 17.767 l 60.281,24.462 -32.201,52.773 c -8.297,13.612 -3.994,31.382 9.615,39.685 4.691,2.86 9.878,4.229 15,4.229 9.729,0 19.234,-4.929 24.677,-13.838 l 29.339,-48.095 19.072,11.511 c -5.447,12.227 -8.54,25.726 -8.54,39.95 0,54.403 44.254,98.663 98.652,98.663 54.402,0 98.656,-44.26 98.656,-98.663 0,-54.401 -44.254,-98.653 -98.656,-98.653 z M 98.668,436.671 c -40.756,0 -73.923,-33.161 -73.923,-73.917 0,-40.756 33.167,-73.909 73.923,-73.909 5.944,0 11.649,0.896 17.188,2.224 L 95.38,338.962 c -11.758,1.619 -20.843,11.598 -20.843,23.792 0,13.323 10.808,24.132 24.13,24.132 8.767,0 16.367,-4.745 20.589,-11.76 h 52.065 c -5.926,34.862 -36.133,61.545 -72.653,61.545 z m 72.654,-86.288 h -52.065 c -0.355,-0.588 -0.708,-1.176 -1.112,-1.732 l 20.476,-47.901 c 17.058,11.026 29.172,28.845 32.701,49.633 z m 125.459,-60.208 7.666,-12.564 c 4.416,-7.233 5.431,-16.038 2.774,-24.084 -2.661,-8.046 -8.718,-14.515 -16.562,-17.704 l -73.83357,-31.7176 16.7558,-45.21274 c 10.36934,4.13303 41.82171,27.90767 45.77423,28.08592 3.271,1.981 8.57725,1.46711 12.29625,1.46711 2.435,0 18.50584,0.70472 20.84384,-0.16628 L 343.32113,188.03378 361.635,269.33 c -18.268,6.162 -34.117,17.51 -45.848,32.314 z m 78.615,47.458 -38.003,-22.94 c 7.877,-9.118 17.787,-16.319 29.205,-20.734 z m 17.685,99.038 c -40.757,0 -73.907,-33.161 -73.907,-73.917 0,-9.544 1.965,-18.597 5.268,-26.983 l 44.541,26.888 c 0,0.032 -0.016,0.064 -0.016,0.095 0,13.323 10.808,24.132 24.114,24.132 13.322,0 24.118,-10.81 24.118,-24.132 0,-10.478 -6.721,-19.307 -16.06,-22.64 l -10.277,-51.043 c 0.756,-0.024 1.463,-0.226 2.22,-0.226 40.757,0 73.911,33.153 73.911,73.909 -10e-4,40.756 -33.155,73.917 -73.912,73.917 z",id:"path145"})],-1),Cc=[hc,Dc];function kc(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("svg",vc,Cc)}var Pc={name:"CyclingTransport"};const Mc=g()(Pc,[["render",kc]]);var Lc=Mc,zc={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 463.507 463.507",style:{"enable-background":"new 0 0 463.507 463.507"},"xml:space":"preserve"},yc=Object(c["createElementVNode"])("desc",{id:"hikingDescription"},"silhouette of a person hiking",-1),wc=Object(c["createElementVNode"])("g",null,[Object(c["createElementVNode"])("path",{d:"M246.413,78.492c21.688,0,39.255-17.573,39.255-39.251c0-21.67-17.567-39.24-39.255-39.24\n\t\tc-21.652,0-39.242,17.57-39.242,39.24C207.171,60.919,224.761,78.492,246.413,78.492z"}),Object(c["createElementVNode"])("path",{d:"M386.604,202.858c0-11.185-9.066-20.251-20.253-20.251h-68.479l-38.62-54.832l0.127-0.933\n\t\tc1.378-10.474-1.474-21.067-7.911-29.444c-6.441-8.378-15.932-13.852-26.408-15.23c-11.596-1.511-22.592,2.224-30.852,9.225V45.779\n\t\tc0-7.847-6.362-14.217-14.225-14.217H140.59c-7.867,0-14.225,6.37-14.225,14.217v168.953c0,20.68,15.821,37.476,35.979,39.446\n\t\tl-3.043,7.073l-23.859,90.136l-53.73,72.188c-8.006,10.768-5.794,25.987,4.984,34.001c4.348,3.245,9.443,4.811,14.491,4.811\n\t\tc7.422,0,14.729-3.385,19.511-9.795l56.529-75.945c1.851-2.484,3.213-5.299,4.003-8.289l16.266-61.414l44.521,40.877l-6.076,88.603\n\t\tc-0.917,13.393,9.177,24.99,22.58,25.908c0.552,0.04,1.124,0.056,1.691,0.056c12.66,0,23.339-9.819,24.208-22.642l6.882-100.264\n\t\tc0.508-7.364-2.371-14.572-7.815-19.564l-45.994-42.219l13.992-90.613l19.331,27.435c3.801,5.387,9.972,8.592,16.552,8.592h70.882\n\t\tl1.339,232.294c0,4.478,3.626,8.101,8.101,8.101c4.479,0,8.101-3.624,8.101-8.101l-1.339-234.036\n\t\tC381.588,218.245,386.604,211.15,386.604,202.858z"})],-1),Vc=[yc,wc];function Bc(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("svg",zc,Vc)}var Gc={name:"Hiking"};const xc=g()(Gc,[["render",Bc]]);var Fc=xc,Wc={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 503.162 503.162",style:{"enable-background":"new 0 0 503.162 503.162"},"xml:space":"preserve"},Kc=Object(c["createElementVNode"])("desc",{id:"mountainBikingDescription"}," silhouette of a person riding a mountain bike ",-1),$c=Object(c["createElementVNode"])("g",null,[Object(c["createElementVNode"])("g",null,[Object(c["createElementVNode"])("path",{d:"M149.951,67.997c15.711-7.143,22.739-25.675,15.596-41.416c-7.124-15.701-25.723-22.682-41.453-15.539\n\t\t\tc-15.721,7.134-22.702,25.752-15.578,41.444C115.679,68.216,134.23,75.14,149.951,67.997z"}),Object(c["createElementVNode"])("path",{d:"M87.517,89.072l-32.828,87.755c-1.979,5.967-1.683,12.594,1.1,18.733c4.055,8.922,12.604,14.525,21.755,15.271\n\t\t\tl76.873,6.244l29.137,64.184c4.122,9.046,14.832,13.148,23.906,9.017c9.075-4.131,13.072-14.859,8.951-23.944l-36.424-80.201\n\t\t\tc0,0-3.605-13.76-21.343-14.133l-43.873-2.572l21.009-55.166l31.671,20.588c5.584,3.663,10.997,3.682,15.1,1.722l55.051-24.997\n\t\t\tc17.069-7.755,6.952-30.036-10.108-22.29l-47.506,21.707l-53.55-34.846c0,0-11.638-8.013-24.241-2.285\n\t\t\tC102.205,73.858,91.112,77.243,87.517,89.072z"}),Object(c["createElementVNode"])("path",{d:"M423.687,182.488l-2.61,15.042c-2.123,12.154-13.35,25.092-25.092,28.888l-3.711,1.195\n\t\t\tc3.041-16.543,1.282-34.148-6.215-50.633c-19.498-42.974-70.094-61.87-112.943-42.419\n\t\t\tc-42.878,19.479-61.936,70.017-42.438,112.981c17.069,37.562,57.881,56.744,96.534,47.966l-0.784,1.415\n\t\t\tc-5.968,10.796-20.817,19.221-33.144,18.8l-17.892-0.622c-12.336-0.411-30.514,5.002-40.603,12.116l-22.376,15.759\n\t\t\tc-10.107,7.104-28.276,12.632-40.612,12.354l-12.001-0.277c12.718-22.845,14.889-51.159,3.242-76.806\n\t\t\tc-19.517-42.955-70.074-61.879-113.019-42.381c-42.792,19.44-61.87,70.007-42.372,112.933\n\t\t\tc16.667,36.711,56.084,55.788,93.914,48.444l-1.32,2.056c-6.675,10.385-22.08,18.398-34.406,17.92l-32.79-1.291\n\t\t\tc-12.326-0.497-24.021,8.97-26.096,21.143l-2.62,15.339c-0.564,3.271-0.354,6.11,0.401,8.501c-0.43,1.778-0.736,3.548-0.736,5.326\n\t\t\tv9.562c0,10.557,8.568,19.125,19.125,19.125h460.932c10.557,0,19.115-8.568,19.106-19.125l-0.125-167.507\n\t\t\tc0-2.782-0.593-5.221-1.616-7.286c1.396-3.806,2.057-7.841,1.598-11.839l-4.677-40.497c-1.415-12.249-9.763-29.146-18.637-37.724\n\t\t\tl-36.127-34.951C434.712,167.418,425.79,170.325,423.687,182.488z"})])],-1),Hc=[Kc,$c];function Yc(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("svg",Wc,Hc)}var qc={name:"MountainBiking"};const Xc=g()(qc,[["render",Yc]]);var Zc=Xc,Qc={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg",x:"0px",y:"0px",viewBox:"0 0 503.162 503.162",style:{"enable-background":"new 0 0 503.162 503.162"},"xml:space":"preserve"},Jc=Object(c["createStaticVNode"])(' silhouette of a person riding an electric mountain bike ',18),ea=[Jc];function ta(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("svg",Qc,ea)}var na={name:"MountainBikingElectric"};const ra=g()(na,[["render",ta]]);var oa=ra,ca={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 534.51 534.51",style:{"enable-background":"new 0 0 534.51 534.51"},"xml:space":"preserve"},aa=Object(c["createElementVNode"])("desc",{id:"rowingDescription"},"silhouette of a person rowing",-1),ia=Object(c["createElementVNode"])("g",null,[Object(c["createElementVNode"])("g",null,[Object(c["createElementVNode"])("path",{d:"M70.517,393.857h132.622l-67.205,68.631c-3.28,3.385-3.204,8.797,0.172,12.076c1.597,1.568,3.72,2.43,5.958,2.43\n\t\t\tc2.305,0,4.533-0.947,6.12-2.572l78.881-80.555h221.315c12.45,0,30.676-6.006,40.296-13.914\n\t\t\tc8.788-7.229,19.049-16.217,26.345-24.299c10.375-9.811,22.214-23.639-4.255-22.834c-6.98,0.248-206.789,0.02-223.926,0\n\t\t\tl47.144-48.139l22.176-22.032l28.209,9.17c10.414,3.385,22.472-0.803,26.919-9.362c4.446-8.558,0.268-18.407-9.343-21.993\n\t\t\tl-17.404-6.512l54.698-54.774c12.507,6.617,28.362,4.867,38.899-5.671l46.541-46.607c13.11-13.015,13.11-33.957,0-46.923\n\t\t\tc-12.909-13.034-34.042-13.034-46.942,0l-46.512,46.598c-10.892,10.815-12.508,27.139-5.26,39.742l-57.853,59.077L253.744,183.09\n\t\t\tc-1.482-0.851-14.153-5.786-26.833-10.643c-14.898-5.719-30.371,0.583-34.53,13.971l-7.525,24.241l-35.324,118.451\n\t\t\tc-0.468,1.34-0.603,2.562-0.746,3.711H14.136c-12.45,0-17.662,8.836-11.618,19.727l23.237,21.592\n\t\t\tC39.123,385.068,58.066,393.857,70.517,393.857z M272.63,248.727c1.797-5.967,8.099-9.39,14.075-7.64l51.37,14.975l-33.038,33.737\n\t\t\tl-43.453,43.012h-14.2L272.63,248.727z"}),Object(c["createElementVNode"])("circle",{cx:"248.953",cy:"109.842",r:"52.326"})])],-1),sa=[aa,ia];function la(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("svg",ca,sa)}var ua={name:"Rowing"};const da=g()(ua,[["render",la]]);var Oa=da,ma={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 494.49 494.49",style:{"enable-background":"new 0 0 494.49 494.49"},"xml:space":"preserve"},Ea=Object(c["createElementVNode"])("desc",{id:"runningDescription"},"silhouette of a running person",-1),pa=Object(c["createElementVNode"])("g",null,[Object(c["createElementVNode"])("path",{d:"M282.74,80.771c22.318,0,40.401-18.08,40.401-40.389C323.141,18.084,305.058,0,282.74,0\n\t\tc-22.281,0-40.378,18.084-40.378,40.383C242.362,62.691,260.458,80.771,282.74,80.771z"}),Object(c["createElementVNode"])("path",{d:"M400.207,188.547H331.47l-38.766-55.03l0.123-0.944c1.384-10.514-1.475-21.146-7.94-29.556\n\t\tc-6.461-8.409-16.007-13.903-26.52-15.287c-10.926-1.429-22.619,3.12-31.206,8.646c-1.441,0.928-84.97,54.921-84.97,54.921\n\t\tc-5.175,3.358-8.542,8.877-9.165,15.016c-0.634,6.13,1.574,12.222,5.976,16.541l58.982,58l-6.417,48.954l-18.707,65.584l-67.8-19.4\n\t\tc-12.911-3.676-26.44,3.796-30.159,16.747c-3.699,12.951,3.799,26.459,16.758,30.168l91.271,26.109\n\t\tc2.192,0.627,4.444,0.936,6.7,0.936c4.113,0,8.195-1.04,11.848-3.073c5.655-3.146,9.833-8.409,11.611-14.635l21.963-77.057\n\t\tl26.365,36.639l6.684,119.628c0.73,12.991,11.501,23.036,24.349,23.036c0.441,0,0.92-0.016,1.379-0.039\n\t\tc13.453-0.748,23.745-12.262,23-25.713l-7.083-126.736c-0.271-4.643-1.846-9.116-4.56-12.887l-32.24-44.811l11.959-91.279\n\t\tl19.409,27.555c3.794,5.407,10.005,8.624,16.613,8.624h79.28c11.226,0,20.326-9.101,20.326-20.329\n\t\tC420.533,197.647,411.432,188.547,400.207,188.547z M204.606,190.357l-19.026-18.717l23.476-15.206L204.606,190.357z"})],-1),ba=[Ea,pa];function Ta(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("svg",ma,ba)}var Sa={name:"Running"};const fa=g()(Sa,[["render",Ta]]);var _a=fa,ja={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 522.362 522.362",style:{"enable-background":"new 0 0 522.362 522.362"},"xml:space":"preserve"},Aa=Object(c["createElementVNode"])("desc",{id:"alpineSkiingDescription"},"silhouette of a person skiing",-1),Na=Object(c["createElementVNode"])("g",null,[Object(c["createElementVNode"])("g",null,[Object(c["createElementVNode"])("path",{d:"M14.314,351.859L408.088,461.78c4.484,1.311,9.104,1.97,13.731,1.97l0,0c17.471,0,33.746-9.429,42.467-24.604\n\t\t\tc2.716-4.724,3.137-10.27,1.157-15.214c-1.912-4.762-5.767-8.31-10.576-9.744c-7.373-2.237-15.481,1.109-22.146,9.229\n\t\t\tc-3.548,4.303-9.496,6.244-15.07,4.714l-136.467-38.078c1.396-0.555,2.812-1.195,4.236-2.065l103.266-63.15\n\t\t\tc15.443-9.362,18.493-33.957,7.812-43.883l-64.758-60.233l39.972-21.688l69.682,9.744c5.23,0.736,9.744-2.037,10.079-6.187\n\t\t\tc0.344-4.141-3.624-8.1-8.855-8.826l-48.605-6.828l22.472-12.192c39.895-23.275,5.823-85.192-35.334-63.112l-87.554,61.19\n\t\t\tl-117.503-16.515l2.543-12.087c0.545-2.582-1.109-5.116-3.691-5.661c-2.572-0.593-5.116,1.1-5.661,3.701l-2.678,12.709\n\t\t\tl-18.331-2.582c-5.231-0.727-9.467,2.123-9.467,6.369s4.236,8.281,9.467,9.017l15.176,2.123l-2.544,12.087\n\t\t\tc-0.545,2.582,1.109,5.125,3.691,5.671c0.334,0.076,0.66,0.105,0.994,0.105c2.209,0,4.198-1.54,4.676-3.787l2.678-12.737\n\t\t\tl102.414,14.315l-5.308,3.72c-4.332,3.022-10.155,9.151-11.723,14.201c-3.844,12.45-1.473,26.717,10.452,37.705l68.802,62.175\n\t\t\tc0,0-50.978,31.776-74.998,46.397c-14.219,8.606-13.674,23.858-6.129,33.393L23.705,318.199\n\t\t\tc-10.012-2.792-20.569,2.554-23.113,11.695C-2,339.169,4.159,349.029,14.314,351.859z"}),Object(c["createElementVNode"])("path",{d:"M450.842,72.003c-15.291,16.715-14.201,42.667,2.639,58.121c16.706,15.31,42.716,14.086,58.073-2.668\n\t\t\tc15.386-16.677,14.172-42.734-2.544-58.016C492.305,54.064,466.17,55.192,450.842,72.003z"})])],-1),ga=[Aa,Na];function Ra(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("svg",ja,ga)}var Ia={name:"SkiingAlpine"};const Ua=g()(Ia,[["render",Ra]]);var va=Ua,ha={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 296 296",style:{"enable-background":"new 0 0 296 296"},"xml:space":"preserve"},Da=Object(c["createElementVNode"])("desc",{id:"crossCountrySkiingDescription"}," silhouette of a person skiing (cross country) ",-1),Ca=Object(c["createElementVNode"])("g",null,[Object(c["createElementVNode"])("path",{d:"M241.313,246.906h-39.564l0.456-1.273c5.62-18.374,3.479-37.58-6.027-54.278c-5.653-9.929-13.443-18.018-22.745-23.959\n\t\tl12.886-51.126c3.035-12.05-4.272-24.266-16.322-27.301c-2.634-0.664-5.278-0.826-7.833-0.559\n\t\tc-0.151-0.011-0.299-0.032-0.452-0.038c-26.03-1.077-51.443,8.485-70.33,25.993L41.586,82.855\n\t\tc-4.332-2.741-10.065-1.451-12.806,2.881s-1.451,10.065,2.88,12.806l47.625,30.136c-2.557,6.013-0.962,13.224,4.375,17.531\n\t\tc2.774,2.24,6.104,3.33,9.413,3.33c4.377-0.001,8.717-1.907,11.68-5.579l0.478-0.591c8.686-10.766,20.465-18.479,33.484-22.317\n\t\tl-11.095,44.046c-1.061,4.214-0.854,8.448,0.374,12.305c-12.908,17.917-28.398,33.68-46.198,46.979l-14.649,10.727\n\t\tc-3.938,2.943-6.001,7.798-6.005,11.798H8.25c-4.556,0-8.083,4.131-8.083,8.688v2.063c0,4.556,3.527,8.25,8.083,8.25h55.188\n\t\th161.375H280c9.113,0,16.167-7.387,16.167-16.5v-2.5H241.313z M153.974,192.398c0.741-0.153,1.471-0.231,2.188-0.457\n\t\tc5.742,3.406,10.53,8.313,13.945,14.311c5.378,9.447,6.59,20.402,3.41,30.797l-1.799,5.674c-0.447,1.461-0.656,3.184-0.657,4.184\n\t\th-69.909C121.581,231.906,139.297,213.274,153.974,192.398z M167,57.938c0-15.378,12.466-27.844,27.844-27.844\n\t\ts27.844,12.466,27.844,27.844s-12.466,27.844-27.844,27.844S167,73.315,167,57.938z"})],-1),ka=[Da,Ca];function Pa(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("svg",ha,ka)}var Ma={name:"SkiingCrossCountry"};const La=g()(Ma,[["render",Pa]]);var za=La,ya={version:"1.1",id:"Capa_1",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 535.876 535.876",style:{"enable-background":"new 0 0 535.876 535.876"},"xml:space":"preserve"},wa=Object(c["createElementVNode"])("desc",{id:"trailDescription"},"silhouette of a person running (trail)",-1),Va=Object(c["createElementVNode"])("g",null,[Object(c["createElementVNode"])("g",null,[Object(c["createElementVNode"])("path",{d:"M505.204,326.949c-5.805-10.892-15.176-10.862-20.923,0.067l-7.114,13.512c-5.757,10.92-20.416,19.775-32.752,19.775\n\t\t\th-16.753c-12.346,0-29.645,6.847-38.643,15.29l-32.35,30.342l-1.233-105.388c0.822-18.446-10.596-24.634-10.596-24.634\n\t\t\tl-56.543-25.972l33.67-67.645l38.527,22.912c0,0,15.472,9.715,26.727-9.324l37.026-63.093c1.625-3.519,2.094-7.564,1.052-11.609\n\t\t\tc-2.381-9.256-11.81-14.86-21.095-12.479c-4.083,1.042-7.459,3.49-9.754,6.713l-30.772,51.962l-62.777-37.102\n\t\t\tc-4.733-2.716-10.519-3.691-16.257-2.209l-78.345,20.12c-5.03,1.291-8.96,4.762-11.017,9.142l-38.097,76.165\n\t\t\tc-2.591,3.854-3.624,8.73-2.371,13.607c2.285,8.941,11.456,14.363,20.435,12.059c5.04-1.291,8.951-4.743,10.997-9.161\n\t\t\tl35.314-70.858l28.936-7.296l-76.203,149.921l-65.981,16.734c-1.759,0.393-3.48,1.023-5.163,1.836\n\t\t\tc-10.596,5.412-14.679,18.179-9.267,28.803c4.733,9.266,15.252,13.636,24.901,10.978l78.067-20.187\n\t\t\tc18.6-4.093,23.313-14.449,23.313-14.449l30.581-58.79l62.28,35.678l0.593,86.216c0.01,1.08,0.259,2.161,0.421,3.241l-11.6-4.188\n\t\t\tc-11.608-4.188-30.57-4.608-42.361-0.956l-26.135,8.128c-11.79,3.663-30.791,3.338-42.447-0.717l-19.221-6.694\n\t\t\tc-11.657-4.054-28.831-0.984-38.374,6.838L109.9,433.954c-9.544,7.822-26.67,10.72-38.25,6.483L40.84,429.135\n\t\t\tc-11.58-4.256-25.608,1.157-31.336,12.097l-7.21,13.789c-5.728,10.93-0.354,19.794,11.982,19.794H500.27\n\t\t\tc12.336,0,24.309-9.802,26.728-21.907l8.004-39.981c2.409-12.097-0.325-30.733-6.14-41.616L505.204,326.949z"}),Object(c["createElementVNode"])("path",{d:"M326.395,126.625c17.806-4.562,28.563-22.721,23.983-40.526c-4.581-17.844-22.74-28.554-40.555-23.983\n\t\t\tc-17.796,4.581-28.535,22.711-23.964,40.535C290.439,120.476,308.599,131.205,326.395,126.625z"})])],-1),Ba=[wa,Va];function Ga(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("svg",ya,Ba)}var xa={name:"Trail"};const Fa=g()(xa,[["render",Ga]]);var Wa=Fa,Ka={version:"1.1",id:"Capa_1",x:"0px",y:"0px",viewBox:"0 0 494.49 494.49",style:{"enable-background":"new 0 0 494.49 494.49"},"xml:space":"preserve",xmlns:"http://www.w3.org/2000/svg","xmlns:svg":"http://www.w3.org/2000/svg"},$a=Object(c["createStaticVNode"])('silhouette of a walking person',3),Ha=[$a];function Ya(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("svg",Ka,Ha)}var qa={name:"Walking"};const Xa=g()(qa,[["render",Ya]]);var Za=Xa,Qa=Object(c["defineComponent"])({name:"SportImage",components:{CyclingSport:Uc,CyclingTransport:Lc,Hiking:Fc,MountainBiking:Zc,MountainBikingElectric:oa,Rowing:Oa,Running:_a,SkiingAlpine:va,SkiingCrossCountry:za,Trail:Wa,Walking:Za},props:{sportLabel:{type:String,required:!0},title:{type:String,required:!1}},setup:function(){return{sportColors:Object(c["inject"])("sportColors")}}});const Ja=g()(Qa,[["render",fc]]);var ei=Ja,ti={class:"loader"};function ni(e,t,n,r,o,a){return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",ti)}var ri=Object(c["defineComponent"])({name:"Loader"});n("b373");const oi=g()(ri,[["render",ni],["__scopeId","data-v-8bf75da8"]]);var ci=oi,ai={id:"modal"},ii={class:"custom-modal"},si={key:0,class:"modal-message"},li={key:1,class:"modal-message"},ui={class:"modal-buttons"};function di(e,t,n,r,o,a){var i=Object(c["resolveComponent"])("i18n-t"),s=Object(c["resolveComponent"])("ErrorMessage"),l=Object(c["resolveComponent"])("Card");return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",ai,[Object(c["createElementVNode"])("div",ii,[Object(c["createVNode"])(l,null,{title:Object(c["withCtx"])((function(){return[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.title),1)]})),content:Object(c["withCtx"])((function(){return[e.strongMessage?(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",si,[Object(c["createVNode"])(i,{keypath:e.message},{default:Object(c["withCtx"])((function(){return[Object(c["createElementVNode"])("span",null,Object(c["toDisplayString"])(e.strongMessage),1)]})),_:1},8,["keypath"])])):(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",li,Object(c["toDisplayString"])(e.message),1)),e.errorMessages?(Object(c["openBlock"])(),Object(c["createBlock"])(s,{key:2,message:e.errorMessages},null,8,["message"])):Object(c["createCommentVNode"])("",!0),Object(c["createElementVNode"])("div",ui,[e.errorMessages?Object(c["createCommentVNode"])("",!0):(Object(c["openBlock"])(),Object(c["createElementBlock"])("button",{key:0,class:"confirm",onClick:t[0]||(t[0]=function(t){return e.emit("confirmAction")})},Object(c["toDisplayString"])(e.$t("buttons.YES")),1)),Object(c["createElementVNode"])("button",{class:"cancel",onClick:t[1]||(t[1]=function(t){return e.emit("cancelAction")})},Object(c["toDisplayString"])(e.$t("buttons.".concat(e.errorMessages?"CANCEL":"NO"))),1)])]})),_:1})])])}var Oi=Object(c["defineComponent"])({name:"Modal",props:{title:{type:String,required:!0},message:{type:String,required:!0},strongMessage:{type:String||null,default:null}},emits:["cancelAction","confirmAction"],setup:function(e,t){var n=t.emit,r=Object(W["a"])(),o=Object(c["computed"])((function(){return r.getters[F["b"].GETTERS.ERROR_MESSAGES]}));return Object(c["onUnmounted"])((function(){return r.commit(F["b"].MUTATIONS.EMPTY_ERROR_MESSAGES)})),{errorMessages:o,emit:n}}});n("25ba");const mi=g()(Oi,[["render",di],["__scopeId","data-v-366182c4"]]);var Ei=mi,pi=[Xo,et,rc,uc,Tc,ci,Ei,ei],bi={mounted:function(e,t){e.clickOutsideEvent=function(n){e===n.target||e.contains(n.target)||t.value(n)},document.body.addEventListener("click",e.clickOutsideEvent),document.body.addEventListener("touchstart",e.clickOutsideEvent)},unmounted:function(e){e.clickOutsideEvent&&(document.body.removeEventListener("click",e.clickOutsideEvent),document.body.removeEventListener("touchstart",e.clickOutsideEvent),e.clickOutsideEvent=void 0)}};r["Chart"].register(r["BarElement"],r["LineElement"],r["PointElement"],r["Legend"],r["Title"],r["Tooltip"],r["Filler"],r["BarController"],r["CategoryScale"],r["LineController"],r["LinearScale"],o["a"]);var Ti=Object(c["createApp"])(me).provide("sportColors",Rt["b"]).use(q).use(Vo).use(Wo).directive("click-outside",bi);pi.forEach((function(e){Ti.component(e.name,e)})),Ti.mount("#app")},d257:function(e,t,n){"use strict";n.d(t,"a",(function(){return o})),n.d(t,"b",(function(){return c}));n("caad"),n("2532"),n("d81d"),n("4de4"),n("d3b7"),n("ac1f"),n("1276");var r=n("dad5"),o=function(){return"/api/"},c=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"UNKNOWN",o=t?t.response?413===t.response.status?"file size is greater than the allowed size":t.response.data.message?t.response.data.message:n:t.message?t.message:n:n;e.commit(r["b"].MUTATIONS.SET_ERROR_MESSAGES,o.includes("\n")?o.split("\n").filter((function(e){return""!==e})).map((function(e){return"api.ERROR.".concat(e)})):"api.ERROR.".concat(o))}},d42e:function(e,t,n){"use strict";n("dc79")},da66:function(e,t,n){},dad5:function(e,t,n){"use strict";var r,o,c,a,i,s,l,u,d,O,m,E,p,b,T;n.d(t,"b",(function(){return f})),n.d(t,"c",(function(){return _})),n.d(t,"d",(function(){return j})),n.d(t,"a",(function(){return A})),n.d(t,"e",(function(){return N})),n.d(t,"f",(function(){return g})),function(e){e["CHECK_AUTH_USER"]="CHECK_AUTH_USER",e["DELETE_ACCOUNT"]="DELETE_ACCOUNT",e["DELETE_PICTURE"]="DELETE_PICTURE",e["GET_USER_PROFILE"]="GET_USER_PROFILE",e["LOGIN_OR_REGISTER"]="LOGIN_OR_REGISTER",e["LOGOUT"]="LOGOUT",e["SEND_PASSWORD_RESET_REQUEST"]="SEND_PASSWORD_RESET_REQUEST",e["RESET_USER_PASSWORD"]="RESET_USER_PASSWORD",e["UPDATE_USER_PICTURE"]="UPDATE_USER_PICTURE",e["UPDATE_USER_PROFILE"]="UPDATE_USER_PROFILE",e["UPDATE_USER_PREFERENCES"]="UPDATE_USER_PREFERENCES"}(r||(r={})),function(e){e["AUTH_TOKEN"]="AUTH_TOKEN",e["AUTH_USER_PROFILE"]="AUTH_USER_PROFILE",e["IS_ADMIN"]="IS_ADMIN",e["IS_AUTHENTICATED"]="IS_AUTHENTICATED",e["USER_LOADING"]="USER_LOADING"}(o||(o={})),function(e){e["CLEAR_AUTH_USER_TOKEN"]="CLEAR_AUTH_USER_TOKEN",e["UPDATE_AUTH_TOKEN"]="UPDATE_AUTH_TOKEN",e["UPDATE_AUTH_USER_PROFILE"]="UPDATE_AUTH_USER_PROFILE",e["UPDATE_USER_LOADING"]="UPDATE_USER_LOADING"}(c||(c={})),function(e){e["GET_APPLICATION_CONFIG"]="GET_APPLICATION_CONFIG",e["GET_APPLICATION_STATS"]="GET_APPLICATION_STATS",e["UPDATE_APPLICATION_CONFIG"]="UPDATE_APPLICATION_CONFIG"}(a||(a={})),function(e){e["APP_CONFIG"]="APP_CONFIG",e["APP_LOADING"]="APP_LOADING",e["APP_STATS"]="APP_STATS",e["ERROR_MESSAGES"]="ERROR_MESSAGES",e["LANGUAGE"]="LANGUAGE",e["LOCALE"]="LOCALE"}(i||(i={})),function(e){e["EMPTY_ERROR_MESSAGES"]="EMPTY_ERROR_MESSAGES",e["SET_ERROR_MESSAGES"]="SET_ERROR_MESSAGES",e["UPDATE_APPLICATION_CONFIG"]="UPDATE_APPLICATION_CONFIG",e["UPDATE_APPLICATION_LOADING"]="UPDATE_APPLICATION_LOADING",e["UPDATE_APPLICATION_STATS"]="UPDATE_APPLICATION_STATS",e["UPDATE_LANG"]="UPDATE_LANG"}(s||(s={})),function(e){e["GET_SPORTS"]="GET_SPORTS",e["UPDATE_SPORTS"]="UPDATE_SPORTS"}(l||(l={})),function(e){e["SPORTS"]="SPORTS"}(u||(u={})),function(e){e["SET_SPORTS"]="SET_SPORTS"}(d||(d={})),function(e){e["GET_USER_STATS"]="GET_USER_STATS"}(O||(O={})),function(e){e["USER_STATS"]="USER_STATS"}(m||(m={})),function(e){e["EMPTY_USER_STATS"]="EMPTY_USER_STATS",e["UPDATE_USER_STATS"]="UPDATE_USER_STATS"}(E||(E={})),function(e){e["EMPTY_USER"]="EMPTY_USER",e["EMPTY_USERS"]="EMPTY_USERS",e["GET_USER"]="GET_USER",e["GET_USERS"]="GET_USERS",e["UPDATE_USER"]="UPDATE_USER"}(p||(p={})),function(e){e["USER"]="USER",e["USERS"]="USERS",e["USERS_LOADING"]="USERS_LOADING",e["USERS_PAGINATION"]="USERS_PAGINATION"}(b||(b={})),function(e){e["UPDATE_USER"]="UPDATE_USER",e["UPDATE_USER_IN_USERS"]="UPDATE_USER_IN_USERS",e["UPDATE_USERS"]="UPDATE_USERS",e["UPDATE_USERS_LOADING"]="UPDATE_USERS_LOADING",e["UPDATE_USERS_PAGINATION"]="UPDATE_USERS_PAGINATION"}(T||(T={}));var S=n("4870"),f={ACTIONS:a,GETTERS:i,MUTATIONS:s},_={ACTIONS:l,GETTERS:u,MUTATIONS:d},j={ACTIONS:O,GETTERS:m,MUTATIONS:E},A={ACTIONS:r,GETTERS:o,MUTATIONS:c},N={ACTIONS:p,GETTERS:b,MUTATIONS:T},g={ACTIONS:S["a"],GETTERS:S["b"],MUTATIONS:S["c"]}},dc79:function(e,t,n){},e7b6:function(e,t,n){var r={"./en/en.ts":"c142","./fr/fr.ts":"663e"};function o(e){var t=c(e);return n(t)}function c(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=c,e.exports=o,o.id="e7b6"},edb9:function(e,t,n){},ee25:function(e,t,n){},f037:function(e,t,n){"use strict";n("aa8e")},f5dfd:function(e,t,n){"use strict";n("9838")},fa79:function(e,t,n){"use strict";n("9c9a")},fb34:function(e,t,n){},fb41:function(e,t,n){}}); -//# sourceMappingURL=app.5434baf0.js.map \ No newline at end of file diff --git a/fittrackee/dist/static/js/app.5434baf0.js.map b/fittrackee/dist/static/js/app.5434baf0.js.map deleted file mode 100644 index e77af8b5..00000000 --- a/fittrackee/dist/static/js/app.5434baf0.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/Common/StatCard.vue?50fd","webpack:///./src/components/Common/StatCard.vue","webpack:///./src/components/Common/StatCard.vue?7652","webpack:///./src/utils/sports.ts","webpack:///./src/components/User/UserPicture.vue?f50a","webpack:///./src/components/Common/Card.vue?c8de","webpack:///./src/components/Common/Pagination.vue?862b","webpack:///./src/components/User/ProfileEdition/UserPictureEdition.vue?ff43","webpack:///./src/components/Common/Modal.vue?54d8","webpack:///./src/use/useStore.ts","webpack:///./src/components/Administration/AdminSports.vue?8181","webpack:///./src/components/Administration/AdminApplication.vue?90c5","webpack:///./src/components/User/ProfileDisplay/UserHeader.vue?63ff","webpack:///./src/components/User/ProfileDisplay/UserHeader.vue","webpack:///./src/components/User/ProfileDisplay/UserHeader.vue?24df","webpack:///./src/store/modules/workouts/enums.ts","webpack:///./src/components/Administration/AdminMenu.vue?9cf0","webpack:///./src/components/Common/ErrorMessage.vue?2ce3","webpack:///./src/components/User/ProfileDisplay/UserInfos.vue?46bb","webpack:///./src/components/User/ProfileDisplay/UserHeader.vue?92ff","webpack:///./src/components/User/ProfileEdition/UserInfosEdition.vue?ab94","webpack:///./src/utils/dates.ts","webpack:///./src/App.vue?fd49","webpack:///./src/locales/fr/administration.json","webpack:///./src/locales/fr/api.json","webpack:///./src/locales/fr/buttons.json","webpack:///./src/locales/fr/common.json","webpack:///./src/locales/fr/dashboard.json","webpack:///./src/locales/fr/error.json","webpack:///./src/locales/fr/sports.json","webpack:///./src/locales/fr/statistics.json","webpack:///./src/locales/fr/user.json","webpack:///./src/locales/fr/workouts.json","webpack:///./src/locales/fr/fr.ts","webpack:///./src/components/Common/Pagination.vue?600d","webpack:///./src/components/Common/Pagination.vue","webpack:///./src/components/Common/Pagination.vue?573e","webpack:///./src/components/User/ProfileDisplay/UserInfos.vue?53a8","webpack:///./src/components/User/ProfileDisplay/UserInfos.vue","webpack:///./src/components/User/ProfileDisplay/UserInfos.vue?9546","webpack:///./src/components/Common/FilterSelects.vue?d0a0","webpack:///./src/components/User/ProfileDisplay/index.vue?fee6","webpack:///./src/components/Common/StatCard.vue?c5f0","webpack:///./src/components/Common/FilterSelects.vue?5691","webpack:///./src/components/Common/FilterSelects.vue","webpack:///./src/components/Common/FilterSelects.vue?2f0a","webpack:///./src/components/NavBar.vue?09ae","webpack:///./src/components/Common/Dropdown.vue?8e34","webpack:///./src/utils/api.ts","webpack:///./src/components/Administration/AppStatsCards.vue?6b63","webpack:///./src/components/Common/CustomTextArea.vue?381d","webpack:///./src/components/Common/Loader.vue?105b","webpack:///./src/components/Administration/AdminUsers.vue?a06f","webpack:///./src/locales/en/administration.json","webpack:///./src/locales/en/api.json","webpack:///./src/locales/en/buttons.json","webpack:///./src/locales/en/common.json","webpack:///./src/locales/en/dashboard.json","webpack:///./src/locales/en/error.json","webpack:///./src/locales/en/sports.json","webpack:///./src/locales/en/statistics.json","webpack:///./src/locales/en/user.json","webpack:///./src/locales/en/workouts.json","webpack:///./src/locales/en/en.ts","webpack:///./src/utils/files.ts","webpack:///./src/components/User/UserPicture.vue?ef4d","webpack:///./src/components/User/UserPicture.vue","webpack:///./src/components/User/UserPicture.vue?dc88","webpack:///./src/components/User/ProfileDisplay/UserPreferences.vue?7c56","webpack:///./src/registerServiceWorker.ts","webpack:///./src/App.vue?f2bf","webpack:///./src/components/Footer.vue?eacb","webpack:///./src/components/Footer.vue","webpack:///./src/components/Footer.vue?14b8","webpack:///./src/components/NavBar.vue?dc7b","webpack:///./src/i18n.ts","webpack:///./src/utils/locales.ts","webpack:///./src/components/NavBar.vue","webpack:///./src/components/NavBar.vue?5ec4","webpack:///./src/components/NoConfig.vue?6f58","webpack:///./src/components/NoConfig.vue","webpack:///./src/components/NoConfig.vue?0078","webpack:///./src/App.vue","webpack:///./src/App.vue?8ecf","webpack:///./src/components/Administration/AdminApplication.vue?ca56","webpack:///./src/components/Administration/AdminApplication.vue","webpack:///./src/components/Administration/AdminApplication.vue?9c66","webpack:///./src/components/Administration/AdminMenu.vue?3001","webpack:///./src/components/Administration/AppStatsCards.vue?98e8","webpack:///./src/components/Administration/AppStatsCards.vue","webpack:///./src/components/Administration/AppStatsCards.vue?5d3b","webpack:///./src/components/Common/Card.vue?9886","webpack:///./src/components/Common/Card.vue","webpack:///./src/components/Common/Card.vue?ecbc","webpack:///./src/components/Administration/AdminMenu.vue","webpack:///./src/components/Administration/AdminMenu.vue?572b","webpack:///./src/components/Administration/AdminSports.vue?010d","webpack:///./src/components/Administration/AdminSports.vue","webpack:///./src/components/Administration/AdminSports.vue?8d91","webpack:///./src/components/Administration/AdminUsers.vue?be42","webpack:///./src/components/Administration/AdminUsers.vue","webpack:///./src/components/Administration/AdminUsers.vue?9006","webpack:///./src/components/User/ProfileDisplay/index.vue?af18","webpack:///./src/components/User/UserProfileTabs.vue?321f","webpack:///./src/components/User/UserProfileTabs.vue","webpack:///./src/components/User/UserProfileTabs.vue?68f5","webpack:///./src/components/User/ProfileDisplay/index.vue","webpack:///./src/components/User/ProfileDisplay/index.vue?d237","webpack:///./src/components/User/ProfileDisplay/UserPreferences.vue?470a","webpack:///./src/components/User/ProfileDisplay/UserPreferences.vue","webpack:///./src/components/User/ProfileDisplay/UserPreferences.vue?e51f","webpack:///./src/components/User/ProfileEdition/index.vue?a41c","webpack:///./src/components/User/ProfileEdition/index.vue","webpack:///./src/components/User/ProfileEdition/index.vue?27de","webpack:///./src/components/User/ProfileEdition/UserInfosEdition.vue?ed5f","webpack:///./src/components/User/ProfileEdition/UserInfosEdition.vue","webpack:///./src/components/User/ProfileEdition/UserInfosEdition.vue?a314","webpack:///./src/components/User/ProfileEdition/UserPictureEdition.vue?9c35","webpack:///./src/components/User/ProfileEdition/UserPictureEdition.vue","webpack:///./src/components/User/ProfileEdition/UserPictureEdition.vue?6a32","webpack:///./src/components/User/ProfileEdition/UserPreferencesEdition.vue?fa1e","webpack:///./src/components/User/ProfileEdition/UserPreferencesEdition.vue","webpack:///./src/components/User/ProfileEdition/UserPreferencesEdition.vue?a05c","webpack:///./src/api/authApi.ts","webpack:///./src/api/defaultApi.ts","webpack:///./src/store/modules/authUser/actions.ts","webpack:///./src/store/modules/authUser/getters.ts","webpack:///./src/store/modules/authUser/mutations.ts","webpack:///./src/store/modules/authUser/state.ts","webpack:///./src/store/modules/authUser/index.ts","webpack:///./src/store/modules/root/actions.ts","webpack:///./src/store/modules/root/getters.ts","webpack:///./src/store/modules/root/mutations.ts","webpack:///./src/store/modules/root/state.ts","webpack:///./src/store/modules/sports/actions.ts","webpack:///./src/store/modules/sports/getters.ts","webpack:///./src/store/modules/sports/mutations.ts","webpack:///./src/store/modules/sports/state.ts","webpack:///./src/store/modules/sports/index.ts","webpack:///./src/store/modules/statistics/actions.ts","webpack:///./src/store/modules/statistics/getters.ts","webpack:///./src/store/modules/statistics/mutations.ts","webpack:///./src/store/modules/statistics/state.ts","webpack:///./src/store/modules/statistics/index.ts","webpack:///./src/store/modules/users/actions.ts","webpack:///./src/store/modules/users/getters.ts","webpack:///./src/store/modules/users/mutations.ts","webpack:///./src/store/modules/users/state.ts","webpack:///./src/store/modules/users/index.ts","webpack:///./src/store/modules/workouts/actions.ts","webpack:///./src/store/modules/workouts/getters.ts","webpack:///./src/store/modules/workouts/mutations.ts","webpack:///./src/store/modules/workouts/state.ts","webpack:///./src/store/modules/workouts/index.ts","webpack:///./src/store/modules/root/index.ts","webpack:///./src/store/index.ts","webpack:///./src/router/index.ts","webpack:///./src/components/Common/AlertMessage.vue?e597","webpack:///./src/components/Common/AlertMessage.vue","webpack:///./src/components/Common/AlertMessage.vue?7dca","webpack:///./src/components/Common/CustomTextArea.vue?61c4","webpack:///./src/components/Common/CustomTextArea.vue","webpack:///./src/components/Common/CustomTextArea.vue?933e","webpack:///./src/components/Common/Dropdown.vue?4477","webpack:///./src/components/Common/Dropdown.vue","webpack:///./src/components/Common/Dropdown.vue?56da","webpack:///./src/components/Common/ErrorMessage.vue?b393","webpack:///./src/components/Common/ErrorMessage.vue","webpack:///./src/components/Common/ErrorMessage.vue?31ca","webpack:///./src/components/Common/Images/SportImage/index.vue?e8e2","webpack:///./src/components/Common/Images/SportImage/CyclingSport.vue","webpack:///./src/components/Common/Images/SportImage/CyclingSport.vue?1dcc","webpack:///./src/components/Common/Images/SportImage/CyclingTransport.vue","webpack:///./src/components/Common/Images/SportImage/CyclingTransport.vue?667c","webpack:///./src/components/Common/Images/SportImage/Hiking.vue","webpack:///./src/components/Common/Images/SportImage/Hiking.vue?75de","webpack:///./src/components/Common/Images/SportImage/MountainBiking.vue","webpack:///./src/components/Common/Images/SportImage/MountainBiking.vue?9b14","webpack:///./src/components/Common/Images/SportImage/MountainBikingElectric.vue","webpack:///./src/components/Common/Images/SportImage/MountainBikingElectric.vue?adb2","webpack:///./src/components/Common/Images/SportImage/Rowing.vue","webpack:///./src/components/Common/Images/SportImage/Rowing.vue?a825","webpack:///./src/components/Common/Images/SportImage/Running.vue","webpack:///./src/components/Common/Images/SportImage/Running.vue?275d","webpack:///./src/components/Common/Images/SportImage/SkiingAlpine.vue","webpack:///./src/components/Common/Images/SportImage/SkiingAlpine.vue?8028","webpack:///./src/components/Common/Images/SportImage/SkiingCrossCountry.vue","webpack:///./src/components/Common/Images/SportImage/SkiingCrossCountry.vue?a0cc","webpack:///./src/components/Common/Images/SportImage/Trail.vue","webpack:///./src/components/Common/Images/SportImage/Trail.vue?43e1","webpack:///./src/components/Common/Images/SportImage/Walking.vue","webpack:///./src/components/Common/Images/SportImage/Walking.vue?ecc5","webpack:///./src/components/Common/Images/SportImage/index.vue","webpack:///./src/components/Common/Images/SportImage/index.vue?1dbe","webpack:///./src/components/Common/Loader.vue?3fcd","webpack:///./src/components/Common/Loader.vue","webpack:///./src/components/Common/Loader.vue?bdb0","webpack:///./src/components/Common/Modal.vue?343d","webpack:///./src/components/Common/Modal.vue","webpack:///./src/components/Common/Modal.vue?1686","webpack:///./src/custom-components.ts","webpack:///./src/directives.ts","webpack:///./src/main.ts","webpack:///./src/utils/index.ts","webpack:///./src/components/User/UserProfileTabs.vue?903b","webpack:///./src/store/modules/authUser/enums.ts","webpack:///./src/store/modules/root/enums.ts","webpack:///./src/store/modules/sports/enums.ts","webpack:///./src/store/modules/statistics/enums.ts","webpack:///./src/store/modules/users/enums.ts","webpack:///./src/store/constants.ts","webpack:///./src/locales sync [A-Za-z0-9-_,\\s]+\\.ts$/","webpack:///./src/components/NoConfig.vue?6e1d","webpack:///./src/components/Common/AlertMessage.vue?4526","webpack:///./src/components/Footer.vue?24d3"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","render","_ctx","_cache","$props","$setup","$data","$options","icon","text","props","String","required","Number","__exports__","sportColors","Hiking","Rowing","Running","Trail","Walking","sportIdColors","sports","colors","map","sport","id","label","sortSports","a","b","sportATranslatedLabel","translatedLabel","toLowerCase","sportBTranslatedLabel","translateSports","onlyActive","filter","is_active","sort","getSportLabel","workout","sport_id","useStore","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_component_UserPicture","user","username","nb_workouts","$t","total_distance","toFixed","nb_sports","components","UserPicture","WorkoutsActions","WorkoutsGetters","WorkoutsMutations","getStartDate","duration","day","weekStartingMonday","weekStartsOn","incrementDate","getDateWithTZ","dateInUTC","tz","Date","getCalendarStartAndEnd","date","monthStart","monthEnd","start","end","formatWorkoutDate","dateTime","dateFormat","timeFormat","workout_date","workout_time","ctx","normalize","_normalize","interpolate","_interpolate","list","_list","plural","_plural","admin","api","buttons","common","dashboard","statistics","workouts","_component_router_link","disabled","pagination","has_prev","to","path","query","getQuery","page","default","_","rangePagination","pages","active","has_next","setup","cursor","newQuery","assign","_component_Modal","displayModal","title","strongMessage","onConfirmAction","$event","deleteUserAccount","onCancelAction","updateDisplayModal","registrationDate","first_name","last_name","birthDate","location","bio","fromAdmin","authUser","onClick","$router","go","Boolean","store","getters","GETTERS","AUTH_USER_PROFILE","created_at","format","birth_date","dispatch","ACTIONS","DELETE_ACCOUNT","order_by","onChange","onSelectUpdate","order","toUpperCase","per_page","nb","emits","emit","sortList","defaultPage","defaultPerPage","getNumberQueryValue","queryValue","defaultValue","getStringQueryValue","availableValues","includes","locationQuery","orderByList","defaultOrderBy","options","queryOptions","defaultSort","workoutsPayloadKeys","getRange","stop","Array","from","currentPage","concat","suffixes","getReadableFileSize","fileSize","asText","Math","floor","log","size","suffix","pow","getFileSizeInMB","authUserPictureUrl","alt","picture","ready","registered","cached","updatefound","updated","offline","_component_NavBar","_component_Loader","_component_router_view","_component_NoConfig","_component_Footer","onMenuInteraction","updateHideScrollBar","appLoading","hideScrollBar","appConfig","displayScrollButton","scrollToTop","version","_component_Dropdown","isMenuOpen","openMenu","closeMenu","isAuthenticated","capitalize","logout","availableLanguages","language","selected","onSelected","updateLanguage","loadLocaleMessages","locales","messages","keys","forEach","matched","match","locale","legacy","fallbackLocale","globalInjection","localeFromLanguage","en","fr","languageLabels","availableLocales","global","IS_AUTHENTICATED","now","LANGUAGE","option","toString","commit","MUTATIONS","UPDATE_LANG","LOGOUT","innerHTML","Footer","NavBar","NoConfig","APP_CONFIG","APP_LOADING","isScrolledToBottom","element","getBoundingClientRect","top","innerHeight","bottom","scroll","onscroll","querySelector","scrollTo","behavior","GET_APPLICATION_CONFIG","for","_hoisted_14","_hoisted_15","_component_ErrorMessage","_component_Card","content","onSubmit","min","appData","max_users","edition","step","max_single_file_size","max_zip_file_size","gpx_limit_import","errorMessages","onCancel","router","ERROR_MESSAGES","updateForm","EMPTY_ERROR_MESSAGES","formData","UPDATE_APPLICATION_CONFIG","_component_AppStatsCards","appStatistics","is_registration_enabled","_component_StatCard","usersCount","sportsCount","workoutCount","uploadDirSize","StatCard","uploads_dir_size","users","$slots","AppStatsCards","Card","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_component_SportImage","translatedSports","danger","updateSportStatus","has_workouts","SPORTS","isActive","UPDATE_SPORTS","_component_FilterSelects","_component_Pagination","onUpdateSelect","reloadUsers","email","timezone","updateUser","FilterSelects","Pagination","route","USERS","USERS_PAGINATION","loadUsers","queryParams","GET_USERS","UPDATE_USER","queryParam","EMPTY_USERS","_component_UserHeader","_component_UserProfileTabs","tabs","selectedTab","tab","checked","onInput","getPath","UserHeader","UserProfileTabs","fistDayOfWeek","weekm","loading","USER_LOADING","_hoisted_20","_hoisted_21","_component_CustomTextArea","deleteAccount","updateProfile","userForm","password","password_conf","charLimit","input","onUpdateValue","updateBio","updateUserForm","UPDATE_USER_PROFILE","updateUserPicture","accept","updatePictureFile","fileSizeLimit","pictureFile","deleteUserPicture","DELETE_PICTURE","files","UPDATE_USER_PICTURE","lang","weekStart","UPDATE_USER_PREFERENCES","authApi","baseURL","interceptors","use","config","authToken","AUTH_TOKEN","auth","headers","Authorization","context","localStorage","removeItem","EMPTY_USER_STATS","CLEAR_AUTH_USER_TOKEN","UPDATE_USERS","EMPTY_WORKOUTS","EMPTY_WORKOUT","actions","CHECK_AUTH_USER","UPDATE_AUTH_TOKEN","GET_USER_PROFILE","res","status","UPDATE_AUTH_USER_PROFILE","GET_SPORTS","catch","LOGIN_OR_REGISTER","post","actionType","token","auth_token","setItem","redirectUrl","payload","UPDATE_USER_LOADING","finally","form","FormData","append","delete","SEND_PASSWORD_RESET_REQUEST","RESET_USER_PASSWORD","state","authUserProfile","IS_ADMIN","mutations","authUserState","UPDATE_APPLICATION_LOADING","GET_APPLICATION_STATS","UPDATE_APPLICATION_STATS","patch","application","APP_STATS","LOCALE","SET_ERROR_MESSAGES","root","SET_SPORTS","sportsState","GET_USER_STATS","filterType","params","UPDATE_USER_STATS","USER_STATS","statisticsState","EMPTY_USER","UPDATE_USERS_PAGINATION","GET_USER","UPDATE_USERS_LOADING","UPDATE_USER_IN_USERS","USER","USERS_LOADING","updatedUser","usersState","SET_WORKOUTS_PAGINATION","GET_CALENDAR_WORKOUTS","EMPTY_CALENDAR_WORKOUTS","GET_USER_WORKOUTS","GET_TIMELINE_WORKOUTS","GET_MORE_TIMELINE_WORKOUTS","GET_WORKOUT_DATA","SET_WORKOUT_LOADING","segmentUrl","segmentId","workoutId","segments","SET_WORKOUT","with_gpx","SET_WORKOUT_CHART_DATA","chart_data","SET_WORKOUT_GPX","gpx","DELETE_WORKOUT","EDIT_WORKOUT","ADD_WORKOUT","file","notes","ADD_WORKOUT_WITHOUT_GPX","CALENDAR_WORKOUTS","calendar_workouts","TIMELINE_WORKOUTS","timeline_workouts","USER_WORKOUTS","user_workouts","WORKOUT_DATA","workoutData","WORKOUTS_PAGINATION","ADD_TIMELINE_WORKOUTS","SET_CALENDAR_WORKOUTS","SET_TIMELINE_WORKOUTS","SET_USER_WORKOUTS","chartData","workoutsState","authUserModule","sportsModule","statsModule","usersModule","workoutsModule","getTabFromPath","regex","replace","routes","component","action","children","UserInfos","UserPreferences","ProfileEdition","UserInfosEdition","UserPictureEdition","UserPreferencesEdition","displaySegment","AdminMenu","AdminApplication","AdminSports","AdminUsers","history","pathsWithoutAuthentication","beforeEach","next","fullPath","maxLenght","updateText","toggleDropdown","isOpen","dropdownOptions","index","updateSelected","isArray","subMessage","_component_CyclingSport","_component_CyclingTransport","_component_Hiking","_component_MountainBiking","_component_MountainBikingElectric","_component_Rowing","_component_Running","_component_SkiingAlpine","_component_SkiingCrossCountry","_component_Trail","_component_Walking","style","fill","sportLabel","xmlns","xmlns:xlink","x","y","viewBox","xml:space","xmlns:svg","cx","cy","CyclingSport","CyclingTransport","MountainBiking","MountainBikingElectric","SkiingAlpine","SkiingCrossCountry","_component_i18n_t","keypath","customComponents","AlertMessage","CustomTextArea","Dropdown","ErrorMessage","Loader","Modal","SportImage","clickOutsideDirective","mounted","binding","clickOutsideEvent","contains","body","addEventListener","unmounted","removeEventListener","register","app","App","provide","i18n","directive","mount","getApiUrl","handleError","msg","response","split","AuthUserActions","AuthUserGetters","AuthUserMutations","RootActions","RootGetters","RootMutations","SportsActions","SportsGetters","SportsMutation","StatisticsActions","StatisticsGetters","StatisticsMutations","UsersActions","UsersGetters","UsersMutations","ROOT_STORE","SPORTS_STORE","STATS_STORE","AUTH_USER_STORE","USERS_STORE","WORKOUTS_STORE","webpackContext","req","webpackContextResolve"],"mappings":"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","file":"static/js/app.5434baf0.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"static/js/\" + ({\"admin\":\"admin\",\"main~workouts\":\"main~workouts\",\"main\":\"main\",\"workouts\":\"workouts\",\"profile\":\"profile\",\"reset\":\"reset\"}[chunkId]||chunkId) + \".\" + {\"admin\":\"4047df15\",\"main~workouts\":\"aa540c70\",\"main\":\"265d6693\",\"workouts\":\"f98d0408\",\"profile\":\"7e87449f\",\"reset\":\"98679f6c\",\"chunk-2d0c9189\":\"c81458cc\",\"chunk-2d0cf391\":\"020c75ea\",\"chunk-2d0da8f3\":\"c8c3e7e8\",\"chunk-2d2248b6\":\"d84473c1\",\"chunk-2d22523a\":\"4b710d99\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"admin\":1,\"main~workouts\":1,\"main\":1,\"workouts\":1,\"profile\":1,\"reset\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"static/css/\" + ({\"admin\":\"admin\",\"main~workouts\":\"main~workouts\",\"main\":\"main\",\"workouts\":\"workouts\",\"profile\":\"profile\",\"reset\":\"reset\"}[chunkId]||chunkId) + \".\" + {\"admin\":\"9f104fd3\",\"main~workouts\":\"539c93e4\",\"main\":\"0fb11713\",\"workouts\":\"0c5cfad5\",\"profile\":\"1e84a078\",\"reset\":\"165584bc\",\"chunk-2d0c9189\":\"31d6cfe0\",\"chunk-2d0cf391\":\"31d6cfe0\",\"chunk-2d0da8f3\":\"31d6cfe0\",\"chunk-2d2248b6\":\"31d6cfe0\",\"chunk-2d22523a\":\"31d6cfe0\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import { normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"stat-card\" }\nconst _hoisted_2 = { class: \"stat-content box\" }\nconst _hoisted_3 = { class: \"stat-icon\" }\nconst _hoisted_4 = { class: \"stat-details\" }\nconst _hoisted_5 = { class: \"stat-huge\" }\nconst _hoisted_6 = { class: \"stat\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"i\", {\n class: _normalizeClass([\"fa\", `fa-${_ctx.icon}`])\n }, null, 2)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, _toDisplayString(_ctx.value), 1),\n _createElementVNode(\"div\", _hoisted_6, _toDisplayString(_ctx.text), 1)\n ])\n ])\n ]))\n}","\n import { defineComponent } from 'vue'\n\n export default defineComponent({\n name: 'StatCard',\n props: {\n icon: {\n type: String,\n required: true,\n },\n value: {\n type: [String, Number],\n required: true,\n },\n text: {\n type: String,\n required: true,\n },\n },\n })\n","import { render } from \"./StatCard.vue?vue&type=template&id=32e77e48&ts=true\"\nimport script from \"./StatCard.vue?vue&type=script&lang=ts\"\nexport * from \"./StatCard.vue?vue&type=script&lang=ts\"\n\nimport \"./StatCard.vue?vue&type=style&index=0&id=32e77e48&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { ISport, ITranslatedSport } from '@/types/sports'\nimport { IWorkout } from '@/types/workouts'\n\n// TODO: allow user to change colors\nexport const sportColors: Record = {\n 'Cycling (Sport)': '#4c9792',\n 'Cycling (Transport)': '#88af98',\n Hiking: '#bb757c',\n 'Mountain Biking': '#d4b371',\n 'Mountain Biking (Electric)': '#fc9d6f',\n Rowing: '#fcce72',\n Running: '#835b83',\n 'Skiing (Alpine)': '#67a4bd',\n 'Skiing (Cross Country)': '#9498d0',\n Trail: '#09a98a',\n Walking: '#838383',\n}\n\nexport const sportIdColors = (sports: ISport[]): Record => {\n const colors: Record = {}\n sports.map((sport) => (colors[sport.id] = sportColors[sport.label]))\n return colors\n}\n\nconst sortSports = (a: ITranslatedSport, b: ITranslatedSport): number => {\n const sportATranslatedLabel = a.translatedLabel.toLowerCase()\n const sportBTranslatedLabel = b.translatedLabel.toLowerCase()\n return sportATranslatedLabel > sportBTranslatedLabel\n ? 1\n : sportATranslatedLabel < sportBTranslatedLabel\n ? -1\n : 0\n}\n\nexport const translateSports = (\n sports: ISport[],\n t: CallableFunction,\n onlyActive = false\n): ITranslatedSport[] =>\n sports\n .filter((sport) => (onlyActive ? sport.is_active : true))\n .map((sport) => ({\n ...sport,\n translatedLabel: t(`sports.${sport.label}.LABEL`),\n }))\n .sort(sortSports)\n\nexport const getSportLabel = (workout: IWorkout, sports: ISport[]): string => {\n return sports\n .filter((sport) => sport.id === workout.sport_id)\n .map((sport) => sport.label)[0]\n}\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./UserPicture.vue?vue&type=style&index=0&id=4aed39f4&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Card.vue?vue&type=style&index=0&id=c5956538&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Pagination.vue?vue&type=style&index=0&id=56dc89d4&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./UserPictureEdition.vue?vue&type=style&index=0&id=0ea4550a&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Modal.vue?vue&type=style&index=0&id=366182c4&lang=scss&scoped=true\"","import { useStore as VuexStore } from 'vuex'\n\nimport { Store } from '@/store/types'\n\nexport function useStore(): Store {\n return VuexStore() as Store\n}\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./AdminSports.vue?vue&type=style&index=0&id=6d930723&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./AdminApplication.vue?vue&type=style&index=0&id=26175b66&lang=scss&scoped=true\"","import { resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-a6fa997c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"box user-header\" }\nconst _hoisted_2 = { class: \"user-details\" }\nconst _hoisted_3 = { class: \"user-name\" }\nconst _hoisted_4 = { class: \"user-stats\" }\nconst _hoisted_5 = { class: \"user-stat\" }\nconst _hoisted_6 = { class: \"stat-number\" }\nconst _hoisted_7 = { class: \"stat-label\" }\nconst _hoisted_8 = { class: \"user-stat\" }\nconst _hoisted_9 = { class: \"stat-number\" }\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"stat-label\" }, \"km\", -1))\nconst _hoisted_11 = { class: \"user-stat hide-small\" }\nconst _hoisted_12 = { class: \"stat-number\" }\nconst _hoisted_13 = { class: \"stat-label\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_UserPicture = _resolveComponent(\"UserPicture\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_UserPicture, { user: _ctx.user }, null, 8, [\"user\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(_ctx.user.username), 1),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"span\", _hoisted_6, _toDisplayString(_ctx.user.nb_workouts), 1),\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(_ctx.$t('workouts.WORKOUT', _ctx.user.nb_workouts)), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(Number(_ctx.user.total_distance).toFixed(0)), 1),\n _hoisted_10\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(_ctx.user.nb_sports), 1),\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('workouts.SPORT', _ctx.user.nb_sports)), 1)\n ])\n ])\n ])\n ]))\n}","\n import { PropType, defineComponent } from 'vue'\n\n import UserPicture from '@/components/User/UserPicture.vue'\n import { IUserProfile } from '@/types/user'\n\n export default defineComponent({\n name: 'ProfileDisplay',\n components: {\n UserPicture,\n },\n props: {\n user: {\n type: Object as PropType,\n required: true,\n },\n },\n })\n","import { render } from \"./UserHeader.vue?vue&type=template&id=a6fa997c&scoped=true&ts=true\"\nimport script from \"./UserHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./UserHeader.vue?vue&type=script&lang=ts\"\n\nimport \"./UserHeader.vue?vue&type=style&index=0&id=a6fa997c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-a6fa997c\"]])\n\nexport default __exports__","export enum WorkoutsActions {\n ADD_WORKOUT = 'ADD_WORKOUT',\n ADD_WORKOUT_WITHOUT_GPX = 'ADD_WORKOUT_WITHOUT_GPX',\n DELETE_WORKOUT = 'DELETE_WORKOUT',\n EDIT_WORKOUT = 'EDIT_WORKOUT',\n GET_CALENDAR_WORKOUTS = 'GET_CALENDAR_WORKOUTS',\n GET_USER_WORKOUTS = 'GET_USER_WORKOUTS',\n GET_TIMELINE_WORKOUTS = 'GET_TIMELINE_WORKOUTS',\n GET_MORE_TIMELINE_WORKOUTS = 'GET_MORE_TIMELINE_WORKOUTS',\n GET_WORKOUT_DATA = 'GET_WORKOUT_DATA',\n}\n\nexport enum WorkoutsGetters {\n CALENDAR_WORKOUTS = 'CALENDAR_WORKOUTS',\n TIMELINE_WORKOUTS = 'TIMELINE_WORKOUTS',\n USER_WORKOUTS = 'USER_WORKOUTS',\n WORKOUT_DATA = 'WORKOUT_DATA',\n WORKOUTS_PAGINATION = 'WORKOUTS_PAGINATION',\n}\n\nexport enum WorkoutsMutations {\n ADD_TIMELINE_WORKOUTS = 'ADD_TIMELINE_WORKOUTS',\n EMPTY_WORKOUTS = 'EMPTY_WORKOUTS',\n EMPTY_CALENDAR_WORKOUTS = 'EMPTY_CALENDAR_WORKOUTS',\n EMPTY_WORKOUT = 'EMPTY_WORKOUT',\n SET_CALENDAR_WORKOUTS = 'SET_CALENDAR_WORKOUTS',\n SET_TIMELINE_WORKOUTS = 'SET_TIMELINE_WORKOUTS',\n SET_USER_WORKOUTS = 'SET_USER_WORKOUTS',\n SET_WORKOUT = 'SET_WORKOUT',\n SET_WORKOUT_GPX = 'SET_WORKOUT_GPX',\n SET_WORKOUT_CHART_DATA = 'SET_WORKOUT_CHART_DATA',\n SET_WORKOUT_LOADING = 'SET_WORKOUT_LOADING',\n SET_WORKOUTS_PAGINATION = 'SET_WORKOUTS_PAGINATION',\n}\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./AdminMenu.vue?vue&type=style&index=0&id=4f30aa64&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./ErrorMessage.vue?vue&type=style&index=0&id=5c177a93&scoped=true&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./UserInfos.vue?vue&type=style&index=0&id=17c7b32c&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./UserHeader.vue?vue&type=style&index=0&id=a6fa997c&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./UserInfosEdition.vue?vue&type=style&index=0&id=e9d6897c&lang=scss\"","import {\n addDays,\n addMonths,\n addYears,\n endOfMonth,\n endOfWeek,\n format,\n startOfMonth,\n startOfWeek,\n startOfYear,\n} from 'date-fns'\nimport { utcToZonedTime } from 'date-fns-tz'\n\nexport const getStartDate = (\n duration: string,\n day: Date,\n weekStartingMonday: boolean\n): Date => {\n switch (duration) {\n case 'week':\n return startOfWeek(day, { weekStartsOn: weekStartingMonday ? 1 : 0 })\n case 'year':\n return startOfYear(day)\n case 'month':\n return startOfMonth(day)\n default:\n throw new Error(\n `Invalid duration, expected: \"week\", \"month\", \"year\", got: \"${duration}\"`\n )\n }\n}\n\nexport const incrementDate = (duration: string, day: Date): Date => {\n switch (duration) {\n case 'week':\n return addDays(day, 7)\n case 'year':\n return addYears(day, 1)\n case 'month':\n return addMonths(day, 1)\n default:\n throw new Error(\n `Invalid duration, expected: \"week\", \"month\", \"year\", got: \"${duration}\"`\n )\n }\n}\n\nexport const getDateWithTZ = (dateInUTC: string, tz: string): Date => {\n return utcToZonedTime(new Date(dateInUTC), tz)\n}\n\nexport const getCalendarStartAndEnd = (\n date: Date,\n weekStartingMonday: boolean\n): Record => {\n const monthStart = startOfMonth(date)\n const monthEnd = endOfMonth(date)\n const weekStartsOn = weekStartingMonday ? 1 : 0\n return {\n start: startOfWeek(monthStart, { weekStartsOn }),\n end: endOfWeek(monthEnd, { weekStartsOn }),\n }\n}\n\nexport const formatWorkoutDate = (\n dateTime: Date,\n dateFormat: string | null = null,\n timeFormat: string | null = null\n): Record => {\n if (!dateFormat) {\n dateFormat = 'yyyy/MM/dd'\n }\n if (!timeFormat) {\n timeFormat = 'HH:mm'\n }\n return {\n workout_date: format(dateTime, dateFormat),\n workout_time: format(dateTime, timeFormat),\n }\n}\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./App.vue?vue&type=style&index=0&id=317a6409&lang=scss&scoped=true\"","export default {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Action\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter/retirer des droits d'administration, supprimer des comptes utilisateurs.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"APPLICATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application\"])},\n \"APP_CONFIG\": {\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nombre maximum d'utilisateurs actifs \"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Si égal à 0, pas limite d'inscription\"])},\n \"MAX_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Taille max. des archives zip (en Mo) \"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Taille max. des fichiers (en Mo) \"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Configuration de l'application\"])},\n \"ZIP_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nombre max. de fichiers dans une archive zip \"])}\n },\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revenir à l'admin\"])},\n \"CONFIRM_USER_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Etes-vous sûr de vouloir supprimer le compte de \", _interpolate(_list(0)), \" ? Toutes les données seront définitivement.\"])},\n \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer l'utilisateur\"])},\n \"ENABLE_DISABLE_SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activer/désactiver des sports.\"])},\n \"REGISTRATION_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Les inscriptions sont actuellement désactivées.\"])},\n \"REGISTRATION_ENABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Les inscriptions sont actuellement activées.\"])},\n \"SPORTS\": {\n \"TABLE\": {\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Actif\"])},\n \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"des séances existent\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Image\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration - Sports\"])}\n },\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Configurer l'application (nombre maximum d'utilisateurs inscrits, taille maximale des fichers).\"])},\n \"USER\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"utilisateur\"]), _normalize([\"utilisateurs\"])])},\n \"USERS\": {\n \"TABLE\": {\n \"ADD_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter les drois d'admin\"])},\n \"REMOVE_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Retirer les drois d'admin\"])}\n },\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"status administrateur\"])},\n \"CREATED_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date d'inscription\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nom d'utilisateur\"])},\n \"WORKOUTS_COUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nombre de séances\"])}\n }\n }\n }\n}","export default {\n \"ERROR\": {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur. Veuillez réessayer ou contacter l'administrateur.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email : une adresse email valide doit être fournie.\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors de la récupération de la configuration.\"])},\n \"error when updating configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur lors de la mise à jour de la configuration\"])},\n \"error, please try again or contact the administrator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur, veuillez réessayer ou contacter l'administrateur.\"])},\n \"error, registration is disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur, les inscriptions sont désactivées.\"])},\n \"file extension not allowed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Extension de fichier non autorisée.\"])},\n \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"La taille du fichier est supérieure à la limite autorisée.\"])},\n \"invalid credentials\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Identifiants invalides.\"])},\n \"invalid payload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Données fournies incorrectes.\"])},\n \"invalid token, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jeton de connexion invalide, merci de vous reconnecter.\"])},\n \"invalid token, please request a new token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jeton de connexion, merci de vous reconnecter.\"])},\n \"no file part\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de fichier fourni.\"])},\n \"no selected file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de fichier sélectionné.\"])},\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur Réseau.\"])},\n \"password: password and password confirmation do not match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe : les mots de passe saisis sont différents.\"])},\n \"provide a valid auth token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Merci de fournir un jeton de connexion valide.\"])},\n \"password: 8 characters required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe : 8 caractères minimum.\"])},\n \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ce sport n'existe pas.\"])},\n \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Signature expirée. Merci de vous reconnecter.\"])},\n \"sorry, that user already exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Désolé, cet utilisateur existe déjà.\"])},\n \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inscription validée.\"])},\n \"user does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'utilisateur n'existe pas\"])},\n \"username: 3 to 12 characters required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nom d'utilisateur : 3 à 12 caractères requis.\"])},\n \"you can not delete your account, no other user has admin rights\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous ne pouvez pas supprimer votre compte, aucun autre utilisateur n'a des droits d'administration.\"])},\n \"you do not have permissions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous n'avez pas les permissions nécessaires.\"])}\n },\n \"PAGINATION\": {\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"précédent\"])},\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"suivant\"])}\n }\n}","export default {\n \"BACK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Précédent\"])},\n \"CANCEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Annuler\"])},\n \"DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer mon compte\"])},\n \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Désactiver\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier\"])},\n \"ENABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activer\"])},\n \"FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtrer\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se connecter\"])},\n \"NO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Non\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S'inscrire\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Valider\"])},\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Oui\"])}\n}","export default {\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirmation\"])},\n \"DAY\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"jour\"]), _normalize([\"jours\"])])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accueil\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ici\"])},\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"trier par \"])}\n },\n \"ORDER\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"tri\"])},\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ascendant\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"descendant\"])}\n },\n \"PER_PAGE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"par page\"])}\n }\n },\n \"TOTAL \": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Total\"])}\n}","export default {\n \"DASHBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tableau de Bord\"])},\n \"THIS_MONTH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ce mois\"])}\n}","export default {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Erreur. Veuillez réessayer ou contacter l'administrateur.\"])},\n \"APP_ERROR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"L'application semble rencontrer quelques problèmes.
Veuillez réessayer plus tard ou contacter l'administrateur.\"])},\n \"NOT_FOUND\": {\n \"PAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Page introuvable\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séance introuvable\"])}\n }\n}","export default {\n \"Cycling (Sport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vélo (Sport)\"])}\n },\n \"Cycling (Transport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vélo (Transport)\"])}\n },\n \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Randonnée\"])}\n },\n \"Mountain Biking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"VTT\"])}\n },\n \"Mountain Biking (Electric)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"VTT (Electrique)\"])}\n },\n \"Rowing\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Aviron\"])}\n },\n \"Running\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Course\"])}\n },\n \"Skiing (Alpine)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ski (Alpin)\"])}\n },\n \"Skiing (Cross Country)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ski (Randonnée)\"])}\n },\n \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trail\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Marche\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistiques\"])},\n \"TIME_FRAMES\": {\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"semaine\"])},\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"mois\"])},\n \"year\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"année\"])}\n }\n}","export default {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ALREADY_HAVE_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vous avez déjà un compte ?\"])},\n \"CONFIRM_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etes-vous sûr de vouloir supprimer votre compte ? Toutes les données seront définitivement effacés.\"])},\n \"EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email\"])},\n \"ENTER_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Saisir une adresse email\"])},\n \"ENTER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Saisir un mot de passe\"])},\n \"ENTER_PASSWORD_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirmer le mot de passe\"])},\n \"INVALID_TOKEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Jeton invalide, veullez demander une nouvelle réinitialisation de mot de passe.\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langue\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se connecter\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Se déconnecter\"])},\n \"PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe\"])},\n \"PASSWORD_CONFIRM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirmation du mot de passe\"])},\n \"PASSWORD_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirmation du mot de passe\"])},\n \"PASSWORD_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mot de passe oublié ?\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinitialisation du mot de passe\"])},\n \"PASSWORD_SENT_EMAIL_TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vérifiez votre boite mail. Si vote adresse est dans notre base de données, vous recevrez un email avec un lien pour réinitialiser votre mot de passe.\"])},\n \"PASSWORD_UPDATED\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Votre mot de passe a été mis à jour. Cliquez \", _interpolate(_list(0)), \" pour vous connecter.\"])},\n \"PROFILE\": {\n \"BACK_TO_PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revenir au profil\"])},\n \"BIO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"BIRTH_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Date de naissance\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier le profil\"])},\n \"EDIT_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier les préférences\"])},\n \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Premier jour de la semaine\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Prénom\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Langue\"])},\n \"LAST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nom\"])},\n \"LOCATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lieu\"])},\n \"MONDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lundi\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Image de profil\"])},\n \"PICTURE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour de l'image de profil\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mettre à jour l'image\"])},\n \"PICTURE_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Supprimer\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour des préférences\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mise à jour du profil\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Date d'inscription\"])},\n \"SUNDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dimanche\"])},\n \"TABS\": {\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"image\"])},\n \"PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"préférences\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"profil\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fuseau horaire\"])}\n },\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"S'inscrire\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Désolé, les inscriptions sont désactivées.\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Réinitialiser votre mot de passe\"])},\n \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"photo de l'utilisateur\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Nom d'utilisateur\"])}\n}","export default {\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajouter une séance\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"analyse\"])},\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"dénivelé positif\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse moyenne\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse moy.\"])},\n \"BACK_TO_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"revenir à la séance\"])},\n \"DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date\"])},\n \"DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"dénivelé négatif\"])},\n \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"afficher les filtres\"])},\n \"DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"distance\"])},\n \"DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"durée\"])},\n \"EDIT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Modifier la séance\"])},\n \"ELEVATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitude\"])},\n \"END\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fin\"])},\n \"FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"à partir de\"])},\n \"GPX_FILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fichier .gpx\"])},\n \"HIDE_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"masquer les filtres\"])},\n \"KM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"km\"])},\n \"LATEST_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séances récentes\"])},\n \"LOAD_MORE_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Charger les séances suivantes\"])},\n \"MAX_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitude max\"])},\n \"MAX_FILES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fichiers max. \"])},\n \"MAX_SIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"taille max. \"])},\n \"MAX_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse max\"])},\n \"MIN_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"altitude min\"])},\n \"NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Segment suivant\"])},\n \"NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séance suivante\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"données issues du fichier gpx, sans correction\"])},\n \"NO_FILE_PROVIDED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de fichier fourni\"])},\n \"NO_FOLDER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pas de répertoire\"])},\n \"NO_MAP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de carte\"])},\n \"NO_NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de segment suivant\"])},\n \"NO_NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de séance suivante\"])},\n \"NO_NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de notes\"])},\n \"NO_PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de segment précédent\"])},\n \"NO_PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de séance précédente\"])},\n \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de records.\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pas de séances.\"])},\n \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notes\"])},\n \"PAUSES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pauses\"])},\n \"PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Segment précédent\"])},\n \"PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Séance précédente\"])},\n \"RECORD\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"record\"]), _normalize([\"records\"])])},\n \"RECORD_AS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vitesse moy.\"])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Distance la + longue\"])},\n \"RECORD_LD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Durée la + longue\"])},\n \"RECORD_MS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vitesse max.\"])},\n \"REMAINING_CHARS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nombre de caractères restants \"])},\n \"SEGMENT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"segment\"]), _normalize([\"segments\"])])},\n \"SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vitesse\"])},\n \"SPORT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"sport\"]), _normalize([\"sports\"])])},\n \"START\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"début\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"titre\"])},\n \"TO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"jusqu'au\"])},\n \"TOTAL_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"durée totale\"])},\n \"UPLOAD_FIRST_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ajoutez votre première séance !\"])},\n \"WEATHER\": {\n \"HUMIDITY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"humidité\"])},\n \"TEMPERATURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"température\"])},\n \"WIND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"vent\"])},\n \"DARK_SKY\": {\n \"clear-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ensoleillé\"])},\n \"clear-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nuit claire\"])},\n \"cloudy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nuageux\"])},\n \"fog\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"brouillard\"])},\n \"partly-cloudy-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partiellement nuageux\"])},\n \"partly-cloudy-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"nuit partiellement nuageuse\"])},\n \"rain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pluie\"])},\n \"sleet\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"neige fondue\"])},\n \"snow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"neige\"])},\n \"wind\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"venteux\"])}\n }\n },\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"avec un fichier .gpx\"])},\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sans fichier .gpx\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"séance\"]), _normalize([\"séances\"])])},\n \"WORKOUT_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date de la séance\"])},\n \"WORKOUT_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Etes-vous sûr de vouloir supprimer cette séance ?\"])},\n \"ZIP_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"archive .zip\"])},\n \"ZIP_ARCHIVE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ou une archive .zip contenant des fichiers .gpx\"])}\n}","import AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-56dc89d4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n class: \"pagination-center\",\n \"aria-label\": \"navigation\"\n}\nconst _hoisted_2 = { class: \"pagination\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-left\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-right\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"nav\", _hoisted_1, [\n _createElementVNode(\"ul\", _hoisted_2, [\n _createElementVNode(\"li\", {\n class: _normalizeClass([\"page-prev\", { disabled: !_ctx.pagination.has_prev }])\n }, [\n _createVNode(_component_router_link, {\n class: \"page-link\",\n to: { path: _ctx.path, query: _ctx.getQuery(_ctx.pagination.page, -1) },\n event: _ctx.pagination.has_prev ? 'click' : '',\n disabled: !_ctx.pagination.has_prev\n }, {\n default: _withCtx(() => [\n _hoisted_3,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('api.PAGINATION.PREVIOUS')), 1)\n ]),\n _: 1\n }, 8, [\"to\", \"event\", \"disabled\"])\n ], 2),\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.rangePagination(_ctx.pagination.pages, _ctx.pagination.page), (page) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: page,\n class: _normalizeClass([\"page\", { active: page === _ctx.pagination.page }])\n }, [\n (page === '...')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, \" ... \"))\n : (_openBlock(), _createBlock(_component_router_link, {\n key: 1,\n class: \"page-link\",\n to: { path: _ctx.path, query: _ctx.getQuery(+page) }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(page), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]))\n ], 2))\n }), 128)),\n _createElementVNode(\"li\", {\n class: _normalizeClass([\"page-next\", { disabled: !_ctx.pagination.has_next }])\n }, [\n _createVNode(_component_router_link, {\n class: \"page-link\",\n to: { path: _ctx.path, query: _ctx.getQuery(_ctx.pagination.page, 1) },\n event: _ctx.pagination.has_next ? 'click' : '',\n disabled: !_ctx.pagination.has_next\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('api.PAGINATION.NEXT')) + \" \", 1),\n _hoisted_5\n ]),\n _: 1\n }, 8, [\"to\", \"event\", \"disabled\"])\n ], 2)\n ])\n ]))\n}","\n import { PropType, defineComponent } from 'vue'\n\n import { IPagination, TPaginationPayload } from '@/types/api'\n import { rangePagination } from '@/utils/api'\n\n export default defineComponent({\n name: 'Pagination',\n props: {\n pagination: {\n type: Object as PropType,\n required: true,\n },\n path: {\n type: String,\n required: true,\n },\n query: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n function getQuery(page: number, cursor?: number): TPaginationPayload {\n const newQuery = Object.assign({}, props.query)\n newQuery.page = cursor ? page + cursor : page\n return newQuery\n }\n return { rangePagination, getQuery }\n },\n })\n","import { render } from \"./Pagination.vue?vue&type=template&id=56dc89d4&scoped=true&ts=true\"\nimport script from \"./Pagination.vue?vue&type=script&lang=ts\"\nexport * from \"./Pagination.vue?vue&type=script&lang=ts\"\n\nimport \"./Pagination.vue?vue&type=style&index=0&id=56dc89d4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-56dc89d4\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, withModifiers as _withModifiers, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-17c7b32c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"user-infos\",\n class: \"description-list\"\n}\nconst _hoisted_2 = { class: \"user-bio\" }\nconst _hoisted_3 = {\n key: 1,\n class: \"profile-buttons\"\n}\nconst _hoisted_4 = {\n key: 2,\n class: \"profile-buttons\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Modal = _resolveComponent(\"Modal\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.displayModal)\n ? (_openBlock(), _createBlock(_component_Modal, {\n key: 0,\n title: _ctx.$t('common.CONFIRMATION'),\n message: \"admin.CONFIRM_USER_ACCOUNT_DELETION\",\n strongMessage: _ctx.user.username,\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (_ctx.deleteUserAccount(_ctx.user.username))),\n onCancelAction: _cache[1] || (_cache[1] = ($event: any) => (_ctx.updateDisplayModal(false)))\n }, null, 8, [\"title\", \"strongMessage\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"dl\", null, [\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.registrationDate), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.FIRST_NAME')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.user.first_name), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.LAST_NAME')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.user.last_name), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.BIRTH_DATE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.birthDate), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.LOCATION')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.user.location), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.BIO')) + \":\", 1),\n _createElementVNode(\"dd\", _hoisted_2, _toDisplayString(_ctx.user.bio), 1)\n ]),\n (_ctx.fromAdmin)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_ctx.authUser.username !== _ctx.user.username)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"danger\",\n onClick: _cache[2] || (_cache[2] = _withModifiers(($event: any) => (_ctx.updateDisplayModal(true)), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.DELETE_USER')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.$router.go(-1)))\n }, _toDisplayString(_ctx.$t('buttons.BACK')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"button\", {\n onClick: _cache[4] || (_cache[4] = ($event: any) => (_ctx.$router.push('/profile/edit')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.EDIT')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[5] || (_cache[5] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ]))\n ]))\n}","\n import { format } from 'date-fns'\n import {\n ComputedRef,\n PropType,\n Ref,\n computed,\n defineComponent,\n ref,\n } from 'vue'\n\n import { AUTH_USER_STORE } from '@/store/constants'\n import { IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n export default defineComponent({\n name: 'UserInfos',\n props: {\n user: {\n type: Object as PropType,\n required: true,\n },\n fromAdmin: {\n type: Boolean,\n default: false,\n },\n },\n setup(props) {\n const store = useStore()\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const registrationDate = computed(() =>\n props.user.created_at\n ? format(new Date(props.user.created_at), 'dd/MM/yyyy HH:mm')\n : ''\n )\n const birthDate = computed(() =>\n props.user.birth_date\n ? format(new Date(props.user.birth_date), 'dd/MM/yyyy')\n : ''\n )\n let displayModal: Ref = ref(false)\n\n function updateDisplayModal(value: boolean) {\n displayModal.value = value\n }\n function deleteUserAccount(username: string) {\n store.dispatch(AUTH_USER_STORE.ACTIONS.DELETE_ACCOUNT, { username })\n }\n\n return {\n authUser,\n birthDate,\n displayModal,\n registrationDate,\n deleteUserAccount,\n updateDisplayModal,\n }\n },\n })\n","import { render } from \"./UserInfos.vue?vue&type=template&id=17c7b32c&scoped=true&ts=true\"\nimport script from \"./UserInfos.vue?vue&type=script&lang=ts\"\nexport * from \"./UserInfos.vue?vue&type=script&lang=ts\"\n\nimport \"./UserInfos.vue?vue&type=style&index=0&id=17c7b32c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-17c7b32c\"]])\n\nexport default __exports__","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./FilterSelects.vue?vue&type=style&index=0&id=50c78582&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=c81580c0&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./StatCard.vue?vue&type=style&index=0&id=32e77e48&lang=scss\"","import { toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-50c78582\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"table-selects\" }\nconst _hoisted_2 = [\"value\"]\nconst _hoisted_3 = [\"value\"]\nconst _hoisted_4 = [\"value\"]\nconst _hoisted_5 = [\"value\"]\nconst _hoisted_6 = [\"value\"]\nconst _hoisted_7 = [\"value\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"label\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('common.SELECTS.ORDER_BY.LABEL')) + \": \", 1),\n _createElementVNode(\"select\", {\n name: \"order_by\",\n id: \"order_by\",\n value: _ctx.query.order_by,\n onChange: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.onSelectUpdate && _ctx.onSelectUpdate(...args)))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.order_by, (order) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: order,\n key: order\n }, _toDisplayString(_ctx.$t(`${_ctx.message}.${order.toUpperCase()}`)), 9, _hoisted_3))\n }), 128))\n ], 40, _hoisted_2)\n ]),\n _createElementVNode(\"label\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('common.SELECTS.ORDER.LABEL')) + \": \", 1),\n _createElementVNode(\"select\", {\n name: \"order\",\n id: \"order\",\n value: _ctx.query.order,\n onChange: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.onSelectUpdate && _ctx.onSelectUpdate(...args)))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.sort, (order) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: order,\n key: order\n }, _toDisplayString(_ctx.$t(`common.SELECTS.ORDER.${order.toUpperCase()}`)), 9, _hoisted_5))\n }), 128))\n ], 40, _hoisted_4)\n ]),\n _createElementVNode(\"label\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('common.SELECTS.PER_PAGE.LABEL')) + \": \", 1),\n _createElementVNode(\"select\", {\n name: \"per_page\",\n id: \"per_page\",\n value: _ctx.query.per_page,\n onChange: _cache[2] || (_cache[2] = \n//@ts-ignore\n(...args) => (_ctx.onSelectUpdate && _ctx.onSelectUpdate(...args)))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.per_page, (nb) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: nb,\n key: nb\n }, _toDisplayString(nb), 9, _hoisted_7))\n }), 128))\n ], 40, _hoisted_6)\n ])\n ]))\n}","\n import { PropType, defineComponent } from 'vue'\n\n import { TPaginationPayload } from '@/types/api'\n\n export default defineComponent({\n name: 'FilterSelects',\n props: {\n order_by: {\n type: Object as PropType,\n required: true,\n },\n query: {\n type: Object as PropType,\n required: true,\n },\n sort: {\n type: Object as PropType,\n required: true,\n },\n message: {\n type: String,\n required: true,\n },\n },\n emits: ['updateSelect'],\n setup(props, { emit }) {\n function onSelectUpdate(event: Event & { target: HTMLInputElement }) {\n emit('updateSelect', event.target.id, event.target.value)\n }\n\n return {\n per_page: [10, 25, 50, 100],\n onSelectUpdate,\n }\n },\n })\n","import { render } from \"./FilterSelects.vue?vue&type=template&id=50c78582&scoped=true&ts=true\"\nimport script from \"./FilterSelects.vue?vue&type=script&lang=ts\"\nexport * from \"./FilterSelects.vue?vue&type=script&lang=ts\"\n\nimport \"./FilterSelects.vue?vue&type=style&index=0&id=50c78582&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-50c78582\"]])\n\nexport default __exports__","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./NavBar.vue?vue&type=style&index=0&id=9d3d8adc&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Dropdown.vue?vue&type=style&index=0&id=5ef2ddef&scoped=true&lang=scss\"","import { LocationQuery } from 'vue-router'\n\nimport { IQueryOptions, TPaginationPayload } from '@/types/api'\n\nexport const sortList: string[] = ['asc', 'desc']\nexport const defaultPage = 1\nexport const defaultPerPage = 10\n\nexport const getNumberQueryValue = (\n queryValue: string | (string | null)[] | null,\n defaultValue: number\n): number => {\n return queryValue && typeof queryValue === 'string' && +queryValue > 0\n ? +queryValue\n : defaultValue\n}\n\nexport const getStringQueryValue = (\n queryValue: string | (string | null)[] | null,\n availableValues: string[],\n defaultValue: string\n): string => {\n return queryValue &&\n typeof queryValue === 'string' &&\n availableValues.includes(queryValue)\n ? queryValue\n : defaultValue\n}\n\nexport const getQuery = (\n locationQuery: LocationQuery,\n orderByList: string[],\n defaultOrderBy: string,\n options?: IQueryOptions\n): TPaginationPayload => {\n const queryOptions = options || {}\n const defaultSort = queryOptions.defaultSort || 'asc'\n const query = queryOptions.query || {}\n\n query.page = getNumberQueryValue(locationQuery.page, defaultPage)\n query.per_page = getNumberQueryValue(locationQuery.per_page, defaultPerPage)\n query.order = getStringQueryValue(locationQuery.order, sortList, defaultSort)\n query.order_by = getStringQueryValue(\n locationQuery.order_by,\n orderByList,\n defaultOrderBy\n )\n\n return query\n}\n\nexport const workoutsPayloadKeys = [\n 'from',\n 'to',\n 'ave_speed_from',\n 'ave_speed_to',\n 'max_speed_from',\n 'max_speed_to',\n 'distance_from',\n 'distance_to',\n 'duration_from',\n 'duration_to',\n 'sport_id',\n]\n\nconst getRange = (stop: number, start = 1): number[] => {\n return Array.from({ length: stop - start + 1 }, (_, i) => start + i)\n}\n\nexport const rangePagination = (\n pages: number,\n currentPage: number\n): (string | number)[] => {\n if (pages < 0) {\n return []\n }\n\n if (pages < 9) {\n return getRange(pages)\n }\n\n let pagination: (string | number)[] = [1, 2]\n if (currentPage < 4) {\n pagination = pagination.concat([3, 4, 5])\n } else if (currentPage < 6) {\n pagination = pagination.concat(getRange(currentPage + 2, 3))\n } else {\n pagination = pagination.concat(['...'])\n if (currentPage < pages - 2) {\n pagination = pagination.concat(getRange(currentPage + 2, currentPage - 2))\n }\n }\n if (currentPage + 2 <= pages - 2) {\n pagination = pagination.concat(['...'])\n pagination = pagination.concat(getRange(pages, pages - 1))\n } else {\n if (\n pagination[pagination.length - 1] !== '...' &&\n pagination[pagination.length - 1] >= pages - 2 &&\n pagination[pagination.length - 1] < pages\n ) {\n pagination = pagination.concat(\n getRange(pages, +pagination[pagination.length - 1] + 1)\n )\n } else {\n pagination = pagination.concat(\n getRange(\n pages,\n currentPage < pages - 3 ? currentPage + 3 : currentPage - 5\n )\n )\n }\n }\n\n return pagination\n}\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./AppStatsCards.vue?vue&type=style&index=0&id=cd52bcc2&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./CustomTextArea.vue?vue&type=style&index=0&id=ad3739fc&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Loader.vue?vue&type=style&index=0&id=8bf75da8&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./AdminUsers.vue?vue&type=style&index=0&id=eb17bef8&lang=scss&scoped=true\"","export default {\n \"ACTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Action\"])},\n \"ADMIN_RIGHTS_DELETE_USER_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add/remove admin rights, delete user account.\"])},\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ADMINISTRATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"APPLICATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application\"])},\n \"APP_CONFIG\": {\n \"MAX_USERS_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. number of active users\"])},\n \"MAX_USERS_HELP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"If 0, no limitation on registration.\"])},\n \"MAX_FILES_IN_ZIP_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. files of zip archive\"])},\n \"SINGLE_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. size of uploaded files (in Mb)\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Application configuration\"])},\n \"ZIP_UPLOAD_MAX_SIZE_LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. size of zip archive (in Mb)\"])}\n },\n \"BACK_TO_ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back to admin\"])},\n \"CONFIRM_USER_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Are you sure you want to delete \", _interpolate(_list(0)), \" account? All data will be deleted, this cannot be undone.\"])},\n \"DELETE_USER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete user\"])},\n \"ENABLE_DISABLE_SPORTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enable/disable sports.\"])},\n \"REGISTRATION_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration is currently disabled.\"])},\n \"REGISTRATION_ENABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration is currently enabled.\"])},\n \"SPORTS\": {\n \"TABLE\": {\n \"ACTIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Active\"])},\n \"HAS_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"workouts exist\"])},\n \"IMAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Image\"])},\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])}\n },\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sports administration\"])}\n },\n \"UPDATE_APPLICATION_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Update application configuration (maximum number of registered users, maximum files size).\"])},\n \"USER\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"user\"]), _normalize([\"users\"])])},\n \"USERS\": {\n \"TABLE\": {\n \"ADD_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add admin rights\"])},\n \"REMOVE_ADMIN_RIGHTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove admin rights\"])}\n },\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"admin status\"])},\n \"CREATED_AT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"registration date\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"username\"])},\n \"WORKOUTS_COUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"workout count\"])}\n }\n }\n }\n}","export default {\n \"ERROR\": {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error. Please try again or contact the administrator.\"])},\n \"email: valid email must be provided\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email: valid email must be provided.\"])},\n \"error on getting configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error on getting configuration.\"])},\n \"error when updating configuration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error when updating configuration\"])},\n \"error, please try again or contact the administrator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error, please try again or contact the administrator.\"])},\n \"error, registration is disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error, registration is disabled.\"])},\n \"file extension not allowed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File extension not allowed.\"])},\n \"file size is greater than the allowed size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File size is greater than the allowed size.\"])},\n \"invalid credentials\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid credentials.\"])},\n \"invalid payload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Provided data are invalid.\"])},\n \"invalid token, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid token, please log in again.\"])},\n \"invalid token, please request a new token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid token, please log in again.\"])},\n \"Network Error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Network Error.\"])},\n \"no file part\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No file provided.\"])},\n \"no selected file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No selected file.\"])},\n \"password: password and password confirmation do not match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password: password and password confirmation don't match.\"])},\n \"provide a valid auth token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Provide a valid auth token.\"])},\n \"password: 8 characters required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password: 8 characters required.\"])},\n \"sorry, that user already exists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, that user already exists.\"])},\n \"sport does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sport does not exist.\"])},\n \"signature expired, please log in again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Signature expired. Please log in again.\"])},\n \"successfully registered\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Successfully registered.\"])},\n \"user does not exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User does not exist.\"])},\n \"username: 3 to 12 characters required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Username: 3 to 12 characters required.\"])},\n \"you can not delete your account, no other user has admin rights\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You can not delete your account, no other user has admin rights.\"])},\n \"you do not have permissions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You do not have permissions.\"])}\n },\n \"PAGINATION\": {\n \"PREVIOUS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"previous\"])},\n \"NEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"next\"])}\n }\n}","export default {\n \"BACK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back\"])},\n \"CANCEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])},\n \"DELETE_MY_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete my account\"])},\n \"DISABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disable\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit\"])},\n \"ENABLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enable\"])},\n \"FILTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filter\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in\"])},\n \"NO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No\"])},\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n \"SUBMIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n \"YES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Yes\"])}\n}","export default {\n \"CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirmation\"])},\n \"DAY\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"day\"]), _normalize([\"days\"])])},\n \"HOME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Home\"])},\n \"HERE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"here\"])},\n \"SELECTS\": {\n \"ORDER_BY\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"order by\"])}\n },\n \"ORDER\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sort\"])},\n \"ASC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ascending\"])},\n \"DESC\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"descending\"])}\n },\n \"PER_PAGE\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"par page\"])}\n }\n },\n \"TOTAL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Total\"])}\n}","export default {\n \"DASHBOARD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dashboard\"])},\n \"THIS_MONTH\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This month\"])}\n}","export default {\n \"UNKNOWN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error. Please try again or contact the administrator.\"])},\n \"APP_ERROR\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The application seems encounter some issues.
Please try later or contact the administrator.\"])},\n \"NOT_FOUND\": {\n \"PAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Page not found\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Workout not found\"])}\n }\n}","export default {\n \"Cycling (Sport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cycling (Sport)\"])}\n },\n \"Cycling (Transport)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cycling (Transport)\"])}\n },\n \"Hiking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hiking\"])}\n },\n \"Mountain Biking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountain Biking\"])}\n },\n \"Mountain Biking (Electric)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mountain Biking (Electric)\"])}\n },\n \"Rowing\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Rowing\"])}\n },\n \"Running\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Running\"])}\n },\n \"Skiing (Alpine)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skiing (Alpine)\"])}\n },\n \"Skiing (Cross Country)\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Skiing (Cross Country)\"])}\n },\n \"Trail\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Trail\"])}\n },\n \"Walking\": {\n \"LABEL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Walking\"])}\n }\n}","export default {\n \"STATISTICS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statistics\"])},\n \"TIME_FRAMES\": {\n \"week\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"week\"])},\n \"month\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"month\"])},\n \"year\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"year\"])}\n }\n}","export default {\n \"ADMIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n \"ALREADY_HAVE_ACCOUNT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Already have an account?\"])},\n \"CONFIRM_ACCOUNT_DELETION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you sure you want to delete your account? All data will be deleted, this cannot be undone\"])},\n \"EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email\"])},\n \"ENTER_EMAIL\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter an email address\"])},\n \"ENTER_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter a password\"])},\n \"ENTER_PASSWORD_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirm the password\"])},\n \"INVALID_TOKEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invalid token, please request a new password reset.\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Language\"])},\n \"LOGIN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Login\"])},\n \"LOGOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Logout\"])},\n \"PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password\"])},\n \"PASSWORD_CONFIRM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirm Password\"])},\n \"PASSWORD_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password confirmation\"])},\n \"PASSWORD_FORGOTTEN\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forgot password?\"])},\n \"PASSWORD_RESET\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password reset\"])},\n \"PASSWORD_SENT_EMAIL_TEXT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Check your email. If your address is in our database, you'll received an email with a link to reset your password.\"])},\n \"PASSWORD_UPDATED\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Your password have been updated. Click \", _interpolate(_list(0)), \" to log in.\"])},\n \"PROFILE\": {\n \"BACK_TO_PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back to profile\"])},\n \"BIO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n \"BIRTH_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Birth date\"])},\n \"EDIT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit profile\"])},\n \"EDIT_PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit preferences\"])},\n \"FIRST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"First name\"])},\n \"FIRST_DAY_OF_WEEK\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"First day of week\"])},\n \"LANGUAGE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Language\"])},\n \"LAST_NAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Last name\"])},\n \"LOCATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Location\"])},\n \"MONDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Monday\"])},\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Picture\"])},\n \"PICTURE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Picture edition\"])},\n \"PICTURE_UPDATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Update picture\"])},\n \"PICTURE_REMOVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove picture\"])},\n \"PREFERENCES_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preferences edition\"])},\n \"PROFILE_EDITION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile edition\"])},\n \"REGISTRATION_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration date\"])},\n \"SUNDAY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sunday\"])},\n \"TABS\": {\n \"PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"picture\"])},\n \"PREFERENCES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"preferences\"])},\n \"PROFILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"profile\"])}\n },\n \"TIMEZONE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timezone\"])}\n },\n \"REGISTER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n \"REGISTER_DISABLED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, registration is disabled.\"])},\n \"RESET_PASSWORD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset your password\"])},\n \"USER_PICTURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"user picture\"])},\n \"USERNAME\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Username\"])}\n}","export default {\n \"ADD_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add a workout\"])},\n \"ANALYSIS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"analysis\"])},\n \"ASCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ascent\"])},\n \"AVE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"ave. speed\"])},\n \"AVERAGE_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"average speed\"])},\n \"BACK_TO_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"back to workout\"])},\n \"DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"date\"])},\n \"DESCENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"descent\"])},\n \"DISPLAY_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"display filters\"])},\n \"DISTANCE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"distance\"])},\n \"DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"duration\"])},\n \"EDIT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit the workout\"])},\n \"ELEVATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"elevation\"])},\n \"END\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"end\"])},\n \"FROM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"from\"])},\n \"GPX_FILE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".gpx file\"])},\n \"HIDE_FILTERS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hide filters\"])},\n \"KM\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"km\"])},\n \"LATEST_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Latest workouts\"])},\n \"LOAD_MORE_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load more workouts\"])},\n \"MAX_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. altitude\"])},\n \"MAX_FILES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max files\"])},\n \"MAX_SIZE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max size\"])},\n \"MAX_SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"max. speed\"])},\n \"MIN_ALTITUDE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"min. altitude\"])},\n \"NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No next segment\"])},\n \"NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Next workout\"])},\n \"NO_DATA_CLEANING\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"data from gpx, without any cleaning\"])},\n \"NO_FILE_PROVIDED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No file provided\"])},\n \"NO_FOLDER\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no folder inside\"])},\n \"NO_MAP\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No map\"])},\n \"NO_NEXT_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No next segment\"])},\n \"NO_NEXT_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No next workout\"])},\n \"NO_NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No notes\"])},\n \"NO_PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No previous segment\"])},\n \"NO_PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No previous workout\"])},\n \"NO_RECORDS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No records.\"])},\n \"NO_WORKOUTS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No workouts.\"])},\n \"NOTES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"notes\"])},\n \"PAUSES\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"pauses\"])},\n \"PREVIOUS_SEGMENT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Previous segment\"])},\n \"PREVIOUS_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Previous workout\"])},\n \"RECORD\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"record\"]), _normalize([\"records\"])])},\n \"RECORD_AS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ave. speed\"])},\n \"RECORD_FD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Farest distance\"])},\n \"RECORD_LD\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Longest duration\"])},\n \"RECORD_MS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Max. speed\"])},\n \"REMAINING_CHARS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"remaining characters\"])},\n \"SEGMENT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"segment\"]), _normalize([\"segments\"])])},\n \"SPEED\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"speed\"])},\n \"SPORT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"sport\"]), _normalize([\"sports\"])])},\n \"START\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"start\"])},\n \"TITLE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"title\"])},\n \"TO\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"to\"])},\n \"TOTAL_DURATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"total duration\"])},\n \"UPLOAD_FIRST_WORKOUT\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload one!\"])},\n \"WEATHER\": {\n \"HUMIDITY\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"humidity\"])},\n \"TEMPERATURE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"temperature\"])},\n \"WIND\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wind\"])},\n \"DARK_SKY\": {\n \"clear-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"clear day\"])},\n \"clear-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"clear night\"])},\n \"cloudy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cloudy\"])},\n \"fog\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"fog\"])},\n \"partly-cloudy-day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partly cloudy day\"])},\n \"partly-cloudy-night\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"partly cloudy night\"])},\n \"rain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"rain\"])},\n \"sleet\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"sleet\"])},\n \"snow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"snow\"])},\n \"wind\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wind\"])}\n }\n },\n \"WITH_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"with .gpx file\"])},\n \"WITHOUT_GPX\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"without .gpx file\"])},\n \"WORKOUT\": (ctx) => {const { normalize: _normalize, plural: _plural } = ctx;return _plural([_normalize([\"workout\"]), _normalize([\"workouts\"])])},\n \"WORKOUT_DATE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"workout date\"])},\n \"WORKOUT_DELETION_CONFIRMATION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Are you sure you want to delete this workout?\"])},\n \"ZIP_ARCHIVE\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\".zip file\"])},\n \"ZIP_ARCHIVE_DESCRIPTION\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"or .zip file containing .gpx files\"])}\n}","import AdministrationTranslations from './administration.json'\nimport ApiTranslations from './api.json'\nimport ButtonsTranslations from './buttons.json'\nimport CommonTranslations from './common.json'\nimport DashboardTranslations from './dashboard.json'\nimport ErrorTranslations from './error.json'\nimport SportsTranslations from './sports.json'\nimport StatisticsTranslations from './statistics.json'\nimport UserTranslations from './user.json'\nimport WorkoutsTranslations from './workouts.json'\n\nexport default {\n admin: AdministrationTranslations,\n api: ApiTranslations,\n buttons: ButtonsTranslations,\n common: CommonTranslations,\n dashboard: DashboardTranslations,\n error: ErrorTranslations,\n sports: SportsTranslations,\n statistics: StatisticsTranslations,\n user: UserTranslations,\n workouts: WorkoutsTranslations,\n}\n","const suffixes = ['bytes', 'KB', 'MB', 'GB', 'TB']\n\nexport const getReadableFileSize = (\n fileSize: number,\n asText = true\n): string | Record => {\n const i = Math.floor(Math.log(fileSize) / Math.log(1024))\n if (!fileSize) {\n return asText ? '0 bytes' : { size: '0', suffix: 'bytes' }\n }\n const size = (fileSize / Math.pow(1024, i)).toFixed(1)\n const suffix = suffixes[i]\n return asText ? `${size}${suffix}` : { size, suffix }\n}\n\nexport const getFileSizeInMB = (fileSize: number): number => {\n const value = fileSize / 1048576\n return (!fileSize && 0) || +value.toFixed(2)\n}\n","import { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"user-picture\" }\nconst _hoisted_2 = [\"alt\", \"src\"]\nconst _hoisted_3 = {\n key: 1,\n class: \"no-picture\"\n}\nconst _hoisted_4 = /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-user-circle-o\",\n \"aria-hidden\": \"true\"\n}, null, -1)\nconst _hoisted_5 = [\n _hoisted_4\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.authUserPictureUrl !== '')\n ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n class: \"profile-user-img\",\n alt: _ctx.$t('user.USER_PICTURE'),\n src: _ctx.authUserPictureUrl\n }, null, 8, _hoisted_2))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _hoisted_5))\n ]))\n}","\n import { PropType, computed, defineComponent } from 'vue'\n\n import { IUserProfile } from '@/types/user'\n import { getApiUrl } from '@/utils'\n\n export default defineComponent({\n name: 'UserPicture',\n props: {\n user: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n return {\n authUserPictureUrl: computed(() =>\n props.user.picture\n ? `${getApiUrl()}users/${props.user.username}/picture`\n : ''\n ),\n }\n },\n })\n","import { render } from \"./UserPicture.vue?vue&type=template&id=4aed39f4&ts=true\"\nimport script from \"./UserPicture.vue?vue&type=script&lang=ts\"\nexport * from \"./UserPicture.vue?vue&type=script&lang=ts\"\n\nimport \"./UserPicture.vue?vue&type=style&index=0&id=4aed39f4&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./UserPreferences.vue?vue&type=style&index=0&id=39667dbe&lang=scss&scoped=true\"","/* eslint-disable no-console */\n\nimport { register } from 'register-service-worker'\n\nif (process.env.NODE_ENV === 'production') {\n register(`${process.env.BASE_URL}service-worker.js`, {\n ready() {\n console.log(\n 'App is being served from cache by a service worker.\\n' +\n 'For more details, visit https://goo.gl/AFskqB'\n )\n },\n registered() {\n console.log('Service worker has been registered.')\n },\n cached() {\n console.log('Content has been cached for offline use.')\n },\n updatefound() {\n console.log('New content is downloading.')\n },\n updated() {\n console.log('New content is available; please refresh.')\n },\n offline() {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n )\n },\n error(error) {\n console.error('Error during service worker registration:', error)\n },\n })\n}\n","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, normalizeClass as _normalizeClass, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-317a6409\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"top\" }, null, -1))\nconst _hoisted_2 = {\n key: 0,\n class: \"app-container\"\n}\nconst _hoisted_3 = { class: \"app-loading\" }\nconst _hoisted_4 = { class: \"container scroll\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-up\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_6 = [\n _hoisted_5\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_NavBar = _resolveComponent(\"NavBar\")!\n const _component_Loader = _resolveComponent(\"Loader\")!\n const _component_router_view = _resolveComponent(\"router-view\")!\n const _component_NoConfig = _resolveComponent(\"NoConfig\")!\n const _component_Footer = _resolveComponent(\"Footer\")!\n\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _hoisted_1,\n _createVNode(_component_NavBar, { onMenuInteraction: _ctx.updateHideScrollBar }, null, 8, [\"onMenuInteraction\"]),\n (_ctx.appLoading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createVNode(_component_Loader)\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass([\"app-container\", { 'hide-scroll': _ctx.hideScrollBar }])\n }, [\n (_ctx.appConfig)\n ? (_openBlock(), _createBlock(_component_router_view, { key: 0 }))\n : (_openBlock(), _createBlock(_component_NoConfig, { key: 1 }))\n ], 2)),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"scroll-button\", { 'display-button': _ctx.displayScrollButton }]),\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.scrollToTop && _ctx.scrollToTop(...args)))\n }, _hoisted_6, 2)\n ]),\n (_ctx.appConfig)\n ? (_openBlock(), _createBlock(_component_Footer, {\n key: 2,\n version: _ctx.appConfig ? _ctx.appConfig.version : ''\n }, null, 8, [\"version\"]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-36297652\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"footer\" }\nconst _hoisted_2 = { class: \"footer-items\" }\nconst _hoisted_3 = { class: \"footer-item\" }\nconst _hoisted_4 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"strong\", null, \"FitTrackee\", -1))\nconst _hoisted_5 = /*#__PURE__*/_createStaticVNode(\"
\", 4)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _hoisted_4,\n _createTextVNode(\" v\" + _toDisplayString(_ctx.version), 1)\n ]),\n _hoisted_5\n ])\n ]))\n}","\n import { defineComponent } from 'vue'\n\n export default defineComponent({\n name: 'Footer',\n props: {\n version: {\n type: String,\n required: true,\n },\n },\n })\n","import { render } from \"./Footer.vue?vue&type=template&id=36297652&scoped=true&ts=true\"\nimport script from \"./Footer.vue?vue&type=script&lang=ts\"\nexport * from \"./Footer.vue?vue&type=script&lang=ts\"\n\nimport \"./Footer.vue?vue&type=style&index=0&id=36297652&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-36297652\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9d3d8adc\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"nav\" }\nconst _hoisted_2 = { class: \"nav-container\" }\nconst _hoisted_3 = { class: \"nav-app-name\" }\nconst _hoisted_4 = { class: \"nav-items-close\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"app-name\" }, \"FitTrackee\", -1))\nconst _hoisted_6 = {\n key: 0,\n class: \"nav-items-group\"\n}\nconst _hoisted_7 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { class: \"nav-item nav-separator\" }, null, -1))\nconst _hoisted_8 = { class: \"nav-items-user-menu\" }\nconst _hoisted_9 = {\n key: 0,\n class: \"nav-items-group\"\n}\nconst _hoisted_10 = { class: \"nav-item nav-profile-img\" }\nconst _hoisted_11 = {\n key: 1,\n class: \"nav-items-group\"\n}\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", { class: \"fa fa-language\" }, null, -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_UserPicture = _resolveComponent(\"UserPicture\")!\n const _component_Dropdown = _resolveComponent(\"Dropdown\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", {\n class: \"nav-item app-name\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/')))\n }, \" FitTrackee \")\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"nav-icon-open\", { 'menu-open': _ctx.isMenuOpen }])\n }, [\n _createElementVNode(\"i\", {\n class: \"fa fa-bars hamburger-icon\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.openMenu()))\n })\n ], 2),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"nav-items\", { 'menu-open': _ctx.isMenuOpen }])\n }, [\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createElementVNode(\"i\", {\n class: _normalizeClass([\"fa fa-close close-icon nav-item\", { 'menu-closed': !_ctx.isMenuOpen }]),\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.closeMenu()))\n }, null, 2)\n ]),\n _createElementVNode(\"div\", {\n class: \"nav-items-app-menu\",\n onClick: _cache[3] || (_cache[3] = ($event: any) => (_ctx.closeMenu()))\n }, [\n (_ctx.isAuthenticated)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('dashboard.DASHBOARD')), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/workouts\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.capitalize(_ctx.$t('workouts.WORKOUT', 2))), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/statistics\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('statistics.STATISTICS')), 1)\n ]),\n _: 1\n }),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/workouts/add\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.ADD_WORKOUT')), 1)\n ]),\n _: 1\n }),\n (_ctx.isAuthenticated && _ctx.authUser.admin)\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n class: \"nav-item\",\n to: \"/admin\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.ADMIN')), 1)\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n _hoisted_7\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\n (_ctx.isAuthenticated)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _createElementVNode(\"div\", _hoisted_10, [\n _createVNode(_component_UserPicture, { user: _ctx.authUser }, null, 8, [\"user\"])\n ]),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/profile\",\n onClick: _ctx.closeMenu\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.authUser.username), 1)\n ]),\n _: 1\n }, 8, [\"onClick\"]),\n _createElementVNode(\"div\", {\n class: \"nav-item nav-link\",\n onClick: _cache[4] || (_cache[4] = \n//@ts-ignore\n(...args) => (_ctx.logout && _ctx.logout(...args)))\n }, _toDisplayString(_ctx.$t('user.LOGOUT')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/login\",\n onClick: _ctx.closeMenu\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.LOGIN')), 1)\n ]),\n _: 1\n }, 8, [\"onClick\"]),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: \"/register\",\n onClick: _ctx.closeMenu\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('user.REGISTER')), 1)\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ])),\n (_ctx.availableLanguages && _ctx.language)\n ? (_openBlock(), _createBlock(_component_Dropdown, {\n key: 2,\n class: \"nav-item\",\n options: _ctx.availableLanguages,\n selected: _ctx.language,\n onSelected: _ctx.updateLanguage\n }, {\n default: _withCtx(() => [\n _hoisted_12\n ]),\n _: 1\n }, 8, [\"options\", \"selected\", \"onSelected\"]))\n : _createCommentVNode(\"\", true)\n ])\n ], 2)\n ])\n ]))\n}","import { createI18n, LocaleMessages, VueMessageType } from 'vue-i18n'\n\n/**\n * Load locale messages\n *\n * The loaded `JSON` locale messages is pre-compiled by `@intlify/vue-i18n-loader`, which is integrated into `vue-cli-plugin-i18n`.\n * See: https://github.com/intlify/vue-i18n-loader#rocket-i18n-resource-pre-compilation\n */\nfunction loadLocaleMessages(): LocaleMessages {\n const locales = require.context('./locales', true, /[A-Za-z0-9-_,\\s]+\\.ts$/i)\n const messages: LocaleMessages = {}\n locales.keys().forEach((key) => {\n const matched = key.match(/([A-Za-z0-9-_]+)\\./i)\n if (matched && matched.length > 1) {\n const locale = matched[1]\n messages[locale] = locales(key).default\n }\n })\n return messages\n}\n\nexport default createI18n({\n legacy: false,\n locale: 'en',\n fallbackLocale: 'en',\n globalInjection: true,\n messages: loadLocaleMessages(),\n})\n","/* eslint-disable import/no-duplicates */\nimport { Locale } from 'date-fns'\nimport { enUS, fr } from 'date-fns/locale'\n\nimport createI18n from '@/i18n'\n\nexport const localeFromLanguage: Record = {\n en: enUS,\n fr: fr,\n}\n\nexport const languageLabels: Record = {\n en: 'English',\n fr: 'Français',\n}\n\nconst { availableLocales } = createI18n.global\nexport const availableLanguages = availableLocales.map((l) => {\n return { label: languageLabels[l], value: l }\n})\n","\n import { ComputedRef, computed, defineComponent, ref, capitalize } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import UserPicture from '@/components/User/UserPicture.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { IDropdownOption } from '@/types/forms'\n import { IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { getApiUrl } from '@/utils'\n import { availableLanguages } from '@/utils/locales'\n\n export default defineComponent({\n name: 'NavBar',\n components: {\n UserPicture,\n },\n emits: ['menuInteraction'],\n setup(props, { emit }) {\n const { locale } = useI18n()\n const store = useStore()\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const isAuthenticated: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]\n )\n const authUserPictureUrl: ComputedRef = computed(() =>\n isAuthenticated.value && authUser.value.picture\n ? `${getApiUrl()}/users/${\n authUser.value.username\n }/picture?${Date.now()}`\n : ''\n )\n const language: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n let isMenuOpen = ref(false)\n\n function openMenu() {\n isMenuOpen.value = true\n emit('menuInteraction', true)\n }\n function closeMenu() {\n isMenuOpen.value = false\n emit('menuInteraction', false)\n }\n function updateLanguage(option: IDropdownOption) {\n locale.value = option.value.toString()\n store.commit(ROOT_STORE.MUTATIONS.UPDATE_LANG, option.value)\n }\n function logout() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.LOGOUT)\n }\n\n return {\n availableLanguages,\n authUser,\n authUserPictureUrl,\n isAuthenticated,\n isMenuOpen,\n language,\n capitalize,\n openMenu,\n closeMenu,\n updateLanguage,\n logout,\n }\n },\n })\n","import { render } from \"./NavBar.vue?vue&type=template&id=9d3d8adc&scoped=true&ts=true\"\nimport script from \"./NavBar.vue?vue&type=script&lang=ts\"\nexport * from \"./NavBar.vue?vue&type=script&lang=ts\"\n\nimport \"./NavBar.vue?vue&type=style&index=0&id=9d3d8adc&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-9d3d8adc\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, createStaticVNode as _createStaticVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-01d4a985\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"no-config\" }\nconst _hoisted_2 = { class: \"error-page\" }\nconst _hoisted_3 = /*#__PURE__*/_createStaticVNode(\"
\", 1)\nconst _hoisted_4 = [\"innerHTML\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"p\", {\n class: \"error-message\",\n innerHTML: _ctx.$t('error.APP_ERROR')\n }, null, 8, _hoisted_4)\n ])\n ]))\n}","\n import { defineComponent } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n export default defineComponent({\n name: 'NoConfig',\n setup() {\n const { t } = useI18n()\n return { t }\n },\n })\n","import { render } from \"./NoConfig.vue?vue&type=template&id=01d4a985&scoped=true&ts=true\"\nimport script from \"./NoConfig.vue?vue&type=script&lang=ts\"\nexport * from \"./NoConfig.vue?vue&type=script&lang=ts\"\n\nimport \"./NoConfig.vue?vue&type=style&index=0&id=01d4a985&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-01d4a985\"]])\n\nexport default __exports__","\n import {\n ComputedRef,\n computed,\n defineComponent,\n ref,\n onBeforeMount,\n onMounted,\n } from 'vue'\n\n import Footer from '@/components/Footer.vue'\n import NavBar from '@/components/NavBar.vue'\n import NoConfig from '@/components/NoConfig.vue'\n import { ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { useStore } from '@/use/useStore'\n\n export default defineComponent({\n name: 'App',\n components: {\n Footer,\n NavBar,\n NoConfig,\n },\n setup() {\n const store = useStore()\n\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const appLoading: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_LOADING]\n )\n const hideScrollBar = ref(false)\n const displayScrollButton = ref(false)\n\n onBeforeMount(() =>\n store.dispatch(ROOT_STORE.ACTIONS.GET_APPLICATION_CONFIG)\n )\n onMounted(() => scroll())\n\n function updateHideScrollBar(isMenuOpen: boolean) {\n hideScrollBar.value = isMenuOpen\n }\n\n function isScrolledToBottom(element: Element): boolean {\n return (\n element.getBoundingClientRect().top < window.innerHeight &&\n element.getBoundingClientRect().bottom >= 0\n )\n }\n function scroll() {\n window.onscroll = () => {\n let bottom = document.querySelector('#bottom')\n displayScrollButton.value =\n bottom !== null && isScrolledToBottom(bottom)\n }\n }\n function scrollToTop() {\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n })\n setTimeout(() => {\n displayScrollButton.value = false\n }, 300)\n }\n\n return {\n appConfig,\n appLoading,\n hideScrollBar,\n displayScrollButton,\n scrollToTop,\n updateHideScrollBar,\n }\n },\n })\n","import { render } from \"./App.vue?vue&type=template&id=317a6409&scoped=true&ts=true\"\nimport script from \"./App.vue?vue&type=script&lang=ts\"\nexport * from \"./App.vue?vue&type=script&lang=ts\"\n\nimport \"./App.vue?vue&type=style&index=0&id=317a6409&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-317a6409\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, vModelText as _vModelText, createElementVNode as _createElementVNode, withDirectives as _withDirectives, resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, createElementBlock as _createElementBlock, withCtx as _withCtx, createVNode as _createVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-26175b66\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-app\",\n class: \"admin-card\"\n}\nconst _hoisted_2 = { for: \"max_users\" }\nconst _hoisted_3 = [\"disabled\"]\nconst _hoisted_4 = { class: \"user-limit-help\" }\nconst _hoisted_5 = { class: \"info-box\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_7 = { for: \"max_single_file_size\" }\nconst _hoisted_8 = [\"disabled\"]\nconst _hoisted_9 = { for: \"max_zip_file_size\" }\nconst _hoisted_10 = [\"disabled\"]\nconst _hoisted_11 = { for: \"gpx_limit_import\" }\nconst _hoisted_12 = [\"disabled\"]\nconst _hoisted_13 = {\n key: 1,\n class: \"form-buttons\"\n}\nconst _hoisted_14 = {\n class: \"confirm\",\n type: \"submit\"\n}\nconst _hoisted_15 = {\n key: 2,\n class: \"form-buttons\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.TITLE')), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"form\", {\n class: \"admin-form\",\n onSubmit: _cache[7] || (_cache[7] = _withModifiers(\n//@ts-ignore\n(...args) => (_ctx.onSubmit && _ctx.onSubmit(...args)), [\"prevent\"]))\n }, [\n _createElementVNode(\"label\", _hoisted_2, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.MAX_USERS_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"max_users\",\n name: \"max_users\",\n type: \"number\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.appData.max_users) = $event)),\n disabled: !_ctx.edition\n }, null, 8, _hoisted_3), [\n [_vModelText, _ctx.appData.max_users]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"span\", _hoisted_5, [\n _hoisted_6,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('admin.APP_CONFIG.MAX_USERS_HELP')), 1)\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_7, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.SINGLE_UPLOAD_MAX_SIZE_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"max_single_file_size\",\n name: \"max_single_file_size\",\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.appData.max_single_file_size) = $event)),\n disabled: !_ctx.edition\n }, null, 8, _hoisted_8), [\n [_vModelText, _ctx.appData.max_single_file_size]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_9, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.ZIP_UPLOAD_MAX_SIZE_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"max_zip_file_size\",\n name: \"max_zip_file_size\",\n type: \"number\",\n step: \"0.1\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.appData.max_zip_file_size) = $event)),\n disabled: !_ctx.edition\n }, null, 8, _hoisted_10), [\n [_vModelText, _ctx.appData.max_zip_file_size]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_11, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APP_CONFIG.MAX_FILES_IN_ZIP_LABEL')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"gpx_limit_import\",\n name: \"gpx_limit_import\",\n type: \"number\",\n min: \"0\",\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((_ctx.appData.gpx_limit_import) = $event)),\n disabled: !_ctx.edition\n }, null, 8, _hoisted_12), [\n [_vModelText, _ctx.appData.gpx_limit_import]\n ])\n ]),\n (_ctx.errorMessages)\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _ctx.errorMessages\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.edition)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _createElementVNode(\"button\", _hoisted_14, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[4] || (_cache[4] = _withModifiers(\n//@ts-ignore\n(...args) => (_ctx.onCancel && _ctx.onCancel(...args)), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n onClick: _cache[5] || (_cache[5] = _withModifiers(($event: any) => (_ctx.$router.push('/admin/application/edit')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.EDIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[6] || (_cache[6] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1)\n ]))\n ], 32)\n ]),\n _: 1\n })\n ]))\n}","\n import {\n ComputedRef,\n PropType,\n computed,\n defineComponent,\n reactive,\n onBeforeMount,\n } from 'vue'\n import { useRouter } from 'vue-router'\n\n import { ROOT_STORE } from '@/store/constants'\n import { TAppConfig, TAppConfigForm } from '@/types/application'\n import { useStore } from '@/use/useStore'\n import { getFileSizeInMB } from '@/utils/files'\n\n export default defineComponent({\n name: 'AdminApplication',\n props: {\n appConfig: {\n type: Object as PropType,\n required: true,\n },\n edition: {\n type: Boolean,\n default: false,\n },\n },\n setup(props) {\n const store = useStore()\n const router = useRouter()\n const appData: TAppConfigForm = reactive({\n max_users: 0,\n max_single_file_size: 0,\n max_zip_file_size: 0,\n gpx_limit_import: 0,\n })\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n onBeforeMount(() => {\n if (props.appConfig) {\n updateForm(props.appConfig)\n }\n })\n\n function updateForm(appConfig: TAppConfig) {\n Object.keys(appData).map((key) => {\n ;['max_single_file_size', 'max_zip_file_size'].includes(key)\n ? // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (appData[key] = getFileSizeInMB(appConfig[key]))\n : // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (appData[key] = appConfig[key])\n })\n }\n\n function onCancel() {\n updateForm(props.appConfig)\n store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n router.push('/admin/application')\n }\n function onSubmit() {\n const formData: TAppConfigForm = Object.assign({}, appData)\n formData.max_single_file_size *= 1048576\n formData.max_zip_file_size *= 1048576\n store.dispatch(ROOT_STORE.ACTIONS.UPDATE_APPLICATION_CONFIG, formData)\n }\n\n return { appData, errorMessages, onCancel, onSubmit }\n },\n })\n","import { render } from \"./AdminApplication.vue?vue&type=template&id=26175b66&scoped=true&ts=true\"\nimport script from \"./AdminApplication.vue?vue&type=script&lang=ts\"\nexport * from \"./AdminApplication.vue?vue&type=script&lang=ts\"\n\nimport \"./AdminApplication.vue?vue&type=style&index=0&id=26175b66&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-26175b66\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4f30aa64\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-menu\",\n class: \"center-card\"\n}\nconst _hoisted_2 = { class: \"admin-menu description-list\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_4 = { class: \"registration-status\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_AppStatsCards = _resolveComponent(\"AppStatsCards\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.ADMINISTRATION')), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(_component_AppStatsCards, { \"app-statistics\": _ctx.appStatistics }, null, 8, [\"app-statistics\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"dl\", null, [\n _createElementVNode(\"dt\", null, [\n _createVNode(_component_router_link, { to: \"/admin/application\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.APPLICATION')), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"dd\", null, [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.UPDATE_APPLICATION_DESCRIPTION')), 1),\n _hoisted_3,\n _createElementVNode(\"span\", _hoisted_4, _toDisplayString(_ctx.$t(\n `admin.REGISTRATION_${\n _ctx.appConfig.is_registration_enabled ? 'ENABLED' : 'DISABLED'\n }`\n )), 1)\n ]),\n _createElementVNode(\"dt\", null, [\n _createVNode(_component_router_link, { to: \"/admin/sports\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.capitalize(_ctx.$t('workouts.SPORT', 0))), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t('admin.ENABLE_DISABLE_SPORTS')), 1),\n _createElementVNode(\"dt\", null, [\n _createVNode(_component_router_link, { to: \"/admin/users\" }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.capitalize(_ctx.$t('admin.USER', 0))), 1)\n ]),\n _: 1\n })\n ]),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t('admin.ADMIN_RIGHTS_DELETE_USER_ACCOUNT')), 1)\n ])\n ])\n ]),\n _: 1\n })\n ]))\n}","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"user-stats\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_StatCard = _resolveComponent(\"StatCard\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_StatCard, {\n icon: \"users\",\n value: _ctx.usersCount,\n text: _ctx.$t('admin.USER', _ctx.usersCount)\n }, null, 8, [\"value\", \"text\"]),\n _createVNode(_component_StatCard, {\n icon: \"tags\",\n value: _ctx.sportsCount,\n text: _ctx.$t('workouts.SPORT', _ctx.sportsCount)\n }, null, 8, [\"value\", \"text\"]),\n _createVNode(_component_StatCard, {\n icon: \"calendar\",\n value: _ctx.workoutCount,\n text: _ctx.$t('workouts.WORKOUT', _ctx.workoutCount)\n }, null, 8, [\"value\", \"text\"]),\n _createVNode(_component_StatCard, {\n icon: \"folder-open\",\n value: _ctx.uploadDirSize.size,\n text: _ctx.uploadDirSize.suffix\n }, null, 8, [\"value\", \"text\"])\n ]))\n}","\n import { PropType, defineComponent, computed } from 'vue'\n\n import StatCard from '@/components/Common/StatCard.vue'\n import { IAppStatistics } from '@/types/application'\n import { getReadableFileSize } from '@/utils/files'\n\n export default defineComponent({\n name: 'UserStatsCards',\n components: {\n StatCard,\n },\n props: {\n appStatistics: {\n type: Object as PropType,\n default: () => {\n return {}\n },\n },\n },\n setup(props) {\n return {\n uploadDirSize: computed(() =>\n props.appStatistics.uploads_dir_size\n ? getReadableFileSize(props.appStatistics.uploads_dir_size, false)\n : { size: 0, suffix: 'bytes' }\n ),\n usersCount: computed(() =>\n props.appStatistics.users ? props.appStatistics.users : 0\n ),\n sportsCount: computed(() =>\n props.appStatistics.sports ? props.appStatistics.sports : 0\n ),\n workoutCount: computed(() =>\n props.appStatistics.workouts ? props.appStatistics.workouts : 0\n ),\n }\n },\n })\n","import { render } from \"./AppStatsCards.vue?vue&type=template&id=cd52bcc2&ts=true\"\nimport script from \"./AppStatsCards.vue?vue&type=script&lang=ts\"\nexport * from \"./AppStatsCards.vue?vue&type=script&lang=ts\"\n\nimport \"./AppStatsCards.vue?vue&type=style&index=0&id=cd52bcc2&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { renderSlot as _renderSlot, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"card\" }\nconst _hoisted_2 = { class: \"card-title\" }\nconst _hoisted_3 = { class: \"card-content\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _renderSlot(_ctx.$slots, \"title\")\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _renderSlot(_ctx.$slots, \"content\")\n ])\n ]))\n}","\n import { defineComponent } from 'vue'\n export default defineComponent({\n name: 'Card',\n })\n","import { render } from \"./Card.vue?vue&type=template&id=c5956538&ts=true\"\nimport script from \"./Card.vue?vue&type=script&lang=ts\"\nexport * from \"./Card.vue?vue&type=script&lang=ts\"\n\nimport \"./Card.vue?vue&type=style&index=0&id=c5956538&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n import { PropType, capitalize, defineComponent } from 'vue'\n\n import AppStatsCards from '@/components/Administration/AppStatsCards.vue'\n import Card from '@/components/Common/Card.vue'\n import { IAppStatistics, TAppConfig } from '@/types/application'\n\n export default defineComponent({\n name: 'AdminMenu',\n components: {\n AppStatsCards,\n Card,\n },\n props: {\n appConfig: {\n type: Object as PropType,\n required: true,\n },\n appStatistics: {\n type: Object as PropType,\n },\n },\n setup() {\n return { capitalize }\n },\n })\n","import { render } from \"./AdminMenu.vue?vue&type=template&id=4f30aa64&scoped=true&ts=true\"\nimport script from \"./AdminMenu.vue?vue&type=script&lang=ts\"\nexport * from \"./AdminMenu.vue?vue&type=script&lang=ts\"\n\nimport \"./AdminMenu.vue?vue&type=style&index=0&id=4f30aa64&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4f30aa64\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withModifiers as _withModifiers, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, createBlock as _createBlock, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-6d930723\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-sports\",\n class: \"admin-card\"\n}\nconst _hoisted_2 = { class: \"responsive-table\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, \"#\", -1))\nconst _hoisted_4 = { class: \"text-left\" }\nconst _hoisted_5 = { class: \"text-left sport-action\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, null, -1))\nconst _hoisted_7 = { class: \"center-text\" }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"span\", { class: \"cell-heading\" }, \"id\", -1))\nconst _hoisted_9 = { class: \"cell-heading\" }\nconst _hoisted_10 = { class: \"sport-label\" }\nconst _hoisted_11 = { class: \"cell-heading\" }\nconst _hoisted_12 = { class: \"center-text\" }\nconst _hoisted_13 = { class: \"cell-heading\" }\nconst _hoisted_14 = { class: \"sport-action\" }\nconst _hoisted_15 = { class: \"cell-heading\" }\nconst _hoisted_16 = { class: \"action-button\" }\nconst _hoisted_17 = [\"onClick\"]\nconst _hoisted_18 = {\n key: 0,\n class: \"has-workouts\"\n}\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-warning\",\n \"aria-hidden\": \"true\"\n}, null, -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('admin.SPORTS.TITLE')), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"button\", {\n class: \"top-button\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _hoisted_3,\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.IMAGE')), 1),\n _createElementVNode(\"th\", _hoisted_4, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.LABEL')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.ACTIVE')), 1),\n _createElementVNode(\"th\", _hoisted_5, _toDisplayString(_ctx.$t('admin.ACTION')), 1),\n _hoisted_6\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.translatedSports, (sport) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: sport.id\n }, [\n _createElementVNode(\"td\", _hoisted_7, [\n _hoisted_8,\n _createTextVNode(\" \" + _toDisplayString(sport.id), 1)\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.IMAGE')), 1),\n _createVNode(_component_SportImage, {\n title: sport.translatedLabel,\n \"sport-label\": sport.label\n }, null, 8, [\"title\", \"sport-label\"])\n ]),\n _createElementVNode(\"td\", _hoisted_10, [\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.LABEL')), 1),\n _createTextVNode(\" \" + _toDisplayString(sport.translatedLabel), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_12, [\n _createElementVNode(\"span\", _hoisted_13, _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.ACTIVE')), 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa${sport.is_active ? '-check' : ''}-square-o`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n _createElementVNode(\"td\", _hoisted_14, [\n _createElementVNode(\"span\", _hoisted_15, _toDisplayString(_ctx.$t('admin.ACTION')), 1),\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"button\", {\n class: _normalizeClass({ danger: sport.is_active }),\n onClick: ($event: any) => (_ctx.updateSportStatus(sport.id, !sport.is_active))\n }, _toDisplayString(_ctx.$t(`buttons.${sport.is_active ? 'DIS' : 'EN'}ABLE`)), 11, _hoisted_17),\n (sport.has_workouts)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_18, [\n _hoisted_19,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('admin.SPORTS.TABLE.HAS_WORKOUTS')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]))\n }), 128))\n ])\n ]),\n (_ctx.errorMessages)\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _ctx.errorMessages\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1)\n ])\n ]),\n _: 1\n })\n ]))\n}","\n import { ComputedRef, computed, defineComponent } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { ROOT_STORE, SPORTS_STORE } from '@/store/constants'\n import { ITranslatedSport } from '@/types/sports'\n import { useStore } from '@/use/useStore'\n import { translateSports } from '@/utils/sports'\n\n export default defineComponent({\n name: 'AdminSports',\n setup() {\n const { t } = useI18n()\n const store = useStore()\n const translatedSports: ComputedRef = computed(() =>\n translateSports(store.getters[SPORTS_STORE.GETTERS.SPORTS], t)\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n function updateSportStatus(id: number, isActive: boolean) {\n store.dispatch(SPORTS_STORE.ACTIONS.UPDATE_SPORTS, {\n id,\n isActive,\n })\n }\n\n return { errorMessages, translatedSports, updateSportStatus }\n },\n })\n","import { render } from \"./AdminSports.vue?vue&type=template&id=6d930723&scoped=true&ts=true\"\nimport script from \"./AdminSports.vue?vue&type=script&lang=ts\"\nexport * from \"./AdminSports.vue?vue&type=script&lang=ts\"\n\nimport \"./AdminSports.vue?vue&type=style&index=0&id=6d930723&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6d930723\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withModifiers as _withModifiers, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, withCtx as _withCtx, normalizeClass as _normalizeClass, createBlock as _createBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-eb17bef8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"admin-users\",\n class: \"admin-card\"\n}\nconst _hoisted_2 = { class: \"responsive-table\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, \"#\", -1))\nconst _hoisted_4 = { class: \"left-text\" }\nconst _hoisted_5 = { class: \"left-text\" }\nconst _hoisted_6 = { class: \"left-text\" }\nconst _hoisted_7 = { class: \"cell-heading\" }\nconst _hoisted_8 = { class: \"cell-heading\" }\nconst _hoisted_9 = { class: \"cell-heading\" }\nconst _hoisted_10 = { class: \"cell-heading\" }\nconst _hoisted_11 = { class: \"center-text\" }\nconst _hoisted_12 = { class: \"cell-heading\" }\nconst _hoisted_13 = { class: \"center-text\" }\nconst _hoisted_14 = { class: \"cell-heading\" }\nconst _hoisted_15 = { class: \"center-text\" }\nconst _hoisted_16 = { class: \"cell-heading\" }\nconst _hoisted_17 = [\"disabled\", \"onClick\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_FilterSelects = _resolveComponent(\"FilterSelects\")!\n const _component_UserPicture = _resolveComponent(\"UserPicture\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Pagination = _resolveComponent(\"Pagination\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.capitalize(_ctx.$t('admin.USER', 0))), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"button\", {\n class: \"top-button\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1),\n _createVNode(_component_FilterSelects, {\n sort: _ctx.sortList,\n order_by: _ctx.orderByList,\n query: _ctx.query,\n message: \"admin.USERS.SELECTS.ORDER_BY\",\n onUpdateSelect: _ctx.reloadUsers\n }, null, 8, [\"sort\", \"order_by\", \"query\", \"onUpdateSelect\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _hoisted_3,\n _createElementVNode(\"th\", _hoisted_4, _toDisplayString(_ctx.$t('user.USERNAME')), 1),\n _createElementVNode(\"th\", _hoisted_5, _toDisplayString(_ctx.$t('user.EMAIL')), 1),\n _createElementVNode(\"th\", _hoisted_6, _toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.capitalize(_ctx.$t('workouts.WORKOUT', 0))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('user.ADMIN')), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.$t('admin.ACTION')), 1)\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.users, (user) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: user.username\n }, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(_ctx.$t('user.PROFILE.PICTURE')), 1),\n _createVNode(_component_UserPicture, { user: user }, null, 8, [\"user\"])\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('user.USERNAME')), 1),\n _createVNode(_component_router_link, {\n to: `/users/${user.username}`\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(user.username), 1)\n ]),\n _: 2\n }, 1032, [\"to\"])\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_9, _toDisplayString(_ctx.$t('user.EMAIL')), 1),\n _createTextVNode(\" \" + _toDisplayString(user.email), 1)\n ]),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')), 1),\n _createTextVNode(\" \" + _toDisplayString(_ctx.format(\n _ctx.getDateWithTZ(user.created_at, _ctx.authUser.timezone),\n 'dd/MM/yyyy HH:mm'\n )), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_11, [\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(_ctx.capitalize(_ctx.$t('workouts.WORKOUT', 0))), 1),\n _createTextVNode(\" \" + _toDisplayString(user.nb_workouts), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_13, [\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.$t('user.ADMIN')), 1),\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa${user.admin ? '-check' : ''}-square-o`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n _createElementVNode(\"td\", _hoisted_15, [\n _createElementVNode(\"span\", _hoisted_16, _toDisplayString(_ctx.$t('admin.ACTION')), 1),\n _createElementVNode(\"button\", {\n class: _normalizeClass({ danger: user.admin }),\n disabled: user.username === _ctx.authUser.username,\n onClick: ($event: any) => (_ctx.updateUser(user.username, !user.admin))\n }, _toDisplayString(_ctx.$t(\n `admin.USERS.TABLE.${\n user.admin ? 'REMOVE' : 'ADD'\n }_ADMIN_RIGHTS`\n )), 11, _hoisted_17)\n ])\n ]))\n }), 128))\n ])\n ]),\n (_ctx.pagination.page)\n ? (_openBlock(), _createBlock(_component_Pagination, {\n key: 0,\n path: \"/admin/users\",\n pagination: _ctx.pagination,\n query: _ctx.query\n }, null, 8, [\"pagination\", \"query\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.errorMessages)\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 1,\n message: _ctx.errorMessages\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (_ctx.$router.push('/admin')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('admin.BACK_TO_ADMIN')), 1)\n ])\n ]),\n _: 1\n })\n ]))\n}","\n import { format } from 'date-fns'\n import {\n ComputedRef,\n computed,\n defineComponent,\n reactive,\n watch,\n capitalize,\n onBeforeMount,\n onUnmounted,\n } from 'vue'\n import { LocationQuery, useRoute, useRouter } from 'vue-router'\n\n import FilterSelects from '@/components/Common/FilterSelects.vue'\n import Pagination from '@/components/Common/Pagination.vue'\n import UserPicture from '@/components/User/UserPicture.vue'\n import { AUTH_USER_STORE, ROOT_STORE, USERS_STORE } from '@/store/constants'\n import { IPagination, TPaginationPayload } from '@/types/api'\n import { IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { getQuery, sortList } from '@/utils/api'\n import { getDateWithTZ } from '@/utils/dates'\n\n export default defineComponent({\n name: 'AdminUsers',\n components: {\n FilterSelects,\n Pagination,\n UserPicture,\n },\n setup() {\n const store = useStore()\n const route = useRoute()\n const router = useRouter()\n\n const orderByList: string[] = [\n 'admin',\n 'created_at',\n 'username',\n 'workouts_count',\n ]\n const defaultOrderBy = 'created_at'\n let query: TPaginationPayload = reactive(\n getQuery(route.query, orderByList, defaultOrderBy)\n )\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const users: ComputedRef = computed(\n () => store.getters[USERS_STORE.GETTERS.USERS]\n )\n const pagination: ComputedRef = computed(\n () => store.getters[USERS_STORE.GETTERS.USERS_PAGINATION]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n function loadUsers(queryParams: TPaginationPayload) {\n store.dispatch(USERS_STORE.ACTIONS.GET_USERS, queryParams)\n }\n function updateUser(username: string, admin: boolean) {\n store.dispatch(USERS_STORE.ACTIONS.UPDATE_USER, {\n username,\n admin,\n })\n }\n function reloadUsers(queryParam: string, queryValue: string) {\n query[queryParam] = queryValue\n if (queryParam === 'per_page') {\n query.page = 1\n }\n router.push({ path: '/admin/users', query })\n }\n\n onBeforeMount(() => loadUsers(query))\n\n watch(\n () => route.query,\n (newQuery: LocationQuery) => {\n query = getQuery(newQuery, orderByList, defaultOrderBy, { query })\n loadUsers(query)\n }\n )\n\n onUnmounted(() => {\n store.dispatch(USERS_STORE.ACTIONS.EMPTY_USERS)\n })\n\n return {\n authUser,\n errorMessages,\n orderByList,\n pagination,\n query,\n sortList,\n users,\n capitalize,\n format,\n getDateWithTZ,\n reloadUsers,\n updateUser,\n }\n },\n })\n","import { render } from \"./AdminUsers.vue?vue&type=template&id=eb17bef8&scoped=true&ts=true\"\nimport script from \"./AdminUsers.vue?vue&type=script&lang=ts\"\nexport * from \"./AdminUsers.vue?vue&type=script&lang=ts\"\n\nimport \"./AdminUsers.vue?vue&type=style&index=0&id=eb17bef8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-eb17bef8\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-c81580c0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-profile\" }\nconst _hoisted_2 = { class: \"box\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_UserHeader = _resolveComponent(\"UserHeader\")!\n const _component_UserProfileTabs = _resolveComponent(\"UserProfileTabs\")!\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_UserHeader, { user: _ctx.user }, null, 8, [\"user\"]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_UserProfileTabs, {\n tabs: _ctx.tabs,\n selectedTab: _ctx.tab,\n edition: false\n }, null, 8, [\"tabs\", \"selectedTab\"]),\n _createVNode(_component_router_view, { user: _ctx.user }, null, 8, [\"user\"])\n ])\n ]))\n}","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString } from \"vue\"\n\nconst _hoisted_1 = { class: \"profile-tabs custom-checkboxes-group\" }\nconst _hoisted_2 = { class: \"profile-tabs-checkboxes custom-checkboxes\" }\nconst _hoisted_3 = [\"id\", \"name\", \"checked\", \"disabled\", \"onInput\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.tabs, (tab) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"profile-tab custom-checkbox\",\n key: tab\n }, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n id: tab,\n name: tab,\n checked: _ctx.selectedTab === tab,\n disabled: _ctx.disabled,\n onInput: ($event: any) => (_ctx.$router.push(_ctx.getPath(tab)))\n }, null, 40, _hoisted_3),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(`user.PROFILE.TABS.${tab}`)), 1)\n ])\n ]))\n }), 128))\n ])\n ]))\n}","\n import { PropType, defineComponent } from 'vue'\n\n export default defineComponent({\n name: 'UserProfileTabs',\n props: {\n tabs: {\n type: Object as PropType,\n required: true,\n },\n selectedTab: {\n type: String,\n required: true,\n },\n edition: {\n type: Boolean,\n required: true,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n setup(props) {\n function getPath(tab: string) {\n switch (tab) {\n case 'PICTURE':\n return '/profile/edit/picture'\n case 'PREFERENCES':\n return `/profile${props.edition ? '/edit' : ''}/preferences`\n default:\n case 'PROFILE':\n return `/profile${props.edition ? '/edit' : ''}`\n }\n }\n return { getPath }\n },\n })\n","import { render } from \"./UserProfileTabs.vue?vue&type=template&id=c7276c08&ts=true\"\nimport script from \"./UserProfileTabs.vue?vue&type=script&lang=ts\"\nexport * from \"./UserProfileTabs.vue?vue&type=script&lang=ts\"\n\nimport \"./UserProfileTabs.vue?vue&type=style&index=0&id=c7276c08&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n import { PropType, defineComponent } from 'vue'\n\n import UserHeader from '@/components/User/ProfileDisplay/UserHeader.vue'\n import UserProfileTabs from '@/components/User/UserProfileTabs.vue'\n import { IUserProfile } from '@/types/user'\n\n export default defineComponent({\n name: 'ProfileDisplay',\n components: {\n UserHeader,\n UserProfileTabs,\n },\n props: {\n user: {\n type: Object as PropType,\n required: true,\n },\n tab: {\n type: String,\n required: true,\n },\n },\n setup() {\n return {\n tabs: ['PROFILE', 'PREFERENCES'],\n }\n },\n })\n","import { render } from \"./index.vue?vue&type=template&id=c81580c0&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=c81580c0&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-c81580c0\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-39667dbe\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"user-preferences\",\n class: \"description-list\"\n}\nconst _hoisted_2 = { class: \"profile-buttons\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"dl\", null, [\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.LANGUAGE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.language), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.TIMEZONE')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.timezone), 1),\n _createElementVNode(\"dt\", null, _toDisplayString(_ctx.$t('user.PROFILE.FIRST_DAY_OF_WEEK')) + \":\", 1),\n _createElementVNode(\"dd\", null, _toDisplayString(_ctx.$t(`user.PROFILE.${_ctx.fistDayOfWeek}`)), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"button\", {\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.$router.push('/profile/edit/preferences')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.EDIT_PREFERENCES')), 1),\n _createElementVNode(\"button\", {\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.$router.push('/')))\n }, _toDisplayString(_ctx.$t('common.HOME')), 1)\n ])\n ]))\n}","\n import { PropType, computed, defineComponent } from 'vue'\n\n import { IUserProfile } from '@/types/user'\n import { languageLabels } from '@/utils/locales'\n\n export default defineComponent({\n name: 'UserPreferences',\n props: {\n user: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n const language = computed(() =>\n props.user.language\n ? languageLabels[props.user.language]\n : languageLabels['en']\n )\n const fistDayOfWeek = computed(() =>\n props.user.weekm ? 'MONDAY' : 'SUNDAY'\n )\n const timezone = computed(() =>\n props.user.timezone ? props.user.timezone : 'Europe/Paris'\n )\n return { fistDayOfWeek, language, timezone }\n },\n })\n","import { render } from \"./UserPreferences.vue?vue&type=template&id=39667dbe&scoped=true&ts=true\"\nimport script from \"./UserPreferences.vue?vue&type=script&lang=ts\"\nexport * from \"./UserPreferences.vue?vue&type=script&lang=ts\"\n\nimport \"./UserPreferences.vue?vue&type=style&index=0&id=39667dbe&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-39667dbe\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"user-profile-edition\",\n class: \"center-card\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_UserProfileTabs = _resolveComponent(\"UserProfileTabs\")!\n const _component_router_view = _resolveComponent(\"router-view\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(`user.PROFILE.${_ctx.tab}_EDITION`)), 1)\n ]),\n content: _withCtx(() => [\n _createVNode(_component_UserProfileTabs, {\n tabs: _ctx.tabs,\n selectedTab: _ctx.tab,\n edition: true,\n disabled: _ctx.loading\n }, null, 8, [\"tabs\", \"selectedTab\", \"disabled\"]),\n _createVNode(_component_router_view, { user: _ctx.user }, null, 8, [\"user\"])\n ]),\n _: 1\n })\n ]))\n}","\n import { computed, defineComponent, PropType } from 'vue'\n\n import UserProfileTabs from '@/components/User/UserProfileTabs.vue'\n import { AUTH_USER_STORE } from '@/store/constants'\n import { IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n export default defineComponent({\n name: 'ProfileEdition',\n components: {\n UserProfileTabs,\n },\n props: {\n user: {\n type: Object as PropType,\n required: true,\n },\n tab: {\n type: String,\n required: true,\n },\n },\n setup() {\n const store = useStore()\n return {\n loading: computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n ),\n tabs: ['PROFILE', 'PICTURE', 'PREFERENCES'],\n }\n },\n })\n","import { render } from \"./index.vue?vue&type=template&id=386e1de0&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, vModelText as _vModelText, withDirectives as _withDirectives, createVNode as _createVNode, withModifiers as _withModifiers, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { id: \"user-infos-edition\" }\nconst _hoisted_2 = { class: \"profile-form form-box\" }\nconst _hoisted_3 = {\n class: \"form-items\",\n for: \"email\"\n}\nconst _hoisted_4 = [\"value\"]\nconst _hoisted_5 = {\n class: \"form-items\",\n for: \"registrationDate\"\n}\nconst _hoisted_6 = [\"value\"]\nconst _hoisted_7 = {\n class: \"form-items\",\n for: \"password\"\n}\nconst _hoisted_8 = [\"disabled\"]\nconst _hoisted_9 = {\n class: \"form-items\",\n for: \"passwordConfirmation\"\n}\nconst _hoisted_10 = [\"disabled\"]\nconst _hoisted_11 = /*#__PURE__*/_createElementVNode(\"hr\", null, null, -1)\nconst _hoisted_12 = {\n class: \"form-items\",\n for: \"first_name\"\n}\nconst _hoisted_13 = [\"disabled\"]\nconst _hoisted_14 = {\n class: \"form-items\",\n for: \"last_name\"\n}\nconst _hoisted_15 = {\n class: \"form-items\",\n for: \"birth_date\"\n}\nconst _hoisted_16 = [\"disabled\"]\nconst _hoisted_17 = {\n class: \"form-items\",\n for: \"location\"\n}\nconst _hoisted_18 = [\"disabled\"]\nconst _hoisted_19 = { class: \"form-items\" }\nconst _hoisted_20 = { class: \"form-buttons\" }\nconst _hoisted_21 = {\n class: \"confirm\",\n type: \"submit\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Modal = _resolveComponent(\"Modal\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_CustomTextArea = _resolveComponent(\"CustomTextArea\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.displayModal)\n ? (_openBlock(), _createBlock(_component_Modal, {\n key: 0,\n title: _ctx.$t('common.CONFIRMATION'),\n message: _ctx.$t('user.CONFIRM_ACCOUNT_DELETION'),\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (_ctx.deleteAccount(_ctx.user.username))),\n onCancelAction: _cache[1] || (_cache[1] = ($event: any) => (_ctx.updateDisplayModal(false)))\n }, null, 8, [\"title\", \"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_2, [\n (_ctx.errorMessages)\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _ctx.errorMessages\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"form\", {\n onSubmit: _cache[10] || (_cache[10] = _withModifiers(\n//@ts-ignore\n(...args) => (_ctx.updateProfile && _ctx.updateProfile(...args)), [\"prevent\"]))\n }, [\n _createElementVNode(\"label\", _hoisted_3, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.EMAIL')) + \" \", 1),\n _createElementVNode(\"input\", {\n id: \"email\",\n value: _ctx.user.email,\n disabled: \"\"\n }, null, 8, _hoisted_4)\n ]),\n _createElementVNode(\"label\", _hoisted_5, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.REGISTRATION_DATE')) + \" \", 1),\n _createElementVNode(\"input\", {\n id: \"registrationDate\",\n value: _ctx.registrationDate,\n disabled: \"\"\n }, null, 8, _hoisted_6)\n ]),\n _createElementVNode(\"label\", _hoisted_7, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PASSWORD')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"password\",\n type: \"password\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.userForm.password) = $event)),\n disabled: _ctx.loading\n }, null, 8, _hoisted_8), [\n [_vModelText, _ctx.userForm.password]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_9, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PASSWORD_CONFIRMATION')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"passwordConfirmation\",\n type: \"password\",\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((_ctx.userForm.password_conf) = $event)),\n disabled: _ctx.loading\n }, null, 8, _hoisted_10), [\n [_vModelText, _ctx.userForm.password_conf]\n ])\n ]),\n _hoisted_11,\n _createElementVNode(\"label\", _hoisted_12, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.FIRST_NAME')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"first_name\",\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((_ctx.userForm.first_name) = $event)),\n disabled: _ctx.loading\n }, null, 8, _hoisted_13), [\n [_vModelText, _ctx.userForm.first_name]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_14, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.LAST_NAME')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"last_name\",\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((_ctx.userForm.last_name) = $event))\n }, null, 512), [\n [_vModelText, _ctx.userForm.last_name]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_15, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.BIRTH_DATE')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"birth_date\",\n type: \"date\",\n class: \"birth-date\",\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((_ctx.userForm.birth_date) = $event)),\n disabled: _ctx.loading\n }, null, 8, _hoisted_16), [\n [_vModelText, _ctx.userForm.birth_date]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_17, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.LOCATION')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"location\",\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((_ctx.userForm.location) = $event)),\n disabled: _ctx.loading\n }, null, 8, _hoisted_18), [\n [_vModelText, _ctx.userForm.location]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_19, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.BIO')) + \" \", 1),\n _createVNode(_component_CustomTextArea, {\n name: \"bio\",\n charLimit: 200,\n input: _ctx.userForm.bio,\n disabled: _ctx.loading,\n onUpdateValue: _ctx.updateBio\n }, null, 8, [\"input\", \"disabled\", \"onUpdateValue\"])\n ]),\n _createElementVNode(\"div\", _hoisted_20, [\n _createElementVNode(\"button\", _hoisted_21, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[8] || (_cache[8] = _withModifiers(($event: any) => (_ctx.$router.push('/profile')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1),\n _createElementVNode(\"button\", {\n class: \"danger\",\n onClick: _cache[9] || (_cache[9] = _withModifiers(($event: any) => (_ctx.updateDisplayModal(true)), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.DELETE_MY_ACCOUNT')), 1)\n ])\n ], 32)\n ])\n ]))\n}","\n import { format } from 'date-fns'\n import {\n ComputedRef,\n PropType,\n Ref,\n computed,\n defineComponent,\n reactive,\n ref,\n onMounted,\n } from 'vue'\n\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { IUserProfile, IUserPayload } from '@/types/user'\n import { useStore } from '@/use/useStore'\n\n export default defineComponent({\n name: 'UserInfosEdition',\n props: {\n user: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n const store = useStore()\n const userForm: IUserPayload = reactive({\n password: '',\n password_conf: '',\n first_name: '',\n last_name: '',\n birth_date: '',\n location: '',\n bio: '',\n })\n const registrationDate = computed(() =>\n props.user.created_at\n ? format(new Date(props.user.created_at), 'dd/MM/yyyy HH:mm')\n : ''\n )\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n let displayModal: Ref = ref(false)\n\n onMounted(() => {\n if (props.user) {\n updateUserForm(props.user)\n }\n })\n\n function updateUserForm(user: IUserProfile) {\n userForm.first_name = user.first_name ? user.first_name : ''\n userForm.last_name = user.last_name ? user.last_name : ''\n userForm.birth_date = user.birth_date\n ? format(new Date(user.birth_date), 'yyyy-MM-dd')\n : ''\n userForm.location = user.location ? user.location : ''\n userForm.bio = user.bio ? user.bio : ''\n }\n function updateBio(value: string) {\n userForm.bio = value\n }\n function updateProfile() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.UPDATE_USER_PROFILE, userForm)\n }\n function updateDisplayModal(value: boolean) {\n displayModal.value = value\n }\n function deleteAccount(username: string) {\n store.dispatch(AUTH_USER_STORE.ACTIONS.DELETE_ACCOUNT, { username })\n }\n\n return {\n displayModal,\n errorMessages,\n loading,\n registrationDate,\n userForm,\n deleteAccount,\n updateBio,\n updateDisplayModal,\n updateProfile,\n }\n },\n })\n","import { render } from \"./UserInfosEdition.vue?vue&type=template&id=e9d6897c&ts=true\"\nimport script from \"./UserInfosEdition.vue?vue&type=script&lang=ts\"\nexport * from \"./UserInfosEdition.vue?vue&type=script&lang=ts\"\n\nimport \"./UserInfosEdition.vue?vue&type=style&index=0&id=e9d6897c&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementBlock as _createElementBlock, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0ea4550a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"user-picture-edition\" }\nconst _hoisted_2 = { class: \"user-picture-form\" }\nconst _hoisted_3 = { class: \"picture-help\" }\nconst _hoisted_4 = { class: \"info-box\" }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-info-circle\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_6 = { class: \"picture-buttons\" }\nconst _hoisted_7 = [\"disabled\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_UserPicture = _resolveComponent(\"UserPicture\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_ctx.errorMessages)\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _ctx.errorMessages\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_UserPicture, { user: _ctx.user }, null, 8, [\"user\"]),\n _createElementVNode(\"form\", {\n onSubmit: _cache[3] || (_cache[3] = _withModifiers(\n//@ts-ignore\n(...args) => (_ctx.updateUserPicture && _ctx.updateUserPicture(...args)), [\"prevent\"]))\n }, [\n _createElementVNode(\"input\", {\n type: \"file\",\n name: \"picture\",\n accept: \".png,.jpg,.gif\",\n onInput: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.updatePictureFile && _ctx.updatePictureFile(...args)))\n }, null, 32),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"span\", _hoisted_4, [\n _hoisted_5,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.MAX_SIZE')) + \": \" + _toDisplayString(_ctx.fileSizeLimit), 1)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"button\", {\n type: \"submit\",\n disabled: !_ctx.pictureFile\n }, _toDisplayString(_ctx.$t('user.PROFILE.PICTURE_UPDATE')), 9, _hoisted_7),\n (_ctx.user.picture)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"danger\",\n onClick: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.deleteUserPicture && _ctx.deleteUserPicture(...args)))\n }, _toDisplayString(_ctx.$t('user.PROFILE.PICTURE_REMOVE')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.$router.push('/profile')))\n }, _toDisplayString(_ctx.$t('user.PROFILE.BACK_TO_PROFILE')), 1)\n ])\n ], 32)\n ])\n ]))\n}","\n import {\n ComputedRef,\n PropType,\n Ref,\n defineComponent,\n computed,\n ref,\n } from 'vue'\n\n import UserPicture from '@/components/User/UserPicture.vue'\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { getReadableFileSize } from '@/utils/files'\n\n export default defineComponent({\n name: 'UserPictureEdition',\n components: {\n UserPicture,\n },\n props: {\n user: {\n type: Object as PropType,\n required: true,\n },\n },\n setup() {\n const store = useStore()\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const fileSizeLimit = appConfig.value.max_single_file_size\n ? getReadableFileSize(appConfig.value.max_single_file_size)\n : ''\n let pictureFile: Ref = ref(null)\n\n function deleteUserPicture() {\n store.dispatch(AUTH_USER_STORE.ACTIONS.DELETE_PICTURE)\n }\n function updatePictureFile(event: Event & { target: HTMLInputElement }) {\n if (event.target.files) {\n pictureFile.value = event.target.files[0]\n }\n }\n function updateUserPicture() {\n if (pictureFile.value) {\n store.dispatch(AUTH_USER_STORE.ACTIONS.UPDATE_USER_PICTURE, {\n picture: pictureFile.value,\n })\n }\n }\n\n return {\n errorMessages,\n fileSizeLimit,\n pictureFile,\n deleteUserPicture,\n updateUserPicture,\n updatePictureFile,\n }\n },\n })\n","import { render } from \"./UserPictureEdition.vue?vue&type=template&id=0ea4550a&scoped=true&ts=true\"\nimport script from \"./UserPictureEdition.vue?vue&type=script&lang=ts\"\nexport * from \"./UserPictureEdition.vue?vue&type=script&lang=ts\"\n\nimport \"./UserPictureEdition.vue?vue&type=style&index=0&id=0ea4550a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0ea4550a\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, vModelSelect as _vModelSelect, createElementVNode as _createElementVNode, withDirectives as _withDirectives, createTextVNode as _createTextVNode, vModelText as _vModelText, withModifiers as _withModifiers } from \"vue\"\n\nconst _hoisted_1 = { id: \"user-preferences-edition\" }\nconst _hoisted_2 = { class: \"profile-form form-box\" }\nconst _hoisted_3 = { class: \"form-items\" }\nconst _hoisted_4 = [\"disabled\"]\nconst _hoisted_5 = [\"value\"]\nconst _hoisted_6 = {\n class: \"form-items\",\n for: \"timezone\"\n}\nconst _hoisted_7 = [\"disabled\"]\nconst _hoisted_8 = { class: \"form-items\" }\nconst _hoisted_9 = [\"disabled\"]\nconst _hoisted_10 = [\"value\"]\nconst _hoisted_11 = { class: \"form-buttons\" }\nconst _hoisted_12 = {\n class: \"confirm\",\n type: \"submit\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_ctx.errorMessages)\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _ctx.errorMessages\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"form\", {\n onSubmit: _cache[4] || (_cache[4] = _withModifiers(\n//@ts-ignore\n(...args) => (_ctx.updateProfile && _ctx.updateProfile(...args)), [\"prevent\"]))\n }, [\n _createElementVNode(\"label\", _hoisted_3, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.LANGUAGE')) + \" \", 1),\n _withDirectives(_createElementVNode(\"select\", {\n id: \"language\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.userForm.language) = $event)),\n disabled: _ctx.loading\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.availableLanguages, (lang) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: lang.value,\n key: lang.value\n }, _toDisplayString(lang.label), 9, _hoisted_5))\n }), 128))\n ], 8, _hoisted_4), [\n [_vModelSelect, _ctx.userForm.language]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_6, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.TIMEZONE')) + \" \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"timezone\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((_ctx.userForm.timezone) = $event)),\n disabled: _ctx.loading\n }, null, 8, _hoisted_7), [\n [_vModelText, _ctx.userForm.timezone]\n ])\n ]),\n _createElementVNode(\"label\", _hoisted_8, [\n _createTextVNode(_toDisplayString(_ctx.$t('user.PROFILE.FIRST_DAY_OF_WEEK')) + \" \", 1),\n _withDirectives(_createElementVNode(\"select\", {\n id: \"weekm\",\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.userForm.weekm) = $event)),\n disabled: _ctx.loading\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.weekStart, (start) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: start.value,\n key: start.value\n }, _toDisplayString(_ctx.$t(`user.PROFILE.${start.label}`)), 9, _hoisted_10))\n }), 128))\n ], 8, _hoisted_9), [\n [_vModelSelect, _ctx.userForm.weekm]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_11, [\n _createElementVNode(\"button\", _hoisted_12, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 1),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[3] || (_cache[3] = _withModifiers(($event: any) => (_ctx.$router.push('/profile/preferences')), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1)\n ])\n ], 32)\n ])\n ]))\n}","\n import {\n ComputedRef,\n PropType,\n computed,\n defineComponent,\n reactive,\n onMounted,\n } from 'vue'\n\n import { AUTH_USER_STORE, ROOT_STORE } from '@/store/constants'\n import { IUserProfile, IUserPreferencesPayload } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { availableLanguages } from '@/utils/locales'\n\n export default defineComponent({\n name: 'UserPreferencesEdition',\n props: {\n user: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n const store = useStore()\n const userForm: IUserPreferencesPayload = reactive({\n language: '',\n timezone: 'Europe/Paris',\n weekm: false,\n })\n const weekStart = [\n {\n label: 'MONDAY',\n value: true,\n },\n {\n label: 'SUNDAY',\n value: false,\n },\n ]\n const loading = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.USER_LOADING]\n )\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n\n onMounted(() => {\n if (props.user) {\n updateUserForm(props.user)\n }\n })\n\n function updateUserForm(user: IUserProfile) {\n userForm.language = user.language ? user.language : 'en'\n userForm.timezone = user.timezone ? user.timezone : 'Europe/Paris'\n userForm.weekm = user.weekm ? user.weekm : false\n }\n function updateProfile() {\n store.dispatch(\n AUTH_USER_STORE.ACTIONS.UPDATE_USER_PREFERENCES,\n userForm\n )\n }\n\n return {\n availableLanguages,\n errorMessages,\n loading,\n userForm,\n weekStart,\n updateProfile,\n }\n },\n })\n","import { render } from \"./UserPreferencesEdition.vue?vue&type=template&id=e42b32dc&ts=true\"\nimport script from \"./UserPreferencesEdition.vue?vue&type=script&lang=ts\"\nexport * from \"./UserPreferencesEdition.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import axios from 'axios'\n\nimport store from '@/store'\nimport { AUTH_USER_STORE } from '@/store/constants'\nimport { getApiUrl } from '@/utils'\n\nconst authApi = axios.create({\n baseURL: getApiUrl(),\n})\n\nauthApi.interceptors.request.use(\n (config) => {\n const authToken = store.getters[AUTH_USER_STORE.GETTERS.AUTH_TOKEN]\n if (authToken) {\n const auth = `Bearer ${authToken}`\n if (config.headers && config.headers.Authorization !== auth) {\n config.headers.Authorization = `Bearer ${authToken}`\n }\n }\n return config\n },\n (error) => Promise.reject(error)\n)\n\nexport default authApi\n","import axios from 'axios'\n\nimport { getApiUrl } from '@/utils'\n\nconst api = axios.create({\n baseURL: getApiUrl(),\n})\n\nexport default api\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport api from '@/api/defaultApi'\nimport createI18n from '@/i18n'\nimport router from '@/router'\nimport {\n AUTH_USER_STORE,\n ROOT_STORE,\n SPORTS_STORE,\n STATS_STORE,\n USERS_STORE,\n WORKOUTS_STORE,\n} from '@/store/constants'\nimport {\n IAuthUserActions,\n IAuthUserState,\n} from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n ILoginOrRegisterData,\n IUserDeletionPayload,\n IUserPasswordPayload,\n IUserPasswordResetPayload,\n IUserPayload,\n IUserPicturePayload,\n IUserPreferencesPayload,\n} from '@/types/user'\nimport { handleError } from '@/utils'\n\nconst { locale } = createI18n.global\n\nconst removeAuthUserData = (\n context: ActionContext\n) => {\n localStorage.removeItem('authToken')\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(STATS_STORE.MUTATIONS.EMPTY_USER_STATS)\n context.commit(AUTH_USER_STORE.MUTATIONS.CLEAR_AUTH_USER_TOKEN)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS, [])\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUTS)\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n router.push('/login')\n}\n\nexport const actions: ActionTree &\n IAuthUserActions = {\n [AUTH_USER_STORE.ACTIONS.CHECK_AUTH_USER](\n context: ActionContext\n ): void {\n if (\n window.localStorage.authToken &&\n !context.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]\n ) {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN,\n window.localStorage.authToken\n )\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n }\n },\n [AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('auth/profile')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE,\n res.data.data\n )\n if (res.data.data.language) {\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_LANG,\n res.data.data.language\n )\n locale.value = res.data.data.language\n }\n context.dispatch(SPORTS_STORE.ACTIONS.GET_SPORTS)\n } else {\n handleError(context, null)\n removeAuthUserData(context)\n }\n })\n .catch((error) => {\n handleError(context, error)\n removeAuthUserData(context)\n })\n },\n [AUTH_USER_STORE.ACTIONS.LOGIN_OR_REGISTER](\n context: ActionContext,\n data: ILoginOrRegisterData\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n api\n .post(`/auth/${data.actionType}`, data.formData)\n .then((res) => {\n if (res.data.status === 'success') {\n const token = res.data.auth_token\n window.localStorage.setItem('authToken', token)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN, token)\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() =>\n router.push(\n typeof data.redirectUrl === 'string' ? data.redirectUrl : '/'\n )\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.LOGOUT](\n context: ActionContext\n ): void {\n removeAuthUserData(context)\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_PROFILE](\n context: ActionContext,\n payload: IUserPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .post('auth/profile/edit', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE,\n res.data.data\n )\n router.push('/profile')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_PREFERENCES](\n context: ActionContext,\n payload: IUserPreferencesPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .post('auth/profile/edit/preferences', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE,\n res.data.data\n )\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_LANG,\n res.data.data.language\n )\n locale.value = res.data.data.language\n router.push('/profile/preferences')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.UPDATE_USER_PICTURE](\n context: ActionContext,\n payload: IUserPicturePayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n if (!payload.picture) {\n throw new Error('No file part')\n }\n const form = new FormData()\n form.append('file', payload.picture)\n authApi\n .post('auth/picture', form, {\n headers: {\n 'content-type': 'multipart/form-data',\n },\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() => router.push('/profile'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.DELETE_ACCOUNT](\n context: ActionContext,\n payload: IUserDeletionPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .delete(`users/${payload.username}`)\n .then((res) => {\n if (res.status === 204) {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.LOGOUT)\n .then(() => router.push('/'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.DELETE_PICTURE](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, true)\n authApi\n .delete(`auth/picture`)\n .then((res) => {\n if (res.status === 204) {\n context\n .dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n .then(() => router.push('/profile'))\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING, false)\n )\n },\n [AUTH_USER_STORE.ACTIONS.SEND_PASSWORD_RESET_REQUEST](\n context: ActionContext,\n payload: IUserPasswordPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n api\n .post('auth/password/reset-request', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n router.push('/password-reset/sent')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [AUTH_USER_STORE.ACTIONS.RESET_USER_PASSWORD](\n context: ActionContext,\n payload: IUserPasswordResetPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n api\n .post('auth/password/update', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n router.push('/password-reset/password-updated')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { AUTH_USER_STORE } from '@/store/constants'\nimport {\n IAuthUserGetters,\n IAuthUserState,\n} from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\n\nexport const getters: GetterTree &\n IAuthUserGetters = {\n [AUTH_USER_STORE.GETTERS.AUTH_TOKEN]: (state: IAuthUserState) => {\n return state.authToken\n },\n [AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]: (state: IAuthUserState) => {\n return state.authUserProfile\n },\n [AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED]: (state: IAuthUserState) => {\n return state.authToken !== null\n },\n [AUTH_USER_STORE.GETTERS.IS_ADMIN]: (state: IAuthUserState) => {\n return state.authUserProfile && state.authUserProfile.admin\n },\n [AUTH_USER_STORE.GETTERS.USER_LOADING]: (state: IAuthUserState) => {\n return state.loading\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { AUTH_USER_STORE } from '@/store/constants'\nimport {\n IAuthUserState,\n TAuthUserMutations,\n} from '@/store/modules/authUser/types'\nimport { IUserProfile } from '@/types/user'\n\nexport const mutations: MutationTree & TAuthUserMutations = {\n [AUTH_USER_STORE.MUTATIONS.CLEAR_AUTH_USER_TOKEN](state: IAuthUserState) {\n state.authToken = null\n state.authUserProfile = {}\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_TOKEN](\n state: IAuthUserState,\n authToken: string\n ) {\n state.authToken = authToken\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_AUTH_USER_PROFILE](\n state: IAuthUserState,\n authUserProfile: IUserProfile\n ) {\n state.authUserProfile = authUserProfile\n },\n [AUTH_USER_STORE.MUTATIONS.UPDATE_USER_LOADING](\n state: IAuthUserState,\n loading: boolean\n ) {\n state.loading = loading\n },\n}\n","import { IAuthUserState } from '@/store/modules/authUser/types'\nimport { IUserProfile } from '@/types/user'\n\nexport const authUserState: IAuthUserState = {\n authToken: null,\n authUserProfile: {},\n loading: false,\n}\n","import { Module } from 'vuex'\n\nimport { actions } from '@/store/modules/authUser/actions'\nimport { getters } from '@/store/modules/authUser/getters'\nimport { mutations } from '@/store/modules/authUser/mutations'\nimport { authUserState } from '@/store/modules/authUser/state'\nimport { IAuthUserState } from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\n\nconst authUser: Module = {\n state: authUserState,\n actions,\n getters,\n mutations,\n}\n\nexport default authUser\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport router from '@/router'\nimport { ROOT_STORE } from '@/store/constants'\nimport { IRootActions, IRootState } from '@/store/modules/root/types'\nimport { TAppConfigForm } from '@/types/application'\nimport { handleError } from '@/utils'\n\nexport const actions: ActionTree & IRootActions = {\n [ROOT_STORE.ACTIONS.GET_APPLICATION_CONFIG](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_LOADING, true)\n authApi\n .get('config')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_CONFIG,\n res.data.data\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_LOADING, false)\n )\n },\n [ROOT_STORE.ACTIONS.GET_APPLICATION_STATS](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('stats/all')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_STATS,\n res.data.data\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [ROOT_STORE.ACTIONS.UPDATE_APPLICATION_CONFIG](\n context: ActionContext,\n payload: TAppConfigForm\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .patch('config', payload)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_CONFIG,\n res.data.data\n )\n router.push('/admin/application')\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { ROOT_STORE } from '@/store/constants'\nimport { IRootGetters, IRootState } from '@/store/modules/root/types'\n\nexport const getters: GetterTree & IRootGetters = {\n [ROOT_STORE.GETTERS.APP_CONFIG]: (state: IRootState) => {\n return state.application.config\n },\n [ROOT_STORE.GETTERS.APP_LOADING]: (state: IRootState) => {\n return state.appLoading\n },\n [ROOT_STORE.GETTERS.APP_STATS]: (state: IRootState) => {\n return state.application.statistics\n },\n [ROOT_STORE.GETTERS.ERROR_MESSAGES]: (state: IRootState) => {\n return state.errorMessages\n },\n [ROOT_STORE.GETTERS.LANGUAGE]: (state: IRootState) => {\n return state.language\n },\n [ROOT_STORE.GETTERS.LOCALE]: (state: IRootState) => {\n return state.locale\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { ROOT_STORE } from '@/store/constants'\nimport { IRootState, TRootMutations } from '@/store/modules/root/types'\nimport { TAppConfig, IAppStatistics } from '@/types/application'\nimport { localeFromLanguage } from '@/utils/locales'\n\nexport const mutations: MutationTree & TRootMutations = {\n [ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES](state: IRootState) {\n state.errorMessages = null\n },\n [ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES](\n state: IRootState,\n errorMessages: string\n ) {\n state.errorMessages = errorMessages\n },\n [ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_CONFIG](\n state: IRootState,\n config: TAppConfig\n ) {\n state.application.config = config\n },\n [ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_LOADING](\n state: IRootState,\n loading: boolean\n ) {\n state.appLoading = loading\n },\n [ROOT_STORE.MUTATIONS.UPDATE_APPLICATION_STATS](\n state: IRootState,\n statistics: IAppStatistics\n ) {\n state.application.statistics = statistics\n },\n [ROOT_STORE.MUTATIONS.UPDATE_LANG](state: IRootState, language: string) {\n state.language = language\n state.locale = localeFromLanguage[language]\n },\n}\n","import { enUS } from 'date-fns/locale'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { IApplication } from '@/types/application'\n\nexport const state: IRootState = {\n root: true,\n language: 'en',\n locale: enUS,\n errorMessages: null,\n application: {},\n appLoading: false,\n}\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport { ROOT_STORE, SPORTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { ISportsActions, ISportsState } from '@/store/modules/sports/types'\nimport { ISportPayload } from '@/types/sports'\nimport { handleError } from '@/utils'\n\nexport const actions: ActionTree & ISportsActions = {\n [SPORTS_STORE.ACTIONS.GET_SPORTS](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('sports')\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n SPORTS_STORE.MUTATIONS.SET_SPORTS,\n res.data.data.sports\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n [SPORTS_STORE.ACTIONS.UPDATE_SPORTS](\n context: ActionContext,\n payload: ISportPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .patch(`sports/${payload.id}`, { is_active: payload.isActive })\n .then((res) => {\n if (res.data.status === 'success') {\n context.dispatch(SPORTS_STORE.ACTIONS.GET_SPORTS)\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { SPORTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { ISportsGetters, ISportsState } from '@/store/modules/sports/types'\n\nexport const getters: GetterTree & ISportsGetters = {\n [SPORTS_STORE.GETTERS.SPORTS]: (state: ISportsState) => state.sports,\n}\n","import { MutationTree } from 'vuex'\n\nimport { SPORTS_STORE } from '@/store/constants'\nimport { ISportsState, TSportsMutations } from '@/store/modules/sports/types'\nimport { ISport } from '@/types/sports'\n\nexport const mutations: MutationTree & TSportsMutations = {\n [SPORTS_STORE.MUTATIONS.SET_SPORTS](state: ISportsState, sports: ISport[]) {\n state.sports = sports\n },\n}\n","import { ISportsState } from '@/store/modules/sports/types'\n\nexport const sportsState: ISportsState = {\n sports: [],\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/sports/actions'\nimport { getters } from '@/store/modules/sports/getters'\nimport { mutations } from '@/store/modules/sports/mutations'\nimport { sportsState } from '@/store/modules/sports/state'\nimport { ISportsState } from '@/store/modules/sports/types'\n\nconst sports: Module = {\n state: sportsState,\n actions,\n getters,\n mutations,\n}\n\nexport default sports\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport { STATS_STORE, ROOT_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n IStatisticsActions,\n IStatisticsState,\n} from '@/store/modules/statistics/types'\nimport { IUserStatisticsPayload } from '@/types/statistics'\nimport { handleError } from '@/utils'\n\nexport const actions: ActionTree &\n IStatisticsActions = {\n [STATS_STORE.ACTIONS.GET_USER_STATS](\n context: ActionContext,\n payload: IUserStatisticsPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get(`stats/${payload.username}/${payload.filterType}`, {\n params: payload.params,\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n STATS_STORE.MUTATIONS.UPDATE_USER_STATS,\n res.data.data.statistics\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { STATS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n IStatisticsGetters,\n IStatisticsState,\n} from '@/store/modules/statistics/types'\n\nexport const getters: GetterTree &\n IStatisticsGetters = {\n [STATS_STORE.GETTERS.USER_STATS]: (state: IStatisticsState) => {\n return state.statistics\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { STATS_STORE } from '@/store/constants'\nimport {\n IStatisticsState,\n TStatisticsMutations,\n} from '@/store/modules/statistics/types'\nimport { TStatisticsFromApi } from '@/types/statistics'\n\nexport const mutations: MutationTree & TStatisticsMutations =\n {\n [STATS_STORE.MUTATIONS.UPDATE_USER_STATS](\n state: IStatisticsState,\n statistics: TStatisticsFromApi\n ) {\n state.statistics = statistics\n },\n [STATS_STORE.MUTATIONS.EMPTY_USER_STATS](state: IStatisticsState) {\n state.statistics = {}\n },\n }\n","import { IStatisticsState } from '@/store/modules/statistics/types'\nimport { TStatisticsFromApi } from '@/types/statistics'\n\nexport const statisticsState: IStatisticsState = {\n statistics: {},\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/statistics/actions'\nimport { getters } from '@/store/modules/statistics/getters'\nimport { mutations } from '@/store/modules/statistics/mutations'\nimport { statisticsState } from '@/store/modules/statistics/state'\nimport { IStatisticsState } from '@/store/modules/statistics/types'\n\nconst statistics: Module = {\n state: statisticsState,\n actions,\n getters,\n mutations,\n}\n\nexport default statistics\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport { ROOT_STORE, USERS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { IUsersActions, IUsersState } from '@/store/modules/users/types'\nimport { TPaginationPayload } from '@/types/api'\nimport { IAdminUserPayload } from '@/types/user'\nimport { handleError } from '@/utils'\n\nexport const actions: ActionTree & IUsersActions = {\n [USERS_STORE.ACTIONS.EMPTY_USER](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USER, {})\n },\n [USERS_STORE.ACTIONS.EMPTY_USERS](\n context: ActionContext\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS, [])\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_PAGINATION, {})\n },\n [USERS_STORE.ACTIONS.GET_USER](\n context: ActionContext,\n username: string\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, true)\n authApi\n .get(`users/${username}`)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USER,\n res.data.data.users[0]\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, false)\n )\n },\n [USERS_STORE.ACTIONS.GET_USERS](\n context: ActionContext,\n payload: TPaginationPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, true)\n authApi\n .get('users', { params: payload })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USERS,\n res.data.data.users\n )\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USERS_PAGINATION,\n res.data.pagination\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, false)\n )\n },\n [USERS_STORE.ACTIONS.UPDATE_USER](\n context: ActionContext,\n payload: IAdminUserPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .patch(`users/${payload.username}`, { admin: payload.admin })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n USERS_STORE.MUTATIONS.UPDATE_USER_IN_USERS,\n res.data.data.users[0]\n )\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n .finally(() =>\n context.commit(USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING, false)\n )\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { USERS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { IUsersGetters, IUsersState } from '@/store/modules/users/types'\n\nexport const getters: GetterTree & IUsersGetters = {\n [USERS_STORE.GETTERS.USER]: (state: IUsersState) => {\n return state.user\n },\n [USERS_STORE.GETTERS.USERS]: (state: IUsersState) => {\n return state.users\n },\n [USERS_STORE.GETTERS.USERS_LOADING]: (state: IUsersState) => {\n return state.loading\n },\n [USERS_STORE.GETTERS.USERS_PAGINATION]: (state: IUsersState) => {\n return state.pagination\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { USERS_STORE } from '@/store/constants'\nimport { IUsersState, TUsersMutations } from '@/store/modules/users/types'\nimport { IPagination } from '@/types/api'\nimport { IUserProfile } from '@/types/user'\n\nexport const mutations: MutationTree & TUsersMutations = {\n [USERS_STORE.MUTATIONS.UPDATE_USER](state: IUsersState, user: IUserProfile) {\n state.user = user\n },\n [USERS_STORE.MUTATIONS.UPDATE_USER_IN_USERS](\n state: IUsersState,\n updatedUser: IUserProfile\n ) {\n state.users = state.users.map((user) => {\n if (user.username === updatedUser.username) {\n return updatedUser\n }\n return user\n })\n },\n [USERS_STORE.MUTATIONS.UPDATE_USERS](\n state: IUsersState,\n users: IUserProfile[]\n ) {\n state.users = users\n },\n [USERS_STORE.MUTATIONS.UPDATE_USERS_LOADING](\n state: IUsersState,\n loading: boolean\n ) {\n state.loading = loading\n },\n [USERS_STORE.MUTATIONS.UPDATE_USERS_PAGINATION](\n state: IUsersState,\n pagination: IPagination\n ) {\n state.pagination = pagination\n },\n}\n","import { IUsersState } from '@/store/modules/users/types'\nimport { IPagination } from '@/types/api'\nimport { IUserProfile } from '@/types/user'\n\nexport const usersState: IUsersState = {\n user: {},\n users: [],\n loading: false,\n pagination: {},\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/users/actions'\nimport { getters } from '@/store/modules/users/getters'\nimport { mutations } from '@/store/modules/users/mutations'\nimport { usersState } from '@/store/modules/users/state'\nimport { IUsersState } from '@/store/modules/users/types'\n\nconst users: Module = {\n state: usersState,\n actions,\n getters,\n mutations,\n}\n\nexport default users\n","import { ActionContext, ActionTree } from 'vuex'\n\nimport authApi from '@/api/authApi'\nimport router from '@/router'\nimport { ROOT_STORE, AUTH_USER_STORE, WORKOUTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport { WorkoutsMutations } from '@/store/modules/workouts/enums'\nimport {\n IWorkoutsActions,\n IWorkoutsState,\n} from '@/store/modules/workouts/types'\nimport {\n IWorkout,\n IWorkoutForm,\n IWorkoutPayload,\n TWorkoutsPayload,\n} from '@/types/workouts'\nimport { handleError } from '@/utils'\n\nconst getWorkouts = (\n context: ActionContext,\n payload: TWorkoutsPayload,\n target: WorkoutsMutations\n): void => {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n authApi\n .get('workouts', {\n params: payload,\n })\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(WORKOUTS_STORE.MUTATIONS[target], res.data.data.workouts)\n if (target === WorkoutsMutations['SET_USER_WORKOUTS']) {\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUTS_PAGINATION,\n res.data.pagination\n )\n }\n } else {\n handleError(context, null)\n }\n })\n .catch((error) => handleError(context, error))\n}\n\nexport const actions: ActionTree &\n IWorkoutsActions = {\n [WORKOUTS_STORE.ACTIONS.GET_CALENDAR_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_CALENDAR_WORKOUTS)\n getWorkouts(context, payload, WorkoutsMutations['SET_CALENDAR_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_USER_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n getWorkouts(context, payload, WorkoutsMutations['SET_USER_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_TIMELINE_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n getWorkouts(context, payload, WorkoutsMutations['SET_TIMELINE_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_MORE_TIMELINE_WORKOUTS](\n context: ActionContext,\n payload: TWorkoutsPayload\n ): void {\n getWorkouts(context, payload, WorkoutsMutations['ADD_TIMELINE_WORKOUTS'])\n },\n [WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA](\n context: ActionContext,\n payload: IWorkoutPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n const segmentUrl = payload.segmentId ? `/segment/${payload.segmentId}` : ''\n authApi\n .get(`workouts/${payload.workoutId}`)\n .then((res) => {\n const workout: IWorkout = res.data.data.workouts[0]\n if (res.data.status === 'success') {\n if (\n payload.segmentId &&\n (workout.segments.length === 0 ||\n !workout.segments[+payload.segmentId - 1])\n ) {\n throw new Error('WORKOUT_NOT_FOUND')\n }\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUT,\n res.data.data.workouts[0]\n )\n if (res.data.data.workouts[0].with_gpx) {\n authApi\n .get(`workouts/${payload.workoutId}/chart_data${segmentUrl}`)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_CHART_DATA,\n res.data.data.chart_data\n )\n }\n })\n authApi\n .get(`workouts/${payload.workoutId}/gpx${segmentUrl}`)\n .then((res) => {\n if (res.data.status === 'success') {\n context.commit(\n WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_GPX,\n res.data.data.gpx\n )\n }\n })\n }\n } else {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n handleError(context, null)\n }\n })\n .catch((error) => {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.DELETE_WORKOUT](\n context: ActionContext,\n payload: IWorkoutPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n authApi\n .delete(`workouts/${payload.workoutId}`)\n .then(() => {\n context.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n router.push('/')\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.EDIT_WORKOUT](\n context: ActionContext,\n payload: IWorkoutPayload\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n authApi\n .patch(`workouts/${payload.workoutId}`, payload.data)\n .then(() => {\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n context\n .dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, {\n workoutId: payload.workoutId,\n })\n .then(() => {\n router.push({\n name: 'Workout',\n params: { workoutId: payload.workoutId },\n })\n })\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.ADD_WORKOUT](\n context: ActionContext,\n payload: IWorkoutForm\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n if (!payload.file) {\n throw new Error('No file part')\n }\n const form = new FormData()\n form.append('file', payload.file)\n form.append(\n 'data',\n `{\"sport_id\": ${payload.sport_id}, \"notes\": \"${payload.notes}\"}`\n )\n authApi\n .post('workouts', form, {\n headers: {\n 'content-type': 'multipart/form-data',\n },\n })\n .then((res) => {\n if (res.data.status === 'created') {\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n const workout: IWorkout = res.data.data.workouts[0]\n router.push(\n res.data.data.workouts.length === 1\n ? `/workouts/${workout.id}`\n : '/'\n )\n }\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n [WORKOUTS_STORE.ACTIONS.ADD_WORKOUT_WITHOUT_GPX](\n context: ActionContext,\n payload: IWorkoutForm\n ): void {\n context.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, true)\n authApi\n .post('workouts/no_gpx', payload)\n .then((res) => {\n if (res.data.status === 'created') {\n context.dispatch(AUTH_USER_STORE.ACTIONS.GET_USER_PROFILE)\n const workout: IWorkout = res.data.data.workouts[0]\n router.push(`/workouts/${workout.id}`)\n }\n })\n .catch((error) => {\n handleError(context, error)\n })\n .finally(() =>\n context.commit(WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING, false)\n )\n },\n}\n","import { GetterTree } from 'vuex'\n\nimport { WORKOUTS_STORE } from '@/store/constants'\nimport { IRootState } from '@/store/modules/root/types'\nimport {\n IWorkoutsGetters,\n IWorkoutsState,\n} from '@/store/modules/workouts/types'\n\nexport const getters: GetterTree &\n IWorkoutsGetters = {\n [WORKOUTS_STORE.GETTERS.CALENDAR_WORKOUTS]: (state: IWorkoutsState) => {\n return state.calendar_workouts\n },\n [WORKOUTS_STORE.GETTERS.TIMELINE_WORKOUTS]: (state: IWorkoutsState) => {\n return state.timeline_workouts\n },\n [WORKOUTS_STORE.GETTERS.USER_WORKOUTS]: (state: IWorkoutsState) => {\n return state.user_workouts\n },\n [WORKOUTS_STORE.GETTERS.WORKOUT_DATA]: (state: IWorkoutsState) => {\n return state.workoutData\n },\n [WORKOUTS_STORE.GETTERS.WORKOUTS_PAGINATION]: (state: IWorkoutsState) => {\n return state.pagination\n },\n}\n","import { MutationTree } from 'vuex'\n\nimport { WORKOUTS_STORE } from '@/store/constants'\nimport {\n IWorkoutsState,\n TWorkoutsMutations,\n} from '@/store/modules/workouts/types'\nimport { IPagination } from '@/types/api'\nimport { IWorkout, IWorkoutApiChartData } from '@/types/workouts'\n\nexport const mutations: MutationTree & TWorkoutsMutations = {\n [WORKOUTS_STORE.MUTATIONS.ADD_TIMELINE_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.timeline_workouts = state.timeline_workouts.concat(workouts)\n },\n [WORKOUTS_STORE.MUTATIONS.SET_CALENDAR_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.calendar_workouts = workouts\n },\n [WORKOUTS_STORE.MUTATIONS.SET_TIMELINE_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.timeline_workouts = workouts\n },\n [WORKOUTS_STORE.MUTATIONS.SET_USER_WORKOUTS](\n state: IWorkoutsState,\n workouts: IWorkout[]\n ) {\n state.user_workouts = workouts\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUTS_PAGINATION](\n state: IWorkoutsState,\n pagination: IPagination\n ) {\n state.pagination = pagination\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT](\n state: IWorkoutsState,\n workout: IWorkout\n ) {\n state.workoutData.workout = workout\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_CHART_DATA](\n state: IWorkoutsState,\n chartData: IWorkoutApiChartData[]\n ) {\n state.workoutData.chartData = chartData\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_GPX](\n state: IWorkoutsState,\n gpx: string\n ) {\n state.workoutData.gpx = gpx\n },\n [WORKOUTS_STORE.MUTATIONS.SET_WORKOUT_LOADING](\n state: IWorkoutsState,\n loading: boolean\n ) {\n state.workoutData.loading = loading\n },\n [WORKOUTS_STORE.MUTATIONS.EMPTY_CALENDAR_WORKOUTS](state: IWorkoutsState) {\n state.calendar_workouts = []\n },\n [WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUTS](state: IWorkoutsState) {\n state.calendar_workouts = []\n state.user_workouts = []\n state.timeline_workouts = []\n },\n [WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT](state: IWorkoutsState) {\n state.workoutData = {\n gpx: '',\n loading: false,\n workout: {},\n chartData: [],\n }\n },\n}\n","import { IWorkoutsState } from '@/store/modules/workouts/types'\nimport { IPagination } from '@/types/api'\nimport { IWorkout } from '@/types/workouts'\n\nexport const workoutsState: IWorkoutsState = {\n calendar_workouts: [],\n timeline_workouts: [],\n pagination: {},\n user_workouts: [],\n workoutData: {\n gpx: '',\n loading: false,\n workout: {},\n chartData: [],\n },\n}\n","import { Module } from 'vuex'\n\nimport { IRootState } from '@/store/modules/root/types'\nimport { actions } from '@/store/modules/workouts/actions'\nimport { getters } from '@/store/modules/workouts/getters'\nimport { mutations } from '@/store/modules/workouts/mutations'\nimport { workoutsState } from '@/store/modules/workouts/state'\nimport { IWorkoutsState } from '@/store/modules/workouts/types'\n\nconst workouts: Module = {\n state: workoutsState,\n actions,\n getters,\n mutations,\n}\n\nexport default workouts\n","import { Module, ModuleTree } from 'vuex'\n\nimport authUserModule from '@/store/modules/authUser'\nimport { actions } from '@/store/modules/root/actions'\nimport { getters } from '@/store/modules/root/getters'\nimport { mutations } from '@/store/modules/root/mutations'\nimport { state } from '@/store/modules/root/state'\nimport { IRootState } from '@/store/modules/root/types'\nimport sportsModule from '@/store/modules/sports'\nimport statsModule from '@/store/modules/statistics'\nimport usersModule from '@/store/modules/users'\nimport workoutsModule from '@/store/modules/workouts'\n\nconst modules: ModuleTree = {\n authUserModule,\n sportsModule,\n statsModule,\n usersModule,\n workoutsModule,\n}\n\nconst root: Module = {\n state,\n actions,\n getters,\n mutations,\n modules,\n}\n\nexport default root\n","import { createStore } from 'vuex'\n\nimport root from '@/store/modules/root'\nimport { IRootState } from '@/store/modules/root/types'\n\nconst store = createStore(root)\n\nexport default store\n","import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'\n\nimport AdminApplication from '@/components/Administration/AdminApplication.vue'\nimport AdminMenu from '@/components/Administration/AdminMenu.vue'\nimport AdminSports from '@/components/Administration/AdminSports.vue'\nimport AdminUsers from '@/components/Administration/AdminUsers.vue'\nimport Profile from '@/components/User/ProfileDisplay/index.vue'\nimport UserInfos from '@/components/User/ProfileDisplay/UserInfos.vue'\nimport UserPreferences from '@/components/User/ProfileDisplay/UserPreferences.vue'\nimport ProfileEdition from '@/components/User/ProfileEdition/index.vue'\nimport UserInfosEdition from '@/components/User/ProfileEdition/UserInfosEdition.vue'\nimport UserPictureEdition from '@/components/User/ProfileEdition/UserPictureEdition.vue'\nimport UserPreferencesEdition from '@/components/User/ProfileEdition/UserPreferencesEdition.vue'\nimport store from '@/store'\nimport { AUTH_USER_STORE } from '@/store/constants'\n\nconst getTabFromPath = (path: string): string => {\n const regex = /(\\/profile)(\\/edit)*(\\/*)/\n const tag = path.replace(regex, '').toUpperCase()\n return tag === '' ? 'PROFILE' : tag.toUpperCase()\n}\n\nconst routes: Array = [\n {\n path: '/',\n name: 'Dashboard',\n component: () =>\n import(/* webpackChunkName: 'main' */ '@/views/Dashboard.vue'),\n },\n {\n path: '/login',\n name: 'Login',\n component: () =>\n import(/* webpackChunkName: 'main' */ '@/views/user/LoginOrRegister.vue'),\n props: { action: 'login' },\n },\n {\n path: '/register',\n name: 'Register',\n component: () =>\n import(/* webpackChunkName: 'main' */ '@/views/user/LoginOrRegister.vue'),\n props: { action: 'register' },\n },\n {\n path: '/password-reset/sent',\n name: 'PasswordEmailSent',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'request-sent' },\n },\n {\n path: '/password-reset/request',\n name: 'PasswordResetRequest',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'reset-request' },\n },\n {\n path: '/password-reset/password-updated',\n name: 'PasswordUpdated',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'password-updated' },\n },\n {\n path: '/password-reset',\n name: 'PasswordReset',\n component: () =>\n import(\n /* webpackChunkName: 'reset' */ '@/views/user/PasswordResetView.vue'\n ),\n props: { action: 'reset' },\n },\n {\n path: '/profile',\n name: 'Profile',\n component: () =>\n import(/* webpackChunkName: 'profile' */ '@/views/user/ProfileView.vue'),\n children: [\n {\n path: '',\n name: 'UserProfile',\n component: Profile,\n props: (route) => ({\n tab: getTabFromPath(route.path),\n }),\n children: [\n {\n path: '',\n name: 'UserInfos',\n component: UserInfos,\n },\n {\n path: 'preferences',\n name: 'UserPreferences',\n component: UserPreferences,\n },\n ],\n },\n {\n path: 'edit',\n name: 'UserProfileEdition',\n component: ProfileEdition,\n props: (route) => ({\n tab: getTabFromPath(route.path),\n }),\n children: [\n {\n path: '',\n name: 'UserInfosEdition',\n component: UserInfosEdition,\n },\n {\n path: 'picture',\n name: 'UserPictureEdition',\n component: UserPictureEdition,\n },\n {\n path: 'preferences',\n name: 'UserPreferencesEdition',\n component: UserPreferencesEdition,\n },\n ],\n },\n ],\n },\n {\n path: '/statistics',\n name: 'Statistics',\n component: () =>\n import(/* webpackChunkName: 'main' */ '@/views/StatisticsView.vue'),\n },\n {\n path: '/users/:username',\n name: 'User',\n component: () =>\n import(/* webpackChunkName: 'profile' */ '@/views/user/UserView.vue'),\n },\n {\n path: '/workouts',\n name: 'Workouts',\n component: () =>\n import(\n /* webpackChunkName: 'workouts' */ '@/views/workouts/WorkoutsView.vue'\n ),\n },\n {\n path: '/workouts/:workoutId',\n name: 'Workout',\n component: () =>\n import(/* webpackChunkName: 'workouts' */ '@/views/workouts/Workout.vue'),\n props: { displaySegment: false },\n },\n {\n path: '/workouts/:workoutId/edit',\n name: 'EditWorkout',\n component: () =>\n import(\n /* webpackChunkName: 'workouts' */ '@/views/workouts/EditWorkout.vue'\n ),\n },\n {\n path: '/workouts/:workoutId/segment/:segmentId',\n name: 'WorkoutSegment',\n component: () =>\n import(/* webpackChunkName: 'workouts' */ '@/views/workouts/Workout.vue'),\n props: { displaySegment: true },\n },\n {\n path: '/workouts/add',\n name: 'AddWorkout',\n component: () =>\n import(\n /* webpackChunkName: 'workouts' */ '@/views/workouts/AddWorkout.vue'\n ),\n },\n {\n path: '/admin',\n name: 'Administration',\n component: () =>\n import(/* webpackChunkName: 'admin' */ '@/views/AdminView.vue'),\n children: [\n {\n path: '',\n name: 'AdministrationMenu',\n component: AdminMenu,\n },\n {\n path: 'application',\n name: 'ApplicationAdministration',\n component: AdminApplication,\n },\n {\n path: 'application/edit',\n name: 'ApplicationAdministrationEdition',\n component: AdminApplication,\n props: { edition: true },\n },\n {\n path: 'sports',\n name: 'SportsAdministration',\n component: AdminSports,\n },\n {\n path: 'users',\n name: 'UsersAdministration',\n component: AdminUsers,\n },\n ],\n },\n {\n path: '/:pathMatch(.*)*',\n name: 'not-found',\n component: () =>\n import(/* webpackChunkName: 'main' */ '@/views/NotFoundView.vue'),\n },\n]\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes,\n})\n\nconst pathsWithoutAuthentication = [\n '/login',\n '/password-reset',\n '/password-reset/password-updated',\n '/password-reset/request',\n '/password-reset/sent',\n '/register',\n]\n\nrouter.beforeEach((to, from, next) => {\n store\n .dispatch(AUTH_USER_STORE.ACTIONS.CHECK_AUTH_USER)\n .then(() => {\n if (\n store.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED] &&\n pathsWithoutAuthentication.includes(to.path)\n ) {\n return next('/')\n } else if (\n !store.getters[AUTH_USER_STORE.GETTERS.IS_AUTHENTICATED] &&\n !pathsWithoutAuthentication.includes(to.path)\n ) {\n const path =\n to.path === '/'\n ? { path: '/login' }\n : { path: '/login', query: { from: to.fullPath } }\n next(path)\n } else {\n next()\n }\n })\n .catch((error) => {\n console.error(error)\n next()\n })\n})\n\nexport default router\n","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-f5e8066a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"alert-message\" }\nconst _hoisted_2 = [\"innerHTML\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n innerHTML: _ctx.$t(_ctx.message)\n }, null, 8, _hoisted_2)\n ]))\n}","\n import { defineComponent } from 'vue'\n\n export default defineComponent({\n name: 'AlertMessage',\n props: {\n message: String,\n },\n })\n","import { render } from \"./AlertMessage.vue?vue&type=template&id=f5e8066a&scoped=true&ts=true\"\nimport script from \"./AlertMessage.vue?vue&type=script&lang=ts\"\nexport * from \"./AlertMessage.vue?vue&type=script&lang=ts\"\n\nimport \"./AlertMessage.vue?vue&type=style&index=0&id=f5e8066a&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-f5e8066a\"]])\n\nexport default __exports__","import { vModelText as _vModelText, createElementVNode as _createElementVNode, withDirectives as _withDirectives, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-ad3739fc\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"custom-textarea\" }\nconst _hoisted_2 = [\"id\", \"name\", \"maxLenght\", \"disabled\"]\nconst _hoisted_3 = { class: \"remaining-chars\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _withDirectives(_createElementVNode(\"textarea\", {\n id: _ctx.name,\n name: _ctx.name,\n maxLenght: _ctx.charLimit,\n disabled: _ctx.disabled,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((_ctx.text) = $event)),\n onInput: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.updateText && _ctx.updateText(...args)))\n }, null, 40, _hoisted_2), [\n [_vModelText, _ctx.text]\n ]),\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(_ctx.$t('workouts.REMAINING_CHARS')) + \": \" + _toDisplayString(_ctx.text.length) + \"/\" + _toDisplayString(_ctx.charLimit), 1)\n ]))\n}","\n import { defineComponent, ref, watch } from 'vue'\n\n export default defineComponent({\n name: 'CustomTextArea',\n props: {\n charLimit: {\n type: Number,\n default: 500,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n input: {\n type: String,\n default: '',\n },\n name: {\n type: String,\n required: true,\n },\n },\n emits: ['updateValue'],\n setup(props, { emit }) {\n let text = ref('')\n\n function updateText(event: Event & { target: HTMLInputElement }) {\n emit('updateValue', event.target.value)\n }\n\n watch(\n () => props.input,\n (value) => {\n text.value = value\n }\n )\n\n return { text, updateText }\n },\n })\n","import { render } from \"./CustomTextArea.vue?vue&type=template&id=ad3739fc&scoped=true&ts=true\"\nimport script from \"./CustomTextArea.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomTextArea.vue?vue&type=script&lang=ts\"\n\nimport \"./CustomTextArea.vue?vue&type=style&index=0&id=ad3739fc&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-ad3739fc\"]])\n\nexport default __exports__","import { renderSlot as _renderSlot, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5ef2ddef\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"dropdown-wrapper\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"dropdown-list\"\n}\nconst _hoisted_3 = [\"onClick\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: \"dropdown-selected\",\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.toggleDropdown && _ctx.toggleDropdown(...args)))\n }, [\n _renderSlot(_ctx.$slots, \"default\", {}, undefined, true)\n ]),\n (_ctx.isOpen)\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.dropdownOptions, (option, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n class: _normalizeClass([\"dropdown-item\", { selected: option.value === _ctx.selected }]),\n key: index,\n onClick: ($event: any) => (_ctx.updateSelected(option))\n }, _toDisplayString(option.label), 11, _hoisted_3))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}","\n import { PropType, defineComponent, ref, watch } from 'vue'\n import { useRoute } from 'vue-router'\n\n import { IDropdownOption, TDropdownOptions } from '@/types/forms'\n\n export default defineComponent({\n name: 'Dropdown',\n props: {\n options: {\n type: Object as PropType,\n required: true,\n },\n selected: {\n type: String,\n required: true,\n },\n },\n emits: {\n selected: (option: IDropdownOption) => option,\n },\n setup(props, { emit }) {\n const route = useRoute()\n let isOpen = ref(false)\n let dropdownOptions = props.options.map((option) => option)\n\n function toggleDropdown() {\n isOpen.value = !isOpen.value\n }\n function updateSelected(option: IDropdownOption) {\n emit('selected', option)\n isOpen.value = false\n }\n\n watch(\n () => route.path,\n () => (isOpen.value = false)\n )\n\n return {\n dropdownOptions,\n isOpen,\n toggleDropdown,\n updateSelected,\n }\n },\n })\n","import { render } from \"./Dropdown.vue?vue&type=template&id=5ef2ddef&scoped=true&ts=true\"\nimport script from \"./Dropdown.vue?vue&type=script&lang=ts\"\nexport * from \"./Dropdown.vue?vue&type=script&lang=ts\"\n\nimport \"./Dropdown.vue?vue&type=style&index=0&id=5ef2ddef&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5ef2ddef\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5c177a93\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"error-message\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { key: 1 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (Array.isArray(_ctx.message))\n ? (_openBlock(), _createElementBlock(\"ul\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.message, (subMessage, index) => {\n return (_openBlock(), _createElementBlock(\"li\", { key: index }, _toDisplayString(_ctx.$t(subMessage)), 1))\n }), 128))\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, _toDisplayString(_ctx.$t(_ctx.message)), 1))\n ]))\n}","\n import { defineComponent } from 'vue'\n\n export default defineComponent({\n name: 'ErrorMessage',\n props: {\n message: [String, Array],\n },\n })\n","import { render } from \"./ErrorMessage.vue?vue&type=template&id=5c177a93&scoped=true&ts=true\"\nimport script from \"./ErrorMessage.vue?vue&type=script&lang=ts\"\nexport * from \"./ErrorMessage.vue?vue&type=script&lang=ts\"\n\nimport \"./ErrorMessage.vue?vue&type=style&index=0&id=5c177a93&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5c177a93\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"title\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_CyclingSport = _resolveComponent(\"CyclingSport\")!\n const _component_CyclingTransport = _resolveComponent(\"CyclingTransport\")!\n const _component_Hiking = _resolveComponent(\"Hiking\")!\n const _component_MountainBiking = _resolveComponent(\"MountainBiking\")!\n const _component_MountainBikingElectric = _resolveComponent(\"MountainBikingElectric\")!\n const _component_Rowing = _resolveComponent(\"Rowing\")!\n const _component_Running = _resolveComponent(\"Running\")!\n const _component_SkiingAlpine = _resolveComponent(\"SkiingAlpine\")!\n const _component_SkiingCrossCountry = _resolveComponent(\"SkiingCrossCountry\")!\n const _component_Trail = _resolveComponent(\"Trail\")!\n const _component_Walking = _resolveComponent(\"Walking\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"sport-img\",\n style: _normalizeStyle({ fill: _ctx.sportColors[_ctx.sportLabel] }),\n title: _ctx.title ? _ctx.title : _ctx.$t(`sports.${_ctx.sportLabel}.LABEL`)\n }, [\n (_ctx.sportLabel === 'Cycling (Sport)')\n ? (_openBlock(), _createBlock(_component_CyclingSport, { key: 0 }))\n : _createCommentVNode(\"\", true),\n (_ctx.sportLabel === 'Cycling (Transport)')\n ? (_openBlock(), _createBlock(_component_CyclingTransport, { key: 1 }))\n : _createCommentVNode(\"\", true),\n (_ctx.sportLabel === 'Hiking')\n ? (_openBlock(), _createBlock(_component_Hiking, { key: 2 }))\n : _createCommentVNode(\"\", true),\n (_ctx.sportLabel === 'Mountain Biking')\n ? (_openBlock(), _createBlock(_component_MountainBiking, { key: 3 }))\n : _createCommentVNode(\"\", true),\n (_ctx.sportLabel === 'Mountain Biking (Electric)')\n ? (_openBlock(), _createBlock(_component_MountainBikingElectric, { key: 4 }))\n : _createCommentVNode(\"\", true),\n (_ctx.sportLabel === 'Rowing')\n ? (_openBlock(), _createBlock(_component_Rowing, { key: 5 }))\n : _createCommentVNode(\"\", true),\n (_ctx.sportLabel === 'Running')\n ? (_openBlock(), _createBlock(_component_Running, { key: 6 }))\n : _createCommentVNode(\"\", true),\n (_ctx.sportLabel === 'Skiing (Alpine)')\n ? (_openBlock(), _createBlock(_component_SkiingAlpine, { key: 7 }))\n : _createCommentVNode(\"\", true),\n (_ctx.sportLabel === 'Skiing (Cross Country)')\n ? (_openBlock(), _createBlock(_component_SkiingCrossCountry, { key: 8 }))\n : _createCommentVNode(\"\", true),\n (_ctx.sportLabel === 'Trail')\n ? (_openBlock(), _createBlock(_component_Trail, { key: 9 }))\n : _createCommentVNode(\"\", true),\n (_ctx.sportLabel === 'Walking')\n ? (_openBlock(), _createBlock(_component_Walking, { key: 10 }))\n : _createCommentVNode(\"\", true)\n ], 12, _hoisted_1))\n}","\n\n\n","import { render } from \"./CyclingSport.vue?vue&type=template&id=be8023a2\"\nimport script from \"./CyclingSport.vue?vue&type=script&lang=js\"\nexport * from \"./CyclingSport.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./CyclingTransport.vue?vue&type=template&id=97af5148\"\nimport script from \"./CyclingTransport.vue?vue&type=script&lang=js\"\nexport * from \"./CyclingTransport.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Hiking.vue?vue&type=template&id=40903dc4\"\nimport script from \"./Hiking.vue?vue&type=script&lang=js\"\nexport * from \"./Hiking.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./MountainBiking.vue?vue&type=template&id=5bdbc6e8\"\nimport script from \"./MountainBiking.vue?vue&type=script&lang=js\"\nexport * from \"./MountainBiking.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./MountainBikingElectric.vue?vue&type=template&id=21e72aec\"\nimport script from \"./MountainBikingElectric.vue?vue&type=script&lang=js\"\nexport * from \"./MountainBikingElectric.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Rowing.vue?vue&type=template&id=31ae2dd5\"\nimport script from \"./Rowing.vue?vue&type=script&lang=js\"\nexport * from \"./Rowing.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Running.vue?vue&type=template&id=4d47a4fe\"\nimport script from \"./Running.vue?vue&type=script&lang=js\"\nexport * from \"./Running.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./SkiingAlpine.vue?vue&type=template&id=3ebf3bca\"\nimport script from \"./SkiingAlpine.vue?vue&type=script&lang=js\"\nexport * from \"./SkiingAlpine.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./SkiingCrossCountry.vue?vue&type=template&id=1561bbe6\"\nimport script from \"./SkiingCrossCountry.vue?vue&type=script&lang=js\"\nexport * from \"./SkiingCrossCountry.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Trail.vue?vue&type=template&id=32a14156\"\nimport script from \"./Trail.vue?vue&type=script&lang=js\"\nexport * from \"./Trail.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n\n\n","import { render } from \"./Walking.vue?vue&type=template&id=2ed4f5f4\"\nimport script from \"./Walking.vue?vue&type=script&lang=js\"\nexport * from \"./Walking.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","\n import { defineComponent, inject } from 'vue'\n\n import CyclingSport from '@/components/Common/Images/SportImage/CyclingSport.vue'\n import CyclingTransport from '@/components/Common/Images/SportImage/CyclingTransport.vue'\n import Hiking from '@/components/Common/Images/SportImage/Hiking.vue'\n import MountainBiking from '@/components/Common/Images/SportImage/MountainBiking.vue'\n import MountainBikingElectric from '@/components/Common/Images/SportImage/MountainBikingElectric.vue'\n import Rowing from '@/components/Common/Images/SportImage/Rowing.vue'\n import Running from '@/components/Common/Images/SportImage/Running.vue'\n import SkiingAlpine from '@/components/Common/Images/SportImage/SkiingAlpine.vue'\n import SkiingCrossCountry from '@/components/Common/Images/SportImage/SkiingCrossCountry.vue'\n import Trail from '@/components/Common/Images/SportImage/Trail.vue'\n import Walking from '@/components/Common/Images/SportImage/Walking.vue'\n\n export default defineComponent({\n name: 'SportImage',\n components: {\n CyclingSport,\n CyclingTransport,\n Hiking,\n MountainBiking,\n MountainBikingElectric,\n Rowing,\n Running,\n SkiingAlpine,\n SkiingCrossCountry,\n Trail,\n Walking,\n },\n props: {\n sportLabel: {\n type: String,\n required: true,\n },\n title: {\n type: String,\n required: false,\n },\n },\n setup() {\n return { sportColors: inject('sportColors') }\n },\n })\n","import { render } from \"./index.vue?vue&type=template&id=720e3808&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-8bf75da8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"loader\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1))\n}","\n import { defineComponent } from 'vue'\n export default defineComponent({\n name: 'Loader',\n })\n","import { render } from \"./Loader.vue?vue&type=template&id=8bf75da8&scoped=true&ts=true\"\nimport script from \"./Loader.vue?vue&type=script&lang=ts\"\nexport * from \"./Loader.vue?vue&type=script&lang=ts\"\n\nimport \"./Loader.vue?vue&type=style&index=0&id=8bf75da8&scoped=true&lang=scss\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-8bf75da8\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-366182c4\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"modal\" }\nconst _hoisted_2 = { class: \"custom-modal\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"modal-message\"\n}\nconst _hoisted_4 = {\n key: 1,\n class: \"modal-message\"\n}\nconst _hoisted_5 = { class: \"modal-buttons\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_i18n_t = _resolveComponent(\"i18n-t\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.title), 1)\n ]),\n content: _withCtx(() => [\n (_ctx.strongMessage)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createVNode(_component_i18n_t, { keypath: _ctx.message }, {\n default: _withCtx(() => [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.strongMessage), 1)\n ]),\n _: 1\n }, 8, [\"keypath\"])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_4, _toDisplayString(_ctx.message), 1)),\n (_ctx.errorMessages)\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 2,\n message: _ctx.errorMessages\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_5, [\n (!_ctx.errorMessages)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"confirm\",\n onClick: _cache[0] || (_cache[0] = ($event: any) => (_ctx.emit('confirmAction')))\n }, _toDisplayString(_ctx.$t('buttons.YES')), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (_ctx.emit('cancelAction')))\n }, _toDisplayString(_ctx.$t(`buttons.${_ctx.errorMessages ? 'CANCEL' : 'NO'}`)), 1)\n ])\n ]),\n _: 1\n })\n ])\n ]))\n}","\n import { ComputedRef, computed, defineComponent, onUnmounted } from 'vue'\n\n import { ROOT_STORE } from '@/store/constants'\n import { useStore } from '@/use/useStore'\n\n export default defineComponent({\n name: 'Modal',\n props: {\n title: {\n type: String,\n required: true,\n },\n message: {\n type: String,\n required: true,\n },\n strongMessage: {\n type: String || null,\n default: null,\n },\n },\n emits: ['cancelAction', 'confirmAction'],\n setup(props, { emit }) {\n const store = useStore()\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\n return { errorMessages, emit }\n },\n })\n","import { render } from \"./Modal.vue?vue&type=template&id=366182c4&scoped=true&ts=true\"\nimport script from \"./Modal.vue?vue&type=script&lang=ts\"\nexport * from \"./Modal.vue?vue&type=script&lang=ts\"\n\nimport \"./Modal.vue?vue&type=style&index=0&id=366182c4&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-366182c4\"]])\n\nexport default __exports__","import AlertMessage from '@/components/Common/AlertMessage.vue'\nimport Card from '@/components/Common/Card.vue'\nimport CustomTextArea from '@/components/Common/CustomTextArea.vue'\nimport Dropdown from '@/components/Common/Dropdown.vue'\nimport ErrorMessage from '@/components/Common/ErrorMessage.vue'\nimport SportImage from '@/components/Common/Images/SportImage/index.vue'\nimport Loader from '@/components/Common/Loader.vue'\nimport Modal from '@/components/Common/Modal.vue'\n\nexport const customComponents = [\n AlertMessage,\n Card,\n CustomTextArea,\n Dropdown,\n ErrorMessage,\n Loader,\n Modal,\n SportImage,\n]\n","import { Directive, DirectiveBinding } from 'vue'\n\ninterface ClickOutsideHTMLElement extends HTMLElement {\n clickOutsideEvent?: (event: MouseEvent | TouchEvent) => void\n}\n\nexport const clickOutsideDirective: Directive = {\n mounted: (\n element: ClickOutsideHTMLElement,\n binding: DirectiveBinding\n ): void => {\n element.clickOutsideEvent = function (event) {\n if (!(element === event.target || element.contains(event.target))) {\n binding.value(event)\n }\n }\n document.body.addEventListener('click', element.clickOutsideEvent)\n document.body.addEventListener('touchstart', element.clickOutsideEvent)\n },\n unmounted: function (element: ClickOutsideHTMLElement): void {\n if (element.clickOutsideEvent) {\n document.body.removeEventListener('click', element.clickOutsideEvent)\n document.body.removeEventListener('touchstart', element.clickOutsideEvent)\n element.clickOutsideEvent = undefined\n }\n },\n}\n","import {\n Chart,\n BarElement,\n LineElement,\n PointElement,\n Legend,\n Title,\n Tooltip,\n Filler,\n BarController,\n CategoryScale,\n LineController,\n LinearScale,\n} from 'chart.js'\nimport ChartDataLabels from 'chartjs-plugin-datalabels'\nimport { createApp } from 'vue'\n\nimport './registerServiceWorker'\nimport App from './App.vue'\nimport i18n from './i18n'\nimport router from './router'\nimport store from './store'\n\nimport { customComponents } from '@/custom-components'\nimport { clickOutsideDirective } from '@/directives'\nimport { sportColors } from '@/utils/sports'\n\nChart.register(\n BarElement,\n LineElement,\n PointElement,\n Legend,\n Title,\n Tooltip,\n Filler,\n BarController,\n CategoryScale,\n LineController,\n LinearScale,\n ChartDataLabels\n)\n\nconst app = createApp(App)\n .provide('sportColors', sportColors)\n .use(i18n)\n .use(store)\n .use(router)\n .directive('click-outside', clickOutsideDirective)\n\ncustomComponents.forEach((component) => {\n app.component(component.name, component)\n})\n\napp.mount('#app')\n","import { AxiosError } from 'axios'\nimport { ActionContext } from 'vuex'\n\nimport { ROOT_STORE } from '@/store/constants'\nimport { IAuthUserState } from '@/store/modules/authUser/types'\nimport { IRootState } from '@/store/modules/root/types'\nimport { ISportsState } from '@/store/modules/sports/types'\nimport { IStatisticsState } from '@/store/modules/statistics/types'\nimport { IUsersState } from '@/store/modules/users/types'\nimport { IWorkoutsState } from '@/store/modules/workouts/types'\n\nexport const getApiUrl = (): string => {\n return process.env.NODE_ENV === 'production'\n ? '/api/'\n : `${process.env.VUE_APP_API_URL}/api/`\n}\n\nexport const handleError = (\n context:\n | ActionContext\n | ActionContext\n | ActionContext\n | ActionContext\n | ActionContext\n | ActionContext,\n error: AxiosError | null,\n msg = 'UNKNOWN'\n): void => {\n const errorMessages = !error\n ? msg\n : error.response\n ? error.response.status === 413\n ? 'file size is greater than the allowed size'\n : error.response.data.message\n ? error.response.data.message\n : msg\n : error.message\n ? error.message\n : msg\n context.commit(\n ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES,\n errorMessages.includes('\\n')\n ? errorMessages\n .split('\\n')\n .filter((m: string) => m !== '')\n .map((m: string) => `api.ERROR.${m}`)\n : `api.ERROR.${errorMessages}`\n )\n}\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./UserProfileTabs.vue?vue&type=style&index=0&id=c7276c08&lang=scss\"","export enum AuthUserActions {\n CHECK_AUTH_USER = 'CHECK_AUTH_USER',\n DELETE_ACCOUNT = 'DELETE_ACCOUNT',\n DELETE_PICTURE = 'DELETE_PICTURE',\n GET_USER_PROFILE = 'GET_USER_PROFILE',\n LOGIN_OR_REGISTER = 'LOGIN_OR_REGISTER',\n LOGOUT = 'LOGOUT',\n SEND_PASSWORD_RESET_REQUEST = 'SEND_PASSWORD_RESET_REQUEST',\n RESET_USER_PASSWORD = 'RESET_USER_PASSWORD',\n UPDATE_USER_PICTURE = 'UPDATE_USER_PICTURE',\n UPDATE_USER_PROFILE = 'UPDATE_USER_PROFILE',\n UPDATE_USER_PREFERENCES = 'UPDATE_USER_PREFERENCES',\n}\n\nexport enum AuthUserGetters {\n AUTH_TOKEN = 'AUTH_TOKEN',\n AUTH_USER_PROFILE = 'AUTH_USER_PROFILE',\n IS_ADMIN = 'IS_ADMIN',\n IS_AUTHENTICATED = 'IS_AUTHENTICATED',\n USER_LOADING = 'USER_LOADING',\n}\n\nexport enum AuthUserMutations {\n CLEAR_AUTH_USER_TOKEN = 'CLEAR_AUTH_USER_TOKEN',\n UPDATE_AUTH_TOKEN = 'UPDATE_AUTH_TOKEN',\n UPDATE_AUTH_USER_PROFILE = 'UPDATE_AUTH_USER_PROFILE',\n UPDATE_USER_LOADING = 'UPDATE_USER_LOADING',\n}\n","export enum RootActions {\n GET_APPLICATION_CONFIG = 'GET_APPLICATION_CONFIG',\n GET_APPLICATION_STATS = 'GET_APPLICATION_STATS',\n UPDATE_APPLICATION_CONFIG = 'UPDATE_APPLICATION_CONFIG',\n}\n\nexport enum RootGetters {\n APP_CONFIG = 'APP_CONFIG',\n APP_LOADING = 'APP_LOADING',\n APP_STATS = 'APP_STATS',\n ERROR_MESSAGES = 'ERROR_MESSAGES',\n LANGUAGE = 'LANGUAGE',\n LOCALE = 'LOCALE', // date-fns\n}\n\nexport enum RootMutations {\n EMPTY_ERROR_MESSAGES = 'EMPTY_ERROR_MESSAGES',\n SET_ERROR_MESSAGES = 'SET_ERROR_MESSAGES',\n UPDATE_APPLICATION_CONFIG = 'UPDATE_APPLICATION_CONFIG',\n UPDATE_APPLICATION_LOADING = 'UPDATE_APPLICATION_LOADING',\n UPDATE_APPLICATION_STATS = 'UPDATE_APPLICATION_STATS',\n UPDATE_LANG = 'UPDATE_LANG',\n}\n","export enum SportsActions {\n GET_SPORTS = 'GET_SPORTS',\n UPDATE_SPORTS = 'UPDATE_SPORTS',\n}\n\nexport enum SportsGetters {\n SPORTS = 'SPORTS',\n}\n\nexport enum SportsMutation {\n SET_SPORTS = 'SET_SPORTS',\n}\n","export enum StatisticsActions {\n GET_USER_STATS = 'GET_USER_STATS',\n}\n\nexport enum StatisticsGetters {\n USER_STATS = 'USER_STATS',\n}\n\nexport enum StatisticsMutations {\n EMPTY_USER_STATS = 'EMPTY_USER_STATS',\n UPDATE_USER_STATS = 'UPDATE_USER_STATS',\n}\n","export enum UsersActions {\n EMPTY_USER = 'EMPTY_USER',\n EMPTY_USERS = 'EMPTY_USERS',\n GET_USER = 'GET_USER',\n GET_USERS = 'GET_USERS',\n UPDATE_USER = 'UPDATE_USER',\n}\n\nexport enum UsersGetters {\n USER = 'USER',\n USERS = 'USERS',\n USERS_LOADING = 'USERS_LOADING',\n USERS_PAGINATION = 'USERS_PAGINATION',\n}\n\nexport enum UsersMutations {\n UPDATE_USER = 'UPDATE_USER',\n UPDATE_USER_IN_USERS = 'UPDATE_USER_IN_USERS',\n UPDATE_USERS = 'UPDATE_USERS',\n UPDATE_USERS_LOADING = 'UPDATE_USERS_LOADING',\n UPDATE_USERS_PAGINATION = 'UPDATE_USERS_PAGINATION',\n}\n","import {\n AuthUserActions,\n AuthUserGetters,\n AuthUserMutations,\n} from '@/store/modules/authUser/enums'\nimport {\n RootActions,\n RootGetters,\n RootMutations,\n} from '@/store/modules/root/enums'\nimport {\n SportsActions,\n SportsGetters,\n SportsMutation,\n} from '@/store/modules/sports/enums'\nimport {\n StatisticsActions,\n StatisticsGetters,\n StatisticsMutations,\n} from '@/store/modules/statistics/enums'\nimport {\n UsersActions,\n UsersGetters,\n UsersMutations,\n} from '@/store/modules/users/enums'\nimport {\n WorkoutsActions,\n WorkoutsGetters,\n WorkoutsMutations,\n} from '@/store/modules/workouts/enums'\n\nexport const ROOT_STORE = {\n ACTIONS: RootActions,\n GETTERS: RootGetters,\n MUTATIONS: RootMutations,\n}\n\nexport const SPORTS_STORE = {\n ACTIONS: SportsActions,\n GETTERS: SportsGetters,\n MUTATIONS: SportsMutation,\n}\n\nexport const STATS_STORE = {\n ACTIONS: StatisticsActions,\n GETTERS: StatisticsGetters,\n MUTATIONS: StatisticsMutations,\n}\n\nexport const AUTH_USER_STORE = {\n ACTIONS: AuthUserActions,\n GETTERS: AuthUserGetters,\n MUTATIONS: AuthUserMutations,\n}\n\nexport const USERS_STORE = {\n ACTIONS: UsersActions,\n GETTERS: UsersGetters,\n MUTATIONS: UsersMutations,\n}\n\nexport const WORKOUTS_STORE = {\n ACTIONS: WorkoutsActions,\n GETTERS: WorkoutsGetters,\n MUTATIONS: WorkoutsMutations,\n}\n","var map = {\n\t\"./en/en.ts\": \"c142\",\n\t\"./fr/fr.ts\": \"663e\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"e7b6\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./NoConfig.vue?vue&type=style&index=0&id=01d4a985&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./AlertMessage.vue?vue&type=style&index=0&id=f5e8066a&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Footer.vue?vue&type=style&index=0&id=36297652&scoped=true&lang=scss\""],"sourceRoot":""} \ No newline at end of file diff --git a/fittrackee/dist/static/js/workouts.52ba33b8.js b/fittrackee/dist/static/js/workouts.52ba33b8.js new file mode 100644 index 00000000..f111669d --- /dev/null +++ b/fittrackee/dist/static/js/workouts.52ba33b8.js @@ -0,0 +1,2 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["workouts"],{"0385":function(e,t,o){"use strict";o.r(t);var n=o("7a23"),r={key:0,id:"workouts",class:"view"},a={class:"container workouts-container"},c={class:"display-filters"},l={class:"list-container"};function i(e,t,o,i,u,s){var d=Object(n["resolveComponent"])("WorkoutsFilters"),p=Object(n["resolveComponent"])("WorkoutsList");return e.authUser.username?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",r,[Object(n["createElementVNode"])("div",a,[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["filters-container",{hidden:e.hiddenFilters}])},[Object(n["createVNode"])(d,{sports:e.translatedSports,authUser:e.authUser,onFilter:e.toggleFilters},null,8,["sports","authUser","onFilter"])],2),Object(n["createElementVNode"])("div",c,[Object(n["createElementVNode"])("div",{onClick:t[0]||(t[0]=function(){return e.toggleFilters&&e.toggleFilters.apply(e,arguments)})},[Object(n["createElementVNode"])("i",{class:Object(n["normalizeClass"])("fa fa-caret-".concat(e.hiddenFilters?"down":"up")),"aria-hidden":"true"},null,2),Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.$t("workouts.".concat(e.hiddenFilters?"DISPLAY":"HIDE","_FILTERS"))),1)])]),Object(n["createElementVNode"])("div",l,[Object(n["createVNode"])(p,{user:e.authUser,sports:e.translatedSports},null,8,["user","sports"])])])])):Object(n["createCommentVNode"])("",!0)}var u=o("47e2"),s=(o("4de4"),o("d3b7"),o("caad"),o("2532"),function(e){return Object(n["pushScopeId"])("data-v-cbc43e30"),e=e(),Object(n["popScopeId"])(),e}),d={class:"workouts-filters"},p={class:"box"},b={class:"form"},m={class:"form-items-group"},O={class:"form-item"},j=["value"],f={class:"form-item"},k=["value"],g={class:"form-items-group"},y={class:"form-item"},w=["value"],h=s((function(){return Object(n["createElementVNode"])("option",{value:""},null,-1)})),v=["value"],E={class:"form-items-group"},N={class:"form-item"},S={class:"form-inputs-group"},V=["value"],T=["value"],D={class:"form-items-group"},C={class:"form-item"},_={class:"form-inputs-group"},x=["value"],B=["value"],A={class:"form-items-group"},R={class:"form-item"},I={class:"form-inputs-group"},L=["value"],U=["value"],M={class:"form-items-group"},W={class:"form-item"},$={class:"form-inputs-group"},F=["value"],P=["value"],G={class:"form-button"};function q(e,t,o,r,a,c){return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",d,[Object(n["createElementVNode"])("div",p,[Object(n["createElementVNode"])("div",b,[Object(n["createElementVNode"])("div",m,[Object(n["createElementVNode"])("div",O,[Object(n["createElementVNode"])("label",null,Object(n["toDisplayString"])(e.$t("workouts.FROM"))+": ",1),Object(n["createElementVNode"])("input",{name:"from",type:"date",value:e.$route.query.from,onChange:t[0]||(t[0]=function(){return e.handleFilterChange&&e.handleFilterChange.apply(e,arguments)})},null,40,j)]),Object(n["createElementVNode"])("div",f,[Object(n["createElementVNode"])("label",null,Object(n["toDisplayString"])(e.$t("workouts.TO"))+": ",1),Object(n["createElementVNode"])("input",{name:"to",type:"date",value:e.$route.query.to,onChange:t[1]||(t[1]=function(){return e.handleFilterChange&&e.handleFilterChange.apply(e,arguments)})},null,40,k)])]),Object(n["createElementVNode"])("div",g,[Object(n["createElementVNode"])("div",y,[Object(n["createElementVNode"])("label",null,Object(n["toDisplayString"])(e.$t("workouts.SPORT",1))+":",1),Object(n["createElementVNode"])("select",{name:"sport_id",value:e.$route.query.sport_id,onChange:t[2]||(t[2]=function(){return e.handleFilterChange&&e.handleFilterChange.apply(e,arguments)})},[h,(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.translatedSports.filter((function(t){return e.authUser.sports_list.includes(t.id)})),(function(e){return Object(n["openBlock"])(),Object(n["createElementBlock"])("option",{value:e.id,key:e.id},Object(n["toDisplayString"])(e.label),9,v)})),128))],40,w)])]),Object(n["createElementVNode"])("div",E,[Object(n["createElementVNode"])("div",N,[Object(n["createElementVNode"])("label",null,Object(n["toDisplayString"])(e.$t("workouts.DISTANCE"))+" (km): ",1),Object(n["createElementVNode"])("div",S,[Object(n["createElementVNode"])("input",{name:"distance_from",type:"number",min:"0",step:"1",value:e.$route.query.distance_from,onChange:t[3]||(t[3]=function(){return e.handleFilterChange&&e.handleFilterChange.apply(e,arguments)})},null,40,V),Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.$t("workouts.TO")),1),Object(n["createElementVNode"])("input",{name:"distance_to",type:"number",min:"0",step:"1",value:e.$route.query.distance_to,onChange:t[4]||(t[4]=function(){return e.handleFilterChange&&e.handleFilterChange.apply(e,arguments)})},null,40,T)])])]),Object(n["createElementVNode"])("div",D,[Object(n["createElementVNode"])("div",C,[Object(n["createElementVNode"])("label",null,Object(n["toDisplayString"])(e.$t("workouts.DURATION"))+" (km): ",1),Object(n["createElementVNode"])("div",_,[Object(n["createElementVNode"])("input",{name:"duration_from",value:e.$route.query.duration_from,onChange:t[5]||(t[5]=function(){return e.handleFilterChange&&e.handleFilterChange.apply(e,arguments)}),pattern:"^([0-9]*[0-9]):([0-5][0-9])$",placeholder:"hh:mm",type:"text"},null,40,x),Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.$t("workouts.TO")),1),Object(n["createElementVNode"])("input",{name:"duration_to",value:e.$route.query.duration_to,onChange:t[6]||(t[6]=function(){return e.handleFilterChange&&e.handleFilterChange.apply(e,arguments)}),pattern:"^([0-9]*[0-9]):([0-5][0-9])$",placeholder:"hh:mm",type:"text"},null,40,B)])])]),Object(n["createElementVNode"])("div",A,[Object(n["createElementVNode"])("div",R,[Object(n["createElementVNode"])("label",null,Object(n["toDisplayString"])(e.$t("workouts.AVE_SPEED"))+" (km): ",1),Object(n["createElementVNode"])("div",I,[Object(n["createElementVNode"])("input",{min:"0",name:"ave_speed_from",value:e.$route.query.ave_speed_from,onChange:t[7]||(t[7]=function(){return e.handleFilterChange&&e.handleFilterChange.apply(e,arguments)}),step:"1",type:"number"},null,40,L),Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.$t("workouts.TO")),1),Object(n["createElementVNode"])("input",{min:"0",name:"ave_speed_to",value:e.$route.query.ave_speed_to,onChange:t[8]||(t[8]=function(){return e.handleFilterChange&&e.handleFilterChange.apply(e,arguments)}),step:"1",type:"number"},null,40,U)])])]),Object(n["createElementVNode"])("div",M,[Object(n["createElementVNode"])("div",W,[Object(n["createElementVNode"])("label",null,Object(n["toDisplayString"])(e.$t("workouts.MAX_SPEED"))+" (km): ",1),Object(n["createElementVNode"])("div",$,[Object(n["createElementVNode"])("input",{min:"0",name:"max_speed_from",value:e.$route.query.max_speed_from,onChange:t[9]||(t[9]=function(){return e.handleFilterChange&&e.handleFilterChange.apply(e,arguments)}),step:"1",type:"number"},null,40,F),Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.$t("workouts.TO")),1),Object(n["createElementVNode"])("input",{min:"0",name:"max_speed_to",value:e.$route.query.max_speed_to,onChange:t[10]||(t[10]=function(){return e.handleFilterChange&&e.handleFilterChange.apply(e,arguments)}),step:"1",type:"number"},null,40,P)])])])]),Object(n["createElementVNode"])("div",G,[Object(n["createElementVNode"])("button",{class:"confirm",onClick:t[11]||(t[11]=function(){return e.onFilter&&e.onFilter.apply(e,arguments)})},Object(n["toDisplayString"])(e.$t("buttons.FILTER")),1),Object(n["createElementVNode"])("button",{class:"confirm",onClick:t[12]||(t[12]=function(){return e.onClearFilter&&e.onClearFilter.apply(e,arguments)})},Object(n["toDisplayString"])(e.$t("buttons.CLEAR_FILTER")),1)])])])}o("b0c0");var z=o("6c02"),H=o("1119"),K=Object(n["defineComponent"])({name:"WorkoutsFilters",props:{authUser:{type:Object,required:!0},sports:{type:Object,required:!0}},emits:["filter"],setup:function(e,t){var o=t.emit,r=Object(u["b"])(),a=r.t,c=Object(z["c"])(),l=Object(z["d"])(),i=Object(n["computed"])((function(){return Object(H["d"])(e.sports,a)})),s=Object.assign({},c.query);function d(e){""===e.target.value?delete s[e.target.name]:s[e.target.name]=e.target.value}function p(){o("filter"),"page"in s&&(s["page"]="1"),l.push({path:"/workouts",query:s})}function b(){o("filter"),l.push({path:"/workouts",query:{}})}return Object(n["watch"])((function(){return c.query}),(function(e){s=Object.assign({},e)})),{translatedSports:i,onClearFilter:b,onFilter:p,handleFilterChange:d}}}),Z=(o("3ab5"),o("6b0d")),J=o.n(Z);const X=J()(K,[["render",q],["__scopeId","data-v-cbc43e30"]]);var Y=X,Q=(o("b680"),o("a9e3"),function(e){return Object(n["pushScopeId"])("data-v-0144da86"),e=e(),Object(n["popScopeId"])(),e}),ee={class:"workouts-list"},te={class:"total"},oe={class:"total-label"},ne={key:0},re={key:0,class:"workouts-table responsive-table"},ae=Q((function(){return Object(n["createElementVNode"])("th",{class:"sport-col"},null,-1)})),ce={class:"sport-col"},le={class:"cell-heading"},ie=["onMouseover"],ue={class:"cell-heading"},se={key:0,class:"fa fa-map-o","aria-hidden":"true"},de={class:"cell-heading"},pe={class:"text-right"},be={class:"cell-heading"},me={class:"text-right"},Oe={class:"cell-heading"},je={class:"text-right"},fe={class:"cell-heading"},ke={class:"text-right"},ge={class:"cell-heading"},ye={class:"text-right"},we={class:"cell-heading"},he={key:0},ve={class:"text-right"},Ee={class:"cell-heading"},Ne={key:0},Se=Q((function(){return Object(n["createElementVNode"])("div",{id:"bottom"},null,-1)}));function Ve(e,t,o,r,a,c){var l=Object(n["resolveComponent"])("FilterSelects"),i=Object(n["resolveComponent"])("Pagination"),u=Object(n["resolveComponent"])("SportImage"),s=Object(n["resolveComponent"])("router-link"),d=Object(n["resolveComponent"])("StaticMap"),p=Object(n["resolveComponent"])("NoWorkouts");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ee,[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["box",{"empty-table":0===e.workouts.length}])},[Object(n["createElementVNode"])("div",te,[Object(n["createElementVNode"])("span",oe,Object(n["toDisplayString"])(e.$t("common.TOTAL").toLowerCase())+": ",1),null!==e.pagination.total?(Object(n["openBlock"])(),Object(n["createElementBlock"])("span",ne,Object(n["toDisplayString"])(e.pagination.total)+" "+Object(n["toDisplayString"])(e.$t("workouts.WORKOUT",e.pagination.total)),1)):Object(n["createCommentVNode"])("",!0)]),Object(n["createVNode"])(l,{sort:e.sortList,order_by:e.orderByList,query:e.query,message:"workouts",onUpdateSelect:e.reloadWorkouts},null,8,["sort","order_by","query","onUpdateSelect"]),e.workouts.length>0?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",re,[Object(n["createVNode"])(i,{class:"top-pagination",pagination:e.pagination,path:"/workouts",query:e.query},null,8,["pagination","query"]),Object(n["createElementVNode"])("table",null,[Object(n["createElementVNode"])("thead",null,[Object(n["createElementVNode"])("tr",null,[ae,Object(n["createElementVNode"])("th",null,Object(n["toDisplayString"])(e.capitalize(e.$t("workouts.WORKOUT",1))),1),Object(n["createElementVNode"])("th",null,Object(n["toDisplayString"])(e.capitalize(e.$t("workouts.DATE"))),1),Object(n["createElementVNode"])("th",null,Object(n["toDisplayString"])(e.capitalize(e.$t("workouts.DISTANCE"))),1),Object(n["createElementVNode"])("th",null,Object(n["toDisplayString"])(e.capitalize(e.$t("workouts.DURATION"))),1),Object(n["createElementVNode"])("th",null,Object(n["toDisplayString"])(e.capitalize(e.$t("workouts.AVE_SPEED"))),1),Object(n["createElementVNode"])("th",null,Object(n["toDisplayString"])(e.capitalize(e.$t("workouts.MAX_SPEED"))),1),Object(n["createElementVNode"])("th",null,Object(n["toDisplayString"])(e.capitalize(e.$t("workouts.ASCENT"))),1),Object(n["createElementVNode"])("th",null,Object(n["toDisplayString"])(e.capitalize(e.$t("workouts.DESCENT"))),1)])]),Object(n["createElementVNode"])("tbody",null,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.workouts,(function(o){return Object(n["openBlock"])(),Object(n["createElementBlock"])("tr",{key:o.id},[Object(n["createElementVNode"])("td",ce,[Object(n["createElementVNode"])("span",le,Object(n["toDisplayString"])(e.$t("workouts.SPORT",1)),1),Object(n["createVNode"])(u,{title:e.sports.filter((function(e){return e.id===o.sport_id}))[0].translatedLabel,"sport-label":e.sports.filter((function(e){return e.id===o.sport_id}))[0].label},null,8,["title","sport-label"])]),Object(n["createElementVNode"])("td",{class:"workout-title",onMouseover:function(t){return e.onHover(o.id)},onMouseleave:t[0]||(t[0]=function(t){return e.onHover(null)})},[Object(n["createElementVNode"])("span",ue,Object(n["toDisplayString"])(e.capitalize(e.$t("workouts.WORKOUT",1))),1),Object(n["createVNode"])(s,{class:"nav-item",to:{name:"Workout",params:{workoutId:o.id}}},{default:Object(n["withCtx"])((function(){return[o.with_gpx?(Object(n["openBlock"])(),Object(n["createElementBlock"])("i",se)):Object(n["createCommentVNode"])("",!0),Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(o.title),1)]})),_:2},1032,["to"]),o.with_gpx&&e.hoverWorkoutId===o.id?(Object(n["openBlock"])(),Object(n["createBlock"])(d,{key:0,workout:o,"display-hover":!0},null,8,["workout"])):Object(n["createCommentVNode"])("",!0)],40,ie),Object(n["createElementVNode"])("td",null,[Object(n["createElementVNode"])("span",de,Object(n["toDisplayString"])(e.$t("workouts.DATE")),1),Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(e.format(e.getDateWithTZ(o.workout_date,e.user.timezone),"dd/MM/yyyy HH:mm")),1)]),Object(n["createElementVNode"])("td",pe,[Object(n["createElementVNode"])("span",be,Object(n["toDisplayString"])(e.$t("workouts.DISTANCE")),1),Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(Number(o.distance).toFixed(2))+" km ",1)]),Object(n["createElementVNode"])("td",me,[Object(n["createElementVNode"])("span",Oe,Object(n["toDisplayString"])(e.$t("workouts.DURATION")),1),Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(o.moving),1)]),Object(n["createElementVNode"])("td",je,[Object(n["createElementVNode"])("span",fe,Object(n["toDisplayString"])(e.$t("workouts.AVE_SPEED")),1),Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(o.ave_speed)+" km/h ",1)]),Object(n["createElementVNode"])("td",ke,[Object(n["createElementVNode"])("span",ge,Object(n["toDisplayString"])(e.$t("workouts.MAX_SPEED")),1),Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(o.max_speed)+" km/h ",1)]),Object(n["createElementVNode"])("td",ye,[Object(n["createElementVNode"])("span",we,Object(n["toDisplayString"])(e.$t("workouts.ASCENT")),1),o.with_gpx?(Object(n["openBlock"])(),Object(n["createElementBlock"])("span",he,Object(n["toDisplayString"])(o.ascent)+" m",1)):Object(n["createCommentVNode"])("",!0)]),Object(n["createElementVNode"])("td",ve,[Object(n["createElementVNode"])("span",Ee,Object(n["toDisplayString"])(e.$t("workouts.DESCENT")),1),o.with_gpx?(Object(n["openBlock"])(),Object(n["createElementBlock"])("span",Ne,Object(n["toDisplayString"])(o.descent)+" m",1)):Object(n["createCommentVNode"])("",!0)])])})),128))])]),Object(n["createVNode"])(i,{pagination:e.pagination,path:"/workouts",query:e.query},null,8,["pagination","query"])])):Object(n["createCommentVNode"])("",!0)],2),0===e.workouts.length?(Object(n["openBlock"])(),Object(n["createBlock"])(p,{key:0})):Object(n["createCommentVNode"])("",!0),Se])}var Te=o("1da1"),De=(o("96cf"),o("d81d"),o("b64b"),o("b166")),Ce=o("9176"),_e=o("6d7d"),xe=o("68c6"),Be=o("1724"),Ae=o("dad5"),Re=o("2906"),Ie=o("97e5"),Le=o("5e65"),Ue=o("9230"),Me=Object(n["defineComponent"])({name:"WorkoutsList",components:{FilterSelects:Ce["a"],NoWorkouts:Be["a"],Pagination:_e["a"],StaticMap:xe["a"]},props:{user:{type:Object,required:!0},sports:{type:Object}},setup:function(){var e=Object(Re["a"])(),t=Object(z["c"])(),o=Object(z["d"])(),r=["ave_speed","distance","duration","workout_date"],a=Object(n["computed"])((function(){return e.getters[Ae["f"].GETTERS.USER_WORKOUTS]})),c=Object(n["computed"])((function(){return e.getters[Ae["f"].GETTERS.WORKOUTS_PAGINATION]})),l=d(t.query),i=Object(n["ref"])(null);function u(t){e.dispatch(Ae["f"].ACTIONS.GET_USER_WORKOUTS,t)}function s(e,n){var r=Object.assign({},t.query);r[e]=n,"per_page"===e&&(r["page"]="1"),l=d(r),o.push({path:"/workouts",query:l})}function d(e){return l=Object(Ie["a"])(e,r,Ue["a"].order_by,{defaultSort:Ue["a"].order}),Object.keys(e).filter((function(e){return Ie["d"].includes(e)})).map((function(t){"string"===typeof e[t]&&(l[t]=e[t])})),l}function p(e){i.value=e}return Object(n["onBeforeMount"])((function(){u(l)})),Object(n["watch"])((function(){return t.query}),function(){var e=Object(Te["a"])(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:l=d(t),u(l);case 2:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),{query:l,hoverWorkoutId:i,orderByList:r,pagination:c,sortList:Ie["c"],workouts:a,capitalize:n["capitalize"],format:De["a"],getDateWithTZ:Le["c"],onHover:p,reloadWorkouts:s}}});o("3424");const We=J()(Me,[["render",Ve],["__scopeId","data-v-0144da86"]]);var $e=We,Fe=Object(n["defineComponent"])({name:"WorkoutsView",components:{WorkoutsFilters:Y,WorkoutsList:$e},setup:function(){var e=Object(u["b"])(),t=e.t,o=Object(Re["a"])(),r=Object(n["computed"])((function(){return o.getters[Ae["a"].GETTERS.AUTH_USER_PROFILE]})),a=Object(n["computed"])((function(){return o.getters[Ae["c"].GETTERS.SPORTS]})),c=Object(n["computed"])((function(){return Object(H["d"])(a.value,t)})),l=Object(n["ref"])(!0);function i(){l.value=!l.value}return{authUser:r,hiddenFilters:l,translatedSports:c,toggleFilters:i}}});o("3ad7");const Pe=J()(Fe,[["render",i],["__scopeId","data-v-22a8a7cd"]]);t["default"]=Pe},"172f":function(e,t,o){},2794:function(e,t,o){"use strict";o("3854")},"2de4":function(e,t,o){},"304a":function(e,t,o){"use strict";o.r(t);var n=o("7a23"),r=function(e){return Object(n["pushScopeId"])("data-v-05bdbd04"),e=e(),Object(n["popScopeId"])(),e},a={id:"workout",class:"view"},c={class:"container"},l={key:0,class:"workout-container"},i={key:0},u=r((function(){return Object(n["createElementVNode"])("div",{id:"bottom"},null,-1)})),s={key:1};function d(e,t,o,r,d,p){var b=Object(n["resolveComponent"])("WorkoutDetail"),m=Object(n["resolveComponent"])("WorkoutChart"),O=Object(n["resolveComponent"])("WorkoutSegments"),j=Object(n["resolveComponent"])("WorkoutNotes"),f=Object(n["resolveComponent"])("NotFound");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",a,[Object(n["createElementVNode"])("div",c,[e.sports.length>0?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",l,[e.workoutData.workout.id?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",i,[Object(n["createVNode"])(b,{workoutData:e.workoutData,sports:e.sports,authUser:e.authUser,markerCoordinates:e.markerCoordinates,displaySegment:e.displaySegment},null,8,["workoutData","sports","authUser","markerCoordinates","displaySegment"]),e.workoutData.workout.with_gpx&&e.workoutData.chartData.length>0?(Object(n["openBlock"])(),Object(n["createBlock"])(m,{key:0,workoutData:e.workoutData,authUser:e.authUser,displaySegment:e.displaySegment,onGetCoordinates:e.updateCoordinates},null,8,["workoutData","authUser","displaySegment","onGetCoordinates"])):Object(n["createCommentVNode"])("",!0),!e.displaySegment&&e.workoutData.workout.segments.length>1?(Object(n["openBlock"])(),Object(n["createBlock"])(O,{key:1,segments:e.workoutData.workout.segments},null,8,["segments"])):Object(n["createCommentVNode"])("",!0),e.displaySegment?Object(n["createCommentVNode"])("",!0):(Object(n["openBlock"])(),Object(n["createBlock"])(j,{key:2,notes:e.workoutData.workout.notes},null,8,["notes"])),u])):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",s,[e.workoutData.loading?Object(n["createCommentVNode"])("",!0):(Object(n["openBlock"])(),Object(n["createBlock"])(f,{key:0,target:"WORKOUT"}))]))])):Object(n["createCommentVNode"])("",!0)])])}var p=o("1da1"),b=(o("96cf"),o("6c02")),m=o("f7f9"),O={id:"workout-chart"},j={class:"chart-radio"},f=["checked"],k=["checked"],g={class:"no-data-cleaning"};function y(e,t,o,r,a,c){var l=Object(n["resolveComponent"])("LineChart"),i=Object(n["resolveComponent"])("Card");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",O,[Object(n["createVNode"])(i,null,{title:Object(n["withCtx"])((function(){return[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e.$t("workouts.ANALYSIS")),1)]})),content:Object(n["withCtx"])((function(){return[Object(n["createElementVNode"])("div",j,[Object(n["createElementVNode"])("label",null,[Object(n["createElementVNode"])("input",{type:"radio",name:"distance",checked:e.displayDistance,onClick:t[0]||(t[0]=function(){return e.updateDisplayDistance&&e.updateDisplayDistance.apply(e,arguments)})},null,8,f),Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(e.$t("workouts.DISTANCE")),1)]),Object(n["createElementVNode"])("label",null,[Object(n["createElementVNode"])("input",{type:"radio",name:"duration",checked:!e.displayDistance,onClick:t[1]||(t[1]=function(){return e.updateDisplayDistance&&e.updateDisplayDistance.apply(e,arguments)})},null,8,k),Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(e.$t("workouts.DURATION")),1)])]),Object(n["createVNode"])(l,Object(n["mergeProps"])(e.lineChartProps,{class:"line-chart",onMouseleave:e.emitEmptyCoordinates}),null,16,["onMouseleave"]),Object(n["createElementVNode"])("div",g,Object(n["toDisplayString"])(e.$t("workouts.NO_DATA_CLEANING")),1)]})),_:1})])}var w=o("ade3"),h=(o("e9c4"),o("b680"),o("a9e3"),o("99af"),o("ac1f"),o("5319"),o("b48c")),v=o("47e2"),E=o("9230"),N=Object(n["defineComponent"])({name:"WorkoutChart",components:{LineChart:h["LineChart"]},props:{authUser:{type:Object,required:!0},workoutData:{type:Object,required:!0}},emits:["getCoordinates"],setup:function(e,t){var o=t.emit,r=Object(v["b"])(),a=r.t,c=Object(n["ref"])(!0),l=Object(n["computed"])((function(){return Object(E["b"])(e.workoutData.chartData,a)})),i=Object(n["computed"])((function(){return{labels:c.value?l.value.distance_labels:l.value.duration_labels,datasets:JSON.parse(JSON.stringify([l.value.datasets.speed,l.value.datasets.elevation]))}})),u=Object(n["computed"])((function(){return l.value.coordinates})),s=Object(n["computed"])((function(){var e;return{responsive:!0,maintainAspectRatio:!0,animation:!1,layout:{padding:{top:22}},scales:(e={},Object(w["a"])(e,c.value?"xDistance":"xDuration",{grid:{drawOnChartArea:!1},ticks:{count:10,callback:function(e){return c.value?Number(e).toFixed(2):p(e)}},type:"linear",bounds:"data",title:{display:!0,text:c.value?a("workouts.DISTANCE")+" (km)":a("workouts.DURATION")}}),Object(w["a"])(e,"ySpeed",{grid:{drawOnChartArea:!1},position:"left",title:{display:!0,text:a("workouts.SPEED")+" (km/h)"}}),Object(w["a"])(e,"yElevation",{beginAtZero:!0,grid:{drawOnChartArea:!1},position:"right",title:{display:!0,text:a("workouts.ELEVATION")+" (m)"}}),e),elements:{point:{pointStyle:"circle",pointRadius:0}},plugins:{datalabels:{display:!1},tooltip:{interaction:{intersect:!1,mode:"index"},callbacks:{label:function(e){var t=" ".concat(e.dataset.label,": ").concat(e.formattedValue);return"yElevation"===e.dataset.yAxisID?t+" m":t+" km/h"},title:function(e){return e.length>0&&b(u.value[e[0].dataIndex]),0===e.length?"":c.value?"".concat(a("workouts.DISTANCE"),": ").concat(e[0].label," km"):"".concat(a("workouts.DURATION"),": ").concat(p(e[0].label.replace(",","")))}}}}}}));function d(){c.value=!c.value}function p(e){return new Date(1e3*+e).toISOString().substr(11,8)}function b(e){o("getCoordinates",e)}function m(){b({latitude:null,longitude:null})}var O=Object(h["useLineChart"])({chartData:i,options:s}),j=O.lineChartProps;return{displayDistance:c,lineChartProps:j,emitEmptyCoordinates:m,updateDisplayDistance:d}}}),S=(o("5687"),o("6b0d")),V=o.n(S);const T=V()(N,[["render",y],["__scopeId","data-v-2230775e"]]);var D=T,C={class:"workout-detail"};function _(e,t,o,r,a,c){var l=Object(n["resolveComponent"])("Modal"),i=Object(n["resolveComponent"])("WorkoutCardTitle"),u=Object(n["resolveComponent"])("WorkoutMap"),s=Object(n["resolveComponent"])("WorkoutData"),d=Object(n["resolveComponent"])("Card");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",C,[e.displayModal?(Object(n["openBlock"])(),Object(n["createBlock"])(l,{key:0,title:e.$t("common.CONFIRMATION"),message:e.$t("workouts.WORKOUT_DELETION_CONFIRMATION"),onConfirmAction:t[0]||(t[0]=function(t){return e.deleteWorkout(e.workoutObject.workoutId)}),onCancelAction:t[1]||(t[1]=function(t){return e.updateDisplayModal(!1)})},null,8,["title","message"])):Object(n["createCommentVNode"])("",!0),Object(n["createVNode"])(d,null,{title:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(i,{sport:e.sport,workoutObject:e.workoutObject,onDisplayModal:t[2]||(t[2]=function(t){return e.updateDisplayModal(!0)})},null,8,["sport","workoutObject"])]})),content:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(u,{workoutData:e.workoutData,markerCoordinates:e.markerCoordinates},null,8,["workoutData","markerCoordinates"]),Object(n["createVNode"])(s,{workoutObject:e.workoutObject},null,8,["workoutObject"])]})),_:1})])}o("7db0"),o("d3b7");var x=function(e){return Object(n["pushScopeId"])("data-v-9cab340c"),e=e(),Object(n["popScopeId"])(),e},B={id:"workout-card-title"},A=["title"],R=x((function(){return Object(n["createElementVNode"])("i",{class:"fa fa-chevron-left","aria-hidden":"true"},null,-1)})),I=[R],L={class:"workout-card-title"},U={class:"workout-title-date"},M={key:0,class:"workout-title"},W={key:1,class:"workout-title"},$={class:"workout-segment"},F=Object(n["createTextVNode"])(" — "),P=x((function(){return Object(n["createElementVNode"])("i",{class:"fa fa-map-marker","aria-hidden":"true"},null,-1)})),G={class:"workout-date"},q={class:"workout-link"},z=["title"],H=x((function(){return Object(n["createElementVNode"])("i",{class:"fa fa-chevron-right","aria-hidden":"true"},null,-1)})),K=[H];function Z(e,t,o,r,a,c){var l=Object(n["resolveComponent"])("SportImage"),i=Object(n["resolveComponent"])("router-link");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",B,[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["workout-previous workout-arrow",{inactive:!e.workoutObject.previousUrl}]),title:e.workoutObject.previousUrl?e.$t("workouts.PREVIOUS_".concat(e.workoutObject.type)):e.$t("workouts.NO_PREVIOUS_".concat(e.workoutObject.type)),onClick:t[0]||(t[0]=function(t){return e.workoutObject.previousUrl?e.$router.push(e.workoutObject.previousUrl):null})},I,10,A),Object(n["createElementVNode"])("div",L,[Object(n["createVNode"])(l,{"sport-label":e.sport.label},null,8,["sport-label"]),Object(n["createElementVNode"])("div",U,["WORKOUT"===e.workoutObject.type?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",M,[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e.workoutObject.title)+" ",1),Object(n["createElementVNode"])("i",{class:"fa fa-edit","aria-hidden":"true",onClick:t[1]||(t[1]=function(t){return e.$router.push({name:"EditWorkout",params:{workoutId:e.workoutObject.workoutId}})})}),Object(n["createElementVNode"])("i",{class:"fa fa-trash","aria-hidden":"true",onClick:t[2]||(t[2]=function(t){return e.emit("displayModal",!0)})})])):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",W,[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e.workoutObject.title)+" ",1),Object(n["createElementVNode"])("span",$,[F,P,Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(e.$t("workouts.SEGMENT"))+" "+Object(n["toDisplayString"])(e.workoutObject.segmentId+1),1)])])),Object(n["createElementVNode"])("div",G,[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e.workoutObject.workoutDate)+" - "+Object(n["toDisplayString"])(e.workoutObject.workoutTime)+" ",1),Object(n["createElementVNode"])("span",q,["SEGMENT"===e.workoutObject.type?(Object(n["openBlock"])(),Object(n["createBlock"])(i,{key:0,to:{name:"Workout",params:{workoutId:e.workoutObject.workoutId}}},{default:Object(n["withCtx"])((function(){return[Object(n["createTextVNode"])(" > "+Object(n["toDisplayString"])(e.$t("workouts.BACK_TO_WORKOUT")),1)]})),_:1},8,["to"])):Object(n["createCommentVNode"])("",!0)])])])]),Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["workout-next workout-arrow",{inactive:!e.workoutObject.nextUrl}]),title:e.workoutObject.nextUrl?e.$t("workouts.NEXT_".concat(e.workoutObject.type)):e.$t("workouts.NO_NEXT_".concat(e.workoutObject.type)),onClick:t[3]||(t[3]=function(t){return e.workoutObject.nextUrl?e.$router.push(e.workoutObject.nextUrl):null})},K,10,z)])}var J=Object(n["defineComponent"])({name:"WorkoutCardTitle",props:{sport:{type:Object,required:!0},workoutObject:{type:Object,required:!0}},emits:["displayModal"],setup:function(e,t){var o=t.emit;return{emit:o}}});o("5910");const X=V()(J,[["render",Z],["__scopeId","data-v-9cab340c"]]);var Y=X,Q=function(e){return Object(n["pushScopeId"])("data-v-aa863bde"),e=e(),Object(n["popScopeId"])(),e},ee={id:"workout-info"},te={class:"workout-data"},oe=Q((function(){return Object(n["createElementVNode"])("i",{class:"fa fa-clock-o","aria-hidden":"true"},null,-1)})),ne={key:0},re={class:"workout-data"},ae=Q((function(){return Object(n["createElementVNode"])("i",{class:"fa fa-road","aria-hidden":"true"},null,-1)})),ce={class:"workout-data"},le=Q((function(){return Object(n["createElementVNode"])("i",{class:"fa fa-tachometer","aria-hidden":"true"},null,-1)})),ie=Q((function(){return Object(n["createElementVNode"])("br",null,null,-1)})),ue={key:0,class:"workout-data"},se=["alt"],de=Q((function(){return Object(n["createElementVNode"])("br",null,null,-1)})),pe={key:1,class:"workout-data"},be=Q((function(){return Object(n["createElementVNode"])("i",{class:"fa fa-location-arrow","aria-hidden":"true"},null,-1)})),me=Q((function(){return Object(n["createElementVNode"])("br",null,null,-1)}));function Oe(e,t,o,r,a,c){var l=Object(n["resolveComponent"])("WorkoutRecord"),i=Object(n["resolveComponent"])("WorkoutWeather");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ee,[Object(n["createElementVNode"])("div",te,[oe,Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(e.$t("workouts.DURATION"))+": ",1),Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.workoutObject.moving),1),Object(n["createVNode"])(l,{workoutObject:e.workoutObject,record_type:"LD"},null,8,["workoutObject"]),e.withPause?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ne,[Object(n["createTextVNode"])(" ("+Object(n["toDisplayString"])(e.$t("workouts.PAUSES"))+": ",1),Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.workoutObject.pauses),1),Object(n["createTextVNode"])(" - "+Object(n["toDisplayString"])(e.$t("workouts.TOTAL_DURATION"))+": ",1),Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.workoutObject.duration)+")",1)])):Object(n["createCommentVNode"])("",!0)]),Object(n["createElementVNode"])("div",re,[ae,Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(e.$t("workouts.DISTANCE"))+": ",1),Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.workoutObject.distance)+" km",1),Object(n["createVNode"])(l,{workoutObject:e.workoutObject,record_type:"FD"},null,8,["workoutObject"])]),Object(n["createElementVNode"])("div",ce,[le,Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(e.$t("workouts.AVERAGE_SPEED"))+": ",1),Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.workoutObject.aveSpeed)+" km/h",1),Object(n["createVNode"])(l,{workoutObject:e.workoutObject,record_type:"AS"},null,8,["workoutObject"]),ie,Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(e.$t("workouts.MAX_SPEED"))+": ",1),Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.workoutObject.maxSpeed)+" km/h",1),Object(n["createVNode"])(l,{workoutObject:e.workoutObject,record_type:"MS"},null,8,["workoutObject"])]),null!==e.workoutObject.maxAlt&&null!==e.workoutObject.minAlt?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ue,[Object(n["createElementVNode"])("img",{class:"mountains",src:"/img/workouts/mountains.svg",alt:e.$t("workouts.ELEVATION")},null,8,se),Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(e.$t("workouts.MIN_ALTITUDE"))+": ",1),Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.workoutObject.minAlt)+" m",1),de,Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(e.$t("workouts.MAX_ALTITUDE"))+": ",1),Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.workoutObject.maxAlt)+" m",1)])):Object(n["createCommentVNode"])("",!0),null!==e.workoutObject.ascent&&null!==e.workoutObject.descent?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",pe,[be,Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(e.$t("workouts.ASCENT"))+": ",1),Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.workoutObject.ascent)+" m",1),me,Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(e.$t("workouts.DESCENT"))+": ",1),Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.workoutObject.descent)+" m",1)])):Object(n["createCommentVNode"])("",!0),Object(n["createVNode"])(i,{workoutObject:e.workoutObject},null,8,["workoutObject"])])}var je=function(e){return Object(n["pushScopeId"])("data-v-da96984c"),e=e(),Object(n["popScopeId"])(),e},fe={key:0,class:"workout-record"},ke=je((function(){return Object(n["createElementVNode"])("sup",null,[Object(n["createElementVNode"])("i",{class:"fa fa-trophy","aria-hidden":"true"})],-1)})),ge=[ke];function ye(e,t,o,r,a,c){return e.workoutObject.records&&e.workoutObject.records.find((function(t){return t.record_type===e.record_type}))?(Object(n["openBlock"])(),Object(n["createElementBlock"])("span",fe,ge)):Object(n["createCommentVNode"])("",!0)}var we=Object(n["defineComponent"])({name:"WorkoutRecord",props:{record_type:{type:String,required:!0},workoutObject:{type:Object,required:!0}}});o("bfb4");const he=V()(we,[["render",ye],["__scopeId","data-v-da96984c"]]);var ve=he,Ee=function(e){return Object(n["pushScopeId"])("data-v-7eb41918"),e=e(),Object(n["popScopeId"])(),e},Ne={key:0,id:"workout-weather"},Se={class:"weather-table"},Ve=Ee((function(){return Object(n["createElementVNode"])("th",null,null,-1)})),Te={class:"weather-th"},De=["src","alt","title"],Ce={class:"weather-th"},_e=["src","alt","title"],xe=["alt","title"],Be=["alt","title"],Ae=["alt","title"];function Re(e,t,o,r,a,c){return e.workoutObject.weatherStart&&e.workoutObject.weatherEnd?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Ne,[Object(n["createElementVNode"])("table",Se,[Object(n["createElementVNode"])("thead",null,[Object(n["createElementVNode"])("tr",null,[Ve,Object(n["createElementVNode"])("th",null,[Object(n["createElementVNode"])("div",Te,[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e.$t("workouts.START"))+" ",1),Object(n["createElementVNode"])("img",{class:"weather-img",src:"/img/weather/".concat(e.workoutObject.weatherStart.icon,".svg"),alt:e.$t("workouts.WEATHER.DARK_SKY.".concat(e.workoutObject.weatherStart.icon)),title:e.$t("workouts.WEATHER.DARK_SKY.".concat(e.workoutObject.weatherStart.icon))},null,8,De)])]),Object(n["createElementVNode"])("th",null,[Object(n["createElementVNode"])("div",Ce,[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e.$t("workouts.END"))+" ",1),Object(n["createElementVNode"])("img",{class:"weather-img",src:"/img/weather/".concat(e.workoutObject.weatherEnd.icon,".svg"),alt:e.$t("workouts.WEATHER.DARK_SKY.".concat(e.workoutObject.weatherEnd.icon)),title:e.$t("workouts.WEATHER.DARK_SKY.".concat(e.workoutObject.weatherEnd.icon))},null,8,_e)])])])]),Object(n["createElementVNode"])("tbody",null,[Object(n["createElementVNode"])("tr",null,[Object(n["createElementVNode"])("td",null,[Object(n["createElementVNode"])("img",{class:"weather-img weather-img-small",src:"/img/weather/temperature.svg",alt:e.$t("workouts.WEATHER.TEMPERATURE"),title:e.$t("workouts.WEATHER.TEMPERATURE")},null,8,xe)]),Object(n["createElementVNode"])("td",null,Object(n["toDisplayString"])(Number(e.workoutObject.weatherStart.temperature).toFixed(1))+"°C ",1),Object(n["createElementVNode"])("td",null,Object(n["toDisplayString"])(Number(e.workoutObject.weatherEnd.temperature).toFixed(1))+"°C ",1)]),Object(n["createElementVNode"])("tr",null,[Object(n["createElementVNode"])("td",null,[Object(n["createElementVNode"])("img",{class:"weather-img weather-img-small",src:"/img/weather/pour-rain.svg",alt:e.$t("workouts.WEATHER.HUMIDITY"),title:e.$t("workouts.WEATHER.HUMIDITY")},null,8,Be)]),Object(n["createElementVNode"])("td",null,Object(n["toDisplayString"])(Number(100*e.workoutObject.weatherStart.humidity).toFixed(1))+"% ",1),Object(n["createElementVNode"])("td",null,Object(n["toDisplayString"])(Number(100*e.workoutObject.weatherEnd.humidity).toFixed(1))+"% ",1)]),Object(n["createElementVNode"])("tr",null,[Object(n["createElementVNode"])("td",null,[Object(n["createElementVNode"])("img",{class:"weather-img weather-img-small",src:"/img/weather/breeze.svg",alt:e.$t("workouts.WEATHER.WIND"),title:e.$t("workouts.WEATHER.WIND")},null,8,Ae)]),Object(n["createElementVNode"])("td",null,Object(n["toDisplayString"])(Number(e.workoutObject.weatherStart.wind).toFixed(1))+"m/s",1),Object(n["createElementVNode"])("td",null,Object(n["toDisplayString"])(Number(e.workoutObject.weatherEnd.wind).toFixed(1))+"m/s",1)])])])])):Object(n["createCommentVNode"])("",!0)}var Ie=Object(n["defineComponent"])({name:"WorkoutWeather",props:{workoutObject:{type:Object,required:!0}}});o("6595");const Le=V()(Ie,[["render",Re],["__scopeId","data-v-7eb41918"]]);var Ue=Le,Me=Object(n["defineComponent"])({name:"WorkoutData",components:{WorkoutRecord:ve,WorkoutWeather:Ue},props:{workoutObject:{type:Object,required:!0}},setup:function(e){return{withPause:Object(n["computed"])((function(){return"0:00:00"!==e.workoutObject.pauses&&null!==e.workoutObject.pauses}))}}});o("f962");const We=V()(Me,[["render",Oe],["__scopeId","data-v-aa863bde"]]);var $e=We,Fe={id:"workout-map"},Pe={key:0,class:"leaflet-container"},Ge={key:1},qe={key:0,class:"leaflet-container"},ze={key:1,class:"no-map"};function He(e,t,o,r,a,c){var l=Object(n["resolveComponent"])("LTileLayer"),i=Object(n["resolveComponent"])("LGeoJson"),u=Object(n["resolveComponent"])("LMarker"),s=Object(n["resolveComponent"])("LMap");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Fe,[e.workoutData.loading?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Pe)):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Ge,[e.workoutData.workout.with_gpx?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",qe,[e.geoJson.jsonData&&e.center&&2===e.bounds.length?(Object(n["openBlock"])(),Object(n["createBlock"])(s,{key:0,zoom:13,center:e.center,bounds:e.bounds,ref:"workoutMap",onReady:t[0]||(t[0]=function(t){return e.fitBounds(e.bounds)})},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(l,{url:"".concat(e.getApiUrl(),"workouts/map_tile/{s}/{z}/{x}/{y}.png"),attribution:e.appConfig.map_attribution,bounds:e.bounds},null,8,["url","attribution","bounds"]),Object(n["createVNode"])(i,{geojson:e.geoJson.jsonData},null,8,["geojson"]),e.markerCoordinates.latitude?(Object(n["openBlock"])(),Object(n["createBlock"])(u,{key:0,"lat-lng":[e.markerCoordinates.latitude,e.markerCoordinates.longitude]},null,8,["lat-lng"])):Object(n["createCommentVNode"])("",!0)]})),_:1},8,["center","bounds"])):Object(n["createCommentVNode"])("",!0)])):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ze,Object(n["toDisplayString"])(e.$t("workouts.NO_MAP")),1))]))])}var Ke=o("e94f"),Ze=o("5afd"),Je=o("dad5"),Xe=o("2906"),Ye=o("d257"),Qe=Object(n["defineComponent"])({name:"WorkoutMap",components:{LGeoJson:Ze["a"],LMap:Ze["b"],LMarker:Ze["c"],LTileLayer:Ze["d"]},props:{workoutData:{type:Object},markerCoordinates:{type:Object,required:!1}},setup:function(e){var t=Object(Xe["a"])();function o(e){if(!e||""!==e)try{var t=Object(Ke["gpx"])((new DOMParser).parseFromString(e,"text/xml"));return{jsonData:t}}catch(o){return console.error("Invalid gpx content"),{}}return{}}function r(e){return[(e.value[0][0]+e.value[1][0])/2,(e.value[0][1]+e.value[1][1])/2]}function a(e){var t,o;null!==(t=c.value)&&void 0!==t&&t.leafletObject&&(null===(o=c.value)||void 0===o||o.leafletObject.fitBounds(e))}var c=Object(n["ref"])(null),l=Object(n["computed"])((function(){return e.workoutData?[[e.workoutData.workout.bounds[0],e.workoutData.workout.bounds[1]],[e.workoutData.workout.bounds[2],e.workoutData.workout.bounds[3]]]:[]})),i=Object(n["computed"])((function(){return t.getters[Je["b"].GETTERS.APP_CONFIG]})),u=Object(n["computed"])((function(){return r(l)})),s=Object(n["computed"])((function(){return e.workoutData&&e.workoutData.gpx?o(e.workoutData.gpx):{}}));return{appConfig:i,bounds:l,center:u,geoJson:s,workoutMap:c,fitBounds:a,getApiUrl:Ye["a"]}}});o("2794");const et=V()(Qe,[["render",He],["__scopeId","data-v-76f3a2e8"]]);var tt=et,ot=o("5e65"),nt=Object(n["defineComponent"])({name:"WorkoutDetail",components:{WorkoutCardTitle:Y,WorkoutData:$e,WorkoutMap:tt},props:{authUser:{type:Object,required:!0},displaySegment:{type:Boolean,required:!0},markerCoordinates:{type:Object,required:!1},sports:{type:Object},workoutData:{type:Object,required:!0}},setup:function(e){var t=Object(b["c"])(),o=Object(Xe["a"])();function r(e,t,o){var n=t&&o&&1!==o?"/workouts/".concat(e.id,"/segment/").concat(o-1):!t&&e.previous_workout?"/workouts/".concat(e.previous_workout):null,r=t&&o&&o0&&u.value?i.value.segments[+u.value-1]:null})),d=Object(n["ref"])(!1);return Object(n["watch"])((function(){return t.params.segmentId}),function(){var e=Object(p["a"])(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:t&&(u.value=+t);case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),{sport:Object(n["computed"])((function(){return e.sports?e.sports.find((function(t){return t.id===e.workoutData.workout.sport_id})):{}})),workoutObject:Object(n["computed"])((function(){return a(i.value,s.value)})),displayModal:d,deleteWorkout:l,updateDisplayModal:c}}});o("c2ce");const rt=V()(nt,[["render",_],["__scopeId","data-v-a17554ea"]]);var at=rt,ct={id:"workout-note"};function lt(e,t,o,r,a,c){var l=Object(n["resolveComponent"])("Card");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ct,[Object(n["createVNode"])(l,null,{title:Object(n["withCtx"])((function(){return[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e.$t("workouts.NOTES")),1)]})),content:Object(n["withCtx"])((function(){return[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e.notes&&""!==e.notes?e.notes:e.$t("workouts.NO_NOTES")),1)]})),_:1})])}var it=Object(n["defineComponent"])({name:"WorkoutNotes",props:{notes:{type:String,required:!1}}});o("42ec");const ut=V()(it,[["render",lt],["__scopeId","data-v-5c47d30a"]]);var st=ut,dt={id:"workout-segments"};function pt(e,t,o,r,a,c){var l=Object(n["resolveComponent"])("router-link"),i=Object(n["resolveComponent"])("Card");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",dt,[Object(n["createVNode"])(i,null,{title:Object(n["withCtx"])((function(){return[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e.$t("workouts.SEGMENT",2)),1)]})),content:Object(n["withCtx"])((function(){return[Object(n["createElementVNode"])("ul",null,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.segments,(function(t,o){return Object(n["openBlock"])(),Object(n["createElementBlock"])("li",{key:t.segment_id},[Object(n["createVNode"])(l,{to:{name:"WorkoutSegment",params:{workoutId:t.workout_id,segmentId:o+1}}},{default:Object(n["withCtx"])((function(){return[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e.$t("workouts.SEGMENT",1))+" "+Object(n["toDisplayString"])(o+1),1)]})),_:2},1032,["to"]),Object(n["createTextVNode"])(" ("+Object(n["toDisplayString"])(e.$t("workouts.DISTANCE"))+": "+Object(n["toDisplayString"])(t.distance)+" km, "+Object(n["toDisplayString"])(e.$t("workouts.DURATION"))+": "+Object(n["toDisplayString"])(t.duration)+") ",1)])})),128))])]})),_:1})])}var bt=Object(n["defineComponent"])({name:"WorkoutSegments",props:{segments:{type:Object,required:!0}}});o("628e");const mt=V()(bt,[["render",pt],["__scopeId","data-v-5c40d110"]]);var Ot=mt,jt=Object(n["defineComponent"])({name:"Workout",components:{NotFound:m["a"],WorkoutChart:D,WorkoutDetail:at,WorkoutNotes:st,WorkoutSegments:Ot},props:{displaySegment:{type:Boolean,required:!0}},setup:function(e){var t=Object(b["c"])(),o=Object(Xe["a"])();Object(n["onBeforeMount"])((function(){var n={workoutId:t.params.workoutId};e.displaySegment&&(n.segmentId=t.params.segmentId),o.dispatch(Je["f"].ACTIONS.GET_WORKOUT_DATA,n)}));var r=Object(n["computed"])((function(){return o.getters[Je["f"].GETTERS.WORKOUT_DATA]})),a=Object(n["computed"])((function(){return o.getters[Je["a"].GETTERS.AUTH_USER_PROFILE]})),c=Object(n["computed"])((function(){return o.getters[Je["c"].GETTERS.SPORTS]})),l=Object(n["ref"])({latitude:null,longitude:null});function i(e){l.value={latitude:e.latitude,longitude:e.longitude}}return Object(n["watch"])((function(){return t.params.workoutId}),function(){var e=Object(p["a"])(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:t&&o.dispatch(Je["f"].ACTIONS.GET_WORKOUT_DATA,{workoutId:t});case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),Object(n["watch"])((function(){return t.params.segmentId}),function(){var e=Object(p["a"])(regeneratorRuntime.mark((function e(n){var r;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:t.params.workoutId&&(r={workoutId:t.params.workoutId},n&&(r.segmentId=n),o.dispatch(Je["f"].ACTIONS.GET_WORKOUT_DATA,r));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),Object(n["onUnmounted"])((function(){o.commit(Je["f"].MUTATIONS.EMPTY_WORKOUT)})),{authUser:a,markerCoordinates:l,sports:c,workoutData:r,updateCoordinates:i}}});o("76ef");const ft=V()(jt,[["render",d],["__scopeId","data-v-05bdbd04"]]);t["default"]=ft},3424:function(e,t,o){"use strict";o("4bb0")},3854:function(e,t,o){},3950:function(e,t,o){},"3ab5":function(e,t,o){"use strict";o("799a")},"3ad7":function(e,t,o){"use strict";o("3950")},"42ec":function(e,t,o){"use strict";o("8300")},"442c":function(e,t,o){},"4bb0":function(e,t,o){},5687:function(e,t,o){"use strict";o("bef2")},5910:function(e,t,o){"use strict";o("b76e")},"5afd":function(e,t,o){"use strict";(function(e){o.d(t,"a",(function(){return T})),o.d(t,"b",(function(){return x})),o.d(t,"c",(function(){return R})),o.d(t,"d",(function(){return $}));var n=o("7a23");const r=(e,t)=>{let o;return function(...n){const r=this;o&&clearTimeout(o),o=setTimeout(()=>{e.apply(r,n),o=null},t)}},a=e=>e&&"function"===typeof e.charAt?e.charAt(0).toUpperCase()+e.slice(1):e,c=(e,t,o)=>{for(const r in o){const c="set"+a(r);e[c]?Object(n["watch"])(()=>o[r],(t,o)=>{e[c](t,o)}):t[c]&&Object(n["watch"])(()=>o[r],e=>{t[c](e)})}},l=e=>{const t={};for(const o in e)if(o.startsWith("on")&&!o.startsWith("onUpdate")&&"onReady"!==o){const n=o.slice(2).toLocaleLowerCase();t[n]=e[o]}return t},i=async e=>{const t=await Promise.all([o.e("chunk-2d0c9189").then(o.t.bind(null,"584d",7)),o.e("chunk-2d0cf391").then(o.t.bind(null,"6397",7)),o.e("chunk-2d22523a").then(o.t.bind(null,"e2b9",7))]);delete e.Default.prototype._getIconUrl,e.Default.mergeOptions({iconRetinaUrl:t[0].default,iconUrl:t[1].default,shadowUrl:t[2].default})},u=e=>{const t=Object(n["ref"])(()=>console.warn(`Method ${e} has been invoked without being replaced`)),o=(...e)=>t.value(...e);return o.wrapped=t,Object(n["provide"])(e,o),o},s=(e,t)=>e.wrapped.value=t,d="object"===typeof self&&self.self===self&&self||"object"===typeof e&&e.global===e&&e||void 0,p="useGlobalLeaflet",b={options:{type:Object,default:()=>({})}},m=e=>({options:e.options,methods:{}}),O={...b,pane:{type:String,default:"overlayPane"},attribution:{type:String,default:null},name:{type:String,custom:!0,default:void 0},layerType:{type:String,custom:!0,default:void 0},visible:{type:Boolean,custom:!0,default:!0}},j=(e,t,o)=>{const r=Object(n["inject"])("addLayer"),a=Object(n["inject"])("removeLayer"),{options:c,methods:l}=m(e),i={...c,attribution:e.attribution,pane:e.pane},u=()=>r({leafletObject:t.value}),s=()=>a({leafletObject:t.value}),d={...l,setAttribution(e,t){const o=this.$parent.leafletObject.attributionControl;o.removeAttribution(t).addAttribution(e)},setName(){s(),e.visible&&u()},setLayerType(){s(),e.visible&&u()},setVisible(e){t.value&&(e?u():s())},bindPopup({leafletObject:e}){t.value.bindPopup(e)},bindTooltip({leafletObject:e}){t.value.bindTooltip(e)},unbindTooltip(){const e=t.value?t.value.getTooltip():null;e&&e.unbindTooltip()},unbindPopup(){const e=t.value?t.value.getPopup():null;e&&e.unbindPopup()},updateVisibleProp(e){o.emit("update:visible",e)}};return Object(n["provide"])("bindPopup",d.bindPopup),Object(n["provide"])("bindTooltip",d.bindTooltip),Object(n["provide"])("unbindTooltip",d.unbindTooltip),Object(n["provide"])("unbindPopup",d.unbindPopup),Object(n["onUnmounted"])(()=>{d.unbindPopup(),d.unbindTooltip(),s()}),{options:i,methods:d}},f=(e,t)=>{if(e&&t.default)return Object(n["h"])("div",{style:{display:"none"}},t.default())},k={...b,interactive:{type:Boolean,default:!0},bubblingMouseEvents:{type:Boolean,default:!0}},g={...O,...k,stroke:{type:Boolean,custom:!0,default:!0},color:{type:String,custom:!0,default:"#3388ff"},weight:{type:Number,custom:!0,default:3},opacity:{type:Number,custom:!0,default:1},lineCap:{type:String,custom:!0,default:"round"},lineJoin:{type:String,custom:!0,default:"round"},dashArray:{type:String,custom:!0,default:null},dashOffset:{type:String,custom:!0,default:null},fill:{type:Boolean,custom:!0,default:!1},fillColor:{type:String,custom:!0,default:"#3388ff"},fillOpacity:{type:Number,custom:!0,default:.2},fillRule:{type:String,custom:!0,default:"evenodd"},className:{type:String,custom:!0,default:null}},y={...g,latLng:{type:[Object,Array],custom:!0,default:null},radius:{type:Number,default:null}};const w={...b,position:{type:String,default:"topright"}},h=(e,t)=>{const{options:o,methods:r}=m(e),a={...o,position:e.position},c={...r,setPosition(e){t.value&&t.value.setPosition(e)}};return Object(n["onUnmounted"])(()=>{t.value&&t.value.remove()}),{options:a,methods:c}},v=e=>e.default?Object(n["h"])("div",{ref:"root"},e.default()):null;Boolean,Boolean;Boolean,Boolean,Boolean,Boolean;Boolean,Boolean,Boolean;const E={...O},N=(e,t,o)=>{const{options:r,methods:a}=j(e,t,o),c={...r},l={...a,addLayer(e){t.value.addLayer(e.leafletObject)},removeLayer(e){t.value.removeLayer(e.leafletObject)}};return Object(n["provide"])("addLayer",l.addLayer),Object(n["provide"])("removeLayer",l.removeLayer),{options:c,methods:l}};const S={...E,geojson:{type:[Object,Array],default:()=>({})}},V=(e,t)=>{const{options:o,methods:n}=N(e,t),r={...o,...e},a={...n,setGeojson(e){t.value.clearLayers(),t.value.addData(e)},getGeoJSONData(){return t.value.toGeoJSON()},getBounds(){return t.value.getBounds()}};return{options:r,methods:a}};var T={props:S,setup(e,t){const r=Object(n["ref"])({}),a=Object(n["ref"])(!1),i=Object(n["inject"])(p),u=Object(n["inject"])("addLayer"),{methods:s,options:b}=V(e,r);return Object(n["onMounted"])(async()=>{const{geoJSON:p,DomEvent:m}=i?d.L:await o.e("chunk-2d0da8f3").then(o.bind(null,"6bb3"));r.value=p(e.geojson,b);const O=l(t.attrs);m.on(r.value,O),c(s,r.value,e),u({...e,...s,leafletObject:r.value}),a.value=!0,Object(n["nextTick"])(()=>t.emit("ready",r.value))}),{ready:a,leafletObject:r}},render(){return f(this.ready,this.$slots)},__file:"src/components/LGeoJson.vue"};const D={...O,pane:{type:String,default:"tilePane"},opacity:{type:Number,custom:!1,default:1},zIndex:{type:Number,default:1},tileSize:{type:Number,default:256},noWrap:{type:Boolean,default:!1},minZoom:{type:Number,default:0},maxZoom:{type:Number,default:void 0}},C=(e,t,o)=>{const{options:n,methods:r}=j(e,t,o),a={...n,pane:e.pane,opacity:e.opacity,zIndex:e.zIndex,tileSize:e.tileSize,noWrap:e.noWrap,minZoom:e.minZoom,maxZoom:e.maxZoom};return{options:a,methods:{...r}}};const _={iconUrl:{type:String,custom:!0,default:null},iconRetinaUrl:{type:String,custom:!0,default:null},iconSize:{type:[Object,Array],custom:!0,default:null},iconAnchor:{type:[Object,Array],custom:!0,default:null},popupAnchor:{type:[Object,Array],custom:!0,default:()=>[0,0]},tooltipAnchor:{type:[Object,Array],custom:!0,default:()=>[0,0]},shadowUrl:{type:String,custom:!0,default:null},shadowRetinaUrl:{type:String,custom:!0,default:null},shadowSize:{type:[Object,Array],custom:!0,default:null},shadowAnchor:{type:[Object,Array],custom:!0,default:null},bgPos:{type:[Object,Array],custom:!0,default:()=>[0,0]},className:{type:String,custom:!0,default:""},options:{type:Object,custom:!0,default:()=>({})}};Boolean,Boolean;var x={emits:["ready","update:zoom","update:center","update:bounds"],props:{...b,center:{type:[Object,Array],default:()=>[0,0]},bounds:{type:[Array,Object],default:void 0},maxBounds:{type:[Array,Object],default:void 0},zoom:{type:Number,default:0},minZoom:{type:Number,default:void 0},maxZoom:{type:Number,default:void 0},paddingBottomRight:{type:Array,default:void 0},paddingTopLeft:{type:Array,default:void 0},padding:{type:Array,default:void 0},worldCopyJump:{type:Boolean,default:!1},crs:{type:[String,Object],default:"EPSG3857"},maxBoundsViscosity:{type:Number,default:void 0},inertia:{type:Boolean,default:void 0},inertiaDeceleration:{type:Number,default:void 0},inertiaMaxSpeed:{type:Number,default:void 0},easeLinearity:{type:Number,default:void 0},zoomAnimation:{type:Boolean,default:void 0},zoomAnimationThreshold:{type:Number,default:void 0},fadeAnimation:{type:Boolean,default:void 0},markerZoomAnimation:{type:Boolean,default:void 0},noBlockingAnimations:{type:Boolean,default:!1},useGlobalLeaflet:{type:Boolean,default:!1}},setup(e,t){const a=Object(n["ref"])(null),b=Object(n["reactive"])({ready:!1,leafletRef:{},layersToAdd:[],layersInControl:[]}),{options:O}=m(e),j={...O,minZoom:e.minZoom,maxZoom:e.maxZoom,maxBounds:e.maxBounds,maxBoundsViscosity:e.maxBoundsViscosity,worldCopyJump:e.worldCopyJump,crs:e.crs,center:e.center,zoom:e.zoom,inertia:e.inertia,inertiaDeceleration:e.inertiaDeceleration,inertiaMaxSpeed:e.inertiaMaxSpeed,easeLinearity:e.easeLinearity,zoomAnimation:e.zoomAnimation,zoomAnimationThreshold:e.zoomAnimationThreshold,fadeAnimation:e.fadeAnimation,markerZoomAnimation:e.markerZoomAnimation},f=u("addLayer"),k=u("removeLayer"),g=u("registerControl"),y=u("registerLayerControl");Object(n["provide"])(p,e.useGlobalLeaflet);const w={moveEndHandler(){t.emit("update:zoom",b.leafletRef.getZoom()),t.emit("update:center",b.leafletRef.getCenter()),t.emit("update:bounds",b.leafletRef.getBounds())},overlayAddHandler(e){const t=b.layersInControl.find(t=>t.name===e.name);t&&t.updateVisibleProp(!0)},overlayRemoveHandler(e){const t=b.layersInControl.find(t=>t.name===e.name);t&&t.updateVisibleProp(!1)}};Object(n["onMounted"])(async()=>{e.useGlobalLeaflet&&(d.L=d.L||await o.e("chunk-2d2248b6").then(o.t.bind(null,"e11e",7)));const{map:u,CRS:p,Icon:m,latLngBounds:O,latLng:h,DomEvent:v}=e.useGlobalLeaflet?d.L:await o.e("chunk-2d0da8f3").then(o.bind(null,"6bb3"));try{j.beforeMapMount&&await j.beforeMapMount()}catch(V){console.error("The following error occurred running the provided beforeMapMount hook "+V.message)}await i(m);const E="string"==typeof j.crs?p[j.crs]:j.crs;j.crs=E||p.EPSG3857;const N={addLayer(e){if(void 0!==e.layerType)if(void 0===b.layerControl)b.layersToAdd.push(e);else{const t=b.layersInControl.find(t=>t.leafletObject._leaflet_id===e.leafletObject._leaflet_id);t||(b.layerControl.addLayer(e),b.layersInControl.push(e))}!1!==e.visible&&b.leafletRef.addLayer(e.leafletObject)},removeLayer(e){void 0!==e.layerType&&(void 0===b.layerControl?b.layersToAdd=b.layersToAdd.filter(t=>t.name!==e.name):(b.layerControl.removeLayer(e.leafletObject),b.layersInControl=b.layersInControl.filter(t=>t.leafletObject._leaflet_id!==e.leafletObject._leaflet_id))),b.leafletRef.removeLayer(e.leafletObject)},registerLayerControl(e){b.layerControl=e,b.layersToAdd.forEach(e=>{b.layerControl.addLayer(e)}),b.layersToAdd=[],g(e)},registerControl(e){b.leafletRef.addControl(e.leafletObject)},setZoom(t){const o=b.leafletRef.getZoom();t!==o&&b.leafletRef.setZoom(t,{animate:!e.noBlockingAnimations&&null})},setPaddingBottomRight(e){b.paddingBottomRight=e},setPaddingTopLeft(e){b.paddingTopLeft=e},setPadding(e){b.padding=e},setCrs(e){const t=b.leafletRef.getBounds();b.leafletRef.options.crs=e,b.leafletRef.fitBounds(t,{animate:!1,padding:[0,0]})},fitBounds(e){b.leafletRef.fitBounds(e,{animate:!this.noBlockingAnimations&&null})},setBounds(e){if(!e)return;const t=O(e);if(!t.isValid())return;const o=b.lastSetBounds||b.leafletRef.getBounds(),n=!o.equals(t,0);n&&(b.lastSetBounds=t,b.leafletRef.fitBounds(t,this.fitBoundsOptions))},setCenter(e){if(null==e)return;const t=h(e),o=b.lastSetCenter||b.leafletRef.getCenter();o.lat===t.lat&&o.lng===t.lng||(b.lastSetCenter=t,b.leafletRef.panTo(t,{animate:!this.noBlockingAnimations&&null}))}};s(f,N.addLayer),s(k,N.removeLayer),s(g,N.registerControl),s(y,N.registerLayerControl),b.leafletRef=u(a.value,j),c(N,b.leafletRef,e);const S=l(t.attrs);b.leafletRef.on("moveend",r(w.moveEndHandler,100)),b.leafletRef.on("overlayadd",w.overlayAddHandler),b.leafletRef.on("overlayremove",w.overlayRemoveHandler),v.on(b.leafletRef,S),b.ready=!0,Object(n["nextTick"])(()=>t.emit("ready",b.leafletRef))}),Object(n["onBeforeUnmount"])(()=>{b.leafletRef&&b.leafletRef.remove()});const h=Object(n["computed"])(()=>b.leafletRef),v=Object(n["computed"])(()=>b.ready);return{root:a,ready:v,leafletObject:h}},render(){return Object(n["h"])("div",{style:{width:"100%",height:"100%"},ref:"root"},this.ready?this.$slots.default():{})},__file:"src/components/LMap.vue"};const B={...O,pane:{type:String,default:"markerPane"},draggable:{type:Boolean,custom:!0,default:!1},latLng:{type:[Object,Array],custom:!0,default:null},icon:{type:[Object],default:()=>{},custom:!1},zIndexOffset:{type:Number,custom:!1,default:null}},A=(e,t,o)=>{const{options:n,methods:r}=j(e,t,o),a={...n,...e},c={...r,setDraggable(e){t.value.dragging&&(e?t.value.dragging.enable():t.value.dragging.disable())},latLngSync(e){o.emit("update:latLng",e.latlng),o.emit("update:lat-lng",e.latlng)},setLatLng(e){if(null!=e&&t.value){const o=t.value.getLatLng();o&&o.equals(e)||t.value.setLatLng(e)}}};return{options:a,methods:c}};var R={name:"LMarker",props:B,setup(e,t){const a=Object(n["ref"])({}),i=Object(n["ref"])(!1),u=Object(n["inject"])(p),s=Object(n["inject"])("addLayer");Object(n["provide"])("canSetParentHtml",()=>!!a.value.getElement()),Object(n["provide"])("setParentHtml",e=>a.value.getElement().innerHTML=e),Object(n["provide"])("setIcon",e=>a.value.setIcon&&a.value.setIcon(e));const{options:b,methods:m}=A(e,a,t);return void 0===b.icon&&delete b.icon,Object(n["onMounted"])(async()=>{const{marker:p,DomEvent:O}=u?d.L:await o.e("chunk-2d0da8f3").then(o.bind(null,"6bb3"));a.value=p(e.latLng,b);const j=l(t.attrs);O.on(a.value,j),a.value.on("move",r(m.latLngSync,100)),c(m,a.value,e),s({...e,...m,leafletObject:a.value}),i.value=!0,Object(n["nextTick"])(()=>t.emit("ready",a.value))}),{ready:i,leafletObject:a}},render(){return f(this.ready,this.$slots)},__file:"src/components/LMarker.vue"};const I={...g,latLngs:{type:Array,default:()=>[]},smoothFactor:{type:Number,custom:!0,default:1},noClip:{type:Boolean,custom:!0,default:!1}},L={...I};const U={...b,content:{type:String,default:null}};const M={...D,tms:{type:Boolean,default:!1},subdomains:{type:String,default:"abc"},detectRetina:{type:Boolean,default:!1},url:{type:String,default:null}},W=(e,t)=>{const{options:o,methods:n}=C(e,t),r={...o,tms:e.tms,subdomains:e.subdomains,detectRetina:e.detectRetina};return{options:r,methods:{...n}}};var $={props:M,setup(e,t){const r=Object(n["ref"])({}),a=Object(n["inject"])(p),i=Object(n["inject"])("addLayer"),{options:u,methods:s}=W(e,r);return Object(n["onMounted"])(async()=>{const{tileLayer:p,DomEvent:b}=a?d.L:await o.e("chunk-2d0da8f3").then(o.bind(null,"6bb3"));r.value=p(e.url,u);const m=l(t.attrs);b.on(r.value,m),c(s,r.value,e),i({...e,...s,leafletObject:r.value}),Object(n["nextTick"])(()=>t.emit("ready",r.value))}),{leafletObject:r}},render(){return null},__file:"src/components/LTileLayer.vue"};Boolean,Boolean}).call(this,o("c8ba"))},"5c76":function(e,t,o){"use strict";o("4de4"),o("d3b7");var n=o("7a23"),r={id:"workout-form"},a={class:"form-items"},c={key:0,class:"form-item-radio"},l=["checked","disabled"],i={for:"withGpx"},u=["checked","disabled"],s={for:"withoutGpx"},d={class:"form-item"},p=["disabled"],b=["value"],m={key:1,class:"form-item"},O={for:"gpxFile"},j=["disabled"],f={class:"files-help info-box"},k={key:2,class:"form-item"},g={for:"title"},y=["required","disabled"],w={key:3},h={class:"workout-date-duration"},v={class:"form-item"},E={class:"workout-date-time"},N=["disabled"],S=["disabled"],V={class:"form-item"},T=["disabled"],D=Object(n["createTextVNode"])(" : "),C=["disabled"],_=Object(n["createTextVNode"])(" : "),x=["disabled"],B={class:"form-item"},A=["disabled"],R={class:"form-item"},I={key:1},L={key:2,class:"form-buttons"},U=["disabled"];function M(e,t,o,M,W,$){var F=Object(n["resolveComponent"])("CustomTextArea"),P=Object(n["resolveComponent"])("ErrorMessage"),G=Object(n["resolveComponent"])("Loader"),q=Object(n["resolveComponent"])("Card");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{id:"workout-edition",class:Object(n["normalizeClass"])(["center-card center-card with-margin",{"center-form":e.workout&&e.workout.with_gpx}])},[Object(n["createVNode"])(q,null,{title:Object(n["withCtx"])((function(){return[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e.$t("workouts.".concat(e.isCreation?"ADD":"EDIT","_WORKOUT"))),1)]})),content:Object(n["withCtx"])((function(){return[Object(n["createElementVNode"])("div",r,[Object(n["createElementVNode"])("form",{onSubmit:t[12]||(t[12]=Object(n["withModifiers"])((function(){return e.updateWorkout&&e.updateWorkout.apply(e,arguments)}),["prevent"]))},[Object(n["createElementVNode"])("div",a,[e.isCreation?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",c,[Object(n["createElementVNode"])("div",null,[Object(n["createElementVNode"])("input",{id:"withGpx",type:"radio",checked:e.withGpx,disabled:e.loading,onClick:t[0]||(t[0]=function(){return e.updateWithGpx&&e.updateWithGpx.apply(e,arguments)})},null,8,l),Object(n["createElementVNode"])("label",i,Object(n["toDisplayString"])(e.$t("workouts.WITH_GPX")),1)]),Object(n["createElementVNode"])("div",null,[Object(n["createElementVNode"])("input",{id:"withoutGpx",type:"radio",checked:!e.withGpx,disabled:e.loading,onClick:t[1]||(t[1]=function(){return e.updateWithGpx&&e.updateWithGpx.apply(e,arguments)})},null,8,u),Object(n["createElementVNode"])("label",s,Object(n["toDisplayString"])(e.$t("workouts.WITHOUT_GPX")),1)])])):Object(n["createCommentVNode"])("",!0),Object(n["createElementVNode"])("div",d,[Object(n["createElementVNode"])("label",null,Object(n["toDisplayString"])(e.$t("workouts.SPORT",1))+": ",1),Object(n["withDirectives"])(Object(n["createElementVNode"])("select",{id:"sport",required:"",disabled:e.loading,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.workoutDataObject.sport_id=t})},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.translatedSports.filter((function(e){return e.is_active})),(function(e){return Object(n["openBlock"])(),Object(n["createElementBlock"])("option",{value:e.id,key:e.id},Object(n["toDisplayString"])(e.label),9,b)})),128))],8,p),[[n["vModelSelect"],e.workoutDataObject.sport_id]])]),e.isCreation&&e.withGpx?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",m,[Object(n["createElementVNode"])("label",O,Object(n["toDisplayString"])(e.$t("workouts.GPX_FILE"))+" "+Object(n["toDisplayString"])(e.$t("workouts.ZIP_ARCHIVE_DESCRIPTION"))+": ",1),Object(n["createElementVNode"])("input",{id:"gpxFile",name:"gpxFile",type:"file",accept:".gpx, .zip",disabled:e.loading,onInput:t[3]||(t[3]=function(){return e.updateFile&&e.updateFile.apply(e,arguments)})},null,40,j),Object(n["createElementVNode"])("div",f,[Object(n["createElementVNode"])("div",null,[Object(n["createElementVNode"])("strong",null,Object(n["toDisplayString"])(e.$t("workouts.GPX_FILE"))+":",1),Object(n["createElementVNode"])("ul",null,[Object(n["createElementVNode"])("li",null,Object(n["toDisplayString"])(e.$t("workouts.MAX_SIZE"))+": "+Object(n["toDisplayString"])(e.fileSizeLimit),1)])]),Object(n["createElementVNode"])("div",null,[Object(n["createElementVNode"])("strong",null,Object(n["toDisplayString"])(e.$t("workouts.ZIP_ARCHIVE"))+":",1),Object(n["createElementVNode"])("ul",null,[Object(n["createElementVNode"])("li",null,Object(n["toDisplayString"])(e.$t("workouts.NO_FOLDER")),1),Object(n["createElementVNode"])("li",null,Object(n["toDisplayString"])(e.$t("workouts.MAX_FILES"))+": "+Object(n["toDisplayString"])(e.gpx_limit_import),1),Object(n["createElementVNode"])("li",null,Object(n["toDisplayString"])(e.$t("workouts.MAX_SIZE"))+": "+Object(n["toDisplayString"])(e.zipSizeLimit),1)])])])])):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",k,[Object(n["createElementVNode"])("label",g,Object(n["toDisplayString"])(e.$t("workouts.TITLE"))+": ",1),Object(n["withDirectives"])(Object(n["createElementVNode"])("input",{id:"title",name:"title",type:"text",required:!e.isCreation,disabled:e.loading,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.workoutDataObject.title=t})},null,8,y),[[n["vModelText"],e.workoutDataObject.title]])])),e.withGpx?Object(n["createCommentVNode"])("",!0):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",w,[Object(n["createElementVNode"])("div",h,[Object(n["createElementVNode"])("div",v,[Object(n["createElementVNode"])("label",null,Object(n["toDisplayString"])(e.$t("workouts.WORKOUT_DATE"))+":",1),Object(n["createElementVNode"])("div",E,[Object(n["withDirectives"])(Object(n["createElementVNode"])("input",{id:"workout-date",name:"workout-date",type:"date",required:"",disabled:e.loading,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.workoutDataObject.workoutDate=t})},null,8,N),[[n["vModelText"],e.workoutDataObject.workoutDate]]),Object(n["withDirectives"])(Object(n["createElementVNode"])("input",{id:"workout-time",name:"workout-time",class:"workout-time",type:"time",required:"",disabled:e.loading,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.workoutDataObject.workoutTime=t})},null,8,S),[[n["vModelText"],e.workoutDataObject.workoutTime]])])]),Object(n["createElementVNode"])("div",V,[Object(n["createElementVNode"])("label",null,Object(n["toDisplayString"])(e.$t("workouts.DURATION"))+":",1),Object(n["createElementVNode"])("div",null,[Object(n["withDirectives"])(Object(n["createElementVNode"])("input",{id:"workout-duration-hour",name:"workout-duration-hour",class:"workout-duration",type:"text",placeholder:"HH",pattern:"^([0-9]*[0-9])$",required:"",disabled:e.loading,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.workoutDataObject.workoutDurationHour=t})},null,8,T),[[n["vModelText"],e.workoutDataObject.workoutDurationHour]]),D,Object(n["withDirectives"])(Object(n["createElementVNode"])("input",{id:"workout-duration-minutes",name:"workout-duration-minutes",class:"workout-duration",type:"text",pattern:"^([0-5][0-9])$",placeholder:"MM",required:"",disabled:e.loading,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.workoutDataObject.workoutDurationMinutes=t})},null,8,C),[[n["vModelText"],e.workoutDataObject.workoutDurationMinutes]]),_,Object(n["withDirectives"])(Object(n["createElementVNode"])("input",{id:"workout-duration-seconds",name:"workout-duration-seconds",class:"workout-duration",type:"text",pattern:"^([0-5][0-9])$",placeholder:"SS",required:"",disabled:e.loading,"onUpdate:modelValue":t[9]||(t[9]=function(t){return e.workoutDataObject.workoutDurationSeconds=t})},null,8,x),[[n["vModelText"],e.workoutDataObject.workoutDurationSeconds]])])])]),Object(n["createElementVNode"])("div",B,[Object(n["createElementVNode"])("label",null,Object(n["toDisplayString"])(e.$t("workouts.DISTANCE"))+" (km):",1),Object(n["withDirectives"])(Object(n["createElementVNode"])("input",{name:"workout-distance",type:"number",min:"0",step:"0.1",required:"",disabled:e.loading,"onUpdate:modelValue":t[10]||(t[10]=function(t){return e.workoutDataObject.workoutDistance=t})},null,8,A),[[n["vModelText"],e.workoutDataObject.workoutDistance]])])])),Object(n["createElementVNode"])("div",R,[Object(n["createElementVNode"])("label",null,Object(n["toDisplayString"])(e.$t("workouts.NOTES"))+": ",1),Object(n["createVNode"])(F,{name:"notes",input:e.workoutDataObject.notes,disabled:e.loading,onUpdateValue:e.updateNotes},null,8,["input","disabled","onUpdateValue"])])]),e.errorMessages?(Object(n["openBlock"])(),Object(n["createBlock"])(P,{key:0,message:e.errorMessages},null,8,["message"])):Object(n["createCommentVNode"])("",!0),e.loading?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",I,[Object(n["createVNode"])(G)])):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",L,[Object(n["createElementVNode"])("button",{class:"confirm",type:"submit",disabled:e.loading},Object(n["toDisplayString"])(e.$t("buttons.SUBMIT")),9,U),Object(n["createElementVNode"])("button",{class:"cancel",onClick:t[11]||(t[11]=Object(n["withModifiers"])((function(){return e.onCancel&&e.onCancel.apply(e,arguments)}),["prevent"]))},Object(n["toDisplayString"])(e.$t("buttons.CANCEL")),1)]))],32)])]})),_:1})],2)}var W=o("1da1"),$=(o("96cf"),o("ac1f"),o("1276"),o("99af"),o("47e2")),F=o("6c02"),P=o("dad5"),G=o("2906"),q=o("5e65"),z=o("c364"),H=o("1119"),K=Object(n["defineComponent"])({name:"WorkoutEdition",props:{authUser:{type:Object,required:!0},isCreation:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},sports:{type:Object,required:!0},workout:{type:Object,required:!1}},setup:function(e){var t=Object($["b"])(),o=t.t,r=Object(G["a"])(),a=Object(F["d"])();Object(n["onMounted"])((function(){e.workout&&e.workout.id&&k(e.workout)}));var c=Object(n["computed"])((function(){return Object(H["d"])(e.sports,o)})),l=Object(n["computed"])((function(){return r.getters[P["b"].GETTERS.APP_CONFIG]})),i=l.value.max_single_file_size?Object(z["b"])(l.value.max_single_file_size):"",u=l.value.gpx_limit_import,s=l.value.max_zip_file_size?Object(z["b"])(l.value.max_zip_file_size):"",d=Object(n["computed"])((function(){return r.getters[P["b"].GETTERS.ERROR_MESSAGES]})),p=Object(n["reactive"])({sport_id:"",title:"",notes:"",workoutDate:"",workoutTime:"",workoutDurationHour:"",workoutDurationMinutes:"",workoutDurationSeconds:"",workoutDistance:""}),b=Object(n["ref"])(e.workout?e.workout.with_gpx:e.isCreation),m=null;function O(e){p.notes=e}function j(){b.value=!b.value}function f(e){e.target.files&&(m=e.target.files[0])}function k(t){if(p.sport_id="".concat(t.sport_id),p.title=t.title,p.notes=t.notes,!t.with_gpx){var o=Object(q["a"])(Object(q["c"])(t.workout_date,e.authUser.timezone),"yyyy-MM-dd"),n=t.duration.split(":");p.workoutDistance="".concat(t.distance),p.workoutDate=o.workout_date,p.workoutTime=o.workout_time,p.workoutDurationHour=n[0],p.workoutDurationMinutes=n[1],p.workoutDurationSeconds=n[2]}}function g(e){e.title=p.title,e.distance=+p.workoutDistance,e.duration=3600*+p.workoutDurationHour+60*+p.workoutDurationMinutes+ +p.workoutDurationSeconds,e.workout_date="".concat(p.workoutDate," ").concat(p.workoutTime)}function y(){var t={sport_id:+p.sport_id,notes:p.notes};if(e.workout)e.workout.with_gpx?t.title=p.title:g(t),r.dispatch(P["f"].ACTIONS.EDIT_WORKOUT,{workoutId:e.workout.id,data:t});else if(b.value){if(!m){var o="workouts.NO_FILE_PROVIDED";return void r.commit(P["b"].MUTATIONS.SET_ERROR_MESSAGES,o)}t.file=m,r.dispatch(P["f"].ACTIONS.ADD_WORKOUT,t)}else g(t),r.dispatch(P["f"].ACTIONS.ADD_WORKOUT_WITHOUT_GPX,t)}function w(){e.workout?a.push({name:"Workout",params:{workoutId:e.workout.id}}):a.go(-1)}return Object(n["watch"])((function(){return e.workout}),function(){var e=Object(W["a"])(regeneratorRuntime.mark((function e(t,o){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:t!==o&&t&&t.id&&k(t);case 1:case"end":return e.stop()}}),e)})));return function(t,o){return e.apply(this,arguments)}}()),Object(n["onUnmounted"])((function(){return r.commit(P["b"].MUTATIONS.EMPTY_ERROR_MESSAGES)})),{appConfig:l,errorMessages:d,fileSizeLimit:i,gpx_limit_import:u,translatedSports:c,withGpx:b,zipSizeLimit:s,workoutDataObject:p,onCancel:w,updateFile:f,updateNotes:O,updateWithGpx:j,updateWorkout:y}}}),Z=(o("ba30"),o("6b0d")),J=o.n(Z);const X=J()(K,[["render",M],["__scopeId","data-v-8eb73dd0"]]);t["a"]=X},"628e":function(e,t,o){"use strict";o("be77")},6595:function(e,t,o){"use strict";o("cc92")},"692d":function(e,t,o){"use strict";o.r(t);var n=o("7a23"),r={id:"add-workout",class:"view"},a={class:"container"};function c(e,t,o,c,l,i){var u=Object(n["resolveComponent"])("WorkoutEdition");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",r,[Object(n["createElementVNode"])("div",a,[Object(n["createVNode"])(u,{authUser:e.authUser,sports:e.sports,isCreation:!0,loading:e.workoutData.loading},null,8,["authUser","sports","loading"])])])}var l=o("5c76"),i=o("dad5"),u=o("2906"),s=Object(n["defineComponent"])({name:"AddWorkout",components:{WorkoutEdition:l["a"]},setup:function(){var e=Object(u["a"])(),t=Object(n["computed"])((function(){return e.getters[i["c"].GETTERS.SPORTS]})),o=Object(n["computed"])((function(){return e.getters[i["a"].GETTERS.AUTH_USER_PROFILE]})),r=Object(n["computed"])((function(){return e.getters[i["f"].GETTERS.WORKOUT_DATA]}));return{authUser:o,sports:t,workoutData:r}}}),d=o("6b0d"),p=o.n(d);const b=p()(s,[["render",c]]);t["default"]=b},"76ef":function(e,t,o){"use strict";o("442c")},"799a":function(e,t,o){},8300:function(e,t,o){},"87bb":function(e,t,o){},"8ee9":function(e,t,o){"use strict";o.r(t);var n=o("7a23"),r={id:"edit-workout",class:"view"},a={class:"container"};function c(e,t,o,c,l,i){var u=Object(n["resolveComponent"])("WorkoutEdition");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",r,[Object(n["createElementVNode"])("div",a,[Object(n["createVNode"])(u,{authUser:e.authUser,sports:e.sports,workout:e.workoutData.workout,loading:e.workoutData.loading},null,8,["authUser","sports","workout","loading"])])])}var l=o("1da1"),i=(o("96cf"),o("6c02")),u=o("5c76"),s=o("dad5"),d=o("2906"),p=Object(n["defineComponent"])({name:"EditWorkout",components:{WorkoutEdition:u["a"]},setup:function(){var e=Object(i["c"])(),t=Object(d["a"])();Object(n["onBeforeMount"])((function(){t.dispatch(s["f"].ACTIONS.GET_WORKOUT_DATA,{workoutId:e.params.workoutId})}));var o=Object(n["computed"])((function(){return t.getters[s["a"].GETTERS.AUTH_USER_PROFILE]})),r=Object(n["computed"])((function(){return t.getters[s["c"].GETTERS.SPORTS]})),a=Object(n["computed"])((function(){return t.getters[s["f"].GETTERS.WORKOUT_DATA]}));return Object(n["watch"])((function(){return e.params.workoutId}),function(){var e=Object(l["a"])(regeneratorRuntime.mark((function e(o){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:o||t.commit(s["f"].MUTATIONS.EMPTY_WORKOUT);case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),{authUser:o,sports:r,workoutData:a}}}),b=o("6b0d"),m=o.n(b);const O=m()(p,[["render",c]]);t["default"]=O},a33d:function(e,t,o){},b76e:function(e,t,o){},ba30:function(e,t,o){"use strict";o("87bb")},be77:function(e,t,o){},bef2:function(e,t,o){},bfb4:function(e,t,o){"use strict";o("a33d")},c2ce:function(e,t,o){"use strict";o("2de4")},cc92:function(e,t,o){},e94f:function(e,t,o){!function(e,o){o(t)}(0,(function(e){"use strict";function t(e){return e&&e.normalize&&e.normalize(),e&&e.textContent||""}function o(e,t){const o=e.getElementsByTagName(t);return o.length?o[0]:null}function n(e){const n={};if(e){const r=o(e,"line");if(r){const e=t(o(r,"color")),a=parseFloat(t(o(r,"opacity"))),c=parseFloat(t(o(r,"width")));e&&(n.stroke=e),isNaN(a)||(n["stroke-opacity"]=a),isNaN(c)||(n["stroke-width"]=96*c/25.4)}}return n}function r(e,n){const r={};let a,c;for(c=0;c1,s=Object.assign(a(e),n(o(e,"extensions")),{_gpxType:"trk"},c.length?{coordinateProperties:{times:u?c:c[0]}}:{});for(let o=0;onew Array(e.line.length).fill(null))),e[t][o]=n):e[t]=n}}return{type:"Feature",properties:s,geometry:u?{type:"MultiLineString",coordinates:r}:{type:"LineString",coordinates:r[0]}}}function*s(e){const t=e.getElementsByTagName("trk"),o=e.getElementsByTagName("rte"),n=e.getElementsByTagName("wpt");for(let r=0;rArray(e.length).fill(null))),u[o][t]=e[o])}if(0!==r.length)return(a.length||c.length)&&(u.coordinateProperties=Object.assign(a.length?{times:1===r.length?a[0]:a}:{},c.length?{heart:1===r.length?c[0]:c}:{})),{type:"Feature",properties:u,geometry:{type:1===r.length?"LineString":"MultiLineString",coordinates:1===r.length?r[0]:r}}}function*f(e){const t=e.getElementsByTagName("Lap");for(let n=0;n (_pushScopeId(\"data-v-22a8a7cd\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"workouts\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container workouts-container\" }\nconst _hoisted_3 = { class: \"display-filters\" }\nconst _hoisted_4 = { class: \"list-container\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_WorkoutsFilters = _resolveComponent(\"WorkoutsFilters\")!\n const _component_WorkoutsList = _resolveComponent(\"WorkoutsList\")!\n\n return (_ctx.authUser.username)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"filters-container\", { hidden: _ctx.hiddenFilters }])\n }, [\n _createVNode(_component_WorkoutsFilters, {\n sports: _ctx.translatedSports,\n authUser: _ctx.authUser,\n onFilter: _ctx.toggleFilters\n }, null, 8, [\"sports\", \"authUser\", \"onFilter\"])\n ], 2),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", {\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.toggleFilters && _ctx.toggleFilters(...args)))\n }, [\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa-caret-${_ctx.hiddenFilters ? 'down' : 'up'}`),\n \"aria-hidden\": \"true\"\n }, null, 2),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(`workouts.${_ctx.hiddenFilters ? 'DISPLAY' : 'HIDE'}_FILTERS`)), 1)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_WorkoutsList, {\n user: _ctx.authUser,\n sports: _ctx.translatedSports\n }, null, 8, [\"user\", \"sports\"])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-cbc43e30\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"workouts-filters\" }\nconst _hoisted_2 = { class: \"box\" }\nconst _hoisted_3 = { class: \"form\" }\nconst _hoisted_4 = { class: \"form-items-group\" }\nconst _hoisted_5 = { class: \"form-item\" }\nconst _hoisted_6 = [\"value\"]\nconst _hoisted_7 = { class: \"form-item\" }\nconst _hoisted_8 = [\"value\"]\nconst _hoisted_9 = { class: \"form-items-group\" }\nconst _hoisted_10 = { class: \"form-item\" }\nconst _hoisted_11 = [\"value\"]\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"option\", { value: \"\" }, null, -1))\nconst _hoisted_13 = [\"value\"]\nconst _hoisted_14 = { class: \"form-items-group\" }\nconst _hoisted_15 = { class: \"form-item\" }\nconst _hoisted_16 = { class: \"form-inputs-group\" }\nconst _hoisted_17 = [\"value\"]\nconst _hoisted_18 = [\"value\"]\nconst _hoisted_19 = { class: \"form-items-group\" }\nconst _hoisted_20 = { class: \"form-item\" }\nconst _hoisted_21 = { class: \"form-inputs-group\" }\nconst _hoisted_22 = [\"value\"]\nconst _hoisted_23 = [\"value\"]\nconst _hoisted_24 = { class: \"form-items-group\" }\nconst _hoisted_25 = { class: \"form-item\" }\nconst _hoisted_26 = { class: \"form-inputs-group\" }\nconst _hoisted_27 = [\"value\"]\nconst _hoisted_28 = [\"value\"]\nconst _hoisted_29 = { class: \"form-items-group\" }\nconst _hoisted_30 = { class: \"form-item\" }\nconst _hoisted_31 = { class: \"form-inputs-group\" }\nconst _hoisted_32 = [\"value\"]\nconst _hoisted_33 = [\"value\"]\nconst _hoisted_34 = { class: \"form-button\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.FROM')) + \": \", 1),\n _createElementVNode(\"input\", {\n name: \"from\",\n type: \"date\",\n value: _ctx.$route.query.from,\n onChange: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.handleFilterChange && _ctx.handleFilterChange(...args)))\n }, null, 40, _hoisted_6)\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.TO')) + \": \", 1),\n _createElementVNode(\"input\", {\n name: \"to\",\n type: \"date\",\n value: _ctx.$route.query.to,\n onChange: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.handleFilterChange && _ctx.handleFilterChange(...args)))\n }, null, 40, _hoisted_8)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.SPORT', 1)) + \":\", 1),\n _createElementVNode(\"select\", {\n name: \"sport_id\",\n value: _ctx.$route.query.sport_id,\n onChange: _cache[2] || (_cache[2] = \n//@ts-ignore\n(...args) => (_ctx.handleFilterChange && _ctx.handleFilterChange(...args)))\n }, [\n _hoisted_12,\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.translatedSports.filter((s) =>\n _ctx.authUser.sports_list.includes(s.id)\n ), (sport) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: sport.id,\n key: sport.id\n }, _toDisplayString(sport.label), 9, _hoisted_13))\n }), 128))\n ], 40, _hoisted_11)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", _hoisted_15, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DISTANCE')) + \" (km): \", 1),\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"input\", {\n name: \"distance_from\",\n type: \"number\",\n min: \"0\",\n step: \"1\",\n value: _ctx.$route.query.distance_from,\n onChange: _cache[3] || (_cache[3] = \n//@ts-ignore\n(...args) => (_ctx.handleFilterChange && _ctx.handleFilterChange(...args)))\n }, null, 40, _hoisted_17),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n name: \"distance_to\",\n type: \"number\",\n min: \"0\",\n step: \"1\",\n value: _ctx.$route.query.distance_to,\n onChange: _cache[4] || (_cache[4] = \n//@ts-ignore\n(...args) => (_ctx.handleFilterChange && _ctx.handleFilterChange(...args)))\n }, null, 40, _hoisted_18)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_19, [\n _createElementVNode(\"div\", _hoisted_20, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DURATION')) + \" (km): \", 1),\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"input\", {\n name: \"duration_from\",\n value: _ctx.$route.query.duration_from,\n onChange: _cache[5] || (_cache[5] = \n//@ts-ignore\n(...args) => (_ctx.handleFilterChange && _ctx.handleFilterChange(...args))),\n pattern: \"^([0-9]*[0-9]):([0-5][0-9])$\",\n placeholder: \"hh:mm\",\n type: \"text\"\n }, null, 40, _hoisted_22),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n name: \"duration_to\",\n value: _ctx.$route.query.duration_to,\n onChange: _cache[6] || (_cache[6] = \n//@ts-ignore\n(...args) => (_ctx.handleFilterChange && _ctx.handleFilterChange(...args))),\n pattern: \"^([0-9]*[0-9]):([0-5][0-9])$\",\n placeholder: \"hh:mm\",\n type: \"text\"\n }, null, 40, _hoisted_23)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_24, [\n _createElementVNode(\"div\", _hoisted_25, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.AVE_SPEED')) + \" (km): \", 1),\n _createElementVNode(\"div\", _hoisted_26, [\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"ave_speed_from\",\n value: _ctx.$route.query.ave_speed_from,\n onChange: _cache[7] || (_cache[7] = \n//@ts-ignore\n(...args) => (_ctx.handleFilterChange && _ctx.handleFilterChange(...args))),\n step: \"1\",\n type: \"number\"\n }, null, 40, _hoisted_27),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"ave_speed_to\",\n value: _ctx.$route.query.ave_speed_to,\n onChange: _cache[8] || (_cache[8] = \n//@ts-ignore\n(...args) => (_ctx.handleFilterChange && _ctx.handleFilterChange(...args))),\n step: \"1\",\n type: \"number\"\n }, null, 40, _hoisted_28)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_29, [\n _createElementVNode(\"div\", _hoisted_30, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.MAX_SPEED')) + \" (km): \", 1),\n _createElementVNode(\"div\", _hoisted_31, [\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"max_speed_from\",\n value: _ctx.$route.query.max_speed_from,\n onChange: _cache[9] || (_cache[9] = \n//@ts-ignore\n(...args) => (_ctx.handleFilterChange && _ctx.handleFilterChange(...args))),\n step: \"1\",\n type: \"number\"\n }, null, 40, _hoisted_32),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"max_speed_to\",\n value: _ctx.$route.query.max_speed_to,\n onChange: _cache[10] || (_cache[10] = \n//@ts-ignore\n(...args) => (_ctx.handleFilterChange && _ctx.handleFilterChange(...args))),\n step: \"1\",\n type: \"number\"\n }, null, 40, _hoisted_33)\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_34, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n onClick: _cache[11] || (_cache[11] = \n//@ts-ignore\n(...args) => (_ctx.onFilter && _ctx.onFilter(...args)))\n }, _toDisplayString(_ctx.$t('buttons.FILTER')), 1),\n _createElementVNode(\"button\", {\n class: \"confirm\",\n onClick: _cache[12] || (_cache[12] = \n//@ts-ignore\n(...args) => (_ctx.onClearFilter && _ctx.onClearFilter(...args)))\n }, _toDisplayString(_ctx.$t('buttons.CLEAR_FILTER')), 1)\n ])\n ])\n ]))\n}","\n import { computed, ComputedRef, defineComponent, PropType, watch } from 'vue'\n import { useI18n } from 'vue-i18n'\n import { LocationQuery, useRoute, useRouter } from 'vue-router'\n\n import { ISport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n import { translateSports } from '@/utils/sports'\n\n export default defineComponent({\n name: 'WorkoutsFilters',\n props: {\n authUser: {\n type: Object as PropType,\n required: true,\n },\n sports: {\n type: Object as PropType,\n required: true,\n },\n },\n emits: ['filter'],\n setup(props, { emit }) {\n const { t } = useI18n()\n const route = useRoute()\n const router = useRouter()\n\n const translatedSports: ComputedRef = computed(() =>\n translateSports(props.sports, t)\n )\n let params: LocationQuery = Object.assign({}, route.query)\n\n function handleFilterChange(event: Event & { target: HTMLInputElement }) {\n if (event.target.value === '') {\n delete params[event.target.name]\n } else {\n params[event.target.name] = event.target.value\n }\n }\n function onFilter() {\n emit('filter')\n if ('page' in params) {\n params['page'] = '1'\n }\n router.push({ path: '/workouts', query: params })\n }\n function onClearFilter() {\n emit('filter')\n router.push({ path: '/workouts', query: {} })\n }\n\n watch(\n () => route.query,\n (newQuery) => {\n params = Object.assign({}, newQuery)\n }\n )\n\n return { translatedSports, onClearFilter, onFilter, handleFilterChange }\n },\n })\n","import { render } from \"./WorkoutsFilters.vue?vue&type=template&id=cbc43e30&scoped=true&ts=true\"\nimport script from \"./WorkoutsFilters.vue?vue&type=script&lang=ts\"\nexport * from \"./WorkoutsFilters.vue?vue&type=script&lang=ts\"\n\nimport \"./WorkoutsFilters.vue?vue&type=style&index=0&id=cbc43e30&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-cbc43e30\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, createTextVNode as _createTextVNode, withCtx as _withCtx, createBlock as _createBlock, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-0144da86\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"workouts-list\" }\nconst _hoisted_2 = { class: \"total\" }\nconst _hoisted_3 = { class: \"total-label\" }\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = {\n key: 0,\n class: \"workouts-table responsive-table\"\n}\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", { class: \"sport-col\" }, null, -1))\nconst _hoisted_7 = { class: \"sport-col\" }\nconst _hoisted_8 = { class: \"cell-heading\" }\nconst _hoisted_9 = [\"onMouseover\"]\nconst _hoisted_10 = { class: \"cell-heading\" }\nconst _hoisted_11 = {\n key: 0,\n class: \"fa fa-map-o\",\n \"aria-hidden\": \"true\"\n}\nconst _hoisted_12 = { class: \"cell-heading\" }\nconst _hoisted_13 = { class: \"text-right\" }\nconst _hoisted_14 = { class: \"cell-heading\" }\nconst _hoisted_15 = { class: \"text-right\" }\nconst _hoisted_16 = { class: \"cell-heading\" }\nconst _hoisted_17 = { class: \"text-right\" }\nconst _hoisted_18 = { class: \"cell-heading\" }\nconst _hoisted_19 = { class: \"text-right\" }\nconst _hoisted_20 = { class: \"cell-heading\" }\nconst _hoisted_21 = { class: \"text-right\" }\nconst _hoisted_22 = { class: \"cell-heading\" }\nconst _hoisted_23 = { key: 0 }\nconst _hoisted_24 = { class: \"text-right\" }\nconst _hoisted_25 = { class: \"cell-heading\" }\nconst _hoisted_26 = { key: 0 }\nconst _hoisted_27 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_FilterSelects = _resolveComponent(\"FilterSelects\")!\n const _component_Pagination = _resolveComponent(\"Pagination\")!\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_StaticMap = _resolveComponent(\"StaticMap\")!\n const _component_NoWorkouts = _resolveComponent(\"NoWorkouts\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"box\", { 'empty-table': _ctx.workouts.length === 0 }])\n }, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('common.TOTAL').toLowerCase()) + \": \", 1),\n (_ctx.pagination.total !== null)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, _toDisplayString(_ctx.pagination.total) + \" \" + _toDisplayString(_ctx.$t('workouts.WORKOUT', _ctx.pagination.total)), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _createVNode(_component_FilterSelects, {\n sort: _ctx.sortList,\n order_by: _ctx.orderByList,\n query: _ctx.query,\n message: \"workouts\",\n onUpdateSelect: _ctx.reloadWorkouts\n }, null, 8, [\"sort\", \"order_by\", \"query\", \"onUpdateSelect\"]),\n (_ctx.workouts.length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createVNode(_component_Pagination, {\n class: \"top-pagination\",\n pagination: _ctx.pagination,\n path: \"/workouts\",\n query: _ctx.query\n }, null, 8, [\"pagination\", \"query\"]),\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _hoisted_6,\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.capitalize(_ctx.$t('workouts.WORKOUT', 1))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.capitalize(_ctx.$t('workouts.DATE'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.capitalize(_ctx.$t('workouts.DISTANCE'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.capitalize(_ctx.$t('workouts.DURATION'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.capitalize(_ctx.$t('workouts.AVE_SPEED'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.capitalize(_ctx.$t('workouts.MAX_SPEED'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.capitalize(_ctx.$t('workouts.ASCENT'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.capitalize(_ctx.$t('workouts.DESCENT'))), 1)\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.workouts, (workout) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: workout.id\n }, [\n _createElementVNode(\"td\", _hoisted_7, [\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('workouts.SPORT', 1)), 1),\n _createVNode(_component_SportImage, {\n title: \n _ctx.sports.filter((s) => s.id === workout.sport_id)[0]\n .translatedLabel\n ,\n \"sport-label\": \n _ctx.sports.filter((s) => s.id === workout.sport_id)[0].label\n \n }, null, 8, [\"title\", \"sport-label\"])\n ]),\n _createElementVNode(\"td\", {\n class: \"workout-title\",\n onMouseover: ($event: any) => (_ctx.onHover(workout.id)),\n onMouseleave: _cache[0] || (_cache[0] = ($event: any) => (_ctx.onHover(null)))\n }, [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.capitalize(_ctx.$t('workouts.WORKOUT', 1))), 1),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: { name: 'Workout', params: { workoutId: workout.id } }\n }, {\n default: _withCtx(() => [\n (workout.with_gpx)\n ? (_openBlock(), _createElementBlock(\"i\", _hoisted_11))\n : _createCommentVNode(\"\", true),\n _createTextVNode(\" \" + _toDisplayString(workout.title), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]),\n (workout.with_gpx && _ctx.hoverWorkoutId === workout.id)\n ? (_openBlock(), _createBlock(_component_StaticMap, {\n key: 0,\n workout: workout,\n \"display-hover\": true\n }, null, 8, [\"workout\"]))\n : _createCommentVNode(\"\", true)\n ], 40, _hoisted_9),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(_ctx.$t('workouts.DATE')), 1),\n _createTextVNode(\" \" + _toDisplayString(_ctx.format(\n _ctx.getDateWithTZ(workout.workout_date, _ctx.user.timezone),\n 'dd/MM/yyyy HH:mm'\n )), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_13, [\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.$t('workouts.DISTANCE')), 1),\n _createTextVNode(\" \" + _toDisplayString(Number(workout.distance).toFixed(2)) + \" km \", 1)\n ]),\n _createElementVNode(\"td\", _hoisted_15, [\n _createElementVNode(\"span\", _hoisted_16, _toDisplayString(_ctx.$t('workouts.DURATION')), 1),\n _createTextVNode(\" \" + _toDisplayString(workout.moving), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_17, [\n _createElementVNode(\"span\", _hoisted_18, _toDisplayString(_ctx.$t('workouts.AVE_SPEED')), 1),\n _createTextVNode(\" \" + _toDisplayString(workout.ave_speed) + \" km/h \", 1)\n ]),\n _createElementVNode(\"td\", _hoisted_19, [\n _createElementVNode(\"span\", _hoisted_20, _toDisplayString(_ctx.$t('workouts.MAX_SPEED')), 1),\n _createTextVNode(\" \" + _toDisplayString(workout.max_speed) + \" km/h \", 1)\n ]),\n _createElementVNode(\"td\", _hoisted_21, [\n _createElementVNode(\"span\", _hoisted_22, _toDisplayString(_ctx.$t('workouts.ASCENT')), 1),\n (workout.with_gpx)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_23, _toDisplayString(workout.ascent) + \" m\", 1))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"td\", _hoisted_24, [\n _createElementVNode(\"span\", _hoisted_25, _toDisplayString(_ctx.$t('workouts.DESCENT')), 1),\n (workout.with_gpx)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_26, _toDisplayString(workout.descent) + \" m\", 1))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n }), 128))\n ])\n ]),\n _createVNode(_component_Pagination, {\n pagination: _ctx.pagination,\n path: \"/workouts\",\n query: _ctx.query\n }, null, 8, [\"pagination\", \"query\"])\n ]))\n : _createCommentVNode(\"\", true)\n ], 2),\n (_ctx.workouts.length === 0)\n ? (_openBlock(), _createBlock(_component_NoWorkouts, { key: 0 }))\n : _createCommentVNode(\"\", true),\n _hoisted_27\n ]))\n}","\n import { format } from 'date-fns'\n import {\n ComputedRef,\n PropType,\n Ref,\n computed,\n defineComponent,\n ref,\n watch,\n capitalize,\n onBeforeMount,\n } from 'vue'\n import { LocationQuery, useRoute, useRouter } from 'vue-router'\n\n import FilterSelects from '@/components/Common/FilterSelects.vue'\n import Pagination from '@/components/Common/Pagination.vue'\n import StaticMap from '@/components/Common/StaticMap.vue'\n import NoWorkouts from '@/components/Workouts/NoWorkouts.vue'\n import { WORKOUTS_STORE } from '@/store/constants'\n import { IPagination } from '@/types/api'\n import { ITranslatedSport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n import { IWorkout, TWorkoutsPayload } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { getQuery, sortList, workoutsPayloadKeys } from '@/utils/api'\n import { getDateWithTZ } from '@/utils/dates'\n import { defaultOrder } from '@/utils/workouts'\n\n export default defineComponent({\n name: 'WorkoutsList',\n components: {\n FilterSelects,\n NoWorkouts,\n Pagination,\n StaticMap,\n },\n props: {\n user: {\n type: Object as PropType,\n required: true,\n },\n sports: {\n type: Object as PropType,\n },\n },\n setup() {\n const store = useStore()\n const route = useRoute()\n const router = useRouter()\n\n const orderByList: string[] = [\n 'ave_speed',\n 'distance',\n 'duration',\n 'workout_date',\n ]\n const workouts: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.USER_WORKOUTS]\n )\n const pagination: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUTS_PAGINATION]\n )\n let query: TWorkoutsPayload = getWorkoutsQuery(route.query)\n const hoverWorkoutId: Ref = ref(null)\n\n onBeforeMount(() => {\n loadWorkouts(query)\n })\n\n function loadWorkouts(payload: TWorkoutsPayload) {\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_USER_WORKOUTS, payload)\n }\n function reloadWorkouts(queryParam: string, queryValue: string) {\n const newQuery: LocationQuery = Object.assign({}, route.query)\n newQuery[queryParam] = queryValue\n if (queryParam === 'per_page') {\n newQuery['page'] = '1'\n }\n query = getWorkoutsQuery(newQuery)\n router.push({ path: '/workouts', query })\n }\n\n function getWorkoutsQuery(newQuery: LocationQuery): TWorkoutsPayload {\n query = getQuery(newQuery, orderByList, defaultOrder.order_by, {\n defaultSort: defaultOrder.order,\n })\n Object.keys(newQuery)\n .filter((k) => workoutsPayloadKeys.includes(k))\n .map((k) => {\n if (typeof newQuery[k] === 'string') {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n query[k] = newQuery[k]\n }\n })\n return query\n }\n\n function onHover(workoutId: string | null) {\n hoverWorkoutId.value = workoutId\n }\n\n watch(\n () => route.query,\n async (newQuery) => {\n query = getWorkoutsQuery(newQuery)\n loadWorkouts(query)\n }\n )\n\n return {\n query,\n hoverWorkoutId,\n orderByList,\n pagination,\n sortList,\n workouts,\n capitalize,\n format,\n getDateWithTZ,\n onHover,\n reloadWorkouts,\n }\n },\n })\n","import { render } from \"./WorkoutsList.vue?vue&type=template&id=0144da86&scoped=true&ts=true\"\nimport script from \"./WorkoutsList.vue?vue&type=script&lang=ts\"\nexport * from \"./WorkoutsList.vue?vue&type=script&lang=ts\"\n\nimport \"./WorkoutsList.vue?vue&type=style&index=0&id=0144da86&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0144da86\"]])\n\nexport default __exports__","\n import { ComputedRef, computed, defineComponent, ref } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import WorkoutsFilters from '@/components/Workouts/WorkoutsFilters.vue'\n import WorkoutsList from '@/components/Workouts/WorkoutsList.vue'\n import { AUTH_USER_STORE, SPORTS_STORE } from '@/store/constants'\n import { ISport, ITranslatedSport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { translateSports } from '@/utils/sports'\n\n export default defineComponent({\n name: 'WorkoutsView',\n components: {\n WorkoutsFilters,\n WorkoutsList,\n },\n setup() {\n const { t } = useI18n()\n const store = useStore()\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const translatedSports: ComputedRef = computed(() =>\n translateSports(sports.value, t)\n )\n const hiddenFilters = ref(true)\n\n function toggleFilters() {\n hiddenFilters.value = !hiddenFilters.value\n }\n\n return {\n authUser,\n hiddenFilters,\n translatedSports,\n toggleFilters,\n }\n },\n })\n","import { render } from \"./WorkoutsView.vue?vue&type=template&id=22a8a7cd&scoped=true&ts=true\"\nimport script from \"./WorkoutsView.vue?vue&type=script&lang=ts\"\nexport * from \"./WorkoutsView.vue?vue&type=script&lang=ts\"\n\nimport \"./WorkoutsView.vue?vue&type=style&index=0&id=22a8a7cd&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-22a8a7cd\"]])\n\nexport default __exports__","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./WorkoutMap.vue?vue&type=style&index=0&id=76f3a2e8&lang=scss&scoped=true\"","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-05bdbd04\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"workout\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"workout-container\"\n}\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\nconst _hoisted_6 = { key: 1 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_WorkoutDetail = _resolveComponent(\"WorkoutDetail\")!\n const _component_WorkoutChart = _resolveComponent(\"WorkoutChart\")!\n const _component_WorkoutSegments = _resolveComponent(\"WorkoutSegments\")!\n const _component_WorkoutNotes = _resolveComponent(\"WorkoutNotes\")!\n const _component_NotFound = _resolveComponent(\"NotFound\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_ctx.sports.length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_ctx.workoutData.workout.id)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createVNode(_component_WorkoutDetail, {\n workoutData: _ctx.workoutData,\n sports: _ctx.sports,\n authUser: _ctx.authUser,\n markerCoordinates: _ctx.markerCoordinates,\n displaySegment: _ctx.displaySegment\n }, null, 8, [\"workoutData\", \"sports\", \"authUser\", \"markerCoordinates\", \"displaySegment\"]),\n (\n _ctx.workoutData.workout.with_gpx && _ctx.workoutData.chartData.length > 0\n )\n ? (_openBlock(), _createBlock(_component_WorkoutChart, {\n key: 0,\n workoutData: _ctx.workoutData,\n authUser: _ctx.authUser,\n displaySegment: _ctx.displaySegment,\n onGetCoordinates: _ctx.updateCoordinates\n }, null, 8, [\"workoutData\", \"authUser\", \"displaySegment\", \"onGetCoordinates\"]))\n : _createCommentVNode(\"\", true),\n (!_ctx.displaySegment && _ctx.workoutData.workout.segments.length > 1)\n ? (_openBlock(), _createBlock(_component_WorkoutSegments, {\n key: 1,\n segments: _ctx.workoutData.workout.segments\n }, null, 8, [\"segments\"]))\n : _createCommentVNode(\"\", true),\n (!_ctx.displaySegment)\n ? (_openBlock(), _createBlock(_component_WorkoutNotes, {\n key: 2,\n notes: _ctx.workoutData.workout.notes\n }, null, 8, [\"notes\"]))\n : _createCommentVNode(\"\", true),\n _hoisted_5\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n (!_ctx.workoutData.loading)\n ? (_openBlock(), _createBlock(_component_NotFound, {\n key: 0,\n target: \"WORKOUT\"\n }))\n : _createCommentVNode(\"\", true)\n ]))\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, mergeProps as _mergeProps, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2230775e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-chart\" }\nconst _hoisted_2 = { class: \"chart-radio\" }\nconst _hoisted_3 = [\"checked\"]\nconst _hoisted_4 = [\"checked\"]\nconst _hoisted_5 = { class: \"no-data-cleaning\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_LineChart = _resolveComponent(\"LineChart\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.ANALYSIS')), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"distance\",\n checked: _ctx.displayDistance,\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayDistance && _ctx.updateDisplayDistance(...args)))\n }, null, 8, _hoisted_3),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DISTANCE')), 1)\n ]),\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"duration\",\n checked: !_ctx.displayDistance,\n onClick: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayDistance && _ctx.updateDisplayDistance(...args)))\n }, null, 8, _hoisted_4),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DURATION')), 1)\n ])\n ]),\n _createVNode(_component_LineChart, _mergeProps(_ctx.lineChartProps, {\n class: \"line-chart\",\n onMouseleave: _ctx.emitEmptyCoordinates\n }), null, 16, [\"onMouseleave\"]),\n _createElementVNode(\"div\", _hoisted_5, _toDisplayString(_ctx.$t('workouts.NO_DATA_CLEANING')), 1)\n ]),\n _: 1\n })\n ]))\n}","\n import { ChartData, ChartOptions } from 'chart.js'\n import { ComputedRef, PropType, computed, defineComponent, ref } from 'vue'\n import { LineChart, useLineChart } from 'vue-chart-3'\n import { useI18n } from 'vue-i18n'\n\n import { IUserProfile } from '@/types/user'\n import {\n IWorkoutChartData,\n IWorkoutData,\n TCoordinates,\n } from '@/types/workouts'\n import { getDatasets } from '@/utils/workouts'\n\n export default defineComponent({\n name: 'WorkoutChart',\n components: {\n LineChart,\n },\n props: {\n authUser: {\n type: Object as PropType,\n required: true,\n },\n workoutData: {\n type: Object as PropType,\n required: true,\n },\n },\n emits: ['getCoordinates'],\n setup(props, { emit }) {\n const { t } = useI18n()\n\n let displayDistance = ref(true)\n const datasets: ComputedRef = computed(() =>\n getDatasets(props.workoutData.chartData, t)\n )\n let chartData: ComputedRef> = computed(() => ({\n labels: displayDistance.value\n ? datasets.value.distance_labels\n : datasets.value.duration_labels,\n datasets: JSON.parse(\n JSON.stringify([\n datasets.value.datasets.speed,\n datasets.value.datasets.elevation,\n ])\n ),\n }))\n const coordinates: ComputedRef = computed(\n () => datasets.value.coordinates\n )\n const options = computed>(() => ({\n responsive: true,\n maintainAspectRatio: true,\n animation: false,\n layout: {\n padding: {\n top: 22,\n },\n },\n scales: {\n [displayDistance.value ? 'xDistance' : 'xDuration']: {\n grid: {\n drawOnChartArea: false,\n },\n ticks: {\n count: 10,\n callback: function (value) {\n return displayDistance.value\n ? Number(value).toFixed(2)\n : formatDuration(value)\n },\n },\n type: 'linear',\n bounds: 'data',\n title: {\n display: true,\n text: displayDistance.value\n ? t('workouts.DISTANCE') + ' (km)'\n : t('workouts.DURATION'),\n },\n },\n ySpeed: {\n grid: {\n drawOnChartArea: false,\n },\n position: 'left',\n title: {\n display: true,\n text: t('workouts.SPEED') + ' (km/h)',\n },\n },\n yElevation: {\n beginAtZero: true,\n grid: {\n drawOnChartArea: false,\n },\n position: 'right',\n title: {\n display: true,\n text: t('workouts.ELEVATION') + ' (m)',\n },\n },\n },\n elements: {\n point: {\n pointStyle: 'circle',\n pointRadius: 0,\n },\n },\n plugins: {\n datalabels: {\n display: false,\n },\n tooltip: {\n interaction: {\n intersect: false,\n mode: 'index',\n },\n callbacks: {\n label: function (context) {\n const label = ` ${context.dataset.label}: ${context.formattedValue}`\n return context.dataset.yAxisID === 'yElevation'\n ? label + ' m'\n : label + ' km/h'\n },\n title: function (tooltipItems) {\n if (tooltipItems.length > 0) {\n emitCoordinates(coordinates.value[tooltipItems[0].dataIndex])\n }\n return tooltipItems.length === 0\n ? ''\n : displayDistance.value\n ? `${t('workouts.DISTANCE')}: ${tooltipItems[0].label} km`\n : `${t('workouts.DURATION')}: ${formatDuration(\n tooltipItems[0].label.replace(',', '')\n )}`\n },\n },\n },\n },\n }))\n\n function updateDisplayDistance() {\n displayDistance.value = !displayDistance.value\n }\n function formatDuration(duration: string | number): string {\n return new Date(+duration * 1000).toISOString().substr(11, 8)\n }\n function emitCoordinates(coordinates: TCoordinates) {\n emit('getCoordinates', coordinates)\n }\n function emitEmptyCoordinates() {\n emitCoordinates({ latitude: null, longitude: null })\n }\n\n const { lineChartProps } = useLineChart({\n chartData,\n options,\n })\n return {\n displayDistance,\n lineChartProps,\n emitEmptyCoordinates,\n updateDisplayDistance,\n }\n },\n })\n","import { render } from \"./WorkoutChart.vue?vue&type=template&id=2230775e&scoped=true&ts=true\"\nimport script from \"./WorkoutChart.vue?vue&type=script&lang=ts\"\nexport * from \"./WorkoutChart.vue?vue&type=script&lang=ts\"\n\nimport \"./WorkoutChart.vue?vue&type=style&index=0&id=2230775e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2230775e\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, withCtx as _withCtx, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-a17554ea\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"workout-detail\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Modal = _resolveComponent(\"Modal\")!\n const _component_WorkoutCardTitle = _resolveComponent(\"WorkoutCardTitle\")!\n const _component_WorkoutMap = _resolveComponent(\"WorkoutMap\")!\n const _component_WorkoutData = _resolveComponent(\"WorkoutData\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.displayModal)\n ? (_openBlock(), _createBlock(_component_Modal, {\n key: 0,\n title: _ctx.$t('common.CONFIRMATION'),\n message: _ctx.$t('workouts.WORKOUT_DELETION_CONFIRMATION'),\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (_ctx.deleteWorkout(_ctx.workoutObject.workoutId))),\n onCancelAction: _cache[1] || (_cache[1] = ($event: any) => (_ctx.updateDisplayModal(false)))\n }, null, 8, [\"title\", \"message\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createVNode(_component_WorkoutCardTitle, {\n sport: _ctx.sport,\n workoutObject: _ctx.workoutObject,\n onDisplayModal: _cache[2] || (_cache[2] = ($event: any) => (_ctx.updateDisplayModal(true)))\n }, null, 8, [\"sport\", \"workoutObject\"])\n ]),\n content: _withCtx(() => [\n _createVNode(_component_WorkoutMap, {\n workoutData: _ctx.workoutData,\n markerCoordinates: _ctx.markerCoordinates\n }, null, 8, [\"workoutData\", \"markerCoordinates\"]),\n _createVNode(_component_WorkoutData, { workoutObject: _ctx.workoutObject }, null, 8, [\"workoutObject\"])\n ]),\n _: 1\n })\n ]))\n}","import { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9cab340c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-card-title\" }\nconst _hoisted_2 = [\"title\"]\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-left\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = [\n _hoisted_3\n]\nconst _hoisted_5 = { class: \"workout-card-title\" }\nconst _hoisted_6 = { class: \"workout-title-date\" }\nconst _hoisted_7 = {\n key: 0,\n class: \"workout-title\"\n}\nconst _hoisted_8 = {\n key: 1,\n class: \"workout-title\"\n}\nconst _hoisted_9 = { class: \"workout-segment\" }\nconst _hoisted_10 = /*#__PURE__*/_createTextVNode(\" — \")\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-map-marker\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_12 = { class: \"workout-date\" }\nconst _hoisted_13 = { class: \"workout-link\" }\nconst _hoisted_14 = [\"title\"]\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-right\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_16 = [\n _hoisted_15\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"workout-previous workout-arrow\", { inactive: !_ctx.workoutObject.previousUrl }]),\n title: \n _ctx.workoutObject.previousUrl\n ? _ctx.$t(`workouts.PREVIOUS_${_ctx.workoutObject.type}`)\n : _ctx.$t(`workouts.NO_PREVIOUS_${_ctx.workoutObject.type}`)\n ,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (\n _ctx.workoutObject.previousUrl\n ? _ctx.$router.push(_ctx.workoutObject.previousUrl)\n : null\n ))\n }, _hoisted_4, 10, _hoisted_2),\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(_component_SportImage, {\n \"sport-label\": _ctx.sport.label\n }, null, 8, [\"sport-label\"]),\n _createElementVNode(\"div\", _hoisted_6, [\n (_ctx.workoutObject.type === 'WORKOUT')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _createTextVNode(_toDisplayString(_ctx.workoutObject.title) + \" \", 1),\n _createElementVNode(\"i\", {\n class: \"fa fa-edit\",\n \"aria-hidden\": \"true\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (\n _ctx.$router.push({\n name: 'EditWorkout',\n params: { workoutId: _ctx.workoutObject.workoutId },\n })\n ))\n }),\n _createElementVNode(\"i\", {\n class: \"fa fa-trash\",\n \"aria-hidden\": \"true\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.emit('displayModal', true)))\n })\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createTextVNode(_toDisplayString(_ctx.workoutObject.title) + \" \", 1),\n _createElementVNode(\"span\", _hoisted_9, [\n _hoisted_10,\n _hoisted_11,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.SEGMENT')) + \" \" + _toDisplayString(_ctx.workoutObject.segmentId + 1), 1)\n ])\n ])),\n _createElementVNode(\"div\", _hoisted_12, [\n _createTextVNode(_toDisplayString(_ctx.workoutObject.workoutDate) + \" - \" + _toDisplayString(_ctx.workoutObject.workoutTime) + \" \", 1),\n _createElementVNode(\"span\", _hoisted_13, [\n (_ctx.workoutObject.type === 'SEGMENT')\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n to: {\n name: 'Workout',\n params: { workoutId: _ctx.workoutObject.workoutId },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" > \" + _toDisplayString(_ctx.$t('workouts.BACK_TO_WORKOUT')), 1)\n ]),\n _: 1\n }, 8, [\"to\"]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"workout-next workout-arrow\", { inactive: !_ctx.workoutObject.nextUrl }]),\n title: \n _ctx.workoutObject.nextUrl\n ? _ctx.$t(`workouts.NEXT_${_ctx.workoutObject.type}`)\n : _ctx.$t(`workouts.NO_NEXT_${_ctx.workoutObject.type}`)\n ,\n onClick: _cache[3] || (_cache[3] = ($event: any) => (\n _ctx.workoutObject.nextUrl ? _ctx.$router.push(_ctx.workoutObject.nextUrl) : null\n ))\n }, _hoisted_16, 10, _hoisted_14)\n ]))\n}","\n import { PropType, defineComponent } from 'vue'\n\n import { ISport } from '@/types/sports'\n import { IWorkoutObject } from '@/types/workouts'\n\n export default defineComponent({\n name: 'WorkoutCardTitle',\n props: {\n sport: {\n type: Object as PropType,\n required: true,\n },\n workoutObject: {\n type: Object as PropType,\n required: true,\n },\n },\n emits: ['displayModal'],\n setup(props, { emit }) {\n return { emit }\n },\n })\n","import { render } from \"./WorkoutCardTitle.vue?vue&type=template&id=9cab340c&scoped=true&ts=true\"\nimport script from \"./WorkoutCardTitle.vue?vue&type=script&lang=ts\"\nexport * from \"./WorkoutCardTitle.vue?vue&type=script&lang=ts\"\n\nimport \"./WorkoutCardTitle.vue?vue&type=style&index=0&id=9cab340c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-9cab340c\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-aa863bde\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-info\" }\nconst _hoisted_2 = { class: \"workout-data\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-clock-o\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = { class: \"workout-data\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-road\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_7 = { class: \"workout-data\" }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-tachometer\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_10 = {\n key: 0,\n class: \"workout-data\"\n}\nconst _hoisted_11 = [\"alt\"]\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_13 = {\n key: 1,\n class: \"workout-data\"\n}\nconst _hoisted_14 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-location-arrow\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_WorkoutRecord = _resolveComponent(\"WorkoutRecord\")!\n const _component_WorkoutWeather = _resolveComponent(\"WorkoutWeather\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DURATION')) + \": \", 1),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.workoutObject.moving), 1),\n _createVNode(_component_WorkoutRecord, {\n workoutObject: _ctx.workoutObject,\n record_type: \"LD\"\n }, null, 8, [\"workoutObject\"]),\n (_ctx.withPause)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createTextVNode(\" (\" + _toDisplayString(_ctx.$t('workouts.PAUSES')) + \": \", 1),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.workoutObject.pauses), 1),\n _createTextVNode(\" - \" + _toDisplayString(_ctx.$t('workouts.TOTAL_DURATION')) + \": \", 1),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.workoutObject.duration) + \")\", 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n _hoisted_6,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DISTANCE')) + \": \", 1),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.workoutObject.distance) + \" km\", 1),\n _createVNode(_component_WorkoutRecord, {\n workoutObject: _ctx.workoutObject,\n record_type: \"FD\"\n }, null, 8, [\"workoutObject\"])\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _hoisted_8,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.AVERAGE_SPEED')) + \": \", 1),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.workoutObject.aveSpeed) + \" km/h\", 1),\n _createVNode(_component_WorkoutRecord, {\n workoutObject: _ctx.workoutObject,\n record_type: \"AS\"\n }, null, 8, [\"workoutObject\"]),\n _hoisted_9,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.MAX_SPEED')) + \": \", 1),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.workoutObject.maxSpeed) + \" km/h\", 1),\n _createVNode(_component_WorkoutRecord, {\n workoutObject: _ctx.workoutObject,\n record_type: \"MS\"\n }, null, 8, [\"workoutObject\"])\n ]),\n (_ctx.workoutObject.maxAlt !== null && _ctx.workoutObject.minAlt !== null)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [\n _createElementVNode(\"img\", {\n class: \"mountains\",\n src: \"/img/workouts/mountains.svg\",\n alt: _ctx.$t('workouts.ELEVATION')\n }, null, 8, _hoisted_11),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.MIN_ALTITUDE')) + \": \", 1),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.workoutObject.minAlt) + \" m\", 1),\n _hoisted_12,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.MAX_ALTITUDE')) + \": \", 1),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.workoutObject.maxAlt) + \" m\", 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.workoutObject.ascent !== null && _ctx.workoutObject.descent !== null)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _hoisted_14,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.ASCENT')) + \": \", 1),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.workoutObject.ascent) + \" m\", 1),\n _hoisted_15,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DESCENT')) + \": \", 1),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.workoutObject.descent) + \" m\", 1)\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_WorkoutWeather, { workoutObject: _ctx.workoutObject }, null, 8, [\"workoutObject\"])\n ]))\n}","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-da96984c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"workout-record\"\n}\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"sup\", null, [\n /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-trophy\",\n \"aria-hidden\": \"true\"\n })\n], -1))\nconst _hoisted_3 = [\n _hoisted_2\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (\n _ctx.workoutObject.records &&\n _ctx.workoutObject.records.find((record) => record.record_type === _ctx.record_type)\n )\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_1, _hoisted_3))\n : _createCommentVNode(\"\", true)\n}","\n import { defineComponent, PropType } from 'vue'\n\n import { IWorkoutObject } from '@/types/workouts'\n\n export default defineComponent({\n name: 'WorkoutRecord',\n props: {\n record_type: {\n type: String,\n required: true,\n },\n workoutObject: {\n type: Object as PropType,\n required: true,\n },\n },\n })\n","import { render } from \"./WorkoutRecord.vue?vue&type=template&id=da96984c&scoped=true&ts=true\"\nimport script from \"./WorkoutRecord.vue?vue&type=script&lang=ts\"\nexport * from \"./WorkoutRecord.vue?vue&type=script&lang=ts\"\n\nimport \"./WorkoutRecord.vue?vue&type=style&index=0&id=da96984c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-da96984c\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-7eb41918\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"workout-weather\"\n}\nconst _hoisted_2 = { class: \"weather-table\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, null, -1))\nconst _hoisted_4 = { class: \"weather-th\" }\nconst _hoisted_5 = [\"src\", \"alt\", \"title\"]\nconst _hoisted_6 = { class: \"weather-th\" }\nconst _hoisted_7 = [\"src\", \"alt\", \"title\"]\nconst _hoisted_8 = [\"alt\", \"title\"]\nconst _hoisted_9 = [\"alt\", \"title\"]\nconst _hoisted_10 = [\"alt\", \"title\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_ctx.workoutObject.weatherStart && _ctx.workoutObject.weatherEnd)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"table\", _hoisted_2, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _hoisted_3,\n _createElementVNode(\"th\", null, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.START')) + \" \", 1),\n _createElementVNode(\"img\", {\n class: \"weather-img\",\n src: `/img/weather/${_ctx.workoutObject.weatherStart.icon}.svg`,\n alt: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_ctx.workoutObject.weatherStart.icon}`\n )\n ,\n title: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_ctx.workoutObject.weatherStart.icon}`\n )\n \n }, null, 8, _hoisted_5)\n ])\n ]),\n _createElementVNode(\"th\", null, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.END')) + \" \", 1),\n _createElementVNode(\"img\", {\n class: \"weather-img\",\n src: `/img/weather/${_ctx.workoutObject.weatherEnd.icon}.svg`,\n alt: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_ctx.workoutObject.weatherEnd.icon}`\n )\n ,\n title: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_ctx.workoutObject.weatherEnd.icon}`\n )\n \n }, null, 8, _hoisted_7)\n ])\n ])\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"img\", {\n class: \"weather-img weather-img-small\",\n src: \"/img/weather/temperature.svg\",\n alt: _ctx.$t(`workouts.WEATHER.TEMPERATURE`),\n title: _ctx.$t(`workouts.WEATHER.TEMPERATURE`)\n }, null, 8, _hoisted_8)\n ]),\n _createElementVNode(\"td\", null, _toDisplayString(Number(_ctx.workoutObject.weatherStart.temperature).toFixed(1)) + \"°C \", 1),\n _createElementVNode(\"td\", null, _toDisplayString(Number(_ctx.workoutObject.weatherEnd.temperature).toFixed(1)) + \"°C \", 1)\n ]),\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"img\", {\n class: \"weather-img weather-img-small\",\n src: \"/img/weather/pour-rain.svg\",\n alt: _ctx.$t(`workouts.WEATHER.HUMIDITY`),\n title: _ctx.$t(`workouts.WEATHER.HUMIDITY`)\n }, null, 8, _hoisted_9)\n ]),\n _createElementVNode(\"td\", null, _toDisplayString(Number(_ctx.workoutObject.weatherStart.humidity * 100).toFixed(1)) + \"% \", 1),\n _createElementVNode(\"td\", null, _toDisplayString(Number(_ctx.workoutObject.weatherEnd.humidity * 100).toFixed(1)) + \"% \", 1)\n ]),\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"img\", {\n class: \"weather-img weather-img-small\",\n src: \"/img/weather/breeze.svg\",\n alt: _ctx.$t(`workouts.WEATHER.WIND`),\n title: _ctx.$t(`workouts.WEATHER.WIND`)\n }, null, 8, _hoisted_10)\n ]),\n _createElementVNode(\"td\", null, _toDisplayString(Number(_ctx.workoutObject.weatherStart.wind).toFixed(1)) + \"m/s\", 1),\n _createElementVNode(\"td\", null, _toDisplayString(Number(_ctx.workoutObject.weatherEnd.wind).toFixed(1)) + \"m/s\", 1)\n ])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}","\n import { defineComponent, PropType } from 'vue'\n\n import { IWorkoutObject } from '@/types/workouts'\n\n export default defineComponent({\n name: 'WorkoutWeather',\n props: {\n workoutObject: {\n type: Object as PropType,\n required: true,\n },\n },\n })\n","import { render } from \"./WorkoutWeather.vue?vue&type=template&id=7eb41918&scoped=true&ts=true\"\nimport script from \"./WorkoutWeather.vue?vue&type=script&lang=ts\"\nexport * from \"./WorkoutWeather.vue?vue&type=script&lang=ts\"\n\nimport \"./WorkoutWeather.vue?vue&type=style&index=0&id=7eb41918&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7eb41918\"]])\n\nexport default __exports__","\n import { PropType, computed, defineComponent } from 'vue'\n\n import WorkoutRecord from '@/components/Workout/WorkoutDetail/WorkoutRecord.vue'\n import WorkoutWeather from '@/components/Workout/WorkoutDetail/WorkoutWeather.vue'\n import { IWorkoutObject } from '@/types/workouts'\n\n export default defineComponent({\n name: 'WorkoutData',\n components: {\n WorkoutRecord,\n WorkoutWeather,\n },\n props: {\n workoutObject: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n return {\n withPause: computed(\n () =>\n props.workoutObject.pauses !== '0:00:00' &&\n props.workoutObject.pauses !== null\n ),\n }\n },\n })\n","import { render } from \"./WorkoutData.vue?vue&type=template&id=aa863bde&scoped=true&ts=true\"\nimport script from \"./WorkoutData.vue?vue&type=script&lang=ts\"\nexport * from \"./WorkoutData.vue?vue&type=script&lang=ts\"\n\nimport \"./WorkoutData.vue?vue&type=style&index=0&id=aa863bde&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-aa863bde\"]])\n\nexport default __exports__","import { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createBlock as _createBlock, withCtx as _withCtx, toDisplayString as _toDisplayString, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-76f3a2e8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-map\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"leaflet-container\"\n}\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = {\n key: 0,\n class: \"leaflet-container\"\n}\nconst _hoisted_5 = {\n key: 1,\n class: \"no-map\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_LTileLayer = _resolveComponent(\"LTileLayer\")!\n const _component_LGeoJson = _resolveComponent(\"LGeoJson\")!\n const _component_LMarker = _resolveComponent(\"LMarker\")!\n const _component_LMap = _resolveComponent(\"LMap\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.workoutData.loading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_ctx.workoutData.workout.with_gpx)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n (_ctx.geoJson.jsonData && _ctx.center && _ctx.bounds.length === 2)\n ? (_openBlock(), _createBlock(_component_LMap, {\n key: 0,\n zoom: 13,\n center: _ctx.center,\n bounds: _ctx.bounds,\n ref: \"workoutMap\",\n onReady: _cache[0] || (_cache[0] = ($event: any) => (_ctx.fitBounds(_ctx.bounds)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_LTileLayer, {\n url: `${_ctx.getApiUrl()}workouts/map_tile/{s}/{z}/{x}/{y}.png`,\n attribution: _ctx.appConfig.map_attribution,\n bounds: _ctx.bounds\n }, null, 8, [\"url\", \"attribution\", \"bounds\"]),\n _createVNode(_component_LGeoJson, {\n geojson: _ctx.geoJson.jsonData\n }, null, 8, [\"geojson\"]),\n (_ctx.markerCoordinates.latitude)\n ? (_openBlock(), _createBlock(_component_LMarker, {\n key: 0,\n \"lat-lng\": [_ctx.markerCoordinates.latitude, _ctx.markerCoordinates.longitude]\n }, null, 8, [\"lat-lng\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"center\", \"bounds\"]))\n : _createCommentVNode(\"\", true)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_5, _toDisplayString(_ctx.$t('workouts.NO_MAP')), 1))\n ]))\n ]))\n}","\n import { gpx } from '@tmcw/togeojson'\n import { LGeoJson, LMap, LMarker, LTileLayer } from '@vue-leaflet/vue-leaflet'\n import { ComputedRef, PropType, computed, defineComponent, ref } from 'vue'\n\n import { ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { GeoJSONData } from '@/types/geojson'\n import { IWorkoutData, TCoordinates } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { getApiUrl } from '@/utils'\n\n export default defineComponent({\n name: 'WorkoutMap',\n components: {\n LGeoJson,\n LMap,\n LMarker,\n LTileLayer,\n },\n props: {\n workoutData: {\n type: Object as PropType,\n },\n markerCoordinates: {\n type: Object as PropType,\n required: false,\n },\n },\n setup(props) {\n const store = useStore()\n\n function getGeoJson(gpxContent: string): GeoJSONData {\n if (!gpxContent || gpxContent !== '') {\n try {\n const jsonData = gpx(\n new DOMParser().parseFromString(gpxContent, 'text/xml')\n )\n return { jsonData }\n } catch (e) {\n console.error('Invalid gpx content')\n return {}\n }\n }\n return {}\n }\n function getCenter(bounds: ComputedRef): number[] {\n return [\n (bounds.value[0][0] + bounds.value[1][0]) / 2,\n (bounds.value[0][1] + bounds.value[1][1]) / 2,\n ]\n }\n function fitBounds(bounds: number[][]) {\n if (workoutMap.value?.leafletObject) {\n workoutMap.value?.leafletObject.fitBounds(bounds)\n }\n }\n\n const workoutMap = ref null }\n }>(null)\n const bounds = computed(() =>\n props.workoutData\n ? [\n [\n props.workoutData.workout.bounds[0],\n props.workoutData.workout.bounds[1],\n ],\n [\n props.workoutData.workout.bounds[2],\n props.workoutData.workout.bounds[3],\n ],\n ]\n : []\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const center = computed(() => getCenter(bounds))\n const geoJson = computed(() =>\n props.workoutData && props.workoutData.gpx\n ? getGeoJson(props.workoutData.gpx)\n : {}\n )\n\n return {\n appConfig,\n bounds,\n center,\n geoJson,\n workoutMap,\n fitBounds,\n getApiUrl,\n }\n },\n })\n","import { render } from \"./WorkoutMap.vue?vue&type=template&id=76f3a2e8&scoped=true&ts=true\"\nimport script from \"./WorkoutMap.vue?vue&type=script&lang=ts\"\nexport * from \"./WorkoutMap.vue?vue&type=script&lang=ts\"\n\nimport \"./WorkoutMap.vue?vue&type=style&index=0&id=76f3a2e8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-76f3a2e8\"]])\n\nexport default __exports__","\n import {\n ComputedRef,\n PropType,\n Ref,\n computed,\n defineComponent,\n ref,\n watch,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import WorkoutCardTitle from '@/components/Workout/WorkoutDetail/WorkoutCardTitle.vue'\n import WorkoutData from '@/components/Workout/WorkoutDetail/WorkoutData.vue'\n import WorkoutMap from '@/components/Workout/WorkoutDetail/WorkoutMap.vue'\n import { WORKOUTS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n import {\n IWorkout,\n IWorkoutData,\n IWorkoutObject,\n IWorkoutSegment,\n TCoordinates,\n } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { formatWorkoutDate, getDateWithTZ } from '@/utils/dates'\n\n export default defineComponent({\n name: 'WorkoutDetail',\n components: {\n WorkoutCardTitle,\n WorkoutData,\n WorkoutMap,\n },\n props: {\n authUser: {\n type: Object as PropType,\n required: true,\n },\n displaySegment: {\n type: Boolean,\n required: true,\n },\n markerCoordinates: {\n type: Object as PropType,\n required: false,\n },\n sports: {\n type: Object as PropType,\n },\n workoutData: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n const route = useRoute()\n const store = useStore()\n\n function getWorkoutObjectUrl(\n workout: IWorkout,\n displaySegment: boolean,\n segmentId: number | null\n ): Record {\n const previousUrl =\n displaySegment && segmentId && segmentId !== 1\n ? `/workouts/${workout.id}/segment/${segmentId - 1}`\n : !displaySegment && workout.previous_workout\n ? `/workouts/${workout.previous_workout}`\n : null\n const nextUrl =\n displaySegment && segmentId && segmentId < workout.segments.length\n ? `/workouts/${workout.id}/segment/${segmentId + 1}`\n : !displaySegment && workout.next_workout\n ? `/workouts/${workout.next_workout}`\n : null\n return {\n previousUrl,\n nextUrl,\n }\n }\n function getWorkoutObject(\n workout: IWorkout,\n segment: IWorkoutSegment | null\n ): IWorkoutObject {\n const urls = getWorkoutObjectUrl(\n workout,\n props.displaySegment,\n segmentId.value ? +segmentId.value : null\n )\n const workoutDate = formatWorkoutDate(\n getDateWithTZ(\n props.workoutData.workout.workout_date,\n props.authUser.timezone\n )\n )\n return {\n ascent: segment ? segment.ascent : workout.ascent,\n aveSpeed: segment ? segment.ave_speed : workout.ave_speed,\n distance: segment ? segment.distance : workout.distance,\n descent: segment ? segment.descent : workout.descent,\n duration: segment ? segment.duration : workout.duration,\n maxAlt: segment ? segment.max_alt : workout.max_alt,\n maxSpeed: segment ? segment.max_speed : workout.max_speed,\n minAlt: segment ? segment.min_alt : workout.min_alt,\n moving: segment ? segment.moving : workout.moving,\n nextUrl: urls.nextUrl,\n pauses: segment ? segment.pauses : workout.pauses,\n previousUrl: urls.previousUrl,\n records: segment ? [] : workout.records,\n segmentId: segment ? segment.segment_id : null,\n title: workout.title,\n type: props.displaySegment ? 'SEGMENT' : 'WORKOUT',\n workoutDate: workoutDate.workout_date,\n weatherEnd: segment ? null : workout.weather_end,\n workoutId: workout.id,\n weatherStart: segment ? null : workout.weather_start,\n workoutTime: workoutDate.workout_time,\n }\n }\n function updateDisplayModal(value: boolean) {\n displayModal.value = value\n }\n function deleteWorkout(workoutId: string) {\n store.dispatch(WORKOUTS_STORE.ACTIONS.DELETE_WORKOUT, {\n workoutId: workoutId,\n })\n }\n\n const workout: ComputedRef = computed(\n () => props.workoutData.workout\n )\n let segmentId: Ref = ref(\n route.params.workoutId ? +route.params.segmentId : null\n )\n const segment: ComputedRef = computed(() =>\n workout.value.segments.length > 0 && segmentId.value\n ? workout.value.segments[+segmentId.value - 1]\n : null\n )\n let displayModal: Ref = ref(false)\n\n watch(\n () => route.params.segmentId,\n async (newSegmentId) => {\n if (newSegmentId) {\n segmentId.value = +newSegmentId\n }\n }\n )\n\n return {\n sport: computed(() =>\n props.sports\n ? props.sports.find(\n (sport) => sport.id === props.workoutData.workout.sport_id\n )\n : {}\n ),\n workoutObject: computed(() =>\n getWorkoutObject(workout.value, segment.value)\n ),\n displayModal,\n deleteWorkout,\n updateDisplayModal,\n }\n },\n })\n","import { render } from \"./index.vue?vue&type=template&id=a17554ea&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=a17554ea&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-a17554ea\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5c47d30a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-note\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.NOTES')), 1)\n ]),\n content: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.notes && _ctx.notes !== '' ? _ctx.notes : _ctx.$t('workouts.NO_NOTES')), 1)\n ]),\n _: 1\n })\n ]))\n}","\n import { defineComponent } from 'vue'\n\n export default defineComponent({\n name: 'WorkoutNotes',\n props: {\n notes: {\n type: String,\n required: false,\n },\n },\n })\n","import { render } from \"./WorkoutNotes.vue?vue&type=template&id=5c47d30a&scoped=true&ts=true\"\nimport script from \"./WorkoutNotes.vue?vue&type=script&lang=ts\"\nexport * from \"./WorkoutNotes.vue?vue&type=script&lang=ts\"\n\nimport \"./WorkoutNotes.vue?vue&type=style&index=0&id=5c47d30a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5c47d30a\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5c40d110\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-segments\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.SEGMENT', 2)), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"ul\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.segments, (segment, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: segment.segment_id\n }, [\n _createVNode(_component_router_link, {\n to: {\n name: 'WorkoutSegment',\n params: {\n workoutId: segment.workout_id,\n segmentId: index + 1,\n },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.SEGMENT', 1)) + \" \" + _toDisplayString(index + 1), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]),\n _createTextVNode(\" (\" + _toDisplayString(_ctx.$t('workouts.DISTANCE')) + \": \" + _toDisplayString(segment.distance) + \" km, \" + _toDisplayString(_ctx.$t('workouts.DURATION')) + \": \" + _toDisplayString(segment.duration) + \") \", 1)\n ]))\n }), 128))\n ])\n ]),\n _: 1\n })\n ]))\n}","\n import { PropType, defineComponent } from 'vue'\n\n import { IWorkoutSegment } from '@/types/workouts'\n\n export default defineComponent({\n name: 'WorkoutSegments',\n props: {\n segments: {\n type: Object as PropType,\n required: true,\n },\n },\n })\n","import { render } from \"./WorkoutSegments.vue?vue&type=template&id=5c40d110&scoped=true&ts=true\"\nimport script from \"./WorkoutSegments.vue?vue&type=script&lang=ts\"\nexport * from \"./WorkoutSegments.vue?vue&type=script&lang=ts\"\n\nimport \"./WorkoutSegments.vue?vue&type=style&index=0&id=5c40d110&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5c40d110\"]])\n\nexport default __exports__","\n import {\n ComputedRef,\n Ref,\n computed,\n defineComponent,\n ref,\n watch,\n onBeforeMount,\n onUnmounted,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import NotFound from '@/components/Common/NotFound.vue'\n import WorkoutChart from '@/components/Workout/WorkoutChart.vue'\n import WorkoutDetail from '@/components/Workout/WorkoutDetail/index.vue'\n import WorkoutNotes from '@/components/Workout/WorkoutNotes.vue'\n import WorkoutSegments from '@/components/Workout/WorkoutSegments.vue'\n import {\n AUTH_USER_STORE,\n SPORTS_STORE,\n WORKOUTS_STORE,\n } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n import { IWorkoutData, IWorkoutPayload, TCoordinates } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n\n export default defineComponent({\n name: 'Workout',\n components: {\n NotFound,\n WorkoutChart,\n WorkoutDetail,\n WorkoutNotes,\n WorkoutSegments,\n },\n props: {\n displaySegment: {\n type: Boolean,\n required: true,\n },\n },\n setup(props) {\n const route = useRoute()\n const store = useStore()\n\n onBeforeMount(() => {\n const payload: IWorkoutPayload = { workoutId: route.params.workoutId }\n if (props.displaySegment) {\n payload.segmentId = route.params.segmentId\n }\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, payload)\n })\n\n const workoutData: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUT_DATA]\n )\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n let markerCoordinates: Ref = ref({\n latitude: null,\n longitude: null,\n })\n\n function updateCoordinates(coordinates: TCoordinates) {\n markerCoordinates.value = {\n latitude: coordinates.latitude,\n longitude: coordinates.longitude,\n }\n }\n\n watch(\n () => route.params.workoutId,\n async (newWorkoutId) => {\n if (newWorkoutId) {\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, {\n workoutId: newWorkoutId,\n })\n }\n }\n )\n watch(\n () => route.params.segmentId,\n async (newSegmentId) => {\n if (route.params.workoutId) {\n const payload: IWorkoutPayload = {\n workoutId: route.params.workoutId,\n }\n if (newSegmentId) {\n payload.segmentId = newSegmentId\n }\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, payload)\n }\n }\n )\n\n onUnmounted(() => {\n store.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n })\n\n return {\n authUser,\n markerCoordinates,\n sports,\n workoutData,\n updateCoordinates,\n }\n },\n })\n","import { render } from \"./Workout.vue?vue&type=template&id=05bdbd04&scoped=true&ts=true\"\nimport script from \"./Workout.vue?vue&type=script&lang=ts\"\nexport * from \"./Workout.vue?vue&type=script&lang=ts\"\n\nimport \"./Workout.vue?vue&type=style&index=0&id=05bdbd04&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-05bdbd04\"]])\n\nexport default __exports__","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./WorkoutsList.vue?vue&type=style&index=0&id=0144da86&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./WorkoutsFilters.vue?vue&type=style&index=0&id=cbc43e30&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./WorkoutsView.vue?vue&type=style&index=0&id=22a8a7cd&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./WorkoutNotes.vue?vue&type=style&index=0&id=5c47d30a&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./WorkoutChart.vue?vue&type=style&index=0&id=2230775e&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./WorkoutCardTitle.vue?vue&type=style&index=0&id=9cab340c&lang=scss&scoped=true\"","import { watch, ref, provide, h, inject, onUnmounted, onBeforeUnmount, onMounted, nextTick, render as render$3, reactive, computed } from 'vue';\n\nconst debounce = (fn, time) => {\n let timeout;\n\n return function (...args) {\n const context = this;\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n fn.apply(context, args);\n timeout = null;\n }, time);\n };\n};\n\nconst capitalizeFirstLetter = (string) => {\n if (!string || typeof string.charAt !== \"function\") {\n return string;\n }\n return string.charAt(0).toUpperCase() + string.slice(1);\n};\n\nconst propsBinder = (methods, leafletElement, props) => {\n for (const key in props) {\n const setMethodName = \"set\" + capitalizeFirstLetter(key);\n if (methods[setMethodName]) {\n watch(\n () => props[key],\n (newVal, oldVal) => {\n methods[setMethodName](newVal, oldVal);\n }\n );\n } else if (leafletElement[setMethodName]) {\n watch(\n () => props[key],\n (newVal) => {\n leafletElement[setMethodName](newVal);\n }\n );\n }\n }\n};\n\nconst remapEvents = (contextAttrs) => {\n const result = {};\n for (const attrName in contextAttrs) {\n if (\n attrName.startsWith(\"on\") &&\n !attrName.startsWith(\"onUpdate\") &&\n attrName !== \"onReady\"\n ) {\n const eventName = attrName.slice(2).toLocaleLowerCase();\n result[eventName] = contextAttrs[attrName];\n }\n }\n return result;\n};\n\nconst resetWebpackIcon = async (Icon) => {\n const modules = await Promise.all([\n import('leaflet/dist/images/marker-icon-2x.png'),\n import('leaflet/dist/images/marker-icon.png'),\n import('leaflet/dist/images/marker-shadow.png'),\n ]);\n\n delete Icon.Default.prototype._getIconUrl;\n\n Icon.Default.mergeOptions({\n iconRetinaUrl: modules[0].default,\n iconUrl: modules[1].default,\n shadowUrl: modules[2].default,\n });\n};\n\n/**\n * Wraps a placeholder function and provides it with the given name.\n * The wrapper can later be updated with {@link updateLeafletWrapper}\n * to provide a different function.\n *\n * @param {String} methodName Key used to provide the wrapper function\n */\nconst provideLeafletWrapper = (methodName) => {\n const wrapped = ref(() =>\n console.warn(`Method ${methodName} has been invoked without being replaced`)\n );\n const wrapper = (...args) => wrapped.value(...args);\n // eslint-disable-next-line vue/no-ref-as-operand\n wrapper.wrapped = wrapped;\n provide(methodName, wrapper);\n\n return wrapper;\n};\n\n/**\n * Change the function that will be executed when an injected Leaflet wrapper\n * is invoked.\n *\n * @param {*} wrapper Provided wrapper whose wrapped function is to be updated\n * @param {function} leafletMethod New method to be wrapped by the wrapper\n */\nconst updateLeafletWrapper = (wrapper, leafletMethod) =>\n (wrapper.wrapped.value = leafletMethod);\n\nconst WINDOW_OR_GLOBAL =\n (typeof self === \"object\" && self.self === self && self) ||\n (typeof global === \"object\" && global.global === global && global) ||\n undefined;\n\nconst GLOBAL_LEAFLET_OPT = \"useGlobalLeaflet\";\n\nconst props = {\n options: {\n type: Object,\n default: () => ({}),\n },\n};\n\nconst setup = (props) => {\n return { options: props.options, methods: {} };\n};\n\nconst props$1 = {\n ...props,\n pane: {\n type: String,\n default: \"overlayPane\",\n },\n attribution: {\n type: String,\n default: null,\n },\n name: {\n type: String,\n custom: true,\n default: undefined,\n },\n layerType: {\n type: String,\n custom: true,\n default: undefined,\n },\n visible: {\n type: Boolean,\n custom: true,\n default: true,\n },\n};\n\nconst setup$1 = (props, leafletRef, context) => {\n const addLayer = inject(\"addLayer\");\n const removeLayer = inject(\"removeLayer\");\n const {\n options: componentOptions,\n methods: componentMethods,\n } = setup(props);\n\n const options = {\n ...componentOptions,\n attribution: props.attribution,\n pane: props.pane,\n };\n\n const addThisLayer = () => addLayer({ leafletObject: leafletRef.value });\n const removeThisLayer = () =>\n removeLayer({ leafletObject: leafletRef.value });\n\n const methods = {\n ...componentMethods,\n setAttribution(val, old) {\n const attributionControl = this.$parent.leafletObject.attributionControl;\n attributionControl.removeAttribution(old).addAttribution(val);\n },\n setName() {\n removeThisLayer();\n if (props.visible) {\n addThisLayer();\n }\n },\n setLayerType() {\n removeThisLayer();\n if (props.visible) {\n addThisLayer();\n }\n },\n setVisible(isVisible) {\n if (leafletRef.value) {\n if (isVisible) {\n addThisLayer();\n } else {\n removeThisLayer();\n }\n }\n },\n bindPopup({ leafletObject }) {\n leafletRef.value.bindPopup(leafletObject);\n },\n bindTooltip({ leafletObject }) {\n leafletRef.value.bindTooltip(leafletObject);\n },\n unbindTooltip() {\n const tooltip = leafletRef.value ? leafletRef.value.getTooltip() : null;\n if (tooltip) {\n tooltip.unbindTooltip();\n }\n },\n unbindPopup() {\n const popup = leafletRef.value ? leafletRef.value.getPopup() : null;\n if (popup) {\n popup.unbindPopup();\n }\n },\n updateVisibleProp(value) {\n /**\n * Triggers when the visible prop needs to be updated\n * @type {boolean}\n * @property {boolean} value - value of the visible property\n */\n context.emit(\"update:visible\", value);\n },\n };\n\n provide(\"bindPopup\", methods.bindPopup);\n provide(\"bindTooltip\", methods.bindTooltip);\n provide(\"unbindTooltip\", methods.unbindTooltip);\n provide(\"unbindPopup\", methods.unbindPopup);\n\n onUnmounted(() => {\n methods.unbindPopup();\n methods.unbindTooltip();\n removeThisLayer();\n });\n\n return { options, methods };\n};\n\nconst render = (ready, slots) => {\n if (ready && slots.default) {\n return h(\"div\", { style: { display: \"none\" } }, slots.default());\n }\n};\n\nconst props$2 = {\n ...props,\n interactive: {\n type: Boolean,\n default: true,\n },\n bubblingMouseEvents: {\n type: Boolean,\n default: true,\n },\n};\n\nconst setup$2 = (props) => {\n const { options: componentOptions, methods } = setup(props);\n const options = {\n ...componentOptions,\n interactive: props.interactive,\n bubblingMouseEvents: props.bubblingMouseEvents,\n };\n\n return { options, methods };\n};\n\nconst props$3 = {\n ...props$1,\n ...props$2,\n stroke: {\n type: Boolean,\n custom: true,\n default: true,\n },\n color: {\n type: String,\n custom: true,\n default: \"#3388ff\",\n },\n weight: {\n type: Number,\n custom: true,\n default: 3,\n },\n opacity: {\n type: Number,\n custom: true,\n default: 1.0,\n },\n lineCap: {\n type: String,\n custom: true,\n default: \"round\",\n },\n lineJoin: {\n type: String,\n custom: true,\n default: \"round\",\n },\n dashArray: {\n type: String,\n custom: true,\n default: null,\n },\n dashOffset: {\n type: String,\n custom: true,\n default: null,\n },\n fill: {\n type: Boolean,\n custom: true,\n default: false,\n },\n fillColor: {\n type: String,\n custom: true,\n default: \"#3388ff\",\n },\n fillOpacity: {\n type: Number,\n custom: true,\n default: 0.2,\n },\n fillRule: {\n type: String,\n custom: true,\n default: \"evenodd\",\n },\n className: {\n type: String,\n custom: true,\n default: null,\n },\n};\n\nconst setup$3 = (props, leafletRef, context) => {\n const { options: layerOptions, methods: layerMethods } = setup$1(\n props,\n leafletRef,\n context\n );\n const {\n options: interactiveLayerOptions,\n methods: interactiveLayerMethods,\n } = setup$2(props);\n\n const removeLayer = inject(\"removeLayer\");\n\n const options = {\n ...layerOptions,\n ...interactiveLayerOptions,\n stroke: props.stroke,\n color: props.color,\n weight: props.weight,\n opacity: props.opacity,\n lineCap: props.lineCap,\n lineJoin: props.lineJoin,\n dashArray: props.dashArray,\n dashOffset: props.dashOffset,\n fill: props.fill,\n fillColor: props.fillColor,\n fillOpacity: props.fillOpacity,\n fillRule: props.fillRule,\n className: props.className,\n };\n const methods = {\n ...layerMethods,\n ...interactiveLayerMethods,\n setStroke(stroke) {\n leafletRef.value.setStyle({ stroke });\n },\n setColor(color) {\n leafletRef.value.setStyle({ color });\n },\n setWeight(weight) {\n leafletRef.value.setStyle({ weight });\n },\n setOpacity(opacity) {\n leafletRef.value.setStyle({ opacity });\n },\n setLineCap(lineCap) {\n leafletRef.value.setStyle({ lineCap });\n },\n setLineJoin(lineJoin) {\n leafletRef.value.setStyle({ lineJoin });\n },\n setDashArray(dashArray) {\n leafletRef.value.setStyle({ dashArray });\n },\n setDashOffset(dashOffset) {\n leafletRef.value.setStyle({ dashOffset });\n },\n setFill(fill) {\n leafletRef.value.setStyle({ fill });\n },\n setFillColor(fillColor) {\n leafletRef.value.setStyle({ fillColor });\n },\n setFillOpacity(fillOpacity) {\n leafletRef.value.setStyle({ fillOpacity });\n },\n setFillRule(fillRule) {\n leafletRef.value.setStyle({ fillRule });\n },\n setClassName(className) {\n leafletRef.value.setStyle({ className });\n },\n };\n\n onBeforeUnmount(() => {\n removeLayer({ leafletObject: leafletRef.value });\n });\n\n return { options, methods };\n};\n\nconst props$4 = {\n ...props$3,\n latLng: {\n type: [Object, Array],\n custom: true,\n default: null,\n },\n /**\n * Radius of the marker in pixels.\n */\n radius: {\n type: Number,\n default: null,\n },\n};\n\nconst setup$4 = (props, leafletRef, context) => {\n const { options: pathOptions, methods: pathMethods } = setup$3(\n props,\n leafletRef,\n context\n );\n const options = {\n ...pathOptions,\n ...props,\n };\n const methods = {\n ...pathMethods,\n setRadius(radius) {\n leafletRef.value.setRadius(radius);\n },\n setLatLng(latLng) {\n leafletRef.value.setLatLng(latLng);\n },\n };\n\n return { options, methods };\n};\n\nconst props$5 = {\n ...props$4,\n /**\n * Radius of the circle in meters.\n */\n radius: {\n type: Number,\n default: null,\n },\n};\n\nconst setup$5 = (props, leafletRef, context) => {\n const {\n options: circleMarkerOptions,\n methods: circleMarkerMethods,\n } = setup$4(props, leafletRef, context);\n\n const options = {\n ...circleMarkerOptions,\n ...props,\n };\n\n const methods = {\n ...circleMarkerMethods,\n };\n\n return { options, methods };\n};\n\n/**\n * Circle component, lets you add and personalize circles on the map\n */\nvar script = {\n name: \"LCircle\",\n props: props$5,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$5(props, leafletRef, context);\n\n onMounted(async () => {\n const { circle, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = circle(props.latLng, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript.__file = \"src/components/LCircle.vue\";\n\n/**\n * Circle Marker component, lets you add and personalize circle markers on the map\n */\nvar script$1 = {\n name: \"LCircleMarker\",\n props: props$4,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$4(props, leafletRef, context);\n\n onMounted(async () => {\n const { circleMarker, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = circleMarker(props.latLng, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$1.__file = \"src/components/LCircleMarker.vue\";\n\nconst props$6 = {\n ...props,\n position: {\n type: String,\n default: \"topright\",\n },\n};\n\nconst setup$6 = (props, leafletRef) => {\n const {\n options: componentOptions,\n methods: componentMethods,\n } = setup(props);\n const options = {\n ...componentOptions,\n position: props.position,\n };\n\n const methods = {\n ...componentMethods,\n setPosition(position) {\n if (leafletRef.value) {\n leafletRef.value.setPosition(position);\n }\n },\n };\n\n onUnmounted(() => {\n if (leafletRef.value) {\n leafletRef.value.remove();\n }\n });\n\n return { options, methods };\n};\n\nconst render$1 = (slots) => {\n if (slots.default) {\n return h(\"div\", { ref: \"root\" }, slots.default());\n }\n return null;\n};\n\nvar script$2 = {\n name: \"LControl\",\n props: {\n ...props$6,\n disableClickPropagation: {\n type: Boolean,\n custom: true,\n default: true,\n },\n disableScrollPropagation: {\n type: Boolean,\n custom: true,\n default: false,\n },\n },\n setup(props, context) {\n const leafletRef = ref({});\n const root = ref(null);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const registerControl = inject(\"registerControl\");\n\n const { options, methods } = setup$6(props, leafletRef);\n\n onMounted(async () => {\n const { Control, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n const LControl = Control.extend({\n onAdd() {\n return root.value;\n },\n });\n\n leafletRef.value = new LControl(options);\n propsBinder(methods, leafletRef.value, props);\n registerControl({ leafletObject: leafletRef.value });\n\n if (props.disableClickPropagation) {\n DomEvent.disableClickPropagation(root.value);\n }\n if (props.disableScrollPropagation) {\n DomEvent.disableScrollPropagation(root.value);\n }\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { root, leafletObject: leafletRef };\n },\n render() {\n return render$1(this.$slots);\n },\n};\n\nscript$2.__file = \"src/components/LControl.vue\";\n\nconst props$7 = {\n ...props$6,\n prefix: {\n type: String,\n default: \"Vue-Leaflet\",\n custom: true,\n },\n};\n\nconst setup$7 = (props, leafletRef) => {\n const { options: controlOptions, methods: controlMethods } = setup$6(\n props,\n leafletRef\n );\n const options = {\n ...controlOptions,\n prefix: props.prefix,\n };\n\n const methods = {\n ...controlMethods,\n setPrefix(prefix) {\n leafletRef.value.setPrefix(prefix);\n },\n };\n\n return { options, methods };\n};\n\nvar script$3 = {\n name: \"LControlAttribution\",\n props: props$7,\n setup(props, context) {\n const leafletRef = ref({});\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const registerControl = inject(\"registerControl\");\n\n const { options, methods } = setup$7(props, leafletRef);\n\n onMounted(async () => {\n const { control } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = control.attribution(options);\n propsBinder(methods, leafletRef.value, props);\n registerControl({ leafletObject: leafletRef.value });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { leafletObject: leafletRef.value };\n },\n render() {\n return null;\n },\n};\n\nscript$3.__file = \"src/components/LControlAttribution.vue\";\n\nconst props$8 = {\n ...props$6,\n collapsed: {\n type: Boolean,\n default: true,\n },\n autoZIndex: {\n type: Boolean,\n default: true,\n },\n hideSingleBase: {\n type: Boolean,\n default: false,\n },\n sortLayers: {\n type: Boolean,\n default: false,\n },\n sortFunction: {\n type: Function,\n default: undefined,\n },\n};\n\nconst setup$8 = (props, leafletRef) => {\n const { options: controlOptions } = setup$6(props, leafletRef);\n const options = {\n ...controlOptions,\n collapsed: props.collapsed,\n autoZIndex: props.autoZIndex,\n hideSingleBase: props.hideSingleBase,\n sortLayers: props.sortLayers,\n sortFunction: props.sortFunction,\n };\n\n const methods = {\n addLayer(layer) {\n if (layer.layerType === \"base\") {\n leafletRef.value.addBaseLayer(layer.leafletObject, layer.name);\n } else if (layer.layerType === \"overlay\") {\n leafletRef.value.addOverlay(layer.leafletObject, layer.name);\n }\n },\n removeLayer(layer) {\n leafletRef.value.removeLayer(layer.leafletObject);\n },\n };\n return { options, methods };\n};\n\nvar script$4 = {\n name: \"LControlLayers\",\n props: props$8,\n setup(props, context) {\n const leafletRef = ref({});\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const registerLayerControl = inject(\"registerLayerControl\");\n\n const { options, methods } = setup$8(props, leafletRef);\n\n onMounted(async () => {\n const { control } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = control.layers(null, null, options);\n\n propsBinder(methods, leafletRef.value, props);\n\n registerLayerControl({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { leafletObject: leafletRef.value };\n },\n render() {\n return null;\n },\n};\n\nscript$4.__file = \"src/components/LControlLayers.vue\";\n\nconst props$9 = {\n ...props$6,\n maxWidth: {\n type: Number,\n default: 100,\n },\n metric: {\n type: Boolean,\n default: true,\n },\n imperial: {\n type: Boolean,\n default: true,\n },\n updateWhenIdle: {\n type: Boolean,\n default: false,\n },\n};\n\nconst setup$9 = (props, leafletRef) => {\n const { options: controlOptions, methods: controlMethods } = setup$6(\n props,\n leafletRef\n );\n const options = {\n ...controlOptions,\n maxWidth: props.maxWidth,\n metric: props.metric,\n imperial: props.imperial,\n updateWhenIdle: props.updateWhenIdle,\n };\n\n return { options, methods: controlMethods };\n};\n\nvar script$5 = {\n name: \"LControlScale\",\n props: props$9,\n setup(props, context) {\n const leafletRef = ref({});\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const registerControl = inject(\"registerControl\");\n\n const { options, methods } = setup$9(props, leafletRef);\n\n onMounted(async () => {\n const { control } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = control.scale(options);\n propsBinder(methods, leafletRef.value, props);\n registerControl({ leafletObject: leafletRef.value });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { leafletObject: leafletRef.value };\n },\n render() {\n return null;\n },\n};\n\nscript$5.__file = \"src/components/LControlScale.vue\";\n\nconst props$a = {\n ...props$6,\n zoomInText: {\n type: String,\n default: \"+\",\n },\n zoomInTitle: {\n type: String,\n default: \"Zoom in\",\n },\n zoomOutText: {\n type: String,\n default: \"-\",\n },\n zoomOutTitle: {\n type: String,\n default: \"Zoom out\",\n },\n};\n\nconst setup$a = (props, leafletRef) => {\n const { options: controlOptions, methods: controlMethods } = setup$6(\n props,\n leafletRef\n );\n const options = {\n ...controlOptions,\n zoomInText: props.zoomInText,\n zoomInTitle: props.zoomInTitle,\n zoomOutText: props.zoomOutText,\n zoomOutTitle: props.zoomOutTitle,\n };\n\n return { options, methods: controlMethods };\n};\n\nvar script$6 = {\n name: \"LControlZoom\",\n props: props$a,\n setup(props, context) {\n const leafletRef = ref({});\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const registerControl = inject(\"registerControl\");\n\n const { options, methods } = setup$a(props, leafletRef);\n\n onMounted(async () => {\n const { control } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = control.zoom(options);\n propsBinder(methods, leafletRef.value, props);\n registerControl({ leafletObject: leafletRef.value });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { leafletObject: leafletRef.value };\n },\n render() {\n return null;\n },\n};\n\nscript$6.__file = \"src/components/LControlZoom.vue\";\n\nconst props$b = {\n ...props$1,\n};\n\nconst setup$b = (props, leafletRef, context) => {\n const { options: layerOptions, methods: layerMethods } = setup$1(\n props,\n leafletRef,\n context\n );\n\n const options = {\n ...layerOptions,\n };\n\n const methods = {\n ...layerMethods,\n addLayer(layer) {\n leafletRef.value.addLayer(layer.leafletObject);\n },\n removeLayer(layer) {\n leafletRef.value.removeLayer(layer.leafletObject);\n },\n };\n\n provide(\"addLayer\", methods.addLayer);\n provide(\"removeLayer\", methods.removeLayer);\n\n return { options, methods };\n};\n\nconst props$c = {\n ...props$b,\n};\n\nconst setup$c = (props, leafletRef) => {\n const { options: layerOptions, methods: layerGroupMethods } = setup$b(\n props,\n leafletRef\n );\n\n const options = {\n ...layerOptions,\n ...props,\n };\n\n const methods = {\n ...layerGroupMethods,\n };\n\n return { options, methods };\n};\n\nvar script$7 = {\n props: props$c,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { methods, options } = setup$c(props, leafletRef);\n\n onMounted(async () => {\n const { featureGroup, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = featureGroup(options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$7.__file = \"src/components/LFeatureGroup.vue\";\n\nconst props$d = {\n ...props$b,\n geojson: {\n type: [Object, Array],\n default: () => ({}),\n },\n};\n\nconst setup$d = (props, leafletRef) => {\n const { options: layerOptions, methods: layerGroupMethods } = setup$b(\n props,\n leafletRef\n );\n\n const options = {\n ...layerOptions,\n ...props,\n };\n\n const methods = {\n ...layerGroupMethods,\n setGeojson(newVal) {\n leafletRef.value.clearLayers();\n leafletRef.value.addData(newVal);\n },\n getGeoJSONData() {\n return leafletRef.value.toGeoJSON();\n },\n getBounds() {\n return leafletRef.value.getBounds();\n },\n };\n\n return { options, methods };\n};\n\nvar script$8 = {\n props: props$d,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { methods, options } = setup$d(props, leafletRef);\n\n onMounted(async () => {\n const { geoJSON, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = geoJSON(props.geojson, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$8.__file = \"src/components/LGeoJson.vue\";\n\nconst props$e = {\n ...props$1,\n pane: {\n type: String,\n default: \"tilePane\",\n },\n opacity: {\n type: Number,\n custom: false,\n default: 1.0,\n },\n zIndex: {\n type: Number,\n default: 1,\n },\n tileSize: {\n type: Number,\n default: 256,\n },\n noWrap: {\n type: Boolean,\n default: false,\n },\n minZoom: {\n type: Number,\n default: 0,\n },\n maxZoom: {\n type: Number,\n default: undefined,\n },\n};\n\nconst setup$e = (props, leafletRef, context) => {\n const { options: layerOptions, methods: layerMethods } = setup$1(\n props,\n leafletRef,\n context\n );\n const options = {\n ...layerOptions,\n pane: props.pane,\n opacity: props.opacity,\n zIndex: props.zIndex,\n tileSize: props.tileSize,\n noWrap: props.noWrap,\n minZoom: props.minZoom,\n maxZoom: props.maxZoom,\n };\n return { options, methods: { ...layerMethods } };\n};\n\nvar script$9 = {\n props: {\n ...props$e,\n childRender: {\n type: Function,\n required: true,\n },\n },\n setup(props, context) {\n const leafletRef = ref({});\n const tileComponents = ref({});\n const root = ref(null);\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$e(props, leafletRef, context);\n\n onMounted(async () => {\n const { GridLayer, DomEvent, DomUtil } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n methods.onUnload = (e) => {\n const key = leafletRef.value._tileCoordsToKey(e.coords);\n if (tileComponents[key]) {\n tileComponents[key].innerHTML = \"\";\n tileComponents[key] = undefined;\n }\n };\n\n methods.setTileComponent = () => {\n leafletRef.value.redraw();\n };\n\n const GLayer = GridLayer.extend({\n createTile(coords) {\n const key = leafletRef.value._tileCoordsToKey(coords);\n tileComponents[key] = DomUtil.create(\"div\");\n\n let vNode = h(\n { setup: props.childRender, props: [\"coords\"] },\n { coords }\n );\n render$3(vNode, tileComponents[key]);\n\n return tileComponents[key];\n },\n });\n\n leafletRef.value = new GLayer(options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n leafletRef.value.on(\"tileunload\", methods.onUnload);\n\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n\n onUnmounted(() => {\n leafletRef.value.off(\"tileunload\", methods.unLoad);\n });\n\n return { root, ready, leafletObject: leafletRef };\n },\n render() {\n if (this.ready) {\n return h(\"div\", { style: { display: \"none\" }, ref: \"root\" });\n }\n return null;\n },\n};\n\nscript$9.__file = \"src/components/LGridLayer.vue\";\n\nconst props$f = {\n iconUrl: {\n type: String,\n custom: true,\n default: null,\n },\n iconRetinaUrl: {\n type: String,\n custom: true,\n default: null,\n },\n iconSize: {\n type: [Object, Array],\n custom: true,\n default: null,\n },\n iconAnchor: {\n type: [Object, Array],\n custom: true,\n default: null,\n },\n popupAnchor: {\n type: [Object, Array],\n custom: true,\n default: () => [0, 0],\n },\n tooltipAnchor: {\n type: [Object, Array],\n custom: true,\n default: () => [0, 0],\n },\n shadowUrl: {\n type: String,\n custom: true,\n default: null,\n },\n shadowRetinaUrl: {\n type: String,\n custom: true,\n default: null,\n },\n shadowSize: {\n type: [Object, Array],\n custom: true,\n default: null,\n },\n shadowAnchor: {\n type: [Object, Array],\n custom: true,\n default: null,\n },\n bgPos: {\n type: [Object, Array],\n custom: true,\n default: () => [0, 0],\n },\n className: {\n type: String,\n custom: true,\n default: \"\",\n },\n options: {\n type: Object,\n custom: true,\n default: () => ({}),\n },\n};\n\n/**\n * Icon component, lets you add and custom icons to the map\n */\nvar script$a = {\n name: \"LIcon\",\n props: {\n ...props$f,\n ...props,\n },\n setup(props, context) {\n const root = ref(null);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const canSetParentHtml = inject(\"canSetParentHtml\");\n const setParentHtml = inject(\"setParentHtml\");\n const setIcon = inject(\"setIcon\");\n\n let onDomEvent;\n let offDomEvent;\n let divIcon;\n let icon;\n let iconObject = undefined;\n\n const createIcon = (el, recreationNeeded, htmlSwapNeeded) => {\n const elHtml = el && el.innerHTML;\n if (!recreationNeeded) {\n if (htmlSwapNeeded && iconObject && canSetParentHtml()) {\n setParentHtml(elHtml);\n }\n return;\n }\n\n const listeners = remapEvents(context.attrs);\n if (iconObject) {\n offDomEvent(iconObject, listeners);\n }\n\n const { options: componentOptions } = setup(props);\n const options = {\n ...componentOptions,\n iconUrl: props.iconUrl,\n iconRetinaUrl: props.iconRetinaUrl,\n iconSize: props.iconSize,\n iconAnchor: props.iconAnchor,\n popupAnchor: props.popupAnchor,\n tooltipAnchor: props.tooltipAnchor,\n shadowUrl: props.shadowUrl,\n shadowRetinaUrl: props.shadowRetinaUrl,\n shadowSize: props.shadowSize,\n shadowAnchor: props.shadowAnchor,\n bgPos: props.bgPos,\n className: props.className,\n html: elHtml || props.html,\n };\n\n iconObject = options.html ? divIcon(options) : icon(options);\n onDomEvent(iconObject, listeners);\n setIcon(iconObject);\n };\n\n const scheduleCreateIcon = () => {\n nextTick(() => createIcon(root.value, true, false));\n };\n\n const scheduleHtmlSwap = () => {\n nextTick(() => createIcon(root.value, false, true));\n };\n\n const methods = {\n setIconUrl: scheduleCreateIcon,\n setIconRetinaUrl: scheduleCreateIcon,\n setIconSize: scheduleCreateIcon,\n setIconAnchor: scheduleCreateIcon,\n setPopupAnchor: scheduleCreateIcon,\n setTooltipAnchor: scheduleCreateIcon,\n setShadowUrl: scheduleCreateIcon,\n setShadowRetinaUrl: scheduleCreateIcon,\n setShadowAnchor: scheduleCreateIcon,\n setBgPos: scheduleCreateIcon,\n setClassName: scheduleCreateIcon,\n setHtml: scheduleCreateIcon,\n };\n\n onMounted(async () => {\n const { DomEvent, divIcon: lDivIcon, icon: lIcon } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n onDomEvent = DomEvent.on;\n offDomEvent = DomEvent.off;\n divIcon = lDivIcon;\n icon = lIcon;\n\n propsBinder(methods, {}, props);\n\n const observer = new MutationObserver(scheduleHtmlSwap);\n observer.observe(root.value, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true,\n });\n scheduleCreateIcon();\n });\n\n return { root };\n },\n render() {\n const content = this.$slots.default ? this.$slots.default() : undefined;\n return h(\"div\", { ref: \"root\" }, content);\n },\n};\n\nscript$a.__file = \"src/components/LIcon.vue\";\n\n/**\n * @typedef {import('leaflet/dist/leaflet-src.esm.js').LatLngBounds} LatLngBounds\n */\n\nconst props$g = {\n ...props$1,\n url: {\n type: String,\n required: true,\n },\n bounds: {\n type: [Array, Object],\n required: true,\n },\n opacity: {\n type: Number,\n custom: true,\n default: 1.0,\n },\n alt: {\n type: String,\n default: \"\",\n },\n interactive: {\n type: Boolean,\n default: false,\n },\n crossOrigin: {\n type: Boolean,\n default: false,\n },\n errorOverlayUrl: {\n type: String,\n custom: true,\n default: \"\",\n },\n zIndex: {\n type: Number,\n custom: true,\n default: 1,\n },\n className: {\n type: String,\n default: \"\",\n },\n};\n\nconst setup$f = (setupProps, LeafletRef, context) => {\n const { options: layerOptions, methods: layerMethods } = setup$1(\n setupProps,\n LeafletRef,\n context\n );\n const options = {\n ...layerOptions,\n ...setupProps,\n };\n\n const methods = {\n ...layerMethods,\n /**\n * Sets the opacity of the overlay.\n * @param {number} opacity\n */\n setOpacity(opacity) {\n return LeafletRef.value.setOpacity(opacity);\n },\n /**\n * Changes the URL of the image.\n * @param {string} url\n */\n setUrl(url) {\n return LeafletRef.value.setUrl(url);\n },\n /**\n * Update the bounds that this ImageOverlay covers\n * @param {LatLngBounds | Array>} bounds\n */\n setBounds(bounds) {\n return LeafletRef.value.setBounds(bounds);\n },\n /**\n * Get the bounds that this ImageOverlay covers\n * @returns {LatLngBounds}\n */\n getBounds() {\n return LeafletRef.value.getBounds();\n },\n /**\n * Returns the instance of HTMLImageElement used by this overlay.\n * @returns {HTMLElement}\n */\n getElement() {\n return LeafletRef.value.getElement();\n },\n /**\n * Brings the layer to the top of all overlays.\n */\n bringToFront() {\n return LeafletRef.value.bringToFront();\n },\n /**\n * Brings the layer to the bottom of all overlays.\n */\n bringToBack() {\n return LeafletRef.value.bringToBack();\n },\n /**\n * Changes the zIndex of the image overlay.\n * @param {number} zIndex\n */\n setZIndex(zIndex) {\n return LeafletRef.value.setZIndex(zIndex);\n },\n };\n\n return { options, methods };\n};\n\n/**\n * ImageOverlay component, render a plain image instead of a geospatial map.\n */\nvar script$b = {\n name: \"LImageOverlay\",\n props: props$g,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$f(props, leafletRef, context);\n\n onMounted(async () => {\n const { imageOverlay, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n leafletRef.value = imageOverlay(props.url, props.bounds, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$b.__file = \"src/components/LImageOverlay.vue\";\n\nvar script$c = {\n props: props$b,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { methods } = setup$b(props, leafletRef, context);\n\n onMounted(async () => {\n const { layerGroup, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n leafletRef.value = layerGroup(props.options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$c.__file = \"src/components/LLayerGroup.vue\";\n\nvar script$d = {\n emits: [\"ready\", \"update:zoom\", \"update:center\", \"update:bounds\"],\n props: {\n ...props,\n /**\n * The center of the map, supports .sync modifier\n */\n center: {\n type: [Object, Array],\n default: () => [0, 0],\n },\n /**\n * The bounds of the map, supports .sync modifier\n */\n bounds: {\n type: [Array, Object],\n default: undefined,\n },\n /**\n * The max bounds of the map\n */\n maxBounds: {\n type: [Array, Object],\n default: undefined,\n },\n /**\n * The zoom of the map, supports .sync modifier\n */\n zoom: {\n type: Number,\n default: 0,\n },\n /**\n * The minZoom of the map\n */\n minZoom: {\n type: Number,\n default: undefined,\n },\n /**\n * The maxZoom of the map\n */\n maxZoom: {\n type: Number,\n default: undefined,\n },\n /**\n * The paddingBottomRight of the map\n */\n paddingBottomRight: {\n type: Array,\n default: undefined,\n },\n /**\n * The paddingTopLeft of the map\n */\n paddingTopLeft: {\n type: Array,\n default: undefined,\n },\n /**\n * The padding of the map\n */\n padding: {\n type: Array,\n default: undefined,\n },\n /**\n * The worldCopyJump option for the map\n */\n worldCopyJump: {\n type: Boolean,\n default: false,\n },\n /**\n * The CRS to use for the map. Can be an object that defines a coordinate reference\n * system for projecting geographical points into screen coordinates and back\n * (see https://leafletjs.com/reference-1.7.1.html#crs-l-crs-base), or a string\n * name identifying one of Leaflet's defined CRSs, such as \"EPSG4326\".\n */\n crs: {\n type: [String, Object],\n default: \"EPSG3857\",\n },\n maxBoundsViscosity: {\n type: Number,\n default: undefined,\n },\n inertia: {\n type: Boolean,\n default: undefined,\n },\n inertiaDeceleration: {\n type: Number,\n default: undefined,\n },\n inertiaMaxSpeed: {\n type: Number,\n default: undefined,\n },\n easeLinearity: {\n type: Number,\n default: undefined,\n },\n zoomAnimation: {\n type: Boolean,\n default: undefined,\n },\n zoomAnimationThreshold: {\n type: Number,\n default: undefined,\n },\n fadeAnimation: {\n type: Boolean,\n default: undefined,\n },\n markerZoomAnimation: {\n type: Boolean,\n default: undefined,\n },\n noBlockingAnimations: {\n type: Boolean,\n default: false,\n },\n useGlobalLeaflet: {\n type: Boolean,\n default: false,\n },\n },\n setup(props, context) {\n const root = ref(null);\n const blueprint = reactive({\n ready: false,\n leafletRef: {},\n layersToAdd: [],\n layersInControl: [],\n });\n const { options: componentOptions } = setup(props);\n const options = {\n ...componentOptions,\n minZoom: props.minZoom,\n maxZoom: props.maxZoom,\n maxBounds: props.maxBounds,\n maxBoundsViscosity: props.maxBoundsViscosity,\n worldCopyJump: props.worldCopyJump,\n crs: props.crs,\n center: props.center,\n zoom: props.zoom,\n inertia: props.inertia,\n inertiaDeceleration: props.inertiaDeceleration,\n inertiaMaxSpeed: props.inertiaMaxSpeed,\n easeLinearity: props.easeLinearity,\n zoomAnimation: props.zoomAnimation,\n zoomAnimationThreshold: props.zoomAnimationThreshold,\n fadeAnimation: props.fadeAnimation,\n markerZoomAnimation: props.markerZoomAnimation,\n };\n\n const addLayer = provideLeafletWrapper(\"addLayer\");\n const removeLayer = provideLeafletWrapper(\"removeLayer\");\n const registerControl = provideLeafletWrapper(\"registerControl\");\n const registerLayerControl = provideLeafletWrapper(\"registerLayerControl\");\n provide(GLOBAL_LEAFLET_OPT, props.useGlobalLeaflet);\n\n const eventHandlers = {\n moveEndHandler() {\n /**\n * Triggers when zoom is updated\n * @type {number,string}\n */\n context.emit(\"update:zoom\", blueprint.leafletRef.getZoom());\n /**\n * Triggers when center is updated\n * @type {object,array}\n */\n context.emit(\"update:center\", blueprint.leafletRef.getCenter());\n\n /**\n * Triggers when bounds are updated\n * @type {object}\n */\n context.emit(\"update:bounds\", blueprint.leafletRef.getBounds());\n },\n overlayAddHandler(e) {\n const layer = blueprint.layersInControl.find((l) => l.name === e.name);\n if (layer) {\n layer.updateVisibleProp(true);\n }\n },\n overlayRemoveHandler(e) {\n const layer = blueprint.layersInControl.find((l) => l.name === e.name);\n if (layer) {\n layer.updateVisibleProp(false);\n }\n },\n };\n\n onMounted(async () => {\n if (props.useGlobalLeaflet) {\n WINDOW_OR_GLOBAL.L = WINDOW_OR_GLOBAL.L || (await import('leaflet'));\n }\n const {\n map,\n CRS,\n Icon,\n latLngBounds,\n latLng,\n DomEvent,\n } = props.useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n try {\n options.beforeMapMount && (await options.beforeMapMount());\n } catch (error) {\n console.error(\n `The following error occurred running the provided beforeMapMount hook ${error.message}`\n );\n }\n\n await resetWebpackIcon(Icon);\n\n const optionsCrs =\n typeof options.crs == \"string\" ? CRS[options.crs] : options.crs;\n options.crs = optionsCrs || CRS.EPSG3857;\n\n const methods = {\n addLayer(layer) {\n if (layer.layerType !== undefined) {\n if (blueprint.layerControl === undefined) {\n blueprint.layersToAdd.push(layer);\n } else {\n const exist = blueprint.layersInControl.find(\n (l) =>\n l.leafletObject._leaflet_id ===\n layer.leafletObject._leaflet_id\n );\n if (!exist) {\n blueprint.layerControl.addLayer(layer);\n blueprint.layersInControl.push(layer);\n }\n }\n }\n if (layer.visible !== false) {\n blueprint.leafletRef.addLayer(layer.leafletObject);\n }\n },\n removeLayer(layer) {\n if (layer.layerType !== undefined) {\n if (blueprint.layerControl === undefined) {\n blueprint.layersToAdd = blueprint.layersToAdd.filter(\n (l) => l.name !== layer.name\n );\n } else {\n blueprint.layerControl.removeLayer(layer.leafletObject);\n blueprint.layersInControl = blueprint.layersInControl.filter(\n (l) =>\n l.leafletObject._leaflet_id !==\n layer.leafletObject._leaflet_id\n );\n }\n }\n blueprint.leafletRef.removeLayer(layer.leafletObject);\n },\n\n registerLayerControl(lControlLayer) {\n blueprint.layerControl = lControlLayer;\n blueprint.layersToAdd.forEach((layer) => {\n blueprint.layerControl.addLayer(layer);\n });\n blueprint.layersToAdd = [];\n\n registerControl(lControlLayer);\n },\n\n registerControl(lControl) {\n blueprint.leafletRef.addControl(lControl.leafletObject);\n },\n\n setZoom(newVal) {\n const zoom = blueprint.leafletRef.getZoom();\n if (newVal !== zoom) {\n blueprint.leafletRef.setZoom(newVal, {\n animate: props.noBlockingAnimations ? false : null,\n });\n }\n },\n\n setPaddingBottomRight(newVal) {\n blueprint.paddingBottomRight = newVal;\n },\n setPaddingTopLeft(newVal) {\n blueprint.paddingTopLeft = newVal;\n },\n setPadding(newVal) {\n blueprint.padding = newVal;\n },\n setCrs(newVal) {\n const prevBounds = blueprint.leafletRef.getBounds();\n blueprint.leafletRef.options.crs = newVal;\n blueprint.leafletRef.fitBounds(prevBounds, {\n animate: false,\n padding: [0, 0],\n });\n },\n fitBounds(bounds) {\n blueprint.leafletRef.fitBounds(bounds, {\n animate: this.noBlockingAnimations ? false : null,\n });\n },\n setBounds(newVal) {\n if (!newVal) {\n return;\n }\n const newBounds = latLngBounds(newVal);\n if (!newBounds.isValid()) {\n return;\n }\n const oldBounds =\n blueprint.lastSetBounds || blueprint.leafletRef.getBounds();\n const boundsChanged = !oldBounds.equals(newBounds, 0); // set maxMargin to 0 - check exact equals\n if (boundsChanged) {\n blueprint.lastSetBounds = newBounds;\n blueprint.leafletRef.fitBounds(newBounds, this.fitBoundsOptions);\n }\n },\n\n setCenter(newVal) {\n if (newVal == null) {\n return;\n }\n const newCenter = latLng(newVal);\n const oldCenter =\n blueprint.lastSetCenter || blueprint.leafletRef.getCenter();\n if (\n oldCenter.lat !== newCenter.lat ||\n oldCenter.lng !== newCenter.lng\n ) {\n blueprint.lastSetCenter = newCenter;\n blueprint.leafletRef.panTo(newCenter, {\n animate: this.noBlockingAnimations ? false : null,\n });\n }\n },\n };\n\n updateLeafletWrapper(addLayer, methods.addLayer);\n updateLeafletWrapper(removeLayer, methods.removeLayer);\n updateLeafletWrapper(registerControl, methods.registerControl);\n updateLeafletWrapper(registerLayerControl, methods.registerLayerControl);\n\n blueprint.leafletRef = map(root.value, options);\n\n propsBinder(methods, blueprint.leafletRef, props);\n const listeners = remapEvents(context.attrs);\n\n blueprint.leafletRef.on(\n \"moveend\",\n debounce(eventHandlers.moveEndHandler, 100)\n );\n blueprint.leafletRef.on(\"overlayadd\", eventHandlers.overlayAddHandler);\n blueprint.leafletRef.on(\n \"overlayremove\",\n eventHandlers.overlayRemoveHandler\n );\n DomEvent.on(blueprint.leafletRef, listeners);\n blueprint.ready = true;\n nextTick(() => context.emit(\"ready\", blueprint.leafletRef));\n });\n\n onBeforeUnmount(() => {\n if (blueprint.leafletRef) {\n blueprint.leafletRef.remove();\n }\n });\n\n const leafletObject = computed(() => blueprint.leafletRef);\n const ready = computed(() => blueprint.ready);\n return { root, ready, leafletObject };\n },\n render() {\n return h(\n \"div\",\n { style: { width: \"100%\", height: \"100%\" }, ref: \"root\" },\n this.ready ? this.$slots.default() : {}\n );\n },\n};\n\nscript$d.__file = \"src/components/LMap.vue\";\n\nconst props$h = {\n ...props$1,\n pane: {\n type: String,\n default: \"markerPane\",\n },\n draggable: {\n type: Boolean,\n custom: true,\n default: false,\n },\n latLng: {\n type: [Object, Array],\n custom: true,\n default: null,\n },\n icon: {\n type: [Object],\n default: () => undefined,\n custom: false,\n },\n zIndexOffset: {\n type: Number,\n custom: false,\n default: null,\n },\n};\n\nconst setup$g = (props, leafletRef, context) => {\n const { options: layerOptions, methods: layerMethods } = setup$1(\n props,\n leafletRef,\n context\n );\n const options = {\n ...layerOptions,\n ...props,\n };\n\n const methods = {\n ...layerMethods,\n setDraggable(value) {\n if (leafletRef.value.dragging) {\n value\n ? leafletRef.value.dragging.enable()\n : leafletRef.value.dragging.disable();\n }\n },\n latLngSync(event) {\n context.emit(\"update:latLng\", event.latlng);\n context.emit(\"update:lat-lng\", event.latlng);\n },\n setLatLng(newVal) {\n if (newVal == null) {\n return;\n }\n\n if (leafletRef.value) {\n const oldLatLng = leafletRef.value.getLatLng();\n if (!oldLatLng || !oldLatLng.equals(newVal)) {\n leafletRef.value.setLatLng(newVal);\n }\n }\n },\n };\n return { options, methods };\n};\n\n/**\n * Marker component, lets you add and personalize markers on the map\n */\nvar script$e = {\n name: \"LMarker\",\n props: props$h,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n provide(\"canSetParentHtml\", () => !!leafletRef.value.getElement());\n provide(\n \"setParentHtml\",\n (html) => (leafletRef.value.getElement().innerHTML = html)\n );\n provide(\n \"setIcon\",\n (newIcon) => leafletRef.value.setIcon && leafletRef.value.setIcon(newIcon)\n );\n const { options, methods } = setup$g(props, leafletRef, context);\n if (options.icon === undefined) {\n // If the options objection has a property named 'icon', then Leaflet will overwrite\n // the default icon with it for the marker, _even if it is undefined_.\n // This leads to the issue discussed in https://github.com/vue-leaflet/vue-leaflet/issues/130\n delete options.icon;\n }\n\n onMounted(async () => {\n const { marker, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n leafletRef.value = marker(props.latLng, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n leafletRef.value.on(\"move\", debounce(methods.latLngSync, 100));\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$e.__file = \"src/components/LMarker.vue\";\n\nconst props$i = {\n ...props$3,\n latLngs: {\n type: Array,\n default: () => [],\n },\n smoothFactor: {\n type: Number,\n custom: true,\n default: 1.0,\n },\n noClip: {\n type: Boolean,\n custom: true,\n default: false,\n },\n};\n\nconst setup$h = (props, leafletRef, context) => {\n const { options: pathOptions, methods: pathMethods } = setup$3(\n props,\n leafletRef,\n context\n );\n const options = {\n ...pathOptions,\n ...props,\n };\n\n const methods = {\n ...pathMethods,\n setSmoothFactor(smoothFactor) {\n leafletRef.value.setStyle({ smoothFactor });\n },\n setNoClip(noClip) {\n leafletRef.value.setStyle({ noClip });\n },\n addLatLng(latLng) {\n leafletRef.value.addLatLng(latLng);\n },\n };\n return { options, methods };\n};\n\nconst props$j = {\n ...props$i,\n};\n\nconst setup$i = (props, leafletRef, context) => {\n const { options: polylineOptions, methods: polylineMethods } = setup$h(\n props,\n leafletRef,\n context\n );\n const options = {\n ...polylineOptions,\n ...props,\n };\n\n const methods = {\n ...polylineMethods,\n toGeoJSON(precision) {\n return leafletRef.value.toGeoJSON(precision);\n },\n };\n\n return { options, methods };\n};\n\n/**\n * Polygon component, lets you add and customize polygon regions on the map\n */\nvar script$f = {\n name: \"LPolygon\",\n props: props$j,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$i(props, leafletRef, context);\n\n onMounted(async () => {\n const { polygon, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = polygon(props.latLngs, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$f.__file = \"src/components/LPolygon.vue\";\n\n/**\n * Polyline component, lets you add and personalize polylines on the map\n */\nvar script$g = {\n name: \"LPolyline\",\n props: props$i,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$h(props, leafletRef, context);\n\n onMounted(async () => {\n const { polyline, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = polyline(props.latLngs, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$g.__file = \"src/components/LPolyline.vue\";\n\nconst props$k = {\n ...props,\n content: {\n type: String,\n default: null,\n },\n};\n\nconst setup$j = (props, leafletRef) => {\n const { options, methods: componentMethods } = setup(props);\n const methods = {\n ...componentMethods,\n setContent(newVal) {\n if (leafletRef.value && newVal !== null && newVal !== undefined) {\n leafletRef.value.setContent(newVal);\n }\n },\n };\n return { options, methods };\n};\n\nconst render$2 = (slots) => {\n if (slots.default) {\n return h(\"div\", { ref: \"root\" }, slots.default());\n }\n return null;\n};\n\nconst props$l = {\n ...props$k,\n latLng: {\n type: [Object, Array],\n default: () => [],\n },\n};\n\nconst setup$k = (props, leafletRef) => {\n const { options, methods } = setup$j(props, leafletRef);\n const unbindPopup = inject(\"unbindPopup\");\n\n onBeforeUnmount(() => {\n unbindPopup();\n });\n\n return { options, methods };\n};\n\n/**\n * Display a popup on the map\n */\nvar script$h = {\n name: \"LPopup\",\n props: props$l,\n setup(props, context) {\n const leafletRef = ref({});\n const root = ref(null);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const bindPopup = inject(\"bindPopup\");\n\n const { options, methods } = setup$k(props, leafletRef);\n\n onMounted(async () => {\n const { popup, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = popup(options);\n\n if (props.latLng !== undefined) {\n leafletRef.value.setLatLng(props.latLng);\n }\n\n propsBinder(methods, leafletRef.value, props);\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n leafletRef.value.setContent(props.content || root.value);\n bindPopup({ leafletObject: leafletRef.value });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { root, leafletObject: leafletRef };\n },\n render() {\n return render$2(this.$slots);\n },\n};\n\nscript$h.__file = \"src/components/LPopup.vue\";\n\nconst props$m = {\n ...props$j,\n bounds: {\n type: Array,\n default: undefined,\n },\n};\n\nconst setup$l = (props, leafletRef, context) => {\n const { options: polygonOptions, methods: polygonMethods } = setup$i(\n props,\n leafletRef,\n context\n );\n const options = {\n ...polygonOptions,\n ...props,\n };\n\n const methods = {\n ...polygonMethods,\n setBounds(latLngBounds) {\n leafletRef.value.setBounds(latLngBounds);\n },\n setLatLngs(latLngs) {\n // Calling setLatLngs on a Leaflet rectangle will convert it\n // to a polygon. So instead, we call setBounds here to ensure\n // that the rectangle remains a rectangle, defined by the\n // bounds of the points in the latLngs array.\n leafletRef.value.setBounds(latLngs);\n },\n };\n\n return { options, methods };\n};\n\n/**\n * Rectangle component, lets you add and customize rectangular regions on the map\n */\nvar script$i = {\n name: \"LRectangle\",\n props: props$m,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$l(props, leafletRef, context);\n\n onMounted(async () => {\n const { rectangle, latLngBounds, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n const bounds =\n props.bounds && props.bounds.length\n ? latLngBounds(props.bounds)\n : latLngBounds(props.latLngs);\n leafletRef.value = rectangle(bounds, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$i.__file = \"src/components/LRectangle.vue\";\n\nconst props$n = {\n ...props$e,\n tms: {\n type: Boolean,\n default: false,\n },\n subdomains: {\n type: String,\n default: \"abc\",\n },\n detectRetina: {\n type: Boolean,\n default: false,\n },\n url: {\n type: String,\n default: null,\n },\n};\n\nconst setup$m = (props, leafletRef) => {\n const {\n options: gridLayerOptions,\n methods: gridLayerMethods,\n } = setup$e(props, leafletRef);\n const options = {\n ...gridLayerOptions,\n tms: props.tms,\n subdomains: props.subdomains,\n detectRetina: props.detectRetina,\n };\n return {\n options,\n methods: {\n ...gridLayerMethods,\n },\n };\n};\n\nvar script$j = {\n props: props$n,\n setup(props, context) {\n const leafletRef = ref({});\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$m(props, leafletRef);\n\n onMounted(async () => {\n const { tileLayer, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n leafletRef.value = tileLayer(props.url, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n\n return { leafletObject: leafletRef };\n },\n render() {\n return null;\n },\n};\n\nscript$j.__file = \"src/components/LTileLayer.vue\";\n\nconst props$o = {\n ...props$k,\n};\n\nconst setup$n = (props, leafletRef) => {\n const { options, methods } = setup$j(props, leafletRef);\n const unbindTooltip = inject(\"unbindTooltip\");\n\n onBeforeUnmount(() => {\n unbindTooltip();\n });\n\n return { options, methods };\n};\n\n/**\n * Display a tooltip on the map\n */\nvar script$k = {\n name: \"LTooltip\",\n props: props$o,\n setup(props, context) {\n const leafletRef = ref({});\n const root = ref(null);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const bindTooltip = inject(\"bindTooltip\");\n\n const { options, methods } = setup$n(props, leafletRef);\n\n onMounted(async () => {\n const { tooltip, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = tooltip(options);\n\n propsBinder(methods, leafletRef.value, props);\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n leafletRef.value.setContent(props.content || root.value);\n bindTooltip({ leafletObject: leafletRef.value });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { root, leafletObject: leafletRef };\n },\n render() {\n return render$2(this.$slots);\n },\n};\n\nscript$k.__file = \"src/components/LTooltip.vue\";\n\nconst props$p = {\n ...props$n,\n baseUrl: {\n type: String,\n default: null,\n required: true,\n },\n layers: {\n type: String,\n default: \"\",\n },\n styles: {\n type: String,\n default: \"\",\n },\n format: {\n type: String,\n default: \"image/jpeg\",\n },\n transparent: {\n type: Boolean,\n custom: false,\n },\n version: {\n type: String,\n default: \"1.1.1\",\n },\n crs: {\n default: null,\n },\n upperCase: {\n type: Boolean,\n default: false,\n },\n};\n\nconst setup$o = (props, leafletRef) => {\n const {\n options: tileLayerOptions,\n methods: tileLayerMethods,\n } = setup$m(props, leafletRef);\n const options = {\n ...tileLayerOptions,\n layers: props.layers,\n styles: props.styles,\n format: props.format,\n transparent: props.transparent,\n version: props.version,\n crs: props.crs,\n upperCase: props.upperCase,\n };\n return {\n options,\n methods: {\n ...tileLayerMethods,\n },\n };\n};\n\nvar script$l = {\n props: props$p,\n setup(props, context) {\n const leafletRef = ref({});\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$o(props, leafletRef);\n\n onMounted(async () => {\n const { tileLayer, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = tileLayer.wms(props.baseUrl, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { leafletObject: leafletRef.value };\n },\n render() {\n return null;\n },\n};\n\nscript$l.__file = \"src/components/LWmsTileLayer.vue\";\n\nexport { script as LCircle, script$1 as LCircleMarker, script$2 as LControl, script$3 as LControlAttribution, script$4 as LControlLayers, script$5 as LControlScale, script$6 as LControlZoom, script$7 as LFeatureGroup, script$8 as LGeoJson, script$9 as LGridLayer, script$a as LIcon, script$b as LImageOverlay, script$c as LLayerGroup, script$d as LMap, script$e as LMarker, script$f as LPolygon, script$g as LPolyline, script$h as LPopup, script$i as LRectangle, script$j as LTileLayer, script$k as LTooltip, script$l as LWmsTileLayer };\n//# sourceMappingURL=vue-leaflet.esm.js.map\n","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, vModelSelect as _vModelSelect, withDirectives as _withDirectives, vModelText as _vModelText, resolveComponent as _resolveComponent, createVNode as _createVNode, createBlock as _createBlock, withModifiers as _withModifiers, withCtx as _withCtx, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-8eb73dd0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-form\" }\nconst _hoisted_2 = { class: \"form-items\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"form-item-radio\"\n}\nconst _hoisted_4 = [\"checked\", \"disabled\"]\nconst _hoisted_5 = { for: \"withGpx\" }\nconst _hoisted_6 = [\"checked\", \"disabled\"]\nconst _hoisted_7 = { for: \"withoutGpx\" }\nconst _hoisted_8 = { class: \"form-item\" }\nconst _hoisted_9 = [\"disabled\"]\nconst _hoisted_10 = [\"value\"]\nconst _hoisted_11 = {\n key: 1,\n class: \"form-item\"\n}\nconst _hoisted_12 = { for: \"gpxFile\" }\nconst _hoisted_13 = [\"disabled\"]\nconst _hoisted_14 = { class: \"files-help info-box\" }\nconst _hoisted_15 = {\n key: 2,\n class: \"form-item\"\n}\nconst _hoisted_16 = { for: \"title\" }\nconst _hoisted_17 = [\"required\", \"disabled\"]\nconst _hoisted_18 = { key: 3 }\nconst _hoisted_19 = { class: \"workout-date-duration\" }\nconst _hoisted_20 = { class: \"form-item\" }\nconst _hoisted_21 = { class: \"workout-date-time\" }\nconst _hoisted_22 = [\"disabled\"]\nconst _hoisted_23 = [\"disabled\"]\nconst _hoisted_24 = { class: \"form-item\" }\nconst _hoisted_25 = [\"disabled\"]\nconst _hoisted_26 = /*#__PURE__*/_createTextVNode(\" : \")\nconst _hoisted_27 = [\"disabled\"]\nconst _hoisted_28 = /*#__PURE__*/_createTextVNode(\" : \")\nconst _hoisted_29 = [\"disabled\"]\nconst _hoisted_30 = { class: \"form-item\" }\nconst _hoisted_31 = [\"disabled\"]\nconst _hoisted_32 = { class: \"form-item\" }\nconst _hoisted_33 = { key: 1 }\nconst _hoisted_34 = {\n key: 2,\n class: \"form-buttons\"\n}\nconst _hoisted_35 = [\"disabled\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_CustomTextArea = _resolveComponent(\"CustomTextArea\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Loader = _resolveComponent(\"Loader\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n id: \"workout-edition\",\n class: _normalizeClass([\"center-card center-card with-margin\", { 'center-form': _ctx.workout && _ctx.workout.with_gpx }])\n }, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(`workouts.${_ctx.isCreation ? 'ADD' : 'EDIT'}_WORKOUT`)), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"form\", {\n onSubmit: _cache[12] || (_cache[12] = _withModifiers(\n//@ts-ignore\n(...args) => (_ctx.updateWorkout && _ctx.updateWorkout(...args)), [\"prevent\"]))\n }, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_ctx.isCreation)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"input\", {\n id: \"withGpx\",\n type: \"radio\",\n checked: _ctx.withGpx,\n disabled: _ctx.loading,\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.updateWithGpx && _ctx.updateWithGpx(...args)))\n }, null, 8, _hoisted_4),\n _createElementVNode(\"label\", _hoisted_5, _toDisplayString(_ctx.$t('workouts.WITH_GPX')), 1)\n ]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"input\", {\n id: \"withoutGpx\",\n type: \"radio\",\n checked: !_ctx.withGpx,\n disabled: _ctx.loading,\n onClick: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.updateWithGpx && _ctx.updateWithGpx(...args)))\n }, null, 8, _hoisted_6),\n _createElementVNode(\"label\", _hoisted_7, _toDisplayString(_ctx.$t('workouts.WITHOUT_GPX')), 1)\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.SPORT', 1)) + \": \", 1),\n _withDirectives(_createElementVNode(\"select\", {\n id: \"sport\",\n required: \"\",\n disabled: _ctx.loading,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.workoutDataObject.sport_id) = $event))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.translatedSports.filter((s) => s.is_active), (sport) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: sport.id,\n key: sport.id\n }, _toDisplayString(sport.label), 9, _hoisted_10))\n }), 128))\n ], 8, _hoisted_9), [\n [_vModelSelect, _ctx.workoutDataObject.sport_id]\n ])\n ]),\n (_ctx.isCreation && _ctx.withGpx)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n _createElementVNode(\"label\", _hoisted_12, _toDisplayString(_ctx.$t('workouts.GPX_FILE')) + \" \" + _toDisplayString(_ctx.$t('workouts.ZIP_ARCHIVE_DESCRIPTION')) + \": \", 1),\n _createElementVNode(\"input\", {\n id: \"gpxFile\",\n name: \"gpxFile\",\n type: \"file\",\n accept: \".gpx, .zip\",\n disabled: _ctx.loading,\n onInput: _cache[3] || (_cache[3] = \n//@ts-ignore\n(...args) => (_ctx.updateFile && _ctx.updateFile(...args)))\n }, null, 40, _hoisted_13),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"strong\", null, _toDisplayString(_ctx.$t('workouts.GPX_FILE')) + \":\", 1),\n _createElementVNode(\"ul\", null, [\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.MAX_SIZE')) + \": \" + _toDisplayString(_ctx.fileSizeLimit), 1)\n ])\n ]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"strong\", null, _toDisplayString(_ctx.$t('workouts.ZIP_ARCHIVE')) + \":\", 1),\n _createElementVNode(\"ul\", null, [\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.NO_FOLDER')), 1),\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.MAX_FILES')) + \": \" + _toDisplayString(_ctx.gpx_limit_import), 1),\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.MAX_SIZE')) + \": \" + _toDisplayString(_ctx.zipSizeLimit), 1)\n ])\n ])\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [\n _createElementVNode(\"label\", _hoisted_16, _toDisplayString(_ctx.$t('workouts.TITLE')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"title\",\n name: \"title\",\n type: \"text\",\n required: !_ctx.isCreation,\n disabled: _ctx.loading,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((_ctx.workoutDataObject.title) = $event))\n }, null, 8, _hoisted_17), [\n [_vModelText, _ctx.workoutDataObject.title]\n ])\n ])),\n (!_ctx.withGpx)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_18, [\n _createElementVNode(\"div\", _hoisted_19, [\n _createElementVNode(\"div\", _hoisted_20, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.WORKOUT_DATE')) + \":\", 1),\n _createElementVNode(\"div\", _hoisted_21, [\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-date\",\n name: \"workout-date\",\n type: \"date\",\n required: \"\",\n disabled: _ctx.loading,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((_ctx.workoutDataObject.workoutDate) = $event))\n }, null, 8, _hoisted_22), [\n [_vModelText, _ctx.workoutDataObject.workoutDate]\n ]),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-time\",\n name: \"workout-time\",\n class: \"workout-time\",\n type: \"time\",\n required: \"\",\n disabled: _ctx.loading,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((_ctx.workoutDataObject.workoutTime) = $event))\n }, null, 8, _hoisted_23), [\n [_vModelText, _ctx.workoutDataObject.workoutTime]\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_24, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DURATION')) + \":\", 1),\n _createElementVNode(\"div\", null, [\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-duration-hour\",\n name: \"workout-duration-hour\",\n class: \"workout-duration\",\n type: \"text\",\n placeholder: \"HH\",\n pattern: \"^([0-9]*[0-9])$\",\n required: \"\",\n disabled: _ctx.loading,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((_ctx.workoutDataObject.workoutDurationHour) = $event))\n }, null, 8, _hoisted_25), [\n [_vModelText, _ctx.workoutDataObject.workoutDurationHour]\n ]),\n _hoisted_26,\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-duration-minutes\",\n name: \"workout-duration-minutes\",\n class: \"workout-duration\",\n type: \"text\",\n pattern: \"^([0-5][0-9])$\",\n placeholder: \"MM\",\n required: \"\",\n disabled: _ctx.loading,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = ($event: any) => ((_ctx.workoutDataObject.workoutDurationMinutes) = $event))\n }, null, 8, _hoisted_27), [\n [_vModelText, _ctx.workoutDataObject.workoutDurationMinutes]\n ]),\n _hoisted_28,\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-duration-seconds\",\n name: \"workout-duration-seconds\",\n class: \"workout-duration\",\n type: \"text\",\n pattern: \"^([0-5][0-9])$\",\n placeholder: \"SS\",\n required: \"\",\n disabled: _ctx.loading,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = ($event: any) => ((_ctx.workoutDataObject.workoutDurationSeconds) = $event))\n }, null, 8, _hoisted_29), [\n [_vModelText, _ctx.workoutDataObject.workoutDurationSeconds]\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_30, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DISTANCE')) + \" (km):\", 1),\n _withDirectives(_createElementVNode(\"input\", {\n name: \"workout-distance\",\n type: \"number\",\n min: \"0\",\n step: \"0.1\",\n required: \"\",\n disabled: _ctx.loading,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = ($event: any) => ((_ctx.workoutDataObject.workoutDistance) = $event))\n }, null, 8, _hoisted_31), [\n [_vModelText, _ctx.workoutDataObject.workoutDistance]\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_32, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.NOTES')) + \": \", 1),\n _createVNode(_component_CustomTextArea, {\n name: \"notes\",\n input: _ctx.workoutDataObject.notes,\n disabled: _ctx.loading,\n onUpdateValue: _ctx.updateNotes\n }, null, 8, [\"input\", \"disabled\", \"onUpdateValue\"])\n ])\n ]),\n (_ctx.errorMessages)\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _ctx.errorMessages\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.loading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_33, [\n _createVNode(_component_Loader)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_34, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n type: \"submit\",\n disabled: _ctx.loading\n }, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 9, _hoisted_35),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[11] || (_cache[11] = _withModifiers(\n//@ts-ignore\n(...args) => (_ctx.onCancel && _ctx.onCancel(...args)), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1)\n ]))\n ], 32)\n ])\n ]),\n _: 1\n })\n ], 2))\n}","\n import {\n ComputedRef,\n PropType,\n defineComponent,\n computed,\n reactive,\n ref,\n watch,\n onMounted,\n onUnmounted,\n } from 'vue'\n import { useI18n } from 'vue-i18n'\n import { useRouter } from 'vue-router'\n\n import { ROOT_STORE, WORKOUTS_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { ISport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n import { IWorkout, IWorkoutForm } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { formatWorkoutDate, getDateWithTZ } from '@/utils/dates'\n import { getReadableFileSize } from '@/utils/files'\n import { translateSports } from '@/utils/sports'\n\n export default defineComponent({\n name: 'WorkoutEdition',\n props: {\n authUser: {\n type: Object as PropType,\n required: true,\n },\n isCreation: {\n type: Boolean,\n default: false,\n },\n loading: {\n type: Boolean,\n default: false,\n },\n sports: {\n type: Object as PropType,\n required: true,\n },\n workout: {\n type: Object as PropType,\n required: false,\n },\n },\n setup(props) {\n const { t } = useI18n()\n const store = useStore()\n const router = useRouter()\n\n onMounted(() => {\n if (props.workout && props.workout.id) {\n formatWorkoutForm(props.workout)\n }\n })\n\n const translatedSports: ComputedRef = computed(() =>\n translateSports(props.sports, t)\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const fileSizeLimit = appConfig.value.max_single_file_size\n ? getReadableFileSize(appConfig.value.max_single_file_size)\n : ''\n const gpx_limit_import = appConfig.value.gpx_limit_import\n const zipSizeLimit = appConfig.value.max_zip_file_size\n ? getReadableFileSize(appConfig.value.max_zip_file_size)\n : ''\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const workoutForm = reactive({\n sport_id: '',\n title: '',\n notes: '',\n workoutDate: '',\n workoutTime: '',\n workoutDurationHour: '',\n workoutDurationMinutes: '',\n workoutDurationSeconds: '',\n workoutDistance: '',\n })\n let withGpx = ref(\n props.workout ? props.workout.with_gpx : props.isCreation\n )\n let gpxFile: File | null = null\n\n function updateNotes(value: string) {\n workoutForm.notes = value\n }\n function updateWithGpx() {\n withGpx.value = !withGpx.value\n }\n function updateFile(event: Event & { target: HTMLInputElement }) {\n if (event.target.files) {\n gpxFile = event.target.files[0]\n }\n }\n function formatWorkoutForm(workout: IWorkout) {\n workoutForm.sport_id = `${workout.sport_id}`\n workoutForm.title = workout.title\n workoutForm.notes = workout.notes\n if (!workout.with_gpx) {\n const workoutDateTime = formatWorkoutDate(\n getDateWithTZ(workout.workout_date, props.authUser.timezone),\n 'yyyy-MM-dd'\n )\n const duration = workout.duration.split(':')\n workoutForm.workoutDistance = `${workout.distance}`\n workoutForm.workoutDate = workoutDateTime.workout_date\n workoutForm.workoutTime = workoutDateTime.workout_time\n workoutForm.workoutDurationHour = duration[0]\n workoutForm.workoutDurationMinutes = duration[1]\n workoutForm.workoutDurationSeconds = duration[2]\n }\n }\n function formatPayload(payload: IWorkoutForm) {\n payload.title = workoutForm.title\n payload.distance = +workoutForm.workoutDistance\n payload.duration =\n +workoutForm.workoutDurationHour * 3600 +\n +workoutForm.workoutDurationMinutes * 60 +\n +workoutForm.workoutDurationSeconds\n payload.workout_date = `${workoutForm.workoutDate} ${workoutForm.workoutTime}`\n }\n function updateWorkout() {\n const payload: IWorkoutForm = {\n sport_id: +workoutForm.sport_id,\n notes: workoutForm.notes,\n }\n if (props.workout) {\n if (props.workout.with_gpx) {\n payload.title = workoutForm.title\n } else {\n formatPayload(payload)\n }\n store.dispatch(WORKOUTS_STORE.ACTIONS.EDIT_WORKOUT, {\n workoutId: props.workout.id,\n data: payload,\n })\n } else {\n if (withGpx.value) {\n if (!gpxFile) {\n const errorMessage = 'workouts.NO_FILE_PROVIDED'\n store.commit(\n ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES,\n errorMessage\n )\n return\n }\n payload.file = gpxFile\n store.dispatch(WORKOUTS_STORE.ACTIONS.ADD_WORKOUT, payload)\n } else {\n formatPayload(payload)\n store.dispatch(\n WORKOUTS_STORE.ACTIONS.ADD_WORKOUT_WITHOUT_GPX,\n payload\n )\n }\n }\n }\n function onCancel() {\n if (props.workout) {\n router.push({\n name: 'Workout',\n params: { workoutId: props.workout.id },\n })\n } else {\n router.go(-1)\n }\n }\n\n watch(\n () => props.workout,\n async (\n newWorkout: IWorkout | undefined,\n previousWorkout: IWorkout | undefined\n ) => {\n if (newWorkout !== previousWorkout && newWorkout && newWorkout.id) {\n formatWorkoutForm(newWorkout)\n }\n }\n )\n\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\n\n return {\n appConfig,\n errorMessages,\n fileSizeLimit,\n gpx_limit_import,\n translatedSports,\n withGpx,\n zipSizeLimit,\n workoutDataObject: workoutForm,\n onCancel,\n updateFile,\n updateNotes,\n updateWithGpx,\n updateWorkout,\n }\n },\n })\n","import { render } from \"./WorkoutEdition.vue?vue&type=template&id=8eb73dd0&scoped=true&ts=true\"\nimport script from \"./WorkoutEdition.vue?vue&type=script&lang=ts\"\nexport * from \"./WorkoutEdition.vue?vue&type=script&lang=ts\"\n\nimport \"./WorkoutEdition.vue?vue&type=style&index=0&id=8eb73dd0&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-8eb73dd0\"]])\n\nexport default __exports__","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./WorkoutSegments.vue?vue&type=style&index=0&id=5c40d110&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./WorkoutWeather.vue?vue&type=style&index=0&id=7eb41918&lang=scss&scoped=true\"","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"add-workout\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_WorkoutEdition = _resolveComponent(\"WorkoutEdition\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_WorkoutEdition, {\n authUser: _ctx.authUser,\n sports: _ctx.sports,\n isCreation: true,\n loading: _ctx.workoutData.loading\n }, null, 8, [\"authUser\", \"sports\", \"loading\"])\n ])\n ]))\n}","\n import { computed, defineComponent, ComputedRef } from 'vue'\n\n import WorkoutEdition from '@/components/Workout/WorkoutEdition.vue'\n import {\n AUTH_USER_STORE,\n SPORTS_STORE,\n WORKOUTS_STORE,\n } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n import { IWorkoutData } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n\n export default defineComponent({\n name: 'AddWorkout',\n components: {\n WorkoutEdition,\n },\n setup() {\n const store = useStore()\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const workoutData: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUT_DATA]\n )\n return { authUser, sports, workoutData }\n },\n })\n","import { render } from \"./AddWorkout.vue?vue&type=template&id=725b1388&ts=true\"\nimport script from \"./AddWorkout.vue?vue&type=script&lang=ts\"\nexport * from \"./AddWorkout.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Workout.vue?vue&type=style&index=0&id=05bdbd04&lang=scss&scoped=true\"","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"edit-workout\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_WorkoutEdition = _resolveComponent(\"WorkoutEdition\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_WorkoutEdition, {\n authUser: _ctx.authUser,\n sports: _ctx.sports,\n workout: _ctx.workoutData.workout,\n loading: _ctx.workoutData.loading\n }, null, 8, [\"authUser\", \"sports\", \"workout\", \"loading\"])\n ])\n ]))\n}","\n import {\n computed,\n defineComponent,\n watch,\n onBeforeMount,\n ComputedRef,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import WorkoutEdition from '@/components/Workout/WorkoutEdition.vue'\n import {\n AUTH_USER_STORE,\n SPORTS_STORE,\n WORKOUTS_STORE,\n } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n import { IWorkoutData } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n\n export default defineComponent({\n name: 'EditWorkout',\n components: {\n WorkoutEdition,\n },\n setup() {\n const route = useRoute()\n const store = useStore()\n\n onBeforeMount(() => {\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, {\n workoutId: route.params.workoutId,\n })\n })\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const workoutData: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUT_DATA]\n )\n\n watch(\n () => route.params.workoutId,\n async (newWorkoutId) => {\n if (!newWorkoutId) {\n store.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n }\n }\n )\n\n return { authUser, sports, workoutData }\n },\n })\n","import { render } from \"./EditWorkout.vue?vue&type=template&id=e7ec5396&ts=true\"\nimport script from \"./EditWorkout.vue?vue&type=script&lang=ts\"\nexport * from \"./EditWorkout.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./WorkoutEdition.vue?vue&type=style&index=0&id=8eb73dd0&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./WorkoutRecord.vue?vue&type=style&index=0&id=da96984c&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=a17554ea&lang=scss&scoped=true\"","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t((e=\"undefined\"!=typeof globalThis?globalThis:e||self).toGeoJSON={})}(this,(function(e){\"use strict\";function t(e){return e&&e.normalize&&e.normalize(),e&&e.textContent||\"\"}function n(e,t){const n=e.getElementsByTagName(t);return n.length?n[0]:null}function o(e){const o={};if(e){const s=n(e,\"line\");if(s){const e=t(n(s,\"color\")),r=parseFloat(t(n(s,\"opacity\"))),i=parseFloat(t(n(s,\"width\")));e&&(o.stroke=e),isNaN(r)||(o[\"stroke-opacity\"]=r),isNaN(i)||(o[\"stroke-width\"]=96*i/25.4)}}return o}function s(e,o){const s={};let r,i;for(i=0;i1,g=Object.assign(r(e),o(n(e,\"extensions\")),{_gpxType:\"trk\"},i.length?{coordinateProperties:{times:c?i:i[0]}}:{});for(let e=0;enew Array(e.line.length).fill(null)))),t[n][e]=o):t[n]=o}}return{type:\"Feature\",properties:g,geometry:c?{type:\"MultiLineString\",coordinates:s}:{type:\"LineString\",coordinates:s[0]}}}function*g(e){const t=e.getElementsByTagName(\"trk\"),n=e.getElementsByTagName(\"rte\"),o=e.getElementsByTagName(\"wpt\");for(let e=0;eArray(e.length).fill(null)))),c[n][e]=t[n])}if(0!==s.length)return(r.length||i.length)&&(c.coordinateProperties=Object.assign(r.length?{times:1===s.length?r[0]:r}:{},i.length?{heart:1===s.length?i[0]:i}:{})),{type:\"Feature\",properties:c,geometry:{type:1===s.length?\"LineString\":\"MultiLineString\",coordinates:1===s.length?s[0]:s}}}function*y(e){const t=e.getElementsByTagName(\"Lap\");for(let e=0;e0?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",re,[Object(n["createVNode"])(i,{class:"top-pagination",pagination:e.pagination,path:"/workouts",query:e.query},null,8,["pagination","query"]),Object(n["createElementVNode"])("table",null,[Object(n["createElementVNode"])("thead",null,[Object(n["createElementVNode"])("tr",null,[ae,Object(n["createElementVNode"])("th",null,Object(n["toDisplayString"])(e.capitalize(e.$t("workouts.WORKOUT",1))),1),Object(n["createElementVNode"])("th",null,Object(n["toDisplayString"])(e.capitalize(e.$t("workouts.DATE"))),1),Object(n["createElementVNode"])("th",null,Object(n["toDisplayString"])(e.capitalize(e.$t("workouts.DISTANCE"))),1),Object(n["createElementVNode"])("th",null,Object(n["toDisplayString"])(e.capitalize(e.$t("workouts.DURATION"))),1),Object(n["createElementVNode"])("th",null,Object(n["toDisplayString"])(e.capitalize(e.$t("workouts.AVE_SPEED"))),1),Object(n["createElementVNode"])("th",null,Object(n["toDisplayString"])(e.capitalize(e.$t("workouts.MAX_SPEED"))),1),Object(n["createElementVNode"])("th",null,Object(n["toDisplayString"])(e.capitalize(e.$t("workouts.ASCENT"))),1),Object(n["createElementVNode"])("th",null,Object(n["toDisplayString"])(e.capitalize(e.$t("workouts.DESCENT"))),1)])]),Object(n["createElementVNode"])("tbody",null,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.workouts,(function(o){return Object(n["openBlock"])(),Object(n["createElementBlock"])("tr",{key:o.id},[Object(n["createElementVNode"])("td",ce,[Object(n["createElementVNode"])("span",le,Object(n["toDisplayString"])(e.$t("workouts.SPORT",1)),1),Object(n["createVNode"])(u,{title:e.sports.filter((function(e){return e.id===o.sport_id}))[0].translatedLabel,"sport-label":e.sports.filter((function(e){return e.id===o.sport_id}))[0].label},null,8,["title","sport-label"])]),Object(n["createElementVNode"])("td",{class:"workout-title",onMouseover:function(t){return e.onHover(o.id)},onMouseleave:t[0]||(t[0]=function(t){return e.onHover(null)})},[Object(n["createElementVNode"])("span",ue,Object(n["toDisplayString"])(e.capitalize(e.$t("workouts.WORKOUT",1))),1),Object(n["createVNode"])(s,{class:"nav-item",to:{name:"Workout",params:{workoutId:o.id}}},{default:Object(n["withCtx"])((function(){return[o.with_gpx?(Object(n["openBlock"])(),Object(n["createElementBlock"])("i",se)):Object(n["createCommentVNode"])("",!0),Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(o.title),1)]})),_:2},1032,["to"]),o.with_gpx&&e.hoverWorkoutId===o.id?(Object(n["openBlock"])(),Object(n["createBlock"])(d,{key:0,workout:o,"display-hover":!0},null,8,["workout"])):Object(n["createCommentVNode"])("",!0)],40,ie),Object(n["createElementVNode"])("td",null,[Object(n["createElementVNode"])("span",de,Object(n["toDisplayString"])(e.$t("workouts.DATE")),1),Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(e.format(e.getDateWithTZ(o.workout_date,e.user.timezone),"dd/MM/yyyy HH:mm")),1)]),Object(n["createElementVNode"])("td",pe,[Object(n["createElementVNode"])("span",be,Object(n["toDisplayString"])(e.$t("workouts.DISTANCE")),1),Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(Number(o.distance).toFixed(2))+" km ",1)]),Object(n["createElementVNode"])("td",me,[Object(n["createElementVNode"])("span",Oe,Object(n["toDisplayString"])(e.$t("workouts.DURATION")),1),Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(o.moving),1)]),Object(n["createElementVNode"])("td",je,[Object(n["createElementVNode"])("span",fe,Object(n["toDisplayString"])(e.$t("workouts.AVE_SPEED")),1),Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(o.ave_speed)+" km/h ",1)]),Object(n["createElementVNode"])("td",ke,[Object(n["createElementVNode"])("span",ge,Object(n["toDisplayString"])(e.$t("workouts.MAX_SPEED")),1),Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(o.max_speed)+" km/h ",1)]),Object(n["createElementVNode"])("td",ye,[Object(n["createElementVNode"])("span",we,Object(n["toDisplayString"])(e.$t("workouts.ASCENT")),1),o.with_gpx?(Object(n["openBlock"])(),Object(n["createElementBlock"])("span",he,Object(n["toDisplayString"])(o.ascent)+" m",1)):Object(n["createCommentVNode"])("",!0)]),Object(n["createElementVNode"])("td",ve,[Object(n["createElementVNode"])("span",Ee,Object(n["toDisplayString"])(e.$t("workouts.DESCENT")),1),o.with_gpx?(Object(n["openBlock"])(),Object(n["createElementBlock"])("span",Ne,Object(n["toDisplayString"])(o.descent)+" m",1)):Object(n["createCommentVNode"])("",!0)])])})),128))])]),Object(n["createVNode"])(i,{pagination:e.pagination,path:"/workouts",query:e.query},null,8,["pagination","query"])])):Object(n["createCommentVNode"])("",!0)],2),0===e.workouts.length?(Object(n["openBlock"])(),Object(n["createBlock"])(p,{key:0})):Object(n["createCommentVNode"])("",!0),Se])}var Te=o("1da1"),De=(o("96cf"),o("d81d"),o("b64b"),o("b166")),Ce=o("9176"),_e=o("6d7d"),xe=o("68c6"),Be=o("1724"),Ae=o("dad5"),Re=o("2906"),Ie=o("97e5"),Le=o("5e65"),Ue=o("9230"),Me=Object(n["defineComponent"])({name:"WorkoutsList",components:{FilterSelects:Ce["a"],NoWorkouts:Be["a"],Pagination:_e["a"],StaticMap:xe["a"]},props:{user:{type:Object,required:!0},sports:{type:Object}},setup:function(){var e=Object(Re["a"])(),t=Object(z["c"])(),o=Object(z["d"])(),r=["ave_speed","distance","duration","workout_date"],a=Object(n["computed"])((function(){return e.getters[Ae["f"].GETTERS.USER_WORKOUTS]})),c=Object(n["computed"])((function(){return e.getters[Ae["f"].GETTERS.WORKOUTS_PAGINATION]})),l=d(t.query),i=Object(n["ref"])(null);function u(t){e.dispatch(Ae["f"].ACTIONS.GET_USER_WORKOUTS,t)}function s(e,n){var r=Object.assign({},t.query);r[e]=n,"per_page"===e&&(r["page"]="1"),l=d(r),o.push({path:"/workouts",query:l})}function d(e){return l=Object(Ie["a"])(e,r,Ue["a"].order_by,{defaultSort:Ue["a"].order,query:l}),Object.keys(e).filter((function(e){return Ie["d"].includes(e)})).map((function(t){"string"===typeof e[t]&&(l[t]=e[t])})),l}function p(e){i.value=e}return Object(n["onBeforeMount"])((function(){u(l)})),Object(n["watch"])((function(){return t.query}),function(){var e=Object(Te["a"])(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:l=d(t),u(l);case 2:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),{query:l,hoverWorkoutId:i,orderByList:r,pagination:c,sortList:Ie["c"],workouts:a,capitalize:n["capitalize"],format:De["a"],getDateWithTZ:Le["c"],onHover:p,reloadWorkouts:s}}});o("f7f3");const We=J()(Me,[["render",Ve],["__scopeId","data-v-a4169f0c"]]);var $e=We,Fe=Object(n["defineComponent"])({name:"WorkoutsView",components:{WorkoutsFilters:Y,WorkoutsList:$e},setup:function(){var e=Object(u["b"])(),t=e.t,o=Object(Re["a"])(),r=Object(n["computed"])((function(){return o.getters[Ae["a"].GETTERS.AUTH_USER_PROFILE]})),a=Object(n["computed"])((function(){return o.getters[Ae["c"].GETTERS.SPORTS]})),c=Object(n["computed"])((function(){return Object(H["d"])(a.value,t)})),l=Object(n["ref"])(!0);function i(){l.value=!l.value}return{authUser:r,hiddenFilters:l,translatedSports:c,toggleFilters:i}}});o("3ad7");const Pe=J()(Fe,[["render",i],["__scopeId","data-v-22a8a7cd"]]);t["default"]=Pe},"166a":function(e,t,o){"use strict";o("43bc")},"172f":function(e,t,o){},2794:function(e,t,o){"use strict";o("3854")},"2de4":function(e,t,o){},"304a":function(e,t,o){"use strict";o.r(t);var n=o("7a23"),r=function(e){return Object(n["pushScopeId"])("data-v-05bdbd04"),e=e(),Object(n["popScopeId"])(),e},a={id:"workout",class:"view"},c={class:"container"},l={key:0,class:"workout-container"},i={key:0},u=r((function(){return Object(n["createElementVNode"])("div",{id:"bottom"},null,-1)})),s={key:1};function d(e,t,o,r,d,p){var b=Object(n["resolveComponent"])("WorkoutDetail"),m=Object(n["resolveComponent"])("WorkoutChart"),O=Object(n["resolveComponent"])("WorkoutSegments"),j=Object(n["resolveComponent"])("WorkoutNotes"),f=Object(n["resolveComponent"])("NotFound");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",a,[Object(n["createElementVNode"])("div",c,[e.sports.length>0?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",l,[e.workoutData.workout.id?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",i,[Object(n["createVNode"])(b,{workoutData:e.workoutData,sports:e.sports,authUser:e.authUser,markerCoordinates:e.markerCoordinates,displaySegment:e.displaySegment},null,8,["workoutData","sports","authUser","markerCoordinates","displaySegment"]),e.workoutData.workout.with_gpx&&e.workoutData.chartData.length>0?(Object(n["openBlock"])(),Object(n["createBlock"])(m,{key:0,workoutData:e.workoutData,authUser:e.authUser,displaySegment:e.displaySegment,onGetCoordinates:e.updateCoordinates},null,8,["workoutData","authUser","displaySegment","onGetCoordinates"])):Object(n["createCommentVNode"])("",!0),!e.displaySegment&&e.workoutData.workout.segments.length>1?(Object(n["openBlock"])(),Object(n["createBlock"])(O,{key:1,segments:e.workoutData.workout.segments},null,8,["segments"])):Object(n["createCommentVNode"])("",!0),e.displaySegment?Object(n["createCommentVNode"])("",!0):(Object(n["openBlock"])(),Object(n["createBlock"])(j,{key:2,notes:e.workoutData.workout.notes},null,8,["notes"])),u])):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",s,[e.workoutData.loading?Object(n["createCommentVNode"])("",!0):(Object(n["openBlock"])(),Object(n["createBlock"])(f,{key:0,target:"WORKOUT"}))]))])):Object(n["createCommentVNode"])("",!0)])])}var p=o("1da1"),b=(o("96cf"),o("6c02")),m=o("f7f9"),O={id:"workout-chart"},j={class:"chart-radio"},f=["checked"],k=["checked"],g={class:"no-data-cleaning"};function y(e,t,o,r,a,c){var l=Object(n["resolveComponent"])("LineChart"),i=Object(n["resolveComponent"])("Card");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",O,[Object(n["createVNode"])(i,null,{title:Object(n["withCtx"])((function(){return[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e.$t("workouts.ANALYSIS")),1)]})),content:Object(n["withCtx"])((function(){return[Object(n["createElementVNode"])("div",j,[Object(n["createElementVNode"])("label",null,[Object(n["createElementVNode"])("input",{type:"radio",name:"distance",checked:e.displayDistance,onClick:t[0]||(t[0]=function(){return e.updateDisplayDistance&&e.updateDisplayDistance.apply(e,arguments)})},null,8,f),Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(e.$t("workouts.DISTANCE")),1)]),Object(n["createElementVNode"])("label",null,[Object(n["createElementVNode"])("input",{type:"radio",name:"duration",checked:!e.displayDistance,onClick:t[1]||(t[1]=function(){return e.updateDisplayDistance&&e.updateDisplayDistance.apply(e,arguments)})},null,8,k),Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(e.$t("workouts.DURATION")),1)])]),Object(n["createVNode"])(l,Object(n["mergeProps"])(e.lineChartProps,{class:"line-chart",onMouseleave:e.emitEmptyCoordinates}),null,16,["onMouseleave"]),Object(n["createElementVNode"])("div",g,Object(n["toDisplayString"])(e.$t("workouts.NO_DATA_CLEANING")),1)]})),_:1})])}var w=o("ade3"),h=(o("e9c4"),o("b680"),o("a9e3"),o("99af"),o("ac1f"),o("5319"),o("b48c")),v=o("47e2"),E=o("9230"),N=Object(n["defineComponent"])({name:"WorkoutChart",components:{LineChart:h["LineChart"]},props:{authUser:{type:Object,required:!0},workoutData:{type:Object,required:!0}},emits:["getCoordinates"],setup:function(e,t){var o=t.emit,r=Object(v["b"])(),a=r.t,c=Object(n["ref"])(!0),l=Object(n["computed"])((function(){return Object(E["b"])(e.workoutData.chartData,a)})),i=Object(n["computed"])((function(){return{labels:c.value?l.value.distance_labels:l.value.duration_labels,datasets:JSON.parse(JSON.stringify([l.value.datasets.speed,l.value.datasets.elevation]))}})),u=Object(n["computed"])((function(){return l.value.coordinates})),s=Object(n["computed"])((function(){var e;return{responsive:!0,maintainAspectRatio:!0,animation:!1,layout:{padding:{top:22}},scales:(e={},Object(w["a"])(e,c.value?"xDistance":"xDuration",{grid:{drawOnChartArea:!1},ticks:{count:10,callback:function(e){return c.value?Number(e).toFixed(2):p(e)}},type:"linear",bounds:"data",title:{display:!0,text:c.value?a("workouts.DISTANCE")+" (km)":a("workouts.DURATION")}}),Object(w["a"])(e,"ySpeed",{grid:{drawOnChartArea:!1},position:"left",title:{display:!0,text:a("workouts.SPEED")+" (km/h)"}}),Object(w["a"])(e,"yElevation",{beginAtZero:!0,grid:{drawOnChartArea:!1},position:"right",title:{display:!0,text:a("workouts.ELEVATION")+" (m)"}}),e),elements:{point:{pointStyle:"circle",pointRadius:0}},plugins:{datalabels:{display:!1},tooltip:{interaction:{intersect:!1,mode:"index"},callbacks:{label:function(e){var t=" ".concat(e.dataset.label,": ").concat(e.formattedValue);return"yElevation"===e.dataset.yAxisID?t+" m":t+" km/h"},title:function(e){return e.length>0&&b(u.value[e[0].dataIndex]),0===e.length?"":c.value?"".concat(a("workouts.DISTANCE"),": ").concat(e[0].label," km"):"".concat(a("workouts.DURATION"),": ").concat(p(e[0].label.replace(",","")))}}}}}}));function d(){c.value=!c.value}function p(e){return new Date(1e3*+e).toISOString().substr(11,8)}function b(e){o("getCoordinates",e)}function m(){b({latitude:null,longitude:null})}var O=Object(h["useLineChart"])({chartData:i,options:s}),j=O.lineChartProps;return{displayDistance:c,lineChartProps:j,emitEmptyCoordinates:m,updateDisplayDistance:d}}}),S=(o("5687"),o("6b0d")),V=o.n(S);const T=V()(N,[["render",y],["__scopeId","data-v-2230775e"]]);var D=T,C={class:"workout-detail"};function _(e,t,o,r,a,c){var l=Object(n["resolveComponent"])("Modal"),i=Object(n["resolveComponent"])("WorkoutCardTitle"),u=Object(n["resolveComponent"])("WorkoutMap"),s=Object(n["resolveComponent"])("WorkoutData"),d=Object(n["resolveComponent"])("Card");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",C,[e.displayModal?(Object(n["openBlock"])(),Object(n["createBlock"])(l,{key:0,title:e.$t("common.CONFIRMATION"),message:e.$t("workouts.WORKOUT_DELETION_CONFIRMATION"),onConfirmAction:t[0]||(t[0]=function(t){return e.deleteWorkout(e.workoutObject.workoutId)}),onCancelAction:t[1]||(t[1]=function(t){return e.updateDisplayModal(!1)})},null,8,["title","message"])):Object(n["createCommentVNode"])("",!0),Object(n["createVNode"])(d,null,{title:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(i,{sport:e.sport,workoutObject:e.workoutObject,onDisplayModal:t[2]||(t[2]=function(t){return e.updateDisplayModal(!0)})},null,8,["sport","workoutObject"])]})),content:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(u,{workoutData:e.workoutData,markerCoordinates:e.markerCoordinates},null,8,["workoutData","markerCoordinates"]),Object(n["createVNode"])(s,{workoutObject:e.workoutObject},null,8,["workoutObject"])]})),_:1})])}o("7db0"),o("d3b7");var x=function(e){return Object(n["pushScopeId"])("data-v-9cab340c"),e=e(),Object(n["popScopeId"])(),e},B={id:"workout-card-title"},A=["title"],R=x((function(){return Object(n["createElementVNode"])("i",{class:"fa fa-chevron-left","aria-hidden":"true"},null,-1)})),I=[R],L={class:"workout-card-title"},U={class:"workout-title-date"},M={key:0,class:"workout-title"},W={key:1,class:"workout-title"},$={class:"workout-segment"},F=Object(n["createTextVNode"])(" — "),P=x((function(){return Object(n["createElementVNode"])("i",{class:"fa fa-map-marker","aria-hidden":"true"},null,-1)})),G={class:"workout-date"},q={class:"workout-link"},z=["title"],H=x((function(){return Object(n["createElementVNode"])("i",{class:"fa fa-chevron-right","aria-hidden":"true"},null,-1)})),K=[H];function Z(e,t,o,r,a,c){var l=Object(n["resolveComponent"])("SportImage"),i=Object(n["resolveComponent"])("router-link");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",B,[Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["workout-previous workout-arrow",{inactive:!e.workoutObject.previousUrl}]),title:e.workoutObject.previousUrl?e.$t("workouts.PREVIOUS_".concat(e.workoutObject.type)):e.$t("workouts.NO_PREVIOUS_".concat(e.workoutObject.type)),onClick:t[0]||(t[0]=function(t){return e.workoutObject.previousUrl?e.$router.push(e.workoutObject.previousUrl):null})},I,10,A),Object(n["createElementVNode"])("div",L,[Object(n["createVNode"])(l,{"sport-label":e.sport.label},null,8,["sport-label"]),Object(n["createElementVNode"])("div",U,["WORKOUT"===e.workoutObject.type?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",M,[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e.workoutObject.title)+" ",1),Object(n["createElementVNode"])("i",{class:"fa fa-edit","aria-hidden":"true",onClick:t[1]||(t[1]=function(t){return e.$router.push({name:"EditWorkout",params:{workoutId:e.workoutObject.workoutId}})})}),Object(n["createElementVNode"])("i",{class:"fa fa-trash","aria-hidden":"true",onClick:t[2]||(t[2]=function(t){return e.emit("displayModal",!0)})})])):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",W,[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e.workoutObject.title)+" ",1),Object(n["createElementVNode"])("span",$,[F,P,Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(e.$t("workouts.SEGMENT"))+" "+Object(n["toDisplayString"])(e.workoutObject.segmentId+1),1)])])),Object(n["createElementVNode"])("div",G,[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e.workoutObject.workoutDate)+" - "+Object(n["toDisplayString"])(e.workoutObject.workoutTime)+" ",1),Object(n["createElementVNode"])("span",q,["SEGMENT"===e.workoutObject.type?(Object(n["openBlock"])(),Object(n["createBlock"])(i,{key:0,to:{name:"Workout",params:{workoutId:e.workoutObject.workoutId}}},{default:Object(n["withCtx"])((function(){return[Object(n["createTextVNode"])(" > "+Object(n["toDisplayString"])(e.$t("workouts.BACK_TO_WORKOUT")),1)]})),_:1},8,["to"])):Object(n["createCommentVNode"])("",!0)])])])]),Object(n["createElementVNode"])("div",{class:Object(n["normalizeClass"])(["workout-next workout-arrow",{inactive:!e.workoutObject.nextUrl}]),title:e.workoutObject.nextUrl?e.$t("workouts.NEXT_".concat(e.workoutObject.type)):e.$t("workouts.NO_NEXT_".concat(e.workoutObject.type)),onClick:t[3]||(t[3]=function(t){return e.workoutObject.nextUrl?e.$router.push(e.workoutObject.nextUrl):null})},K,10,z)])}var J=Object(n["defineComponent"])({name:"WorkoutCardTitle",props:{sport:{type:Object,required:!0},workoutObject:{type:Object,required:!0}},emits:["displayModal"],setup:function(e,t){var o=t.emit;return{emit:o}}});o("5910");const X=V()(J,[["render",Z],["__scopeId","data-v-9cab340c"]]);var Y=X,Q=function(e){return Object(n["pushScopeId"])("data-v-aa863bde"),e=e(),Object(n["popScopeId"])(),e},ee={id:"workout-info"},te={class:"workout-data"},oe=Q((function(){return Object(n["createElementVNode"])("i",{class:"fa fa-clock-o","aria-hidden":"true"},null,-1)})),ne={key:0},re={class:"workout-data"},ae=Q((function(){return Object(n["createElementVNode"])("i",{class:"fa fa-road","aria-hidden":"true"},null,-1)})),ce={class:"workout-data"},le=Q((function(){return Object(n["createElementVNode"])("i",{class:"fa fa-tachometer","aria-hidden":"true"},null,-1)})),ie=Q((function(){return Object(n["createElementVNode"])("br",null,null,-1)})),ue={key:0,class:"workout-data"},se=["alt"],de=Q((function(){return Object(n["createElementVNode"])("br",null,null,-1)})),pe={key:1,class:"workout-data"},be=Q((function(){return Object(n["createElementVNode"])("i",{class:"fa fa-location-arrow","aria-hidden":"true"},null,-1)})),me=Q((function(){return Object(n["createElementVNode"])("br",null,null,-1)}));function Oe(e,t,o,r,a,c){var l=Object(n["resolveComponent"])("WorkoutRecord"),i=Object(n["resolveComponent"])("WorkoutWeather");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ee,[Object(n["createElementVNode"])("div",te,[oe,Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(e.$t("workouts.DURATION"))+": ",1),Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.workoutObject.moving),1),Object(n["createVNode"])(l,{workoutObject:e.workoutObject,record_type:"LD"},null,8,["workoutObject"]),e.withPause?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ne,[Object(n["createTextVNode"])(" ("+Object(n["toDisplayString"])(e.$t("workouts.PAUSES"))+": ",1),Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.workoutObject.pauses),1),Object(n["createTextVNode"])(" - "+Object(n["toDisplayString"])(e.$t("workouts.TOTAL_DURATION"))+": ",1),Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.workoutObject.duration)+")",1)])):Object(n["createCommentVNode"])("",!0)]),Object(n["createElementVNode"])("div",re,[ae,Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(e.$t("workouts.DISTANCE"))+": ",1),Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.workoutObject.distance)+" km",1),Object(n["createVNode"])(l,{workoutObject:e.workoutObject,record_type:"FD"},null,8,["workoutObject"])]),Object(n["createElementVNode"])("div",ce,[le,Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(e.$t("workouts.AVERAGE_SPEED"))+": ",1),Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.workoutObject.aveSpeed)+" km/h",1),Object(n["createVNode"])(l,{workoutObject:e.workoutObject,record_type:"AS"},null,8,["workoutObject"]),ie,Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(e.$t("workouts.MAX_SPEED"))+": ",1),Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.workoutObject.maxSpeed)+" km/h",1),Object(n["createVNode"])(l,{workoutObject:e.workoutObject,record_type:"MS"},null,8,["workoutObject"])]),null!==e.workoutObject.maxAlt&&null!==e.workoutObject.minAlt?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ue,[Object(n["createElementVNode"])("img",{class:"mountains",src:"/img/workouts/mountains.svg",alt:e.$t("workouts.ELEVATION")},null,8,se),Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(e.$t("workouts.MIN_ALTITUDE"))+": ",1),Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.workoutObject.minAlt)+" m",1),de,Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(e.$t("workouts.MAX_ALTITUDE"))+": ",1),Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.workoutObject.maxAlt)+" m",1)])):Object(n["createCommentVNode"])("",!0),null!==e.workoutObject.ascent&&null!==e.workoutObject.descent?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",pe,[be,Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(e.$t("workouts.ASCENT"))+": ",1),Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.workoutObject.ascent)+" m",1),me,Object(n["createTextVNode"])(" "+Object(n["toDisplayString"])(e.$t("workouts.DESCENT"))+": ",1),Object(n["createElementVNode"])("span",null,Object(n["toDisplayString"])(e.workoutObject.descent)+" m",1)])):Object(n["createCommentVNode"])("",!0),Object(n["createVNode"])(i,{workoutObject:e.workoutObject},null,8,["workoutObject"])])}var je=function(e){return Object(n["pushScopeId"])("data-v-da96984c"),e=e(),Object(n["popScopeId"])(),e},fe={key:0,class:"workout-record"},ke=je((function(){return Object(n["createElementVNode"])("sup",null,[Object(n["createElementVNode"])("i",{class:"fa fa-trophy","aria-hidden":"true"})],-1)})),ge=[ke];function ye(e,t,o,r,a,c){return e.workoutObject.records&&e.workoutObject.records.find((function(t){return t.record_type===e.record_type}))?(Object(n["openBlock"])(),Object(n["createElementBlock"])("span",fe,ge)):Object(n["createCommentVNode"])("",!0)}var we=Object(n["defineComponent"])({name:"WorkoutRecord",props:{record_type:{type:String,required:!0},workoutObject:{type:Object,required:!0}}});o("bfb4");const he=V()(we,[["render",ye],["__scopeId","data-v-da96984c"]]);var ve=he,Ee=function(e){return Object(n["pushScopeId"])("data-v-7eb41918"),e=e(),Object(n["popScopeId"])(),e},Ne={key:0,id:"workout-weather"},Se={class:"weather-table"},Ve=Ee((function(){return Object(n["createElementVNode"])("th",null,null,-1)})),Te={class:"weather-th"},De=["src","alt","title"],Ce={class:"weather-th"},_e=["src","alt","title"],xe=["alt","title"],Be=["alt","title"],Ae=["alt","title"];function Re(e,t,o,r,a,c){return e.workoutObject.weatherStart&&e.workoutObject.weatherEnd?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Ne,[Object(n["createElementVNode"])("table",Se,[Object(n["createElementVNode"])("thead",null,[Object(n["createElementVNode"])("tr",null,[Ve,Object(n["createElementVNode"])("th",null,[Object(n["createElementVNode"])("div",Te,[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e.$t("workouts.START"))+" ",1),Object(n["createElementVNode"])("img",{class:"weather-img",src:"/img/weather/".concat(e.workoutObject.weatherStart.icon,".svg"),alt:e.$t("workouts.WEATHER.DARK_SKY.".concat(e.workoutObject.weatherStart.icon)),title:e.$t("workouts.WEATHER.DARK_SKY.".concat(e.workoutObject.weatherStart.icon))},null,8,De)])]),Object(n["createElementVNode"])("th",null,[Object(n["createElementVNode"])("div",Ce,[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e.$t("workouts.END"))+" ",1),Object(n["createElementVNode"])("img",{class:"weather-img",src:"/img/weather/".concat(e.workoutObject.weatherEnd.icon,".svg"),alt:e.$t("workouts.WEATHER.DARK_SKY.".concat(e.workoutObject.weatherEnd.icon)),title:e.$t("workouts.WEATHER.DARK_SKY.".concat(e.workoutObject.weatherEnd.icon))},null,8,_e)])])])]),Object(n["createElementVNode"])("tbody",null,[Object(n["createElementVNode"])("tr",null,[Object(n["createElementVNode"])("td",null,[Object(n["createElementVNode"])("img",{class:"weather-img weather-img-small",src:"/img/weather/temperature.svg",alt:e.$t("workouts.WEATHER.TEMPERATURE"),title:e.$t("workouts.WEATHER.TEMPERATURE")},null,8,xe)]),Object(n["createElementVNode"])("td",null,Object(n["toDisplayString"])(Number(e.workoutObject.weatherStart.temperature).toFixed(1))+"°C ",1),Object(n["createElementVNode"])("td",null,Object(n["toDisplayString"])(Number(e.workoutObject.weatherEnd.temperature).toFixed(1))+"°C ",1)]),Object(n["createElementVNode"])("tr",null,[Object(n["createElementVNode"])("td",null,[Object(n["createElementVNode"])("img",{class:"weather-img weather-img-small",src:"/img/weather/pour-rain.svg",alt:e.$t("workouts.WEATHER.HUMIDITY"),title:e.$t("workouts.WEATHER.HUMIDITY")},null,8,Be)]),Object(n["createElementVNode"])("td",null,Object(n["toDisplayString"])(Number(100*e.workoutObject.weatherStart.humidity).toFixed(1))+"% ",1),Object(n["createElementVNode"])("td",null,Object(n["toDisplayString"])(Number(100*e.workoutObject.weatherEnd.humidity).toFixed(1))+"% ",1)]),Object(n["createElementVNode"])("tr",null,[Object(n["createElementVNode"])("td",null,[Object(n["createElementVNode"])("img",{class:"weather-img weather-img-small",src:"/img/weather/breeze.svg",alt:e.$t("workouts.WEATHER.WIND"),title:e.$t("workouts.WEATHER.WIND")},null,8,Ae)]),Object(n["createElementVNode"])("td",null,Object(n["toDisplayString"])(Number(e.workoutObject.weatherStart.wind).toFixed(1))+"m/s",1),Object(n["createElementVNode"])("td",null,Object(n["toDisplayString"])(Number(e.workoutObject.weatherEnd.wind).toFixed(1))+"m/s",1)])])])])):Object(n["createCommentVNode"])("",!0)}var Ie=Object(n["defineComponent"])({name:"WorkoutWeather",props:{workoutObject:{type:Object,required:!0}}});o("6595");const Le=V()(Ie,[["render",Re],["__scopeId","data-v-7eb41918"]]);var Ue=Le,Me=Object(n["defineComponent"])({name:"WorkoutData",components:{WorkoutRecord:ve,WorkoutWeather:Ue},props:{workoutObject:{type:Object,required:!0}},setup:function(e){return{withPause:Object(n["computed"])((function(){return"0:00:00"!==e.workoutObject.pauses&&null!==e.workoutObject.pauses}))}}});o("f962");const We=V()(Me,[["render",Oe],["__scopeId","data-v-aa863bde"]]);var $e=We,Fe={id:"workout-map"},Pe={key:0,class:"leaflet-container"},Ge={key:1},qe={key:0,class:"leaflet-container"},ze={key:1,class:"no-map"};function He(e,t,o,r,a,c){var l=Object(n["resolveComponent"])("LTileLayer"),i=Object(n["resolveComponent"])("LGeoJson"),u=Object(n["resolveComponent"])("LMarker"),s=Object(n["resolveComponent"])("LMap");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Fe,[e.workoutData.loading?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Pe)):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",Ge,[e.workoutData.workout.with_gpx?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",qe,[e.geoJson.jsonData&&e.center&&2===e.bounds.length?(Object(n["openBlock"])(),Object(n["createBlock"])(s,{key:0,zoom:13,center:e.center,bounds:e.bounds,ref:"workoutMap",onReady:t[0]||(t[0]=function(t){return e.fitBounds(e.bounds)})},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(l,{url:"".concat(e.getApiUrl(),"workouts/map_tile/{s}/{z}/{x}/{y}.png"),attribution:e.appConfig.map_attribution,bounds:e.bounds},null,8,["url","attribution","bounds"]),Object(n["createVNode"])(i,{geojson:e.geoJson.jsonData},null,8,["geojson"]),e.markerCoordinates.latitude?(Object(n["openBlock"])(),Object(n["createBlock"])(u,{key:0,"lat-lng":[e.markerCoordinates.latitude,e.markerCoordinates.longitude]},null,8,["lat-lng"])):Object(n["createCommentVNode"])("",!0)]})),_:1},8,["center","bounds"])):Object(n["createCommentVNode"])("",!0)])):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ze,Object(n["toDisplayString"])(e.$t("workouts.NO_MAP")),1))]))])}var Ke=o("e94f"),Ze=o("5afd"),Je=o("dad5"),Xe=o("2906"),Ye=o("d257"),Qe=Object(n["defineComponent"])({name:"WorkoutMap",components:{LGeoJson:Ze["a"],LMap:Ze["b"],LMarker:Ze["c"],LTileLayer:Ze["d"]},props:{workoutData:{type:Object},markerCoordinates:{type:Object,required:!1}},setup:function(e){var t=Object(Xe["a"])();function o(e){if(!e||""!==e)try{var t=Object(Ke["gpx"])((new DOMParser).parseFromString(e,"text/xml"));return{jsonData:t}}catch(o){return console.error("Invalid gpx content"),{}}return{}}function r(e){return[(e.value[0][0]+e.value[1][0])/2,(e.value[0][1]+e.value[1][1])/2]}function a(e){var t,o;null!==(t=c.value)&&void 0!==t&&t.leafletObject&&(null===(o=c.value)||void 0===o||o.leafletObject.fitBounds(e))}var c=Object(n["ref"])(null),l=Object(n["computed"])((function(){return e.workoutData?[[e.workoutData.workout.bounds[0],e.workoutData.workout.bounds[1]],[e.workoutData.workout.bounds[2],e.workoutData.workout.bounds[3]]]:[]})),i=Object(n["computed"])((function(){return t.getters[Je["b"].GETTERS.APP_CONFIG]})),u=Object(n["computed"])((function(){return r(l)})),s=Object(n["computed"])((function(){return e.workoutData&&e.workoutData.gpx?o(e.workoutData.gpx):{}}));return{appConfig:i,bounds:l,center:u,geoJson:s,workoutMap:c,fitBounds:a,getApiUrl:Ye["a"]}}});o("2794");const et=V()(Qe,[["render",He],["__scopeId","data-v-76f3a2e8"]]);var tt=et,ot=o("5e65"),nt=Object(n["defineComponent"])({name:"WorkoutDetail",components:{WorkoutCardTitle:Y,WorkoutData:$e,WorkoutMap:tt},props:{authUser:{type:Object,required:!0},displaySegment:{type:Boolean,required:!0},markerCoordinates:{type:Object,required:!1},sports:{type:Object},workoutData:{type:Object,required:!0}},setup:function(e){var t=Object(b["c"])(),o=Object(Xe["a"])();function r(e,t,o){var n=t&&o&&1!==o?"/workouts/".concat(e.id,"/segment/").concat(o-1):!t&&e.previous_workout?"/workouts/".concat(e.previous_workout):null,r=t&&o&&o0&&u.value?i.value.segments[+u.value-1]:null})),d=Object(n["ref"])(!1);return Object(n["watch"])((function(){return t.params.segmentId}),function(){var e=Object(p["a"])(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:t&&(u.value=+t);case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),{sport:Object(n["computed"])((function(){return e.sports?e.sports.find((function(t){return t.id===e.workoutData.workout.sport_id})):{}})),workoutObject:Object(n["computed"])((function(){return a(i.value,s.value)})),displayModal:d,deleteWorkout:l,updateDisplayModal:c}}});o("c2ce");const rt=V()(nt,[["render",_],["__scopeId","data-v-a17554ea"]]);var at=rt,ct={id:"workout-note"};function lt(e,t,o,r,a,c){var l=Object(n["resolveComponent"])("Card");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",ct,[Object(n["createVNode"])(l,null,{title:Object(n["withCtx"])((function(){return[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e.$t("workouts.NOTES")),1)]})),content:Object(n["withCtx"])((function(){return[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e.notes&&""!==e.notes?e.notes:e.$t("workouts.NO_NOTES")),1)]})),_:1})])}var it=Object(n["defineComponent"])({name:"WorkoutNotes",props:{notes:{type:String,required:!1}}});o("42ec");const ut=V()(it,[["render",lt],["__scopeId","data-v-5c47d30a"]]);var st=ut,dt={id:"workout-segments"};function pt(e,t,o,r,a,c){var l=Object(n["resolveComponent"])("router-link"),i=Object(n["resolveComponent"])("Card");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",dt,[Object(n["createVNode"])(i,null,{title:Object(n["withCtx"])((function(){return[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e.$t("workouts.SEGMENT",2)),1)]})),content:Object(n["withCtx"])((function(){return[Object(n["createElementVNode"])("ul",null,[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.segments,(function(t,o){return Object(n["openBlock"])(),Object(n["createElementBlock"])("li",{key:t.segment_id},[Object(n["createVNode"])(l,{to:{name:"WorkoutSegment",params:{workoutId:t.workout_id,segmentId:o+1}}},{default:Object(n["withCtx"])((function(){return[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e.$t("workouts.SEGMENT",1))+" "+Object(n["toDisplayString"])(o+1),1)]})),_:2},1032,["to"]),Object(n["createTextVNode"])(" ("+Object(n["toDisplayString"])(e.$t("workouts.DISTANCE"))+": "+Object(n["toDisplayString"])(t.distance)+" km, "+Object(n["toDisplayString"])(e.$t("workouts.DURATION"))+": "+Object(n["toDisplayString"])(t.duration)+") ",1)])})),128))])]})),_:1})])}var bt=Object(n["defineComponent"])({name:"WorkoutSegments",props:{segments:{type:Object,required:!0}}});o("628e");const mt=V()(bt,[["render",pt],["__scopeId","data-v-5c40d110"]]);var Ot=mt,jt=Object(n["defineComponent"])({name:"Workout",components:{NotFound:m["a"],WorkoutChart:D,WorkoutDetail:at,WorkoutNotes:st,WorkoutSegments:Ot},props:{displaySegment:{type:Boolean,required:!0}},setup:function(e){var t=Object(b["c"])(),o=Object(Xe["a"])();Object(n["onBeforeMount"])((function(){var n={workoutId:t.params.workoutId};e.displaySegment&&(n.segmentId=t.params.segmentId),o.dispatch(Je["f"].ACTIONS.GET_WORKOUT_DATA,n)}));var r=Object(n["computed"])((function(){return o.getters[Je["f"].GETTERS.WORKOUT_DATA]})),a=Object(n["computed"])((function(){return o.getters[Je["a"].GETTERS.AUTH_USER_PROFILE]})),c=Object(n["computed"])((function(){return o.getters[Je["c"].GETTERS.SPORTS]})),l=Object(n["ref"])({latitude:null,longitude:null});function i(e){l.value={latitude:e.latitude,longitude:e.longitude}}return Object(n["watch"])((function(){return t.params.workoutId}),function(){var e=Object(p["a"])(regeneratorRuntime.mark((function e(t){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:t&&o.dispatch(Je["f"].ACTIONS.GET_WORKOUT_DATA,{workoutId:t});case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),Object(n["watch"])((function(){return t.params.segmentId}),function(){var e=Object(p["a"])(regeneratorRuntime.mark((function e(n){var r;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:t.params.workoutId&&(r={workoutId:t.params.workoutId},n&&(r.segmentId=n),o.dispatch(Je["f"].ACTIONS.GET_WORKOUT_DATA,r));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),Object(n["onUnmounted"])((function(){o.commit(Je["f"].MUTATIONS.EMPTY_WORKOUT)})),{authUser:a,markerCoordinates:l,sports:c,workoutData:r,updateCoordinates:i}}});o("76ef");const ft=V()(jt,[["render",d],["__scopeId","data-v-05bdbd04"]]);t["default"]=ft},3854:function(e,t,o){},3950:function(e,t,o){},"3ad7":function(e,t,o){"use strict";o("3950")},"42ec":function(e,t,o){"use strict";o("8300")},"43bc":function(e,t,o){},"442c":function(e,t,o){},5687:function(e,t,o){"use strict";o("bef2")},5910:function(e,t,o){"use strict";o("b76e")},"5afd":function(e,t,o){"use strict";(function(e){o.d(t,"a",(function(){return T})),o.d(t,"b",(function(){return x})),o.d(t,"c",(function(){return R})),o.d(t,"d",(function(){return $}));var n=o("7a23");const r=(e,t)=>{let o;return function(...n){const r=this;o&&clearTimeout(o),o=setTimeout(()=>{e.apply(r,n),o=null},t)}},a=e=>e&&"function"===typeof e.charAt?e.charAt(0).toUpperCase()+e.slice(1):e,c=(e,t,o)=>{for(const r in o){const c="set"+a(r);e[c]?Object(n["watch"])(()=>o[r],(t,o)=>{e[c](t,o)}):t[c]&&Object(n["watch"])(()=>o[r],e=>{t[c](e)})}},l=e=>{const t={};for(const o in e)if(o.startsWith("on")&&!o.startsWith("onUpdate")&&"onReady"!==o){const n=o.slice(2).toLocaleLowerCase();t[n]=e[o]}return t},i=async e=>{const t=await Promise.all([o.e("chunk-2d0c9189").then(o.t.bind(null,"584d",7)),o.e("chunk-2d0cf391").then(o.t.bind(null,"6397",7)),o.e("chunk-2d22523a").then(o.t.bind(null,"e2b9",7))]);delete e.Default.prototype._getIconUrl,e.Default.mergeOptions({iconRetinaUrl:t[0].default,iconUrl:t[1].default,shadowUrl:t[2].default})},u=e=>{const t=Object(n["ref"])(()=>console.warn(`Method ${e} has been invoked without being replaced`)),o=(...e)=>t.value(...e);return o.wrapped=t,Object(n["provide"])(e,o),o},s=(e,t)=>e.wrapped.value=t,d="object"===typeof self&&self.self===self&&self||"object"===typeof e&&e.global===e&&e||void 0,p="useGlobalLeaflet",b={options:{type:Object,default:()=>({})}},m=e=>({options:e.options,methods:{}}),O={...b,pane:{type:String,default:"overlayPane"},attribution:{type:String,default:null},name:{type:String,custom:!0,default:void 0},layerType:{type:String,custom:!0,default:void 0},visible:{type:Boolean,custom:!0,default:!0}},j=(e,t,o)=>{const r=Object(n["inject"])("addLayer"),a=Object(n["inject"])("removeLayer"),{options:c,methods:l}=m(e),i={...c,attribution:e.attribution,pane:e.pane},u=()=>r({leafletObject:t.value}),s=()=>a({leafletObject:t.value}),d={...l,setAttribution(e,t){const o=this.$parent.leafletObject.attributionControl;o.removeAttribution(t).addAttribution(e)},setName(){s(),e.visible&&u()},setLayerType(){s(),e.visible&&u()},setVisible(e){t.value&&(e?u():s())},bindPopup({leafletObject:e}){t.value.bindPopup(e)},bindTooltip({leafletObject:e}){t.value.bindTooltip(e)},unbindTooltip(){const e=t.value?t.value.getTooltip():null;e&&e.unbindTooltip()},unbindPopup(){const e=t.value?t.value.getPopup():null;e&&e.unbindPopup()},updateVisibleProp(e){o.emit("update:visible",e)}};return Object(n["provide"])("bindPopup",d.bindPopup),Object(n["provide"])("bindTooltip",d.bindTooltip),Object(n["provide"])("unbindTooltip",d.unbindTooltip),Object(n["provide"])("unbindPopup",d.unbindPopup),Object(n["onUnmounted"])(()=>{d.unbindPopup(),d.unbindTooltip(),s()}),{options:i,methods:d}},f=(e,t)=>{if(e&&t.default)return Object(n["h"])("div",{style:{display:"none"}},t.default())},k={...b,interactive:{type:Boolean,default:!0},bubblingMouseEvents:{type:Boolean,default:!0}},g={...O,...k,stroke:{type:Boolean,custom:!0,default:!0},color:{type:String,custom:!0,default:"#3388ff"},weight:{type:Number,custom:!0,default:3},opacity:{type:Number,custom:!0,default:1},lineCap:{type:String,custom:!0,default:"round"},lineJoin:{type:String,custom:!0,default:"round"},dashArray:{type:String,custom:!0,default:null},dashOffset:{type:String,custom:!0,default:null},fill:{type:Boolean,custom:!0,default:!1},fillColor:{type:String,custom:!0,default:"#3388ff"},fillOpacity:{type:Number,custom:!0,default:.2},fillRule:{type:String,custom:!0,default:"evenodd"},className:{type:String,custom:!0,default:null}},y={...g,latLng:{type:[Object,Array],custom:!0,default:null},radius:{type:Number,default:null}};const w={...b,position:{type:String,default:"topright"}},h=(e,t)=>{const{options:o,methods:r}=m(e),a={...o,position:e.position},c={...r,setPosition(e){t.value&&t.value.setPosition(e)}};return Object(n["onUnmounted"])(()=>{t.value&&t.value.remove()}),{options:a,methods:c}},v=e=>e.default?Object(n["h"])("div",{ref:"root"},e.default()):null;Boolean,Boolean;Boolean,Boolean,Boolean,Boolean;Boolean,Boolean,Boolean;const E={...O},N=(e,t,o)=>{const{options:r,methods:a}=j(e,t,o),c={...r},l={...a,addLayer(e){t.value.addLayer(e.leafletObject)},removeLayer(e){t.value.removeLayer(e.leafletObject)}};return Object(n["provide"])("addLayer",l.addLayer),Object(n["provide"])("removeLayer",l.removeLayer),{options:c,methods:l}};const S={...E,geojson:{type:[Object,Array],default:()=>({})}},V=(e,t)=>{const{options:o,methods:n}=N(e,t),r={...o,...e},a={...n,setGeojson(e){t.value.clearLayers(),t.value.addData(e)},getGeoJSONData(){return t.value.toGeoJSON()},getBounds(){return t.value.getBounds()}};return{options:r,methods:a}};var T={props:S,setup(e,t){const r=Object(n["ref"])({}),a=Object(n["ref"])(!1),i=Object(n["inject"])(p),u=Object(n["inject"])("addLayer"),{methods:s,options:b}=V(e,r);return Object(n["onMounted"])(async()=>{const{geoJSON:p,DomEvent:m}=i?d.L:await o.e("chunk-2d0da8f3").then(o.bind(null,"6bb3"));r.value=p(e.geojson,b);const O=l(t.attrs);m.on(r.value,O),c(s,r.value,e),u({...e,...s,leafletObject:r.value}),a.value=!0,Object(n["nextTick"])(()=>t.emit("ready",r.value))}),{ready:a,leafletObject:r}},render(){return f(this.ready,this.$slots)},__file:"src/components/LGeoJson.vue"};const D={...O,pane:{type:String,default:"tilePane"},opacity:{type:Number,custom:!1,default:1},zIndex:{type:Number,default:1},tileSize:{type:Number,default:256},noWrap:{type:Boolean,default:!1},minZoom:{type:Number,default:0},maxZoom:{type:Number,default:void 0}},C=(e,t,o)=>{const{options:n,methods:r}=j(e,t,o),a={...n,pane:e.pane,opacity:e.opacity,zIndex:e.zIndex,tileSize:e.tileSize,noWrap:e.noWrap,minZoom:e.minZoom,maxZoom:e.maxZoom};return{options:a,methods:{...r}}};const _={iconUrl:{type:String,custom:!0,default:null},iconRetinaUrl:{type:String,custom:!0,default:null},iconSize:{type:[Object,Array],custom:!0,default:null},iconAnchor:{type:[Object,Array],custom:!0,default:null},popupAnchor:{type:[Object,Array],custom:!0,default:()=>[0,0]},tooltipAnchor:{type:[Object,Array],custom:!0,default:()=>[0,0]},shadowUrl:{type:String,custom:!0,default:null},shadowRetinaUrl:{type:String,custom:!0,default:null},shadowSize:{type:[Object,Array],custom:!0,default:null},shadowAnchor:{type:[Object,Array],custom:!0,default:null},bgPos:{type:[Object,Array],custom:!0,default:()=>[0,0]},className:{type:String,custom:!0,default:""},options:{type:Object,custom:!0,default:()=>({})}};Boolean,Boolean;var x={emits:["ready","update:zoom","update:center","update:bounds"],props:{...b,center:{type:[Object,Array],default:()=>[0,0]},bounds:{type:[Array,Object],default:void 0},maxBounds:{type:[Array,Object],default:void 0},zoom:{type:Number,default:0},minZoom:{type:Number,default:void 0},maxZoom:{type:Number,default:void 0},paddingBottomRight:{type:Array,default:void 0},paddingTopLeft:{type:Array,default:void 0},padding:{type:Array,default:void 0},worldCopyJump:{type:Boolean,default:!1},crs:{type:[String,Object],default:"EPSG3857"},maxBoundsViscosity:{type:Number,default:void 0},inertia:{type:Boolean,default:void 0},inertiaDeceleration:{type:Number,default:void 0},inertiaMaxSpeed:{type:Number,default:void 0},easeLinearity:{type:Number,default:void 0},zoomAnimation:{type:Boolean,default:void 0},zoomAnimationThreshold:{type:Number,default:void 0},fadeAnimation:{type:Boolean,default:void 0},markerZoomAnimation:{type:Boolean,default:void 0},noBlockingAnimations:{type:Boolean,default:!1},useGlobalLeaflet:{type:Boolean,default:!1}},setup(e,t){const a=Object(n["ref"])(null),b=Object(n["reactive"])({ready:!1,leafletRef:{},layersToAdd:[],layersInControl:[]}),{options:O}=m(e),j={...O,minZoom:e.minZoom,maxZoom:e.maxZoom,maxBounds:e.maxBounds,maxBoundsViscosity:e.maxBoundsViscosity,worldCopyJump:e.worldCopyJump,crs:e.crs,center:e.center,zoom:e.zoom,inertia:e.inertia,inertiaDeceleration:e.inertiaDeceleration,inertiaMaxSpeed:e.inertiaMaxSpeed,easeLinearity:e.easeLinearity,zoomAnimation:e.zoomAnimation,zoomAnimationThreshold:e.zoomAnimationThreshold,fadeAnimation:e.fadeAnimation,markerZoomAnimation:e.markerZoomAnimation},f=u("addLayer"),k=u("removeLayer"),g=u("registerControl"),y=u("registerLayerControl");Object(n["provide"])(p,e.useGlobalLeaflet);const w={moveEndHandler(){t.emit("update:zoom",b.leafletRef.getZoom()),t.emit("update:center",b.leafletRef.getCenter()),t.emit("update:bounds",b.leafletRef.getBounds())},overlayAddHandler(e){const t=b.layersInControl.find(t=>t.name===e.name);t&&t.updateVisibleProp(!0)},overlayRemoveHandler(e){const t=b.layersInControl.find(t=>t.name===e.name);t&&t.updateVisibleProp(!1)}};Object(n["onMounted"])(async()=>{e.useGlobalLeaflet&&(d.L=d.L||await o.e("chunk-2d2248b6").then(o.t.bind(null,"e11e",7)));const{map:u,CRS:p,Icon:m,latLngBounds:O,latLng:h,DomEvent:v}=e.useGlobalLeaflet?d.L:await o.e("chunk-2d0da8f3").then(o.bind(null,"6bb3"));try{j.beforeMapMount&&await j.beforeMapMount()}catch(V){console.error("The following error occurred running the provided beforeMapMount hook "+V.message)}await i(m);const E="string"==typeof j.crs?p[j.crs]:j.crs;j.crs=E||p.EPSG3857;const N={addLayer(e){if(void 0!==e.layerType)if(void 0===b.layerControl)b.layersToAdd.push(e);else{const t=b.layersInControl.find(t=>t.leafletObject._leaflet_id===e.leafletObject._leaflet_id);t||(b.layerControl.addLayer(e),b.layersInControl.push(e))}!1!==e.visible&&b.leafletRef.addLayer(e.leafletObject)},removeLayer(e){void 0!==e.layerType&&(void 0===b.layerControl?b.layersToAdd=b.layersToAdd.filter(t=>t.name!==e.name):(b.layerControl.removeLayer(e.leafletObject),b.layersInControl=b.layersInControl.filter(t=>t.leafletObject._leaflet_id!==e.leafletObject._leaflet_id))),b.leafletRef.removeLayer(e.leafletObject)},registerLayerControl(e){b.layerControl=e,b.layersToAdd.forEach(e=>{b.layerControl.addLayer(e)}),b.layersToAdd=[],g(e)},registerControl(e){b.leafletRef.addControl(e.leafletObject)},setZoom(t){const o=b.leafletRef.getZoom();t!==o&&b.leafletRef.setZoom(t,{animate:!e.noBlockingAnimations&&null})},setPaddingBottomRight(e){b.paddingBottomRight=e},setPaddingTopLeft(e){b.paddingTopLeft=e},setPadding(e){b.padding=e},setCrs(e){const t=b.leafletRef.getBounds();b.leafletRef.options.crs=e,b.leafletRef.fitBounds(t,{animate:!1,padding:[0,0]})},fitBounds(e){b.leafletRef.fitBounds(e,{animate:!this.noBlockingAnimations&&null})},setBounds(e){if(!e)return;const t=O(e);if(!t.isValid())return;const o=b.lastSetBounds||b.leafletRef.getBounds(),n=!o.equals(t,0);n&&(b.lastSetBounds=t,b.leafletRef.fitBounds(t,this.fitBoundsOptions))},setCenter(e){if(null==e)return;const t=h(e),o=b.lastSetCenter||b.leafletRef.getCenter();o.lat===t.lat&&o.lng===t.lng||(b.lastSetCenter=t,b.leafletRef.panTo(t,{animate:!this.noBlockingAnimations&&null}))}};s(f,N.addLayer),s(k,N.removeLayer),s(g,N.registerControl),s(y,N.registerLayerControl),b.leafletRef=u(a.value,j),c(N,b.leafletRef,e);const S=l(t.attrs);b.leafletRef.on("moveend",r(w.moveEndHandler,100)),b.leafletRef.on("overlayadd",w.overlayAddHandler),b.leafletRef.on("overlayremove",w.overlayRemoveHandler),v.on(b.leafletRef,S),b.ready=!0,Object(n["nextTick"])(()=>t.emit("ready",b.leafletRef))}),Object(n["onBeforeUnmount"])(()=>{b.leafletRef&&b.leafletRef.remove()});const h=Object(n["computed"])(()=>b.leafletRef),v=Object(n["computed"])(()=>b.ready);return{root:a,ready:v,leafletObject:h}},render(){return Object(n["h"])("div",{style:{width:"100%",height:"100%"},ref:"root"},this.ready?this.$slots.default():{})},__file:"src/components/LMap.vue"};const B={...O,pane:{type:String,default:"markerPane"},draggable:{type:Boolean,custom:!0,default:!1},latLng:{type:[Object,Array],custom:!0,default:null},icon:{type:[Object],default:()=>{},custom:!1},zIndexOffset:{type:Number,custom:!1,default:null}},A=(e,t,o)=>{const{options:n,methods:r}=j(e,t,o),a={...n,...e},c={...r,setDraggable(e){t.value.dragging&&(e?t.value.dragging.enable():t.value.dragging.disable())},latLngSync(e){o.emit("update:latLng",e.latlng),o.emit("update:lat-lng",e.latlng)},setLatLng(e){if(null!=e&&t.value){const o=t.value.getLatLng();o&&o.equals(e)||t.value.setLatLng(e)}}};return{options:a,methods:c}};var R={name:"LMarker",props:B,setup(e,t){const a=Object(n["ref"])({}),i=Object(n["ref"])(!1),u=Object(n["inject"])(p),s=Object(n["inject"])("addLayer");Object(n["provide"])("canSetParentHtml",()=>!!a.value.getElement()),Object(n["provide"])("setParentHtml",e=>a.value.getElement().innerHTML=e),Object(n["provide"])("setIcon",e=>a.value.setIcon&&a.value.setIcon(e));const{options:b,methods:m}=A(e,a,t);return void 0===b.icon&&delete b.icon,Object(n["onMounted"])(async()=>{const{marker:p,DomEvent:O}=u?d.L:await o.e("chunk-2d0da8f3").then(o.bind(null,"6bb3"));a.value=p(e.latLng,b);const j=l(t.attrs);O.on(a.value,j),a.value.on("move",r(m.latLngSync,100)),c(m,a.value,e),s({...e,...m,leafletObject:a.value}),i.value=!0,Object(n["nextTick"])(()=>t.emit("ready",a.value))}),{ready:i,leafletObject:a}},render(){return f(this.ready,this.$slots)},__file:"src/components/LMarker.vue"};const I={...g,latLngs:{type:Array,default:()=>[]},smoothFactor:{type:Number,custom:!0,default:1},noClip:{type:Boolean,custom:!0,default:!1}},L={...I};const U={...b,content:{type:String,default:null}};const M={...D,tms:{type:Boolean,default:!1},subdomains:{type:String,default:"abc"},detectRetina:{type:Boolean,default:!1},url:{type:String,default:null}},W=(e,t)=>{const{options:o,methods:n}=C(e,t),r={...o,tms:e.tms,subdomains:e.subdomains,detectRetina:e.detectRetina};return{options:r,methods:{...n}}};var $={props:M,setup(e,t){const r=Object(n["ref"])({}),a=Object(n["inject"])(p),i=Object(n["inject"])("addLayer"),{options:u,methods:s}=W(e,r);return Object(n["onMounted"])(async()=>{const{tileLayer:p,DomEvent:b}=a?d.L:await o.e("chunk-2d0da8f3").then(o.bind(null,"6bb3"));r.value=p(e.url,u);const m=l(t.attrs);b.on(r.value,m),c(s,r.value,e),i({...e,...s,leafletObject:r.value}),Object(n["nextTick"])(()=>t.emit("ready",r.value))}),{leafletObject:r}},render(){return null},__file:"src/components/LTileLayer.vue"};Boolean,Boolean}).call(this,o("c8ba"))},"5c76":function(e,t,o){"use strict";o("4de4"),o("d3b7");var n=o("7a23"),r={id:"workout-form"},a={class:"form-items"},c={key:0,class:"form-item-radio"},l=["checked","disabled"],i={for:"withGpx"},u=["checked","disabled"],s={for:"withoutGpx"},d={class:"form-item"},p=["disabled"],b=["value"],m={key:1,class:"form-item"},O={for:"gpxFile"},j=["disabled"],f={class:"files-help info-box"},k={key:2,class:"form-item"},g={for:"title"},y=["required","disabled"],w={key:3},h={class:"workout-date-duration"},v={class:"form-item"},E={class:"workout-date-time"},N=["disabled"],S=["disabled"],V={class:"form-item"},T=["disabled"],D=Object(n["createTextVNode"])(" : "),C=["disabled"],_=Object(n["createTextVNode"])(" : "),x=["disabled"],B={class:"form-item"},A=["disabled"],R={class:"form-item"},I={key:1},L={key:2,class:"form-buttons"},U=["disabled"];function M(e,t,o,M,W,$){var F=Object(n["resolveComponent"])("CustomTextArea"),P=Object(n["resolveComponent"])("ErrorMessage"),G=Object(n["resolveComponent"])("Loader"),q=Object(n["resolveComponent"])("Card");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{id:"workout-edition",class:Object(n["normalizeClass"])(["center-card center-card with-margin",{"center-form":e.workout&&e.workout.with_gpx}])},[Object(n["createVNode"])(q,null,{title:Object(n["withCtx"])((function(){return[Object(n["createTextVNode"])(Object(n["toDisplayString"])(e.$t("workouts.".concat(e.isCreation?"ADD":"EDIT","_WORKOUT"))),1)]})),content:Object(n["withCtx"])((function(){return[Object(n["createElementVNode"])("div",r,[Object(n["createElementVNode"])("form",{onSubmit:t[12]||(t[12]=Object(n["withModifiers"])((function(){return e.updateWorkout&&e.updateWorkout.apply(e,arguments)}),["prevent"]))},[Object(n["createElementVNode"])("div",a,[e.isCreation?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",c,[Object(n["createElementVNode"])("div",null,[Object(n["createElementVNode"])("input",{id:"withGpx",type:"radio",checked:e.withGpx,disabled:e.loading,onClick:t[0]||(t[0]=function(){return e.updateWithGpx&&e.updateWithGpx.apply(e,arguments)})},null,8,l),Object(n["createElementVNode"])("label",i,Object(n["toDisplayString"])(e.$t("workouts.WITH_GPX")),1)]),Object(n["createElementVNode"])("div",null,[Object(n["createElementVNode"])("input",{id:"withoutGpx",type:"radio",checked:!e.withGpx,disabled:e.loading,onClick:t[1]||(t[1]=function(){return e.updateWithGpx&&e.updateWithGpx.apply(e,arguments)})},null,8,u),Object(n["createElementVNode"])("label",s,Object(n["toDisplayString"])(e.$t("workouts.WITHOUT_GPX")),1)])])):Object(n["createCommentVNode"])("",!0),Object(n["createElementVNode"])("div",d,[Object(n["createElementVNode"])("label",null,Object(n["toDisplayString"])(e.$t("workouts.SPORT",1))+": ",1),Object(n["withDirectives"])(Object(n["createElementVNode"])("select",{id:"sport",required:"",disabled:e.loading,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.workoutDataObject.sport_id=t})},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(e.translatedSports.filter((function(e){return e.is_active})),(function(e){return Object(n["openBlock"])(),Object(n["createElementBlock"])("option",{value:e.id,key:e.id},Object(n["toDisplayString"])(e.label),9,b)})),128))],8,p),[[n["vModelSelect"],e.workoutDataObject.sport_id]])]),e.isCreation&&e.withGpx?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",m,[Object(n["createElementVNode"])("label",O,Object(n["toDisplayString"])(e.$t("workouts.GPX_FILE"))+" "+Object(n["toDisplayString"])(e.$t("workouts.ZIP_ARCHIVE_DESCRIPTION"))+": ",1),Object(n["createElementVNode"])("input",{id:"gpxFile",name:"gpxFile",type:"file",accept:".gpx, .zip",disabled:e.loading,onInput:t[3]||(t[3]=function(){return e.updateFile&&e.updateFile.apply(e,arguments)})},null,40,j),Object(n["createElementVNode"])("div",f,[Object(n["createElementVNode"])("div",null,[Object(n["createElementVNode"])("strong",null,Object(n["toDisplayString"])(e.$t("workouts.GPX_FILE"))+":",1),Object(n["createElementVNode"])("ul",null,[Object(n["createElementVNode"])("li",null,Object(n["toDisplayString"])(e.$t("workouts.MAX_SIZE"))+": "+Object(n["toDisplayString"])(e.fileSizeLimit),1)])]),Object(n["createElementVNode"])("div",null,[Object(n["createElementVNode"])("strong",null,Object(n["toDisplayString"])(e.$t("workouts.ZIP_ARCHIVE"))+":",1),Object(n["createElementVNode"])("ul",null,[Object(n["createElementVNode"])("li",null,Object(n["toDisplayString"])(e.$t("workouts.NO_FOLDER")),1),Object(n["createElementVNode"])("li",null,Object(n["toDisplayString"])(e.$t("workouts.MAX_FILES"))+": "+Object(n["toDisplayString"])(e.gpx_limit_import),1),Object(n["createElementVNode"])("li",null,Object(n["toDisplayString"])(e.$t("workouts.MAX_SIZE"))+": "+Object(n["toDisplayString"])(e.zipSizeLimit),1)])])])])):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",k,[Object(n["createElementVNode"])("label",g,Object(n["toDisplayString"])(e.$t("workouts.TITLE"))+": ",1),Object(n["withDirectives"])(Object(n["createElementVNode"])("input",{id:"title",name:"title",type:"text",required:!e.isCreation,disabled:e.loading,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.workoutDataObject.title=t})},null,8,y),[[n["vModelText"],e.workoutDataObject.title]])])),e.withGpx?Object(n["createCommentVNode"])("",!0):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",w,[Object(n["createElementVNode"])("div",h,[Object(n["createElementVNode"])("div",v,[Object(n["createElementVNode"])("label",null,Object(n["toDisplayString"])(e.$t("workouts.WORKOUT_DATE"))+":",1),Object(n["createElementVNode"])("div",E,[Object(n["withDirectives"])(Object(n["createElementVNode"])("input",{id:"workout-date",name:"workout-date",type:"date",required:"",disabled:e.loading,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.workoutDataObject.workoutDate=t})},null,8,N),[[n["vModelText"],e.workoutDataObject.workoutDate]]),Object(n["withDirectives"])(Object(n["createElementVNode"])("input",{id:"workout-time",name:"workout-time",class:"workout-time",type:"time",required:"",disabled:e.loading,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.workoutDataObject.workoutTime=t})},null,8,S),[[n["vModelText"],e.workoutDataObject.workoutTime]])])]),Object(n["createElementVNode"])("div",V,[Object(n["createElementVNode"])("label",null,Object(n["toDisplayString"])(e.$t("workouts.DURATION"))+":",1),Object(n["createElementVNode"])("div",null,[Object(n["withDirectives"])(Object(n["createElementVNode"])("input",{id:"workout-duration-hour",name:"workout-duration-hour",class:"workout-duration",type:"text",placeholder:"HH",pattern:"^([0-9]*[0-9])$",required:"",disabled:e.loading,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.workoutDataObject.workoutDurationHour=t})},null,8,T),[[n["vModelText"],e.workoutDataObject.workoutDurationHour]]),D,Object(n["withDirectives"])(Object(n["createElementVNode"])("input",{id:"workout-duration-minutes",name:"workout-duration-minutes",class:"workout-duration",type:"text",pattern:"^([0-5][0-9])$",placeholder:"MM",required:"",disabled:e.loading,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.workoutDataObject.workoutDurationMinutes=t})},null,8,C),[[n["vModelText"],e.workoutDataObject.workoutDurationMinutes]]),_,Object(n["withDirectives"])(Object(n["createElementVNode"])("input",{id:"workout-duration-seconds",name:"workout-duration-seconds",class:"workout-duration",type:"text",pattern:"^([0-5][0-9])$",placeholder:"SS",required:"",disabled:e.loading,"onUpdate:modelValue":t[9]||(t[9]=function(t){return e.workoutDataObject.workoutDurationSeconds=t})},null,8,x),[[n["vModelText"],e.workoutDataObject.workoutDurationSeconds]])])])]),Object(n["createElementVNode"])("div",B,[Object(n["createElementVNode"])("label",null,Object(n["toDisplayString"])(e.$t("workouts.DISTANCE"))+" (km):",1),Object(n["withDirectives"])(Object(n["createElementVNode"])("input",{name:"workout-distance",type:"number",min:"0",step:"0.1",required:"",disabled:e.loading,"onUpdate:modelValue":t[10]||(t[10]=function(t){return e.workoutDataObject.workoutDistance=t})},null,8,A),[[n["vModelText"],e.workoutDataObject.workoutDistance]])])])),Object(n["createElementVNode"])("div",R,[Object(n["createElementVNode"])("label",null,Object(n["toDisplayString"])(e.$t("workouts.NOTES"))+": ",1),Object(n["createVNode"])(F,{name:"notes",input:e.workoutDataObject.notes,disabled:e.loading,onUpdateValue:e.updateNotes},null,8,["input","disabled","onUpdateValue"])])]),e.errorMessages?(Object(n["openBlock"])(),Object(n["createBlock"])(P,{key:0,message:e.errorMessages},null,8,["message"])):Object(n["createCommentVNode"])("",!0),e.loading?(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",I,[Object(n["createVNode"])(G)])):(Object(n["openBlock"])(),Object(n["createElementBlock"])("div",L,[Object(n["createElementVNode"])("button",{class:"confirm",type:"submit",disabled:e.loading},Object(n["toDisplayString"])(e.$t("buttons.SUBMIT")),9,U),Object(n["createElementVNode"])("button",{class:"cancel",onClick:t[11]||(t[11]=Object(n["withModifiers"])((function(){return e.onCancel&&e.onCancel.apply(e,arguments)}),["prevent"]))},Object(n["toDisplayString"])(e.$t("buttons.CANCEL")),1)]))],32)])]})),_:1})],2)}var W=o("1da1"),$=(o("96cf"),o("ac1f"),o("1276"),o("99af"),o("47e2")),F=o("6c02"),P=o("dad5"),G=o("2906"),q=o("5e65"),z=o("c364"),H=o("1119"),K=Object(n["defineComponent"])({name:"WorkoutEdition",props:{authUser:{type:Object,required:!0},isCreation:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},sports:{type:Object,required:!0},workout:{type:Object,required:!1}},setup:function(e){var t=Object($["b"])(),o=t.t,r=Object(G["a"])(),a=Object(F["d"])();Object(n["onMounted"])((function(){e.workout&&e.workout.id&&k(e.workout)}));var c=Object(n["computed"])((function(){return Object(H["d"])(e.sports,o)})),l=Object(n["computed"])((function(){return r.getters[P["b"].GETTERS.APP_CONFIG]})),i=l.value.max_single_file_size?Object(z["b"])(l.value.max_single_file_size):"",u=l.value.gpx_limit_import,s=l.value.max_zip_file_size?Object(z["b"])(l.value.max_zip_file_size):"",d=Object(n["computed"])((function(){return r.getters[P["b"].GETTERS.ERROR_MESSAGES]})),p=Object(n["reactive"])({sport_id:"",title:"",notes:"",workoutDate:"",workoutTime:"",workoutDurationHour:"",workoutDurationMinutes:"",workoutDurationSeconds:"",workoutDistance:""}),b=Object(n["ref"])(e.workout?e.workout.with_gpx:e.isCreation),m=null;function O(e){p.notes=e}function j(){b.value=!b.value}function f(e){e.target.files&&(m=e.target.files[0])}function k(t){if(p.sport_id="".concat(t.sport_id),p.title=t.title,p.notes=t.notes,!t.with_gpx){var o=Object(q["a"])(Object(q["c"])(t.workout_date,e.authUser.timezone),"yyyy-MM-dd"),n=t.duration.split(":");p.workoutDistance="".concat(t.distance),p.workoutDate=o.workout_date,p.workoutTime=o.workout_time,p.workoutDurationHour=n[0],p.workoutDurationMinutes=n[1],p.workoutDurationSeconds=n[2]}}function g(e){e.title=p.title,e.distance=+p.workoutDistance,e.duration=3600*+p.workoutDurationHour+60*+p.workoutDurationMinutes+ +p.workoutDurationSeconds,e.workout_date="".concat(p.workoutDate," ").concat(p.workoutTime)}function y(){var t={sport_id:+p.sport_id,notes:p.notes};if(e.workout)e.workout.with_gpx?t.title=p.title:g(t),r.dispatch(P["f"].ACTIONS.EDIT_WORKOUT,{workoutId:e.workout.id,data:t});else if(b.value){if(!m){var o="workouts.NO_FILE_PROVIDED";return void r.commit(P["b"].MUTATIONS.SET_ERROR_MESSAGES,o)}t.file=m,r.dispatch(P["f"].ACTIONS.ADD_WORKOUT,t)}else g(t),r.dispatch(P["f"].ACTIONS.ADD_WORKOUT_WITHOUT_GPX,t)}function w(){e.workout?a.push({name:"Workout",params:{workoutId:e.workout.id}}):a.go(-1)}return Object(n["watch"])((function(){return e.workout}),function(){var e=Object(W["a"])(regeneratorRuntime.mark((function e(t,o){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:t!==o&&t&&t.id&&k(t);case 1:case"end":return e.stop()}}),e)})));return function(t,o){return e.apply(this,arguments)}}()),Object(n["onUnmounted"])((function(){return r.commit(P["b"].MUTATIONS.EMPTY_ERROR_MESSAGES)})),{appConfig:l,errorMessages:d,fileSizeLimit:i,gpx_limit_import:u,translatedSports:c,withGpx:b,zipSizeLimit:s,workoutDataObject:p,onCancel:w,updateFile:f,updateNotes:O,updateWithGpx:j,updateWorkout:y}}}),Z=(o("ba30"),o("6b0d")),J=o.n(Z);const X=J()(K,[["render",M],["__scopeId","data-v-8eb73dd0"]]);t["a"]=X},"628e":function(e,t,o){"use strict";o("be77")},6595:function(e,t,o){"use strict";o("cc92")},"692d":function(e,t,o){"use strict";o.r(t);var n=o("7a23"),r={id:"add-workout",class:"view"},a={class:"container"};function c(e,t,o,c,l,i){var u=Object(n["resolveComponent"])("WorkoutEdition");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",r,[Object(n["createElementVNode"])("div",a,[Object(n["createVNode"])(u,{authUser:e.authUser,sports:e.sports,isCreation:!0,loading:e.workoutData.loading},null,8,["authUser","sports","loading"])])])}var l=o("5c76"),i=o("dad5"),u=o("2906"),s=Object(n["defineComponent"])({name:"AddWorkout",components:{WorkoutEdition:l["a"]},setup:function(){var e=Object(u["a"])(),t=Object(n["computed"])((function(){return e.getters[i["c"].GETTERS.SPORTS]})),o=Object(n["computed"])((function(){return e.getters[i["a"].GETTERS.AUTH_USER_PROFILE]})),r=Object(n["computed"])((function(){return e.getters[i["f"].GETTERS.WORKOUT_DATA]}));return{authUser:o,sports:t,workoutData:r}}}),d=o("6b0d"),p=o.n(d);const b=p()(s,[["render",c]]);t["default"]=b},"6b5a":function(e,t,o){},"76ef":function(e,t,o){"use strict";o("442c")},8300:function(e,t,o){},"87bb":function(e,t,o){},"8ee9":function(e,t,o){"use strict";o.r(t);var n=o("7a23"),r={id:"edit-workout",class:"view"},a={class:"container"};function c(e,t,o,c,l,i){var u=Object(n["resolveComponent"])("WorkoutEdition");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",r,[Object(n["createElementVNode"])("div",a,[Object(n["createVNode"])(u,{authUser:e.authUser,sports:e.sports,workout:e.workoutData.workout,loading:e.workoutData.loading},null,8,["authUser","sports","workout","loading"])])])}var l=o("1da1"),i=(o("96cf"),o("6c02")),u=o("5c76"),s=o("dad5"),d=o("2906"),p=Object(n["defineComponent"])({name:"EditWorkout",components:{WorkoutEdition:u["a"]},setup:function(){var e=Object(i["c"])(),t=Object(d["a"])();Object(n["onBeforeMount"])((function(){t.dispatch(s["f"].ACTIONS.GET_WORKOUT_DATA,{workoutId:e.params.workoutId})}));var o=Object(n["computed"])((function(){return t.getters[s["a"].GETTERS.AUTH_USER_PROFILE]})),r=Object(n["computed"])((function(){return t.getters[s["c"].GETTERS.SPORTS]})),a=Object(n["computed"])((function(){return t.getters[s["f"].GETTERS.WORKOUT_DATA]}));return Object(n["watch"])((function(){return e.params.workoutId}),function(){var e=Object(l["a"])(regeneratorRuntime.mark((function e(o){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:o||t.commit(s["f"].MUTATIONS.EMPTY_WORKOUT);case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),{authUser:o,sports:r,workoutData:a}}}),b=o("6b0d"),m=o.n(b);const O=m()(p,[["render",c]]);t["default"]=O},a33d:function(e,t,o){},b76e:function(e,t,o){},ba30:function(e,t,o){"use strict";o("87bb")},be77:function(e,t,o){},bef2:function(e,t,o){},bfb4:function(e,t,o){"use strict";o("a33d")},c2ce:function(e,t,o){"use strict";o("2de4")},cc92:function(e,t,o){},e94f:function(e,t,o){!function(e,o){o(t)}(0,(function(e){"use strict";function t(e){return e&&e.normalize&&e.normalize(),e&&e.textContent||""}function o(e,t){const o=e.getElementsByTagName(t);return o.length?o[0]:null}function n(e){const n={};if(e){const r=o(e,"line");if(r){const e=t(o(r,"color")),a=parseFloat(t(o(r,"opacity"))),c=parseFloat(t(o(r,"width")));e&&(n.stroke=e),isNaN(a)||(n["stroke-opacity"]=a),isNaN(c)||(n["stroke-width"]=96*c/25.4)}}return n}function r(e,n){const r={};let a,c;for(c=0;c1,s=Object.assign(a(e),n(o(e,"extensions")),{_gpxType:"trk"},c.length?{coordinateProperties:{times:u?c:c[0]}}:{});for(let o=0;onew Array(e.line.length).fill(null))),e[t][o]=n):e[t]=n}}return{type:"Feature",properties:s,geometry:u?{type:"MultiLineString",coordinates:r}:{type:"LineString",coordinates:r[0]}}}function*s(e){const t=e.getElementsByTagName("trk"),o=e.getElementsByTagName("rte"),n=e.getElementsByTagName("wpt");for(let r=0;rArray(e.length).fill(null))),u[o][t]=e[o])}if(0!==r.length)return(a.length||c.length)&&(u.coordinateProperties=Object.assign(a.length?{times:1===r.length?a[0]:a}:{},c.length?{heart:1===r.length?c[0]:c}:{})),{type:"Feature",properties:u,geometry:{type:1===r.length?"LineString":"MultiLineString",coordinates:1===r.length?r[0]:r}}}function*f(e){const t=e.getElementsByTagName("Lap");for(let n=0;n (_pushScopeId(\"data-v-22a8a7cd\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"workouts\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container workouts-container\" }\nconst _hoisted_3 = { class: \"display-filters\" }\nconst _hoisted_4 = { class: \"list-container\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_WorkoutsFilters = _resolveComponent(\"WorkoutsFilters\")!\n const _component_WorkoutsList = _resolveComponent(\"WorkoutsList\")!\n\n return (_ctx.authUser.username)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"filters-container\", { hidden: _ctx.hiddenFilters }])\n }, [\n _createVNode(_component_WorkoutsFilters, {\n sports: _ctx.translatedSports,\n authUser: _ctx.authUser,\n onFilter: _ctx.toggleFilters\n }, null, 8, [\"sports\", \"authUser\", \"onFilter\"])\n ], 2),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", {\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.toggleFilters && _ctx.toggleFilters(...args)))\n }, [\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa-caret-${_ctx.hiddenFilters ? 'down' : 'up'}`),\n \"aria-hidden\": \"true\"\n }, null, 2),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(`workouts.${_ctx.hiddenFilters ? 'DISPLAY' : 'HIDE'}_FILTERS`)), 1)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(_component_WorkoutsList, {\n user: _ctx.authUser,\n sports: _ctx.translatedSports\n }, null, 8, [\"user\", \"sports\"])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-78f33062\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"workouts-filters\" }\nconst _hoisted_2 = { class: \"box\" }\nconst _hoisted_3 = { class: \"form\" }\nconst _hoisted_4 = { class: \"form-items-group\" }\nconst _hoisted_5 = { class: \"form-item\" }\nconst _hoisted_6 = [\"value\"]\nconst _hoisted_7 = { class: \"form-item\" }\nconst _hoisted_8 = [\"value\"]\nconst _hoisted_9 = { class: \"form-items-group\" }\nconst _hoisted_10 = { class: \"form-item\" }\nconst _hoisted_11 = [\"value\"]\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"option\", { value: \"\" }, null, -1))\nconst _hoisted_13 = [\"value\"]\nconst _hoisted_14 = { class: \"form-items-group\" }\nconst _hoisted_15 = { class: \"form-item\" }\nconst _hoisted_16 = { class: \"form-inputs-group\" }\nconst _hoisted_17 = [\"value\"]\nconst _hoisted_18 = [\"value\"]\nconst _hoisted_19 = { class: \"form-items-group\" }\nconst _hoisted_20 = { class: \"form-item\" }\nconst _hoisted_21 = { class: \"form-inputs-group\" }\nconst _hoisted_22 = [\"value\"]\nconst _hoisted_23 = [\"value\"]\nconst _hoisted_24 = { class: \"form-items-group\" }\nconst _hoisted_25 = { class: \"form-item\" }\nconst _hoisted_26 = { class: \"form-inputs-group\" }\nconst _hoisted_27 = [\"value\"]\nconst _hoisted_28 = [\"value\"]\nconst _hoisted_29 = { class: \"form-items-group\" }\nconst _hoisted_30 = { class: \"form-item\" }\nconst _hoisted_31 = { class: \"form-inputs-group\" }\nconst _hoisted_32 = [\"value\"]\nconst _hoisted_33 = [\"value\"]\nconst _hoisted_34 = { class: \"form-button\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.FROM')) + \": \", 1),\n _createElementVNode(\"input\", {\n name: \"from\",\n type: \"date\",\n value: _ctx.$route.query.from,\n onChange: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.handleFilterChange && _ctx.handleFilterChange(...args)))\n }, null, 40, _hoisted_6)\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.TO')) + \": \", 1),\n _createElementVNode(\"input\", {\n name: \"to\",\n type: \"date\",\n value: _ctx.$route.query.to,\n onChange: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.handleFilterChange && _ctx.handleFilterChange(...args)))\n }, null, 40, _hoisted_8)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.SPORT', 1)) + \":\", 1),\n _createElementVNode(\"select\", {\n name: \"sport_id\",\n value: _ctx.$route.query.sport_id,\n onChange: _cache[2] || (_cache[2] = \n//@ts-ignore\n(...args) => (_ctx.handleFilterChange && _ctx.handleFilterChange(...args)))\n }, [\n _hoisted_12,\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.translatedSports.filter((s) =>\n _ctx.authUser.sports_list.includes(s.id)\n ), (sport) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: sport.id,\n key: sport.id\n }, _toDisplayString(sport.label), 9, _hoisted_13))\n }), 128))\n ], 40, _hoisted_11)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", _hoisted_15, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DISTANCE')) + \" (km): \", 1),\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"input\", {\n name: \"distance_from\",\n type: \"number\",\n min: \"0\",\n step: \"1\",\n value: _ctx.$route.query.distance_from,\n onChange: _cache[3] || (_cache[3] = \n//@ts-ignore\n(...args) => (_ctx.handleFilterChange && _ctx.handleFilterChange(...args)))\n }, null, 40, _hoisted_17),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n name: \"distance_to\",\n type: \"number\",\n min: \"0\",\n step: \"1\",\n value: _ctx.$route.query.distance_to,\n onChange: _cache[4] || (_cache[4] = \n//@ts-ignore\n(...args) => (_ctx.handleFilterChange && _ctx.handleFilterChange(...args)))\n }, null, 40, _hoisted_18)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_19, [\n _createElementVNode(\"div\", _hoisted_20, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DURATION')) + \" (km): \", 1),\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"input\", {\n name: \"duration_from\",\n value: _ctx.$route.query.duration_from,\n onChange: _cache[5] || (_cache[5] = \n//@ts-ignore\n(...args) => (_ctx.handleFilterChange && _ctx.handleFilterChange(...args))),\n pattern: \"^([0-9]*[0-9]):([0-5][0-9])$\",\n placeholder: \"hh:mm\",\n type: \"text\"\n }, null, 40, _hoisted_22),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n name: \"duration_to\",\n value: _ctx.$route.query.duration_to,\n onChange: _cache[6] || (_cache[6] = \n//@ts-ignore\n(...args) => (_ctx.handleFilterChange && _ctx.handleFilterChange(...args))),\n pattern: \"^([0-9]*[0-9]):([0-5][0-9])$\",\n placeholder: \"hh:mm\",\n type: \"text\"\n }, null, 40, _hoisted_23)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_24, [\n _createElementVNode(\"div\", _hoisted_25, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.AVE_SPEED')) + \" (km): \", 1),\n _createElementVNode(\"div\", _hoisted_26, [\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"ave_speed_from\",\n value: _ctx.$route.query.ave_speed_from,\n onChange: _cache[7] || (_cache[7] = \n//@ts-ignore\n(...args) => (_ctx.handleFilterChange && _ctx.handleFilterChange(...args))),\n step: \"1\",\n type: \"number\"\n }, null, 40, _hoisted_27),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"ave_speed_to\",\n value: _ctx.$route.query.ave_speed_to,\n onChange: _cache[8] || (_cache[8] = \n//@ts-ignore\n(...args) => (_ctx.handleFilterChange && _ctx.handleFilterChange(...args))),\n step: \"1\",\n type: \"number\"\n }, null, 40, _hoisted_28)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_29, [\n _createElementVNode(\"div\", _hoisted_30, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.MAX_SPEED')) + \" (km): \", 1),\n _createElementVNode(\"div\", _hoisted_31, [\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"max_speed_from\",\n value: _ctx.$route.query.max_speed_from,\n onChange: _cache[9] || (_cache[9] = \n//@ts-ignore\n(...args) => (_ctx.handleFilterChange && _ctx.handleFilterChange(...args))),\n step: \"1\",\n type: \"number\"\n }, null, 40, _hoisted_32),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t('workouts.TO')), 1),\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"max_speed_to\",\n value: _ctx.$route.query.max_speed_to,\n onChange: _cache[10] || (_cache[10] = \n//@ts-ignore\n(...args) => (_ctx.handleFilterChange && _ctx.handleFilterChange(...args))),\n step: \"1\",\n type: \"number\"\n }, null, 40, _hoisted_33)\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_34, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n onClick: _cache[11] || (_cache[11] = \n//@ts-ignore\n(...args) => (_ctx.onFilter && _ctx.onFilter(...args)))\n }, _toDisplayString(_ctx.$t('buttons.FILTER')), 1)\n ])\n ])\n ]))\n}","\n import { computed, ComputedRef, defineComponent, PropType, watch } from 'vue'\n import { useI18n } from 'vue-i18n'\n import { LocationQuery, useRoute, useRouter } from 'vue-router'\n\n import { ISport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n import { translateSports } from '@/utils/sports'\n\n export default defineComponent({\n name: 'WorkoutsFilters',\n props: {\n authUser: {\n type: Object as PropType,\n required: true,\n },\n sports: {\n type: Object as PropType,\n required: true,\n },\n },\n emits: ['filter'],\n setup(props, { emit }) {\n const { t } = useI18n()\n const route = useRoute()\n const router = useRouter()\n\n const translatedSports: ComputedRef = computed(() =>\n translateSports(props.sports, t)\n )\n let params: LocationQuery = Object.assign({}, route.query)\n\n function handleFilterChange(event: Event & { target: HTMLInputElement }) {\n if (event.target.value === '') {\n delete params[event.target.name]\n } else {\n params[event.target.name] = event.target.value\n }\n }\n function onFilter() {\n emit('filter')\n if ('page' in params) {\n params['page'] = '1'\n }\n router.push({ path: '/workouts', query: params })\n }\n\n watch(\n () => route.query,\n (newQuery) => {\n params = Object.assign({}, newQuery)\n }\n )\n\n return { translatedSports, onFilter, handleFilterChange }\n },\n })\n","import { render } from \"./WorkoutsFilters.vue?vue&type=template&id=78f33062&scoped=true&ts=true\"\nimport script from \"./WorkoutsFilters.vue?vue&type=script&lang=ts\"\nexport * from \"./WorkoutsFilters.vue?vue&type=script&lang=ts\"\n\nimport \"./WorkoutsFilters.vue?vue&type=style&index=0&id=78f33062&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-78f33062\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, createTextVNode as _createTextVNode, withCtx as _withCtx, createBlock as _createBlock, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-a4169f0c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"workouts-list\" }\nconst _hoisted_2 = { class: \"total\" }\nconst _hoisted_3 = { class: \"total-label\" }\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = {\n key: 0,\n class: \"workouts-table responsive-table\"\n}\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", { class: \"sport-col\" }, null, -1))\nconst _hoisted_7 = { class: \"sport-col\" }\nconst _hoisted_8 = { class: \"cell-heading\" }\nconst _hoisted_9 = [\"onMouseover\"]\nconst _hoisted_10 = { class: \"cell-heading\" }\nconst _hoisted_11 = {\n key: 0,\n class: \"fa fa-map-o\",\n \"aria-hidden\": \"true\"\n}\nconst _hoisted_12 = { class: \"cell-heading\" }\nconst _hoisted_13 = { class: \"text-right\" }\nconst _hoisted_14 = { class: \"cell-heading\" }\nconst _hoisted_15 = { class: \"text-right\" }\nconst _hoisted_16 = { class: \"cell-heading\" }\nconst _hoisted_17 = { class: \"text-right\" }\nconst _hoisted_18 = { class: \"cell-heading\" }\nconst _hoisted_19 = { class: \"text-right\" }\nconst _hoisted_20 = { class: \"cell-heading\" }\nconst _hoisted_21 = { class: \"text-right\" }\nconst _hoisted_22 = { class: \"cell-heading\" }\nconst _hoisted_23 = { key: 0 }\nconst _hoisted_24 = { class: \"text-right\" }\nconst _hoisted_25 = { class: \"cell-heading\" }\nconst _hoisted_26 = { key: 0 }\nconst _hoisted_27 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_FilterSelects = _resolveComponent(\"FilterSelects\")!\n const _component_Pagination = _resolveComponent(\"Pagination\")!\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_StaticMap = _resolveComponent(\"StaticMap\")!\n const _component_NoWorkouts = _resolveComponent(\"NoWorkouts\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"box\", { 'empty-table': _ctx.workouts.length === 0 }])\n }, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('common.TOTAL').toLowerCase()) + \": \", 1),\n (_ctx.pagination.total !== null)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, _toDisplayString(_ctx.pagination.total) + \" \" + _toDisplayString(_ctx.$t('workouts.WORKOUT', _ctx.pagination.total)), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _createVNode(_component_FilterSelects, {\n sort: _ctx.sortList,\n order_by: _ctx.orderByList,\n query: _ctx.query,\n message: \"workouts\",\n onUpdateSelect: _ctx.reloadWorkouts\n }, null, 8, [\"sort\", \"order_by\", \"query\", \"onUpdateSelect\"]),\n (_ctx.workouts.length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createVNode(_component_Pagination, {\n class: \"top-pagination\",\n pagination: _ctx.pagination,\n path: \"/workouts\",\n query: _ctx.query\n }, null, 8, [\"pagination\", \"query\"]),\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _hoisted_6,\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.capitalize(_ctx.$t('workouts.WORKOUT', 1))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.capitalize(_ctx.$t('workouts.DATE'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.capitalize(_ctx.$t('workouts.DISTANCE'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.capitalize(_ctx.$t('workouts.DURATION'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.capitalize(_ctx.$t('workouts.AVE_SPEED'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.capitalize(_ctx.$t('workouts.MAX_SPEED'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.capitalize(_ctx.$t('workouts.ASCENT'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(_ctx.capitalize(_ctx.$t('workouts.DESCENT'))), 1)\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.workouts, (workout) => {\n return (_openBlock(), _createElementBlock(\"tr\", {\n key: workout.id\n }, [\n _createElementVNode(\"td\", _hoisted_7, [\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_ctx.$t('workouts.SPORT', 1)), 1),\n _createVNode(_component_SportImage, {\n title: \n _ctx.sports.filter((s) => s.id === workout.sport_id)[0]\n .translatedLabel\n ,\n \"sport-label\": \n _ctx.sports.filter((s) => s.id === workout.sport_id)[0].label\n \n }, null, 8, [\"title\", \"sport-label\"])\n ]),\n _createElementVNode(\"td\", {\n class: \"workout-title\",\n onMouseover: ($event: any) => (_ctx.onHover(workout.id)),\n onMouseleave: _cache[0] || (_cache[0] = ($event: any) => (_ctx.onHover(null)))\n }, [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_ctx.capitalize(_ctx.$t('workouts.WORKOUT', 1))), 1),\n _createVNode(_component_router_link, {\n class: \"nav-item\",\n to: { name: 'Workout', params: { workoutId: workout.id } }\n }, {\n default: _withCtx(() => [\n (workout.with_gpx)\n ? (_openBlock(), _createElementBlock(\"i\", _hoisted_11))\n : _createCommentVNode(\"\", true),\n _createTextVNode(\" \" + _toDisplayString(workout.title), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]),\n (workout.with_gpx && _ctx.hoverWorkoutId === workout.id)\n ? (_openBlock(), _createBlock(_component_StaticMap, {\n key: 0,\n workout: workout,\n \"display-hover\": true\n }, null, 8, [\"workout\"]))\n : _createCommentVNode(\"\", true)\n ], 40, _hoisted_9),\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"span\", _hoisted_12, _toDisplayString(_ctx.$t('workouts.DATE')), 1),\n _createTextVNode(\" \" + _toDisplayString(_ctx.format(\n _ctx.getDateWithTZ(workout.workout_date, _ctx.user.timezone),\n 'dd/MM/yyyy HH:mm'\n )), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_13, [\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.$t('workouts.DISTANCE')), 1),\n _createTextVNode(\" \" + _toDisplayString(Number(workout.distance).toFixed(2)) + \" km \", 1)\n ]),\n _createElementVNode(\"td\", _hoisted_15, [\n _createElementVNode(\"span\", _hoisted_16, _toDisplayString(_ctx.$t('workouts.DURATION')), 1),\n _createTextVNode(\" \" + _toDisplayString(workout.moving), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_17, [\n _createElementVNode(\"span\", _hoisted_18, _toDisplayString(_ctx.$t('workouts.AVE_SPEED')), 1),\n _createTextVNode(\" \" + _toDisplayString(workout.ave_speed) + \" km/h \", 1)\n ]),\n _createElementVNode(\"td\", _hoisted_19, [\n _createElementVNode(\"span\", _hoisted_20, _toDisplayString(_ctx.$t('workouts.MAX_SPEED')), 1),\n _createTextVNode(\" \" + _toDisplayString(workout.max_speed) + \" km/h \", 1)\n ]),\n _createElementVNode(\"td\", _hoisted_21, [\n _createElementVNode(\"span\", _hoisted_22, _toDisplayString(_ctx.$t('workouts.ASCENT')), 1),\n (workout.with_gpx)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_23, _toDisplayString(workout.ascent) + \" m\", 1))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"td\", _hoisted_24, [\n _createElementVNode(\"span\", _hoisted_25, _toDisplayString(_ctx.$t('workouts.DESCENT')), 1),\n (workout.with_gpx)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_26, _toDisplayString(workout.descent) + \" m\", 1))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n }), 128))\n ])\n ]),\n _createVNode(_component_Pagination, {\n pagination: _ctx.pagination,\n path: \"/workouts\",\n query: _ctx.query\n }, null, 8, [\"pagination\", \"query\"])\n ]))\n : _createCommentVNode(\"\", true)\n ], 2),\n (_ctx.workouts.length === 0)\n ? (_openBlock(), _createBlock(_component_NoWorkouts, { key: 0 }))\n : _createCommentVNode(\"\", true),\n _hoisted_27\n ]))\n}","\n import { format } from 'date-fns'\n import {\n ComputedRef,\n PropType,\n Ref,\n computed,\n defineComponent,\n ref,\n watch,\n capitalize,\n onBeforeMount,\n } from 'vue'\n import { LocationQuery, useRoute, useRouter } from 'vue-router'\n\n import FilterSelects from '@/components/Common/FilterSelects.vue'\n import Pagination from '@/components/Common/Pagination.vue'\n import StaticMap from '@/components/Common/StaticMap.vue'\n import NoWorkouts from '@/components/Workouts/NoWorkouts.vue'\n import { WORKOUTS_STORE } from '@/store/constants'\n import { IPagination } from '@/types/api'\n import { ITranslatedSport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n import { IWorkout, TWorkoutsPayload } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { getQuery, sortList, workoutsPayloadKeys } from '@/utils/api'\n import { getDateWithTZ } from '@/utils/dates'\n import { defaultOrder } from '@/utils/workouts'\n\n export default defineComponent({\n name: 'WorkoutsList',\n components: {\n FilterSelects,\n NoWorkouts,\n Pagination,\n StaticMap,\n },\n props: {\n user: {\n type: Object as PropType,\n required: true,\n },\n sports: {\n type: Object as PropType,\n },\n },\n setup() {\n const store = useStore()\n const route = useRoute()\n const router = useRouter()\n\n const orderByList: string[] = [\n 'ave_speed',\n 'distance',\n 'duration',\n 'workout_date',\n ]\n const workouts: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.USER_WORKOUTS]\n )\n const pagination: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUTS_PAGINATION]\n )\n let query: TWorkoutsPayload = getWorkoutsQuery(route.query)\n const hoverWorkoutId: Ref = ref(null)\n\n onBeforeMount(() => {\n loadWorkouts(query)\n })\n\n function loadWorkouts(payload: TWorkoutsPayload) {\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_USER_WORKOUTS, payload)\n }\n function reloadWorkouts(queryParam: string, queryValue: string) {\n const newQuery: LocationQuery = Object.assign({}, route.query)\n newQuery[queryParam] = queryValue\n if (queryParam === 'per_page') {\n newQuery['page'] = '1'\n }\n query = getWorkoutsQuery(newQuery)\n router.push({ path: '/workouts', query })\n }\n\n function getWorkoutsQuery(newQuery: LocationQuery): TWorkoutsPayload {\n query = getQuery(newQuery, orderByList, defaultOrder.order_by, {\n defaultSort: defaultOrder.order,\n query,\n })\n Object.keys(newQuery)\n .filter((k) => workoutsPayloadKeys.includes(k))\n .map((k) => {\n if (typeof newQuery[k] === 'string') {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n query[k] = newQuery[k]\n }\n })\n return query\n }\n\n function onHover(workoutId: string | null) {\n hoverWorkoutId.value = workoutId\n }\n\n watch(\n () => route.query,\n async (newQuery) => {\n query = getWorkoutsQuery(newQuery)\n loadWorkouts(query)\n }\n )\n\n return {\n query,\n hoverWorkoutId,\n orderByList,\n pagination,\n sortList,\n workouts,\n capitalize,\n format,\n getDateWithTZ,\n onHover,\n reloadWorkouts,\n }\n },\n })\n","import { render } from \"./WorkoutsList.vue?vue&type=template&id=a4169f0c&scoped=true&ts=true\"\nimport script from \"./WorkoutsList.vue?vue&type=script&lang=ts\"\nexport * from \"./WorkoutsList.vue?vue&type=script&lang=ts\"\n\nimport \"./WorkoutsList.vue?vue&type=style&index=0&id=a4169f0c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-a4169f0c\"]])\n\nexport default __exports__","\n import { ComputedRef, computed, defineComponent, ref } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import WorkoutsFilters from '@/components/Workouts/WorkoutsFilters.vue'\n import WorkoutsList from '@/components/Workouts/WorkoutsList.vue'\n import { AUTH_USER_STORE, SPORTS_STORE } from '@/store/constants'\n import { ISport, ITranslatedSport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { translateSports } from '@/utils/sports'\n\n export default defineComponent({\n name: 'WorkoutsView',\n components: {\n WorkoutsFilters,\n WorkoutsList,\n },\n setup() {\n const { t } = useI18n()\n const store = useStore()\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const translatedSports: ComputedRef = computed(() =>\n translateSports(sports.value, t)\n )\n const hiddenFilters = ref(true)\n\n function toggleFilters() {\n hiddenFilters.value = !hiddenFilters.value\n }\n\n return {\n authUser,\n hiddenFilters,\n translatedSports,\n toggleFilters,\n }\n },\n })\n","import { render } from \"./WorkoutsView.vue?vue&type=template&id=22a8a7cd&scoped=true&ts=true\"\nimport script from \"./WorkoutsView.vue?vue&type=script&lang=ts\"\nexport * from \"./WorkoutsView.vue?vue&type=script&lang=ts\"\n\nimport \"./WorkoutsView.vue?vue&type=style&index=0&id=22a8a7cd&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-22a8a7cd\"]])\n\nexport default __exports__","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./WorkoutsFilters.vue?vue&type=style&index=0&id=78f33062&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./WorkoutMap.vue?vue&type=style&index=0&id=76f3a2e8&lang=scss&scoped=true\"","import { resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-05bdbd04\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n id: \"workout\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"workout-container\"\n}\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\nconst _hoisted_6 = { key: 1 }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_WorkoutDetail = _resolveComponent(\"WorkoutDetail\")!\n const _component_WorkoutChart = _resolveComponent(\"WorkoutChart\")!\n const _component_WorkoutSegments = _resolveComponent(\"WorkoutSegments\")!\n const _component_WorkoutNotes = _resolveComponent(\"WorkoutNotes\")!\n const _component_NotFound = _resolveComponent(\"NotFound\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_ctx.sports.length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_ctx.workoutData.workout.id)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createVNode(_component_WorkoutDetail, {\n workoutData: _ctx.workoutData,\n sports: _ctx.sports,\n authUser: _ctx.authUser,\n markerCoordinates: _ctx.markerCoordinates,\n displaySegment: _ctx.displaySegment\n }, null, 8, [\"workoutData\", \"sports\", \"authUser\", \"markerCoordinates\", \"displaySegment\"]),\n (\n _ctx.workoutData.workout.with_gpx && _ctx.workoutData.chartData.length > 0\n )\n ? (_openBlock(), _createBlock(_component_WorkoutChart, {\n key: 0,\n workoutData: _ctx.workoutData,\n authUser: _ctx.authUser,\n displaySegment: _ctx.displaySegment,\n onGetCoordinates: _ctx.updateCoordinates\n }, null, 8, [\"workoutData\", \"authUser\", \"displaySegment\", \"onGetCoordinates\"]))\n : _createCommentVNode(\"\", true),\n (!_ctx.displaySegment && _ctx.workoutData.workout.segments.length > 1)\n ? (_openBlock(), _createBlock(_component_WorkoutSegments, {\n key: 1,\n segments: _ctx.workoutData.workout.segments\n }, null, 8, [\"segments\"]))\n : _createCommentVNode(\"\", true),\n (!_ctx.displaySegment)\n ? (_openBlock(), _createBlock(_component_WorkoutNotes, {\n key: 2,\n notes: _ctx.workoutData.workout.notes\n }, null, 8, [\"notes\"]))\n : _createCommentVNode(\"\", true),\n _hoisted_5\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n (!_ctx.workoutData.loading)\n ? (_openBlock(), _createBlock(_component_NotFound, {\n key: 0,\n target: \"WORKOUT\"\n }))\n : _createCommentVNode(\"\", true)\n ]))\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, mergeProps as _mergeProps, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2230775e\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-chart\" }\nconst _hoisted_2 = { class: \"chart-radio\" }\nconst _hoisted_3 = [\"checked\"]\nconst _hoisted_4 = [\"checked\"]\nconst _hoisted_5 = { class: \"no-data-cleaning\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_LineChart = _resolveComponent(\"LineChart\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.ANALYSIS')), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"distance\",\n checked: _ctx.displayDistance,\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayDistance && _ctx.updateDisplayDistance(...args)))\n }, null, 8, _hoisted_3),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DISTANCE')), 1)\n ]),\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"radio\",\n name: \"duration\",\n checked: !_ctx.displayDistance,\n onClick: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.updateDisplayDistance && _ctx.updateDisplayDistance(...args)))\n }, null, 8, _hoisted_4),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DURATION')), 1)\n ])\n ]),\n _createVNode(_component_LineChart, _mergeProps(_ctx.lineChartProps, {\n class: \"line-chart\",\n onMouseleave: _ctx.emitEmptyCoordinates\n }), null, 16, [\"onMouseleave\"]),\n _createElementVNode(\"div\", _hoisted_5, _toDisplayString(_ctx.$t('workouts.NO_DATA_CLEANING')), 1)\n ]),\n _: 1\n })\n ]))\n}","\n import { ChartData, ChartOptions } from 'chart.js'\n import { ComputedRef, PropType, computed, defineComponent, ref } from 'vue'\n import { LineChart, useLineChart } from 'vue-chart-3'\n import { useI18n } from 'vue-i18n'\n\n import { IUserProfile } from '@/types/user'\n import {\n IWorkoutChartData,\n IWorkoutData,\n TCoordinates,\n } from '@/types/workouts'\n import { getDatasets } from '@/utils/workouts'\n\n export default defineComponent({\n name: 'WorkoutChart',\n components: {\n LineChart,\n },\n props: {\n authUser: {\n type: Object as PropType,\n required: true,\n },\n workoutData: {\n type: Object as PropType,\n required: true,\n },\n },\n emits: ['getCoordinates'],\n setup(props, { emit }) {\n const { t } = useI18n()\n\n let displayDistance = ref(true)\n const datasets: ComputedRef = computed(() =>\n getDatasets(props.workoutData.chartData, t)\n )\n let chartData: ComputedRef> = computed(() => ({\n labels: displayDistance.value\n ? datasets.value.distance_labels\n : datasets.value.duration_labels,\n datasets: JSON.parse(\n JSON.stringify([\n datasets.value.datasets.speed,\n datasets.value.datasets.elevation,\n ])\n ),\n }))\n const coordinates: ComputedRef = computed(\n () => datasets.value.coordinates\n )\n const options = computed>(() => ({\n responsive: true,\n maintainAspectRatio: true,\n animation: false,\n layout: {\n padding: {\n top: 22,\n },\n },\n scales: {\n [displayDistance.value ? 'xDistance' : 'xDuration']: {\n grid: {\n drawOnChartArea: false,\n },\n ticks: {\n count: 10,\n callback: function (value) {\n return displayDistance.value\n ? Number(value).toFixed(2)\n : formatDuration(value)\n },\n },\n type: 'linear',\n bounds: 'data',\n title: {\n display: true,\n text: displayDistance.value\n ? t('workouts.DISTANCE') + ' (km)'\n : t('workouts.DURATION'),\n },\n },\n ySpeed: {\n grid: {\n drawOnChartArea: false,\n },\n position: 'left',\n title: {\n display: true,\n text: t('workouts.SPEED') + ' (km/h)',\n },\n },\n yElevation: {\n beginAtZero: true,\n grid: {\n drawOnChartArea: false,\n },\n position: 'right',\n title: {\n display: true,\n text: t('workouts.ELEVATION') + ' (m)',\n },\n },\n },\n elements: {\n point: {\n pointStyle: 'circle',\n pointRadius: 0,\n },\n },\n plugins: {\n datalabels: {\n display: false,\n },\n tooltip: {\n interaction: {\n intersect: false,\n mode: 'index',\n },\n callbacks: {\n label: function (context) {\n const label = ` ${context.dataset.label}: ${context.formattedValue}`\n return context.dataset.yAxisID === 'yElevation'\n ? label + ' m'\n : label + ' km/h'\n },\n title: function (tooltipItems) {\n if (tooltipItems.length > 0) {\n emitCoordinates(coordinates.value[tooltipItems[0].dataIndex])\n }\n return tooltipItems.length === 0\n ? ''\n : displayDistance.value\n ? `${t('workouts.DISTANCE')}: ${tooltipItems[0].label} km`\n : `${t('workouts.DURATION')}: ${formatDuration(\n tooltipItems[0].label.replace(',', '')\n )}`\n },\n },\n },\n },\n }))\n\n function updateDisplayDistance() {\n displayDistance.value = !displayDistance.value\n }\n function formatDuration(duration: string | number): string {\n return new Date(+duration * 1000).toISOString().substr(11, 8)\n }\n function emitCoordinates(coordinates: TCoordinates) {\n emit('getCoordinates', coordinates)\n }\n function emitEmptyCoordinates() {\n emitCoordinates({ latitude: null, longitude: null })\n }\n\n const { lineChartProps } = useLineChart({\n chartData,\n options,\n })\n return {\n displayDistance,\n lineChartProps,\n emitEmptyCoordinates,\n updateDisplayDistance,\n }\n },\n })\n","import { render } from \"./WorkoutChart.vue?vue&type=template&id=2230775e&scoped=true&ts=true\"\nimport script from \"./WorkoutChart.vue?vue&type=script&lang=ts\"\nexport * from \"./WorkoutChart.vue?vue&type=script&lang=ts\"\n\nimport \"./WorkoutChart.vue?vue&type=style&index=0&id=2230775e&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2230775e\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, withCtx as _withCtx, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-a17554ea\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"workout-detail\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Modal = _resolveComponent(\"Modal\")!\n const _component_WorkoutCardTitle = _resolveComponent(\"WorkoutCardTitle\")!\n const _component_WorkoutMap = _resolveComponent(\"WorkoutMap\")!\n const _component_WorkoutData = _resolveComponent(\"WorkoutData\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.displayModal)\n ? (_openBlock(), _createBlock(_component_Modal, {\n key: 0,\n title: _ctx.$t('common.CONFIRMATION'),\n message: _ctx.$t('workouts.WORKOUT_DELETION_CONFIRMATION'),\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (_ctx.deleteWorkout(_ctx.workoutObject.workoutId))),\n onCancelAction: _cache[1] || (_cache[1] = ($event: any) => (_ctx.updateDisplayModal(false)))\n }, null, 8, [\"title\", \"message\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createVNode(_component_WorkoutCardTitle, {\n sport: _ctx.sport,\n workoutObject: _ctx.workoutObject,\n onDisplayModal: _cache[2] || (_cache[2] = ($event: any) => (_ctx.updateDisplayModal(true)))\n }, null, 8, [\"sport\", \"workoutObject\"])\n ]),\n content: _withCtx(() => [\n _createVNode(_component_WorkoutMap, {\n workoutData: _ctx.workoutData,\n markerCoordinates: _ctx.markerCoordinates\n }, null, 8, [\"workoutData\", \"markerCoordinates\"]),\n _createVNode(_component_WorkoutData, { workoutObject: _ctx.workoutObject }, null, 8, [\"workoutObject\"])\n ]),\n _: 1\n })\n ]))\n}","import { createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-9cab340c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-card-title\" }\nconst _hoisted_2 = [\"title\"]\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-left\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = [\n _hoisted_3\n]\nconst _hoisted_5 = { class: \"workout-card-title\" }\nconst _hoisted_6 = { class: \"workout-title-date\" }\nconst _hoisted_7 = {\n key: 0,\n class: \"workout-title\"\n}\nconst _hoisted_8 = {\n key: 1,\n class: \"workout-title\"\n}\nconst _hoisted_9 = { class: \"workout-segment\" }\nconst _hoisted_10 = /*#__PURE__*/_createTextVNode(\" — \")\nconst _hoisted_11 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-map-marker\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_12 = { class: \"workout-date\" }\nconst _hoisted_13 = { class: \"workout-link\" }\nconst _hoisted_14 = [\"title\"]\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-right\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_16 = [\n _hoisted_15\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"workout-previous workout-arrow\", { inactive: !_ctx.workoutObject.previousUrl }]),\n title: \n _ctx.workoutObject.previousUrl\n ? _ctx.$t(`workouts.PREVIOUS_${_ctx.workoutObject.type}`)\n : _ctx.$t(`workouts.NO_PREVIOUS_${_ctx.workoutObject.type}`)\n ,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (\n _ctx.workoutObject.previousUrl\n ? _ctx.$router.push(_ctx.workoutObject.previousUrl)\n : null\n ))\n }, _hoisted_4, 10, _hoisted_2),\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(_component_SportImage, {\n \"sport-label\": _ctx.sport.label\n }, null, 8, [\"sport-label\"]),\n _createElementVNode(\"div\", _hoisted_6, [\n (_ctx.workoutObject.type === 'WORKOUT')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _createTextVNode(_toDisplayString(_ctx.workoutObject.title) + \" \", 1),\n _createElementVNode(\"i\", {\n class: \"fa fa-edit\",\n \"aria-hidden\": \"true\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (\n _ctx.$router.push({\n name: 'EditWorkout',\n params: { workoutId: _ctx.workoutObject.workoutId },\n })\n ))\n }),\n _createElementVNode(\"i\", {\n class: \"fa fa-trash\",\n \"aria-hidden\": \"true\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (_ctx.emit('displayModal', true)))\n })\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createTextVNode(_toDisplayString(_ctx.workoutObject.title) + \" \", 1),\n _createElementVNode(\"span\", _hoisted_9, [\n _hoisted_10,\n _hoisted_11,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.SEGMENT')) + \" \" + _toDisplayString(_ctx.workoutObject.segmentId + 1), 1)\n ])\n ])),\n _createElementVNode(\"div\", _hoisted_12, [\n _createTextVNode(_toDisplayString(_ctx.workoutObject.workoutDate) + \" - \" + _toDisplayString(_ctx.workoutObject.workoutTime) + \" \", 1),\n _createElementVNode(\"span\", _hoisted_13, [\n (_ctx.workoutObject.type === 'SEGMENT')\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n to: {\n name: 'Workout',\n params: { workoutId: _ctx.workoutObject.workoutId },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" > \" + _toDisplayString(_ctx.$t('workouts.BACK_TO_WORKOUT')), 1)\n ]),\n _: 1\n }, 8, [\"to\"]))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"workout-next workout-arrow\", { inactive: !_ctx.workoutObject.nextUrl }]),\n title: \n _ctx.workoutObject.nextUrl\n ? _ctx.$t(`workouts.NEXT_${_ctx.workoutObject.type}`)\n : _ctx.$t(`workouts.NO_NEXT_${_ctx.workoutObject.type}`)\n ,\n onClick: _cache[3] || (_cache[3] = ($event: any) => (\n _ctx.workoutObject.nextUrl ? _ctx.$router.push(_ctx.workoutObject.nextUrl) : null\n ))\n }, _hoisted_16, 10, _hoisted_14)\n ]))\n}","\n import { PropType, defineComponent } from 'vue'\n\n import { ISport } from '@/types/sports'\n import { IWorkoutObject } from '@/types/workouts'\n\n export default defineComponent({\n name: 'WorkoutCardTitle',\n props: {\n sport: {\n type: Object as PropType,\n required: true,\n },\n workoutObject: {\n type: Object as PropType,\n required: true,\n },\n },\n emits: ['displayModal'],\n setup(props, { emit }) {\n return { emit }\n },\n })\n","import { render } from \"./WorkoutCardTitle.vue?vue&type=template&id=9cab340c&scoped=true&ts=true\"\nimport script from \"./WorkoutCardTitle.vue?vue&type=script&lang=ts\"\nexport * from \"./WorkoutCardTitle.vue?vue&type=script&lang=ts\"\n\nimport \"./WorkoutCardTitle.vue?vue&type=style&index=0&id=9cab340c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-9cab340c\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-aa863bde\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-info\" }\nconst _hoisted_2 = { class: \"workout-data\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-clock-o\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = { class: \"workout-data\" }\nconst _hoisted_6 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-road\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_7 = { class: \"workout-data\" }\nconst _hoisted_8 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-tachometer\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_10 = {\n key: 0,\n class: \"workout-data\"\n}\nconst _hoisted_11 = [\"alt\"]\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_13 = {\n key: 1,\n class: \"workout-data\"\n}\nconst _hoisted_14 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-location-arrow\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_WorkoutRecord = _resolveComponent(\"WorkoutRecord\")!\n const _component_WorkoutWeather = _resolveComponent(\"WorkoutWeather\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DURATION')) + \": \", 1),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.workoutObject.moving), 1),\n _createVNode(_component_WorkoutRecord, {\n workoutObject: _ctx.workoutObject,\n record_type: \"LD\"\n }, null, 8, [\"workoutObject\"]),\n (_ctx.withPause)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createTextVNode(\" (\" + _toDisplayString(_ctx.$t('workouts.PAUSES')) + \": \", 1),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.workoutObject.pauses), 1),\n _createTextVNode(\" - \" + _toDisplayString(_ctx.$t('workouts.TOTAL_DURATION')) + \": \", 1),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.workoutObject.duration) + \")\", 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_5, [\n _hoisted_6,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DISTANCE')) + \": \", 1),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.workoutObject.distance) + \" km\", 1),\n _createVNode(_component_WorkoutRecord, {\n workoutObject: _ctx.workoutObject,\n record_type: \"FD\"\n }, null, 8, [\"workoutObject\"])\n ]),\n _createElementVNode(\"div\", _hoisted_7, [\n _hoisted_8,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.AVERAGE_SPEED')) + \": \", 1),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.workoutObject.aveSpeed) + \" km/h\", 1),\n _createVNode(_component_WorkoutRecord, {\n workoutObject: _ctx.workoutObject,\n record_type: \"AS\"\n }, null, 8, [\"workoutObject\"]),\n _hoisted_9,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.MAX_SPEED')) + \": \", 1),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.workoutObject.maxSpeed) + \" km/h\", 1),\n _createVNode(_component_WorkoutRecord, {\n workoutObject: _ctx.workoutObject,\n record_type: \"MS\"\n }, null, 8, [\"workoutObject\"])\n ]),\n (_ctx.workoutObject.maxAlt !== null && _ctx.workoutObject.minAlt !== null)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [\n _createElementVNode(\"img\", {\n class: \"mountains\",\n src: \"/img/workouts/mountains.svg\",\n alt: _ctx.$t('workouts.ELEVATION')\n }, null, 8, _hoisted_11),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.MIN_ALTITUDE')) + \": \", 1),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.workoutObject.minAlt) + \" m\", 1),\n _hoisted_12,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.MAX_ALTITUDE')) + \": \", 1),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.workoutObject.maxAlt) + \" m\", 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_ctx.workoutObject.ascent !== null && _ctx.workoutObject.descent !== null)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_13, [\n _hoisted_14,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.ASCENT')) + \": \", 1),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.workoutObject.ascent) + \" m\", 1),\n _hoisted_15,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DESCENT')) + \": \", 1),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.workoutObject.descent) + \" m\", 1)\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_WorkoutWeather, { workoutObject: _ctx.workoutObject }, null, 8, [\"workoutObject\"])\n ]))\n}","import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-da96984c\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n class: \"workout-record\"\n}\nconst _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"sup\", null, [\n /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-trophy\",\n \"aria-hidden\": \"true\"\n })\n], -1))\nconst _hoisted_3 = [\n _hoisted_2\n]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (\n _ctx.workoutObject.records &&\n _ctx.workoutObject.records.find((record) => record.record_type === _ctx.record_type)\n )\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_1, _hoisted_3))\n : _createCommentVNode(\"\", true)\n}","\n import { defineComponent, PropType } from 'vue'\n\n import { IWorkoutObject } from '@/types/workouts'\n\n export default defineComponent({\n name: 'WorkoutRecord',\n props: {\n record_type: {\n type: String,\n required: true,\n },\n workoutObject: {\n type: Object as PropType,\n required: true,\n },\n },\n })\n","import { render } from \"./WorkoutRecord.vue?vue&type=template&id=da96984c&scoped=true&ts=true\"\nimport script from \"./WorkoutRecord.vue?vue&type=script&lang=ts\"\nexport * from \"./WorkoutRecord.vue?vue&type=script&lang=ts\"\n\nimport \"./WorkoutRecord.vue?vue&type=style&index=0&id=da96984c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-da96984c\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-7eb41918\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = {\n key: 0,\n id: \"workout-weather\"\n}\nconst _hoisted_2 = { class: \"weather-table\" }\nconst _hoisted_3 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"th\", null, null, -1))\nconst _hoisted_4 = { class: \"weather-th\" }\nconst _hoisted_5 = [\"src\", \"alt\", \"title\"]\nconst _hoisted_6 = { class: \"weather-th\" }\nconst _hoisted_7 = [\"src\", \"alt\", \"title\"]\nconst _hoisted_8 = [\"alt\", \"title\"]\nconst _hoisted_9 = [\"alt\", \"title\"]\nconst _hoisted_10 = [\"alt\", \"title\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_ctx.workoutObject.weatherStart && _ctx.workoutObject.weatherEnd)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"table\", _hoisted_2, [\n _createElementVNode(\"thead\", null, [\n _createElementVNode(\"tr\", null, [\n _hoisted_3,\n _createElementVNode(\"th\", null, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.START')) + \" \", 1),\n _createElementVNode(\"img\", {\n class: \"weather-img\",\n src: `/img/weather/${_ctx.workoutObject.weatherStart.icon}.svg`,\n alt: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_ctx.workoutObject.weatherStart.icon}`\n )\n ,\n title: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_ctx.workoutObject.weatherStart.icon}`\n )\n \n }, null, 8, _hoisted_5)\n ])\n ]),\n _createElementVNode(\"th\", null, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.END')) + \" \", 1),\n _createElementVNode(\"img\", {\n class: \"weather-img\",\n src: `/img/weather/${_ctx.workoutObject.weatherEnd.icon}.svg`,\n alt: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_ctx.workoutObject.weatherEnd.icon}`\n )\n ,\n title: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_ctx.workoutObject.weatherEnd.icon}`\n )\n \n }, null, 8, _hoisted_7)\n ])\n ])\n ])\n ]),\n _createElementVNode(\"tbody\", null, [\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"img\", {\n class: \"weather-img weather-img-small\",\n src: \"/img/weather/temperature.svg\",\n alt: _ctx.$t(`workouts.WEATHER.TEMPERATURE`),\n title: _ctx.$t(`workouts.WEATHER.TEMPERATURE`)\n }, null, 8, _hoisted_8)\n ]),\n _createElementVNode(\"td\", null, _toDisplayString(Number(_ctx.workoutObject.weatherStart.temperature).toFixed(1)) + \"°C \", 1),\n _createElementVNode(\"td\", null, _toDisplayString(Number(_ctx.workoutObject.weatherEnd.temperature).toFixed(1)) + \"°C \", 1)\n ]),\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"img\", {\n class: \"weather-img weather-img-small\",\n src: \"/img/weather/pour-rain.svg\",\n alt: _ctx.$t(`workouts.WEATHER.HUMIDITY`),\n title: _ctx.$t(`workouts.WEATHER.HUMIDITY`)\n }, null, 8, _hoisted_9)\n ]),\n _createElementVNode(\"td\", null, _toDisplayString(Number(_ctx.workoutObject.weatherStart.humidity * 100).toFixed(1)) + \"% \", 1),\n _createElementVNode(\"td\", null, _toDisplayString(Number(_ctx.workoutObject.weatherEnd.humidity * 100).toFixed(1)) + \"% \", 1)\n ]),\n _createElementVNode(\"tr\", null, [\n _createElementVNode(\"td\", null, [\n _createElementVNode(\"img\", {\n class: \"weather-img weather-img-small\",\n src: \"/img/weather/breeze.svg\",\n alt: _ctx.$t(`workouts.WEATHER.WIND`),\n title: _ctx.$t(`workouts.WEATHER.WIND`)\n }, null, 8, _hoisted_10)\n ]),\n _createElementVNode(\"td\", null, _toDisplayString(Number(_ctx.workoutObject.weatherStart.wind).toFixed(1)) + \"m/s\", 1),\n _createElementVNode(\"td\", null, _toDisplayString(Number(_ctx.workoutObject.weatherEnd.wind).toFixed(1)) + \"m/s\", 1)\n ])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}","\n import { defineComponent, PropType } from 'vue'\n\n import { IWorkoutObject } from '@/types/workouts'\n\n export default defineComponent({\n name: 'WorkoutWeather',\n props: {\n workoutObject: {\n type: Object as PropType,\n required: true,\n },\n },\n })\n","import { render } from \"./WorkoutWeather.vue?vue&type=template&id=7eb41918&scoped=true&ts=true\"\nimport script from \"./WorkoutWeather.vue?vue&type=script&lang=ts\"\nexport * from \"./WorkoutWeather.vue?vue&type=script&lang=ts\"\n\nimport \"./WorkoutWeather.vue?vue&type=style&index=0&id=7eb41918&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-7eb41918\"]])\n\nexport default __exports__","\n import { PropType, computed, defineComponent } from 'vue'\n\n import WorkoutRecord from '@/components/Workout/WorkoutDetail/WorkoutRecord.vue'\n import WorkoutWeather from '@/components/Workout/WorkoutDetail/WorkoutWeather.vue'\n import { IWorkoutObject } from '@/types/workouts'\n\n export default defineComponent({\n name: 'WorkoutData',\n components: {\n WorkoutRecord,\n WorkoutWeather,\n },\n props: {\n workoutObject: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n return {\n withPause: computed(\n () =>\n props.workoutObject.pauses !== '0:00:00' &&\n props.workoutObject.pauses !== null\n ),\n }\n },\n })\n","import { render } from \"./WorkoutData.vue?vue&type=template&id=aa863bde&scoped=true&ts=true\"\nimport script from \"./WorkoutData.vue?vue&type=script&lang=ts\"\nexport * from \"./WorkoutData.vue?vue&type=script&lang=ts\"\n\nimport \"./WorkoutData.vue?vue&type=style&index=0&id=aa863bde&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-aa863bde\"]])\n\nexport default __exports__","import { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, createBlock as _createBlock, withCtx as _withCtx, toDisplayString as _toDisplayString, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-76f3a2e8\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-map\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"leaflet-container\"\n}\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = {\n key: 0,\n class: \"leaflet-container\"\n}\nconst _hoisted_5 = {\n key: 1,\n class: \"no-map\"\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_LTileLayer = _resolveComponent(\"LTileLayer\")!\n const _component_LGeoJson = _resolveComponent(\"LGeoJson\")!\n const _component_LMarker = _resolveComponent(\"LMarker\")!\n const _component_LMap = _resolveComponent(\"LMap\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.workoutData.loading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_ctx.workoutData.workout.with_gpx)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n (_ctx.geoJson.jsonData && _ctx.center && _ctx.bounds.length === 2)\n ? (_openBlock(), _createBlock(_component_LMap, {\n key: 0,\n zoom: 13,\n center: _ctx.center,\n bounds: _ctx.bounds,\n ref: \"workoutMap\",\n onReady: _cache[0] || (_cache[0] = ($event: any) => (_ctx.fitBounds(_ctx.bounds)))\n }, {\n default: _withCtx(() => [\n _createVNode(_component_LTileLayer, {\n url: `${_ctx.getApiUrl()}workouts/map_tile/{s}/{z}/{x}/{y}.png`,\n attribution: _ctx.appConfig.map_attribution,\n bounds: _ctx.bounds\n }, null, 8, [\"url\", \"attribution\", \"bounds\"]),\n _createVNode(_component_LGeoJson, {\n geojson: _ctx.geoJson.jsonData\n }, null, 8, [\"geojson\"]),\n (_ctx.markerCoordinates.latitude)\n ? (_openBlock(), _createBlock(_component_LMarker, {\n key: 0,\n \"lat-lng\": [_ctx.markerCoordinates.latitude, _ctx.markerCoordinates.longitude]\n }, null, 8, [\"lat-lng\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"center\", \"bounds\"]))\n : _createCommentVNode(\"\", true)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_5, _toDisplayString(_ctx.$t('workouts.NO_MAP')), 1))\n ]))\n ]))\n}","\n import { gpx } from '@tmcw/togeojson'\n import { LGeoJson, LMap, LMarker, LTileLayer } from '@vue-leaflet/vue-leaflet'\n import { ComputedRef, PropType, computed, defineComponent, ref } from 'vue'\n\n import { ROOT_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { GeoJSONData } from '@/types/geojson'\n import { IWorkoutData, TCoordinates } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { getApiUrl } from '@/utils'\n\n export default defineComponent({\n name: 'WorkoutMap',\n components: {\n LGeoJson,\n LMap,\n LMarker,\n LTileLayer,\n },\n props: {\n workoutData: {\n type: Object as PropType,\n },\n markerCoordinates: {\n type: Object as PropType,\n required: false,\n },\n },\n setup(props) {\n const store = useStore()\n\n function getGeoJson(gpxContent: string): GeoJSONData {\n if (!gpxContent || gpxContent !== '') {\n try {\n const jsonData = gpx(\n new DOMParser().parseFromString(gpxContent, 'text/xml')\n )\n return { jsonData }\n } catch (e) {\n console.error('Invalid gpx content')\n return {}\n }\n }\n return {}\n }\n function getCenter(bounds: ComputedRef): number[] {\n return [\n (bounds.value[0][0] + bounds.value[1][0]) / 2,\n (bounds.value[0][1] + bounds.value[1][1]) / 2,\n ]\n }\n function fitBounds(bounds: number[][]) {\n if (workoutMap.value?.leafletObject) {\n workoutMap.value?.leafletObject.fitBounds(bounds)\n }\n }\n\n const workoutMap = ref null }\n }>(null)\n const bounds = computed(() =>\n props.workoutData\n ? [\n [\n props.workoutData.workout.bounds[0],\n props.workoutData.workout.bounds[1],\n ],\n [\n props.workoutData.workout.bounds[2],\n props.workoutData.workout.bounds[3],\n ],\n ]\n : []\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const center = computed(() => getCenter(bounds))\n const geoJson = computed(() =>\n props.workoutData && props.workoutData.gpx\n ? getGeoJson(props.workoutData.gpx)\n : {}\n )\n\n return {\n appConfig,\n bounds,\n center,\n geoJson,\n workoutMap,\n fitBounds,\n getApiUrl,\n }\n },\n })\n","import { render } from \"./WorkoutMap.vue?vue&type=template&id=76f3a2e8&scoped=true&ts=true\"\nimport script from \"./WorkoutMap.vue?vue&type=script&lang=ts\"\nexport * from \"./WorkoutMap.vue?vue&type=script&lang=ts\"\n\nimport \"./WorkoutMap.vue?vue&type=style&index=0&id=76f3a2e8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-76f3a2e8\"]])\n\nexport default __exports__","\n import {\n ComputedRef,\n PropType,\n Ref,\n computed,\n defineComponent,\n ref,\n watch,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import WorkoutCardTitle from '@/components/Workout/WorkoutDetail/WorkoutCardTitle.vue'\n import WorkoutData from '@/components/Workout/WorkoutDetail/WorkoutData.vue'\n import WorkoutMap from '@/components/Workout/WorkoutDetail/WorkoutMap.vue'\n import { WORKOUTS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n import {\n IWorkout,\n IWorkoutData,\n IWorkoutObject,\n IWorkoutSegment,\n TCoordinates,\n } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { formatWorkoutDate, getDateWithTZ } from '@/utils/dates'\n\n export default defineComponent({\n name: 'WorkoutDetail',\n components: {\n WorkoutCardTitle,\n WorkoutData,\n WorkoutMap,\n },\n props: {\n authUser: {\n type: Object as PropType,\n required: true,\n },\n displaySegment: {\n type: Boolean,\n required: true,\n },\n markerCoordinates: {\n type: Object as PropType,\n required: false,\n },\n sports: {\n type: Object as PropType,\n },\n workoutData: {\n type: Object as PropType,\n required: true,\n },\n },\n setup(props) {\n const route = useRoute()\n const store = useStore()\n\n function getWorkoutObjectUrl(\n workout: IWorkout,\n displaySegment: boolean,\n segmentId: number | null\n ): Record {\n const previousUrl =\n displaySegment && segmentId && segmentId !== 1\n ? `/workouts/${workout.id}/segment/${segmentId - 1}`\n : !displaySegment && workout.previous_workout\n ? `/workouts/${workout.previous_workout}`\n : null\n const nextUrl =\n displaySegment && segmentId && segmentId < workout.segments.length\n ? `/workouts/${workout.id}/segment/${segmentId + 1}`\n : !displaySegment && workout.next_workout\n ? `/workouts/${workout.next_workout}`\n : null\n return {\n previousUrl,\n nextUrl,\n }\n }\n function getWorkoutObject(\n workout: IWorkout,\n segment: IWorkoutSegment | null\n ): IWorkoutObject {\n const urls = getWorkoutObjectUrl(\n workout,\n props.displaySegment,\n segmentId.value ? +segmentId.value : null\n )\n const workoutDate = formatWorkoutDate(\n getDateWithTZ(\n props.workoutData.workout.workout_date,\n props.authUser.timezone\n )\n )\n return {\n ascent: segment ? segment.ascent : workout.ascent,\n aveSpeed: segment ? segment.ave_speed : workout.ave_speed,\n distance: segment ? segment.distance : workout.distance,\n descent: segment ? segment.descent : workout.descent,\n duration: segment ? segment.duration : workout.duration,\n maxAlt: segment ? segment.max_alt : workout.max_alt,\n maxSpeed: segment ? segment.max_speed : workout.max_speed,\n minAlt: segment ? segment.min_alt : workout.min_alt,\n moving: segment ? segment.moving : workout.moving,\n nextUrl: urls.nextUrl,\n pauses: segment ? segment.pauses : workout.pauses,\n previousUrl: urls.previousUrl,\n records: segment ? [] : workout.records,\n segmentId: segment ? segment.segment_id : null,\n title: workout.title,\n type: props.displaySegment ? 'SEGMENT' : 'WORKOUT',\n workoutDate: workoutDate.workout_date,\n weatherEnd: segment ? null : workout.weather_end,\n workoutId: workout.id,\n weatherStart: segment ? null : workout.weather_start,\n workoutTime: workoutDate.workout_time,\n }\n }\n function updateDisplayModal(value: boolean) {\n displayModal.value = value\n }\n function deleteWorkout(workoutId: string) {\n store.dispatch(WORKOUTS_STORE.ACTIONS.DELETE_WORKOUT, {\n workoutId: workoutId,\n })\n }\n\n const workout: ComputedRef = computed(\n () => props.workoutData.workout\n )\n let segmentId: Ref = ref(\n route.params.workoutId ? +route.params.segmentId : null\n )\n const segment: ComputedRef = computed(() =>\n workout.value.segments.length > 0 && segmentId.value\n ? workout.value.segments[+segmentId.value - 1]\n : null\n )\n let displayModal: Ref = ref(false)\n\n watch(\n () => route.params.segmentId,\n async (newSegmentId) => {\n if (newSegmentId) {\n segmentId.value = +newSegmentId\n }\n }\n )\n\n return {\n sport: computed(() =>\n props.sports\n ? props.sports.find(\n (sport) => sport.id === props.workoutData.workout.sport_id\n )\n : {}\n ),\n workoutObject: computed(() =>\n getWorkoutObject(workout.value, segment.value)\n ),\n displayModal,\n deleteWorkout,\n updateDisplayModal,\n }\n },\n })\n","import { render } from \"./index.vue?vue&type=template&id=a17554ea&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=a17554ea&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-a17554ea\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5c47d30a\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-note\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.NOTES')), 1)\n ]),\n content: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.notes && _ctx.notes !== '' ? _ctx.notes : _ctx.$t('workouts.NO_NOTES')), 1)\n ]),\n _: 1\n })\n ]))\n}","\n import { defineComponent } from 'vue'\n\n export default defineComponent({\n name: 'WorkoutNotes',\n props: {\n notes: {\n type: String,\n required: false,\n },\n },\n })\n","import { render } from \"./WorkoutNotes.vue?vue&type=template&id=5c47d30a&scoped=true&ts=true\"\nimport script from \"./WorkoutNotes.vue?vue&type=script&lang=ts\"\nexport * from \"./WorkoutNotes.vue?vue&type=script&lang=ts\"\n\nimport \"./WorkoutNotes.vue?vue&type=style&index=0&id=5c47d30a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5c47d30a\"]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, createElementVNode as _createElementVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5c40d110\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-segments\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.SEGMENT', 2)), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"ul\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.segments, (segment, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: segment.segment_id\n }, [\n _createVNode(_component_router_link, {\n to: {\n name: 'WorkoutSegment',\n params: {\n workoutId: segment.workout_id,\n segmentId: index + 1,\n },\n }\n }, {\n default: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t('workouts.SEGMENT', 1)) + \" \" + _toDisplayString(index + 1), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]),\n _createTextVNode(\" (\" + _toDisplayString(_ctx.$t('workouts.DISTANCE')) + \": \" + _toDisplayString(segment.distance) + \" km, \" + _toDisplayString(_ctx.$t('workouts.DURATION')) + \": \" + _toDisplayString(segment.duration) + \") \", 1)\n ]))\n }), 128))\n ])\n ]),\n _: 1\n })\n ]))\n}","\n import { PropType, defineComponent } from 'vue'\n\n import { IWorkoutSegment } from '@/types/workouts'\n\n export default defineComponent({\n name: 'WorkoutSegments',\n props: {\n segments: {\n type: Object as PropType,\n required: true,\n },\n },\n })\n","import { render } from \"./WorkoutSegments.vue?vue&type=template&id=5c40d110&scoped=true&ts=true\"\nimport script from \"./WorkoutSegments.vue?vue&type=script&lang=ts\"\nexport * from \"./WorkoutSegments.vue?vue&type=script&lang=ts\"\n\nimport \"./WorkoutSegments.vue?vue&type=style&index=0&id=5c40d110&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-5c40d110\"]])\n\nexport default __exports__","\n import {\n ComputedRef,\n Ref,\n computed,\n defineComponent,\n ref,\n watch,\n onBeforeMount,\n onUnmounted,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import NotFound from '@/components/Common/NotFound.vue'\n import WorkoutChart from '@/components/Workout/WorkoutChart.vue'\n import WorkoutDetail from '@/components/Workout/WorkoutDetail/index.vue'\n import WorkoutNotes from '@/components/Workout/WorkoutNotes.vue'\n import WorkoutSegments from '@/components/Workout/WorkoutSegments.vue'\n import {\n AUTH_USER_STORE,\n SPORTS_STORE,\n WORKOUTS_STORE,\n } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n import { IWorkoutData, IWorkoutPayload, TCoordinates } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n\n export default defineComponent({\n name: 'Workout',\n components: {\n NotFound,\n WorkoutChart,\n WorkoutDetail,\n WorkoutNotes,\n WorkoutSegments,\n },\n props: {\n displaySegment: {\n type: Boolean,\n required: true,\n },\n },\n setup(props) {\n const route = useRoute()\n const store = useStore()\n\n onBeforeMount(() => {\n const payload: IWorkoutPayload = { workoutId: route.params.workoutId }\n if (props.displaySegment) {\n payload.segmentId = route.params.segmentId\n }\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, payload)\n })\n\n const workoutData: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUT_DATA]\n )\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n let markerCoordinates: Ref = ref({\n latitude: null,\n longitude: null,\n })\n\n function updateCoordinates(coordinates: TCoordinates) {\n markerCoordinates.value = {\n latitude: coordinates.latitude,\n longitude: coordinates.longitude,\n }\n }\n\n watch(\n () => route.params.workoutId,\n async (newWorkoutId) => {\n if (newWorkoutId) {\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, {\n workoutId: newWorkoutId,\n })\n }\n }\n )\n watch(\n () => route.params.segmentId,\n async (newSegmentId) => {\n if (route.params.workoutId) {\n const payload: IWorkoutPayload = {\n workoutId: route.params.workoutId,\n }\n if (newSegmentId) {\n payload.segmentId = newSegmentId\n }\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, payload)\n }\n }\n )\n\n onUnmounted(() => {\n store.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n })\n\n return {\n authUser,\n markerCoordinates,\n sports,\n workoutData,\n updateCoordinates,\n }\n },\n })\n","import { render } from \"./Workout.vue?vue&type=template&id=05bdbd04&scoped=true&ts=true\"\nimport script from \"./Workout.vue?vue&type=script&lang=ts\"\nexport * from \"./Workout.vue?vue&type=script&lang=ts\"\n\nimport \"./Workout.vue?vue&type=style&index=0&id=05bdbd04&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-05bdbd04\"]])\n\nexport default __exports__","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./WorkoutsView.vue?vue&type=style&index=0&id=22a8a7cd&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./WorkoutNotes.vue?vue&type=style&index=0&id=5c47d30a&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./WorkoutChart.vue?vue&type=style&index=0&id=2230775e&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./WorkoutCardTitle.vue?vue&type=style&index=0&id=9cab340c&lang=scss&scoped=true\"","import { watch, ref, provide, h, inject, onUnmounted, onBeforeUnmount, onMounted, nextTick, render as render$3, reactive, computed } from 'vue';\n\nconst debounce = (fn, time) => {\n let timeout;\n\n return function (...args) {\n const context = this;\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n fn.apply(context, args);\n timeout = null;\n }, time);\n };\n};\n\nconst capitalizeFirstLetter = (string) => {\n if (!string || typeof string.charAt !== \"function\") {\n return string;\n }\n return string.charAt(0).toUpperCase() + string.slice(1);\n};\n\nconst propsBinder = (methods, leafletElement, props) => {\n for (const key in props) {\n const setMethodName = \"set\" + capitalizeFirstLetter(key);\n if (methods[setMethodName]) {\n watch(\n () => props[key],\n (newVal, oldVal) => {\n methods[setMethodName](newVal, oldVal);\n }\n );\n } else if (leafletElement[setMethodName]) {\n watch(\n () => props[key],\n (newVal) => {\n leafletElement[setMethodName](newVal);\n }\n );\n }\n }\n};\n\nconst remapEvents = (contextAttrs) => {\n const result = {};\n for (const attrName in contextAttrs) {\n if (\n attrName.startsWith(\"on\") &&\n !attrName.startsWith(\"onUpdate\") &&\n attrName !== \"onReady\"\n ) {\n const eventName = attrName.slice(2).toLocaleLowerCase();\n result[eventName] = contextAttrs[attrName];\n }\n }\n return result;\n};\n\nconst resetWebpackIcon = async (Icon) => {\n const modules = await Promise.all([\n import('leaflet/dist/images/marker-icon-2x.png'),\n import('leaflet/dist/images/marker-icon.png'),\n import('leaflet/dist/images/marker-shadow.png'),\n ]);\n\n delete Icon.Default.prototype._getIconUrl;\n\n Icon.Default.mergeOptions({\n iconRetinaUrl: modules[0].default,\n iconUrl: modules[1].default,\n shadowUrl: modules[2].default,\n });\n};\n\n/**\n * Wraps a placeholder function and provides it with the given name.\n * The wrapper can later be updated with {@link updateLeafletWrapper}\n * to provide a different function.\n *\n * @param {String} methodName Key used to provide the wrapper function\n */\nconst provideLeafletWrapper = (methodName) => {\n const wrapped = ref(() =>\n console.warn(`Method ${methodName} has been invoked without being replaced`)\n );\n const wrapper = (...args) => wrapped.value(...args);\n // eslint-disable-next-line vue/no-ref-as-operand\n wrapper.wrapped = wrapped;\n provide(methodName, wrapper);\n\n return wrapper;\n};\n\n/**\n * Change the function that will be executed when an injected Leaflet wrapper\n * is invoked.\n *\n * @param {*} wrapper Provided wrapper whose wrapped function is to be updated\n * @param {function} leafletMethod New method to be wrapped by the wrapper\n */\nconst updateLeafletWrapper = (wrapper, leafletMethod) =>\n (wrapper.wrapped.value = leafletMethod);\n\nconst WINDOW_OR_GLOBAL =\n (typeof self === \"object\" && self.self === self && self) ||\n (typeof global === \"object\" && global.global === global && global) ||\n undefined;\n\nconst GLOBAL_LEAFLET_OPT = \"useGlobalLeaflet\";\n\nconst props = {\n options: {\n type: Object,\n default: () => ({}),\n },\n};\n\nconst setup = (props) => {\n return { options: props.options, methods: {} };\n};\n\nconst props$1 = {\n ...props,\n pane: {\n type: String,\n default: \"overlayPane\",\n },\n attribution: {\n type: String,\n default: null,\n },\n name: {\n type: String,\n custom: true,\n default: undefined,\n },\n layerType: {\n type: String,\n custom: true,\n default: undefined,\n },\n visible: {\n type: Boolean,\n custom: true,\n default: true,\n },\n};\n\nconst setup$1 = (props, leafletRef, context) => {\n const addLayer = inject(\"addLayer\");\n const removeLayer = inject(\"removeLayer\");\n const {\n options: componentOptions,\n methods: componentMethods,\n } = setup(props);\n\n const options = {\n ...componentOptions,\n attribution: props.attribution,\n pane: props.pane,\n };\n\n const addThisLayer = () => addLayer({ leafletObject: leafletRef.value });\n const removeThisLayer = () =>\n removeLayer({ leafletObject: leafletRef.value });\n\n const methods = {\n ...componentMethods,\n setAttribution(val, old) {\n const attributionControl = this.$parent.leafletObject.attributionControl;\n attributionControl.removeAttribution(old).addAttribution(val);\n },\n setName() {\n removeThisLayer();\n if (props.visible) {\n addThisLayer();\n }\n },\n setLayerType() {\n removeThisLayer();\n if (props.visible) {\n addThisLayer();\n }\n },\n setVisible(isVisible) {\n if (leafletRef.value) {\n if (isVisible) {\n addThisLayer();\n } else {\n removeThisLayer();\n }\n }\n },\n bindPopup({ leafletObject }) {\n leafletRef.value.bindPopup(leafletObject);\n },\n bindTooltip({ leafletObject }) {\n leafletRef.value.bindTooltip(leafletObject);\n },\n unbindTooltip() {\n const tooltip = leafletRef.value ? leafletRef.value.getTooltip() : null;\n if (tooltip) {\n tooltip.unbindTooltip();\n }\n },\n unbindPopup() {\n const popup = leafletRef.value ? leafletRef.value.getPopup() : null;\n if (popup) {\n popup.unbindPopup();\n }\n },\n updateVisibleProp(value) {\n /**\n * Triggers when the visible prop needs to be updated\n * @type {boolean}\n * @property {boolean} value - value of the visible property\n */\n context.emit(\"update:visible\", value);\n },\n };\n\n provide(\"bindPopup\", methods.bindPopup);\n provide(\"bindTooltip\", methods.bindTooltip);\n provide(\"unbindTooltip\", methods.unbindTooltip);\n provide(\"unbindPopup\", methods.unbindPopup);\n\n onUnmounted(() => {\n methods.unbindPopup();\n methods.unbindTooltip();\n removeThisLayer();\n });\n\n return { options, methods };\n};\n\nconst render = (ready, slots) => {\n if (ready && slots.default) {\n return h(\"div\", { style: { display: \"none\" } }, slots.default());\n }\n};\n\nconst props$2 = {\n ...props,\n interactive: {\n type: Boolean,\n default: true,\n },\n bubblingMouseEvents: {\n type: Boolean,\n default: true,\n },\n};\n\nconst setup$2 = (props) => {\n const { options: componentOptions, methods } = setup(props);\n const options = {\n ...componentOptions,\n interactive: props.interactive,\n bubblingMouseEvents: props.bubblingMouseEvents,\n };\n\n return { options, methods };\n};\n\nconst props$3 = {\n ...props$1,\n ...props$2,\n stroke: {\n type: Boolean,\n custom: true,\n default: true,\n },\n color: {\n type: String,\n custom: true,\n default: \"#3388ff\",\n },\n weight: {\n type: Number,\n custom: true,\n default: 3,\n },\n opacity: {\n type: Number,\n custom: true,\n default: 1.0,\n },\n lineCap: {\n type: String,\n custom: true,\n default: \"round\",\n },\n lineJoin: {\n type: String,\n custom: true,\n default: \"round\",\n },\n dashArray: {\n type: String,\n custom: true,\n default: null,\n },\n dashOffset: {\n type: String,\n custom: true,\n default: null,\n },\n fill: {\n type: Boolean,\n custom: true,\n default: false,\n },\n fillColor: {\n type: String,\n custom: true,\n default: \"#3388ff\",\n },\n fillOpacity: {\n type: Number,\n custom: true,\n default: 0.2,\n },\n fillRule: {\n type: String,\n custom: true,\n default: \"evenodd\",\n },\n className: {\n type: String,\n custom: true,\n default: null,\n },\n};\n\nconst setup$3 = (props, leafletRef, context) => {\n const { options: layerOptions, methods: layerMethods } = setup$1(\n props,\n leafletRef,\n context\n );\n const {\n options: interactiveLayerOptions,\n methods: interactiveLayerMethods,\n } = setup$2(props);\n\n const removeLayer = inject(\"removeLayer\");\n\n const options = {\n ...layerOptions,\n ...interactiveLayerOptions,\n stroke: props.stroke,\n color: props.color,\n weight: props.weight,\n opacity: props.opacity,\n lineCap: props.lineCap,\n lineJoin: props.lineJoin,\n dashArray: props.dashArray,\n dashOffset: props.dashOffset,\n fill: props.fill,\n fillColor: props.fillColor,\n fillOpacity: props.fillOpacity,\n fillRule: props.fillRule,\n className: props.className,\n };\n const methods = {\n ...layerMethods,\n ...interactiveLayerMethods,\n setStroke(stroke) {\n leafletRef.value.setStyle({ stroke });\n },\n setColor(color) {\n leafletRef.value.setStyle({ color });\n },\n setWeight(weight) {\n leafletRef.value.setStyle({ weight });\n },\n setOpacity(opacity) {\n leafletRef.value.setStyle({ opacity });\n },\n setLineCap(lineCap) {\n leafletRef.value.setStyle({ lineCap });\n },\n setLineJoin(lineJoin) {\n leafletRef.value.setStyle({ lineJoin });\n },\n setDashArray(dashArray) {\n leafletRef.value.setStyle({ dashArray });\n },\n setDashOffset(dashOffset) {\n leafletRef.value.setStyle({ dashOffset });\n },\n setFill(fill) {\n leafletRef.value.setStyle({ fill });\n },\n setFillColor(fillColor) {\n leafletRef.value.setStyle({ fillColor });\n },\n setFillOpacity(fillOpacity) {\n leafletRef.value.setStyle({ fillOpacity });\n },\n setFillRule(fillRule) {\n leafletRef.value.setStyle({ fillRule });\n },\n setClassName(className) {\n leafletRef.value.setStyle({ className });\n },\n };\n\n onBeforeUnmount(() => {\n removeLayer({ leafletObject: leafletRef.value });\n });\n\n return { options, methods };\n};\n\nconst props$4 = {\n ...props$3,\n latLng: {\n type: [Object, Array],\n custom: true,\n default: null,\n },\n /**\n * Radius of the marker in pixels.\n */\n radius: {\n type: Number,\n default: null,\n },\n};\n\nconst setup$4 = (props, leafletRef, context) => {\n const { options: pathOptions, methods: pathMethods } = setup$3(\n props,\n leafletRef,\n context\n );\n const options = {\n ...pathOptions,\n ...props,\n };\n const methods = {\n ...pathMethods,\n setRadius(radius) {\n leafletRef.value.setRadius(radius);\n },\n setLatLng(latLng) {\n leafletRef.value.setLatLng(latLng);\n },\n };\n\n return { options, methods };\n};\n\nconst props$5 = {\n ...props$4,\n /**\n * Radius of the circle in meters.\n */\n radius: {\n type: Number,\n default: null,\n },\n};\n\nconst setup$5 = (props, leafletRef, context) => {\n const {\n options: circleMarkerOptions,\n methods: circleMarkerMethods,\n } = setup$4(props, leafletRef, context);\n\n const options = {\n ...circleMarkerOptions,\n ...props,\n };\n\n const methods = {\n ...circleMarkerMethods,\n };\n\n return { options, methods };\n};\n\n/**\n * Circle component, lets you add and personalize circles on the map\n */\nvar script = {\n name: \"LCircle\",\n props: props$5,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$5(props, leafletRef, context);\n\n onMounted(async () => {\n const { circle, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = circle(props.latLng, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript.__file = \"src/components/LCircle.vue\";\n\n/**\n * Circle Marker component, lets you add and personalize circle markers on the map\n */\nvar script$1 = {\n name: \"LCircleMarker\",\n props: props$4,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$4(props, leafletRef, context);\n\n onMounted(async () => {\n const { circleMarker, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = circleMarker(props.latLng, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$1.__file = \"src/components/LCircleMarker.vue\";\n\nconst props$6 = {\n ...props,\n position: {\n type: String,\n default: \"topright\",\n },\n};\n\nconst setup$6 = (props, leafletRef) => {\n const {\n options: componentOptions,\n methods: componentMethods,\n } = setup(props);\n const options = {\n ...componentOptions,\n position: props.position,\n };\n\n const methods = {\n ...componentMethods,\n setPosition(position) {\n if (leafletRef.value) {\n leafletRef.value.setPosition(position);\n }\n },\n };\n\n onUnmounted(() => {\n if (leafletRef.value) {\n leafletRef.value.remove();\n }\n });\n\n return { options, methods };\n};\n\nconst render$1 = (slots) => {\n if (slots.default) {\n return h(\"div\", { ref: \"root\" }, slots.default());\n }\n return null;\n};\n\nvar script$2 = {\n name: \"LControl\",\n props: {\n ...props$6,\n disableClickPropagation: {\n type: Boolean,\n custom: true,\n default: true,\n },\n disableScrollPropagation: {\n type: Boolean,\n custom: true,\n default: false,\n },\n },\n setup(props, context) {\n const leafletRef = ref({});\n const root = ref(null);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const registerControl = inject(\"registerControl\");\n\n const { options, methods } = setup$6(props, leafletRef);\n\n onMounted(async () => {\n const { Control, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n const LControl = Control.extend({\n onAdd() {\n return root.value;\n },\n });\n\n leafletRef.value = new LControl(options);\n propsBinder(methods, leafletRef.value, props);\n registerControl({ leafletObject: leafletRef.value });\n\n if (props.disableClickPropagation) {\n DomEvent.disableClickPropagation(root.value);\n }\n if (props.disableScrollPropagation) {\n DomEvent.disableScrollPropagation(root.value);\n }\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { root, leafletObject: leafletRef };\n },\n render() {\n return render$1(this.$slots);\n },\n};\n\nscript$2.__file = \"src/components/LControl.vue\";\n\nconst props$7 = {\n ...props$6,\n prefix: {\n type: String,\n default: \"Vue-Leaflet\",\n custom: true,\n },\n};\n\nconst setup$7 = (props, leafletRef) => {\n const { options: controlOptions, methods: controlMethods } = setup$6(\n props,\n leafletRef\n );\n const options = {\n ...controlOptions,\n prefix: props.prefix,\n };\n\n const methods = {\n ...controlMethods,\n setPrefix(prefix) {\n leafletRef.value.setPrefix(prefix);\n },\n };\n\n return { options, methods };\n};\n\nvar script$3 = {\n name: \"LControlAttribution\",\n props: props$7,\n setup(props, context) {\n const leafletRef = ref({});\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const registerControl = inject(\"registerControl\");\n\n const { options, methods } = setup$7(props, leafletRef);\n\n onMounted(async () => {\n const { control } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = control.attribution(options);\n propsBinder(methods, leafletRef.value, props);\n registerControl({ leafletObject: leafletRef.value });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { leafletObject: leafletRef.value };\n },\n render() {\n return null;\n },\n};\n\nscript$3.__file = \"src/components/LControlAttribution.vue\";\n\nconst props$8 = {\n ...props$6,\n collapsed: {\n type: Boolean,\n default: true,\n },\n autoZIndex: {\n type: Boolean,\n default: true,\n },\n hideSingleBase: {\n type: Boolean,\n default: false,\n },\n sortLayers: {\n type: Boolean,\n default: false,\n },\n sortFunction: {\n type: Function,\n default: undefined,\n },\n};\n\nconst setup$8 = (props, leafletRef) => {\n const { options: controlOptions } = setup$6(props, leafletRef);\n const options = {\n ...controlOptions,\n collapsed: props.collapsed,\n autoZIndex: props.autoZIndex,\n hideSingleBase: props.hideSingleBase,\n sortLayers: props.sortLayers,\n sortFunction: props.sortFunction,\n };\n\n const methods = {\n addLayer(layer) {\n if (layer.layerType === \"base\") {\n leafletRef.value.addBaseLayer(layer.leafletObject, layer.name);\n } else if (layer.layerType === \"overlay\") {\n leafletRef.value.addOverlay(layer.leafletObject, layer.name);\n }\n },\n removeLayer(layer) {\n leafletRef.value.removeLayer(layer.leafletObject);\n },\n };\n return { options, methods };\n};\n\nvar script$4 = {\n name: \"LControlLayers\",\n props: props$8,\n setup(props, context) {\n const leafletRef = ref({});\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const registerLayerControl = inject(\"registerLayerControl\");\n\n const { options, methods } = setup$8(props, leafletRef);\n\n onMounted(async () => {\n const { control } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = control.layers(null, null, options);\n\n propsBinder(methods, leafletRef.value, props);\n\n registerLayerControl({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { leafletObject: leafletRef.value };\n },\n render() {\n return null;\n },\n};\n\nscript$4.__file = \"src/components/LControlLayers.vue\";\n\nconst props$9 = {\n ...props$6,\n maxWidth: {\n type: Number,\n default: 100,\n },\n metric: {\n type: Boolean,\n default: true,\n },\n imperial: {\n type: Boolean,\n default: true,\n },\n updateWhenIdle: {\n type: Boolean,\n default: false,\n },\n};\n\nconst setup$9 = (props, leafletRef) => {\n const { options: controlOptions, methods: controlMethods } = setup$6(\n props,\n leafletRef\n );\n const options = {\n ...controlOptions,\n maxWidth: props.maxWidth,\n metric: props.metric,\n imperial: props.imperial,\n updateWhenIdle: props.updateWhenIdle,\n };\n\n return { options, methods: controlMethods };\n};\n\nvar script$5 = {\n name: \"LControlScale\",\n props: props$9,\n setup(props, context) {\n const leafletRef = ref({});\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const registerControl = inject(\"registerControl\");\n\n const { options, methods } = setup$9(props, leafletRef);\n\n onMounted(async () => {\n const { control } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = control.scale(options);\n propsBinder(methods, leafletRef.value, props);\n registerControl({ leafletObject: leafletRef.value });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { leafletObject: leafletRef.value };\n },\n render() {\n return null;\n },\n};\n\nscript$5.__file = \"src/components/LControlScale.vue\";\n\nconst props$a = {\n ...props$6,\n zoomInText: {\n type: String,\n default: \"+\",\n },\n zoomInTitle: {\n type: String,\n default: \"Zoom in\",\n },\n zoomOutText: {\n type: String,\n default: \"-\",\n },\n zoomOutTitle: {\n type: String,\n default: \"Zoom out\",\n },\n};\n\nconst setup$a = (props, leafletRef) => {\n const { options: controlOptions, methods: controlMethods } = setup$6(\n props,\n leafletRef\n );\n const options = {\n ...controlOptions,\n zoomInText: props.zoomInText,\n zoomInTitle: props.zoomInTitle,\n zoomOutText: props.zoomOutText,\n zoomOutTitle: props.zoomOutTitle,\n };\n\n return { options, methods: controlMethods };\n};\n\nvar script$6 = {\n name: \"LControlZoom\",\n props: props$a,\n setup(props, context) {\n const leafletRef = ref({});\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const registerControl = inject(\"registerControl\");\n\n const { options, methods } = setup$a(props, leafletRef);\n\n onMounted(async () => {\n const { control } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = control.zoom(options);\n propsBinder(methods, leafletRef.value, props);\n registerControl({ leafletObject: leafletRef.value });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { leafletObject: leafletRef.value };\n },\n render() {\n return null;\n },\n};\n\nscript$6.__file = \"src/components/LControlZoom.vue\";\n\nconst props$b = {\n ...props$1,\n};\n\nconst setup$b = (props, leafletRef, context) => {\n const { options: layerOptions, methods: layerMethods } = setup$1(\n props,\n leafletRef,\n context\n );\n\n const options = {\n ...layerOptions,\n };\n\n const methods = {\n ...layerMethods,\n addLayer(layer) {\n leafletRef.value.addLayer(layer.leafletObject);\n },\n removeLayer(layer) {\n leafletRef.value.removeLayer(layer.leafletObject);\n },\n };\n\n provide(\"addLayer\", methods.addLayer);\n provide(\"removeLayer\", methods.removeLayer);\n\n return { options, methods };\n};\n\nconst props$c = {\n ...props$b,\n};\n\nconst setup$c = (props, leafletRef) => {\n const { options: layerOptions, methods: layerGroupMethods } = setup$b(\n props,\n leafletRef\n );\n\n const options = {\n ...layerOptions,\n ...props,\n };\n\n const methods = {\n ...layerGroupMethods,\n };\n\n return { options, methods };\n};\n\nvar script$7 = {\n props: props$c,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { methods, options } = setup$c(props, leafletRef);\n\n onMounted(async () => {\n const { featureGroup, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = featureGroup(options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$7.__file = \"src/components/LFeatureGroup.vue\";\n\nconst props$d = {\n ...props$b,\n geojson: {\n type: [Object, Array],\n default: () => ({}),\n },\n};\n\nconst setup$d = (props, leafletRef) => {\n const { options: layerOptions, methods: layerGroupMethods } = setup$b(\n props,\n leafletRef\n );\n\n const options = {\n ...layerOptions,\n ...props,\n };\n\n const methods = {\n ...layerGroupMethods,\n setGeojson(newVal) {\n leafletRef.value.clearLayers();\n leafletRef.value.addData(newVal);\n },\n getGeoJSONData() {\n return leafletRef.value.toGeoJSON();\n },\n getBounds() {\n return leafletRef.value.getBounds();\n },\n };\n\n return { options, methods };\n};\n\nvar script$8 = {\n props: props$d,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { methods, options } = setup$d(props, leafletRef);\n\n onMounted(async () => {\n const { geoJSON, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = geoJSON(props.geojson, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$8.__file = \"src/components/LGeoJson.vue\";\n\nconst props$e = {\n ...props$1,\n pane: {\n type: String,\n default: \"tilePane\",\n },\n opacity: {\n type: Number,\n custom: false,\n default: 1.0,\n },\n zIndex: {\n type: Number,\n default: 1,\n },\n tileSize: {\n type: Number,\n default: 256,\n },\n noWrap: {\n type: Boolean,\n default: false,\n },\n minZoom: {\n type: Number,\n default: 0,\n },\n maxZoom: {\n type: Number,\n default: undefined,\n },\n};\n\nconst setup$e = (props, leafletRef, context) => {\n const { options: layerOptions, methods: layerMethods } = setup$1(\n props,\n leafletRef,\n context\n );\n const options = {\n ...layerOptions,\n pane: props.pane,\n opacity: props.opacity,\n zIndex: props.zIndex,\n tileSize: props.tileSize,\n noWrap: props.noWrap,\n minZoom: props.minZoom,\n maxZoom: props.maxZoom,\n };\n return { options, methods: { ...layerMethods } };\n};\n\nvar script$9 = {\n props: {\n ...props$e,\n childRender: {\n type: Function,\n required: true,\n },\n },\n setup(props, context) {\n const leafletRef = ref({});\n const tileComponents = ref({});\n const root = ref(null);\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$e(props, leafletRef, context);\n\n onMounted(async () => {\n const { GridLayer, DomEvent, DomUtil } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n methods.onUnload = (e) => {\n const key = leafletRef.value._tileCoordsToKey(e.coords);\n if (tileComponents[key]) {\n tileComponents[key].innerHTML = \"\";\n tileComponents[key] = undefined;\n }\n };\n\n methods.setTileComponent = () => {\n leafletRef.value.redraw();\n };\n\n const GLayer = GridLayer.extend({\n createTile(coords) {\n const key = leafletRef.value._tileCoordsToKey(coords);\n tileComponents[key] = DomUtil.create(\"div\");\n\n let vNode = h(\n { setup: props.childRender, props: [\"coords\"] },\n { coords }\n );\n render$3(vNode, tileComponents[key]);\n\n return tileComponents[key];\n },\n });\n\n leafletRef.value = new GLayer(options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n leafletRef.value.on(\"tileunload\", methods.onUnload);\n\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n\n onUnmounted(() => {\n leafletRef.value.off(\"tileunload\", methods.unLoad);\n });\n\n return { root, ready, leafletObject: leafletRef };\n },\n render() {\n if (this.ready) {\n return h(\"div\", { style: { display: \"none\" }, ref: \"root\" });\n }\n return null;\n },\n};\n\nscript$9.__file = \"src/components/LGridLayer.vue\";\n\nconst props$f = {\n iconUrl: {\n type: String,\n custom: true,\n default: null,\n },\n iconRetinaUrl: {\n type: String,\n custom: true,\n default: null,\n },\n iconSize: {\n type: [Object, Array],\n custom: true,\n default: null,\n },\n iconAnchor: {\n type: [Object, Array],\n custom: true,\n default: null,\n },\n popupAnchor: {\n type: [Object, Array],\n custom: true,\n default: () => [0, 0],\n },\n tooltipAnchor: {\n type: [Object, Array],\n custom: true,\n default: () => [0, 0],\n },\n shadowUrl: {\n type: String,\n custom: true,\n default: null,\n },\n shadowRetinaUrl: {\n type: String,\n custom: true,\n default: null,\n },\n shadowSize: {\n type: [Object, Array],\n custom: true,\n default: null,\n },\n shadowAnchor: {\n type: [Object, Array],\n custom: true,\n default: null,\n },\n bgPos: {\n type: [Object, Array],\n custom: true,\n default: () => [0, 0],\n },\n className: {\n type: String,\n custom: true,\n default: \"\",\n },\n options: {\n type: Object,\n custom: true,\n default: () => ({}),\n },\n};\n\n/**\n * Icon component, lets you add and custom icons to the map\n */\nvar script$a = {\n name: \"LIcon\",\n props: {\n ...props$f,\n ...props,\n },\n setup(props, context) {\n const root = ref(null);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const canSetParentHtml = inject(\"canSetParentHtml\");\n const setParentHtml = inject(\"setParentHtml\");\n const setIcon = inject(\"setIcon\");\n\n let onDomEvent;\n let offDomEvent;\n let divIcon;\n let icon;\n let iconObject = undefined;\n\n const createIcon = (el, recreationNeeded, htmlSwapNeeded) => {\n const elHtml = el && el.innerHTML;\n if (!recreationNeeded) {\n if (htmlSwapNeeded && iconObject && canSetParentHtml()) {\n setParentHtml(elHtml);\n }\n return;\n }\n\n const listeners = remapEvents(context.attrs);\n if (iconObject) {\n offDomEvent(iconObject, listeners);\n }\n\n const { options: componentOptions } = setup(props);\n const options = {\n ...componentOptions,\n iconUrl: props.iconUrl,\n iconRetinaUrl: props.iconRetinaUrl,\n iconSize: props.iconSize,\n iconAnchor: props.iconAnchor,\n popupAnchor: props.popupAnchor,\n tooltipAnchor: props.tooltipAnchor,\n shadowUrl: props.shadowUrl,\n shadowRetinaUrl: props.shadowRetinaUrl,\n shadowSize: props.shadowSize,\n shadowAnchor: props.shadowAnchor,\n bgPos: props.bgPos,\n className: props.className,\n html: elHtml || props.html,\n };\n\n iconObject = options.html ? divIcon(options) : icon(options);\n onDomEvent(iconObject, listeners);\n setIcon(iconObject);\n };\n\n const scheduleCreateIcon = () => {\n nextTick(() => createIcon(root.value, true, false));\n };\n\n const scheduleHtmlSwap = () => {\n nextTick(() => createIcon(root.value, false, true));\n };\n\n const methods = {\n setIconUrl: scheduleCreateIcon,\n setIconRetinaUrl: scheduleCreateIcon,\n setIconSize: scheduleCreateIcon,\n setIconAnchor: scheduleCreateIcon,\n setPopupAnchor: scheduleCreateIcon,\n setTooltipAnchor: scheduleCreateIcon,\n setShadowUrl: scheduleCreateIcon,\n setShadowRetinaUrl: scheduleCreateIcon,\n setShadowAnchor: scheduleCreateIcon,\n setBgPos: scheduleCreateIcon,\n setClassName: scheduleCreateIcon,\n setHtml: scheduleCreateIcon,\n };\n\n onMounted(async () => {\n const { DomEvent, divIcon: lDivIcon, icon: lIcon } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n onDomEvent = DomEvent.on;\n offDomEvent = DomEvent.off;\n divIcon = lDivIcon;\n icon = lIcon;\n\n propsBinder(methods, {}, props);\n\n const observer = new MutationObserver(scheduleHtmlSwap);\n observer.observe(root.value, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true,\n });\n scheduleCreateIcon();\n });\n\n return { root };\n },\n render() {\n const content = this.$slots.default ? this.$slots.default() : undefined;\n return h(\"div\", { ref: \"root\" }, content);\n },\n};\n\nscript$a.__file = \"src/components/LIcon.vue\";\n\n/**\n * @typedef {import('leaflet/dist/leaflet-src.esm.js').LatLngBounds} LatLngBounds\n */\n\nconst props$g = {\n ...props$1,\n url: {\n type: String,\n required: true,\n },\n bounds: {\n type: [Array, Object],\n required: true,\n },\n opacity: {\n type: Number,\n custom: true,\n default: 1.0,\n },\n alt: {\n type: String,\n default: \"\",\n },\n interactive: {\n type: Boolean,\n default: false,\n },\n crossOrigin: {\n type: Boolean,\n default: false,\n },\n errorOverlayUrl: {\n type: String,\n custom: true,\n default: \"\",\n },\n zIndex: {\n type: Number,\n custom: true,\n default: 1,\n },\n className: {\n type: String,\n default: \"\",\n },\n};\n\nconst setup$f = (setupProps, LeafletRef, context) => {\n const { options: layerOptions, methods: layerMethods } = setup$1(\n setupProps,\n LeafletRef,\n context\n );\n const options = {\n ...layerOptions,\n ...setupProps,\n };\n\n const methods = {\n ...layerMethods,\n /**\n * Sets the opacity of the overlay.\n * @param {number} opacity\n */\n setOpacity(opacity) {\n return LeafletRef.value.setOpacity(opacity);\n },\n /**\n * Changes the URL of the image.\n * @param {string} url\n */\n setUrl(url) {\n return LeafletRef.value.setUrl(url);\n },\n /**\n * Update the bounds that this ImageOverlay covers\n * @param {LatLngBounds | Array>} bounds\n */\n setBounds(bounds) {\n return LeafletRef.value.setBounds(bounds);\n },\n /**\n * Get the bounds that this ImageOverlay covers\n * @returns {LatLngBounds}\n */\n getBounds() {\n return LeafletRef.value.getBounds();\n },\n /**\n * Returns the instance of HTMLImageElement used by this overlay.\n * @returns {HTMLElement}\n */\n getElement() {\n return LeafletRef.value.getElement();\n },\n /**\n * Brings the layer to the top of all overlays.\n */\n bringToFront() {\n return LeafletRef.value.bringToFront();\n },\n /**\n * Brings the layer to the bottom of all overlays.\n */\n bringToBack() {\n return LeafletRef.value.bringToBack();\n },\n /**\n * Changes the zIndex of the image overlay.\n * @param {number} zIndex\n */\n setZIndex(zIndex) {\n return LeafletRef.value.setZIndex(zIndex);\n },\n };\n\n return { options, methods };\n};\n\n/**\n * ImageOverlay component, render a plain image instead of a geospatial map.\n */\nvar script$b = {\n name: \"LImageOverlay\",\n props: props$g,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$f(props, leafletRef, context);\n\n onMounted(async () => {\n const { imageOverlay, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n leafletRef.value = imageOverlay(props.url, props.bounds, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$b.__file = \"src/components/LImageOverlay.vue\";\n\nvar script$c = {\n props: props$b,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { methods } = setup$b(props, leafletRef, context);\n\n onMounted(async () => {\n const { layerGroup, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n leafletRef.value = layerGroup(props.options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$c.__file = \"src/components/LLayerGroup.vue\";\n\nvar script$d = {\n emits: [\"ready\", \"update:zoom\", \"update:center\", \"update:bounds\"],\n props: {\n ...props,\n /**\n * The center of the map, supports .sync modifier\n */\n center: {\n type: [Object, Array],\n default: () => [0, 0],\n },\n /**\n * The bounds of the map, supports .sync modifier\n */\n bounds: {\n type: [Array, Object],\n default: undefined,\n },\n /**\n * The max bounds of the map\n */\n maxBounds: {\n type: [Array, Object],\n default: undefined,\n },\n /**\n * The zoom of the map, supports .sync modifier\n */\n zoom: {\n type: Number,\n default: 0,\n },\n /**\n * The minZoom of the map\n */\n minZoom: {\n type: Number,\n default: undefined,\n },\n /**\n * The maxZoom of the map\n */\n maxZoom: {\n type: Number,\n default: undefined,\n },\n /**\n * The paddingBottomRight of the map\n */\n paddingBottomRight: {\n type: Array,\n default: undefined,\n },\n /**\n * The paddingTopLeft of the map\n */\n paddingTopLeft: {\n type: Array,\n default: undefined,\n },\n /**\n * The padding of the map\n */\n padding: {\n type: Array,\n default: undefined,\n },\n /**\n * The worldCopyJump option for the map\n */\n worldCopyJump: {\n type: Boolean,\n default: false,\n },\n /**\n * The CRS to use for the map. Can be an object that defines a coordinate reference\n * system for projecting geographical points into screen coordinates and back\n * (see https://leafletjs.com/reference-1.7.1.html#crs-l-crs-base), or a string\n * name identifying one of Leaflet's defined CRSs, such as \"EPSG4326\".\n */\n crs: {\n type: [String, Object],\n default: \"EPSG3857\",\n },\n maxBoundsViscosity: {\n type: Number,\n default: undefined,\n },\n inertia: {\n type: Boolean,\n default: undefined,\n },\n inertiaDeceleration: {\n type: Number,\n default: undefined,\n },\n inertiaMaxSpeed: {\n type: Number,\n default: undefined,\n },\n easeLinearity: {\n type: Number,\n default: undefined,\n },\n zoomAnimation: {\n type: Boolean,\n default: undefined,\n },\n zoomAnimationThreshold: {\n type: Number,\n default: undefined,\n },\n fadeAnimation: {\n type: Boolean,\n default: undefined,\n },\n markerZoomAnimation: {\n type: Boolean,\n default: undefined,\n },\n noBlockingAnimations: {\n type: Boolean,\n default: false,\n },\n useGlobalLeaflet: {\n type: Boolean,\n default: false,\n },\n },\n setup(props, context) {\n const root = ref(null);\n const blueprint = reactive({\n ready: false,\n leafletRef: {},\n layersToAdd: [],\n layersInControl: [],\n });\n const { options: componentOptions } = setup(props);\n const options = {\n ...componentOptions,\n minZoom: props.minZoom,\n maxZoom: props.maxZoom,\n maxBounds: props.maxBounds,\n maxBoundsViscosity: props.maxBoundsViscosity,\n worldCopyJump: props.worldCopyJump,\n crs: props.crs,\n center: props.center,\n zoom: props.zoom,\n inertia: props.inertia,\n inertiaDeceleration: props.inertiaDeceleration,\n inertiaMaxSpeed: props.inertiaMaxSpeed,\n easeLinearity: props.easeLinearity,\n zoomAnimation: props.zoomAnimation,\n zoomAnimationThreshold: props.zoomAnimationThreshold,\n fadeAnimation: props.fadeAnimation,\n markerZoomAnimation: props.markerZoomAnimation,\n };\n\n const addLayer = provideLeafletWrapper(\"addLayer\");\n const removeLayer = provideLeafletWrapper(\"removeLayer\");\n const registerControl = provideLeafletWrapper(\"registerControl\");\n const registerLayerControl = provideLeafletWrapper(\"registerLayerControl\");\n provide(GLOBAL_LEAFLET_OPT, props.useGlobalLeaflet);\n\n const eventHandlers = {\n moveEndHandler() {\n /**\n * Triggers when zoom is updated\n * @type {number,string}\n */\n context.emit(\"update:zoom\", blueprint.leafletRef.getZoom());\n /**\n * Triggers when center is updated\n * @type {object,array}\n */\n context.emit(\"update:center\", blueprint.leafletRef.getCenter());\n\n /**\n * Triggers when bounds are updated\n * @type {object}\n */\n context.emit(\"update:bounds\", blueprint.leafletRef.getBounds());\n },\n overlayAddHandler(e) {\n const layer = blueprint.layersInControl.find((l) => l.name === e.name);\n if (layer) {\n layer.updateVisibleProp(true);\n }\n },\n overlayRemoveHandler(e) {\n const layer = blueprint.layersInControl.find((l) => l.name === e.name);\n if (layer) {\n layer.updateVisibleProp(false);\n }\n },\n };\n\n onMounted(async () => {\n if (props.useGlobalLeaflet) {\n WINDOW_OR_GLOBAL.L = WINDOW_OR_GLOBAL.L || (await import('leaflet'));\n }\n const {\n map,\n CRS,\n Icon,\n latLngBounds,\n latLng,\n DomEvent,\n } = props.useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n try {\n options.beforeMapMount && (await options.beforeMapMount());\n } catch (error) {\n console.error(\n `The following error occurred running the provided beforeMapMount hook ${error.message}`\n );\n }\n\n await resetWebpackIcon(Icon);\n\n const optionsCrs =\n typeof options.crs == \"string\" ? CRS[options.crs] : options.crs;\n options.crs = optionsCrs || CRS.EPSG3857;\n\n const methods = {\n addLayer(layer) {\n if (layer.layerType !== undefined) {\n if (blueprint.layerControl === undefined) {\n blueprint.layersToAdd.push(layer);\n } else {\n const exist = blueprint.layersInControl.find(\n (l) =>\n l.leafletObject._leaflet_id ===\n layer.leafletObject._leaflet_id\n );\n if (!exist) {\n blueprint.layerControl.addLayer(layer);\n blueprint.layersInControl.push(layer);\n }\n }\n }\n if (layer.visible !== false) {\n blueprint.leafletRef.addLayer(layer.leafletObject);\n }\n },\n removeLayer(layer) {\n if (layer.layerType !== undefined) {\n if (blueprint.layerControl === undefined) {\n blueprint.layersToAdd = blueprint.layersToAdd.filter(\n (l) => l.name !== layer.name\n );\n } else {\n blueprint.layerControl.removeLayer(layer.leafletObject);\n blueprint.layersInControl = blueprint.layersInControl.filter(\n (l) =>\n l.leafletObject._leaflet_id !==\n layer.leafletObject._leaflet_id\n );\n }\n }\n blueprint.leafletRef.removeLayer(layer.leafletObject);\n },\n\n registerLayerControl(lControlLayer) {\n blueprint.layerControl = lControlLayer;\n blueprint.layersToAdd.forEach((layer) => {\n blueprint.layerControl.addLayer(layer);\n });\n blueprint.layersToAdd = [];\n\n registerControl(lControlLayer);\n },\n\n registerControl(lControl) {\n blueprint.leafletRef.addControl(lControl.leafletObject);\n },\n\n setZoom(newVal) {\n const zoom = blueprint.leafletRef.getZoom();\n if (newVal !== zoom) {\n blueprint.leafletRef.setZoom(newVal, {\n animate: props.noBlockingAnimations ? false : null,\n });\n }\n },\n\n setPaddingBottomRight(newVal) {\n blueprint.paddingBottomRight = newVal;\n },\n setPaddingTopLeft(newVal) {\n blueprint.paddingTopLeft = newVal;\n },\n setPadding(newVal) {\n blueprint.padding = newVal;\n },\n setCrs(newVal) {\n const prevBounds = blueprint.leafletRef.getBounds();\n blueprint.leafletRef.options.crs = newVal;\n blueprint.leafletRef.fitBounds(prevBounds, {\n animate: false,\n padding: [0, 0],\n });\n },\n fitBounds(bounds) {\n blueprint.leafletRef.fitBounds(bounds, {\n animate: this.noBlockingAnimations ? false : null,\n });\n },\n setBounds(newVal) {\n if (!newVal) {\n return;\n }\n const newBounds = latLngBounds(newVal);\n if (!newBounds.isValid()) {\n return;\n }\n const oldBounds =\n blueprint.lastSetBounds || blueprint.leafletRef.getBounds();\n const boundsChanged = !oldBounds.equals(newBounds, 0); // set maxMargin to 0 - check exact equals\n if (boundsChanged) {\n blueprint.lastSetBounds = newBounds;\n blueprint.leafletRef.fitBounds(newBounds, this.fitBoundsOptions);\n }\n },\n\n setCenter(newVal) {\n if (newVal == null) {\n return;\n }\n const newCenter = latLng(newVal);\n const oldCenter =\n blueprint.lastSetCenter || blueprint.leafletRef.getCenter();\n if (\n oldCenter.lat !== newCenter.lat ||\n oldCenter.lng !== newCenter.lng\n ) {\n blueprint.lastSetCenter = newCenter;\n blueprint.leafletRef.panTo(newCenter, {\n animate: this.noBlockingAnimations ? false : null,\n });\n }\n },\n };\n\n updateLeafletWrapper(addLayer, methods.addLayer);\n updateLeafletWrapper(removeLayer, methods.removeLayer);\n updateLeafletWrapper(registerControl, methods.registerControl);\n updateLeafletWrapper(registerLayerControl, methods.registerLayerControl);\n\n blueprint.leafletRef = map(root.value, options);\n\n propsBinder(methods, blueprint.leafletRef, props);\n const listeners = remapEvents(context.attrs);\n\n blueprint.leafletRef.on(\n \"moveend\",\n debounce(eventHandlers.moveEndHandler, 100)\n );\n blueprint.leafletRef.on(\"overlayadd\", eventHandlers.overlayAddHandler);\n blueprint.leafletRef.on(\n \"overlayremove\",\n eventHandlers.overlayRemoveHandler\n );\n DomEvent.on(blueprint.leafletRef, listeners);\n blueprint.ready = true;\n nextTick(() => context.emit(\"ready\", blueprint.leafletRef));\n });\n\n onBeforeUnmount(() => {\n if (blueprint.leafletRef) {\n blueprint.leafletRef.remove();\n }\n });\n\n const leafletObject = computed(() => blueprint.leafletRef);\n const ready = computed(() => blueprint.ready);\n return { root, ready, leafletObject };\n },\n render() {\n return h(\n \"div\",\n { style: { width: \"100%\", height: \"100%\" }, ref: \"root\" },\n this.ready ? this.$slots.default() : {}\n );\n },\n};\n\nscript$d.__file = \"src/components/LMap.vue\";\n\nconst props$h = {\n ...props$1,\n pane: {\n type: String,\n default: \"markerPane\",\n },\n draggable: {\n type: Boolean,\n custom: true,\n default: false,\n },\n latLng: {\n type: [Object, Array],\n custom: true,\n default: null,\n },\n icon: {\n type: [Object],\n default: () => undefined,\n custom: false,\n },\n zIndexOffset: {\n type: Number,\n custom: false,\n default: null,\n },\n};\n\nconst setup$g = (props, leafletRef, context) => {\n const { options: layerOptions, methods: layerMethods } = setup$1(\n props,\n leafletRef,\n context\n );\n const options = {\n ...layerOptions,\n ...props,\n };\n\n const methods = {\n ...layerMethods,\n setDraggable(value) {\n if (leafletRef.value.dragging) {\n value\n ? leafletRef.value.dragging.enable()\n : leafletRef.value.dragging.disable();\n }\n },\n latLngSync(event) {\n context.emit(\"update:latLng\", event.latlng);\n context.emit(\"update:lat-lng\", event.latlng);\n },\n setLatLng(newVal) {\n if (newVal == null) {\n return;\n }\n\n if (leafletRef.value) {\n const oldLatLng = leafletRef.value.getLatLng();\n if (!oldLatLng || !oldLatLng.equals(newVal)) {\n leafletRef.value.setLatLng(newVal);\n }\n }\n },\n };\n return { options, methods };\n};\n\n/**\n * Marker component, lets you add and personalize markers on the map\n */\nvar script$e = {\n name: \"LMarker\",\n props: props$h,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n provide(\"canSetParentHtml\", () => !!leafletRef.value.getElement());\n provide(\n \"setParentHtml\",\n (html) => (leafletRef.value.getElement().innerHTML = html)\n );\n provide(\n \"setIcon\",\n (newIcon) => leafletRef.value.setIcon && leafletRef.value.setIcon(newIcon)\n );\n const { options, methods } = setup$g(props, leafletRef, context);\n if (options.icon === undefined) {\n // If the options objection has a property named 'icon', then Leaflet will overwrite\n // the default icon with it for the marker, _even if it is undefined_.\n // This leads to the issue discussed in https://github.com/vue-leaflet/vue-leaflet/issues/130\n delete options.icon;\n }\n\n onMounted(async () => {\n const { marker, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n leafletRef.value = marker(props.latLng, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n leafletRef.value.on(\"move\", debounce(methods.latLngSync, 100));\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$e.__file = \"src/components/LMarker.vue\";\n\nconst props$i = {\n ...props$3,\n latLngs: {\n type: Array,\n default: () => [],\n },\n smoothFactor: {\n type: Number,\n custom: true,\n default: 1.0,\n },\n noClip: {\n type: Boolean,\n custom: true,\n default: false,\n },\n};\n\nconst setup$h = (props, leafletRef, context) => {\n const { options: pathOptions, methods: pathMethods } = setup$3(\n props,\n leafletRef,\n context\n );\n const options = {\n ...pathOptions,\n ...props,\n };\n\n const methods = {\n ...pathMethods,\n setSmoothFactor(smoothFactor) {\n leafletRef.value.setStyle({ smoothFactor });\n },\n setNoClip(noClip) {\n leafletRef.value.setStyle({ noClip });\n },\n addLatLng(latLng) {\n leafletRef.value.addLatLng(latLng);\n },\n };\n return { options, methods };\n};\n\nconst props$j = {\n ...props$i,\n};\n\nconst setup$i = (props, leafletRef, context) => {\n const { options: polylineOptions, methods: polylineMethods } = setup$h(\n props,\n leafletRef,\n context\n );\n const options = {\n ...polylineOptions,\n ...props,\n };\n\n const methods = {\n ...polylineMethods,\n toGeoJSON(precision) {\n return leafletRef.value.toGeoJSON(precision);\n },\n };\n\n return { options, methods };\n};\n\n/**\n * Polygon component, lets you add and customize polygon regions on the map\n */\nvar script$f = {\n name: \"LPolygon\",\n props: props$j,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$i(props, leafletRef, context);\n\n onMounted(async () => {\n const { polygon, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = polygon(props.latLngs, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$f.__file = \"src/components/LPolygon.vue\";\n\n/**\n * Polyline component, lets you add and personalize polylines on the map\n */\nvar script$g = {\n name: \"LPolyline\",\n props: props$i,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$h(props, leafletRef, context);\n\n onMounted(async () => {\n const { polyline, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = polyline(props.latLngs, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$g.__file = \"src/components/LPolyline.vue\";\n\nconst props$k = {\n ...props,\n content: {\n type: String,\n default: null,\n },\n};\n\nconst setup$j = (props, leafletRef) => {\n const { options, methods: componentMethods } = setup(props);\n const methods = {\n ...componentMethods,\n setContent(newVal) {\n if (leafletRef.value && newVal !== null && newVal !== undefined) {\n leafletRef.value.setContent(newVal);\n }\n },\n };\n return { options, methods };\n};\n\nconst render$2 = (slots) => {\n if (slots.default) {\n return h(\"div\", { ref: \"root\" }, slots.default());\n }\n return null;\n};\n\nconst props$l = {\n ...props$k,\n latLng: {\n type: [Object, Array],\n default: () => [],\n },\n};\n\nconst setup$k = (props, leafletRef) => {\n const { options, methods } = setup$j(props, leafletRef);\n const unbindPopup = inject(\"unbindPopup\");\n\n onBeforeUnmount(() => {\n unbindPopup();\n });\n\n return { options, methods };\n};\n\n/**\n * Display a popup on the map\n */\nvar script$h = {\n name: \"LPopup\",\n props: props$l,\n setup(props, context) {\n const leafletRef = ref({});\n const root = ref(null);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const bindPopup = inject(\"bindPopup\");\n\n const { options, methods } = setup$k(props, leafletRef);\n\n onMounted(async () => {\n const { popup, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = popup(options);\n\n if (props.latLng !== undefined) {\n leafletRef.value.setLatLng(props.latLng);\n }\n\n propsBinder(methods, leafletRef.value, props);\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n leafletRef.value.setContent(props.content || root.value);\n bindPopup({ leafletObject: leafletRef.value });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { root, leafletObject: leafletRef };\n },\n render() {\n return render$2(this.$slots);\n },\n};\n\nscript$h.__file = \"src/components/LPopup.vue\";\n\nconst props$m = {\n ...props$j,\n bounds: {\n type: Array,\n default: undefined,\n },\n};\n\nconst setup$l = (props, leafletRef, context) => {\n const { options: polygonOptions, methods: polygonMethods } = setup$i(\n props,\n leafletRef,\n context\n );\n const options = {\n ...polygonOptions,\n ...props,\n };\n\n const methods = {\n ...polygonMethods,\n setBounds(latLngBounds) {\n leafletRef.value.setBounds(latLngBounds);\n },\n setLatLngs(latLngs) {\n // Calling setLatLngs on a Leaflet rectangle will convert it\n // to a polygon. So instead, we call setBounds here to ensure\n // that the rectangle remains a rectangle, defined by the\n // bounds of the points in the latLngs array.\n leafletRef.value.setBounds(latLngs);\n },\n };\n\n return { options, methods };\n};\n\n/**\n * Rectangle component, lets you add and customize rectangular regions on the map\n */\nvar script$i = {\n name: \"LRectangle\",\n props: props$m,\n setup(props, context) {\n const leafletRef = ref({});\n const ready = ref(false);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$l(props, leafletRef, context);\n\n onMounted(async () => {\n const { rectangle, latLngBounds, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n const bounds =\n props.bounds && props.bounds.length\n ? latLngBounds(props.bounds)\n : latLngBounds(props.latLngs);\n leafletRef.value = rectangle(bounds, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n ready.value = true;\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n\n return { ready, leafletObject: leafletRef };\n },\n render() {\n return render(this.ready, this.$slots);\n },\n};\n\nscript$i.__file = \"src/components/LRectangle.vue\";\n\nconst props$n = {\n ...props$e,\n tms: {\n type: Boolean,\n default: false,\n },\n subdomains: {\n type: String,\n default: \"abc\",\n },\n detectRetina: {\n type: Boolean,\n default: false,\n },\n url: {\n type: String,\n default: null,\n },\n};\n\nconst setup$m = (props, leafletRef) => {\n const {\n options: gridLayerOptions,\n methods: gridLayerMethods,\n } = setup$e(props, leafletRef);\n const options = {\n ...gridLayerOptions,\n tms: props.tms,\n subdomains: props.subdomains,\n detectRetina: props.detectRetina,\n };\n return {\n options,\n methods: {\n ...gridLayerMethods,\n },\n };\n};\n\nvar script$j = {\n props: props$n,\n setup(props, context) {\n const leafletRef = ref({});\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$m(props, leafletRef);\n\n onMounted(async () => {\n const { tileLayer, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n leafletRef.value = tileLayer(props.url, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n\n return { leafletObject: leafletRef };\n },\n render() {\n return null;\n },\n};\n\nscript$j.__file = \"src/components/LTileLayer.vue\";\n\nconst props$o = {\n ...props$k,\n};\n\nconst setup$n = (props, leafletRef) => {\n const { options, methods } = setup$j(props, leafletRef);\n const unbindTooltip = inject(\"unbindTooltip\");\n\n onBeforeUnmount(() => {\n unbindTooltip();\n });\n\n return { options, methods };\n};\n\n/**\n * Display a tooltip on the map\n */\nvar script$k = {\n name: \"LTooltip\",\n props: props$o,\n setup(props, context) {\n const leafletRef = ref({});\n const root = ref(null);\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const bindTooltip = inject(\"bindTooltip\");\n\n const { options, methods } = setup$n(props, leafletRef);\n\n onMounted(async () => {\n const { tooltip, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = tooltip(options);\n\n propsBinder(methods, leafletRef.value, props);\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n leafletRef.value.setContent(props.content || root.value);\n bindTooltip({ leafletObject: leafletRef.value });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { root, leafletObject: leafletRef };\n },\n render() {\n return render$2(this.$slots);\n },\n};\n\nscript$k.__file = \"src/components/LTooltip.vue\";\n\nconst props$p = {\n ...props$n,\n baseUrl: {\n type: String,\n default: null,\n required: true,\n },\n layers: {\n type: String,\n default: \"\",\n },\n styles: {\n type: String,\n default: \"\",\n },\n format: {\n type: String,\n default: \"image/jpeg\",\n },\n transparent: {\n type: Boolean,\n custom: false,\n },\n version: {\n type: String,\n default: \"1.1.1\",\n },\n crs: {\n default: null,\n },\n upperCase: {\n type: Boolean,\n default: false,\n },\n};\n\nconst setup$o = (props, leafletRef) => {\n const {\n options: tileLayerOptions,\n methods: tileLayerMethods,\n } = setup$m(props, leafletRef);\n const options = {\n ...tileLayerOptions,\n layers: props.layers,\n styles: props.styles,\n format: props.format,\n transparent: props.transparent,\n version: props.version,\n crs: props.crs,\n upperCase: props.upperCase,\n };\n return {\n options,\n methods: {\n ...tileLayerMethods,\n },\n };\n};\n\nvar script$l = {\n props: props$p,\n setup(props, context) {\n const leafletRef = ref({});\n\n const useGlobalLeaflet = inject(GLOBAL_LEAFLET_OPT);\n const addLayer = inject(\"addLayer\");\n\n const { options, methods } = setup$o(props, leafletRef);\n\n onMounted(async () => {\n const { tileLayer, DomEvent } = useGlobalLeaflet\n ? WINDOW_OR_GLOBAL.L\n : await import('leaflet/dist/leaflet-src.esm');\n\n leafletRef.value = tileLayer.wms(props.baseUrl, options);\n\n const listeners = remapEvents(context.attrs);\n DomEvent.on(leafletRef.value, listeners);\n\n propsBinder(methods, leafletRef.value, props);\n addLayer({\n ...props,\n ...methods,\n leafletObject: leafletRef.value,\n });\n nextTick(() => context.emit(\"ready\", leafletRef.value));\n });\n return { leafletObject: leafletRef.value };\n },\n render() {\n return null;\n },\n};\n\nscript$l.__file = \"src/components/LWmsTileLayer.vue\";\n\nexport { script as LCircle, script$1 as LCircleMarker, script$2 as LControl, script$3 as LControlAttribution, script$4 as LControlLayers, script$5 as LControlScale, script$6 as LControlZoom, script$7 as LFeatureGroup, script$8 as LGeoJson, script$9 as LGridLayer, script$a as LIcon, script$b as LImageOverlay, script$c as LLayerGroup, script$d as LMap, script$e as LMarker, script$f as LPolygon, script$g as LPolyline, script$h as LPopup, script$i as LRectangle, script$j as LTileLayer, script$k as LTooltip, script$l as LWmsTileLayer };\n//# sourceMappingURL=vue-leaflet.esm.js.map\n","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, vModelSelect as _vModelSelect, withDirectives as _withDirectives, vModelText as _vModelText, resolveComponent as _resolveComponent, createVNode as _createVNode, createBlock as _createBlock, withModifiers as _withModifiers, withCtx as _withCtx, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-8eb73dd0\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-form\" }\nconst _hoisted_2 = { class: \"form-items\" }\nconst _hoisted_3 = {\n key: 0,\n class: \"form-item-radio\"\n}\nconst _hoisted_4 = [\"checked\", \"disabled\"]\nconst _hoisted_5 = { for: \"withGpx\" }\nconst _hoisted_6 = [\"checked\", \"disabled\"]\nconst _hoisted_7 = { for: \"withoutGpx\" }\nconst _hoisted_8 = { class: \"form-item\" }\nconst _hoisted_9 = [\"disabled\"]\nconst _hoisted_10 = [\"value\"]\nconst _hoisted_11 = {\n key: 1,\n class: \"form-item\"\n}\nconst _hoisted_12 = { for: \"gpxFile\" }\nconst _hoisted_13 = [\"disabled\"]\nconst _hoisted_14 = { class: \"files-help info-box\" }\nconst _hoisted_15 = {\n key: 2,\n class: \"form-item\"\n}\nconst _hoisted_16 = { for: \"title\" }\nconst _hoisted_17 = [\"required\", \"disabled\"]\nconst _hoisted_18 = { key: 3 }\nconst _hoisted_19 = { class: \"workout-date-duration\" }\nconst _hoisted_20 = { class: \"form-item\" }\nconst _hoisted_21 = { class: \"workout-date-time\" }\nconst _hoisted_22 = [\"disabled\"]\nconst _hoisted_23 = [\"disabled\"]\nconst _hoisted_24 = { class: \"form-item\" }\nconst _hoisted_25 = [\"disabled\"]\nconst _hoisted_26 = /*#__PURE__*/_createTextVNode(\" : \")\nconst _hoisted_27 = [\"disabled\"]\nconst _hoisted_28 = /*#__PURE__*/_createTextVNode(\" : \")\nconst _hoisted_29 = [\"disabled\"]\nconst _hoisted_30 = { class: \"form-item\" }\nconst _hoisted_31 = [\"disabled\"]\nconst _hoisted_32 = { class: \"form-item\" }\nconst _hoisted_33 = { key: 1 }\nconst _hoisted_34 = {\n key: 2,\n class: \"form-buttons\"\n}\nconst _hoisted_35 = [\"disabled\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_CustomTextArea = _resolveComponent(\"CustomTextArea\")!\n const _component_ErrorMessage = _resolveComponent(\"ErrorMessage\")!\n const _component_Loader = _resolveComponent(\"Loader\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n id: \"workout-edition\",\n class: _normalizeClass([\"center-card center-card with-margin\", { 'center-form': _ctx.workout && _ctx.workout.with_gpx }])\n }, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(`workouts.${_ctx.isCreation ? 'ADD' : 'EDIT'}_WORKOUT`)), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"form\", {\n onSubmit: _cache[12] || (_cache[12] = _withModifiers(\n//@ts-ignore\n(...args) => (_ctx.updateWorkout && _ctx.updateWorkout(...args)), [\"prevent\"]))\n }, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_ctx.isCreation)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"input\", {\n id: \"withGpx\",\n type: \"radio\",\n checked: _ctx.withGpx,\n disabled: _ctx.loading,\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.updateWithGpx && _ctx.updateWithGpx(...args)))\n }, null, 8, _hoisted_4),\n _createElementVNode(\"label\", _hoisted_5, _toDisplayString(_ctx.$t('workouts.WITH_GPX')), 1)\n ]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"input\", {\n id: \"withoutGpx\",\n type: \"radio\",\n checked: !_ctx.withGpx,\n disabled: _ctx.loading,\n onClick: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.updateWithGpx && _ctx.updateWithGpx(...args)))\n }, null, 8, _hoisted_6),\n _createElementVNode(\"label\", _hoisted_7, _toDisplayString(_ctx.$t('workouts.WITHOUT_GPX')), 1)\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_8, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.SPORT', 1)) + \": \", 1),\n _withDirectives(_createElementVNode(\"select\", {\n id: \"sport\",\n required: \"\",\n disabled: _ctx.loading,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((_ctx.workoutDataObject.sport_id) = $event))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.translatedSports.filter((s) => s.is_active), (sport) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: sport.id,\n key: sport.id\n }, _toDisplayString(sport.label), 9, _hoisted_10))\n }), 128))\n ], 8, _hoisted_9), [\n [_vModelSelect, _ctx.workoutDataObject.sport_id]\n ])\n ]),\n (_ctx.isCreation && _ctx.withGpx)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [\n _createElementVNode(\"label\", _hoisted_12, _toDisplayString(_ctx.$t('workouts.GPX_FILE')) + \" \" + _toDisplayString(_ctx.$t('workouts.ZIP_ARCHIVE_DESCRIPTION')) + \": \", 1),\n _createElementVNode(\"input\", {\n id: \"gpxFile\",\n name: \"gpxFile\",\n type: \"file\",\n accept: \".gpx, .zip\",\n disabled: _ctx.loading,\n onInput: _cache[3] || (_cache[3] = \n//@ts-ignore\n(...args) => (_ctx.updateFile && _ctx.updateFile(...args)))\n }, null, 40, _hoisted_13),\n _createElementVNode(\"div\", _hoisted_14, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"strong\", null, _toDisplayString(_ctx.$t('workouts.GPX_FILE')) + \":\", 1),\n _createElementVNode(\"ul\", null, [\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.MAX_SIZE')) + \": \" + _toDisplayString(_ctx.fileSizeLimit), 1)\n ])\n ]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"strong\", null, _toDisplayString(_ctx.$t('workouts.ZIP_ARCHIVE')) + \":\", 1),\n _createElementVNode(\"ul\", null, [\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.NO_FOLDER')), 1),\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.MAX_FILES')) + \": \" + _toDisplayString(_ctx.gpx_limit_import), 1),\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.MAX_SIZE')) + \": \" + _toDisplayString(_ctx.zipSizeLimit), 1)\n ])\n ])\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [\n _createElementVNode(\"label\", _hoisted_16, _toDisplayString(_ctx.$t('workouts.TITLE')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"title\",\n name: \"title\",\n type: \"text\",\n required: !_ctx.isCreation,\n disabled: _ctx.loading,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((_ctx.workoutDataObject.title) = $event))\n }, null, 8, _hoisted_17), [\n [_vModelText, _ctx.workoutDataObject.title]\n ])\n ])),\n (!_ctx.withGpx)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_18, [\n _createElementVNode(\"div\", _hoisted_19, [\n _createElementVNode(\"div\", _hoisted_20, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.WORKOUT_DATE')) + \":\", 1),\n _createElementVNode(\"div\", _hoisted_21, [\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-date\",\n name: \"workout-date\",\n type: \"date\",\n required: \"\",\n disabled: _ctx.loading,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((_ctx.workoutDataObject.workoutDate) = $event))\n }, null, 8, _hoisted_22), [\n [_vModelText, _ctx.workoutDataObject.workoutDate]\n ]),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-time\",\n name: \"workout-time\",\n class: \"workout-time\",\n type: \"time\",\n required: \"\",\n disabled: _ctx.loading,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((_ctx.workoutDataObject.workoutTime) = $event))\n }, null, 8, _hoisted_23), [\n [_vModelText, _ctx.workoutDataObject.workoutTime]\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_24, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DURATION')) + \":\", 1),\n _createElementVNode(\"div\", null, [\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-duration-hour\",\n name: \"workout-duration-hour\",\n class: \"workout-duration\",\n type: \"text\",\n placeholder: \"HH\",\n pattern: \"^([0-9]*[0-9])$\",\n required: \"\",\n disabled: _ctx.loading,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((_ctx.workoutDataObject.workoutDurationHour) = $event))\n }, null, 8, _hoisted_25), [\n [_vModelText, _ctx.workoutDataObject.workoutDurationHour]\n ]),\n _hoisted_26,\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-duration-minutes\",\n name: \"workout-duration-minutes\",\n class: \"workout-duration\",\n type: \"text\",\n pattern: \"^([0-5][0-9])$\",\n placeholder: \"MM\",\n required: \"\",\n disabled: _ctx.loading,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = ($event: any) => ((_ctx.workoutDataObject.workoutDurationMinutes) = $event))\n }, null, 8, _hoisted_27), [\n [_vModelText, _ctx.workoutDataObject.workoutDurationMinutes]\n ]),\n _hoisted_28,\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-duration-seconds\",\n name: \"workout-duration-seconds\",\n class: \"workout-duration\",\n type: \"text\",\n pattern: \"^([0-5][0-9])$\",\n placeholder: \"SS\",\n required: \"\",\n disabled: _ctx.loading,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = ($event: any) => ((_ctx.workoutDataObject.workoutDurationSeconds) = $event))\n }, null, 8, _hoisted_29), [\n [_vModelText, _ctx.workoutDataObject.workoutDurationSeconds]\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_30, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DISTANCE')) + \" (km):\", 1),\n _withDirectives(_createElementVNode(\"input\", {\n name: \"workout-distance\",\n type: \"number\",\n min: \"0\",\n step: \"0.1\",\n required: \"\",\n disabled: _ctx.loading,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = ($event: any) => ((_ctx.workoutDataObject.workoutDistance) = $event))\n }, null, 8, _hoisted_31), [\n [_vModelText, _ctx.workoutDataObject.workoutDistance]\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_32, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.NOTES')) + \": \", 1),\n _createVNode(_component_CustomTextArea, {\n name: \"notes\",\n input: _ctx.workoutDataObject.notes,\n disabled: _ctx.loading,\n onUpdateValue: _ctx.updateNotes\n }, null, 8, [\"input\", \"disabled\", \"onUpdateValue\"])\n ])\n ]),\n (_ctx.errorMessages)\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _ctx.errorMessages\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (_ctx.loading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_33, [\n _createVNode(_component_Loader)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_34, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n type: \"submit\",\n disabled: _ctx.loading\n }, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 9, _hoisted_35),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _cache[11] || (_cache[11] = _withModifiers(\n//@ts-ignore\n(...args) => (_ctx.onCancel && _ctx.onCancel(...args)), [\"prevent\"]))\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 1)\n ]))\n ], 32)\n ])\n ]),\n _: 1\n })\n ], 2))\n}","\n import {\n ComputedRef,\n PropType,\n defineComponent,\n computed,\n reactive,\n ref,\n watch,\n onMounted,\n onUnmounted,\n } from 'vue'\n import { useI18n } from 'vue-i18n'\n import { useRouter } from 'vue-router'\n\n import { ROOT_STORE, WORKOUTS_STORE } from '@/store/constants'\n import { TAppConfig } from '@/types/application'\n import { ISport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n import { IWorkout, IWorkoutForm } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n import { formatWorkoutDate, getDateWithTZ } from '@/utils/dates'\n import { getReadableFileSize } from '@/utils/files'\n import { translateSports } from '@/utils/sports'\n\n export default defineComponent({\n name: 'WorkoutEdition',\n props: {\n authUser: {\n type: Object as PropType,\n required: true,\n },\n isCreation: {\n type: Boolean,\n default: false,\n },\n loading: {\n type: Boolean,\n default: false,\n },\n sports: {\n type: Object as PropType,\n required: true,\n },\n workout: {\n type: Object as PropType,\n required: false,\n },\n },\n setup(props) {\n const { t } = useI18n()\n const store = useStore()\n const router = useRouter()\n\n onMounted(() => {\n if (props.workout && props.workout.id) {\n formatWorkoutForm(props.workout)\n }\n })\n\n const translatedSports: ComputedRef = computed(() =>\n translateSports(props.sports, t)\n )\n const appConfig: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.APP_CONFIG]\n )\n const fileSizeLimit = appConfig.value.max_single_file_size\n ? getReadableFileSize(appConfig.value.max_single_file_size)\n : ''\n const gpx_limit_import = appConfig.value.gpx_limit_import\n const zipSizeLimit = appConfig.value.max_zip_file_size\n ? getReadableFileSize(appConfig.value.max_zip_file_size)\n : ''\n const errorMessages: ComputedRef = computed(\n () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]\n )\n const workoutForm = reactive({\n sport_id: '',\n title: '',\n notes: '',\n workoutDate: '',\n workoutTime: '',\n workoutDurationHour: '',\n workoutDurationMinutes: '',\n workoutDurationSeconds: '',\n workoutDistance: '',\n })\n let withGpx = ref(\n props.workout ? props.workout.with_gpx : props.isCreation\n )\n let gpxFile: File | null = null\n\n function updateNotes(value: string) {\n workoutForm.notes = value\n }\n function updateWithGpx() {\n withGpx.value = !withGpx.value\n }\n function updateFile(event: Event & { target: HTMLInputElement }) {\n if (event.target.files) {\n gpxFile = event.target.files[0]\n }\n }\n function formatWorkoutForm(workout: IWorkout) {\n workoutForm.sport_id = `${workout.sport_id}`\n workoutForm.title = workout.title\n workoutForm.notes = workout.notes\n if (!workout.with_gpx) {\n const workoutDateTime = formatWorkoutDate(\n getDateWithTZ(workout.workout_date, props.authUser.timezone),\n 'yyyy-MM-dd'\n )\n const duration = workout.duration.split(':')\n workoutForm.workoutDistance = `${workout.distance}`\n workoutForm.workoutDate = workoutDateTime.workout_date\n workoutForm.workoutTime = workoutDateTime.workout_time\n workoutForm.workoutDurationHour = duration[0]\n workoutForm.workoutDurationMinutes = duration[1]\n workoutForm.workoutDurationSeconds = duration[2]\n }\n }\n function formatPayload(payload: IWorkoutForm) {\n payload.title = workoutForm.title\n payload.distance = +workoutForm.workoutDistance\n payload.duration =\n +workoutForm.workoutDurationHour * 3600 +\n +workoutForm.workoutDurationMinutes * 60 +\n +workoutForm.workoutDurationSeconds\n payload.workout_date = `${workoutForm.workoutDate} ${workoutForm.workoutTime}`\n }\n function updateWorkout() {\n const payload: IWorkoutForm = {\n sport_id: +workoutForm.sport_id,\n notes: workoutForm.notes,\n }\n if (props.workout) {\n if (props.workout.with_gpx) {\n payload.title = workoutForm.title\n } else {\n formatPayload(payload)\n }\n store.dispatch(WORKOUTS_STORE.ACTIONS.EDIT_WORKOUT, {\n workoutId: props.workout.id,\n data: payload,\n })\n } else {\n if (withGpx.value) {\n if (!gpxFile) {\n const errorMessage = 'workouts.NO_FILE_PROVIDED'\n store.commit(\n ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES,\n errorMessage\n )\n return\n }\n payload.file = gpxFile\n store.dispatch(WORKOUTS_STORE.ACTIONS.ADD_WORKOUT, payload)\n } else {\n formatPayload(payload)\n store.dispatch(\n WORKOUTS_STORE.ACTIONS.ADD_WORKOUT_WITHOUT_GPX,\n payload\n )\n }\n }\n }\n function onCancel() {\n if (props.workout) {\n router.push({\n name: 'Workout',\n params: { workoutId: props.workout.id },\n })\n } else {\n router.go(-1)\n }\n }\n\n watch(\n () => props.workout,\n async (\n newWorkout: IWorkout | undefined,\n previousWorkout: IWorkout | undefined\n ) => {\n if (newWorkout !== previousWorkout && newWorkout && newWorkout.id) {\n formatWorkoutForm(newWorkout)\n }\n }\n )\n\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\n\n return {\n appConfig,\n errorMessages,\n fileSizeLimit,\n gpx_limit_import,\n translatedSports,\n withGpx,\n zipSizeLimit,\n workoutDataObject: workoutForm,\n onCancel,\n updateFile,\n updateNotes,\n updateWithGpx,\n updateWorkout,\n }\n },\n })\n","import { render } from \"./WorkoutEdition.vue?vue&type=template&id=8eb73dd0&scoped=true&ts=true\"\nimport script from \"./WorkoutEdition.vue?vue&type=script&lang=ts\"\nexport * from \"./WorkoutEdition.vue?vue&type=script&lang=ts\"\n\nimport \"./WorkoutEdition.vue?vue&type=style&index=0&id=8eb73dd0&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-8eb73dd0\"]])\n\nexport default __exports__","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./WorkoutSegments.vue?vue&type=style&index=0&id=5c40d110&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./WorkoutWeather.vue?vue&type=style&index=0&id=7eb41918&lang=scss&scoped=true\"","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"add-workout\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_WorkoutEdition = _resolveComponent(\"WorkoutEdition\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_WorkoutEdition, {\n authUser: _ctx.authUser,\n sports: _ctx.sports,\n isCreation: true,\n loading: _ctx.workoutData.loading\n }, null, 8, [\"authUser\", \"sports\", \"loading\"])\n ])\n ]))\n}","\n import { computed, defineComponent, ComputedRef } from 'vue'\n\n import WorkoutEdition from '@/components/Workout/WorkoutEdition.vue'\n import {\n AUTH_USER_STORE,\n SPORTS_STORE,\n WORKOUTS_STORE,\n } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n import { IWorkoutData } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n\n export default defineComponent({\n name: 'AddWorkout',\n components: {\n WorkoutEdition,\n },\n setup() {\n const store = useStore()\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const workoutData: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUT_DATA]\n )\n return { authUser, sports, workoutData }\n },\n })\n","import { render } from \"./AddWorkout.vue?vue&type=template&id=725b1388&ts=true\"\nimport script from \"./AddWorkout.vue?vue&type=script&lang=ts\"\nexport * from \"./AddWorkout.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Workout.vue?vue&type=style&index=0&id=05bdbd04&lang=scss&scoped=true\"","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"edit-workout\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_WorkoutEdition = _resolveComponent(\"WorkoutEdition\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_WorkoutEdition, {\n authUser: _ctx.authUser,\n sports: _ctx.sports,\n workout: _ctx.workoutData.workout,\n loading: _ctx.workoutData.loading\n }, null, 8, [\"authUser\", \"sports\", \"workout\", \"loading\"])\n ])\n ]))\n}","\n import {\n computed,\n defineComponent,\n watch,\n onBeforeMount,\n ComputedRef,\n } from 'vue'\n import { useRoute } from 'vue-router'\n\n import WorkoutEdition from '@/components/Workout/WorkoutEdition.vue'\n import {\n AUTH_USER_STORE,\n SPORTS_STORE,\n WORKOUTS_STORE,\n } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IUserProfile } from '@/types/user'\n import { IWorkoutData } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n\n export default defineComponent({\n name: 'EditWorkout',\n components: {\n WorkoutEdition,\n },\n setup() {\n const route = useRoute()\n const store = useStore()\n\n onBeforeMount(() => {\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, {\n workoutId: route.params.workoutId,\n })\n })\n\n const authUser: ComputedRef = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const sports: ComputedRef = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const workoutData: ComputedRef = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUT_DATA]\n )\n\n watch(\n () => route.params.workoutId,\n async (newWorkoutId) => {\n if (!newWorkoutId) {\n store.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\n }\n }\n )\n\n return { authUser, sports, workoutData }\n },\n })\n","import { render } from \"./EditWorkout.vue?vue&type=template&id=e7ec5396&ts=true\"\nimport script from \"./EditWorkout.vue?vue&type=script&lang=ts\"\nexport * from \"./EditWorkout.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./WorkoutEdition.vue?vue&type=style&index=0&id=8eb73dd0&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./WorkoutRecord.vue?vue&type=style&index=0&id=da96984c&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=a17554ea&lang=scss&scoped=true\"","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t((e=\"undefined\"!=typeof globalThis?globalThis:e||self).toGeoJSON={})}(this,(function(e){\"use strict\";function t(e){return e&&e.normalize&&e.normalize(),e&&e.textContent||\"\"}function n(e,t){const n=e.getElementsByTagName(t);return n.length?n[0]:null}function o(e){const o={};if(e){const s=n(e,\"line\");if(s){const e=t(n(s,\"color\")),r=parseFloat(t(n(s,\"opacity\"))),i=parseFloat(t(n(s,\"width\")));e&&(o.stroke=e),isNaN(r)||(o[\"stroke-opacity\"]=r),isNaN(i)||(o[\"stroke-width\"]=96*i/25.4)}}return o}function s(e,o){const s={};let r,i;for(i=0;i1,g=Object.assign(r(e),o(n(e,\"extensions\")),{_gpxType:\"trk\"},i.length?{coordinateProperties:{times:c?i:i[0]}}:{});for(let e=0;enew Array(e.line.length).fill(null)))),t[n][e]=o):t[n]=o}}return{type:\"Feature\",properties:g,geometry:c?{type:\"MultiLineString\",coordinates:s}:{type:\"LineString\",coordinates:s[0]}}}function*g(e){const t=e.getElementsByTagName(\"trk\"),n=e.getElementsByTagName(\"rte\"),o=e.getElementsByTagName(\"wpt\");for(let e=0;eArray(e.length).fill(null)))),c[n][e]=t[n])}if(0!==s.length)return(r.length||i.length)&&(c.coordinateProperties=Object.assign(r.length?{times:1===s.length?r[0]:r}:{},i.length?{heart:1===s.length?i[0]:i}:{})),{type:\"Feature\",properties:c,geometry:{type:1===s.length?\"LineString\":\"MultiLineString\",coordinates:1===s.length?s[0]:s}}}function*y(e){const t=e.getElementsByTagName(\"Lap\");for(let e=0;e {{ $t('buttons.FILTER') }} + @@ -202,6 +205,10 @@ } router.push({ path: '/workouts', query: params }) } + function onClearFilter() { + emit('filter') + router.push({ path: '/workouts', query: {} }) + } watch( () => route.query, @@ -210,7 +217,7 @@ } ) - return { translatedSports, onFilter, handleFilterChange } + return { translatedSports, onClearFilter, onFilter, handleFilterChange } }, }) @@ -262,10 +269,11 @@ .form-button { display: flex; justify-content: center; + flex-wrap: wrap; + margin: $default-margin * 0.5; button { - margin: $default-padding * 2 $default-padding * 0.5 $default-padding - $default-padding * 0.5; + margin-top: $default-margin; width: 100%; } } @@ -298,6 +306,7 @@ } .form-button { + flex-wrap: initial; button { margin: $default-padding $default-padding * 0.5; width: 100%; @@ -332,10 +341,17 @@ } } .form-button { + flex-wrap: initial; button { margin: $default-padding $default-padding * 0.5; } } } + + @media screen and (max-width: $x-small-limit) { + .form-button { + flex-wrap: wrap; + } + } } diff --git a/fittrackee_client/src/components/Workouts/WorkoutsList.vue b/fittrackee_client/src/components/Workouts/WorkoutsList.vue index f4536ac7..cbc40652 100644 --- a/fittrackee_client/src/components/Workouts/WorkoutsList.vue +++ b/fittrackee_client/src/components/Workouts/WorkoutsList.vue @@ -223,7 +223,6 @@ function getWorkoutsQuery(newQuery: LocationQuery): TWorkoutsPayload { query = getQuery(newQuery, orderByList, defaultOrder.order_by, { defaultSort: defaultOrder.order, - query, }) Object.keys(newQuery) .filter((k) => workoutsPayloadKeys.includes(k)) diff --git a/fittrackee_client/src/locales/en/buttons.json b/fittrackee_client/src/locales/en/buttons.json index e0f07651..0be59f70 100644 --- a/fittrackee_client/src/locales/en/buttons.json +++ b/fittrackee_client/src/locales/en/buttons.json @@ -1,6 +1,7 @@ { "BACK": "Back", "CANCEL": "Cancel", + "CLEAR_FILTER": "Clear filters", "DELETE_MY_ACCOUNT": "Delete my account", "DISABLE": "Disable", "EDIT": "Edit", diff --git a/fittrackee_client/src/locales/fr/buttons.json b/fittrackee_client/src/locales/fr/buttons.json index 85880e14..3a84962c 100644 --- a/fittrackee_client/src/locales/fr/buttons.json +++ b/fittrackee_client/src/locales/fr/buttons.json @@ -1,6 +1,7 @@ { "BACK": "Précédent", "CANCEL": "Annuler", + "CLEAR_FILTER": "Réinitialiser", "DELETE_MY_ACCOUNT": "Supprimer mon compte", "DISABLE": "Désactiver", "EDIT": "Modifier", diff --git a/fittrackee_client/src/utils/api.ts b/fittrackee_client/src/utils/api.ts index 9e24a377..a7fe3233 100644 --- a/fittrackee_client/src/utils/api.ts +++ b/fittrackee_client/src/utils/api.ts @@ -35,7 +35,7 @@ export const getQuery = ( ): TPaginationPayload => { const queryOptions = options || {} const defaultSort = queryOptions.defaultSort || 'asc' - const query = queryOptions.query || {} + const query = {} query.page = getNumberQueryValue(locationQuery.page, defaultPage) query.per_page = getNumberQueryValue(locationQuery.per_page, defaultPerPage) diff --git a/fittrackee_client/tests/unit/utils/api.spec.ts b/fittrackee_client/tests/unit/utils/api.spec.ts index de3d7770..fcf7c1b7 100644 --- a/fittrackee_client/tests/unit/utils/api.spec.ts +++ b/fittrackee_client/tests/unit/utils/api.spec.ts @@ -236,6 +236,24 @@ describe('getQuery w/ default values and input pagination payload', () => { { page: 3, per_page: 10, order: 'asc', order_by: 'workouts_count' } ) }) + + it('returns query with only pagination keys', () => { + assert.deepEqual( + getQuery( + { + page: '3', + per_page: '10', + order: 'asc', + order_by: 'workouts_count', + sport_id: '1', + }, + orderByList, + defaultOrderBy, + { query: inputQuery } + ), + { page: 3, per_page: 10, order: 'asc', order_by: 'workouts_count' } + ) + }) }) describe('rangePagination', () => {