FitTrackee/fittrackee/dist/static/js/workouts.a3f13820.js.map
2023-07-30 08:52:56 +02:00

1 line
336 KiB
Plaintext

{"version":3,"file":"static/js/workouts.a3f13820.js","mappings":"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","sources":["webpack://fittrackee_client/./src/components/Workout/WorkoutEdition.vue?1df7","webpack://fittrackee_client/./src/components/Workout/WorkoutEdition.vue","webpack://fittrackee_client/./src/views/workouts/AddWorkout.vue?212d","webpack://fittrackee_client/./src/views/workouts/AddWorkout.vue","webpack://fittrackee_client/./src/views/workouts/EditWorkout.vue?ba9e","webpack://fittrackee_client/./src/views/workouts/EditWorkout.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutCardTitle.vue?4e0b","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutCardTitle.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutRecord.vue?0a89","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutRecord.vue","webpack://fittrackee_client/./src/utils/weather.ts","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WeatherWind.vue?bd35","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WeatherWind.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutWeather.vue?84e1","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutWeather.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutData.vue?ef29","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutData.vue","webpack://fittrackee_client/./node_modules/@tmcw/togeojson/dist/togeojson.es.mjs","webpack://fittrackee_client/./node_modules/@vue-leaflet/vue-leaflet/dist/vue-leaflet.es.js","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutMap/CustomMarker.vue?3193","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutMap/CustomMarker.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutMap/index.vue?a62d","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutMap/index.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/index.vue?8ebb","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/index.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutChart/legend.ts","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutChart/index.vue?65aa","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutChart/index.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutNotes.vue?a827","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutNotes.vue","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutSegments.vue?037e","webpack://fittrackee_client/./src/components/Workout/WorkoutDetail/WorkoutSegments.vue","webpack://fittrackee_client/./src/views/workouts/Workout.vue?3305","webpack://fittrackee_client/./src/views/workouts/Workout.vue","webpack://fittrackee_client/./src/components/Workouts/WorkoutsFilters.vue?c3bc","webpack://fittrackee_client/./src/components/Workouts/WorkoutsFilters.vue","webpack://fittrackee_client/./src/components/Workouts/WorkoutsList.vue?72e6","webpack://fittrackee_client/./src/components/Workouts/WorkoutsList.vue","webpack://fittrackee_client/./src/views/workouts/WorkoutsView.vue?ee31","webpack://fittrackee_client/./src/views/workouts/WorkoutsView.vue"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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, normalizeClass as _normalizeClass, resolveComponent as _resolveComponent, createVNode as _createVNode, createBlock as _createBlock, withModifiers as _withModifiers, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-402915dc\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-form\" }\nconst _hoisted_2 = [\"onSubmit\"]\nconst _hoisted_3 = { class: \"form-items\" }\nconst _hoisted_4 = {\n key: 0,\n class: \"form-item-radio\"\n}\nconst _hoisted_5 = [\"checked\", \"disabled\"]\nconst _hoisted_6 = { for: \"withGpx\" }\nconst _hoisted_7 = [\"checked\", \"disabled\"]\nconst _hoisted_8 = { for: \"withoutGpx\" }\nconst _hoisted_9 = { class: \"form-item\" }\nconst _hoisted_10 = [\"disabled\"]\nconst _hoisted_11 = [\"value\"]\nconst _hoisted_12 = {\n key: 1,\n class: \"form-item\"\n}\nconst _hoisted_13 = { for: \"gpxFile\" }\nconst _hoisted_14 = [\"disabled\"]\nconst _hoisted_15 = { class: \"files-help info-box\" }\nconst _hoisted_16 = {\n key: 2,\n class: \"form-item\"\n}\nconst _hoisted_17 = { for: \"title\" }\nconst _hoisted_18 = [\"required\", \"disabled\"]\nconst _hoisted_19 = { key: 3 }\nconst _hoisted_20 = { class: \"workout-date-duration\" }\nconst _hoisted_21 = { class: \"form-item\" }\nconst _hoisted_22 = { class: \"workout-date-time\" }\nconst _hoisted_23 = [\"disabled\"]\nconst _hoisted_24 = [\"disabled\"]\nconst _hoisted_25 = { class: \"form-item\" }\nconst _hoisted_26 = [\"disabled\"]\nconst _hoisted_27 = [\"disabled\"]\nconst _hoisted_28 = [\"disabled\"]\nconst _hoisted_29 = { class: \"workout-data\" }\nconst _hoisted_30 = { class: \"form-item\" }\nconst _hoisted_31 = [\"disabled\"]\nconst _hoisted_32 = { class: \"form-item\" }\nconst _hoisted_33 = [\"disabled\"]\nconst _hoisted_34 = { class: \"form-item\" }\nconst _hoisted_35 = [\"disabled\"]\nconst _hoisted_36 = { class: \"form-item\" }\nconst _hoisted_37 = { key: 1 }\nconst _hoisted_38 = {\n key: 2,\n class: \"form-buttons\"\n}\nconst _hoisted_39 = [\"disabled\"]\nconst _hoisted_40 = [\"onClick\"]\n\nimport {\n ComputedRef,\n Ref,\n computed,\n reactive,\n ref,\n toRefs,\n watch,\n onMounted,\n onUnmounted,\n withDefaults,\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 { IAuthUserProfile } 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 import { convertDistance } from '@/utils/units'\n\n interface Props {\n authUser: IAuthUserProfile\n sports: ISport[]\n isCreation?: boolean\n loading?: boolean\n workout?: IWorkout\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutEdition',\n props: {\n authUser: null,\n sports: null,\n isCreation: { type: Boolean, default: false },\n loading: { type: Boolean, default: false },\n workout: { default: () => ({} as IWorkout) }\n },\n setup(__props: any) {\n\nconst props = __props as { authUser: IAuthUserProfile, sports: ISport[], isCreation: boolean, loading: boolean, workout: IWorkout };\n\n \n\n const { t } = useI18n()\n const store = useStore()\n const router = useRouter()\n\n const { authUser, workout, isCreation, loading } = toRefs(props)\n const translatedSports: ComputedRef<ISport[]> = computed(() =>\n translateSports(\n props.sports,\n t,\n 'is_active_for_user',\n workout.value.id ? [workout.value.sport_id] : []\n )\n )\n const appConfig: ComputedRef<TAppConfig> = 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<string | string[] | null> = 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 workoutAscent: '',\n workoutDescent: '',\n })\n const withGpx = ref(\n workout.value.id ? workout.value.with_gpx : isCreation.value\n )\n let gpxFile: File | null = null\n const formErrors = ref(false)\n const payloadErrorMessages: Ref<string[]> = ref([])\n\n onMounted(() => {\n let element\n if (props.workout.id) {\n formatWorkoutForm(props.workout)\n element = document.getElementById('sport')\n } else {\n element = document.getElementById('withGpx')\n }\n if (element) {\n element.focus()\n }\n })\n\n function updateNotes(value: string) {\n workoutForm.notes = value\n }\n function updateWithGpx() {\n withGpx.value = !withGpx.value\n formErrors.value = false\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 = `${\n authUser.value.imperial_units\n ? convertDistance(workout.distance, 'km', 'mi', 3)\n : parseFloat(workout.distance.toFixed(3))\n }`\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 workoutForm.workoutAscent =\n workout.ascent === null\n ? ''\n : `${\n authUser.value.imperial_units\n ? convertDistance(workout.ascent, 'm', 'ft', 2)\n : parseFloat(workout.ascent.toFixed(2))\n }`\n workoutForm.workoutDescent =\n workout.descent === null\n ? ''\n : `${\n authUser.value.imperial_units\n ? convertDistance(workout.descent, 'm', 'ft', 2)\n : parseFloat(workout.descent.toFixed(2))\n }`\n }\n }\n function isDistanceInvalid() {\n return payloadErrorMessages.value.includes('workouts.INVALID_DISTANCE')\n }\n function isDurationInvalid() {\n return payloadErrorMessages.value.includes('workouts.INVALID_DURATION')\n }\n function isElevationInvalid() {\n return payloadErrorMessages.value.includes(\n 'workouts.INVALID_ASCENT_OR_DESCENT'\n )\n }\n function formatPayload(payload: IWorkoutForm) {\n payloadErrorMessages.value = []\n payload.title = workoutForm.title\n payload.duration =\n +workoutForm.workoutDurationHour * 3600 +\n +workoutForm.workoutDurationMinutes * 60 +\n +workoutForm.workoutDurationSeconds\n if (payload.duration <= 0) {\n payloadErrorMessages.value.push('workouts.INVALID_DURATION')\n }\n payload.distance = authUser.value.imperial_units\n ? convertDistance(+workoutForm.workoutDistance, 'mi', 'km', 3)\n : +workoutForm.workoutDistance\n if (payload.distance <= 0) {\n payloadErrorMessages.value.push('workouts.INVALID_DISTANCE')\n }\n payload.workout_date = `${workoutForm.workoutDate} ${workoutForm.workoutTime}`\n payload.ascent =\n workoutForm.workoutAscent === ''\n ? null\n : authUser.value.imperial_units\n ? convertDistance(+workoutForm.workoutAscent, 'ft', 'm', 3)\n : +workoutForm.workoutAscent\n payload.descent =\n workoutForm.workoutDescent === ''\n ? null\n : authUser.value.imperial_units\n ? convertDistance(+workoutForm.workoutDescent, 'ft', 'm', 3)\n : +workoutForm.workoutDescent\n if (\n (payload.ascent !== null && payload.descent === null) ||\n (payload.ascent === null && payload.descent !== null)\n ) {\n payloadErrorMessages.value.push('workouts.INVALID_ASCENT_OR_DESCENT')\n }\n }\n function updateWorkout() {\n const payload: IWorkoutForm = {\n sport_id: +workoutForm.sport_id,\n notes: workoutForm.notes,\n }\n if (props.workout.id) {\n if (props.workout.with_gpx) {\n payload.title = workoutForm.title\n } else {\n formatPayload(payload)\n }\n if (payloadErrorMessages.value.length > 0) {\n store.commit(\n ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES,\n payloadErrorMessages.value\n )\n } else {\n store.dispatch(WORKOUTS_STORE.ACTIONS.EDIT_WORKOUT, {\n workoutId: props.workout.id,\n data: payload,\n })\n }\n } else {\n if (withGpx.value) {\n if (!gpxFile) {\n const errorMessage = 'workouts.NO_FILE_PROVIDED'\n store.commit(ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES, errorMessage)\n return\n }\n payload.file = gpxFile\n store.dispatch(WORKOUTS_STORE.ACTIONS.ADD_WORKOUT, payload)\n } else {\n formatPayload(payload)\n if (payloadErrorMessages.value.length > 0) {\n store.commit(\n ROOT_STORE.MUTATIONS.SET_ERROR_MESSAGES,\n payloadErrorMessages.value\n )\n } else {\n store.dispatch(\n WORKOUTS_STORE.ACTIONS.ADD_WORKOUT_WITHOUT_GPX,\n payload\n )\n }\n }\n }\n }\n function onCancel() {\n if (props.workout.id) {\n router.push({\n name: 'Workout',\n params: { workoutId: props.workout.id },\n })\n } else {\n router.go(-1)\n }\n }\n function invalidateForm() {\n formErrors.value = true\n }\n\n onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))\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\nreturn (_ctx: any,_cache: 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 with-margin\", { 'center-form': _unref(workout) && _unref(workout).with_gpx }])\n }, [\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createTextVNode(_toDisplayString(_ctx.$t(`workouts.${_unref(isCreation) ? 'ADD' : 'EDIT'}_WORKOUT`)), 1)\n ]),\n content: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"form\", {\n class: _normalizeClass({ errors: formErrors.value }),\n onSubmit: _withModifiers(updateWorkout, [\"prevent\"])\n }, [\n _createElementVNode(\"div\", _hoisted_3, [\n (_unref(isCreation))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"input\", {\n id: \"withGpx\",\n type: \"radio\",\n checked: withGpx.value,\n disabled: _unref(loading),\n onClick: updateWithGpx\n }, null, 8, _hoisted_5),\n _createElementVNode(\"label\", _hoisted_6, _toDisplayString(_ctx.$t('workouts.WITH_GPX')), 1)\n ]),\n _createElementVNode(\"div\", null, [\n _createElementVNode(\"input\", {\n id: \"withoutGpx\",\n type: \"radio\",\n checked: !withGpx.value,\n disabled: _unref(loading),\n onClick: updateWithGpx\n }, null, 8, _hoisted_7),\n _createElementVNode(\"label\", _hoisted_8, _toDisplayString(_ctx.$t('workouts.WITHOUT_GPX')), 1)\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.SPORT', 1)) + \"*: \", 1),\n _withDirectives(_createElementVNode(\"select\", {\n id: \"sport\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event: any) => ((workoutForm.sport_id) = $event))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(translatedSports), (sport) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: sport.id,\n key: sport.id\n }, _toDisplayString(sport.translatedLabel), 9, _hoisted_11))\n }), 128))\n ], 40, _hoisted_10), [\n [_vModelSelect, workoutForm.sport_id]\n ])\n ]),\n (_unref(isCreation) && withGpx.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _createElementVNode(\"label\", _hoisted_13, _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: _unref(loading),\n required: \"\",\n onInvalid: invalidateForm,\n onInput: updateFile\n }, null, 40, _hoisted_14),\n _createElementVNode(\"div\", _hoisted_15, [\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(_unref(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(_unref(gpx_limit_import)), 1),\n _createElementVNode(\"li\", null, _toDisplayString(_ctx.$t('workouts.MAX_SIZE')) + \": \" + _toDisplayString(_unref(zipSizeLimit)), 1)\n ])\n ])\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_16, [\n _createElementVNode(\"label\", _hoisted_17, _toDisplayString(_ctx.$t('workouts.TITLE')) + \": \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"title\",\n name: \"title\",\n type: \"text\",\n required: !_unref(isCreation),\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((workoutForm.title) = $event))\n }, null, 40, _hoisted_18), [\n [_vModelText, workoutForm.title]\n ])\n ])),\n (!withGpx.value)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_19, [\n _createElementVNode(\"div\", _hoisted_20, [\n _createElementVNode(\"div\", _hoisted_21, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.WORKOUT_DATE')) + \"*:\", 1),\n _createElementVNode(\"div\", _hoisted_22, [\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-date\",\n name: \"workout-date\",\n type: \"date\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = ($event: any) => ((workoutForm.workoutDate) = $event))\n }, null, 40, _hoisted_23), [\n [_vModelText, workoutForm.workoutDate]\n ]),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-time\",\n name: \"workout-time\",\n class: \"workout-time\",\n type: \"time\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = ($event: any) => ((workoutForm.workoutTime) = $event))\n }, null, 40, _hoisted_24), [\n [_vModelText, workoutForm.workoutTime]\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_25, [\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: _normalizeClass([\"workout-duration\", { errored: isDurationInvalid() }]),\n type: \"text\",\n placeholder: \"HH\",\n minlength: \"1\",\n maxlength: \"2\",\n pattern: \"^([0-1]?[0-9]|2[0-3])$\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = ($event: any) => ((workoutForm.workoutDurationHour) = $event))\n }, null, 42, _hoisted_26), [\n [_vModelText, workoutForm.workoutDurationHour]\n ]),\n _createTextVNode(\" : \"),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-duration-minutes\",\n name: \"workout-duration-minutes\",\n class: _normalizeClass([\"workout-duration\", { errored: isDurationInvalid() }]),\n type: \"text\",\n pattern: \"^([0-5][0-9])$\",\n minlength: \"2\",\n maxlength: \"2\",\n placeholder: \"MM\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = ($event: any) => ((workoutForm.workoutDurationMinutes) = $event))\n }, null, 42, _hoisted_27), [\n [_vModelText, workoutForm.workoutDurationMinutes]\n ]),\n _createTextVNode(\" : \"),\n _withDirectives(_createElementVNode(\"input\", {\n id: \"workout-duration-seconds\",\n name: \"workout-duration-seconds\",\n class: _normalizeClass([\"workout-duration\", { errored: isDurationInvalid() }]),\n type: \"text\",\n pattern: \"^([0-5][0-9])$\",\n minlength: \"2\",\n maxlength: \"2\",\n placeholder: \"SS\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = ($event: any) => ((workoutForm.workoutDurationSeconds) = $event))\n }, null, 42, _hoisted_28), [\n [_vModelText, workoutForm.workoutDurationSeconds]\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_29, [\n _createElementVNode(\"div\", _hoisted_30, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DISTANCE')) + \" (\" + _toDisplayString(_unref(authUser).imperial_units ? 'mi' : 'km') + \")*: \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n class: _normalizeClass({ errored: isDistanceInvalid() }),\n name: \"workout-distance\",\n type: \"number\",\n min: \"0\",\n step: \"0.001\",\n required: \"\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = ($event: any) => ((workoutForm.workoutDistance) = $event))\n }, null, 42, _hoisted_31), [\n [_vModelText, workoutForm.workoutDistance]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_32, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.ASCENT')) + \" (\" + _toDisplayString(_unref(authUser).imperial_units ? 'ft' : 'm') + \"): \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n class: _normalizeClass({ errored: isElevationInvalid() }),\n name: \"workout-ascent\",\n type: \"number\",\n min: \"0\",\n step: \"0.01\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = ($event: any) => ((workoutForm.workoutAscent) = $event))\n }, null, 42, _hoisted_33), [\n [_vModelText, workoutForm.workoutAscent]\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_34, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DESCENT')) + \" (\" + _toDisplayString(_unref(authUser).imperial_units ? 'ft' : 'm') + \"): \", 1),\n _withDirectives(_createElementVNode(\"input\", {\n class: _normalizeClass({ errored: isElevationInvalid() }),\n name: \"workout-descent\",\n type: \"number\",\n min: \"0\",\n step: \"0.01\",\n onInvalid: invalidateForm,\n disabled: _unref(loading),\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = ($event: any) => ((workoutForm.workoutDescent) = $event))\n }, null, 42, _hoisted_35), [\n [_vModelText, workoutForm.workoutDescent]\n ])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_36, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.NOTES')) + \": \", 1),\n _createVNode(_component_CustomTextArea, {\n name: \"notes\",\n input: workoutForm.notes,\n disabled: _unref(loading),\n onUpdateValue: updateNotes\n }, null, 8, [\"input\", \"disabled\"])\n ])\n ]),\n (_unref(errorMessages))\n ? (_openBlock(), _createBlock(_component_ErrorMessage, {\n key: 0,\n message: _unref(errorMessages)\n }, null, 8, [\"message\"]))\n : _createCommentVNode(\"\", true),\n (_unref(loading))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_37, [\n _createVNode(_component_Loader)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_38, [\n _createElementVNode(\"button\", {\n class: \"confirm\",\n type: \"submit\",\n disabled: _unref(loading)\n }, _toDisplayString(_ctx.$t('buttons.SUBMIT')), 9, _hoisted_39),\n _createElementVNode(\"button\", {\n class: \"cancel\",\n onClick: _withModifiers(onCancel, [\"prevent\"])\n }, _toDisplayString(_ctx.$t('buttons.CANCEL')), 9, _hoisted_40)\n ]))\n ], 42, _hoisted_2)\n ])\n ]),\n _: 1\n })\n ], 2))\n}\n}\n\n})","import script from \"./WorkoutEdition.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutEdition.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutEdition.vue?vue&type=style&index=0&id=402915dc&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-402915dc\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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\nimport { ComputedRef, computed } 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 { IAuthUserProfile } from '@/types/user'\n import { IWorkoutData } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'AddWorkout',\n setup(__props) {\n\n const store = useStore()\n\n const sports: ComputedRef<ISport[]> = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const authUser: ComputedRef<IAuthUserProfile> = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const workoutData: ComputedRef<IWorkoutData> = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUT_DATA]\n )\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(WorkoutEdition, {\n authUser: _unref(authUser),\n sports: _unref(sports),\n isCreation: true,\n loading: _unref(workoutData).loading\n }, null, 8, [\"authUser\", \"sports\", \"loading\"])\n ])\n ]))\n}\n}\n\n})","import script from \"./AddWorkout.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AddWorkout.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = {\n id: \"edit-workout\",\n class: \"view\"\n}\nconst _hoisted_2 = { class: \"container\" }\n\nimport { computed, watch, onBeforeMount, ComputedRef } 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 { IAuthUserProfile } from '@/types/user'\n import { IWorkoutData } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'EditWorkout',\n setup(__props) {\n\n const route = useRoute()\n const store = useStore()\n\n const authUser: ComputedRef<IAuthUserProfile> = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const sports: ComputedRef<ISport[]> = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const workoutData: ComputedRef<IWorkoutData> = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUT_DATA]\n )\n\n onBeforeMount(() => {\n store.dispatch(WORKOUTS_STORE.ACTIONS.GET_WORKOUT_DATA, {\n workoutId: route.params.workoutId,\n })\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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(workoutData).workout.id)\n ? (_openBlock(), _createBlock(WorkoutEdition, {\n key: 0,\n authUser: _unref(authUser),\n sports: _unref(sports),\n workout: _unref(workoutData).workout,\n loading: _unref(workoutData).loading\n }, null, 8, [\"authUser\", \"sports\", \"workout\", \"loading\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./EditWorkout.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./EditWorkout.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, withModifiers as _withModifiers, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5568f498\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-card-title\" }\nconst _hoisted_2 = [\"disabled\", \"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 = [\"aria-label\"]\nconst _hoisted_9 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-edit\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_10 = [\n _hoisted_9\n]\nconst _hoisted_11 = [\"aria-label\"]\nconst _hoisted_12 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-download\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_13 = [\n _hoisted_12\n]\nconst _hoisted_14 = [\"aria-label\"]\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-trash\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_16 = [\n _hoisted_15\n]\nconst _hoisted_17 = {\n key: 1,\n class: \"workout-title\"\n}\nconst _hoisted_18 = { class: \"workout-segment\" }\nconst _hoisted_19 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-map-marker\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_20 = { class: \"workout-date\" }\nconst _hoisted_21 = { class: \"workout-link\" }\nconst _hoisted_22 = [\"disabled\", \"title\"]\nconst _hoisted_23 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-chevron-right\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_24 = [\n _hoisted_23\n]\n\nimport { toRefs } from 'vue'\n\n import authApi from '@/api/authApi'\n import { ISport } from '@/types/sports'\n import { IWorkoutObject } from '@/types/workouts'\n\n interface Props {\n sport: ISport\n workoutObject: IWorkoutObject\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutCardTitle',\n props: {\n sport: null,\n workoutObject: null\n },\n emits: ['displayModal'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n sport: ISport\n workoutObject: IWorkoutObject\n };\n\n \n\n \n\n const { sport, workoutObject } = toRefs(props)\n\n async function downloadGpx(workoutId: string) {\n await authApi\n .get(`workouts/${workoutId}/gpx/download`, {\n responseType: 'blob',\n })\n .then((response) => {\n const gpxFileUrl = window.URL.createObjectURL(\n new Blob([response.data], { type: 'application/gpx+xml' })\n )\n const gpxLink = document.createElement('a')\n gpxLink.href = gpxFileUrl\n gpxLink.setAttribute('download', `${workoutId}.gpx`)\n document.body.appendChild(gpxLink)\n gpxLink.click()\n })\n }\n function displayDeleteModal(event: Event & { target: HTMLInputElement }) {\n event.target.blur()\n emit('displayModal', true)\n }\n\nreturn (_ctx: any,_cache: 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(\"button\", {\n class: _normalizeClass([\"workout-previous workout-arrow transparent\", { inactive: !_unref(workoutObject).previousUrl }]),\n disabled: !_unref(workoutObject).previousUrl,\n title: \n _unref(workoutObject).previousUrl\n ? _ctx.$t(`workouts.PREVIOUS_${_unref(workoutObject).type}`)\n : _ctx.$t(`workouts.NO_PREVIOUS_${_unref(workoutObject).type}`)\n ,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (\n _unref(workoutObject).previousUrl\n ? _ctx.$router.push(_unref(workoutObject).previousUrl)\n : null\n ))\n }, _hoisted_4, 10, _hoisted_2),\n _createElementVNode(\"div\", _hoisted_5, [\n _createVNode(_component_SportImage, {\n \"sport-label\": _unref(sport).label,\n color: _unref(sport).color\n }, null, 8, [\"sport-label\", \"color\"]),\n _createElementVNode(\"div\", _hoisted_6, [\n (_unref(workoutObject).type === 'WORKOUT')\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _createElementVNode(\"span\", null, _toDisplayString(_unref(workoutObject).title), 1),\n _createElementVNode(\"button\", {\n class: \"transparent icon-button\",\n onClick: _cache[1] || (_cache[1] = ($event: any) => (\n _ctx.$router.push({\n name: 'EditWorkout',\n params: { workoutId: _unref(workoutObject).workoutId },\n })\n )),\n \"aria-label\": _ctx.$t(`workouts.EDIT_WORKOUT`)\n }, _hoisted_10, 8, _hoisted_8),\n (_unref(workoutObject).with_gpx)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"transparent icon-button\",\n onClick: _cache[2] || (_cache[2] = _withModifiers(($event: any) => (downloadGpx(_unref(workoutObject).workoutId)), [\"prevent\"])),\n \"aria-label\": _ctx.$t(`workouts.DOWNLOAD_WORKOUT`)\n }, _hoisted_13, 8, _hoisted_11))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n id: \"delete-workout-button\",\n class: \"transparent icon-button\",\n onClick: displayDeleteModal,\n \"aria-label\": _ctx.$t(`workouts.DELETE_WORKOUT`)\n }, _hoisted_16, 8, _hoisted_14)\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [\n _createTextVNode(_toDisplayString(_unref(workoutObject).title) + \" \", 1),\n _createElementVNode(\"span\", _hoisted_18, [\n _createTextVNode(\" — \"),\n _hoisted_19,\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.SEGMENT')) + \" \" + _toDisplayString(_unref(workoutObject).segmentId + 1), 1)\n ])\n ])),\n _createElementVNode(\"div\", _hoisted_20, [\n _createElementVNode(\"time\", null, _toDisplayString(_unref(workoutObject).workoutDate) + \" - \" + _toDisplayString(_unref(workoutObject).workoutTime), 1),\n _createElementVNode(\"span\", _hoisted_21, [\n (_unref(workoutObject).type === 'SEGMENT')\n ? (_openBlock(), _createBlock(_component_router_link, {\n key: 0,\n to: {\n name: 'Workout',\n params: { workoutId: _unref(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(\"button\", {\n class: _normalizeClass([\"workout-next workout-arrow transparent\", { inactive: !_unref(workoutObject).nextUrl }]),\n disabled: !_unref(workoutObject).nextUrl,\n title: \n _unref(workoutObject).nextUrl\n ? _ctx.$t(`workouts.NEXT_${_unref(workoutObject).type}`)\n : _ctx.$t(`workouts.NO_NEXT_${_unref(workoutObject).type}`)\n ,\n onClick: _cache[3] || (_cache[3] = ($event: any) => (\n _unref(workoutObject).nextUrl ? _ctx.$router.push(_unref(workoutObject).nextUrl) : null\n ))\n }, _hoisted_24, 10, _hoisted_22)\n ]))\n}\n}\n\n})","import script from \"./WorkoutCardTitle.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutCardTitle.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutCardTitle.vue?vue&type=style&index=0&id=5568f498&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5568f498\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-1a5282f6\"),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\nimport { toRefs } from 'vue'\n\n import { IWorkoutObject } from '@/types/workouts'\n\n interface Props {\n recordType: string\n workoutObject: IWorkoutObject\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutRecord',\n props: {\n recordType: null,\n workoutObject: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n recordType: string\n workoutObject: IWorkoutObject\n };\n\n \n\n const { recordType, workoutObject } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (\n _unref(workoutObject).records &&\n _unref(workoutObject).records.find((record) => record.record_type === _unref(recordType))\n )\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_1, _hoisted_3))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./WorkoutRecord.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutRecord.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutRecord.vue?vue&type=style&index=0&id=1a5282f6&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-1a5282f6\"]])\n\nexport default __exports__","const directions = [\n 'N',\n 'NNE',\n 'NE',\n 'ENE',\n 'E',\n 'ESE',\n 'SE',\n 'SSE',\n 'S',\n 'SSW',\n 'SW',\n 'WSW',\n 'W',\n 'WNW',\n 'NW',\n 'NNW',\n]\n\nexport const convertDegreeToDirection = (angle: number): string => {\n const value = Math.floor(angle / 22.5 + 0.5)\n return directions[value % 16]\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-40697ed1\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"wind\" }\nconst _hoisted_2 = { class: \"wind-bearing\" }\nconst _hoisted_3 = [\"title\"]\n\nimport { toRefs } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n import { IWeather } from '@/types/workouts'\n import { getWindSpeed } from '@/utils/units'\n import { convertDegreeToDirection } from '@/utils/weather'\n\n interface Props {\n weather: IWeather\n useImperialUnits: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WeatherWind',\n props: {\n weather: null,\n useImperialUnits: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n weather: IWeather\n useImperialUnits: boolean\n };\n\n \n\n const { useImperialUnits, weather } = toRefs(props)\n const { t } = useI18n()\n\n function getWindDirectionTitle(windBearing: number): string {\n return t(\n `workouts.WEATHER.WIND_DIRECTIONS.${convertDegreeToDirection(\n windBearing\n )}`\n )\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createTextVNode(_toDisplayString(_unref(getWindSpeed)(_unref(weather).wind, _unref(useImperialUnits))) + \" \", 1),\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(weather).windBearing)\n ? (_openBlock(), _createElementBlock(\"i\", {\n key: 0,\n class: \"fa fa-long-arrow-down\",\n style: _normalizeStyle({\n transform: `rotate(${_unref(weather).windBearing}deg)`,\n }),\n \"aria-hidden\": \"true\",\n title: getWindDirectionTitle(_unref(weather).windBearing)\n }, null, 12, _hoisted_3))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./WeatherWind.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WeatherWind.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WeatherWind.vue?vue&type=style&index=0&id=40697ed1&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-40697ed1\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-807b431a\"),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\nimport { toRefs } from 'vue'\n\n import WeatherWind from '@/components/Workout/WorkoutDetail/WeatherWind.vue'\n import { IWorkoutObject } from '@/types/workouts'\n import { getTemperature } from '@/utils/units'\n\n interface Props {\n workoutObject: IWorkoutObject\n useImperialUnits: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutWeather',\n props: {\n workoutObject: null,\n useImperialUnits: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n workoutObject: IWorkoutObject\n useImperialUnits: boolean\n };\n\n \n\n const { useImperialUnits, workoutObject } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(workoutObject).weatherStart && _unref(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/${_unref(workoutObject).weatherStart.icon}.svg`,\n alt: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_unref(workoutObject).weatherStart.icon}`\n )\n ,\n title: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_unref(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/${_unref(workoutObject).weatherEnd.icon}.svg`,\n alt: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_unref(workoutObject).weatherEnd.icon}`\n )\n ,\n title: \n _ctx.$t(\n `workouts.WEATHER.DARK_SKY.${_unref(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(_unref(getTemperature)(\n _unref(workoutObject).weatherStart.temperature,\n _unref(useImperialUnits)\n )), 1),\n _createElementVNode(\"td\", null, _toDisplayString(_unref(getTemperature)(\n _unref(workoutObject).weatherEnd.temperature,\n _unref(useImperialUnits)\n )), 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(_unref(workoutObject).weatherStart.humidity * 100).toFixed(1)) + \"% \", 1),\n _createElementVNode(\"td\", null, _toDisplayString(Number(_unref(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, [\n _createVNode(WeatherWind, {\n weather: _unref(workoutObject).weatherStart,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"weather\", \"useImperialUnits\"])\n ]),\n _createElementVNode(\"td\", null, [\n _createVNode(WeatherWind, {\n weather: _unref(workoutObject).weatherEnd,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"weather\", \"useImperialUnits\"])\n ])\n ])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./WorkoutWeather.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutWeather.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutWeather.vue?vue&type=style&index=0&id=807b431a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-807b431a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, unref as _unref, createVNode as _createVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-2c41cfc8\"),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 = { class: \"label\" }\nconst _hoisted_5 = { class: \"value\" }\nconst _hoisted_6 = { key: 0 }\nconst _hoisted_7 = { class: \"value\" }\nconst _hoisted_8 = { class: \"value\" }\nconst _hoisted_9 = {\n key: 0,\n class: \"workout-data\"\n}\nconst _hoisted_10 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-road\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_11 = { class: \"label\" }\nconst _hoisted_12 = {\n key: 1,\n class: \"workout-data\"\n}\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-tachometer\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_14 = { class: \"label\" }\nconst _hoisted_15 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_16 = { class: \"label\" }\nconst _hoisted_17 = {\n key: 2,\n class: \"workout-data\"\n}\nconst _hoisted_18 = [\"alt\"]\nconst _hoisted_19 = { class: \"label\" }\nconst _hoisted_20 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_21 = { class: \"label\" }\nconst _hoisted_22 = {\n key: 3,\n class: \"workout-data\"\n}\nconst _hoisted_23 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-location-arrow\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_24 = { class: \"label\" }\nconst _hoisted_25 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"br\", null, null, -1))\nconst _hoisted_26 = { class: \"label\" }\n\nimport { computed, toRefs } 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 interface Props {\n workoutObject: IWorkoutObject\n useImperialUnits: boolean\n displayHARecord: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutData',\n props: {\n workoutObject: null,\n useImperialUnits: { type: Boolean },\n displayHARecord: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n workoutObject: IWorkoutObject\n useImperialUnits: boolean\n displayHARecord: boolean\n };\n\n \n\n const { displayHARecord, workoutObject, useImperialUnits } = toRefs(props)\n const withPause = computed(\n () =>\n props.workoutObject.pauses !== '0:00:00' &&\n props.workoutObject.pauses !== null\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Distance = _resolveComponent(\"Distance\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _hoisted_3,\n _createElementVNode(\"span\", _hoisted_4, _toDisplayString(_ctx.$t('workouts.DURATION')), 1),\n _createTextVNode(\": \"),\n _createElementVNode(\"span\", _hoisted_5, _toDisplayString(_unref(workoutObject).moving), 1),\n _createVNode(WorkoutRecord, {\n workoutObject: _unref(workoutObject),\n recordType: \"LD\"\n }, null, 8, [\"workoutObject\"]),\n (_unref(withPause))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createTextVNode(\" (\" + _toDisplayString(_ctx.$t('workouts.PAUSES')) + \": \", 1),\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(_unref(workoutObject).pauses), 1),\n _createTextVNode(\" - \" + _toDisplayString(_ctx.$t('workouts.TOTAL_DURATION')) + \": \", 1),\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(_unref(workoutObject).duration) + \")\", 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n (_unref(workoutObject).distance !== null)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [\n _hoisted_10,\n _createElementVNode(\"span\", _hoisted_11, _toDisplayString(_ctx.$t('workouts.DISTANCE')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).distance,\n digits: 3,\n unitFrom: \"km\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createVNode(WorkoutRecord, {\n workoutObject: _unref(workoutObject),\n recordType: \"FD\"\n }, null, 8, [\"workoutObject\"])\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(workoutObject).aveSpeed !== null && _unref(workoutObject).maxSpeed !== null)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _hoisted_13,\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.$t('workouts.AVERAGE_SPEED')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).aveSpeed,\n unitFrom: \"km\",\n speed: true,\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createVNode(WorkoutRecord, {\n workoutObject: _unref(workoutObject),\n recordType: \"AS\"\n }, null, 8, [\"workoutObject\"]),\n _hoisted_15,\n _createElementVNode(\"span\", _hoisted_16, _toDisplayString(_ctx.$t('workouts.MAX_SPEED')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).maxSpeed,\n unitFrom: \"km\",\n speed: true,\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createVNode(WorkoutRecord, {\n workoutObject: _unref(workoutObject),\n recordType: \"MS\"\n }, null, 8, [\"workoutObject\"])\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(workoutObject).maxAlt !== null && _unref(workoutObject).minAlt !== null)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [\n _createElementVNode(\"img\", {\n class: \"mountains\",\n src: \"/img/workouts/mountains.svg\",\n alt: _ctx.$t('workouts.ELEVATION')\n }, null, 8, _hoisted_18),\n _createElementVNode(\"span\", _hoisted_19, _toDisplayString(_ctx.$t('workouts.MIN_ALTITUDE')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).minAlt,\n unitFrom: \"m\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _hoisted_20,\n _createElementVNode(\"span\", _hoisted_21, _toDisplayString(_ctx.$t('workouts.MAX_ALTITUDE')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).maxAlt,\n unitFrom: \"m\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(workoutObject).ascent !== null && _unref(workoutObject).descent !== null)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_22, [\n _hoisted_23,\n _createElementVNode(\"span\", _hoisted_24, _toDisplayString(_ctx.$t('workouts.ASCENT')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).ascent,\n unitFrom: \"m\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n (_unref(displayHARecord))\n ? (_openBlock(), _createBlock(WorkoutRecord, {\n key: 0,\n workoutObject: _unref(workoutObject),\n recordType: \"HA\"\n }, null, 8, [\"workoutObject\"]))\n : _createCommentVNode(\"\", true),\n _hoisted_25,\n _createElementVNode(\"span\", _hoisted_26, _toDisplayString(_ctx.$t('workouts.DESCENT')), 1),\n _createTextVNode(\": \"),\n _createVNode(_component_Distance, {\n distance: _unref(workoutObject).descent,\n unitFrom: \"m\",\n strong: true,\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"])\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(WorkoutWeather, {\n workoutObject: _unref(workoutObject),\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"workoutObject\", \"useImperialUnits\"])\n ]))\n}\n}\n\n})","import script from \"./WorkoutData.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutData.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutData.vue?vue&type=style&index=0&id=2c41cfc8&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-2c41cfc8\"]])\n\nexport default __exports__","function $(element, tagName) {\n return Array.from(element.getElementsByTagName(tagName));\n}\nfunction normalizeId(id) {\n return id[0] === \"#\" ? id : `#${id}`;\n}\nfunction $ns(element, tagName, ns) {\n return Array.from(element.getElementsByTagNameNS(ns, tagName));\n}\n/**\n * get the content of a text node, if any\n */\nfunction nodeVal(node) {\n node?.normalize();\n return (node && node.textContent) || \"\";\n}\n/**\n * Get one Y child of X, if any, otherwise null\n */\nfunction get1(node, tagName, callback) {\n const n = node.getElementsByTagName(tagName);\n const result = n.length ? n[0] : null;\n if (result && callback)\n callback(result);\n return result;\n}\nfunction get(node, tagName, callback) {\n const properties = {};\n if (!node)\n return properties;\n const n = node.getElementsByTagName(tagName);\n const result = n.length ? n[0] : null;\n if (result && callback) {\n return callback(result, properties);\n }\n return properties;\n}\nfunction val1(node, tagName, callback) {\n const val = nodeVal(get1(node, tagName));\n if (val && callback)\n return callback(val) || {};\n return {};\n}\nfunction $num(node, tagName, callback) {\n const val = parseFloat(nodeVal(get1(node, tagName)));\n if (isNaN(val))\n return undefined;\n if (val && callback)\n return callback(val) || {};\n return {};\n}\nfunction num1(node, tagName, callback) {\n const val = parseFloat(nodeVal(get1(node, tagName)));\n if (isNaN(val))\n return undefined;\n if (callback)\n callback(val);\n return val;\n}\nfunction getMulti(node, propertyNames) {\n const properties = {};\n for (const property of propertyNames) {\n val1(node, property, (val) => {\n properties[property] = val;\n });\n }\n return properties;\n}\nfunction isElement(node) {\n return node?.nodeType === 1;\n}\n\nfunction getLineStyle(node) {\n return get(node, \"line\", (lineStyle) => {\n const val = Object.assign({}, val1(lineStyle, \"color\", (color) => {\n return { stroke: `#${color}` };\n }), $num(lineStyle, \"opacity\", (opacity) => {\n return { \"stroke-opacity\": opacity };\n }), $num(lineStyle, \"width\", (width) => {\n // GPX width is in mm, convert to px with 96 px per inch\n return { \"stroke-width\": (width * 96) / 25.4 };\n }));\n return val;\n });\n}\n\nfunction getExtensions(node) {\n let values = [];\n if (node === null)\n return values;\n for (const child of Array.from(node.childNodes)) {\n if (!isElement(child))\n continue;\n const name = abbreviateName(child.nodeName);\n if (name === \"gpxtpx:TrackPointExtension\") {\n // loop again for nested garmin extensions (eg. \"gpxtpx:hr\")\n values = values.concat(getExtensions(child));\n }\n else {\n // push custom extension (eg. \"power\")\n const val = nodeVal(child);\n values.push([name, parseNumeric(val)]);\n }\n }\n return values;\n}\nfunction abbreviateName(name) {\n return [\"heart\", \"gpxtpx:hr\", \"hr\"].includes(name) ? \"heart\" : name;\n}\nfunction parseNumeric(val) {\n const num = parseFloat(val);\n return isNaN(num) ? val : num;\n}\n\nfunction coordPair$1(node) {\n const ll = [\n parseFloat(node.getAttribute(\"lon\") || \"\"),\n parseFloat(node.getAttribute(\"lat\") || \"\"),\n ];\n if (isNaN(ll[0]) || isNaN(ll[1])) {\n return null;\n }\n num1(node, \"ele\", (val) => {\n ll.push(val);\n });\n const time = get1(node, \"time\");\n return {\n coordinates: ll,\n time: time ? nodeVal(time) : null,\n extendedValues: getExtensions(get1(node, \"extensions\")),\n };\n}\n\nfunction extractProperties(node) {\n const properties = getMulti(node, [\n \"name\",\n \"cmt\",\n \"desc\",\n \"type\",\n \"time\",\n \"keywords\",\n ]);\n const extensions = Array.from(node.getElementsByTagNameNS(\"http://www.garmin.com/xmlschemas/GpxExtensions/v3\", \"*\"));\n for (const child of extensions) {\n if (child.parentNode?.parentNode === node) {\n properties[child.tagName.replace(\":\", \"_\")] = nodeVal(child);\n }\n }\n const links = $(node, \"link\");\n if (links.length) {\n properties.links = links.map((link) => Object.assign({ href: link.getAttribute(\"href\") }, getMulti(link, [\"text\", \"type\"])));\n }\n return properties;\n}\n\n/**\n * Extract points from a trkseg or rte element.\n */\nfunction getPoints$1(node, pointname) {\n const pts = $(node, pointname);\n const line = [];\n const times = [];\n const extendedValues = {};\n for (let i = 0; i < pts.length; i++) {\n const c = coordPair$1(pts[i]);\n if (!c) {\n continue;\n }\n line.push(c.coordinates);\n if (c.time)\n times.push(c.time);\n for (const [name, val] of c.extendedValues) {\n const plural = name === \"heart\" ? name : name.replace(\"gpxtpx:\", \"\") + \"s\";\n if (!extendedValues[plural]) {\n extendedValues[plural] = Array(pts.length).fill(null);\n }\n extendedValues[plural][i] = val;\n }\n }\n if (line.length < 2)\n return; // Invalid line in GeoJSON\n return {\n line: line,\n times: times,\n extendedValues: extendedValues,\n };\n}\n/**\n * Extract a LineString geometry from a rte\n * element.\n */\nfunction getRoute(node) {\n const line = getPoints$1(node, \"rtept\");\n if (!line)\n return;\n return {\n type: \"Feature\",\n properties: Object.assign({ _gpxType: \"rte\" }, extractProperties(node), getLineStyle(get1(node, \"extensions\"))),\n geometry: {\n type: \"LineString\",\n coordinates: line.line,\n },\n };\n}\nfunction getTrack(node) {\n const segments = $(node, \"trkseg\");\n const track = [];\n const times = [];\n const extractedLines = [];\n for (const segment of segments) {\n const line = getPoints$1(segment, \"trkpt\");\n if (line) {\n extractedLines.push(line);\n if (line.times && line.times.length)\n times.push(line.times);\n }\n }\n if (extractedLines.length === 0)\n return null;\n const multi = extractedLines.length > 1;\n const properties = Object.assign({ _gpxType: \"trk\" }, extractProperties(node), getLineStyle(get1(node, \"extensions\")), times.length\n ? {\n coordinateProperties: {\n times: multi ? times : times[0],\n },\n }\n : {});\n for (const line of extractedLines) {\n track.push(line.line);\n if (!properties.coordinateProperties) {\n properties.coordinateProperties = {};\n }\n const props = properties.coordinateProperties;\n const entries = Object.entries(line.extendedValues);\n for (let i = 0; i < entries.length; i++) {\n const [name, val] = entries[i];\n if (multi) {\n if (!props[name]) {\n props[name] = extractedLines.map((line) => new Array(line.line.length).fill(null));\n }\n props[name][i] = val;\n }\n else {\n props[name] = val;\n }\n }\n }\n return {\n type: \"Feature\",\n properties: properties,\n geometry: multi\n ? {\n type: \"MultiLineString\",\n coordinates: track,\n }\n : {\n type: \"LineString\",\n coordinates: track[0],\n },\n };\n}\n/**\n * Extract a point, if possible, from a given node,\n * which is usually a wpt or trkpt\n */\nfunction getPoint(node) {\n const properties = Object.assign(extractProperties(node), getMulti(node, [\"sym\"]));\n const pair = coordPair$1(node);\n if (!pair)\n return null;\n return {\n type: \"Feature\",\n properties,\n geometry: {\n type: \"Point\",\n coordinates: pair.coordinates,\n },\n };\n}\n/**\n * Convert GPX to GeoJSON incrementally, returning\n * a [Generator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators)\n * that yields output feature by feature.\n */\nfunction* gpxGen(node) {\n for (const track of $(node, \"trk\")) {\n const feature = getTrack(track);\n if (feature)\n yield feature;\n }\n for (const route of $(node, \"rte\")) {\n const feature = getRoute(route);\n if (feature)\n yield feature;\n }\n for (const waypoint of $(node, \"wpt\")) {\n const point = getPoint(waypoint);\n if (point)\n yield point;\n }\n}\n/**\n *\n * Convert a GPX document to GeoJSON. The first argument, `doc`, must be a GPX\n * document as an XML DOM - not as a string. You can get this using jQuery's default\n * `.ajax` function or using a bare XMLHttpRequest with the `.response` property\n * holding an XML DOM.\n *\n * The output is a JavaScript object of GeoJSON data, same as `.kml` outputs, with the\n * addition of a `_gpxType` property on each `LineString` feature that indicates whether\n * the feature was encoded as a route (`rte`) or track (`trk`) in the GPX document.\n */\nfunction gpx(node) {\n return {\n type: \"FeatureCollection\",\n features: Array.from(gpxGen(node)),\n };\n}\n\nconst EXTENSIONS_NS = \"http://www.garmin.com/xmlschemas/ActivityExtension/v2\";\nconst TRACKPOINT_ATTRIBUTES = [\n [\"heartRate\", \"heartRates\"],\n [\"Cadence\", \"cadences\"],\n // Extended Trackpoint attributes\n [\"Speed\", \"speeds\"],\n [\"Watts\", \"watts\"],\n];\nconst LAP_ATTRIBUTES = [\n [\"TotalTimeSeconds\", \"totalTimeSeconds\"],\n [\"DistanceMeters\", \"distanceMeters\"],\n [\"MaximumSpeed\", \"maxSpeed\"],\n [\"AverageHeartRateBpm\", \"avgHeartRate\"],\n [\"MaximumHeartRateBpm\", \"maxHeartRate\"],\n // Extended Lap attributes\n [\"AvgSpeed\", \"avgSpeed\"],\n [\"AvgWatts\", \"avgWatts\"],\n [\"MaxWatts\", \"maxWatts\"],\n];\nfunction getProperties(node, attributeNames) {\n const properties = [];\n for (const [tag, alias] of attributeNames) {\n let elem = get1(node, tag);\n if (!elem) {\n const elements = node.getElementsByTagNameNS(EXTENSIONS_NS, tag);\n if (elements.length) {\n elem = elements[0];\n }\n }\n const val = parseFloat(nodeVal(elem));\n if (!isNaN(val)) {\n properties.push([alias, val]);\n }\n }\n return properties;\n}\nfunction coordPair(node) {\n const ll = [num1(node, \"LongitudeDegrees\"), num1(node, \"LatitudeDegrees\")];\n if (ll[0] === undefined ||\n isNaN(ll[0]) ||\n ll[1] === undefined ||\n isNaN(ll[1])) {\n return null;\n }\n const heartRate = get1(node, \"HeartRateBpm\");\n const time = nodeVal(get1(node, \"Time\"));\n get1(node, \"AltitudeMeters\", (alt) => {\n const a = parseFloat(nodeVal(alt));\n if (!isNaN(a)) {\n ll.push(a);\n }\n });\n return {\n coordinates: ll,\n time: time || null,\n heartRate: heartRate ? parseFloat(nodeVal(heartRate)) : null,\n extensions: getProperties(node, TRACKPOINT_ATTRIBUTES),\n };\n}\nfunction getPoints(node) {\n const pts = $(node, \"Trackpoint\");\n const line = [];\n const times = [];\n const heartRates = [];\n if (pts.length < 2)\n return null; // Invalid line in GeoJSON\n const extendedProperties = {};\n const result = { extendedProperties };\n for (let i = 0; i < pts.length; i++) {\n const c = coordPair(pts[i]);\n if (c === null)\n continue;\n line.push(c.coordinates);\n const { time, heartRate, extensions } = c;\n if (time)\n times.push(time);\n if (heartRate)\n heartRates.push(heartRate);\n for (const [alias, value] of extensions) {\n if (!extendedProperties[alias]) {\n extendedProperties[alias] = Array(pts.length).fill(null);\n }\n extendedProperties[alias][i] = value;\n }\n }\n if (line.length < 2)\n return null;\n return Object.assign(result, {\n line: line,\n times: times,\n heartRates: heartRates,\n });\n}\nfunction getLap(node) {\n const segments = $(node, \"Track\");\n const track = [];\n const times = [];\n const heartRates = [];\n const allExtendedProperties = [];\n let line;\n const properties = Object.assign(Object.fromEntries(getProperties(node, LAP_ATTRIBUTES)), get(node, \"Name\", (nameElement) => {\n return { name: nodeVal(nameElement) };\n }));\n for (const segment of segments) {\n line = getPoints(segment);\n if (line) {\n track.push(line.line);\n if (line.times.length)\n times.push(line.times);\n if (line.heartRates.length)\n heartRates.push(line.heartRates);\n allExtendedProperties.push(line.extendedProperties);\n }\n }\n for (let i = 0; i < allExtendedProperties.length; i++) {\n const extendedProperties = allExtendedProperties[i];\n for (const property in extendedProperties) {\n if (segments.length === 1) {\n if (line) {\n properties[property] = line.extendedProperties[property];\n }\n }\n else {\n if (!properties[property]) {\n properties[property] = track.map((track) => Array(track.length).fill(null));\n }\n properties[property][i] = extendedProperties[property];\n }\n }\n }\n if (track.length === 0)\n return null;\n if (times.length || heartRates.length) {\n properties.coordinateProperties = Object.assign(times.length\n ? {\n times: track.length === 1 ? times[0] : times,\n }\n : {}, heartRates.length\n ? {\n heart: track.length === 1 ? heartRates[0] : heartRates,\n }\n : {});\n }\n return {\n type: \"Feature\",\n properties: properties,\n geometry: track.length === 1\n ? {\n type: \"LineString\",\n coordinates: track[0],\n }\n : {\n type: \"MultiLineString\",\n coordinates: track,\n },\n };\n}\n/**\n * Incrementally convert a TCX document to GeoJSON. The\n * first argument, `doc`, must be a TCX\n * document as an XML DOM - not as a string.\n */\nfunction* tcxGen(node) {\n for (const lap of $(node, \"Lap\")) {\n const feature = getLap(lap);\n if (feature)\n yield feature;\n }\n for (const course of $(node, \"Courses\")) {\n const feature = getLap(course);\n if (feature)\n yield feature;\n }\n}\n/**\n * Convert a TCX document to GeoJSON. The first argument, `doc`, must be a TCX\n * document as an XML DOM - not as a string.\n */\nfunction tcx(node) {\n return {\n type: \"FeatureCollection\",\n features: Array.from(tcxGen(node)),\n };\n}\n\nfunction fixColor(v, prefix) {\n const properties = {};\n const colorProp = prefix == \"stroke\" || prefix === \"fill\" ? prefix : prefix + \"-color\";\n if (v[0] === \"#\") {\n v = v.substring(1);\n }\n if (v.length === 6 || v.length === 3) {\n properties[colorProp] = \"#\" + v;\n }\n else if (v.length === 8) {\n properties[prefix + \"-opacity\"] = parseInt(v.substring(0, 2), 16) / 255;\n properties[colorProp] =\n \"#\" + v.substring(6, 8) + v.substring(4, 6) + v.substring(2, 4);\n }\n return properties;\n}\n\nfunction numericProperty(node, source, target) {\n const properties = {};\n num1(node, source, (val) => {\n properties[target] = val;\n });\n return properties;\n}\nfunction getColor(node, output) {\n return get(node, \"color\", (elem) => fixColor(nodeVal(elem), output));\n}\nfunction extractIconHref(node) {\n return get(node, \"Icon\", (icon, properties) => {\n val1(icon, \"href\", (href) => {\n properties.icon = href;\n });\n return properties;\n });\n}\nfunction extractIcon(node) {\n return get(node, \"IconStyle\", (iconStyle) => {\n return Object.assign(getColor(iconStyle, \"icon\"), numericProperty(iconStyle, \"scale\", \"icon-scale\"), numericProperty(iconStyle, \"heading\", \"icon-heading\"), get(iconStyle, \"hotSpot\", (hotspot) => {\n const left = parseFloat(hotspot.getAttribute(\"x\") || \"\");\n const top = parseFloat(hotspot.getAttribute(\"y\") || \"\");\n const xunits = hotspot.getAttribute(\"xunits\") || \"\";\n const yunits = hotspot.getAttribute(\"yunits\") || \"\";\n if (!isNaN(left) && !isNaN(top))\n return {\n \"icon-offset\": [left, top],\n \"icon-offset-units\": [xunits, yunits],\n };\n return {};\n }), extractIconHref(iconStyle));\n });\n}\nfunction extractLabel(node) {\n return get(node, \"LabelStyle\", (labelStyle) => {\n return Object.assign(getColor(labelStyle, \"label\"), numericProperty(labelStyle, \"scale\", \"label-scale\"));\n });\n}\nfunction extractLine(node) {\n return get(node, \"LineStyle\", (lineStyle) => {\n return Object.assign(getColor(lineStyle, \"stroke\"), numericProperty(lineStyle, \"width\", \"stroke-width\"));\n });\n}\nfunction extractPoly(node) {\n return get(node, \"PolyStyle\", (polyStyle, properties) => {\n return Object.assign(properties, get(polyStyle, \"color\", (elem) => fixColor(nodeVal(elem), \"fill\")), val1(polyStyle, \"fill\", (fill) => {\n if (fill === \"0\")\n return { \"fill-opacity\": 0 };\n }), val1(polyStyle, \"outline\", (outline) => {\n if (outline === \"0\")\n return { \"stroke-opacity\": 0 };\n }));\n });\n}\nfunction extractStyle(node) {\n return Object.assign({}, extractPoly(node), extractLine(node), extractLabel(node), extractIcon(node));\n}\n\nconst toNumber = (x) => Number(x);\nconst typeConverters = {\n string: (x) => x,\n int: toNumber,\n uint: toNumber,\n short: toNumber,\n ushort: toNumber,\n float: toNumber,\n double: toNumber,\n bool: (x) => Boolean(x),\n};\nfunction extractExtendedData(node, schema) {\n return get(node, \"ExtendedData\", (extendedData, properties) => {\n for (const data of $(extendedData, \"Data\")) {\n properties[data.getAttribute(\"name\") || \"\"] = nodeVal(get1(data, \"value\"));\n }\n for (const simpleData of $(extendedData, \"SimpleData\")) {\n const name = simpleData.getAttribute(\"name\") || \"\";\n const typeConverter = schema[name] || typeConverters.string;\n properties[name] = typeConverter(nodeVal(simpleData));\n }\n return properties;\n });\n}\nfunction getMaybeHTMLDescription(node) {\n const descriptionNode = get1(node, \"description\");\n for (const c of Array.from(descriptionNode?.childNodes || [])) {\n if (c.nodeType === 4) {\n return {\n description: {\n \"@type\": \"html\",\n value: nodeVal(c),\n },\n };\n }\n }\n return {};\n}\nfunction extractTimeSpan(node) {\n return get(node, \"TimeSpan\", (timeSpan) => {\n return {\n timespan: {\n begin: nodeVal(get1(timeSpan, \"begin\")),\n end: nodeVal(get1(timeSpan, \"end\")),\n },\n };\n });\n}\nfunction extractTimeStamp(node) {\n return get(node, \"TimeStamp\", (timeStamp) => {\n return { timestamp: nodeVal(get1(timeStamp, \"when\")) };\n });\n}\nfunction extractCascadedStyle(node, styleMap) {\n return val1(node, \"styleUrl\", (styleUrl) => {\n styleUrl = normalizeId(styleUrl);\n if (styleMap[styleUrl]) {\n return Object.assign({ styleUrl }, styleMap[styleUrl]);\n }\n // For backward-compatibility. Should we still include\n // styleUrl even if it's not resolved?\n return { styleUrl };\n });\n}\n\nconst removeSpace = /\\s*/g;\nconst trimSpace = /^\\s*|\\s*$/g;\nconst splitSpace = /\\s+/;\n/**\n * Get one coordinate from a coordinate array, if any\n */\nfunction coord1(value) {\n return value\n .replace(removeSpace, \"\")\n .split(\",\")\n .map(parseFloat)\n .filter((num) => !isNaN(num))\n .slice(0, 3);\n}\n/**\n * Get all coordinates from a coordinate array as [[],[]]\n */\nfunction coord(value) {\n return value\n .replace(trimSpace, \"\")\n .split(splitSpace)\n .map(coord1)\n .filter((coord) => {\n return coord.length >= 2;\n });\n}\nfunction gxCoords(node) {\n let elems = $(node, \"coord\");\n if (elems.length === 0) {\n elems = $ns(node, \"coord\", \"*\");\n }\n const coordinates = elems.map((elem) => {\n return nodeVal(elem).split(\" \").map(parseFloat);\n });\n if (coordinates.length === 0) {\n return null;\n }\n return {\n geometry: coordinates.length > 2\n ? {\n type: \"LineString\",\n coordinates,\n }\n : {\n type: \"Point\",\n coordinates: coordinates[0],\n },\n times: $(node, \"when\").map((elem) => nodeVal(elem)),\n };\n}\nfunction fixRing(ring) {\n if (ring.length === 0)\n return ring;\n const first = ring[0];\n const last = ring[ring.length - 1];\n let equal = true;\n for (let i = 0; i < Math.max(first.length, last.length); i++) {\n if (first[i] !== last[i]) {\n equal = false;\n break;\n }\n }\n if (!equal) {\n return ring.concat([ring[0]]);\n }\n return ring;\n}\nfunction getCoordinates(node) {\n return nodeVal(get1(node, \"coordinates\"));\n}\nfunction getGeometry(node) {\n let geometries = [];\n let coordTimes = [];\n for (let i = 0; i < node.childNodes.length; i++) {\n const child = node.childNodes.item(i);\n if (isElement(child)) {\n switch (child.tagName) {\n case \"MultiGeometry\":\n case \"MultiTrack\":\n case \"gx:MultiTrack\": {\n const childGeometries = getGeometry(child);\n geometries = geometries.concat(childGeometries.geometries);\n coordTimes = coordTimes.concat(childGeometries.coordTimes);\n break;\n }\n case \"Point\": {\n const coordinates = coord1(getCoordinates(child));\n if (coordinates.length >= 2) {\n geometries.push({\n type: \"Point\",\n coordinates,\n });\n }\n break;\n }\n case \"LinearRing\":\n case \"LineString\": {\n const coordinates = coord(getCoordinates(child));\n if (coordinates.length >= 2) {\n geometries.push({\n type: \"LineString\",\n coordinates,\n });\n }\n break;\n }\n case \"Polygon\": {\n const coords = [];\n for (const linearRing of $(child, \"LinearRing\")) {\n const ring = fixRing(coord(getCoordinates(linearRing)));\n if (ring.length >= 4) {\n coords.push(ring);\n }\n }\n if (coords.length) {\n geometries.push({\n type: \"Polygon\",\n coordinates: coords,\n });\n }\n break;\n }\n case \"Track\":\n case \"gx:Track\": {\n const gx = gxCoords(child);\n if (!gx)\n break;\n const { times, geometry } = gx;\n geometries.push(geometry);\n if (times.length)\n coordTimes.push(times);\n break;\n }\n }\n }\n }\n return {\n geometries,\n coordTimes,\n };\n}\n\nfunction geometryListToGeometry(geometries) {\n return geometries.length === 0\n ? null\n : geometries.length === 1\n ? geometries[0]\n : {\n type: \"GeometryCollection\",\n geometries,\n };\n}\nfunction getPlacemark(node, styleMap, schema) {\n const { coordTimes, geometries } = getGeometry(node);\n const feature = {\n type: \"Feature\",\n geometry: geometryListToGeometry(geometries),\n properties: Object.assign(getMulti(node, [\n \"name\",\n \"address\",\n \"visibility\",\n \"open\",\n \"phoneNumber\",\n \"description\",\n ]), getMaybeHTMLDescription(node), extractCascadedStyle(node, styleMap), extractStyle(node), extractExtendedData(node, schema), extractTimeSpan(node), extractTimeStamp(node), coordTimes.length\n ? {\n coordinateProperties: {\n times: coordTimes.length === 1 ? coordTimes[0] : coordTimes,\n },\n }\n : {}),\n };\n if (feature.properties?.visibility !== undefined) {\n feature.properties.visibility = feature.properties.visibility !== \"0\";\n }\n const id = node.getAttribute(\"id\");\n if (id !== null && id !== \"\")\n feature.id = id;\n return feature;\n}\n\nfunction getGroundOverlayBox(node) {\n const latLonQuad = get1(node, \"gx:LatLonQuad\");\n if (latLonQuad) {\n const ring = fixRing(coord(getCoordinates(node)));\n return {\n geometry: {\n type: \"Polygon\",\n coordinates: [ring],\n },\n };\n }\n return getLatLonBox(node);\n}\nconst DEGREES_TO_RADIANS = Math.PI / 180;\nfunction rotateBox(bbox, coordinates, rotation) {\n const center = [(bbox[0] + bbox[2]) / 2, (bbox[1] + bbox[3]) / 2];\n return [\n coordinates[0].map((coordinate) => {\n const dy = coordinate[1] - center[1];\n const dx = coordinate[0] - center[0];\n const distance = Math.sqrt(Math.pow(dy, 2) + Math.pow(dx, 2));\n const angle = Math.atan2(dy, dx) - rotation * DEGREES_TO_RADIANS;\n return [\n center[0] + Math.cos(angle) * distance,\n center[1] + Math.sin(angle) * distance,\n ];\n }),\n ];\n}\nfunction getLatLonBox(node) {\n const latLonBox = get1(node, \"LatLonBox\");\n if (latLonBox) {\n const north = num1(latLonBox, \"north\");\n const west = num1(latLonBox, \"west\");\n const east = num1(latLonBox, \"east\");\n const south = num1(latLonBox, \"south\");\n const rotation = num1(latLonBox, \"rotation\");\n if (typeof north === \"number\" &&\n typeof south === \"number\" &&\n typeof west === \"number\" &&\n typeof east === \"number\") {\n const bbox = [west, south, east, north];\n let coordinates = [\n [\n [west, north],\n [east, north],\n [east, south],\n [west, south],\n [west, north], // top left (again)\n ],\n ];\n if (typeof rotation === \"number\") {\n coordinates = rotateBox(bbox, coordinates, rotation);\n }\n return {\n bbox,\n geometry: {\n type: \"Polygon\",\n coordinates,\n },\n };\n }\n }\n return null;\n}\nfunction getGroundOverlay(node, styleMap, schema) {\n const box = getGroundOverlayBox(node);\n const feature = {\n type: \"Feature\",\n geometry: box?.geometry || null,\n properties: Object.assign(\n /**\n * Related to\n * https://gist.github.com/tmcw/037a1cb6660d74a392e9da7446540f46\n */\n { \"@geometry-type\": \"groundoverlay\" }, getMulti(node, [\n \"name\",\n \"address\",\n \"visibility\",\n \"open\",\n \"phoneNumber\",\n \"description\",\n ]), getMaybeHTMLDescription(node), extractCascadedStyle(node, styleMap), extractStyle(node), extractIconHref(node), extractExtendedData(node, schema), extractTimeSpan(node), extractTimeStamp(node)),\n };\n if (box?.bbox) {\n feature.bbox = box.bbox;\n }\n if (feature.properties?.visibility !== undefined) {\n feature.properties.visibility = feature.properties.visibility !== \"0\";\n }\n const id = node.getAttribute(\"id\");\n if (id !== null && id !== \"\")\n feature.id = id;\n return feature;\n}\n\nfunction getStyleId(style) {\n let id = style.getAttribute(\"id\");\n const parentNode = style.parentNode;\n if (!id &&\n isElement(parentNode) &&\n parentNode.localName === \"CascadingStyle\") {\n id = parentNode.getAttribute(\"kml:id\") || parentNode.getAttribute(\"id\");\n }\n return normalizeId(id || \"\");\n}\nfunction buildStyleMap(node) {\n const styleMap = {};\n for (const style of $(node, \"Style\")) {\n styleMap[getStyleId(style)] = extractStyle(style);\n }\n for (const map of $(node, \"StyleMap\")) {\n const id = normalizeId(map.getAttribute(\"id\") || \"\");\n val1(map, \"styleUrl\", (styleUrl) => {\n styleUrl = normalizeId(styleUrl);\n if (styleMap[styleUrl]) {\n styleMap[id] = styleMap[styleUrl];\n }\n });\n }\n return styleMap;\n}\nfunction buildSchema(node) {\n const schema = {};\n for (const field of $(node, \"SimpleField\")) {\n schema[field.getAttribute(\"name\") || \"\"] =\n typeConverters[field.getAttribute(\"type\") || \"\"] ||\n typeConverters[\"string\"];\n }\n return schema;\n}\nconst FOLDER_PROPS = [\n \"name\",\n \"visibility\",\n \"open\",\n \"address\",\n \"description\",\n \"phoneNumber\",\n \"visibility\",\n];\nfunction getFolder(node) {\n const meta = {};\n for (const child of Array.from(node.childNodes)) {\n if (isElement(child) && FOLDER_PROPS.includes(child.tagName)) {\n meta[child.tagName] = nodeVal(child);\n }\n }\n return {\n type: \"folder\",\n meta,\n children: [],\n };\n}\n/**\n * Yield a nested tree with KML folder structure\n *\n * This generates a tree with the given structure:\n *\n * ```js\n * {\n * \"type\": \"root\",\n * \"children\": [\n * {\n * \"type\": \"folder\",\n * \"meta\": {\n * \"name\": \"Test\"\n * },\n * \"children\": [\n * // ...features and folders\n * ]\n * }\n * // ...features\n * ]\n * }\n * ```\n *\n * ### GroundOverlay\n *\n * GroundOverlay elements are converted into\n * `Feature` objects with `Polygon` geometries,\n * a property like:\n *\n * ```json\n * {\n * \"@geometry-type\": \"groundoverlay\"\n * }\n * ```\n *\n * And the ground overlay's image URL in the `href`\n * property. Ground overlays will need to be displayed\n * with a separate method to other features, depending\n * on which map framework you're using.\n */\nfunction kmlWithFolders(node) {\n const styleMap = buildStyleMap(node);\n const schema = buildSchema(node);\n const tree = { type: \"root\", children: [] };\n function traverse(node, pointer) {\n if (isElement(node)) {\n switch (node.tagName) {\n case \"GroundOverlay\": {\n const placemark = getGroundOverlay(node, styleMap, schema);\n if (placemark) {\n pointer.children.push(placemark);\n }\n break;\n }\n case \"Placemark\": {\n const placemark = getPlacemark(node, styleMap, schema);\n if (placemark) {\n pointer.children.push(placemark);\n }\n break;\n }\n case \"Folder\": {\n const folder = getFolder(node);\n pointer.children.push(folder);\n pointer = folder;\n break;\n }\n }\n }\n if (node.childNodes) {\n for (let i = 0; i < node.childNodes.length; i++) {\n traverse(node.childNodes[i], pointer);\n }\n }\n }\n traverse(node, tree);\n return tree;\n}\n/**\n * Convert KML to GeoJSON incrementally, returning\n * a [Generator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators)\n * that yields output feature by feature.\n */\nfunction* kmlGen(node) {\n const styleMap = buildStyleMap(node);\n const schema = buildSchema(node);\n for (const placemark of $(node, \"Placemark\")) {\n const feature = getPlacemark(placemark, styleMap, schema);\n if (feature)\n yield feature;\n }\n for (const groundOverlay of $(node, \"GroundOverlay\")) {\n const feature = getGroundOverlay(groundOverlay, styleMap, schema);\n if (feature)\n yield feature;\n }\n}\n/**\n * Convert a KML document to GeoJSON. The first argument, `doc`, must be a KML\n * document as an XML DOM - not as a string. You can get this using jQuery's default\n * `.ajax` function or using a bare XMLHttpRequest with the `.response` property\n * holding an XML DOM.\n *\n * The output is a JavaScript object of GeoJSON data. You can convert it to a string\n * with [JSON.stringify](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)\n * or use it directly in libraries.\n */\nfunction kml(node) {\n return {\n type: \"FeatureCollection\",\n features: Array.from(kmlGen(node)),\n };\n}\n\nexport { gpx, gpxGen, kml, kmlGen, kmlWithFolders, tcx, tcxGen };\n//# sourceMappingURL=togeojson.es.mjs.map\n","import { watch as de, ref as c, provide as G, inject as h, h as z, onUnmounted as se, onBeforeUnmount as J, defineComponent as g, onMounted as O, markRaw as C, nextTick as f, render as Je, reactive as Ke, computed as x } from \"vue\";\nconst Qe = (t, o) => {\n for (const e of Object.keys(o))\n t.on(e, o[e]);\n}, me = (t) => {\n for (const o of Object.keys(t)) {\n const e = t[o];\n e && U(e.cancel) && e.cancel();\n }\n}, Xe = (t) => !t || typeof t.charAt != \"function\" ? t : t.charAt(0).toUpperCase() + t.slice(1), U = (t) => typeof t == \"function\", S = (t, o, e) => {\n for (const n in e) {\n const a = \"set\" + Xe(n);\n t[a] ? de(\n () => e[n],\n (s, l) => {\n t[a](s, l);\n }\n ) : o[a] && de(\n () => e[n],\n (s) => {\n o[a](s);\n }\n );\n }\n}, L = (t, o, e = {}) => {\n const n = { ...e };\n for (const a in t) {\n const s = o[a], l = t[a];\n s && (s && s.custom === !0 || l !== void 0 && (n[a] = l));\n }\n return n;\n}, T = (t) => {\n const o = {};\n for (const e in t)\n if (e.startsWith(\"on\") && !e.startsWith(\"onUpdate\") && e !== \"onReady\") {\n const n = e.slice(2).toLocaleLowerCase();\n o[n] = t[e];\n }\n return o;\n}, Ye = async (t) => {\n const o = 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 delete t.Default.prototype._getIconUrl, t.Default.mergeOptions({\n iconRetinaUrl: o[0].default,\n iconUrl: o[1].default,\n shadowUrl: o[2].default\n });\n}, R = (t) => {\n const o = c(\n (...n) => console.warn(`Method ${t} has been invoked without being replaced`)\n ), e = (...n) => o.value(...n);\n return e.wrapped = o, G(t, e), e;\n}, ee = (t, o) => t.wrapped.value = o, b = typeof self == \"object\" && self.self === self && self || typeof global == \"object\" && global.global === global && global || globalThis, m = (t) => {\n const o = h(t);\n if (!o)\n throw new Error(`Attempt to inject ${t} before it was provided.`);\n return o;\n}, j = Symbol(), I = Symbol(), oe = Symbol(), K = Symbol(), ve = Symbol(), be = Symbol(), fe = Symbol(), Le = Symbol(), he = Symbol(), ge = Symbol(), Oe = Symbol(), Se = Symbol(), Q = {\n options: {\n type: Object,\n default: () => ({}),\n custom: !0\n }\n}, X = (t) => ({ options: t.options, methods: {} }), Z = {\n ...Q,\n pane: {\n type: String\n },\n attribution: {\n type: String\n },\n name: {\n type: String,\n custom: !0\n },\n layerType: {\n type: String,\n custom: !0\n },\n visible: {\n type: Boolean,\n custom: !0,\n default: !0\n }\n}, Y = (t, o, e) => {\n const n = m(I), a = m(oe), { options: s, methods: l } = X(t), r = L(\n t,\n Z,\n s\n ), i = () => n({ leafletObject: o.value }), u = () => a({ leafletObject: o.value }), d = {\n ...l,\n setAttribution(y) {\n u(), o.value.options.attribution = y, t.visible && i();\n },\n setName() {\n u(), t.visible && i();\n },\n setLayerType() {\n u(), t.visible && i();\n },\n setVisible(y) {\n o.value && (y ? i() : u());\n },\n bindPopup(y) {\n if (!o.value || !U(o.value.bindPopup)) {\n console.warn(\n \"Attempt to bind popup before bindPopup method available on layer.\"\n );\n return;\n }\n o.value.bindPopup(y);\n },\n bindTooltip(y) {\n if (!o.value || !U(o.value.bindTooltip)) {\n console.warn(\n \"Attempt to bind tooltip before bindTooltip method available on layer.\"\n );\n return;\n }\n o.value.bindTooltip(y);\n },\n unbindTooltip() {\n o.value && (U(o.value.closeTooltip) && o.value.closeTooltip(), U(o.value.unbindTooltip) && o.value.unbindTooltip());\n },\n unbindPopup() {\n o.value && (U(o.value.closePopup) && o.value.closePopup(), U(o.value.unbindPopup) && o.value.unbindPopup());\n },\n updateVisibleProp(y) {\n e.emit(\"update:visible\", y);\n }\n };\n return G(he, d.bindPopup), G(ge, d.bindTooltip), G(Oe, d.unbindPopup), G(Se, d.unbindTooltip), se(() => {\n d.unbindPopup(), d.unbindTooltip(), u();\n }), { options: r, methods: d };\n}, M = (t, o) => {\n if (t && o.default)\n return z(\"div\", { style: { display: \"none\" } }, o.default());\n}, je = {\n ...Z,\n interactive: {\n type: Boolean,\n default: void 0\n },\n bubblingMouseEvents: {\n type: Boolean,\n default: void 0\n }\n}, Ve = (t, o, e) => {\n const { options: n, methods: a } = Y(\n t,\n o,\n e\n );\n return { options: L(\n t,\n je,\n n\n ), methods: a };\n}, ae = {\n ...je,\n stroke: {\n type: Boolean,\n default: void 0\n },\n color: {\n type: String\n },\n weight: {\n type: Number\n },\n opacity: {\n type: Number\n },\n lineCap: {\n type: String\n },\n lineJoin: {\n type: String\n },\n dashArray: {\n type: String\n },\n dashOffset: {\n type: String\n },\n fill: {\n type: Boolean,\n default: void 0\n },\n fillColor: {\n type: String\n },\n fillOpacity: {\n type: Number\n },\n fillRule: {\n type: String\n },\n className: {\n type: String\n }\n}, Ce = (t, o, e) => {\n const { options: n, methods: a } = Ve(t, o, e), s = L(\n t,\n ae,\n n\n ), l = m(oe), r = {\n ...a,\n setStroke(i) {\n o.value.setStyle({ stroke: i });\n },\n setColor(i) {\n o.value.setStyle({ color: i });\n },\n setWeight(i) {\n o.value.setStyle({ weight: i });\n },\n setOpacity(i) {\n o.value.setStyle({ opacity: i });\n },\n setLineCap(i) {\n o.value.setStyle({ lineCap: i });\n },\n setLineJoin(i) {\n o.value.setStyle({ lineJoin: i });\n },\n setDashArray(i) {\n o.value.setStyle({ dashArray: i });\n },\n setDashOffset(i) {\n o.value.setStyle({ dashOffset: i });\n },\n setFill(i) {\n o.value.setStyle({ fill: i });\n },\n setFillColor(i) {\n o.value.setStyle({ fillColor: i });\n },\n setFillOpacity(i) {\n o.value.setStyle({ fillOpacity: i });\n },\n setFillRule(i) {\n o.value.setStyle({ fillRule: i });\n },\n setClassName(i) {\n o.value.setStyle({ className: i });\n }\n };\n return J(() => {\n l({ leafletObject: o.value });\n }), { options: s, methods: r };\n}, re = {\n ...ae,\n /**\n * Radius of the marker in pixels.\n */\n radius: {\n type: Number\n },\n latLng: {\n type: [Object, Array],\n required: !0,\n custom: !0\n }\n}, Pe = (t, o, e) => {\n const { options: n, methods: a } = Ce(\n t,\n o,\n e\n ), s = L(\n t,\n re,\n n\n ), l = {\n ...a,\n setRadius(r) {\n o.value.setRadius(r);\n },\n setLatLng(r) {\n o.value.setLatLng(r);\n }\n };\n return { options: s, methods: l };\n}, Be = {\n ...re,\n /**\n * Radius of the circle in meters.\n */\n radius: {\n type: Number\n }\n}, xe = (t, o, e) => {\n const { options: n, methods: a } = Pe(t, o, e), s = L(\n t,\n Be,\n n\n ), l = {\n ...a\n };\n return { options: s, methods: l };\n}, Ot = g({\n name: \"LCircle\",\n props: Be,\n setup(t, o) {\n const e = c(), n = c(!1), a = h(j), s = m(I), { options: l, methods: r } = xe(t, e, o);\n return O(async () => {\n const { circle: i } = a ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = C(i(t.latLng, l));\n const u = T(o.attrs);\n e.value.on(u), S(r, e.value, t), s({\n ...t,\n ...r,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return M(this.ready, this.$slots);\n }\n}), St = g({\n name: \"LCircleMarker\",\n props: re,\n setup(t, o) {\n const e = c(), n = c(!1), a = h(j), s = m(I), { options: l, methods: r } = Pe(\n t,\n e,\n o\n );\n return O(async () => {\n const { circleMarker: i } = a ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = C(\n i(t.latLng, l)\n );\n const u = T(o.attrs);\n e.value.on(u), S(r, e.value, t), s({\n ...t,\n ...r,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return M(this.ready, this.$slots);\n }\n}), H = {\n ...Q,\n position: {\n type: String\n }\n}, V = (t, o) => {\n const { options: e, methods: n } = X(t), a = L(\n t,\n H,\n e\n ), s = {\n ...n,\n setPosition(l) {\n o.value && o.value.setPosition(l);\n }\n };\n return se(() => {\n o.value && o.value.remove();\n }), { options: a, methods: s };\n}, Re = (t) => t.default ? z(\"div\", { ref: \"root\" }, t.default()) : null, jt = g({\n name: \"LControl\",\n props: {\n ...H,\n disableClickPropagation: {\n type: Boolean,\n custom: !0,\n default: !0\n },\n disableScrollPropagation: {\n type: Boolean,\n custom: !0,\n default: !1\n }\n },\n setup(t, o) {\n const e = c(), n = c(), a = h(j), s = m(K), { options: l, methods: r } = V(t, e);\n return O(async () => {\n const { Control: i, DomEvent: u } = a ? b.L : await import(\"leaflet/dist/leaflet-src.esm\"), d = i.extend({\n onAdd() {\n return n.value;\n }\n });\n e.value = C(new d(l)), S(r, e.value, t), s({ leafletObject: e.value }), t.disableClickPropagation && n.value && u.disableClickPropagation(n.value), t.disableScrollPropagation && n.value && u.disableScrollPropagation(n.value), f(() => o.emit(\"ready\", e.value));\n }), { root: n, leafletObject: e };\n },\n render() {\n return Re(this.$slots);\n }\n}), Te = {\n ...H,\n prefix: {\n type: String\n }\n}, et = (t, o) => {\n const { options: e, methods: n } = V(\n t,\n o\n ), a = L(\n t,\n Te,\n e\n ), s = {\n ...n,\n setPrefix(l) {\n o.value.setPrefix(l);\n }\n };\n return { options: a, methods: s };\n}, Ct = g({\n name: \"LControlAttribution\",\n props: Te,\n setup(t, o) {\n const e = c(), n = h(j), a = m(K), { options: s, methods: l } = et(t, e);\n return O(async () => {\n const { control: r } = n ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = C(\n r.attribution(s)\n ), S(l, e.value, t), a({ leafletObject: e.value }), f(() => o.emit(\"ready\", e.value));\n }), { leafletObject: e };\n },\n render() {\n return null;\n }\n}), we = {\n ...H,\n collapsed: {\n type: Boolean,\n default: void 0\n },\n autoZIndex: {\n type: Boolean,\n default: void 0\n },\n hideSingleBase: {\n type: Boolean,\n default: void 0\n },\n sortLayers: {\n type: Boolean,\n default: void 0\n },\n sortFunction: {\n type: Function\n }\n}, tt = (t, o) => {\n const { options: e } = V(t, o);\n return { options: L(\n t,\n we,\n e\n ), methods: {\n addLayer(s) {\n s.layerType === \"base\" ? o.value.addBaseLayer(s.leafletObject, s.name) : s.layerType === \"overlay\" && o.value.addOverlay(s.leafletObject, s.name);\n },\n removeLayer(s) {\n o.value.removeLayer(s.leafletObject);\n }\n } };\n}, Pt = g({\n name: \"LControlLayers\",\n props: we,\n setup(t, o) {\n const e = c(), n = h(j), a = m(ve), { options: s, methods: l } = tt(t, e);\n return O(async () => {\n const { control: r } = n ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = C(\n r.layers(void 0, void 0, s)\n ), S(l, e.value, t), a({\n ...t,\n ...l,\n leafletObject: e.value\n }), f(() => o.emit(\"ready\", e.value));\n }), { leafletObject: e };\n },\n render() {\n return null;\n }\n}), Ie = {\n ...H,\n maxWidth: {\n type: Number\n },\n metric: {\n type: Boolean,\n default: void 0\n },\n imperial: {\n type: Boolean,\n default: void 0\n },\n updateWhenIdle: {\n type: Boolean,\n default: void 0\n }\n}, ot = (t, o) => {\n const { options: e, methods: n } = V(\n t,\n o\n );\n return { options: L(\n t,\n Ie,\n e\n ), methods: n };\n}, Bt = g({\n name: \"LControlScale\",\n props: Ie,\n setup(t, o) {\n const e = c(), n = h(j), a = m(K), { options: s, methods: l } = ot(t, e);\n return O(async () => {\n const { control: r } = n ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = C(r.scale(s)), S(l, e.value, t), a({ leafletObject: e.value }), f(() => o.emit(\"ready\", e.value));\n }), { leafletObject: e };\n },\n render() {\n return null;\n }\n}), Ae = {\n ...H,\n zoomInText: {\n type: String\n },\n zoomInTitle: {\n type: String\n },\n zoomOutText: {\n type: String\n },\n zoomOutTitle: {\n type: String\n }\n}, nt = (t, o) => {\n const { options: e, methods: n } = V(\n t,\n o\n );\n return { options: L(\n t,\n Ae,\n e\n ), methods: n };\n}, Tt = g({\n name: \"LControlZoom\",\n props: Ae,\n setup(t, o) {\n const e = c(), n = h(j), a = m(K), { options: s, methods: l } = nt(t, e);\n return O(async () => {\n const { control: r } = n ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = C(r.zoom(s)), S(l, e.value, t), a({ leafletObject: e.value }), f(() => o.emit(\"ready\", e.value));\n }), { leafletObject: e };\n },\n render() {\n return null;\n }\n}), ne = {\n ...Z\n}, le = (t, o, e) => {\n const { options: n, methods: a } = Y(\n t,\n o,\n e\n ), s = L(\n t,\n ne,\n n\n ), l = {\n ...a,\n addLayer(r) {\n o.value.addLayer(r.leafletObject);\n },\n removeLayer(r) {\n o.value.removeLayer(r.leafletObject);\n }\n };\n return G(I, l.addLayer), G(oe, l.removeLayer), { options: s, methods: l };\n}, _e = {\n ...ne\n}, st = (t, o, e) => {\n const { options: n, methods: a } = le(\n t,\n o,\n e\n ), s = L(\n t,\n _e,\n n\n ), l = {\n ...a\n };\n return { options: s, methods: l };\n}, wt = g({\n props: _e,\n setup(t, o) {\n const e = c(), n = c(!1), a = h(j), s = m(I), { methods: l, options: r } = st(\n t,\n e,\n o\n );\n return O(async () => {\n const { featureGroup: i } = a ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = C(\n i(void 0, r)\n );\n const u = T(o.attrs);\n e.value.on(u), S(l, e.value, t), s({\n ...t,\n ...l,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return M(this.ready, this.$slots);\n }\n}), Ge = {\n ...ne,\n geojson: {\n type: [Object, Array],\n custom: !0\n },\n optionsStyle: {\n type: Function,\n custom: !0\n }\n}, at = (t, o, e) => {\n const { options: n, methods: a } = le(\n t,\n o,\n e\n ), s = L(\n t,\n Ge,\n n\n );\n Object.prototype.hasOwnProperty.call(t, \"optionsStyle\") && (s.style = t.optionsStyle);\n const l = {\n ...a,\n setGeojson(r) {\n o.value.clearLayers(), o.value.addData(r);\n },\n setOptionsStyle(r) {\n o.value.setStyle(r);\n },\n getGeoJSONData() {\n return o.value.toGeoJSON();\n },\n getBounds() {\n return o.value.getBounds();\n }\n };\n return { options: s, methods: l };\n}, It = g({\n props: Ge,\n setup(t, o) {\n const e = c(), n = c(!1), a = h(j), s = m(I), { methods: l, options: r } = at(t, e, o);\n return O(async () => {\n const { geoJSON: i } = a ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = C(i(t.geojson, r));\n const u = T(o.attrs);\n e.value.on(u), S(l, e.value, t), s({\n ...t,\n ...l,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return M(this.ready, this.$slots);\n }\n}), ie = {\n ...Z,\n opacity: {\n type: Number\n },\n zIndex: {\n type: Number\n },\n tileSize: {\n type: [Number, Array, Object]\n },\n noWrap: {\n type: Boolean,\n default: void 0\n },\n minZoom: {\n type: Number\n },\n maxZoom: {\n type: Number\n }\n}, Me = (t, o, e) => {\n const { options: n, methods: a } = Y(\n t,\n o,\n e\n ), s = L(\n t,\n ie,\n n\n ), l = {\n ...a,\n setTileComponent() {\n var r;\n (r = o.value) == null || r.redraw();\n }\n };\n return se(() => {\n o.value.off();\n }), { options: s, methods: l };\n}, rt = (t, o, e, n) => t.extend({\n initialize(a) {\n this.tileComponents = {}, this.on(\"tileunload\", this._unloadTile), e.setOptions(this, a);\n },\n createTile(a) {\n const s = this._tileCoordsToKey(a);\n this.tileComponents[s] = o.create(\"div\");\n const l = z({ setup: n, props: [\"coords\"] }, { coords: a });\n return Je(l, this.tileComponents[s]), this.tileComponents[s];\n },\n _unloadTile(a) {\n const s = this._tileCoordsToKey(a.coords);\n this.tileComponents[s] && (this.tileComponents[s].innerHTML = \"\", this.tileComponents[s] = void 0);\n }\n}), At = g({\n props: {\n ...ie,\n childRender: {\n type: Function,\n required: !0\n }\n },\n setup(t, o) {\n const e = c(), n = c(null), a = c(!1), s = h(j), l = m(I), { options: r, methods: i } = Me(t, e, o);\n return O(async () => {\n const { GridLayer: u, DomUtil: d, Util: y } = s ? b.L : await import(\"leaflet/dist/leaflet-src.esm\"), A = rt(\n u,\n d,\n y,\n t.childRender\n );\n e.value = C(new A(r));\n const v = T(o.attrs);\n e.value.on(v), S(i, e.value, t), l({\n ...t,\n ...i,\n leafletObject: e.value\n }), a.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { root: n, ready: a, leafletObject: e };\n },\n render() {\n return this.ready ? z(\"div\", { style: { display: \"none\" }, ref: \"root\" }) : null;\n }\n}), pe = {\n iconUrl: {\n type: String\n },\n iconRetinaUrl: {\n type: String\n },\n iconSize: {\n type: [Object, Array]\n },\n iconAnchor: {\n type: [Object, Array]\n },\n popupAnchor: {\n type: [Object, Array]\n },\n tooltipAnchor: {\n type: [Object, Array]\n },\n shadowUrl: {\n type: String\n },\n shadowRetinaUrl: {\n type: String\n },\n shadowSize: {\n type: [Object, Array]\n },\n shadowAnchor: {\n type: [Object, Array]\n },\n bgPos: {\n type: [Object, Array]\n },\n className: {\n type: String\n }\n}, _t = g({\n name: \"LIcon\",\n props: {\n ...pe,\n ...Q\n },\n setup(t, o) {\n const e = c(), n = h(j), a = m(be), s = m(fe), l = m(Le);\n let r, i, u, d, y;\n const A = (w, _, k) => {\n const N = w && w.innerHTML;\n if (!_) {\n k && y && a() && s(N);\n return;\n }\n const D = T(o.attrs);\n y && i(y, D);\n const { options: E } = X(t), F = L(\n t,\n pe,\n E\n );\n N && (F.html = N), y = F.html ? u(F) : d(F), r(y, D), l(y);\n }, v = () => {\n f(() => A(e.value, !0, !1));\n }, $ = () => {\n f(() => A(e.value, !1, !0));\n }, B = {\n setIconUrl: v,\n setIconRetinaUrl: v,\n setIconSize: v,\n setIconAnchor: v,\n setPopupAnchor: v,\n setTooltipAnchor: v,\n setShadowUrl: v,\n setShadowRetinaUrl: v,\n setShadowAnchor: v,\n setBgPos: v,\n setClassName: v,\n setHtml: v\n };\n return O(async () => {\n const {\n DomEvent: w,\n divIcon: _,\n icon: k\n } = n ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n r = w.on, i = w.off, u = _, d = k, S(B, {}, t), new MutationObserver($).observe(e.value, {\n attributes: !0,\n childList: !0,\n characterData: !0,\n subtree: !0\n }), v();\n }), { root: e };\n },\n render() {\n const t = this.$slots.default ? this.$slots.default() : void 0;\n return z(\"div\", { ref: \"root\" }, t);\n }\n}), Ne = {\n ...Z,\n opacity: {\n type: Number\n },\n alt: {\n type: String\n },\n interactive: {\n type: Boolean,\n default: void 0\n },\n crossOrigin: {\n type: Boolean,\n default: void 0\n },\n errorOverlayUrl: {\n type: String\n },\n zIndex: {\n type: Number\n },\n className: {\n type: String\n },\n url: {\n type: String,\n required: !0,\n custom: !0\n },\n bounds: {\n type: [Array, Object],\n required: !0,\n custom: !0\n }\n}, lt = (t, o, e) => {\n const { options: n, methods: a } = Y(\n t,\n o,\n e\n ), s = L(\n t,\n Ne,\n n\n ), l = {\n ...a,\n /**\n * Sets the opacity of the overlay.\n * @param {number} opacity\n */\n setOpacity(r) {\n return o.value.setOpacity(r);\n },\n /**\n * Changes the URL of the image.\n * @param {string} url\n */\n setUrl(r) {\n return o.value.setUrl(r);\n },\n /**\n * Update the bounds that this ImageOverlay covers\n * @param {LatLngBounds | Array<Array<number>>} bounds\n */\n setBounds(r) {\n return o.value.setBounds(r);\n },\n /**\n * Get the bounds that this ImageOverlay covers\n * @returns {LatLngBounds}\n */\n getBounds() {\n return o.value.getBounds();\n },\n /**\n * Returns the instance of HTMLImageElement used by this overlay.\n * @returns {HTMLElement}\n */\n getElement() {\n return o.value.getElement();\n },\n /**\n * Brings the layer to the top of all overlays.\n */\n bringToFront() {\n return o.value.bringToFront();\n },\n /**\n * Brings the layer to the bottom of all overlays.\n */\n bringToBack() {\n return o.value.bringToBack();\n },\n /**\n * Changes the zIndex of the image overlay.\n * @param {number} zIndex\n */\n setZIndex(r) {\n return o.value.setZIndex(r);\n }\n };\n return { options: s, methods: l };\n}, Gt = g({\n name: \"LImageOverlay\",\n props: Ne,\n setup(t, o) {\n const e = c(), n = c(!1), a = h(j), s = m(I), { options: l, methods: r } = lt(\n t,\n e,\n o\n );\n return O(async () => {\n const { imageOverlay: i } = a ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = C(\n i(t.url, t.bounds, l)\n );\n const u = T(o.attrs);\n e.value.on(u), S(r, e.value, t), s({\n ...t,\n ...r,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return M(this.ready, this.$slots);\n }\n}), Mt = g({\n props: ne,\n setup(t, o) {\n const e = c(), n = c(!1), a = h(j), s = m(I), { methods: l } = le(t, e, o);\n return O(async () => {\n const { layerGroup: r } = a ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = C(\n r(void 0, t.options)\n );\n const i = T(o.attrs);\n e.value.on(i), S(l, e.value, t), s({\n ...t,\n ...l,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return M(this.ready, this.$slots);\n }\n});\nfunction $e(t, o, e) {\n var n, a, s;\n o === void 0 && (o = 50), e === void 0 && (e = {});\n var l = (n = e.isImmediate) != null && n, r = (a = e.callback) != null && a, i = e.maxWait, u = Date.now(), d = [];\n function y() {\n if (i !== void 0) {\n var v = Date.now() - u;\n if (v + o >= i)\n return i - v;\n }\n return o;\n }\n var A = function() {\n var v = [].slice.call(arguments), $ = this;\n return new Promise(function(B, w) {\n var _ = l && s === void 0;\n if (s !== void 0 && clearTimeout(s), s = setTimeout(function() {\n if (s = void 0, u = Date.now(), !l) {\n var N = t.apply($, v);\n r && r(N), d.forEach(function(D) {\n return (0, D.resolve)(N);\n }), d = [];\n }\n }, y()), _) {\n var k = t.apply($, v);\n return r && r(k), B(k);\n }\n d.push({ resolve: B, reject: w });\n });\n };\n return A.cancel = function(v) {\n s !== void 0 && clearTimeout(s), d.forEach(function($) {\n return (0, $.reject)(v);\n }), d = [];\n }, A;\n}\nconst ye = {\n ...Q,\n /**\n * The center of the map, supports .sync modifier\n */\n center: {\n type: [Object, Array]\n },\n /**\n * The bounds of the map, supports .sync modifier\n */\n bounds: {\n type: [Array, Object]\n },\n /**\n * The max bounds of the map\n */\n maxBounds: {\n type: [Array, Object]\n },\n /**\n * The zoom of the map, supports .sync modifier\n */\n zoom: {\n type: Number\n },\n /**\n * The minZoom of the map\n */\n minZoom: {\n type: Number\n },\n /**\n * The maxZoom of the map\n */\n maxZoom: {\n type: Number\n },\n /**\n * The paddingBottomRight of the map\n */\n paddingBottomRight: {\n type: [Object, Array]\n },\n /**\n * The paddingTopLeft of the map\n */\n paddingTopLeft: {\n type: Object\n },\n /**\n * The padding of the map\n */\n padding: {\n type: Object\n },\n /**\n * The worldCopyJump option for the map\n */\n worldCopyJump: {\n type: Boolean,\n default: void 0\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 },\n maxBoundsViscosity: {\n type: Number\n },\n inertia: {\n type: Boolean,\n default: void 0\n },\n inertiaDeceleration: {\n type: Number\n },\n inertiaMaxSpeed: {\n type: Number\n },\n easeLinearity: {\n type: Number\n },\n zoomAnimation: {\n type: Boolean,\n default: void 0\n },\n zoomAnimationThreshold: {\n type: Number\n },\n fadeAnimation: {\n type: Boolean,\n default: void 0\n },\n markerZoomAnimation: {\n type: Boolean,\n default: void 0\n },\n noBlockingAnimations: {\n type: Boolean,\n default: void 0\n },\n useGlobalLeaflet: {\n type: Boolean,\n default: !0,\n custom: !0\n }\n}, Nt = g({\n emits: [\"ready\", \"update:zoom\", \"update:center\", \"update:bounds\"],\n props: ye,\n setup(t, o) {\n const e = c(), n = Ke({\n ready: !1,\n layersToAdd: [],\n layersInControl: []\n }), { options: a } = X(t), s = L(\n t,\n ye,\n a\n ), l = R(I), r = R(oe), i = R(K), u = R(\n ve\n );\n G(j, t.useGlobalLeaflet);\n const d = x(() => {\n const B = {};\n return t.noBlockingAnimations && (B.animate = !1), B;\n }), y = x(() => {\n const B = d.value;\n return t.padding && (B.padding = t.padding), t.paddingTopLeft && (B.paddingTopLeft = t.paddingTopLeft), t.paddingBottomRight && (B.paddingBottomRight = t.paddingBottomRight), B;\n }), A = {\n moveend: $e((B) => {\n n.leafletRef && (o.emit(\"update:zoom\", n.leafletRef.getZoom()), o.emit(\"update:center\", n.leafletRef.getCenter()), o.emit(\"update:bounds\", n.leafletRef.getBounds()));\n }),\n overlayadd(B) {\n const w = n.layersInControl.find((_) => _.name === B.name);\n w && w.updateVisibleProp(!0);\n },\n overlayremove(B) {\n const w = n.layersInControl.find((_) => _.name === B.name);\n w && w.updateVisibleProp(!1);\n }\n };\n O(async () => {\n t.useGlobalLeaflet && (b.L = b.L || await import(\"leaflet\"));\n const {\n map: B,\n CRS: w,\n Icon: _,\n latLngBounds: k,\n latLng: N,\n DomEvent: D,\n stamp: E\n } = t.useGlobalLeaflet ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n try {\n s.beforeMapMount && await s.beforeMapMount();\n } catch (p) {\n console.error(\n `The following error occurred running the provided beforeMapMount hook ${p.message}`\n );\n }\n await Ye(_);\n const F = typeof s.crs == \"string\" ? w[s.crs] : s.crs;\n s.crs = F || w.EPSG3857;\n const W = {\n addLayer(p) {\n p.layerType !== void 0 && (n.layerControl === void 0 ? n.layersToAdd.push(p) : n.layersInControl.find(\n (q) => E(q.leafletObject) === E(p.leafletObject)\n ) || (n.layerControl.addLayer(p), n.layersInControl.push(p))), p.visible !== !1 && n.leafletRef.addLayer(p.leafletObject);\n },\n removeLayer(p) {\n p.layerType !== void 0 && (n.layerControl === void 0 ? n.layersToAdd = n.layersToAdd.filter(\n (P) => P.name !== p.name\n ) : (n.layerControl.removeLayer(p.leafletObject), n.layersInControl = n.layersInControl.filter(\n (P) => E(P.leafletObject) !== E(p.leafletObject)\n ))), n.leafletRef.removeLayer(p.leafletObject);\n },\n registerLayerControl(p) {\n n.layerControl = p, n.layersToAdd.forEach((P) => {\n n.layerControl.addLayer(P);\n }), n.layersToAdd = [], i(p);\n },\n registerControl(p) {\n n.leafletRef.addControl(p.leafletObject);\n },\n setZoom(p) {\n const P = n.leafletRef.getZoom();\n p !== P && n.leafletRef.setZoom(p, d.value);\n },\n setCrs(p) {\n const P = n.leafletRef.getBounds();\n n.leafletRef.options.crs = p, n.leafletRef.fitBounds(P, {\n animate: !1,\n padding: [0, 0]\n });\n },\n fitBounds(p) {\n n.leafletRef.fitBounds(p, y.value);\n },\n setBounds(p) {\n if (!p)\n return;\n const P = k(p);\n if (!P.isValid())\n return;\n !(n.lastSetBounds || n.leafletRef.getBounds()).equals(P, 0) && (n.lastSetBounds = P, n.leafletRef.fitBounds(P));\n },\n setCenter(p) {\n if (p == null)\n return;\n const P = N(p), q = n.lastSetCenter || n.leafletRef.getCenter();\n (q.lat !== P.lat || q.lng !== P.lng) && (n.lastSetCenter = P, n.leafletRef.panTo(P, d.value));\n }\n };\n ee(l, W.addLayer), ee(r, W.removeLayer), ee(i, W.registerControl), ee(u, W.registerLayerControl), n.leafletRef = C(B(e.value, s)), S(W, n.leafletRef, t);\n const qe = T(o.attrs);\n Qe(n.leafletRef, A), D.on(n.leafletRef.getContainer(), qe), n.ready = !0, f(() => o.emit(\"ready\", n.leafletRef));\n }), J(() => {\n me(A), n.leafletRef && (n.leafletRef.off(), n.leafletRef.remove());\n });\n const v = x(() => n.leafletRef), $ = x(() => n.ready);\n return { root: e, ready: $, leafletObject: v };\n },\n render() {\n return z(\n \"div\",\n { style: { width: \"100%\", height: \"100%\" }, ref: \"root\" },\n this.ready && this.$slots.default ? this.$slots.default() : {}\n );\n }\n}), it = [\"Symbol(Comment)\", \"Symbol(Text)\"], ut = [\"LTooltip\", \"LPopup\"], ke = {\n ...Z,\n draggable: {\n type: Boolean,\n default: void 0\n },\n icon: {\n type: [Object]\n },\n zIndexOffset: {\n type: Number\n },\n latLng: {\n type: [Object, Array],\n custom: !0,\n required: !0\n }\n}, ct = (t, o, e) => {\n const { options: n, methods: a } = Y(\n t,\n o,\n e\n ), s = L(\n t,\n ke,\n n\n ), l = {\n ...a,\n setDraggable(r) {\n o.value.dragging && (r ? o.value.dragging.enable() : o.value.dragging.disable());\n },\n latLngSync(r) {\n e.emit(\"update:latLng\", r.latlng), e.emit(\"update:lat-lng\", r.latlng);\n },\n setLatLng(r) {\n if (r != null && o.value) {\n const i = o.value.getLatLng();\n (!i || !i.equals(r)) && o.value.setLatLng(r);\n }\n }\n };\n return { options: s, methods: l };\n}, dt = (t, o) => {\n const e = o.slots.default && o.slots.default();\n return e && e.length && e.some(pt);\n};\nfunction pt(t) {\n return !(it.includes(t.type.toString()) || ut.includes(t.type.name));\n}\nconst $t = g({\n name: \"LMarker\",\n props: ke,\n setup(t, o) {\n const e = c(), n = c(!1), a = h(j), s = m(I);\n G(\n be,\n () => {\n var u;\n return !!((u = e.value) != null && u.getElement());\n }\n ), G(fe, (u) => {\n var y, A;\n const d = U((y = e.value) == null ? void 0 : y.getElement) && ((A = e.value) == null ? void 0 : A.getElement());\n d && (d.innerHTML = u);\n }), G(\n Le,\n (u) => {\n var d;\n return ((d = e.value) == null ? void 0 : d.setIcon) && e.value.setIcon(u);\n }\n );\n const { options: l, methods: r } = ct(t, e, o), i = {\n moveHandler: $e(r.latLngSync)\n };\n return O(async () => {\n const { marker: u, divIcon: d } = a ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n dt(l, o) && (l.icon = d({ className: \"\" })), e.value = C(u(t.latLng, l));\n const y = T(o.attrs);\n e.value.on(y), e.value.on(\"move\", i.moveHandler), S(r, e.value, t), s({\n ...t,\n ...r,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), J(() => me(i)), { ready: n, leafletObject: e };\n },\n render() {\n return M(this.ready, this.$slots);\n }\n}), ue = {\n ...ae,\n smoothFactor: {\n type: Number\n },\n noClip: {\n type: Boolean,\n default: void 0\n },\n latLngs: {\n type: Array,\n required: !0,\n custom: !0\n }\n}, Ue = (t, o, e) => {\n const { options: n, methods: a } = Ce(\n t,\n o,\n e\n ), s = L(\n t,\n ue,\n n\n ), l = {\n ...a,\n setSmoothFactor(r) {\n o.value.setStyle({ smoothFactor: r });\n },\n setNoClip(r) {\n o.value.setStyle({ noClip: r });\n },\n addLatLng(r) {\n o.value.addLatLng(r);\n }\n };\n return { options: s, methods: l };\n}, te = {\n ...ue\n}, ze = (t, o, e) => {\n const { options: n, methods: a } = Ue(\n t,\n o,\n e\n ), s = L(\n t,\n te,\n n\n ), l = {\n ...a,\n toGeoJSON(r) {\n return o.value.toGeoJSON(r);\n }\n };\n return { options: s, methods: l };\n}, kt = g({\n name: \"LPolygon\",\n props: te,\n setup(t, o) {\n const e = c(), n = c(!1), a = h(j), s = m(I), { options: l, methods: r } = ze(t, e, o);\n return O(async () => {\n const { polygon: i } = a ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = C(i(t.latLngs, l));\n const u = T(o.attrs);\n e.value.on(u), S(r, e.value, t), s({\n ...t,\n ...r,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return M(this.ready, this.$slots);\n }\n}), Ut = g({\n name: \"LPolyline\",\n props: ue,\n setup(t, o) {\n const e = c(), n = c(!1), a = h(j), s = m(I), { options: l, methods: r } = Ue(t, e, o);\n return O(async () => {\n const { polyline: i } = a ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = C(\n i(t.latLngs, l)\n );\n const u = T(o.attrs);\n e.value.on(u), S(r, e.value, t), s({\n ...t,\n ...r,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return M(this.ready, this.$slots);\n }\n}), De = {\n ...Q,\n content: {\n type: String,\n default: null\n }\n}, Ee = (t, o) => {\n const { options: e, methods: n } = X(t), a = {\n ...n,\n setContent(s) {\n o.value && s !== null && s !== void 0 && o.value.setContent(s);\n }\n };\n return { options: e, methods: a };\n}, Fe = (t) => t.default ? z(\"div\", { ref: \"root\" }, t.default()) : null, yt = {\n ...De,\n latLng: {\n type: [Object, Array],\n default: () => []\n }\n}, mt = (t, o) => {\n const { options: e, methods: n } = Ee(t, o);\n return { options: e, methods: n };\n}, zt = g({\n name: \"LPopup\",\n props: yt,\n setup(t, o) {\n const e = c(), n = c(null), a = h(j), s = m(he), l = m(Oe), { options: r, methods: i } = mt(t, e);\n return O(async () => {\n const { popup: u } = a ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = C(u(r)), t.latLng !== void 0 && e.value.setLatLng(t.latLng), S(i, e.value, t);\n const d = T(o.attrs);\n e.value.on(d), e.value.setContent(t.content || n.value || \"\"), s(e.value), f(() => o.emit(\"ready\", e.value));\n }), J(() => {\n l();\n }), { root: n, leafletObject: e };\n },\n render() {\n return Fe(this.$slots);\n }\n}), Ze = {\n ...te,\n latLngs: {\n ...te.latLngs,\n required: !1\n },\n bounds: {\n type: Object,\n custom: !0\n }\n}, vt = (t, o, e) => {\n const { options: n, methods: a } = ze(\n t,\n o,\n e\n ), s = L(\n t,\n Ze,\n n\n ), l = {\n ...a,\n setBounds(r) {\n o.value.setBounds(r);\n },\n setLatLngs(r) {\n o.value.setBounds(r);\n }\n };\n return { options: s, methods: l };\n}, Dt = g({\n name: \"LRectangle\",\n props: Ze,\n setup(t, o) {\n const e = c(), n = c(!1), a = h(j), s = m(I), { options: l, methods: r } = vt(t, e, o);\n return O(async () => {\n const { rectangle: i, latLngBounds: u } = a ? b.L : await import(\"leaflet/dist/leaflet-src.esm\"), d = t.bounds ? u(t.bounds) : u(t.latLngs || []);\n e.value = C(i(d, l));\n const y = T(o.attrs);\n e.value.on(y), S(r, e.value, t), s({\n ...t,\n ...r,\n leafletObject: e.value\n }), n.value = !0, f(() => o.emit(\"ready\", e.value));\n }), { ready: n, leafletObject: e };\n },\n render() {\n return M(this.ready, this.$slots);\n }\n}), ce = {\n ...ie,\n tms: {\n type: Boolean,\n default: void 0\n },\n subdomains: {\n type: [String, Array],\n validator: (t) => typeof t == \"string\" ? !0 : Array.isArray(t) ? t.every((o) => typeof o == \"string\") : !1\n },\n detectRetina: {\n type: Boolean,\n default: void 0\n },\n url: {\n type: String,\n required: !0,\n custom: !0\n }\n}, He = (t, o, e) => {\n const { options: n, methods: a } = Me(t, o, e), s = L(\n t,\n ce,\n n\n ), l = {\n ...a\n };\n return { options: s, methods: l };\n}, Et = g({\n props: ce,\n setup(t, o) {\n const e = c(), n = h(j), a = m(I), { options: s, methods: l } = He(t, e, o);\n return O(async () => {\n const { tileLayer: r } = n ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = C(r(t.url, s));\n const i = T(o.attrs);\n e.value.on(i), S(l, e.value, t), a({\n ...t,\n ...l,\n leafletObject: e.value\n }), f(() => o.emit(\"ready\", e.value));\n }), { leafletObject: e };\n },\n render() {\n return null;\n }\n}), bt = {\n ...De\n}, ft = (t, o) => {\n const { options: e, methods: n } = Ee(t, o), a = m(Se);\n return J(() => {\n a();\n }), { options: e, methods: n };\n}, Ft = g({\n name: \"LTooltip\",\n props: bt,\n setup(t, o) {\n const e = c(), n = c(null), a = h(j), s = m(ge), { options: l, methods: r } = ft(t, e);\n return O(async () => {\n const { tooltip: i } = a ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = C(i(l)), S(r, e.value, t);\n const u = T(o.attrs);\n e.value.on(u), e.value.setContent(t.content || n.value || \"\"), s(e.value), f(() => o.emit(\"ready\", e.value));\n }), { root: n, leafletObject: e };\n },\n render() {\n return Fe(this.$slots);\n }\n}), We = {\n ...ce,\n layers: {\n type: String,\n required: !0\n },\n styles: {\n type: String\n },\n format: {\n type: String\n },\n transparent: {\n type: Boolean,\n default: void 0\n },\n version: {\n type: String\n },\n crs: {\n type: Object\n },\n uppercase: {\n type: Boolean,\n default: void 0\n }\n}, Lt = (t, o, e) => {\n const { options: n, methods: a } = He(t, o, e);\n return {\n options: L(\n t,\n We,\n n\n ),\n methods: {\n ...a\n }\n };\n}, Zt = g({\n props: We,\n setup(t, o) {\n const e = c(), n = h(j), a = m(I), { options: s, methods: l } = Lt(\n t,\n e,\n o\n );\n return O(async () => {\n const { tileLayer: r } = n ? b.L : await import(\"leaflet/dist/leaflet-src.esm\");\n e.value = C(\n r.wms(t.url, s)\n );\n const i = T(o.attrs);\n e.value.on(i), S(l, e.value, t), a({\n ...t,\n ...l,\n leafletObject: e.value\n }), f(() => o.emit(\"ready\", e.value));\n }), { leafletObject: e };\n },\n render() {\n return null;\n }\n});\nexport {\n Ot as LCircle,\n St as LCircleMarker,\n jt as LControl,\n Ct as LControlAttribution,\n Pt as LControlLayers,\n Bt as LControlScale,\n Tt as LControlZoom,\n wt as LFeatureGroup,\n It as LGeoJson,\n At as LGridLayer,\n _t as LIcon,\n Gt as LImageOverlay,\n Mt as LLayerGroup,\n Nt as LMap,\n $t as LMarker,\n kt as LPolygon,\n Ut as LPolyline,\n zt as LPopup,\n Dt as LRectangle,\n Et as LTileLayer,\n Ft as LTooltip,\n Zt as LWmsTileLayer\n};\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nimport { LIcon, LMarker } from '@vue-leaflet/vue-leaflet'\n import { toRefs } from 'vue'\n\n import { TCoordinates } from '@/types/workouts'\n\n interface Props {\n markerCoordinates: TCoordinates\n isStart: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'CustomMarker',\n props: {\n markerCoordinates: null,\n isStart: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n markerCoordinates: TCoordinates\n isStart: boolean\n };\n\n \n\n const { isStart, markerCoordinates } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(markerCoordinates).latitude)\n ? (_openBlock(), _createBlock(_unref(LMarker), {\n key: 0,\n \"lat-lng\": [_unref(markerCoordinates).latitude, _unref(markerCoordinates).longitude]\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(LIcon), {\n \"icon-url\": `/img/workouts/${_unref(isStart) ? 'start' : 'finish'}.svg`,\n iconSize: [15, 15]\n }, null, 8, [\"icon-url\"])\n ]),\n _: 1\n }, 8, [\"lat-lng\"]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./CustomMarker.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./CustomMarker.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, normalizeClass as _normalizeClass, createBlock as _createBlock, resolveComponent as _resolveComponent, toDisplayString as _toDisplayString, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4582e1d0\"),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 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"i\", {\n class: \"fa fa-refresh\",\n \"aria-hidden\": \"true\"\n}, null, -1))\nconst _hoisted_5 = {\n key: 1,\n class: \"no-map\"\n}\n\nimport { gpx } from '@tmcw/togeojson'\n import {\n LControl,\n LControlLayers,\n LGeoJson,\n LLayerGroup,\n LMap,\n LMarker,\n LTileLayer,\n } from '@vue-leaflet/vue-leaflet'\n import { ComputedRef, computed, ref, toRefs, withDefaults } from 'vue'\n import 'leaflet/dist/leaflet.css'\n\n import CustomMarker from '@/components/Workout/WorkoutDetail/WorkoutMap/CustomMarker.vue'\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 interface Props {\n workoutData: IWorkoutData\n markerCoordinates?: TCoordinates\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n workoutData: null,\n markerCoordinates: { default: () => ({} as TCoordinates) }\n },\n setup(__props: any) {\n\nconst props = __props as { workoutData: IWorkoutData, markerCoordinates: TCoordinates };\n\n \n\n const store = useStore()\n\n const { workoutData, markerCoordinates } = toRefs(props)\n const workoutMap = ref<null | {\n leafletObject: { fitBounds: (bounds: number[][]) => null }\n }>(null)\n const bounds = computed(() => getBounds())\n const appConfig: ComputedRef<TAppConfig> = 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 const startMarkerCoordinates = computed(() =>\n props.workoutData && props.workoutData.chartData.length > 0\n ? {\n latitude: props.workoutData.chartData[0].latitude,\n longitude: props.workoutData.chartData[0].longitude,\n }\n : {}\n )\n const endMarkerCoordinates = computed(() =>\n props.workoutData && props.workoutData.chartData.length > 0\n ? {\n latitude:\n props.workoutData.chartData[props.workoutData.chartData.length - 1]\n .latitude,\n longitude:\n props.workoutData.chartData[props.workoutData.chartData.length - 1]\n .longitude,\n }\n : {}\n )\n const isFullscreen = ref(false)\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[][]>): 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 function getBounds() {\n return 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 function resetZoom() {\n workoutMap.value?.leafletObject.fitBounds(getBounds())\n }\n function toggleFullscreen() {\n isFullscreen.value = !isFullscreen.value\n if (!isFullscreen.value) {\n setTimeout(() => {\n resetZoom()\n }, 100)\n }\n }\n\nreturn (_ctx: any,_cache: any) => {\n const _component_VFullscreen = _resolveComponent(\"VFullscreen\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_unref(workoutData).loading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_unref(workoutData).workout.with_gpx)\n ? (_openBlock(), _createBlock(_component_VFullscreen, {\n key: 0,\n modelValue: isFullscreen.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((isFullscreen).value = $event))\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"leaflet-container\", { 'fullscreen-map': isFullscreen.value }])\n }, [\n (_unref(geoJson).jsonData && _unref(center) && _unref(bounds).length === 2)\n ? (_openBlock(), _createBlock(_unref(LMap), {\n key: 0,\n zoom: 13,\n maxZoom: 19,\n center: _unref(center),\n bounds: _unref(bounds),\n zoomAnimation: false,\n ref_key: \"workoutMap\",\n ref: workoutMap,\n onReady: _cache[0] || (_cache[0] = ($event: any) => (fitBounds(_unref(bounds))))\n }, {\n default: _withCtx(() => [\n _createVNode(_unref(LControlLayers)),\n _createVNode(_unref(LControl), {\n position: \"topleft\",\n class: \"map-control\",\n tabindex: \"0\",\n role: \"button\",\n \"aria-label\": _ctx.$t('workouts.RESET_ZOOM'),\n onClick: resetZoom\n }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n }, 8, [\"aria-label\"]),\n _createVNode(_unref(LControl), {\n position: \"topleft\",\n class: \"map-control\",\n tabindex: \"0\",\n role: \"button\",\n \"aria-label\": \n _ctx.$t(`workouts.${isFullscreen.value ? 'EXIT' : 'VIEW'}_FULLSCREEN`)\n ,\n onClick: toggleFullscreen\n }, {\n default: _withCtx(() => [\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa-${isFullscreen.value ? 'compress' : 'arrows-alt'}`),\n \"aria-hidden\": \"true\"\n }, null, 2)\n ]),\n _: 1\n }, 8, [\"aria-label\"]),\n _createVNode(_unref(LTileLayer), {\n url: `${_unref(getApiUrl)()}workouts/map_tile/{s}/{z}/{x}/{y}.png`,\n attribution: _unref(appConfig).map_attribution,\n bounds: _unref(bounds)\n }, null, 8, [\"url\", \"attribution\", \"bounds\"]),\n _createVNode(_unref(LGeoJson), {\n geojson: _unref(geoJson).jsonData\n }, null, 8, [\"geojson\"]),\n (_unref(markerCoordinates).latitude)\n ? (_openBlock(), _createBlock(_unref(LMarker), {\n key: 0,\n \"lat-lng\": [\n _unref(markerCoordinates).latitude,\n _unref(markerCoordinates).longitude,\n ]\n }, null, 8, [\"lat-lng\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_unref(LLayerGroup), {\n name: _ctx.$t('workouts.START_AND_FINISH'),\n \"layer-type\": \"overlay\"\n }, {\n default: _withCtx(() => [\n (_unref(startMarkerCoordinates).latitude)\n ? (_openBlock(), _createBlock(CustomMarker, {\n key: 0,\n markerCoordinates: _unref(startMarkerCoordinates),\n isStart: true\n }, null, 8, [\"markerCoordinates\"]))\n : _createCommentVNode(\"\", true),\n (_unref(endMarkerCoordinates).latitude)\n ? (_openBlock(), _createBlock(CustomMarker, {\n key: 1,\n markerCoordinates: _unref(endMarkerCoordinates),\n isStart: false\n }, null, 8, [\"markerCoordinates\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"name\"])\n ]),\n _: 1\n }, 8, [\"center\", \"bounds\"]))\n : _createCommentVNode(\"\", true)\n ], 2)\n ]),\n _: 1\n }, 8, [\"modelValue\"]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_5, _toDisplayString(_ctx.$t('workouts.NO_MAP')), 1))\n ]))\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=4582e1d0&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-4582e1d0\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, unref as _unref, withKeys as _withKeys, 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-869dd634\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"workout-detail\" }\n\nimport {\n ComputedRef,\n Ref,\n computed,\n nextTick,\n ref,\n toRefs,\n watch,\n withDefaults,\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/index.vue'\n import { WORKOUTS_STORE } from '@/store/constants'\n import { ISport } from '@/types/sports'\n import { IAuthUserProfile } 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 interface Props {\n authUser: IAuthUserProfile\n displaySegment: boolean\n sports: ISport[]\n workoutData: IWorkoutData\n markerCoordinates?: TCoordinates\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n authUser: null,\n displaySegment: { type: Boolean },\n sports: null,\n workoutData: null,\n markerCoordinates: { default: () => ({} as TCoordinates) }\n },\n setup(__props: any) {\n\nconst props = __props as { authUser: IAuthUserProfile, displaySegment: boolean, sports: ISport[], workoutData: IWorkoutData, markerCoordinates: TCoordinates };\n\n \n\n const route = useRoute()\n const store = useStore()\n\n const { authUser, markerCoordinates, workoutData } = toRefs(props)\n const workout: ComputedRef<IWorkout> = computed(\n () => props.workoutData.workout\n )\n const segmentId: Ref<number | null> = ref(\n route.params.workoutId ? +route.params.segmentId : null\n )\n const segment: ComputedRef<IWorkoutSegment | null> = computed(() =>\n workout.value.segments.length > 0 && segmentId.value\n ? workout.value.segments[+segmentId.value - 1]\n : null\n )\n const displayModal: Ref<boolean> = ref(false)\n const sport = computed(() =>\n props.sports\n ? props.sports.find(\n (sport) => sport.id === props.workoutData.workout.sport_id\n )\n : {}\n )\n const workoutObject = computed(() =>\n getWorkoutObject(workout.value, segment.value)\n )\n\n function getWorkoutObjectUrl(\n workout: IWorkout,\n displaySegment: boolean,\n segmentId: number | null\n ): Record<string, string | null> {\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 props.authUser.date_format\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 weatherStart: segment ? null : workout.weather_start,\n with_gpx: workout.with_gpx,\n workoutId: workout.id,\n workoutTime: workoutDate.workout_time,\n }\n }\n function updateDisplayModal(value: boolean) {\n displayModal.value = value\n if (displayModal.value) {\n nextTick(() => {\n const button = document.getElementById('workout-cancel-button')\n if (button) {\n button.focus()\n }\n })\n }\n }\n function cancelDelete() {\n updateDisplayModal(false)\n const button = document.getElementById('delete-workout-button')\n if (button) {\n button.focus()\n }\n }\n function deleteWorkout(workoutId: string) {\n updateDisplayModal(false)\n store.dispatch(WORKOUTS_STORE.ACTIONS.DELETE_WORKOUT, {\n workoutId: workoutId,\n })\n }\n function scrollToTop() {\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n })\n }\n\n watch(\n () => route.params.segmentId,\n async (newSegmentId) => {\n if (newSegmentId) {\n segmentId.value = +newSegmentId\n scrollToTop()\n }\n }\n )\n watch(\n () => route.params.workoutId,\n async (workoutId) => {\n if (workoutId) {\n displayModal.value = false\n scrollToTop()\n }\n }\n )\n\nreturn (_ctx: any,_cache: any) => {\n const _component_Modal = _resolveComponent(\"Modal\")!\n const _component_Card = _resolveComponent(\"Card\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (displayModal.value)\n ? (_openBlock(), _createBlock(_component_Modal, {\n key: 0,\n name: \"workout\",\n title: _ctx.$t('common.CONFIRMATION'),\n message: _ctx.$t('workouts.WORKOUT_DELETION_CONFIRMATION'),\n onConfirmAction: _cache[0] || (_cache[0] = ($event: any) => (deleteWorkout(_unref(workoutObject).workoutId))),\n onCancelAction: cancelDelete,\n onKeydown: _withKeys(cancelDelete, [\"esc\"])\n }, null, 8, [\"title\", \"message\", \"onKeydown\"]))\n : _createCommentVNode(\"\", true),\n _createVNode(_component_Card, null, {\n title: _withCtx(() => [\n _createVNode(WorkoutCardTitle, {\n sport: _unref(sport),\n workoutObject: _unref(workoutObject),\n onDisplayModal: _cache[1] || (_cache[1] = ($event: any) => (updateDisplayModal(true)))\n }, null, 8, [\"sport\", \"workoutObject\"])\n ]),\n content: _withCtx(() => [\n _createVNode(WorkoutMap, {\n workoutData: _unref(workoutData),\n markerCoordinates: _unref(markerCoordinates)\n }, null, 8, [\"workoutData\", \"markerCoordinates\"]),\n _createVNode(WorkoutData, {\n workoutObject: _unref(workoutObject),\n useImperialUnits: _unref(authUser).imperial_units,\n displayHARecord: _unref(authUser).display_ascent\n }, null, 8, [\"workoutObject\", \"useImperialUnits\", \"displayHARecord\"])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=869dd634&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-869dd634\"]])\n\nexport default __exports__","import { Chart, LegendItem } from 'chart.js'\n\nconst getOrCreateLegendList = (id: string): HTMLUListElement => {\n const legendContainer = document.getElementById(id)\n if (legendContainer) {\n let listContainer = legendContainer.querySelector('ul')\n if (!listContainer) {\n listContainer = document.createElement('ul')\n legendContainer.appendChild(listContainer)\n }\n return listContainer\n }\n throw new Error('No legend container')\n}\n\nexport const htmlLegendPlugin = {\n id: 'htmlLegend',\n afterUpdate(\n chart: Chart,\n args: Record<string, unknown>,\n options: Record<string, string>\n ): void {\n const ul = getOrCreateLegendList(options.containerID)\n while (ul.firstChild) {\n ul.firstChild.remove()\n }\n\n const legendItems = chart.options.plugins?.legend?.labels?.generateLabels\n ? chart.options.plugins?.legend?.labels?.generateLabels(chart)\n : []\n\n legendItems.forEach((item: LegendItem) => {\n if (\n !chart.config.options?.scales?.yElevation?.display &&\n item.datasetIndex === 1 // elevation\n ) {\n return\n }\n const li = document.createElement('li')\n li.onclick = () => {\n if (item.datasetIndex !== undefined) {\n chart.setDatasetVisibility(\n item.datasetIndex,\n !chart.isDatasetVisible(item.datasetIndex)\n )\n chart.update()\n }\n }\n\n const checkBox = document.createElement('input')\n if (checkBox) {\n checkBox.type = 'checkbox'\n checkBox.id = item.text\n checkBox.checked = !item.hidden\n }\n\n const text = document.createTextNode(item.text)\n\n const boxSpan = document.createElement('span')\n if (boxSpan) {\n boxSpan.style.background = String(item.fillStyle)\n boxSpan.style.borderColor = String(item.strokeStyle)\n }\n\n li.appendChild(checkBox)\n li.appendChild(text)\n li.appendChild(boxSpan)\n ul.appendChild(li)\n })\n },\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, unref as _unref, mergeProps as _mergeProps, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-68415552\"),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 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"chart-legend\" }, null, -1))\nconst _hoisted_6 = { class: \"chart-info\" }\nconst _hoisted_7 = { class: \"no-data-cleaning\" }\nconst _hoisted_8 = {\n key: 0,\n class: \"elevation-start\"\n}\nconst _hoisted_9 = [\"checked\"]\n\nimport { ChartData, ChartOptions } from 'chart.js'\n import { ComputedRef, computed, ref, toRefs } from 'vue'\n import { LineChart, useLineChart } from 'vue-chart-3'\n import { useI18n } from 'vue-i18n'\n\n import { htmlLegendPlugin } from '@/components/Workout/WorkoutDetail/WorkoutChart/legend'\n import { TUnit } from '@/types/units'\n import { IAuthUserProfile } from '@/types/user'\n import {\n IWorkoutChartData,\n IWorkoutData,\n TCoordinates,\n } from '@/types/workouts'\n import { units } from '@/utils/units'\n import { getDatasets } from '@/utils/workouts'\n\n interface Props {\n authUser: IAuthUserProfile\n workoutData: IWorkoutData\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'index',\n props: {\n authUser: null,\n workoutData: null\n },\n emits: ['getCoordinates'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n authUser: IAuthUserProfile\n workoutData: IWorkoutData\n };\n\n \n\n \n\n const { t } = useI18n()\n\n const { authUser, workoutData } = toRefs(props)\n const displayDistance = ref(true)\n const beginElevationAtZero = ref(authUser.value.start_elevation_at_zero)\n const datasets: ComputedRef<IWorkoutChartData> = computed(() =>\n getDatasets(workoutData.value.chartData, t, authUser.value.imperial_units)\n )\n const hasElevation = computed(\n () => datasets.value && datasets.value.datasets.elevation.data.length > 0\n )\n const fromKmUnit = getUnitTo('km')\n const fromMUnit = getUnitTo('m')\n const chartData: ComputedRef<ChartData<'line'>> = 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<TCoordinates[]> = computed(\n () => datasets.value.coordinates\n )\n const options = computed<ChartOptions<'line'>>(() => ({\n responsive: true,\n maintainAspectRatio: true,\n animation: false,\n layout: {\n padding: {\n top: 22,\n },\n },\n scales: {\n x: {\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') + ` (${fromKmUnit})`\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') + ` (${fromKmUnit}/h)`,\n },\n },\n yElevation: {\n beginAtZero: beginElevationAtZero.value,\n display: hasElevation.value,\n grid: {\n drawOnChartArea: false,\n },\n position: 'right',\n title: {\n display: true,\n text: t('workouts.ELEVATION') + ` (${fromMUnit})`,\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 + ` ${fromMUnit}`\n : label + ` ${fromKmUnit}/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')}: ${\n tooltipItems[0].label\n } ${fromKmUnit}`\n : `${t('workouts.DURATION')}: ${formatDuration(\n tooltipItems[0].label.replace(',', '')\n )}`\n },\n },\n },\n legend: {\n display: false,\n },\n htmlLegend: {\n containerID: 'chart-legend',\n displayElevation: hasElevation.value,\n },\n },\n }))\n const { lineChartProps } = useLineChart({\n chartData,\n options,\n plugins: [htmlLegendPlugin],\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 function getUnitTo(unitFrom: TUnit): TUnit {\n return props.authUser.imperial_units\n ? units[unitFrom].defaultTarget\n : unitFrom\n }\n\nreturn (_ctx: any,_cache: 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.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: displayDistance.value,\n onClick: updateDisplayDistance\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: !displayDistance.value,\n onClick: updateDisplayDistance\n }, null, 8, _hoisted_4),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.DURATION')), 1)\n ])\n ]),\n _hoisted_5,\n _createVNode(_unref(LineChart), _mergeProps(_unref(lineChartProps), {\n class: \"line-chart\",\n onMouseleave: emitEmptyCoordinates\n }), null, 16),\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"div\", _hoisted_7, _toDisplayString(_ctx.$t('workouts.NO_DATA_CLEANING')), 1),\n (_unref(hasElevation))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createElementVNode(\"label\", null, [\n _createElementVNode(\"input\", {\n type: \"checkbox\",\n checked: beginElevationAtZero.value,\n onClick: _cache[0] || (_cache[0] = ($event: any) => (beginElevationAtZero.value = !beginElevationAtZero.value))\n }, null, 8, _hoisted_9),\n _createTextVNode(\" \" + _toDisplayString(_ctx.$t('workouts.START_ELEVATION_AT_ZERO')), 1)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./index.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=68415552&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-68415552\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, createElementVNode as _createElementVNode, 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-f6b59442\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-note\" }\nconst _hoisted_2 = [\"innerHTML\"]\n\nimport { toRefs, withDefaults } from 'vue'\n\n import { linkifyAndClean } from '@/utils/inputs'\n\n interface Props {\n notes?: string | null\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutNotes',\n props: {\n notes: { default: () => null }\n },\n setup(__props: any) {\n\nconst props = __props as { notes: string | null };\n\n \n\n const { notes } = toRefs(props)\n\nreturn (_ctx: any,_cache: 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 _createElementVNode(\"span\", {\n innerHTML: \n _unref(notes) && _unref(notes) !== ''\n ? _unref(linkifyAndClean)(_unref(notes))\n : _ctx.$t('workouts.NO_NOTES')\n \n }, null, 8, _hoisted_2)\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./WorkoutNotes.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutNotes.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutNotes.vue?vue&type=style&index=0&id=f6b59442&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-f6b59442\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, unref as _unref, 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-6b8a27cd\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { id: \"workout-segments\" }\n\nimport { toRefs } from 'vue'\n\n import { IWorkoutSegment } from '@/types/workouts'\n\n interface Props {\n segments: IWorkoutSegment[]\n useImperialUnits: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutSegments',\n props: {\n segments: null,\n useImperialUnits: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n segments: IWorkoutSegment[]\n useImperialUnits: boolean\n };\n\n \n\n const { segments, useImperialUnits } = toRefs(props)\n\nreturn (_ctx: any,_cache: any) => {\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Distance = _resolveComponent(\"Distance\")!\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(_unref(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')) + \": \", 1),\n _createVNode(_component_Distance, {\n distance: segment.distance,\n unitFrom: \"km\",\n useImperialUnits: _unref(useImperialUnits)\n }, null, 8, [\"distance\", \"useImperialUnits\"]),\n _createTextVNode(\", \" + _toDisplayString(_ctx.$t('workouts.DURATION')) + \": \" + _toDisplayString(segment.duration) + \") \", 1)\n ]))\n }), 128))\n ])\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./WorkoutSegments.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutSegments.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutSegments.vue?vue&type=style&index=0&id=6b8a27cd&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6b8a27cd\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, 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-53c4e53a\"),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\nimport {\n ComputedRef,\n Ref,\n computed,\n ref,\n toRefs,\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 WorkoutDetail from '@/components/Workout/WorkoutDetail/index.vue'\n import WorkoutChart from '@/components/Workout/WorkoutDetail/WorkoutChart/index.vue'\n import WorkoutNotes from '@/components/Workout/WorkoutDetail/WorkoutNotes.vue'\n import WorkoutSegments from '@/components/Workout/WorkoutDetail/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 { IAuthUserProfile } from '@/types/user'\n import { IWorkoutData, IWorkoutPayload, TCoordinates } from '@/types/workouts'\n import { useStore } from '@/use/useStore'\n\n interface Props {\n displaySegment: boolean\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'Workout',\n props: {\n displaySegment: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n displaySegment: boolean\n };\n\n \n\n const route = useRoute()\n const store = useStore()\n\n const { displaySegment } = toRefs(props)\n const workoutData: ComputedRef<IWorkoutData> = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUT_DATA]\n )\n const authUser: ComputedRef<IAuthUserProfile> = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const sports: ComputedRef<ISport[]> = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const markerCoordinates: Ref<TCoordinates> = ref({\n latitude: null,\n longitude: null,\n })\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 onUnmounted(() => {\n store.commit(WORKOUTS_STORE.MUTATIONS.EMPTY_WORKOUT)\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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n (_unref(sports).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n (_unref(workoutData).workout.id)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [\n _createVNode(WorkoutDetail, {\n workoutData: _unref(workoutData),\n sports: _unref(sports),\n authUser: _unref(authUser),\n markerCoordinates: markerCoordinates.value,\n displaySegment: _unref(displaySegment)\n }, null, 8, [\"workoutData\", \"sports\", \"authUser\", \"markerCoordinates\", \"displaySegment\"]),\n (\n _unref(workoutData).workout.with_gpx && _unref(workoutData).chartData.length > 0\n )\n ? (_openBlock(), _createBlock(WorkoutChart, {\n key: 0,\n workoutData: _unref(workoutData),\n authUser: _unref(authUser),\n displaySegment: _unref(displaySegment),\n onGetCoordinates: updateCoordinates\n }, null, 8, [\"workoutData\", \"authUser\", \"displaySegment\"]))\n : _createCommentVNode(\"\", true),\n (!_unref(displaySegment) && _unref(workoutData).workout.segments.length > 1)\n ? (_openBlock(), _createBlock(WorkoutSegments, {\n key: 1,\n segments: _unref(workoutData).workout.segments,\n useImperialUnits: _unref(authUser).imperial_units\n }, null, 8, [\"segments\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true),\n (!_unref(displaySegment))\n ? (_openBlock(), _createBlock(WorkoutNotes, {\n key: 2,\n notes: _unref(workoutData).workout.notes\n }, null, 8, [\"notes\"]))\n : _createCommentVNode(\"\", true),\n _hoisted_5\n ]))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n (!_unref(workoutData).loading)\n ? (_openBlock(), _createBlock(NotFound, {\n key: 0,\n target: \"WORKOUT\"\n }))\n : _createCommentVNode(\"\", true)\n ]))\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n}\n}\n\n})","import script from \"./Workout.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Workout.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./Workout.vue?vue&type=style&index=0&id=53c4e53a&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-53c4e53a\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, unref as _unref, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, withKeys as _withKeys, withModifiers as _withModifiers, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-28429a13\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"workouts-filters\" }\nconst _hoisted_2 = { class: \"box\" }\nconst _hoisted_3 = [\"onSubmit\"]\nconst _hoisted_4 = { class: \"form-all-items\" }\nconst _hoisted_5 = { class: \"form-items-group\" }\nconst _hoisted_6 = { class: \"form-item\" }\nconst _hoisted_7 = [\"value\"]\nconst _hoisted_8 = { class: \"form-item\" }\nconst _hoisted_9 = [\"value\"]\nconst _hoisted_10 = { class: \"form-items-group\" }\nconst _hoisted_11 = { class: \"form-item\" }\nconst _hoisted_12 = [\"value\", \"onKeyup\"]\nconst _hoisted_13 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"option\", { value: \"\" }, null, -1))\nconst _hoisted_14 = [\"value\"]\nconst _hoisted_15 = { class: \"form-item form-item-title\" }\nconst _hoisted_16 = { class: \"form-inputs-group\" }\nconst _hoisted_17 = [\"value\", \"onKeyup\"]\nconst _hoisted_18 = { class: \"form-items-group\" }\nconst _hoisted_19 = { class: \"form-item\" }\nconst _hoisted_20 = { class: \"form-inputs-group\" }\nconst _hoisted_21 = [\"value\", \"onKeyup\"]\nconst _hoisted_22 = [\"value\", \"onKeyup\"]\nconst _hoisted_23 = { class: \"form-items-group\" }\nconst _hoisted_24 = { class: \"form-item\" }\nconst _hoisted_25 = { class: \"form-inputs-group\" }\nconst _hoisted_26 = [\"value\", \"onKeyup\"]\nconst _hoisted_27 = [\"value\", \"onKeyup\"]\nconst _hoisted_28 = { class: \"form-items-group\" }\nconst _hoisted_29 = { class: \"form-item\" }\nconst _hoisted_30 = { class: \"form-inputs-group\" }\nconst _hoisted_31 = [\"value\", \"onKeyup\"]\nconst _hoisted_32 = [\"value\", \"onKeyup\"]\nconst _hoisted_33 = { class: \"form-items-group\" }\nconst _hoisted_34 = { class: \"form-item\" }\nconst _hoisted_35 = { class: \"form-inputs-group\" }\nconst _hoisted_36 = [\"value\", \"onKeyup\"]\nconst _hoisted_37 = [\"value\", \"onKeyup\"]\nconst _hoisted_38 = { class: \"form-button\" }\n\nimport { ComputedRef, computed, toRefs, watch, onMounted } 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 { IAuthUserProfile } from '@/types/user'\n import { translateSports } from '@/utils/sports'\n import { units } from '@/utils/units'\n\n interface Props {\n authUser: IAuthUserProfile\n sports: ISport[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutsFilters',\n props: {\n authUser: null,\n sports: null\n },\n emits: ['filter'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n authUser: IAuthUserProfile\n sports: ISport[]\n };\n\n \n\n \n\n const { t } = useI18n()\n const route = useRoute()\n const router = useRouter()\n\n const { authUser } = toRefs(props)\n\n const toUnit = authUser.value.imperial_units\n ? units['km'].defaultTarget\n : 'km'\n const translatedSports: ComputedRef<ISport[]> = computed(() =>\n translateSports(props.sports, t)\n )\n let params: LocationQuery = Object.assign({}, route.query)\n\n onMounted(() => {\n const filter = document.getElementById('from')\n if (filter) {\n filter.focus()\n }\n })\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\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"form\", {\n onSubmit: _withModifiers(onFilter, [\"prevent\"]),\n class: \"form\"\n }, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.FROM')) + \": \", 1),\n _createElementVNode(\"input\", {\n id: \"from\",\n name: \"from\",\n type: \"date\",\n value: _ctx.$route.query.from,\n onChange: handleFilterChange\n }, null, 40, _hoisted_7)\n ]),\n _createElementVNode(\"div\", _hoisted_8, [\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: handleFilterChange\n }, null, 40, _hoisted_9)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_10, [\n _createElementVNode(\"div\", _hoisted_11, [\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: handleFilterChange,\n onKeyup: _withKeys(onFilter, [\"enter\"])\n }, [\n _hoisted_13,\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(translatedSports).filter((s) =>\n _unref(authUser).sports_list.includes(s.id)\n ), (sport) => {\n return (_openBlock(), _createElementBlock(\"option\", {\n value: sport.id,\n key: sport.id\n }, _toDisplayString(sport.translatedLabel), 9, _hoisted_14))\n }), 128))\n ], 40, _hoisted_12)\n ]),\n _createElementVNode(\"div\", _hoisted_15, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.TITLE', 1)) + \":\", 1),\n _createElementVNode(\"div\", _hoisted_16, [\n _createElementVNode(\"input\", {\n class: \"title\",\n name: \"title\",\n value: _ctx.$route.query.title,\n onChange: handleFilterChange,\n placeholder: \"\",\n type: \"text\",\n onKeyup: _withKeys(onFilter, [\"enter\"])\n }, null, 40, _hoisted_17)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_18, [\n _createElementVNode(\"div\", _hoisted_19, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DISTANCE')) + \" (\" + _toDisplayString(_unref(toUnit)) + \"): \", 1),\n _createElementVNode(\"div\", _hoisted_20, [\n _createElementVNode(\"input\", {\n name: \"distance_from\",\n type: \"number\",\n min: \"0\",\n step: \"0.1\",\n value: _ctx.$route.query.distance_from,\n onChange: handleFilterChange,\n onKeyup: _withKeys(onFilter, [\"enter\"])\n }, null, 40, _hoisted_21),\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: \"0.1\",\n value: _ctx.$route.query.distance_to,\n onChange: handleFilterChange,\n onKeyup: _withKeys(onFilter, [\"enter\"])\n }, null, 40, _hoisted_22)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_23, [\n _createElementVNode(\"div\", _hoisted_24, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.DURATION')) + \": \", 1),\n _createElementVNode(\"div\", _hoisted_25, [\n _createElementVNode(\"input\", {\n name: \"duration_from\",\n value: _ctx.$route.query.duration_from,\n onChange: handleFilterChange,\n pattern: \"^([0-9]*[0-9]):([0-5][0-9])$\",\n placeholder: \"hh:mm\",\n type: \"text\",\n onKeyup: _withKeys(onFilter, [\"enter\"])\n }, null, 40, _hoisted_26),\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: handleFilterChange,\n pattern: \"^([0-9]*[0-9]):([0-5][0-9])$\",\n placeholder: \"hh:mm\",\n type: \"text\",\n onKeyup: _withKeys(onFilter, [\"enter\"])\n }, null, 40, _hoisted_27)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_28, [\n _createElementVNode(\"div\", _hoisted_29, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.AVE_SPEED')) + \" (\" + _toDisplayString(_unref(toUnit)) + \"/h): \", 1),\n _createElementVNode(\"div\", _hoisted_30, [\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"ave_speed_from\",\n value: _ctx.$route.query.ave_speed_from,\n onChange: handleFilterChange,\n step: \"0.1\",\n type: \"number\",\n onKeyup: _withKeys(onFilter, [\"enter\"])\n }, null, 40, _hoisted_31),\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: handleFilterChange,\n step: \"0.1\",\n type: \"number\",\n onKeyup: _withKeys(onFilter, [\"enter\"])\n }, null, 40, _hoisted_32)\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_33, [\n _createElementVNode(\"div\", _hoisted_34, [\n _createElementVNode(\"label\", null, _toDisplayString(_ctx.$t('workouts.MAX_SPEED')) + \" (\" + _toDisplayString(_unref(toUnit)) + \"/h): \", 1),\n _createElementVNode(\"div\", _hoisted_35, [\n _createElementVNode(\"input\", {\n min: \"0\",\n name: \"max_speed_from\",\n value: _ctx.$route.query.max_speed_from,\n onChange: handleFilterChange,\n step: \"0.1\",\n type: \"number\",\n onKeyup: _withKeys(onFilter, [\"enter\"])\n }, null, 40, _hoisted_36),\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: handleFilterChange,\n step: \"0.1\",\n type: \"number\",\n onKeyup: _withKeys(onFilter, [\"enter\"])\n }, null, 40, _hoisted_37)\n ])\n ])\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_38, [\n _createElementVNode(\"button\", {\n type: \"submit\",\n class: \"confirm\",\n onClick: onFilter\n }, _toDisplayString(_ctx.$t('buttons.FILTER')), 1),\n _createElementVNode(\"button\", {\n class: \"confirm\",\n onClick: onClearFilter\n }, _toDisplayString(_ctx.$t('buttons.CLEAR_FILTER')), 1)\n ])\n ], 40, _hoisted_3)\n ])\n ]))\n}\n}\n\n})","import script from \"./WorkoutsFilters.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutsFilters.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutsFilters.vue?vue&type=style&index=0&id=28429a13&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-28429a13\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, normalizeClass as _normalizeClass, renderList as _renderList, Fragment as _Fragment, resolveComponent as _resolveComponent, createBlock as _createBlock, withCtx as _withCtx, createTextVNode as _createTextVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-5b391214\"),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: \"title\" }\nconst _hoisted_13 = { class: \"workout-date\" }\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 = { class: \"text-right\" }\nconst _hoisted_24 = { class: \"cell-heading\" }\nconst _hoisted_25 = { class: \"text-right\" }\nconst _hoisted_26 = { class: \"cell-heading\" }\nconst _hoisted_27 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", { id: \"bottom\" }, null, -1))\n\nimport {\n ComputedRef,\n Ref,\n computed,\n ref,\n toRefs,\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 { ROOT_STORE, WORKOUTS_STORE } from '@/store/constants'\n import { IPagination } from '@/types/api'\n import { ITranslatedSport } from '@/types/sports'\n import { IAuthUserProfile } 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 { formatDate } from '@/utils/dates'\n import { getSportColor, getSportLabel } from '@/utils/sports'\n import { convertDistance } from '@/utils/units'\n import { defaultOrder } from '@/utils/workouts'\n\n interface Props {\n user: IAuthUserProfile\n sports: ITranslatedSport[]\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutsList',\n props: {\n user: null,\n sports: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n user: IAuthUserProfile\n sports: ITranslatedSport[]\n };\n\n \n\n const store = useStore()\n const route = useRoute()\n const router = useRouter()\n\n const { user, sports } = toRefs(props)\n const orderByList: string[] = [\n 'ave_speed',\n 'distance',\n 'duration',\n 'workout_date',\n ]\n const workouts: ComputedRef<IWorkout[]> = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.USER_WORKOUTS]\n )\n const pagination: ComputedRef<IPagination> = computed(\n () => store.getters[WORKOUTS_STORE.GETTERS.WORKOUTS_PAGINATION]\n )\n const currentLanguage: ComputedRef<string> = computed(\n () => store.getters[ROOT_STORE.GETTERS.LANGUAGE]\n )\n let query: TWorkoutsPayload = getWorkoutsQuery(route.query)\n const hoverWorkoutId: Ref<string | null> = ref(null)\n\n onBeforeMount(() => {\n loadWorkouts(query)\n })\n\n function loadWorkouts(payload: TWorkoutsPayload) {\n store.dispatch(\n WORKOUTS_STORE.ACTIONS.GET_USER_WORKOUTS,\n user.value.imperial_units ? getConvertedPayload(payload) : payload\n )\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 const workoutQuery = getQuery(\n newQuery,\n orderByList,\n defaultOrder.order_by,\n {\n defaultSort: defaultOrder.order,\n }\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 workoutQuery[k] = newQuery[k]\n }\n })\n return workoutQuery\n }\n\n function getConvertedPayload(payload: TWorkoutsPayload): TWorkoutsPayload {\n const convertedPayload: TWorkoutsPayload = {\n ...payload,\n }\n Object.entries(convertedPayload).map((entry) => {\n if (entry[0].match('speed|distance') && entry[1]) {\n convertedPayload[entry[0]] = convertDistance(+entry[1], 'mi', 'km')\n }\n })\n return convertedPayload\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\nreturn (_ctx: any,_cache: any) => {\n const _component_SportImage = _resolveComponent(\"SportImage\")!\n const _component_router_link = _resolveComponent(\"router-link\")!\n const _component_Distance = _resolveComponent(\"Distance\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"box\", { 'empty-table': _unref(workouts).length === 0 }])\n }, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(_ctx.$t('common.TOTAL').toLowerCase()) + \": \", 1),\n (_unref(pagination).total !== null)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, _toDisplayString(_unref(pagination).total) + \" \" + _toDisplayString(_ctx.$t('workouts.WORKOUT', _unref(pagination).total)), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _createVNode(FilterSelects, {\n sort: _unref(sortList),\n order_by: orderByList,\n query: _unref(query),\n message: \"workouts\",\n onUpdateSelect: reloadWorkouts\n }, null, 8, [\"sort\", \"query\"]),\n (_unref(workouts).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createVNode(Pagination, {\n class: \"top-pagination\",\n pagination: _unref(pagination),\n path: \"/workouts\",\n query: _unref(query)\n }, null, 8, [\"pagination\", \"query\"]),\n _createElementVNode(\"table\", null, [\n _createElementVNode(\"thead\", {\n class: _normalizeClass({ smaller: 'de' === _unref(currentLanguage) })\n }, [\n _createElementVNode(\"tr\", null, [\n _hoisted_6,\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.WORKOUT', 1))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.DATE'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.DISTANCE'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.DURATION'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.AVE_SPEED'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.MAX_SPEED'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.ASCENT'))), 1),\n _createElementVNode(\"th\", null, _toDisplayString(capitalize(_ctx.$t('workouts.DESCENT'))), 1)\n ])\n ], 2),\n _createElementVNode(\"tbody\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(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 (_unref(sports).length > 0)\n ? (_openBlock(), _createBlock(_component_SportImage, {\n key: 0,\n title: \n _unref(sports).find((s) => s.id === workout.sport_id)\n .translatedLabel\n ,\n \"sport-label\": _unref(getSportLabel)(workout, _unref(sports)),\n color: _unref(getSportColor)(workout, _unref(sports))\n }, null, 8, [\"title\", \"sport-label\", \"color\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"td\", {\n class: \"workout-title\",\n onMouseover: ($event: any) => (onHover(workout.id)),\n onMouseleave: _cache[0] || (_cache[0] = ($event: any) => (onHover(null)))\n }, [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(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 _createElementVNode(\"span\", _hoisted_12, _toDisplayString(workout.title), 1)\n ]),\n _: 2\n }, 1032, [\"to\"]),\n (workout.with_gpx && hoverWorkoutId.value === workout.id)\n ? (_openBlock(), _createBlock(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\", _hoisted_13, [\n _createElementVNode(\"span\", _hoisted_14, _toDisplayString(_ctx.$t('workouts.DATE')), 1),\n _createElementVNode(\"time\", null, _toDisplayString(_unref(formatDate)(\n workout.workout_date,\n _unref(user).timezone,\n _unref(user).date_format\n )), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_15, [\n _createElementVNode(\"span\", _hoisted_16, _toDisplayString(_ctx.$t('workouts.DISTANCE')), 1),\n (workout.distance !== null)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: workout.distance,\n unitFrom: \"km\",\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"td\", _hoisted_17, [\n _createElementVNode(\"span\", _hoisted_18, _toDisplayString(_ctx.$t('workouts.DURATION')), 1),\n _createTextVNode(\" \" + _toDisplayString(workout.moving), 1)\n ]),\n _createElementVNode(\"td\", _hoisted_19, [\n _createElementVNode(\"span\", _hoisted_20, _toDisplayString(_ctx.$t('workouts.AVE_SPEED')), 1),\n (workout.ave_speed !== null)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: workout.ave_speed,\n unitFrom: \"km\",\n speed: true,\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"td\", _hoisted_21, [\n _createElementVNode(\"span\", _hoisted_22, _toDisplayString(_ctx.$t('workouts.MAX_SPEED')), 1),\n (workout.max_speed !== null)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: workout.max_speed,\n unitFrom: \"km\",\n speed: true,\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"td\", _hoisted_23, [\n _createElementVNode(\"span\", _hoisted_24, _toDisplayString(_ctx.$t('workouts.ASCENT')), 1),\n (workout.ascent !== null)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: workout.ascent,\n unitFrom: \"m\",\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"td\", _hoisted_25, [\n _createElementVNode(\"span\", _hoisted_26, _toDisplayString(_ctx.$t('workouts.DESCENT')), 1),\n (workout.descent !== null)\n ? (_openBlock(), _createBlock(_component_Distance, {\n key: 0,\n distance: workout.descent,\n unitFrom: \"m\",\n useImperialUnits: _unref(user).imperial_units\n }, null, 8, [\"distance\", \"useImperialUnits\"]))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n }), 128))\n ])\n ]),\n _createVNode(Pagination, {\n pagination: _unref(pagination),\n path: \"/workouts\",\n query: _unref(query)\n }, null, 8, [\"pagination\", \"query\"])\n ]))\n : _createCommentVNode(\"\", true)\n ], 2),\n (_unref(workouts).length === 0)\n ? (_openBlock(), _createBlock(NoWorkouts, { key: 0 }))\n : _createCommentVNode(\"\", true),\n _hoisted_27\n ]))\n}\n}\n\n})","import script from \"./WorkoutsList.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutsList.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutsList.vue?vue&type=style&index=0&id=5b391214&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-5b391214\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-57ec0168\"),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\nimport { ComputedRef, computed, 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 { IAuthUserProfile } from '@/types/user'\n import { useStore } from '@/use/useStore'\n import { translateSports } from '@/utils/sports'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'WorkoutsView',\n setup(__props) {\n\n const { t } = useI18n()\n const store = useStore()\n\n const authUser: ComputedRef<IAuthUserProfile> = computed(\n () => store.getters[AUTH_USER_STORE.GETTERS.AUTH_USER_PROFILE]\n )\n const sports: ComputedRef<ISport[]> = computed(\n () => store.getters[SPORTS_STORE.GETTERS.SPORTS]\n )\n const translatedSports: ComputedRef<ITranslatedSport[]> = computed(() =>\n translateSports(sports.value, t)\n )\n const hiddenFilters = ref(true)\n\n function toggleFilters() {\n hiddenFilters.value = !hiddenFilters.value\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(authUser).username)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"filters-container\", { hidden: hiddenFilters.value }])\n }, [\n _createVNode(WorkoutsFilters, {\n sports: _unref(translatedSports),\n authUser: _unref(authUser),\n onFilter: toggleFilters\n }, null, 8, [\"sports\", \"authUser\"])\n ], 2),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", { onClick: toggleFilters }, [\n _createElementVNode(\"i\", {\n class: _normalizeClass(`fa fa-caret-${hiddenFilters.value ? 'down' : 'up'}`),\n \"aria-hidden\": \"true\"\n }, null, 2),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$t(`workouts.${hiddenFilters.value ? 'DISPLAY' : 'HIDE'}_FILTERS`)), 1)\n ])\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n _createVNode(WorkoutsList, {\n user: _unref(authUser),\n sports: _unref(translatedSports)\n }, null, 8, [\"user\", \"sports\"])\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./WorkoutsView.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./WorkoutsView.vue?vue&type=script&setup=true&lang=ts\"\n\nimport \"./WorkoutsView.vue?vue&type=style&index=0&id=57ec0168&lang=scss&scoped=true\"\n\nimport exportComponent from \"/mnt/data-lnx/Devs/00_Perso/FitTrackee/fittrackee_client/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-57ec0168\"]])\n\nexport default __exports__"],"names":["_hoisted_1","id","_hoisted_2","_hoisted_3","class","_hoisted_4","key","_hoisted_5","_hoisted_6","for","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_defineComponent","__name","props","authUser","sports","isCreation","type","Boolean","default","loading","workout","setup","__props","t","useI18n","store","useStore","router","useRouter","toRefs","translatedSports","computed","translateSports","value","sport_id","appConfig","getters","ROOT_STORE","fileSizeLimit","max_single_file_size","getReadableFileSize","gpx_limit_import","zipSizeLimit","max_zip_file_size","errorMessages","workoutForm","reactive","title","notes","workoutDate","workoutTime","workoutDurationHour","workoutDurationMinutes","workoutDurationSeconds","workoutDistance","workoutAscent","workoutDescent","withGpx","ref","with_gpx","gpxFile","formErrors","payloadErrorMessages","updateNotes","updateWithGpx","updateFile","event","target","files","formatWorkoutForm","workoutDateTime","formatWorkoutDate","getDateWithTZ","workout_date","timezone","duration","split","imperial_units","convertDistance","distance","parseFloat","toFixed","workout_time","ascent","descent","isDistanceInvalid","includes","isDurationInvalid","isElevationInvalid","formatPayload","payload","push","updateWorkout","length","commit","dispatch","WORKOUTS_STORE","workoutId","data","errorMessage","file","onCancel","name","params","go","invalidateForm","onMounted","element","document","getElementById","focus","onUnmounted","watch","async","newWorkout","previousWorkout","_ctx","_cache","_component_CustomTextArea","_resolveComponent","_component_ErrorMessage","_component_Loader","_component_Card","_openBlock","_createElementBlock","_normalizeClass","_unref","_createVNode","_withCtx","_createTextVNode","_toDisplayString","$t","content","_createElementVNode","errors","onSubmit","_withModifiers","checked","disabled","onClick","_createCommentVNode","_withDirectives","required","onInvalid","$event","_Fragment","_renderList","sport","translatedLabel","_vModelSelect","accept","onInput","_vModelText","errored","placeholder","minlength","maxlength","pattern","min","step","input","onUpdateValue","_createBlock","message","_","__exports__","SPORTS_STORE","AUTH_USER_STORE","workoutData","WorkoutEdition","route","useRoute","onBeforeMount","newWorkoutId","_withScopeId","n","_pushScopeId","_popScopeId","workoutObject","emits","emit","downloadGpx","authApi","responseType","then","response","gpxFileUrl","window","URL","createObjectURL","Blob","gpxLink","createElement","href","setAttribute","body","appendChild","click","displayDeleteModal","blur","_component_SportImage","_component_router_link","inactive","previousUrl","$router","label","color","segmentId","to","nextUrl","recordType","records","find","record","record_type","directions","convertDegreeToDirection","angle","Math","floor","weather","useImperialUnits","getWindDirectionTitle","windBearing","getWindSpeed","wind","style","_normalizeStyle","transform","weatherStart","weatherEnd","src","icon","alt","getTemperature","temperature","Number","humidity","WeatherWind","displayHARecord","withPause","pauses","_component_Distance","moving","WorkoutRecord","digits","unitFrom","strong","aveSpeed","maxSpeed","speed","maxAlt","minAlt","WorkoutWeather","$","tagName","Array","from","getElementsByTagName","nodeVal","node","normalize","textContent","get1","callback","result","get","properties","val1","val","$num","isNaN","num1","getMulti","propertyNames","property","isElement","nodeType","getLineStyle","lineStyle","Object","assign","stroke","opacity","width","getExtensions","values","child","childNodes","abbreviateName","nodeName","concat","parseNumeric","num","coordPair$1","ll","getAttribute","time","coordinates","extendedValues","extractProperties","extensions","getElementsByTagNameNS","parentNode","replace","links","map","link","getPoints$1","pointname","pts","line","times","i","c","plural","fill","getRoute","_gpxType","geometry","getTrack","segments","track","extractedLines","segment","multi","coordinateProperties","entries","getPoint","pair","gpxGen","feature","waypoint","point","gpx","features","PI","Qe","o","e","keys","on","me","U","cancel","Xe","charAt","toUpperCase","slice","S","a","s","l","L","custom","T","startsWith","toLocaleLowerCase","Ye","Promise","all","Default","prototype","_getIconUrl","mergeOptions","iconRetinaUrl","iconUrl","shadowUrl","R","console","warn","wrapped","ee","b","self","g","global","globalThis","m","Error","j","Symbol","I","oe","K","ve","be","fe","Le","he","ge","Oe","Se","Q","options","X","methods","Z","pane","String","attribution","layerType","visible","Y","r","leafletObject","u","d","setAttribution","y","setName","setLayerType","setVisible","bindPopup","bindTooltip","unbindTooltip","closeTooltip","unbindPopup","closePopup","updateVisibleProp","M","display","je","interactive","bubblingMouseEvents","Ve","ae","weight","lineCap","lineJoin","dashArray","dashOffset","fillColor","fillOpacity","fillRule","className","Ce","setStroke","setStyle","setColor","setWeight","setOpacity","setLineCap","setLineJoin","setDashArray","setDashOffset","setFill","setFillColor","setFillOpacity","setFillRule","setClassName","re","radius","latLng","Pe","setRadius","setLatLng","Be","xe","H","circle","attrs","ready","render","this","$slots","circleMarker","position","V","setPosition","remove","Re","jt","disableClickPropagation","disableScrollPropagation","Control","DomEvent","extend","onAdd","root","Te","prefix","et","setPrefix","we","control","collapsed","autoZIndex","hideSingleBase","sortLayers","sortFunction","Function","tt","addLayer","addBaseLayer","addOverlay","removeLayer","Pt","layers","Ie","maxWidth","metric","imperial","updateWhenIdle","ot","Ae","scale","zoomInText","zoomInTitle","zoomOutText","zoomOutTitle","nt","ne","zoom","le","_e","st","Ge","featureGroup","geojson","optionsStyle","at","hasOwnProperty","call","setGeojson","clearLayers","addData","setOptionsStyle","getGeoJSONData","toGeoJSON","getBounds","It","geoJSON","ie","zIndex","tileSize","noWrap","minZoom","maxZoom","Me","setTileComponent","redraw","off","rt","initialize","tileComponents","_unloadTile","setOptions","createTile","_tileCoordsToKey","create","coords","innerHTML","pe","childRender","GridLayer","DomUtil","Util","A","v","iconSize","iconAnchor","popupAnchor","tooltipAnchor","shadowRetinaUrl","shadowSize","shadowAnchor","bgPos","_t","w","k","N","D","E","F","html","B","setIconUrl","setIconRetinaUrl","setIconSize","setIconAnchor","setPopupAnchor","setTooltipAnchor","setShadowUrl","setShadowRetinaUrl","setShadowAnchor","setBgPos","setHtml","divIcon","MutationObserver","observe","attributes","childList","characterData","subtree","Ne","crossOrigin","errorOverlayUrl","url","bounds","lt","setUrl","setBounds","getElement","bringToFront","bringToBack","setZIndex","Mt","imageOverlay","layerGroup","$e","isImmediate","maxWait","Date","now","arguments","clearTimeout","setTimeout","apply","forEach","resolve","reject","ye","center","maxBounds","paddingBottomRight","paddingTopLeft","padding","worldCopyJump","crs","maxBoundsViscosity","inertia","inertiaDeceleration","inertiaMaxSpeed","easeLinearity","zoomAnimation","zoomAnimationThreshold","fadeAnimation","markerZoomAnimation","noBlockingAnimations","useGlobalLeaflet","Nt","layersToAdd","layersInControl","animate","moveend","leafletRef","getZoom","getCenter","overlayadd","overlayremove","CRS","Icon","latLngBounds","stamp","beforeMapMount","p","error","EPSG3857","W","layerControl","q","filter","P","registerLayerControl","registerControl","addControl","setZoom","setCrs","fitBounds","isValid","lastSetBounds","equals","setCenter","lastSetCenter","lat","lng","panTo","qe","getContainer","height","it","ut","ke","draggable","zIndexOffset","ct","setDraggable","dragging","enable","disable","latLngSync","latlng","getLatLng","dt","slots","some","pt","toString","setIcon","moveHandler","marker","ue","smoothFactor","noClip","latLngs","Ue","setSmoothFactor","setNoClip","addLatLng","te","ze","De","polygon","polyline","Ee","setContent","Fe","yt","mt","Ze","popup","vt","setLatLngs","ce","rectangle","tms","subdomains","validator","isArray","every","detectRetina","He","Et","tileLayer","bt","ft","We","tooltip","styles","format","transparent","version","uppercase","Lt","wms","markerCoordinates","isStart","latitude","LMarker","longitude","LIcon","workoutMap","geoJson","getGeoJson","startMarkerCoordinates","chartData","endMarkerCoordinates","isFullscreen","gpxContent","jsonData","DOMParser","parseFromString","resetZoom","toggleFullscreen","_component_VFullscreen","modelValue","LMap","ref_key","onReady","LControlLayers","LControl","tabindex","role","LTileLayer","getApiUrl","map_attribution","LGeoJson","LLayerGroup","CustomMarker","displaySegment","displayModal","getWorkoutObject","getWorkoutObjectUrl","previous_workout","next_workout","urls","date_format","ave_speed","max_alt","max_speed","min_alt","segment_id","weather_end","weather_start","updateDisplayModal","nextTick","button","cancelDelete","deleteWorkout","scrollToTop","scrollTo","top","behavior","newSegmentId","_component_Modal","onConfirmAction","onCancelAction","onKeydown","_withKeys","WorkoutCardTitle","onDisplayModal","WorkoutMap","WorkoutData","display_ascent","getOrCreateLegendList","legendContainer","listContainer","querySelector","htmlLegendPlugin","afterUpdate","chart","args","ul","containerID","firstChild","legendItems","plugins","legend","labels","generateLabels","item","config","scales","yElevation","datasetIndex","li","onclick","undefined","setDatasetVisibility","isDatasetVisible","update","checkBox","text","hidden","createTextNode","boxSpan","background","fillStyle","borderColor","strokeStyle","displayDistance","beginElevationAtZero","start_elevation_at_zero","datasets","getDatasets","hasElevation","elevation","fromKmUnit","getUnitTo","fromMUnit","distance_labels","duration_labels","JSON","parse","stringify","responsive","maintainAspectRatio","animation","layout","x","grid","drawOnChartArea","ticks","count","formatDuration","ySpeed","beginAtZero","elements","pointStyle","pointRadius","datalabels","interaction","intersect","mode","callbacks","context","dataset","formattedValue","yAxisID","tooltipItems","emitCoordinates","dataIndex","htmlLegend","displayElevation","lineChartProps","useLineChart","updateDisplayDistance","toISOString","substr","emitEmptyCoordinates","units","defaultTarget","LineChart","_mergeProps","onMouseleave","linkifyAndClean","index","workout_id","updateCoordinates","WorkoutDetail","WorkoutChart","onGetCoordinates","WorkoutSegments","WorkoutNotes","NotFound","toUnit","query","handleFilterChange","onFilter","path","onClearFilter","newQuery","$route","onChange","onKeyup","sports_list","distance_from","distance_to","duration_from","duration_to","ave_speed_from","ave_speed_to","max_speed_from","max_speed_to","user","orderByList","workouts","pagination","currentLanguage","getWorkoutsQuery","hoverWorkoutId","loadWorkouts","getConvertedPayload","reloadWorkouts","queryParam","queryValue","workoutQuery","getQuery","defaultOrder","defaultSort","workoutsPayloadKeys","convertedPayload","entry","match","onHover","toLowerCase","total","FilterSelects","sort","sortList","order_by","onUpdateSelect","Pagination","smaller","capitalize","getSportLabel","getSportColor","onMouseover","StaticMap","formatDate","NoWorkouts","hiddenFilters","toggleFilters","username","WorkoutsFilters","WorkoutsList"],"sourceRoot":""}