forked from Ivasoft/geovisio-website
Feat major version viewer
This commit is contained in:
committed by
Andreani Jean
parent
627d9d739f
commit
d493af65c3
@@ -8,7 +8,7 @@
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
"start": "vite --port $PORT",
|
||||
"build": "run-p type-check build-only",
|
||||
"build": "run-p build-only",
|
||||
"preview": "vite preview",
|
||||
"test:unit": "vitest --environment jsdom --root src/",
|
||||
"test:e2e": "yarn cypress run --browser chrome",
|
||||
@@ -25,7 +25,7 @@
|
||||
"axios": "^1.2.3",
|
||||
"bootstrap": "^5.2.3",
|
||||
"bootstrap-icons": "^1.10.3",
|
||||
"geovisio": "2.5.1",
|
||||
"geovisio": "2.5.1-develop-e622a156",
|
||||
"moment": "^2.29.4",
|
||||
"pako": "^2.1.0",
|
||||
"pinia": "^2.1.4",
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
import axios from 'axios'
|
||||
import { onMounted, onUnmounted, ref, computed } from 'vue'
|
||||
import { useSequenceStore } from '@/store/sequence'
|
||||
import { Viewer, StandaloneMap } from 'geovisio'
|
||||
import { createUrlLink } from '@/utils'
|
||||
import { Viewer, StandaloneMap, Editor } from 'geovisio'
|
||||
import { createUrlLink, manageSlashUrl } from '@/utils'
|
||||
import {
|
||||
createLink,
|
||||
createSequenceLink,
|
||||
@@ -18,16 +18,19 @@ import { hasASessionCookieDecoded } from '@/utils/auth'
|
||||
import type { ViewerInterface, MapInterface } from '@/views/interfaces/common'
|
||||
const sequenceStore = useSequenceStore()
|
||||
const { t } = useI18n()
|
||||
const emit = defineEmits<{ (e: 'triggerReady', value: boolean): void }>()
|
||||
let mapIsLoaded = ref<boolean>(false)
|
||||
let viewer = ref()
|
||||
|
||||
const props = defineProps({
|
||||
id: { type: String, default: 'viewer' },
|
||||
fetchOptions: { type: Object, default: {} },
|
||||
geovisioViewer: { type: Boolean, default: true },
|
||||
viewerType: { type: String, default: 'viewer' },
|
||||
bbox: { type: Array, default: null },
|
||||
userId: { type: String, default: '' }
|
||||
picId: { type: String, default: null },
|
||||
seqId: { type: String, default: null },
|
||||
userId: { type: String, default: '' },
|
||||
seqBruteDeg: { type: Number, default: 0 },
|
||||
roadDegrees: { type: Number, default: 0 }
|
||||
})
|
||||
const isLogged = computed((): boolean => {
|
||||
const cookie = hasASessionCookieDecoded()
|
||||
@@ -52,15 +55,15 @@ async function getSequenceId(imgId: string): Promise<{
|
||||
}
|
||||
}
|
||||
function createViewerButton(link: HTMLDivElement): void {
|
||||
link.innerHTML = `<div>${createFullScreenButton()}</div>`
|
||||
link.innerHTML = `<div id='instanceBtn'>${createFullScreenButton()}</div>`
|
||||
viewer.value.addEventListener(
|
||||
'picture-loaded',
|
||||
'psv:picture-loaded',
|
||||
async (e: { detail: { picId: string } }): Promise<void> => {
|
||||
const sequenceInformation = await getSequenceId(e.detail.picId)
|
||||
let href: string
|
||||
if (isLogged.value && sequenceInformation.username === userName.value) {
|
||||
href = `${window.location.origin}/sequence/${sequenceInformation.sequenceId}?currentPic=${e.detail.picId}`
|
||||
link.innerHTML = `<div>
|
||||
link.innerHTML = `<div id='instanceBtn'>
|
||||
${createFullScreenButton()}
|
||||
${createSequenceLink(
|
||||
href,
|
||||
@@ -73,7 +76,7 @@ function createViewerButton(link: HTMLDivElement): void {
|
||||
picId: e.detail.picId,
|
||||
link: createUrlLink(e.detail.picId)
|
||||
})
|
||||
link.innerHTML = `<div>
|
||||
link.innerHTML = `<div id='instanceBtn'>
|
||||
${createFullScreenButton()}
|
||||
${createLink(
|
||||
href,
|
||||
@@ -84,7 +87,7 @@ function createViewerButton(link: HTMLDivElement): void {
|
||||
}
|
||||
)
|
||||
}
|
||||
async function setupViewerMap(tiles: string): Promise<void> {
|
||||
function setupViewer(tiles: string): void {
|
||||
const maxZoom = import.meta.env.VITE_MAX_ZOOM
|
||||
const zoom = import.meta.env.VITE_ZOOM
|
||||
const center = import.meta.env.VITE_CENTER
|
||||
@@ -131,6 +134,12 @@ async function setupViewerMap(tiles: string): Promise<void> {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (props.picId) {
|
||||
paramsViewer = {
|
||||
...paramsViewer,
|
||||
selectedPicture: props.picId
|
||||
}
|
||||
}
|
||||
if (props.fetchOptions) {
|
||||
paramsViewer = {
|
||||
...paramsViewer,
|
||||
@@ -141,7 +150,7 @@ async function setupViewerMap(tiles: string): Promise<void> {
|
||||
reportLink.className = 'gvs-group gvs-group-large gvs-group-btnpanel'
|
||||
viewer.value = new Viewer(
|
||||
'viewer', // Div ID
|
||||
`${import.meta.env.VITE_API_URL}/api/search`,
|
||||
`${manageSlashUrl()}/api/search`,
|
||||
{
|
||||
...paramsViewer,
|
||||
widgets: { customWidget: reportLink }
|
||||
@@ -151,7 +160,7 @@ async function setupViewerMap(tiles: string): Promise<void> {
|
||||
createViewerButton(reportLink)
|
||||
}
|
||||
}
|
||||
async function setupMap(tiles: string): Promise<void> {
|
||||
function setupStandAlone(tiles: string): void {
|
||||
let paramsMap: MapInterface
|
||||
paramsMap = { users: [props.userId], minZoom: 7 }
|
||||
if (tiles && tiles.length) {
|
||||
@@ -163,35 +172,69 @@ async function setupMap(tiles: string): Promise<void> {
|
||||
const bbox = [props.bbox[0], props.bbox[1], props.bbox[2], props.bbox[3]]
|
||||
viewer.value = new StandaloneMap(
|
||||
props.id, // Div ID
|
||||
`${import.meta.env.VITE_API_URL}/api/search`,
|
||||
`${manageSlashUrl()}/api/search`,
|
||||
{
|
||||
...paramsMap,
|
||||
bounds: bbox,
|
||||
padding: { top: 70, bottom: 70, left: 70, right: 70 },
|
||||
maxZoom: 14,
|
||||
speed: 10,
|
||||
zoom: 14
|
||||
}
|
||||
)
|
||||
viewer.value.addEventListener('ready', () => {
|
||||
viewer.value.fitBounds(bbox, {
|
||||
padding: { top: 70, bottom: 70, left: 70, right: 70 },
|
||||
maxZoom: 14,
|
||||
speed: 10
|
||||
})
|
||||
})
|
||||
}
|
||||
function setupEditor(tiles: string): void {
|
||||
const raster = import.meta.env.VITE_RASTER_TILE
|
||||
let paramsMap: MapInterface
|
||||
paramsMap = {
|
||||
users: [props.userId],
|
||||
minZoom: 7,
|
||||
selectedSequence: props.seqId,
|
||||
raster: JSON.parse(raster)
|
||||
}
|
||||
if (tiles && tiles.length) {
|
||||
paramsMap = {
|
||||
...paramsMap,
|
||||
style: tiles
|
||||
}
|
||||
}
|
||||
if (props.picId) {
|
||||
paramsMap = {
|
||||
...paramsMap,
|
||||
selectedPicture: props.picId
|
||||
}
|
||||
}
|
||||
if (props.fetchOptions) {
|
||||
paramsMap = {
|
||||
...paramsMap,
|
||||
...props.fetchOptions
|
||||
}
|
||||
}
|
||||
try {
|
||||
viewer.value = new Editor(
|
||||
'viewer', // Div ID
|
||||
`${manageSlashUrl()}/api/search`,
|
||||
{
|
||||
...paramsMap
|
||||
}
|
||||
)
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
}
|
||||
}
|
||||
onMounted(async (): Promise<void> => {
|
||||
const tiles = import.meta.env.VITE_TILES
|
||||
try {
|
||||
if (props.geovisioViewer) await setupViewerMap(tiles)
|
||||
else await setupMap(tiles)
|
||||
if (props.viewerType === 'standAlone') setupStandAlone(tiles)
|
||||
else if (props.viewerType === 'editor') setupEditor(tiles)
|
||||
else setupViewer(tiles)
|
||||
mapIsLoaded.value = true
|
||||
emit('triggerReady', mapIsLoaded.value)
|
||||
} catch (err) {
|
||||
mapIsLoaded.value = true
|
||||
console.log(err)
|
||||
}
|
||||
})
|
||||
onUnmounted((): void => {
|
||||
if (viewer.value && props.geovisioViewer) viewer.value.destroy()
|
||||
if (viewer.value && props.viewerType) viewer.value.destroy()
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
:road-degrees="roadDegrees"
|
||||
:seq-brute-deg="angleValue"
|
||||
@triggerAngle="captureAngle"
|
||||
@triggerMovingAngle="triggerMovingAngle"
|
||||
/>
|
||||
</div>
|
||||
<div class="entry-button">
|
||||
@@ -54,8 +55,10 @@ import InformationCard from '@/components/InformationCard.vue'
|
||||
import Button from '@/components/Button.vue'
|
||||
import Input from '@/components/Input.vue'
|
||||
import WidgetOrientation from '@/components/sequence/WidgetOrientation.vue'
|
||||
import { modulo180 } from '@/utils/calc'
|
||||
const emit = defineEmits<{
|
||||
(e: 'triggerAngle', value: number): void
|
||||
(e: 'triggerMovingAngle', value: number): void
|
||||
}>()
|
||||
let angleValue = ref<number>(0)
|
||||
let angleInputValue = ref<number>(0)
|
||||
@@ -77,8 +80,13 @@ function captureAngle(value: number | string) {
|
||||
const valueNum = Number(value)
|
||||
angleInputValue.value = valueNum
|
||||
angleValue.value = valueNum + props.roadDegrees
|
||||
const movingAngle = modulo180(angleValue.value, Math.round(props.roadDegrees))
|
||||
emit('triggerMovingAngle', movingAngle)
|
||||
if (isDisabled(valueNum)) return (errorAngleValue.value = true)
|
||||
}
|
||||
function triggerMovingAngle(value: number) {
|
||||
emit('triggerMovingAngle', value)
|
||||
}
|
||||
function triggerAngle() {
|
||||
const valueToSend = angleValue.value - Number(props.roadDegrees)
|
||||
if (isDisabled(valueToSend)) return
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { onMounted, ref, watchEffect } from 'vue'
|
||||
import { modulo180 } from '@/utils/calc'
|
||||
let angleValue = ref<number>(0)
|
||||
let angle = ref<number>(0)
|
||||
let prevRotation = ref<number>(0)
|
||||
@@ -60,6 +61,7 @@ let center: { x: number; y: number } = { x: 0, y: 0 }
|
||||
const R2D: number = 180 / Math.PI
|
||||
const emit = defineEmits<{
|
||||
(e: 'triggerAngle', value: number): void
|
||||
(e: 'triggerMovingAngle', value: number): void
|
||||
}>()
|
||||
const props = defineProps({
|
||||
roadDegrees: { type: Number, default: 0 },
|
||||
@@ -102,6 +104,7 @@ function mouseup(): void {
|
||||
prevRotation.value = rotation.value
|
||||
angleValue.value = angle.value
|
||||
if (angleValue.value !== 0) {
|
||||
emit('triggerMovingAngle', modulo180(angle.value, props.roadDegrees))
|
||||
emit('triggerAngle', modulo180(angle.value, props.roadDegrees))
|
||||
}
|
||||
}
|
||||
@@ -115,13 +118,6 @@ function clickAndMove(value: number): void {
|
||||
let closestMultiple = Math.ceil(moduloAngle / 45) * value
|
||||
return emit('triggerAngle', closestMultiple)
|
||||
}
|
||||
|
||||
function modulo180(value: number, roadDegrees: number): number {
|
||||
let moduloAngle = (value - roadDegrees) % 360
|
||||
if (moduloAngle < -180) moduloAngle += 360
|
||||
if (moduloAngle > 180) moduloAngle -= 360
|
||||
return Math.round(moduloAngle)
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
@@ -4,6 +4,7 @@ import HeaderOpen from '../../../../components/header/HeaderOpen.vue'
|
||||
import i18n from '../../config'
|
||||
import { createRouter, createWebHistory } from 'vue-router/dist/vue-router'
|
||||
vi.mock('vue-router')
|
||||
import.meta.env.VITE_API_URL = 'api-url/'
|
||||
|
||||
const router = createRouter({
|
||||
history: createWebHistory(),
|
||||
@@ -53,7 +54,6 @@ describe('Template', () => {
|
||||
})
|
||||
})
|
||||
it('should render all the commons entries', () => {
|
||||
import.meta.env.VITE_API_URL = 'api-url/'
|
||||
const wrapper = shallowMount(HeaderOpen, {
|
||||
global: {
|
||||
plugins: [i18n, router]
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
import pako from 'pako'
|
||||
import { useCookies } from 'vue3-cookies'
|
||||
import { manageSlashUrl } from '@/utils'
|
||||
const { cookies } = useCookies()
|
||||
|
||||
function getAuthRoute(authRoute: string, nextRoute: string): string {
|
||||
const next = `${location.protocol}//${location.host}${nextRoute}`
|
||||
return `${
|
||||
import.meta.env.VITE_API_URL
|
||||
}api/${authRoute}?next_url=${encodeURIComponent(`${next}`)}`
|
||||
return `${manageSlashUrl()}api/${authRoute}?next_url=${encodeURIComponent(
|
||||
`${next}`
|
||||
)}`
|
||||
}
|
||||
|
||||
// This function to decode the flask cookie and have the user information like username
|
||||
|
||||
8
src/utils/calc.ts
Normal file
8
src/utils/calc.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
function modulo180(value: number, roadDegrees: number): number {
|
||||
let moduloAngle = (value - roadDegrees) % 360
|
||||
if (moduloAngle < -180) moduloAngle += 360
|
||||
if (moduloAngle > 180) moduloAngle -= 360
|
||||
return Math.round(moduloAngle)
|
||||
}
|
||||
|
||||
export { modulo180 }
|
||||
@@ -1,3 +1,11 @@
|
||||
export function createUrlLink(picId: string): string {
|
||||
function createUrlLink(picId: string): string {
|
||||
return encodeURIComponent(`${window.location.origin}/#focus=pic&pic=${picId}`)
|
||||
}
|
||||
|
||||
function manageSlashUrl(): string {
|
||||
let apiUrl = import.meta.env.VITE_API_URL
|
||||
if (apiUrl.charAt(apiUrl.length - 1) !== '/') apiUrl += '/'
|
||||
return apiUrl
|
||||
}
|
||||
|
||||
export { createUrlLink, manageSlashUrl }
|
||||
|
||||
@@ -6,9 +6,10 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { computed } from 'vue'
|
||||
import { manageSlashUrl } from '@/utils'
|
||||
|
||||
const myAccountUrl = computed<string>(
|
||||
() => `${import.meta.env.VITE_API_URL}oauth/realms/geovisio/account`
|
||||
() => `${manageSlashUrl()}oauth/realms/geovisio/account`
|
||||
)
|
||||
</script>
|
||||
|
||||
|
||||
@@ -7,9 +7,15 @@
|
||||
@trigger="menuIsOpen = !menuIsOpen"
|
||||
/>
|
||||
</div>
|
||||
<section class="entry-viewer">
|
||||
<section v-if="sequence" class="entry-viewer">
|
||||
<Viewer
|
||||
:key="viewerType"
|
||||
:fetch-options="{ fetchOptions: { credentials: 'include' } }"
|
||||
:pic-id="pictures[0].id"
|
||||
:seq-id="sequence.id"
|
||||
:viewer-type="viewerType"
|
||||
:seq-brute-deg="seqBruteDeg"
|
||||
:road-degrees="seqDegrees"
|
||||
ref="viewerRef"
|
||||
/>
|
||||
</section>
|
||||
@@ -162,6 +168,7 @@
|
||||
:seq-brute-deg="seqBruteDeg"
|
||||
:is-loading="isLoadingOrient"
|
||||
@triggerAngle="orientSequence"
|
||||
@triggerMovingAngle="orientMovingSequence"
|
||||
/>
|
||||
</div>
|
||||
<div v-if="panelView === 'sort' && isSequenceOwner" class="entry-panel">
|
||||
@@ -179,7 +186,7 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { onMounted, ref, watchEffect, computed } from 'vue'
|
||||
import { onMounted, ref, watchEffect, nextTick, computed } from 'vue'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { useSequenceStore } from '@/store/sequence'
|
||||
@@ -241,6 +248,7 @@ let isLoadingSort = ref<boolean>(false)
|
||||
let seqDegrees = ref<number>(0)
|
||||
let seqBruteDeg = ref<number>(0)
|
||||
let panelView = ref<string>('photos')
|
||||
let viewerType = ref<string>('viewer')
|
||||
const collapseMenu = ref<HTMLDivElement>()
|
||||
const deleteAll = ref<HTMLDivElement>()
|
||||
const menuHeight = ref<string>('0')
|
||||
@@ -268,22 +276,11 @@ onMounted(async () => {
|
||||
if (itemSelected.value.length || !getCurrentPicId(collItemsReady[0].id)) {
|
||||
return
|
||||
}
|
||||
await nextTick()
|
||||
if (!viewerRef.value) return
|
||||
viewerRef.value.viewer.addEventListener('picture-loaded', (): void => {
|
||||
if (!viewerRef.value) return
|
||||
const seqRelativeDeg = viewerRef.value.viewer.getPictureRelativeHeading()
|
||||
seqBruteDeg.value =
|
||||
viewerRef.value.viewer.getPictureMetadata().properties['view:azimuth']
|
||||
seqDegrees.value = seqBruteDeg.value - seqRelativeDeg
|
||||
})
|
||||
if (!viewerRef.value) return
|
||||
viewerRef.value.viewer._api.onceReady().then(() => {
|
||||
if (!sequence.value || !viewerRef.value) return
|
||||
viewerRef.value.viewer.goToPicture(
|
||||
getCurrentPicId(collItemsReady[0].id),
|
||||
sequence.value.id
|
||||
)
|
||||
})
|
||||
const viewerMap = viewerRef.value.viewer
|
||||
await viewerMap._api.onceReady()
|
||||
if (sequence.value) viewerMap.select(sequence.value.id, itemSelected.value)
|
||||
await goToThePageAndScroll()
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
@@ -296,7 +293,7 @@ watchEffect(() => {
|
||||
async function goToThePageAndScroll() {
|
||||
if (!viewerRef || !viewerRef.value || !viewerRef.value.viewer) return
|
||||
viewerRef.value.viewer.addEventListener(
|
||||
'picture-loaded',
|
||||
'psv:picture-loaded',
|
||||
async (e: { detail: { picId: string } }): Promise<void> => {
|
||||
if (!pictureExistInList(getCurrentPicId(e.detail.picId))) {
|
||||
await goToTheGoodPage(getCurrentPicId(e.detail.picId))
|
||||
@@ -311,8 +308,17 @@ async function goToThePageAndScroll() {
|
||||
}
|
||||
function setPanelView(value: string): void {
|
||||
panelView.value = value
|
||||
if (value === 'orientation') window.location.hash = '#background=aerial'
|
||||
else window.location.hash = '#background=streets'
|
||||
if (value === 'orientation') {
|
||||
viewerType.value = 'editor'
|
||||
setSeqDegrees()
|
||||
} else viewerType.value = 'viewer'
|
||||
}
|
||||
function setSeqDegrees(): void {
|
||||
if (!viewerRef.value) return
|
||||
const seqRelativeDeg = viewerRef.value.viewer.psv.getPictureRelativeHeading()
|
||||
seqBruteDeg.value =
|
||||
viewerRef.value.viewer.psv.getPictureMetadata().properties['view:azimuth']
|
||||
seqDegrees.value = seqBruteDeg.value - seqRelativeDeg
|
||||
}
|
||||
async function setNewSequenceTitle(value: string | null): Promise<void> {
|
||||
isLoadingTitle.value = true
|
||||
@@ -435,7 +441,7 @@ async function patchCollection(): Promise<void> {
|
||||
const { data } = await fetchCollectionItems(route.params.id, '?limit=100')
|
||||
pictures.value = data.features
|
||||
}
|
||||
if (viewerRef.value) viewerRef.value.viewer.reloadVectorTiles()
|
||||
if (viewerRef.value) viewerRef.value.viewer.map.reloadVectorTiles()
|
||||
isLoading.value = false
|
||||
}
|
||||
async function goToNextPage(value: string): Promise<void> {
|
||||
@@ -459,6 +465,11 @@ function triggerCheck(value: CheckboxInterface): void {
|
||||
.map((e) => e.id)
|
||||
} else picturesToDelete.value = []
|
||||
}
|
||||
|
||||
function orientMovingSequence(value: number): void {
|
||||
if (!viewerRef.value) return
|
||||
viewerRef.value.viewer.previewSequenceHeadingChange(value)
|
||||
}
|
||||
async function orientSequence(value: number): Promise<void> {
|
||||
isLoadingOrient.value = true
|
||||
const { data }: { data: ResponseUserSequenceInterface } =
|
||||
@@ -466,7 +477,6 @@ async function orientSequence(value: number): Promise<void> {
|
||||
relative_heading: value
|
||||
})
|
||||
formatSequenceFetched(data)
|
||||
if (viewerRef.value) viewerRef.value.viewer.clearPictureMetadataCache()
|
||||
sequenceStore.addToastText(t('pages.sequence.orientation_updated'), 'success')
|
||||
isLoadingOrient.value = false
|
||||
}
|
||||
@@ -528,9 +538,9 @@ async function selectImageAndMove(
|
||||
picturesToDelete.value.length < 2 &&
|
||||
item.properties['geovisio:status'] === 'ready'
|
||||
) {
|
||||
if (viewerRef.value) {
|
||||
const viewerMap = await viewerRef.value.viewer
|
||||
viewerMap.goToPicture(item.id, sequence.value?.id)
|
||||
if (viewerRef.value && sequence.value) {
|
||||
const viewerMap = viewerRef.value.viewer
|
||||
viewerMap.select(sequence.value.id, item.id)
|
||||
}
|
||||
itemSelected.value = item.id
|
||||
await goToTheGoodPage(item.id)
|
||||
@@ -575,8 +585,8 @@ async function patchOrDeleteCollectionItems(reqType: string): Promise<void> {
|
||||
pictures.value = data.features
|
||||
isLoading.value = false
|
||||
if (viewerRef.value) {
|
||||
viewerRef.value.viewer.reloadVectorTiles()
|
||||
viewerRef.value.viewer.goToPicture(pictures.value[0].id, route.params.id)
|
||||
viewerRef.value.viewer.map.reloadVectorTiles()
|
||||
viewerRef.value.viewer.select(pictures.value[0].id, route.params.id)
|
||||
}
|
||||
scrollIntoSelected(
|
||||
picturesToDelete.value[0],
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
credentials: 'include'
|
||||
}
|
||||
}"
|
||||
:geovisio-viewer="false"
|
||||
viewer-type="standAlone"
|
||||
:user-id="getUserId"
|
||||
:bbox="collectionBbox"
|
||||
ref="viewerRef"
|
||||
@@ -372,10 +372,10 @@ function triggerBboxFilter(): void {
|
||||
if (viewerRef.value) {
|
||||
isLoading.value = true
|
||||
const currentBbox = [
|
||||
viewerRef.value.viewer._map.getBounds()._ne.lng,
|
||||
viewerRef.value.viewer._map.getBounds()._ne.lat,
|
||||
viewerRef.value.viewer._map.getBounds()._sw.lng,
|
||||
viewerRef.value.viewer._map.getBounds()._sw.lat
|
||||
viewerRef.value.viewer.map.getBounds()._ne.lng,
|
||||
viewerRef.value.viewer.map.getBounds()._ne.lat,
|
||||
viewerRef.value.viewer.map.getBounds()._sw.lng,
|
||||
viewerRef.value.viewer.map.getBounds()._sw.lat
|
||||
]
|
||||
filterBbox.value = currentBbox
|
||||
formatUri()
|
||||
@@ -414,7 +414,7 @@ async function patchCollection(sequence: SequenceLinkInterface): Promise<void> {
|
||||
else visible = 'true'
|
||||
await patchACollection(sequence.id, { visible: visible })
|
||||
await fetchAndFormatSequence()
|
||||
if (viewerRef.value) viewerRef.value.viewer.reloadVectorTiles()
|
||||
if (viewerRef.value) viewerRef.value.viewer.map.reloadVectorTiles()
|
||||
isLoading.value = false
|
||||
}
|
||||
async function deleteCollection(
|
||||
@@ -424,7 +424,7 @@ async function deleteCollection(
|
||||
if (confirm(t('pages.sequence.conf_sequence_msg'))) {
|
||||
await deleteACollection(sequence.id)
|
||||
await fetchAndFormatSequence()
|
||||
if (viewerRef.value) viewerRef.value.viewer.reloadVectorTiles()
|
||||
if (viewerRef.value) viewerRef.value.viewer.map.reloadVectorTiles()
|
||||
}
|
||||
isLoading.value = false
|
||||
}
|
||||
@@ -490,10 +490,10 @@ function bboxIsInsideOther(mainBbox: number[], bboxInside: number[]): boolean {
|
||||
function goToSequence(sequence: SequenceLinkInterface): void {
|
||||
if (!viewerRef.value) return
|
||||
const currentBbox = [
|
||||
viewerRef.value.viewer._map.getBounds()._ne.lng,
|
||||
viewerRef.value.viewer._map.getBounds()._ne.lat,
|
||||
viewerRef.value.viewer._map.getBounds()._sw.lng,
|
||||
viewerRef.value.viewer._map.getBounds()._sw.lat
|
||||
viewerRef.value.viewer.map.getBounds()._ne.lng,
|
||||
viewerRef.value.viewer.map.getBounds()._ne.lat,
|
||||
viewerRef.value.viewer.map.getBounds()._sw.lng,
|
||||
viewerRef.value.viewer.map.getBounds()._sw.lat
|
||||
]
|
||||
if (
|
||||
seqId.value === sequence.id &&
|
||||
@@ -503,7 +503,7 @@ function goToSequence(sequence: SequenceLinkInterface): void {
|
||||
}
|
||||
seqId.value = sequence.id
|
||||
viewerRef.value.viewer.select(seqId.value)
|
||||
viewerRef.value.viewer._map.flyTo({
|
||||
viewerRef.value.viewer.map.flyTo({
|
||||
center: [
|
||||
sequence.extent.spatial.bbox[0][0],
|
||||
sequence.extent.spatial.bbox[0][1]
|
||||
@@ -597,20 +597,17 @@ async function updateFilters(value: {
|
||||
await updateSequence(uri.value)
|
||||
}
|
||||
watchEffect(() => {
|
||||
if (viewerRef.value && viewerRef.value.viewer) {
|
||||
viewerRef.value.viewer.addEventListener(
|
||||
'select',
|
||||
(e: { detail: { seqId: string } }) => {
|
||||
if (seqId.value === e.detail.seqId) return
|
||||
seqId.value = e.detail.seqId
|
||||
scrollIntoSelected(
|
||||
e.detail.seqId,
|
||||
userSequences.value.map((e) => e.id)
|
||||
)
|
||||
if (viewerRef.value) viewerRef.value.viewer.select(e.detail.seqId)
|
||||
}
|
||||
if (!viewerRef || !viewerRef.value) return
|
||||
const viewerMap = viewerRef.value.viewer
|
||||
viewerMap.addEventListener('select', (e: { detail: { seqId: string } }) => {
|
||||
if (seqId.value === e.detail.seqId) return
|
||||
seqId.value = e.detail.seqId
|
||||
scrollIntoSelected(
|
||||
e.detail.seqId,
|
||||
userSequences.value.map((e) => e.id)
|
||||
)
|
||||
}
|
||||
viewerMap.select(e.detail.seqId)
|
||||
})
|
||||
})
|
||||
</script>
|
||||
<style lang="scss">
|
||||
|
||||
@@ -166,13 +166,12 @@ import License from '@/components/License.vue'
|
||||
import { computed } from 'vue'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import authConfig from '../composables/auth'
|
||||
import { manageSlashUrl } from '@/utils'
|
||||
const { t } = useI18n()
|
||||
const { authConf } = authConfig()
|
||||
|
||||
const apiUrl = computed((): string =>
|
||||
import.meta.env.VITE_API_URL
|
||||
? import.meta.env.VITE_API_URL
|
||||
: 'https://panoramax.ign.fr/'
|
||||
import.meta.env.VITE_API_URL ? manageSlashUrl() : 'https://panoramax.ign.fr/'
|
||||
)
|
||||
|
||||
const formatTextInfoCard = computed((): string => {
|
||||
|
||||
@@ -2,6 +2,8 @@ export interface MapInterface {
|
||||
startWide?: boolean
|
||||
users?: string[]
|
||||
maxZoom?: number
|
||||
selectedSequence?: string
|
||||
selectedPicture?: string
|
||||
minZoom?: number
|
||||
style?: object | string
|
||||
zoom?: number
|
||||
@@ -20,7 +22,7 @@ export interface ViewerInterface {
|
||||
credentials: string
|
||||
}
|
||||
hash?: boolean
|
||||
picId?: string
|
||||
selectedPicture?: string
|
||||
widgets?: {
|
||||
customWidget: HTMLAnchorElement
|
||||
}
|
||||
|
||||
278
yarn.lock
278
yarn.lock
@@ -33,22 +33,22 @@
|
||||
picocolors "^1.0.0"
|
||||
|
||||
"@babel/compat-data@^7.23.5":
|
||||
version "7.24.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a"
|
||||
integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==
|
||||
version "7.24.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.1.tgz#31c1f66435f2a9c329bb5716a6d6186c516c3742"
|
||||
integrity sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA==
|
||||
|
||||
"@babel/core@^7.11.6", "@babel/core@^7.12.16", "@babel/core@^7.12.3", "@babel/core@^7.18.10", "@babel/core@^7.23.9":
|
||||
version "7.24.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.4.tgz#1f758428e88e0d8c563874741bc4ffc4f71a4717"
|
||||
integrity sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==
|
||||
version "7.24.3"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.3.tgz#568864247ea10fbd4eff04dda1e05f9e2ea985c3"
|
||||
integrity sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==
|
||||
dependencies:
|
||||
"@ampproject/remapping" "^2.2.0"
|
||||
"@babel/code-frame" "^7.24.2"
|
||||
"@babel/generator" "^7.24.4"
|
||||
"@babel/generator" "^7.24.1"
|
||||
"@babel/helper-compilation-targets" "^7.23.6"
|
||||
"@babel/helper-module-transforms" "^7.23.3"
|
||||
"@babel/helpers" "^7.24.4"
|
||||
"@babel/parser" "^7.24.4"
|
||||
"@babel/helpers" "^7.24.1"
|
||||
"@babel/parser" "^7.24.1"
|
||||
"@babel/template" "^7.24.0"
|
||||
"@babel/traverse" "^7.24.1"
|
||||
"@babel/types" "^7.24.0"
|
||||
@@ -58,10 +58,10 @@
|
||||
json5 "^2.2.3"
|
||||
semver "^6.3.1"
|
||||
|
||||
"@babel/generator@^7.18.10", "@babel/generator@^7.24.1", "@babel/generator@^7.24.4", "@babel/generator@^7.7.2":
|
||||
version "7.24.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.4.tgz#1fc55532b88adf952025d5d2d1e71f946cb1c498"
|
||||
integrity sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==
|
||||
"@babel/generator@^7.18.10", "@babel/generator@^7.24.1", "@babel/generator@^7.7.2":
|
||||
version "7.24.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.1.tgz#e67e06f68568a4ebf194d1c6014235344f0476d0"
|
||||
integrity sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==
|
||||
dependencies:
|
||||
"@babel/types" "^7.24.0"
|
||||
"@jridgewell/gen-mapping" "^0.3.5"
|
||||
@@ -151,10 +151,10 @@
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307"
|
||||
integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==
|
||||
|
||||
"@babel/helpers@^7.24.4":
|
||||
version "7.24.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.4.tgz#dc00907fd0d95da74563c142ef4cd21f2cb856b6"
|
||||
integrity sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==
|
||||
"@babel/helpers@^7.24.1":
|
||||
version "7.24.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.1.tgz#183e44714b9eba36c3038e442516587b1e0a1a94"
|
||||
integrity sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==
|
||||
dependencies:
|
||||
"@babel/template" "^7.24.0"
|
||||
"@babel/traverse" "^7.24.1"
|
||||
@@ -170,10 +170,10 @@
|
||||
js-tokens "^4.0.0"
|
||||
picocolors "^1.0.0"
|
||||
|
||||
"@babel/parser@^7.1.0", "@babel/parser@^7.10.5", "@babel/parser@^7.14.7", "@babel/parser@^7.18.11", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.24.0", "@babel/parser@^7.24.1", "@babel/parser@^7.24.4":
|
||||
version "7.24.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.4.tgz#234487a110d89ad5a3ed4a8a566c36b9453e8c88"
|
||||
integrity sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==
|
||||
"@babel/parser@^7.1.0", "@babel/parser@^7.10.5", "@babel/parser@^7.14.7", "@babel/parser@^7.18.11", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.24.0", "@babel/parser@^7.24.1":
|
||||
version "7.24.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.1.tgz#1e416d3627393fab1cb5b0f2f1796a100ae9133a"
|
||||
integrity sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==
|
||||
|
||||
"@babel/plugin-syntax-async-generators@^7.8.4":
|
||||
version "7.8.4"
|
||||
@@ -274,9 +274,9 @@
|
||||
"@babel/helper-plugin-utils" "^7.24.0"
|
||||
|
||||
"@babel/runtime@^7.21.0":
|
||||
version "7.24.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.4.tgz#de795accd698007a66ba44add6cc86542aff1edd"
|
||||
integrity sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==
|
||||
version "7.24.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.1.tgz#431f9a794d173b53720e69a6464abc6f0e2a5c57"
|
||||
integrity sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==
|
||||
dependencies:
|
||||
regenerator-runtime "^0.14.0"
|
||||
|
||||
@@ -994,9 +994,9 @@
|
||||
picomatch "^2.2.2"
|
||||
|
||||
"@rushstack/eslint-patch@^1.1.4":
|
||||
version "1.10.2"
|
||||
resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.2.tgz#053f1540703faa81dea2966b768ee5581c66aeda"
|
||||
integrity sha512-hw437iINopmQuxWPSUEvqE56NCPsiU8N4AYtfHmJFckclktzK9YQJieD3XkDCDH4OjL+C7zgPUh73R/nrcHrqw==
|
||||
version "1.10.1"
|
||||
resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.1.tgz#7ca168b6937818e9a74b47ac4e2112b2e1a024cf"
|
||||
integrity sha512-S3Kq8e7LqxkA9s7HKLqXGTGck1uwis5vAXan3FnU5yw1Ec5hsSGnq4s/UCaSqABPOnOTg7zASLyst7+ohgWexg==
|
||||
|
||||
"@sideway/address@^4.1.5":
|
||||
version "4.1.5"
|
||||
@@ -1100,9 +1100,9 @@
|
||||
"@types/estree" "*"
|
||||
|
||||
"@types/eslint@*", "@types/eslint@^8.4.5":
|
||||
version "8.56.9"
|
||||
resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.9.tgz#403e9ced04a34e63f1c383c5b8ee1a94442c8cc4"
|
||||
integrity sha512-W4W3KcqzjJ0sHg2vAq9vfml6OhsJ53TcUjUqfzzZf/EChUtwspszj/S0pzMxnfRcO55/iGq47dscXw71Fxc4Zg==
|
||||
version "8.56.7"
|
||||
resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.7.tgz#c33b5b5a9cfb66881beb7b5be6c34aa3e81d3366"
|
||||
integrity sha512-SjDvI/x3zsZnOkYZ3lCt9lOZWZLB2jIlNKz+LBgCtDurK0JZcwucxYHn1w2BJkD34dgX9Tjnak0txtq4WTggEA==
|
||||
dependencies:
|
||||
"@types/estree" "*"
|
||||
"@types/json-schema" "*"
|
||||
@@ -1214,16 +1214,16 @@
|
||||
integrity sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==
|
||||
|
||||
"@types/node@*":
|
||||
version "20.12.7"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.7.tgz#04080362fa3dd6c5822061aa3124f5c152cff384"
|
||||
integrity sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==
|
||||
version "20.12.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.3.tgz#d6658c2c7776c1cad93534bb45428195ed840c65"
|
||||
integrity sha512-sD+ia2ubTeWrOu+YMF+MTAB7E+O7qsMqAbMfW7DG3K1URwhZ5hN1pLlRVGbf4wDFzSfikL05M17EyorS86jShw==
|
||||
dependencies:
|
||||
undici-types "~5.26.4"
|
||||
|
||||
"@types/node@^18.11.18":
|
||||
version "18.19.31"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.31.tgz#b7d4a00f7cb826b60a543cebdbda5d189aaecdcd"
|
||||
integrity sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA==
|
||||
version "18.19.29"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.29.tgz#e7e9d796c1e195be7e7daf82b4abc50d017fb9db"
|
||||
integrity sha512-5pAX7ggTmWZdhUrhRWLPf+5oM7F80bcKVCBbr0zwEkTNzTJL2CWQjznpFgHYy6GrzkYi2Yjy7DHKoynFxqPV8g==
|
||||
dependencies:
|
||||
undici-types "~5.26.4"
|
||||
|
||||
@@ -1472,47 +1472,47 @@
|
||||
semver "^7.3.4"
|
||||
strip-ansi "^6.0.0"
|
||||
|
||||
"@vue/compiler-core@3.4.23":
|
||||
version "3.4.23"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.4.23.tgz#a08f5998e391ad75e602a66dd7255af9054df2f3"
|
||||
integrity sha512-HAFmuVEwNqNdmk+w4VCQ2pkLk1Vw4XYiiyxEp3z/xvl14aLTUBw2OfVH3vBcx+FtGsynQLkkhK410Nah1N2yyQ==
|
||||
"@vue/compiler-core@3.4.21":
|
||||
version "3.4.21"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.4.21.tgz#868b7085378fc24e58c9aed14c8d62110a62be1a"
|
||||
integrity sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==
|
||||
dependencies:
|
||||
"@babel/parser" "^7.24.1"
|
||||
"@vue/shared" "3.4.23"
|
||||
"@babel/parser" "^7.23.9"
|
||||
"@vue/shared" "3.4.21"
|
||||
entities "^4.5.0"
|
||||
estree-walker "^2.0.2"
|
||||
source-map-js "^1.2.0"
|
||||
source-map-js "^1.0.2"
|
||||
|
||||
"@vue/compiler-dom@3.4.23", "@vue/compiler-dom@^3.3.0":
|
||||
version "3.4.23"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.4.23.tgz#6fa622d1e5c8508551564c5dc5948e9cddf60867"
|
||||
integrity sha512-t0b9WSTnCRrzsBGrDd1LNR5HGzYTr7LX3z6nNBG+KGvZLqrT0mY6NsMzOqlVMBKKXKVuusbbB5aOOFgTY+senw==
|
||||
"@vue/compiler-dom@3.4.21", "@vue/compiler-dom@^3.3.0":
|
||||
version "3.4.21"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.4.21.tgz#0077c355e2008207283a5a87d510330d22546803"
|
||||
integrity sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==
|
||||
dependencies:
|
||||
"@vue/compiler-core" "3.4.23"
|
||||
"@vue/shared" "3.4.23"
|
||||
"@vue/compiler-core" "3.4.21"
|
||||
"@vue/shared" "3.4.21"
|
||||
|
||||
"@vue/compiler-sfc@3.4.23", "@vue/compiler-sfc@^3.2.37":
|
||||
version "3.4.23"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.4.23.tgz#7041517b9bbd1b304f0db33bfa424e9a899fda8d"
|
||||
integrity sha512-fSDTKTfzaRX1kNAUiaj8JB4AokikzStWgHooMhaxyjZerw624L+IAP/fvI4ZwMpwIh8f08PVzEnu4rg8/Npssw==
|
||||
"@vue/compiler-sfc@3.4.21", "@vue/compiler-sfc@^3.2.37":
|
||||
version "3.4.21"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.4.21.tgz#4af920dc31ab99e1ff5d152b5fe0ad12181145b2"
|
||||
integrity sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==
|
||||
dependencies:
|
||||
"@babel/parser" "^7.24.1"
|
||||
"@vue/compiler-core" "3.4.23"
|
||||
"@vue/compiler-dom" "3.4.23"
|
||||
"@vue/compiler-ssr" "3.4.23"
|
||||
"@vue/shared" "3.4.23"
|
||||
"@babel/parser" "^7.23.9"
|
||||
"@vue/compiler-core" "3.4.21"
|
||||
"@vue/compiler-dom" "3.4.21"
|
||||
"@vue/compiler-ssr" "3.4.21"
|
||||
"@vue/shared" "3.4.21"
|
||||
estree-walker "^2.0.2"
|
||||
magic-string "^0.30.8"
|
||||
postcss "^8.4.38"
|
||||
source-map-js "^1.2.0"
|
||||
magic-string "^0.30.7"
|
||||
postcss "^8.4.35"
|
||||
source-map-js "^1.0.2"
|
||||
|
||||
"@vue/compiler-ssr@3.4.23":
|
||||
version "3.4.23"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.4.23.tgz#1ae4afe962a9e156b1a79eff909c37cd423dd4c2"
|
||||
integrity sha512-hb6Uj2cYs+tfqz71Wj6h3E5t6OKvb4MVcM2Nl5i/z1nv1gjEhw+zYaNOV+Xwn+SSN/VZM0DgANw5TuJfxfezPg==
|
||||
"@vue/compiler-ssr@3.4.21":
|
||||
version "3.4.21"
|
||||
resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.4.21.tgz#b84ae64fb9c265df21fc67f7624587673d324fef"
|
||||
integrity sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==
|
||||
dependencies:
|
||||
"@vue/compiler-dom" "3.4.23"
|
||||
"@vue/shared" "3.4.23"
|
||||
"@vue/compiler-dom" "3.4.21"
|
||||
"@vue/shared" "3.4.21"
|
||||
|
||||
"@vue/devtools-api@^6.2.1", "@vue/devtools-api@^6.5.0", "@vue/devtools-api@^6.5.1":
|
||||
version "6.6.1"
|
||||
@@ -1551,42 +1551,42 @@
|
||||
path-browserify "^1.0.1"
|
||||
vue-template-compiler "^2.7.14"
|
||||
|
||||
"@vue/reactivity@3.4.23":
|
||||
version "3.4.23"
|
||||
resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.4.23.tgz#f29044a90a24994af075e4368790f31fa29ed747"
|
||||
integrity sha512-GlXR9PL+23fQ3IqnbSQ8OQKLodjqCyoCrmdLKZk3BP7jN6prWheAfU7a3mrltewTkoBm+N7qMEb372VHIkQRMQ==
|
||||
"@vue/reactivity@3.4.21":
|
||||
version "3.4.21"
|
||||
resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.4.21.tgz#affd3415115b8ebf4927c8d2a0d6a24bccfa9f02"
|
||||
integrity sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==
|
||||
dependencies:
|
||||
"@vue/shared" "3.4.23"
|
||||
"@vue/shared" "3.4.21"
|
||||
|
||||
"@vue/runtime-core@3.4.23":
|
||||
version "3.4.23"
|
||||
resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.4.23.tgz#21f6c7153c33f56081145c2819c2f194cbe3eb22"
|
||||
integrity sha512-FeQ9MZEXoFzFkFiw9MQQ/FWs3srvrP+SjDKSeRIiQHIhtkzoj0X4rWQlRNHbGuSwLra6pMyjAttwixNMjc/xLw==
|
||||
"@vue/runtime-core@3.4.21":
|
||||
version "3.4.21"
|
||||
resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.4.21.tgz#3749c3f024a64c4c27ecd75aea4ca35634db0062"
|
||||
integrity sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA==
|
||||
dependencies:
|
||||
"@vue/reactivity" "3.4.23"
|
||||
"@vue/shared" "3.4.23"
|
||||
"@vue/reactivity" "3.4.21"
|
||||
"@vue/shared" "3.4.21"
|
||||
|
||||
"@vue/runtime-dom@3.4.23":
|
||||
version "3.4.23"
|
||||
resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.4.23.tgz#d5a9cca88b445de125c57e6b0d73faa2491e853f"
|
||||
integrity sha512-RXJFwwykZWBkMiTPSLEWU3kgVLNAfActBfWFlZd0y79FTUxexogd0PLG4HH2LfOktjRxV47Nulygh0JFXe5f9A==
|
||||
"@vue/runtime-dom@3.4.21":
|
||||
version "3.4.21"
|
||||
resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.4.21.tgz#91f867ef64eff232cac45095ab28ebc93ac74588"
|
||||
integrity sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw==
|
||||
dependencies:
|
||||
"@vue/runtime-core" "3.4.23"
|
||||
"@vue/shared" "3.4.23"
|
||||
"@vue/runtime-core" "3.4.21"
|
||||
"@vue/shared" "3.4.21"
|
||||
csstype "^3.1.3"
|
||||
|
||||
"@vue/server-renderer@3.4.23":
|
||||
version "3.4.23"
|
||||
resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.4.23.tgz#e605872e26d995f5ba9382e8758cd8cc7fa2e16d"
|
||||
integrity sha512-LDwGHtnIzvKFNS8dPJ1SSU5Gvm36p2ck8wCZc52fc3k/IfjKcwCyrWEf0Yag/2wTFUBXrqizfhK9c/mC367dXQ==
|
||||
"@vue/server-renderer@3.4.21":
|
||||
version "3.4.21"
|
||||
resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.4.21.tgz#150751579d26661ee3ed26a28604667fa4222a97"
|
||||
integrity sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==
|
||||
dependencies:
|
||||
"@vue/compiler-ssr" "3.4.23"
|
||||
"@vue/shared" "3.4.23"
|
||||
"@vue/compiler-ssr" "3.4.21"
|
||||
"@vue/shared" "3.4.21"
|
||||
|
||||
"@vue/shared@3.4.23", "@vue/shared@^3.3.0":
|
||||
version "3.4.23"
|
||||
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.4.23.tgz#e536a6dfd2f5f950d08c2e8ebcfe7e5329a851a1"
|
||||
integrity sha512-wBQ0gvf+SMwsCQOyusNw/GoXPV47WGd1xB5A1Pgzy0sQ3Bi5r5xm3n+92y3gCnB3MWqnRDdvfkRGxhKtbBRNgg==
|
||||
"@vue/shared@3.4.21", "@vue/shared@^3.3.0":
|
||||
version "3.4.21"
|
||||
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.4.21.tgz#de526a9059d0a599f0b429af7037cd0c3ed7d5a1"
|
||||
integrity sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==
|
||||
|
||||
"@vue/test-utils@^2.2.4":
|
||||
version "2.4.5"
|
||||
@@ -2285,9 +2285,9 @@ camelcase@^6.2.0:
|
||||
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
|
||||
|
||||
caniuse-lite@^1.0.30001587:
|
||||
version "1.0.30001610"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001610.tgz#2f44ed6e21d359e914271ae35b68903632628ccf"
|
||||
integrity sha512-QFutAY4NgaelojVMjY63o6XlZyORPaLfyMnsl3HgnWdJUcX6K0oaJymHjH8PT5Gk7sTm8rvC/c5COUQKXqmOMA==
|
||||
version "1.0.30001605"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001605.tgz#ca12d7330dd8bcb784557eb9aa64f0037870d9d6"
|
||||
integrity sha512-nXwGlFWo34uliI9z3n6Qc0wZaf7zaZWA1CPZ169La5mV3I/gem7bst0vr5XQH5TJXZIMfDeZyOrZnSlVzKxxHQ==
|
||||
|
||||
caseless@~0.12.0:
|
||||
version "0.12.0"
|
||||
@@ -2665,9 +2665,9 @@ csstype@^3.1.3:
|
||||
integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
|
||||
|
||||
cypress@^13.1.0:
|
||||
version "13.7.3"
|
||||
resolved "https://registry.yarnpkg.com/cypress/-/cypress-13.7.3.tgz#3e7dcd32e007676a6c8e972293c50d6ef329d991"
|
||||
integrity sha512-uoecY6FTCAuIEqLUYkTrxamDBjMHTYak/1O7jtgwboHiTnS1NaMOoR08KcTrbRZFCBvYOiS4tEkQRmsV+xcrag==
|
||||
version "13.7.2"
|
||||
resolved "https://registry.yarnpkg.com/cypress/-/cypress-13.7.2.tgz#61e841382abb20e0a9a063086ee0d850af3ef6bc"
|
||||
integrity sha512-FF5hFI5wlRIHY8urLZjJjj/YvfCBrRpglbZCLr/cYcL9MdDe0+5usa8kTIrDHthlEc9lwihbkb5dmwqBDNS2yw==
|
||||
dependencies:
|
||||
"@cypress/request" "^3.0.0"
|
||||
"@cypress/xvfb" "^1.2.4"
|
||||
@@ -2804,9 +2804,9 @@ decode-named-character-reference@^1.0.0:
|
||||
character-entities "^2.0.0"
|
||||
|
||||
dedent@^1.0.0:
|
||||
version "1.5.3"
|
||||
resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a"
|
||||
integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==
|
||||
version "1.5.1"
|
||||
resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff"
|
||||
integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==
|
||||
|
||||
deep-eql@^4.1.3:
|
||||
version "4.1.3"
|
||||
@@ -3043,16 +3043,16 @@ editorconfig@^1.0.4:
|
||||
semver "^7.5.3"
|
||||
|
||||
ejs@^3.1.6:
|
||||
version "3.1.10"
|
||||
resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b"
|
||||
integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==
|
||||
version "3.1.9"
|
||||
resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361"
|
||||
integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==
|
||||
dependencies:
|
||||
jake "^10.8.5"
|
||||
|
||||
electron-to-chromium@^1.4.668:
|
||||
version "1.4.738"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.738.tgz#9a7fca98abaee61e20c9c25013d5ce60bb533436"
|
||||
integrity sha512-lwKft2CLFztD+vEIpesrOtCrko/TFnEJlHFdRhazU7Y/jx5qc4cqsocfVrBg4So4gGe9lvxnbLIoev47WMpg+A==
|
||||
version "1.4.724"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.724.tgz#e0a86fe4d3d0e05a4d7b032549d79608078f830d"
|
||||
integrity sha512-RTRvkmRkGhNBPPpdrgtDKvmOEYTrPlXDfc0J/Nfq5s29tEahAwhiX4mmhNzj6febWMleulxVYPh7QwCSL/EldA==
|
||||
|
||||
emittery@^0.13.1:
|
||||
version "0.13.1"
|
||||
@@ -3479,9 +3479,9 @@ eslint-plugin-prettier@^4.0.0:
|
||||
prettier-linter-helpers "^1.0.0"
|
||||
|
||||
eslint-plugin-vue@^9.8.0:
|
||||
version "9.25.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.25.0.tgz#615cb7bb6d0e2140d21840b9aa51dce69e803e7a"
|
||||
integrity sha512-tDWlx14bVe6Bs+Nnh3IGrD+hb11kf2nukfm6jLsmJIhmiRQ1SUaksvwY9U5MvPB0pcrg0QK0xapQkfITs3RKOA==
|
||||
version "9.24.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.24.0.tgz#71209f4652ee767f18c0bf56f25991b7cdc5aa46"
|
||||
integrity sha512-9SkJMvF8NGMT9aQCwFc5rj8Wo1XWSMSHk36i7ZwdI614BU7sIOR28ZjuFPKp8YGymZN12BSEbiSwa7qikp+PBw==
|
||||
dependencies:
|
||||
"@eslint-community/eslint-utils" "^4.4.0"
|
||||
globals "^13.24.0"
|
||||
@@ -3985,10 +3985,10 @@ geojson-vt@^3.2.1:
|
||||
resolved "https://registry.yarnpkg.com/geojson-vt/-/geojson-vt-3.2.1.tgz#f8adb614d2c1d3f6ee7c4265cad4bbf3ad60c8b7"
|
||||
integrity sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg==
|
||||
|
||||
geovisio@2.5.1:
|
||||
version "2.5.1"
|
||||
resolved "https://registry.yarnpkg.com/geovisio/-/geovisio-2.5.1.tgz#b7a3930193720a62701cf9f9bb5170fb0475871f"
|
||||
integrity sha512-zbSHjEHWnh8cRNFmSvXKxlKvHLnTiBqbqpwCFOk2YDnw8HShrxzOZL5OylvJ27nBlMS8o0EetILIXof8G9ddPg==
|
||||
geovisio@2.5.1-develop-e622a156:
|
||||
version "2.5.1-develop-e622a156"
|
||||
resolved "https://registry.yarnpkg.com/geovisio/-/geovisio-2.5.1-develop-e622a156.tgz#622d0ed67d0c7bca993d939bc342bca8afc173b8"
|
||||
integrity sha512-t3BYAAiKKHPGb2094ThNzdSTtWxJw534H3rI3mXfw659EGkic5HaasjDXCJIpIUsUM0XNZFwRT1LXEE+wbAvOQ==
|
||||
dependencies:
|
||||
"@fortawesome/fontawesome-svg-core" "^6.4.0"
|
||||
"@fortawesome/free-solid-svg-icons" "^6.4.0"
|
||||
@@ -5666,10 +5666,10 @@ lru-cache@^6.0.0:
|
||||
dependencies:
|
||||
yallist "^4.0.0"
|
||||
|
||||
magic-string@^0.30.8:
|
||||
version "0.30.9"
|
||||
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.9.tgz#8927ae21bfdd856310e07a1bc8dd5e73cb6c251d"
|
||||
integrity sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==
|
||||
magic-string@^0.30.7:
|
||||
version "0.30.8"
|
||||
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.8.tgz#14e8624246d2bedba70d5462aa99ac9681844613"
|
||||
integrity sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==
|
||||
dependencies:
|
||||
"@jridgewell/sourcemap-codec" "^1.4.15"
|
||||
|
||||
@@ -6861,7 +6861,7 @@ postcss-selector-parser@^6.0.15:
|
||||
cssesc "^3.0.0"
|
||||
util-deprecate "^1.0.2"
|
||||
|
||||
postcss@^8.4.18, postcss@^8.4.27, postcss@^8.4.38:
|
||||
postcss@^8.4.18, postcss@^8.4.27, postcss@^8.4.35:
|
||||
version "8.4.38"
|
||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e"
|
||||
integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==
|
||||
@@ -7307,9 +7307,9 @@ safe-regex-test@^1.0.3:
|
||||
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||
|
||||
sass@^1.62.0:
|
||||
version "1.75.0"
|
||||
resolved "https://registry.yarnpkg.com/sass/-/sass-1.75.0.tgz#91bbe87fb02dfcc34e052ddd6ab80f60d392be6c"
|
||||
integrity sha512-ShMYi3WkrDWxExyxSZPst4/okE9ts46xZmJDSawJQrnte7M1V9fScVB+uNXOVKRBt0PggHOwoZcn8mYX4trnBw==
|
||||
version "1.72.0"
|
||||
resolved "https://registry.yarnpkg.com/sass/-/sass-1.72.0.tgz#5b9978943fcfb32b25a6a5acb102fc9dabbbf41c"
|
||||
integrity sha512-Gpczt3WA56Ly0Mn8Sl21Vj94s1axi9hDIzDFn9Ph9x3C3p4nNyvsqJoQyVXKou6cBlfFWEgRW4rT8Tb4i3XnVA==
|
||||
dependencies:
|
||||
chokidar ">=3.0.0 <4.0.0"
|
||||
immutable "^4.0.0"
|
||||
@@ -7509,7 +7509,7 @@ sort-object@^3.0.3:
|
||||
sort-desc "^0.2.0"
|
||||
union-value "^1.0.1"
|
||||
|
||||
"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.2.0:
|
||||
"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2, source-map-js@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af"
|
||||
integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
|
||||
@@ -7850,9 +7850,9 @@ through@^2.3.8:
|
||||
integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
|
||||
|
||||
tinybench@^2.3.1:
|
||||
version "2.7.0"
|
||||
resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.7.0.tgz#d56198a69bead7e240c8f9542484f3eb3c3f749d"
|
||||
integrity sha512-Qgayeb106x2o4hNzNjsZEfFziw8IbKqtbXBjVh7VIZfBxfD5M4gWtpyx5+YTae2gJ6Y6Dz/KLepiv16RFeQWNA==
|
||||
version "2.6.0"
|
||||
resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.6.0.tgz#1423284ee22de07c91b3752c048d2764714b341b"
|
||||
integrity sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==
|
||||
|
||||
tinypool@^0.3.0:
|
||||
version "0.3.1"
|
||||
@@ -8396,9 +8396,9 @@ vue-axios@^3.5.2:
|
||||
integrity sha512-GP+dct7UlAWkl1qoP3ppw0z6jcSua5/IrMpjB5O8bh089iIiJ+hdxPYH2NPEpajlYgkW5EVMP95ttXWdas1O0g==
|
||||
|
||||
vue-component-type-helpers@^2.0.0:
|
||||
version "2.0.13"
|
||||
resolved "https://registry.yarnpkg.com/vue-component-type-helpers/-/vue-component-type-helpers-2.0.13.tgz#4cd08fe6c42a071159664e6c30b7fe1b01e17b68"
|
||||
integrity sha512-xNO5B7DstNWETnoYflLkVgh8dK8h2ZDgxY1M2O0zrqGeBNq5yAZ8a10yCS9+HnixouNGYNX+ggU9MQQq86HTpg==
|
||||
version "2.0.7"
|
||||
resolved "https://registry.yarnpkg.com/vue-component-type-helpers/-/vue-component-type-helpers-2.0.7.tgz#f142e82440da61fa81671ac2f35fd87146248897"
|
||||
integrity sha512-7e12Evdll7JcTIocojgnCgwocX4WzIYStGClBQ+QuWPinZo/vQolv2EMq4a3lg16TKfwWafLimG77bxb56UauA==
|
||||
|
||||
vue-demi@>=0.14.5, vue-demi@>=0.14.7:
|
||||
version "0.14.7"
|
||||
@@ -8488,15 +8488,15 @@ vue3-smooth-scroll@^0.8.1:
|
||||
integrity sha512-9EN1aiBT2RtkIe1MoGiyGjUoLmqmlJ96R9/QVCylaiurHQ7oGu1SPzEoGJyxdhCa1q3qyMcX/pne1oTAn1UaoQ==
|
||||
|
||||
vue@^3.0.0, vue@^3.2.45:
|
||||
version "3.4.23"
|
||||
resolved "https://registry.yarnpkg.com/vue/-/vue-3.4.23.tgz#9d5a990a71c5bd5446f80377828e6587cfc488d5"
|
||||
integrity sha512-X1y6yyGJ28LMUBJ0k/qIeKHstGd+BlWQEOT40x3auJFTmpIhpbKLgN7EFsqalnJXq1Km5ybDEsp6BhuWKciUDg==
|
||||
version "3.4.21"
|
||||
resolved "https://registry.yarnpkg.com/vue/-/vue-3.4.21.tgz#69ec30e267d358ee3a0ce16612ba89e00aaeb731"
|
||||
integrity sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==
|
||||
dependencies:
|
||||
"@vue/compiler-dom" "3.4.23"
|
||||
"@vue/compiler-sfc" "3.4.23"
|
||||
"@vue/runtime-dom" "3.4.23"
|
||||
"@vue/server-renderer" "3.4.23"
|
||||
"@vue/shared" "3.4.23"
|
||||
"@vue/compiler-dom" "3.4.21"
|
||||
"@vue/compiler-sfc" "3.4.21"
|
||||
"@vue/runtime-dom" "3.4.21"
|
||||
"@vue/server-renderer" "3.4.21"
|
||||
"@vue/shared" "3.4.21"
|
||||
|
||||
w3c-xmlserializer@^4.0.0:
|
||||
version "4.0.0"
|
||||
|
||||
Reference in New Issue
Block a user