forked from Ivasoft/geovisio-website
Merge branch 'fix-user-tests' into 'develop'
Fix user tests Closes #75, #66, and #63 See merge request geovisio/website!136
This commit is contained in:
@@ -23,21 +23,21 @@ cache:
|
||||
|
||||
install:
|
||||
stage: Install
|
||||
image: node:18.16.1
|
||||
image: node:21.7.2
|
||||
script:
|
||||
- yarn install
|
||||
- ls node_modules/.bin/cypress
|
||||
|
||||
test:unit:
|
||||
stage: Test
|
||||
image: node:18.16.1
|
||||
image: node:21.7.2
|
||||
script:
|
||||
- yarn test:unit
|
||||
coverage: /All files[^|]*\|[^|]*\s+([\d\.]+)/
|
||||
|
||||
test:e2e:
|
||||
stage: Test
|
||||
image: node:18.16.1-alpine
|
||||
image: node:21.7.2-alpine
|
||||
services:
|
||||
- docker:dind
|
||||
script:
|
||||
@@ -56,7 +56,7 @@ test:e2e:
|
||||
|
||||
deploy:
|
||||
stage: Deploy
|
||||
image: node:18.16.1
|
||||
image: node:21.7.2
|
||||
cache:
|
||||
paths:
|
||||
- node_modules
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#- Build image
|
||||
#-
|
||||
|
||||
FROM node:18.16.1-alpine AS build
|
||||
FROM node:21.7.2-alpine AS build
|
||||
|
||||
WORKDIR /opt/geovisio
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Docker-compose used in gitlab-ci to run a container having access to all the other containers
|
||||
services:
|
||||
web:
|
||||
image: node:18.16.1-alpine
|
||||
image: node:21.7.2-alpine
|
||||
volumes:
|
||||
- $PROJECT_DIR:/src
|
||||
working_dir: /src
|
||||
@@ -29,7 +29,7 @@ services:
|
||||
aliases:
|
||||
- front.localtest.me
|
||||
e2e:
|
||||
image: cypress/included:cypress-12.17.3-node-18.16.1-chrome-114.0.5735.133-1-ff-114.0.2-edge-114.0.1823.51-1
|
||||
image: cypress/included:cypress-12.17.3-node-21.7.2-chrome-114.0.5735.133-1-ff-114.0.2-edge-114.0.1823.51-1
|
||||
volumes:
|
||||
- $PROJECT_DIR:/src
|
||||
working_dir: /src
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 184 KiB |
10
package.json
10
package.json
@@ -2,7 +2,7 @@
|
||||
"name": "geovisio-website",
|
||||
"version": "2.5.1",
|
||||
"engines": {
|
||||
"node": "18.16.1"
|
||||
"node": "21"
|
||||
},
|
||||
"private": true,
|
||||
"scripts": {
|
||||
@@ -25,18 +25,18 @@
|
||||
"axios": "^1.2.3",
|
||||
"bootstrap": "^5.2.3",
|
||||
"bootstrap-icons": "^1.10.3",
|
||||
"geovisio": "2.5.1-develop-e622a156",
|
||||
"geovisio": "2.5.1-develop-54c2e0c8",
|
||||
"moment": "^2.29.4",
|
||||
"pako": "^2.1.0",
|
||||
"pinia": "^2.1.4",
|
||||
"v-calendar": "^3.1.2",
|
||||
"vue": "^3.2.45",
|
||||
"vue": "^3.4.21",
|
||||
"vue-axios": "^3.5.2",
|
||||
"vue-draggable-resizable-vue3": "^2.3.1-beta.13",
|
||||
"vue-eslint-parser": "^9.1.0",
|
||||
"vue-i18n": "9.2.2",
|
||||
"vue-i18n": "9.11.1",
|
||||
"vue-matomo": "^4.2.0",
|
||||
"vue-router": "^4.1.6",
|
||||
"vue-router": "^4.3.0",
|
||||
"vue3-cookies": "^1.0.6",
|
||||
"vue3-smooth-scroll": "^0.8.1"
|
||||
},
|
||||
|
||||
@@ -42,10 +42,6 @@
|
||||
font-size: toRem(1.4);
|
||||
font-weight: normal;
|
||||
}
|
||||
@if $size == xss-regular {
|
||||
font-size: toRem(0.9);
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
@if $size == m-r-regular {
|
||||
font-size: toRem(1.6);
|
||||
@@ -54,13 +50,6 @@
|
||||
font-size: toRem(1.4);
|
||||
}
|
||||
}
|
||||
@if $size == xs-r-regular {
|
||||
font-size: toRem(1.2);
|
||||
font-weight: normal;
|
||||
@media (max-width: toRem(50)) {
|
||||
font-size: toRem(1);
|
||||
}
|
||||
}
|
||||
@if $size == s-r-regular {
|
||||
font-size: toRem(1.4);
|
||||
font-weight: normal;
|
||||
@@ -68,4 +57,15 @@
|
||||
font-size: toRem(1.2);
|
||||
}
|
||||
}
|
||||
@if $size == xs-r-regular {
|
||||
font-size: toRem(1.2);
|
||||
font-weight: normal;
|
||||
@media (max-width: toRem(50)) {
|
||||
font-size: toRem(1);
|
||||
}
|
||||
}
|
||||
@if $size == xss-regular {
|
||||
font-size: toRem(1);
|
||||
font-weight: normal;
|
||||
}
|
||||
}
|
||||
|
||||
23
src/assets/images/logo-geovisio.svg
Normal file
23
src/assets/images/logo-geovisio.svg
Normal file
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="48"
|
||||
height="48"
|
||||
viewBox="0 0 12.7 12.7"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs1" />
|
||||
<path
|
||||
d="M-3.007-.005a5.978 5.978 0 0 1-5.979 5.978V-.005z"
|
||||
style="fill:#1a237e;fill-opacity:1;stroke:#fff;stroke-width:0.661458;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="rotate(-135)"
|
||||
id="path1" />
|
||||
<circle
|
||||
cx="6.35"
|
||||
cy="6.545"
|
||||
r="2.64"
|
||||
style="fill:#1e88e5;fill-opacity:1;stroke:#fff;stroke-width:0.660027;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="circle1" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 721 B |
@@ -27,8 +27,8 @@
|
||||
<div class="close-button">
|
||||
<Button
|
||||
id="close-button"
|
||||
look="no-text-white"
|
||||
icon="bi bi-x"
|
||||
look="no-text-blue-dark"
|
||||
icon="bi bi-x-lg"
|
||||
@trigger="closeEdition"
|
||||
/>
|
||||
</div>
|
||||
@@ -122,6 +122,7 @@ const isDisabled = computed<boolean>(() => props.isLoading && !props.isLoaded)
|
||||
width: 100%;
|
||||
}
|
||||
.edit-button {
|
||||
min-width: toRem(11);
|
||||
margin-left: toRem(1);
|
||||
z-index: 2;
|
||||
}
|
||||
@@ -142,10 +143,8 @@ const isDisabled = computed<boolean>(() => props.isLoading && !props.isLoaded)
|
||||
align-items: center;
|
||||
height: toRem(2);
|
||||
width: toRem(2);
|
||||
top: toRem(-1);
|
||||
left: toRem(-1);
|
||||
background-color: var(--blue-dark);
|
||||
color: var(--white);
|
||||
border-radius: 50%;
|
||||
top: toRem(0.5);
|
||||
right: toRem(0.5);
|
||||
border-radius: toRem(0.5);
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -212,7 +212,18 @@ const userName = computed((): string => {
|
||||
padding-left: toRem(0.5);
|
||||
color: var(--blue);
|
||||
}
|
||||
@media (max-width: toRem(76.8)) {
|
||||
@media (max-width: toRem(102.4)) {
|
||||
.nav {
|
||||
padding-right: toRem(2);
|
||||
padding-left: toRem(2);
|
||||
}
|
||||
.wrapper-right-entries {
|
||||
div {
|
||||
margin-right: toRem(1.5);
|
||||
}
|
||||
}
|
||||
}
|
||||
@media (max-width: toRem(84.8)) {
|
||||
.nav {
|
||||
padding-right: toRem(2);
|
||||
padding-left: toRem(2);
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<div :class="status">
|
||||
<div class="wrapper-image">
|
||||
<button
|
||||
:class="[{ selected }, 'button-image-item']"
|
||||
:class="[{ selected: selectedOnMap }, 'button-image-item']"
|
||||
:disabled="status === 'waiting-for-process'"
|
||||
type="button"
|
||||
@click="$emit('trigger')"
|
||||
@@ -33,18 +33,8 @@
|
||||
$t('pages.sequence.waiting_process')
|
||||
}}</span>
|
||||
</div>
|
||||
<div
|
||||
v-if="selectedOnMap && !selected"
|
||||
class="icon-img pointer-map"
|
||||
></div>
|
||||
<div v-if="selected && !selectedOnMap" class="icon-img button-check">
|
||||
<i class="bi bi-check-lg" />
|
||||
</div>
|
||||
<div
|
||||
v-if="selected && selectedOnMap"
|
||||
class="icon-img button-check-pointer"
|
||||
>
|
||||
<i class="bi bi-check-lg" />
|
||||
<div v-if="selectedOnMap" class="pointer-map">
|
||||
<img src="@/assets/images/logo-geovisio.svg" alt="" />
|
||||
</div>
|
||||
<div
|
||||
v-if="status.length && (status === 'ready' || status === 'hidden')"
|
||||
@@ -64,6 +54,9 @@
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
<div class="geovisio-pointer">
|
||||
<slot name="checkbox"></slot>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@@ -75,7 +68,6 @@ defineProps({
|
||||
created: { type: String, default: null },
|
||||
href: { type: String, default: null },
|
||||
hrefHd: { type: String, default: null },
|
||||
selected: { type: Boolean, default: false },
|
||||
selectedOnMap: { type: Boolean, default: false },
|
||||
status: {
|
||||
type: String,
|
||||
@@ -95,12 +87,16 @@ defineProps({
|
||||
position: relative;
|
||||
}
|
||||
.selected {
|
||||
border: toRem(0.1) solid var(--blue);
|
||||
border-radius: toRem(0.5);
|
||||
border: toRem(0.2) solid var(--blue);
|
||||
border-radius: toRem(1.5);
|
||||
box-shadow: 0px 4px 4px 0px #00000040;
|
||||
.photo-img-wrapper {
|
||||
padding: toRem(0.2);
|
||||
}
|
||||
}
|
||||
.wrapper-image {
|
||||
display: flex;
|
||||
position: relative;
|
||||
}
|
||||
.photo-img-wrapper {
|
||||
display: flex;
|
||||
@@ -115,7 +111,7 @@ defineProps({
|
||||
.photo-img {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
border-radius: toRem(0.5);
|
||||
border-radius: toRem(1.5);
|
||||
}
|
||||
.icon-hidden {
|
||||
color: var(--grey-dark);
|
||||
@@ -146,7 +142,7 @@ defineProps({
|
||||
}
|
||||
|
||||
.info {
|
||||
@include text(xs-r-regular);
|
||||
@include text(xss-regular);
|
||||
padding: toRem(0.5) toRem(0.8);
|
||||
background-color: var(--white);
|
||||
border-radius: toRem(0.5);
|
||||
@@ -164,9 +160,15 @@ defineProps({
|
||||
align-items: center;
|
||||
font-size: toRem(1.3);
|
||||
}
|
||||
.pointer-map,
|
||||
.button-check-pointer {
|
||||
background-color: var(--orange);
|
||||
.geovisio-pointer {
|
||||
position: absolute;
|
||||
top: toRem(1.5);
|
||||
right: toRem(1.5);
|
||||
}
|
||||
.pointer-map {
|
||||
position: absolute;
|
||||
top: toRem(1);
|
||||
left: 0;
|
||||
}
|
||||
.delete-checked {
|
||||
opacity: 1;
|
||||
|
||||
@@ -56,7 +56,7 @@ h3 {
|
||||
}
|
||||
.icon-block-img {
|
||||
margin-right: toRem(0.5);
|
||||
height: toRem(2.2);
|
||||
height: toRem(2);
|
||||
}
|
||||
.information-text {
|
||||
margin-top: toRem(1);
|
||||
|
||||
@@ -43,7 +43,7 @@ const instanceName = computed((): string | null => {
|
||||
position: absolute;
|
||||
top: toRem(0.3);
|
||||
margin-left: toRem(0.5);
|
||||
width: toRem(7);
|
||||
width: toRem(7.3);
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -79,6 +79,10 @@ function triggerButton() {
|
||||
&:hover {
|
||||
opacity: 0.8;
|
||||
}
|
||||
&.disabled {
|
||||
pointer-events: none;
|
||||
cursor: default;
|
||||
}
|
||||
}
|
||||
.button {
|
||||
height: toRem(4);
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
<div class="tab">
|
||||
<button
|
||||
:class="['tablinks', { selected: panelSelected === 'photos' }]"
|
||||
:disabled="isLoading"
|
||||
@click="$emit('trigger', 'photos')"
|
||||
>
|
||||
{{ $t('pages.sequence.button_panel_photos') }}
|
||||
@@ -9,6 +10,7 @@
|
||||
<button
|
||||
v-if="isSequenceOwner"
|
||||
:class="['tablinks', { selected: panelSelected === 'orientation' }]"
|
||||
:disabled="isLoading"
|
||||
@click="$emit('trigger', 'orientation')"
|
||||
>
|
||||
{{ $t('pages.sequence.button_panel_orientation') }}
|
||||
@@ -16,6 +18,7 @@
|
||||
<button
|
||||
v-if="isSequenceOwner"
|
||||
:class="['tablinks', { selected: panelSelected === 'sort' }]"
|
||||
:disabled="isLoading"
|
||||
@click="$emit('trigger', 'sort')"
|
||||
>
|
||||
{{ $t('pages.sequence.button_panel_sort') }}
|
||||
@@ -26,6 +29,7 @@
|
||||
<script setup lang="ts">
|
||||
defineProps({
|
||||
panelSelected: { type: String, default: '' },
|
||||
isLoading: { type: Boolean, default: false },
|
||||
isSequenceOwner: { type: Boolean, default: false }
|
||||
})
|
||||
</script>
|
||||
|
||||
@@ -20,7 +20,6 @@ const sequenceStore = useSequenceStore()
|
||||
const { t } = useI18n()
|
||||
let mapIsLoaded = ref<boolean>(false)
|
||||
let viewer = ref()
|
||||
|
||||
const props = defineProps({
|
||||
id: { type: String, default: 'viewer' },
|
||||
fetchOptions: { type: Object, default: {} },
|
||||
@@ -87,7 +86,7 @@ function createViewerButton(link: HTMLDivElement): void {
|
||||
}
|
||||
)
|
||||
}
|
||||
function setupViewer(tiles: string): void {
|
||||
function setupViewer(style: void | null): void {
|
||||
const maxZoom = import.meta.env.VITE_MAX_ZOOM
|
||||
const zoom = import.meta.env.VITE_ZOOM
|
||||
const center = import.meta.env.VITE_CENTER
|
||||
@@ -126,11 +125,11 @@ function setupViewer(tiles: string): void {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tiles && tiles.length) {
|
||||
if (style) {
|
||||
paramsViewer = {
|
||||
map: {
|
||||
...paramsViewer.map,
|
||||
style: tiles
|
||||
style
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -160,13 +159,13 @@ function setupViewer(tiles: string): void {
|
||||
createViewerButton(reportLink)
|
||||
}
|
||||
}
|
||||
function setupStandAlone(tiles: string): void {
|
||||
function setupStandAlone(style: void | null): void {
|
||||
let paramsMap: MapInterface
|
||||
paramsMap = { users: [props.userId], minZoom: 7 }
|
||||
if (tiles && tiles.length) {
|
||||
if (style) {
|
||||
paramsMap = {
|
||||
...paramsMap,
|
||||
style: tiles
|
||||
style
|
||||
}
|
||||
}
|
||||
const bbox = [props.bbox[0], props.bbox[1], props.bbox[2], props.bbox[3]]
|
||||
@@ -183,19 +182,24 @@ function setupStandAlone(tiles: string): void {
|
||||
}
|
||||
)
|
||||
}
|
||||
async function setupEditor(tiles: string): void {
|
||||
function setupEditor(style: void | null): 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)
|
||||
selectedSequence: props.seqId
|
||||
}
|
||||
if (tiles && tiles.length) {
|
||||
if (raster && raster !== '') {
|
||||
paramsMap = {
|
||||
...paramsMap,
|
||||
style: tiles
|
||||
raster: JSON.parse(raster)
|
||||
}
|
||||
}
|
||||
if (style) {
|
||||
paramsMap = {
|
||||
...paramsMap,
|
||||
style
|
||||
}
|
||||
}
|
||||
if (props.picId) {
|
||||
@@ -211,7 +215,7 @@ async function setupEditor(tiles: string): void {
|
||||
}
|
||||
}
|
||||
try {
|
||||
viewer.value = await new Editor(
|
||||
viewer.value = new Editor(
|
||||
'viewer', // Div ID
|
||||
`${manageSlashUrl()}/api/search`,
|
||||
{
|
||||
@@ -222,12 +226,14 @@ async function setupEditor(tiles: string): void {
|
||||
console.log(e)
|
||||
}
|
||||
}
|
||||
|
||||
onMounted(async (): Promise<void> => {
|
||||
const tiles = import.meta.env.VITE_TILES
|
||||
const style = tiles ? await fetchTiles(tiles) : null
|
||||
try {
|
||||
if (props.viewerType === 'standAlone') setupStandAlone(tiles)
|
||||
else if (props.viewerType === 'editor') setupEditor(tiles)
|
||||
else setupViewer(tiles)
|
||||
if (props.viewerType === 'standAlone') setupStandAlone(style)
|
||||
else if (props.viewerType === 'editor') setupEditor(style)
|
||||
else setupViewer(style)
|
||||
mapIsLoaded.value = true
|
||||
} catch (err) {
|
||||
mapIsLoaded.value = true
|
||||
@@ -236,6 +242,12 @@ onMounted(async (): Promise<void> => {
|
||||
onUnmounted((): void => {
|
||||
if (viewer.value && props.viewerType) viewer.value.destroy()
|
||||
})
|
||||
|
||||
async function fetchTiles(tiles: string): Promise<void> {
|
||||
return fetch(tiles)
|
||||
.then((res) => res.json())
|
||||
.then((style) => style)
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
@@ -40,6 +40,22 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="informationCardDisplayed" class="entry-info-card">
|
||||
<InformationCard look="blue">
|
||||
<template v-slot:title>
|
||||
<span class="msg-info">
|
||||
{{ $t('pages.sequence.info_msg_maj') }}
|
||||
</span>
|
||||
</template>
|
||||
<template v-slot:cross>
|
||||
<Button
|
||||
icon="bi bi-x-lg"
|
||||
look="no-text-blue-dark"
|
||||
@trigger="informationCardDisplayed = false"
|
||||
/>
|
||||
</template>
|
||||
</InformationCard>
|
||||
</div>
|
||||
<ul class="photo-list">
|
||||
<li v-for="(item, i) in pictures" :id="`el-list${i}`" class="photo-item">
|
||||
<ImageItem
|
||||
@@ -52,7 +68,16 @@
|
||||
imageStatus(item.properties['geovisio:status'], sequence.status)
|
||||
"
|
||||
@trigger="triggerSelectImageAndMove(item)"
|
||||
/>
|
||||
>
|
||||
<template v-slot:checkbox>
|
||||
<InputCheckbox
|
||||
:is-checked="photoToDeleteOrPatchSelected(item, picturesToDelete)"
|
||||
:name="item.id"
|
||||
:is-indeterminate="false"
|
||||
@trigger.self="triggerInputCheckItem"
|
||||
/>
|
||||
</template>
|
||||
</ImageItem>
|
||||
</li>
|
||||
<div class="entry-pagination">
|
||||
<Pagination
|
||||
@@ -69,13 +94,14 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { computed } from 'vue'
|
||||
import { ref, computed } from 'vue'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import type { PropType } from 'vue'
|
||||
import Pagination from '@/components/Pagination.vue'
|
||||
import InputCheckbox from '@/components/InputCheckbox.vue'
|
||||
import ImageItem from '@/components/ImageItem.vue'
|
||||
import Button from '@/components/Button.vue'
|
||||
import InputCheckbox from '@/components/InputCheckbox.vue'
|
||||
import InformationCard from '@/components/InformationCard.vue'
|
||||
import { formatDate } from '@/utils/dates'
|
||||
import {
|
||||
imageStatus,
|
||||
@@ -90,11 +116,12 @@ import type {
|
||||
const { t } = useI18n()
|
||||
const emit = defineEmits<{
|
||||
(e: 'triggerInputCheck', value: CheckboxInterface): void
|
||||
(e: 'triggerInputCheckItem', value: string): void
|
||||
(e: 'triggerGoToNextPage', value: string): void
|
||||
(e: 'triggerSelectImageAndMove', value: ResponseUserPhotoInterface): void
|
||||
(e: 'triggerPatchOrDeleteCollectionItems', value: string): void
|
||||
}>()
|
||||
|
||||
let informationCardDisplayed = ref<boolean>(true)
|
||||
const props = defineProps({
|
||||
pictures: {
|
||||
type: Array as PropType<ResponseUserPhotoInterface[]>,
|
||||
@@ -159,6 +186,9 @@ function triggerSelectImageAndMove(value: ResponseUserPhotoInterface): void {
|
||||
function triggerPatchOrDeleteCollectionItems(value: string): void {
|
||||
emit('triggerPatchOrDeleteCollectionItems', value)
|
||||
}
|
||||
function triggerInputCheckItem(value: CheckboxInterface): void {
|
||||
emit('triggerInputCheckItem', value.name)
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@@ -190,6 +220,12 @@ function triggerPatchOrDeleteCollectionItems(value: string): void {
|
||||
margin-right: toRem(1);
|
||||
margin-left: toRem(1);
|
||||
}
|
||||
.msg-info {
|
||||
@include text(xs-r-regular);
|
||||
}
|
||||
.entry-info-card {
|
||||
padding: toRem(1);
|
||||
}
|
||||
.photo-list {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
@@ -202,7 +238,7 @@ function triggerPatchOrDeleteCollectionItems(value: string): void {
|
||||
width: calc(33% - #{toRem(2)});
|
||||
height: fit-content;
|
||||
margin: toRem(1);
|
||||
border-radius: toRem(0.5);
|
||||
border-radius: toRem(1.5);
|
||||
background-color: var(--grey);
|
||||
}
|
||||
.no-photo {
|
||||
@@ -213,6 +249,7 @@ function triggerPatchOrDeleteCollectionItems(value: string): void {
|
||||
}
|
||||
.entry-pagination {
|
||||
margin-top: toRem(2);
|
||||
margin-bottom: toRem(2);
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
@@ -223,6 +260,9 @@ function triggerPatchOrDeleteCollectionItems(value: string): void {
|
||||
}
|
||||
}
|
||||
@media (max-width: toRem(76.8)) {
|
||||
.entry-info-card {
|
||||
display: none;
|
||||
}
|
||||
.delete-all {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
@@ -34,7 +34,13 @@
|
||||
<span>{{ $t('pages.upload.images_count_text') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else class="loaded-block">
|
||||
<div v-else-if="uploadError" class="loaded-block error">
|
||||
<div class="error-block">
|
||||
<i class="bi bi-x-octagon"></i>
|
||||
<p>{{ uploadError }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else class="loaded-block success">
|
||||
<img src="@/assets/images/success.svg" alt="" />
|
||||
<p>{{ $t('pages.upload.upload_done') }}</p>
|
||||
</div>
|
||||
@@ -74,7 +80,8 @@ defineProps({
|
||||
type: Object as PropType<SequenceInterface | null>,
|
||||
default: null
|
||||
},
|
||||
picturesCount: { type: Number, default: null }
|
||||
picturesCount: { type: Number, default: null },
|
||||
uploadError: { type: String, default: null }
|
||||
})
|
||||
</script>
|
||||
|
||||
@@ -161,12 +168,21 @@ defineProps({
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
.loaded-block {
|
||||
.success {
|
||||
color: var(--green);
|
||||
img {
|
||||
margin-bottom: toRem(2);
|
||||
}
|
||||
}
|
||||
.error-block {
|
||||
display: flex;
|
||||
i {
|
||||
margin-right: toRem(1);
|
||||
}
|
||||
}
|
||||
.error {
|
||||
color: var(--red);
|
||||
}
|
||||
@media (max-width: toRem(102.4)) {
|
||||
.loader-title {
|
||||
flex-direction: column;
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
"delete_sequence_tooltip": "Permanently delete this sequence",
|
||||
"hide_photo_tooltip": "Hide selected pictures",
|
||||
"delete_photo_tooltip": "Permanently delete selected pictures",
|
||||
"info_msg_maj": "Use the SHIFT key to select many pictures",
|
||||
"conf_pic_msg": "⚠️ Selected photos will be permanently deleted",
|
||||
"conf_sequence_msg": "⚠️ This sequence will be permanently deleted",
|
||||
"button_panel_photos": "Manage pictures",
|
||||
@@ -180,6 +181,7 @@
|
||||
"uploading_cancel": "Cancel sending photos",
|
||||
"cancel_message": "⚠️ Please note, the download will be interrupted if you validate and the sequence will be deleted.",
|
||||
"sequence_title": "Sequence ",
|
||||
"error_upload": "Sequence creation error",
|
||||
"import": "Uploads",
|
||||
"upload_pending": "Upload in progress...",
|
||||
"images_count_text": "Pictures uploaded",
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
"delete_sequence_tooltip": "Supprime définitivement la séquence",
|
||||
"hide_photo_tooltip": "Masque les photos sur la carte",
|
||||
"delete_photo_tooltip": "Supprime définitivement les photos",
|
||||
"info_msg_maj": "Utilisez la touche MAJ pour sélectionner plusieurs photos",
|
||||
"conf_pic_msg": "⚠️ Les photos sélectionnées vont être définitivement supprimées",
|
||||
"conf_sequence_msg": "⚠️ La séquence va être définitivement supprimée",
|
||||
"button_panel_photos": "Gérer les photos",
|
||||
@@ -145,7 +146,7 @@
|
||||
"upload_subtitle": "Chargez vos images simplement en ligne",
|
||||
"upload_illustration_alt": "Illustration qui représente l'envoie de photo en ligne",
|
||||
"upload_description": "L'application web de Panoramax vous permet de déposer toutes vos photos de terrain au format jpg d'un simple clic. Aucune notion de programmation n'est nécessaire. Pour les envois en grand nombre, il est toutefois conseillé de faire appel à l'outil en ligne de commande",
|
||||
"upload_button": "+ Partager des images",
|
||||
"upload_button": "+ Partager des photos",
|
||||
"command_line_subtitle": "L'outil en ligne de commande",
|
||||
"comment_install": "Installer l’outil en ligne de commande geovisio",
|
||||
"comment_upload": "Lancez la commande de versement d’images sur le dossier choisi",
|
||||
@@ -180,6 +181,7 @@
|
||||
"uploading_cancel": "Annuler l'envoi des photos",
|
||||
"cancel_message": "⚠️ Attention, le téléchargement sera interrompu si vous validez et la séquence sera supprimée.",
|
||||
"sequence_title": "Séquence du ",
|
||||
"error_upload": "Erreur de création de la séquence",
|
||||
"import": "Imports",
|
||||
"upload_pending": "Transfert en cours...",
|
||||
"images_count_text": "Images chargées",
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
"delete_sequence_tooltip": "A sorozat végleges törlése",
|
||||
"hide_photo_tooltip": "A kiválasztott fényképek elrejtése",
|
||||
"delete_photo_tooltip": "A kiválasztottt fényképek végleges törlése",
|
||||
"info_msg_maj": "Használja a SHIFT billentyűt sok kép kiválasztásához",
|
||||
"conf_pic_msg": "⚠️ A kiválasztott fényképek véglegesen elvesznek",
|
||||
"conf_sequence_msg": "⚠️ A kiválasztott sorozat véglegesen elvész",
|
||||
"button_panel_photos": "Fényképek kezelése",
|
||||
@@ -180,6 +181,7 @@
|
||||
"uploading_cancel": "Fényképek küldésének megszakítása",
|
||||
"cancel_message": "⚠️ Felhívjuk figyelmét, hogy a letöltés megszakad, ha érvényesíti, és a sorozat törlődik.",
|
||||
"sequence_title": "Sorozat ",
|
||||
"error_upload": "Sorozat létrehozási hiba",
|
||||
"import": "Feltöltések",
|
||||
"upload_pending": "Feltöltés folyamatban…",
|
||||
"images_count_text": "Feltöltött képek",
|
||||
|
||||
@@ -40,7 +40,6 @@ describe('Template', () => {
|
||||
await wrapper.vm.$nextTick()
|
||||
|
||||
expect(wrapper.html()).contains('text="title to edit"')
|
||||
expect(wrapper.html()).contains('icon="bi bi-x"')
|
||||
expect(wrapper.html()).contains('text="Valider"')
|
||||
})
|
||||
test('should valid the name and emit', async () => {
|
||||
|
||||
@@ -16,7 +16,6 @@ describe('Template', () => {
|
||||
expect(wrapper.vm.created).toBe(null)
|
||||
expect(wrapper.vm.href).toBe(null)
|
||||
expect(wrapper.vm.hrefHd).toBe(null)
|
||||
expect(wrapper.vm.selected).toBe(false)
|
||||
expect(wrapper.vm.selectedOnMap).toBe(false)
|
||||
expect(wrapper.vm.status).toBe('')
|
||||
})
|
||||
@@ -42,21 +41,6 @@ describe('Template', () => {
|
||||
expect(wrapper.html()).contains('10 mars 2023')
|
||||
})
|
||||
})
|
||||
describe('When the component is selected', () => {
|
||||
it('should render the component with the selected class', () => {
|
||||
const wrapper = shallowMount(ImageItem, {
|
||||
global: {
|
||||
mocks: {
|
||||
$t: (msg) => msg
|
||||
}
|
||||
},
|
||||
props: {
|
||||
selected: true
|
||||
}
|
||||
})
|
||||
expect(wrapper.html()).contains('class="selected button-image-item"')
|
||||
})
|
||||
})
|
||||
describe('When the component is ready', () => {
|
||||
it('should render the component with the status class', () => {
|
||||
const wrapper = shallowMount(ImageItem, {
|
||||
@@ -93,7 +77,7 @@ describe('Template', () => {
|
||||
expect(wrapper.html()).contains('class="bi bi-card-image icon-waiting"')
|
||||
})
|
||||
})
|
||||
describe('When the component is selected on the map but not selected', () => {
|
||||
describe('When the component is selected on the map', () => {
|
||||
it('should render the component with the map pointer', () => {
|
||||
const wrapper = shallowMount(ImageItem, {
|
||||
global: {
|
||||
@@ -102,11 +86,11 @@ describe('Template', () => {
|
||||
}
|
||||
},
|
||||
props: {
|
||||
selectedOnMap: true,
|
||||
selected: false
|
||||
selectedOnMap: true
|
||||
}
|
||||
})
|
||||
expect(wrapper.html()).contains('class="icon-img pointer-map"')
|
||||
expect(wrapper.html()).contains('class="pointer-map"')
|
||||
expect(wrapper.html()).contains('class="selected button-image-item"')
|
||||
})
|
||||
})
|
||||
describe('When the component is selected but not selected on the map', () => {
|
||||
@@ -118,29 +102,10 @@ describe('Template', () => {
|
||||
}
|
||||
},
|
||||
props: {
|
||||
selectedOnMap: false,
|
||||
selected: true
|
||||
selectedOnMap: false
|
||||
}
|
||||
})
|
||||
expect(wrapper.html()).contains('class="bi bi-check-lg"')
|
||||
expect(wrapper.html()).contains('class="icon-img button-check"')
|
||||
})
|
||||
})
|
||||
describe('When the component is selected and selected on the map', () => {
|
||||
it('should render the component with the check icon', () => {
|
||||
const wrapper = shallowMount(ImageItem, {
|
||||
global: {
|
||||
mocks: {
|
||||
$t: (msg) => msg
|
||||
}
|
||||
},
|
||||
props: {
|
||||
selectedOnMap: true,
|
||||
selected: true
|
||||
}
|
||||
})
|
||||
expect(wrapper.html()).contains('class="icon-img button-check-pointer"')
|
||||
expect(wrapper.html()).contains('class="bi bi-check-lg"')
|
||||
expect(wrapper.html()).contains('class="button-image-item"')
|
||||
})
|
||||
})
|
||||
describe('When the button is trigger', () => {
|
||||
|
||||
@@ -269,7 +269,9 @@ describe('Template', () => {
|
||||
sequence
|
||||
}
|
||||
})
|
||||
expect(wrapper.html()).contains('status="hidden"></image-item')
|
||||
expect(wrapper.html()).contains(
|
||||
'status="hidden" selected="false"></image-item'
|
||||
)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
@@ -27,24 +27,29 @@ const viewerRef = ref<InstanceType<typeof ViewerType>>()
|
||||
.logged .entry-section {
|
||||
height: calc(100vh - #{toRem(8)});
|
||||
}
|
||||
// dvh fix the bug the size of ths viewer depending on the device
|
||||
// 2 times height because dvh not working on all browsers versions
|
||||
.full-viewer {
|
||||
.entry-section {
|
||||
height: 100vh;
|
||||
height: calc(100dvh - #{toRem(0)});
|
||||
}
|
||||
}
|
||||
.gvs-focus-map .entry-report-button {
|
||||
display: none;
|
||||
}
|
||||
@media (max-width: toRem(76.8)) {
|
||||
@media (max-width: toRem(84.8)) {
|
||||
.entry-page {
|
||||
padding-top: toRem(11.5);
|
||||
overflow: hidden;
|
||||
}
|
||||
.entry-section {
|
||||
height: calc(100vh - #{toRem(18)});
|
||||
height: calc(100dvh - #{toRem(18)});
|
||||
}
|
||||
.full-viewer {
|
||||
height: 100vh;
|
||||
height: calc(100dvh - #{toRem(0)});
|
||||
padding-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,12 +26,14 @@
|
||||
icon="bi bi-arrow-left"
|
||||
:text="$t('pages.sequence.back_button')"
|
||||
:route="{ name: 'my-sequences' }"
|
||||
:disabled="isLoadingOrient || isLoadingSort"
|
||||
look="link--grey-dark"
|
||||
/>
|
||||
</div>
|
||||
<div class="entry-tab-panel">
|
||||
<TabPanel
|
||||
:panel-selected="panelView"
|
||||
:is-loading="isLoadingOrient || isLoadingSort"
|
||||
:is-sequence-owner="isSequenceOwner"
|
||||
@trigger="setPanelView"
|
||||
/>
|
||||
@@ -150,6 +152,7 @@
|
||||
"
|
||||
:item-selected="itemSelected"
|
||||
@triggerInputCheck="triggerCheck"
|
||||
@triggerInputCheckItem="triggerCheckItem"
|
||||
@triggerGoToNextPage="goToNextPage"
|
||||
@triggerSelectImageAndMove="selectImageAndMove"
|
||||
@triggerPatchOrDeleteCollectionItems="patchOrDeleteCollectionItems"
|
||||
@@ -183,7 +186,7 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { onMounted, ref, watchEffect, nextTick, computed } from 'vue'
|
||||
import { onMounted, onUnmounted, watchEffect, ref, computed } from 'vue'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { useSequenceStore } from '@/store/sequence'
|
||||
@@ -245,7 +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')
|
||||
let viewerType = ref<string>('editor')
|
||||
const collapseMenu = ref<HTMLDivElement>()
|
||||
const deleteAll = ref<HTMLDivElement>()
|
||||
const menuHeight = ref<string>('0')
|
||||
@@ -265,61 +268,57 @@ onMounted(async () => {
|
||||
fetchAllCollectionInfo[1].data.links
|
||||
)
|
||||
formatSequenceFetched(fetchAllCollectionInfo[0].data)
|
||||
const collItems = fetchAllCollectionInfo[1].data.features
|
||||
const collItemsReady = collItems.filter(
|
||||
(el) => el.properties['geovisio:status'] === 'ready'
|
||||
)
|
||||
pictures.value = collItems
|
||||
pictures.value = fetchAllCollectionInfo[1].data.features
|
||||
setHeightValue()
|
||||
if (itemSelected.value.length || !getCurrentPicId(collItemsReady[0].id)) {
|
||||
return
|
||||
}
|
||||
await nextTick()
|
||||
if (!viewerRef.value) return
|
||||
const viewerMap = viewerRef.value.viewer
|
||||
await viewerMap._api.onceReady()
|
||||
await goToThePageAndScroll()
|
||||
document.addEventListener('keydown', (evt) => {
|
||||
if (evt.key === 'Shift') isShiftPressed.value = true
|
||||
})
|
||||
document.addEventListener('keyup', (evt) => {
|
||||
if (evt.key === 'Shift') isShiftPressed.value = false
|
||||
})
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
}
|
||||
})
|
||||
|
||||
async function goToThePageAndScroll() {
|
||||
if (!viewerRef.value || !viewerRef.value || !viewerRef.value.viewer) return
|
||||
console.log('111111')
|
||||
const viewerMap = viewerRef.value.viewer
|
||||
viewerMap.addEventListener(
|
||||
onUnmounted(() => {
|
||||
document.removeEventListener('keydown', (evt) => {
|
||||
if (evt.key === 'Shift') isShiftPressed.value = true
|
||||
})
|
||||
document.removeEventListener('keyup', (evt) => {
|
||||
if (evt.key === 'Shift') isShiftPressed.value = false
|
||||
})
|
||||
})
|
||||
watchEffect(() => goToThePageAndScroll())
|
||||
function goToThePageAndScroll(): void {
|
||||
if (!viewerRef?.value?.viewer) return
|
||||
viewerRef.value.viewer.addEventListener(
|
||||
'psv:picture-loaded',
|
||||
async (e: { detail: { picId: string } }): Promise<void> => {
|
||||
console.log('222222')
|
||||
if (!pictureExistInList(getCurrentPicId(e.detail.picId))) {
|
||||
console.log('333333')
|
||||
await goToTheGoodPage(getCurrentPicId(e.detail.picId))
|
||||
}
|
||||
itemSelected.value = getCurrentPicId(e.detail.picId)
|
||||
if (!sequence.value) return
|
||||
console.log('44444')
|
||||
viewerMap.select(sequence.value.id, itemSelected.value)
|
||||
if (!sequence.value || !viewerRef?.value?.viewer) return
|
||||
viewerRef.value.viewer.select(sequence.value.id, itemSelected.value)
|
||||
scrollIntoSelected(
|
||||
getCurrentPicId(e.detail.picId),
|
||||
pictures.value.map((e) => e.id)
|
||||
)
|
||||
console.log('555555')
|
||||
isLoading.value = false
|
||||
}
|
||||
)
|
||||
}
|
||||
function setPanelView(value: string): void {
|
||||
isLoading.value = true
|
||||
panelView.value = value
|
||||
if (!viewerRef?.value?.viewer) return
|
||||
if (value === 'orientation') {
|
||||
viewerType.value = 'editor'
|
||||
const raster = import.meta.env.VITE_RASTER_TILE
|
||||
if (raster) viewerRef.value.viewer.map.setBackground('aerial')
|
||||
setSeqDegrees()
|
||||
} else viewerType.value = 'viewer'
|
||||
isLoading.value = false
|
||||
} else viewerRef.value.viewer.map.setBackground('streets')
|
||||
}
|
||||
function setSeqDegrees(): void {
|
||||
if (!viewerRef.value) return
|
||||
if (!viewerRef?.value?.viewer) return
|
||||
const seqRelativeDeg = viewerRef.value.viewer.psv.getPictureRelativeHeading()
|
||||
seqBruteDeg.value =
|
||||
viewerRef.value.viewer.psv.getPictureMetadata().properties['view:azimuth']
|
||||
@@ -446,7 +445,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.map.reloadVectorTiles()
|
||||
if (viewerRef?.value?.viewer) viewerRef.value.viewer.map.reloadVectorTiles()
|
||||
isLoading.value = false
|
||||
}
|
||||
async function goToNextPage(value: string): Promise<void> {
|
||||
@@ -470,9 +469,8 @@ function triggerCheck(value: CheckboxInterface): void {
|
||||
.map((e) => e.id)
|
||||
} else picturesToDelete.value = []
|
||||
}
|
||||
|
||||
function orientMovingSequence(value: number): void {
|
||||
if (!viewerRef.value) return
|
||||
if (!viewerRef?.value?.viewer) return
|
||||
viewerRef.value.viewer.previewSequenceHeadingChange(value)
|
||||
}
|
||||
async function orientSequence(value: number): Promise<void> {
|
||||
@@ -499,36 +497,28 @@ async function sortSequence(value: string): Promise<void> {
|
||||
sequenceStore.addToastText(t('pages.sequence.sort_updated'), 'success')
|
||||
isLoadingSort.value = false
|
||||
}
|
||||
function selectPhotoToDeleteOrPatch(
|
||||
item: ResponseUserPhotoInterface
|
||||
): string[] {
|
||||
document.addEventListener('keydown', function (evt) {
|
||||
if (evt.key === 'Shift') {
|
||||
isShiftPressed.value = true
|
||||
}
|
||||
})
|
||||
document.addEventListener('keyup', function (evt) {
|
||||
if (evt.key === 'Shift') {
|
||||
isShiftPressed.value = false
|
||||
}
|
||||
})
|
||||
if (isShiftPressed.value) {
|
||||
const picturesIndex = pictures.value.findIndex((el) => el.id === item.id)
|
||||
const picturesLastIndex = pictures.value.findIndex(
|
||||
(el) => el.id === picturesToDelete.value[0]
|
||||
)
|
||||
const slicedUserPhotos = pictures.value.slice(
|
||||
picturesLastIndex,
|
||||
picturesIndex + 1
|
||||
)
|
||||
return (picturesToDelete.value = slicedUserPhotos.map((el) => el.id))
|
||||
}
|
||||
if (picturesToDelete.value.includes(item.id)) {
|
||||
function triggerCheckItem(value: string) {
|
||||
if (picturesToDelete.value.includes(value)) {
|
||||
return (picturesToDelete.value = picturesToDelete.value.filter(
|
||||
(el) => el !== item.id
|
||||
(el) => el !== value
|
||||
))
|
||||
}
|
||||
return (picturesToDelete.value = [...picturesToDelete.value, item.id])
|
||||
picturesToDelete.value = [...picturesToDelete.value, value]
|
||||
}
|
||||
function selectPhotoToDeleteOrPatch(
|
||||
item: ResponseUserPhotoInterface
|
||||
): void | string[] {
|
||||
if (!isShiftPressed.value) return
|
||||
const picturesIndex = pictures.value.findIndex((el) => el.id === item.id)
|
||||
let picturesLastIndex = pictures.value.findIndex(
|
||||
(el) => el.id === picturesToDelete.value[0]
|
||||
)
|
||||
if (picturesLastIndex === -1) picturesLastIndex = 0
|
||||
const slicedUserPhotos = pictures.value.slice(
|
||||
picturesLastIndex,
|
||||
picturesIndex + 1
|
||||
)
|
||||
return (picturesToDelete.value = slicedUserPhotos.map((el) => el.id))
|
||||
}
|
||||
async function selectImageAndMove(
|
||||
item: ResponseUserPhotoInterface
|
||||
@@ -539,13 +529,9 @@ async function selectImageAndMove(
|
||||
await router.push({ name: 'sequence', params: { id: route.params.id } })
|
||||
}
|
||||
selectPhotoToDeleteOrPatch(item)
|
||||
if (
|
||||
picturesToDelete.value.length < 2 &&
|
||||
item.properties['geovisio:status'] === 'ready'
|
||||
) {
|
||||
if (!isShiftPressed.value) {
|
||||
if (viewerRef.value && sequence.value) {
|
||||
const viewerMap = viewerRef.value.viewer
|
||||
viewerMap.select(sequence.value.id, item.id)
|
||||
viewerRef.value.viewer.select(sequence.value.id, item.id)
|
||||
}
|
||||
itemSelected.value = item.id
|
||||
await goToTheGoodPage(item.id)
|
||||
@@ -591,7 +577,8 @@ async function patchOrDeleteCollectionItems(reqType: string): Promise<void> {
|
||||
isLoading.value = false
|
||||
if (viewerRef.value) {
|
||||
viewerRef.value.viewer.map.reloadVectorTiles()
|
||||
viewerRef.value.viewer.select(pictures.value[0].id, route.params.id)
|
||||
viewerRef.value.viewer.map.reloadLayersStyles()
|
||||
viewerRef.value.viewer.select(route.params.id, pictures.value[0].id)
|
||||
}
|
||||
scrollIntoSelected(
|
||||
picturesToDelete.value[0],
|
||||
@@ -644,6 +631,7 @@ async function patchOrDeleteCollectionItems(reqType: string): Promise<void> {
|
||||
width: 100%;
|
||||
}
|
||||
.wrapper-title {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
}
|
||||
.wrapper-button {
|
||||
@@ -726,7 +714,7 @@ async function patchOrDeleteCollectionItems(reqType: string): Promise<void> {
|
||||
}
|
||||
.sequence-status {
|
||||
@include text(xs-r-regular);
|
||||
height: 100%;
|
||||
height: fit-content;
|
||||
border-radius: toRem(0.4);
|
||||
padding: toRem(0.3) toRem(0.8);
|
||||
color: var(--white);
|
||||
@@ -738,8 +726,8 @@ async function patchOrDeleteCollectionItems(reqType: string): Promise<void> {
|
||||
border: toRem(0.1) solid var(--green);
|
||||
}
|
||||
&.waiting-for-process {
|
||||
background-color: var(--yellow);
|
||||
border: toRem(0.1) solid var(--yellow);
|
||||
background-color: var(--orange);
|
||||
border: toRem(0.1) solid var(--orange);
|
||||
}
|
||||
&.hidden {
|
||||
background-color: var(--red-pale);
|
||||
@@ -766,9 +754,6 @@ async function patchOrDeleteCollectionItems(reqType: string): Promise<void> {
|
||||
.menu-right {
|
||||
width: 55vw;
|
||||
}
|
||||
.wrapper-title {
|
||||
width: 90%;
|
||||
}
|
||||
.block-collapse {
|
||||
flex-direction: column;
|
||||
}
|
||||
@@ -784,7 +769,7 @@ async function patchOrDeleteCollectionItems(reqType: string): Promise<void> {
|
||||
}
|
||||
}
|
||||
}
|
||||
@media (max-width: toRem(76.8)) {
|
||||
@media (max-width: toRem(84.8)) {
|
||||
.entry-page {
|
||||
padding-top: toRem(11.6);
|
||||
}
|
||||
|
||||
@@ -488,7 +488,7 @@ function bboxIsInsideOther(mainBbox: number[], bboxInside: number[]): boolean {
|
||||
)
|
||||
}
|
||||
function goToSequence(sequence: SequenceLinkInterface): void {
|
||||
if (!viewerRef.value) return
|
||||
if (!viewerRef?.value?.viewer) return
|
||||
const currentBbox = [
|
||||
viewerRef.value.viewer.map.getBounds()._ne.lng,
|
||||
viewerRef.value.viewer.map.getBounds()._ne.lat,
|
||||
@@ -594,17 +594,19 @@ async function updateFilters(value: {
|
||||
await updateSequence(uri.value)
|
||||
}
|
||||
watchEffect(() => {
|
||||
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)
|
||||
})
|
||||
if (!viewerRef?.value?.viewer) return
|
||||
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)
|
||||
}
|
||||
)
|
||||
})
|
||||
</script>
|
||||
<style lang="scss">
|
||||
@@ -612,20 +614,24 @@ watchEffect(() => {
|
||||
top: 0;
|
||||
right: toRem(0);
|
||||
cursor: e-resize;
|
||||
background-color: var(--black);
|
||||
background-color: var(--blue);
|
||||
display: block !important;
|
||||
opacity: 0.7;
|
||||
&:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
.resize-handle-map {
|
||||
z-index: 999999;
|
||||
box-sizing: border-box;
|
||||
position: absolute;
|
||||
height: 100%;
|
||||
width: toRem(0.5);
|
||||
width: toRem(0.4);
|
||||
&:hover {
|
||||
cursor: col-resize;
|
||||
}
|
||||
}
|
||||
@media (max-width: toRem(76.8)) {
|
||||
@media (max-width: toRem(84.8)) {
|
||||
.resize-handle-map-mr {
|
||||
display: none !important;
|
||||
}
|
||||
@@ -893,7 +899,7 @@ watchEffect(() => {
|
||||
width: 70%;
|
||||
}
|
||||
}
|
||||
@media (max-width: toRem(76.8)) {
|
||||
@media (max-width: toRem(84.8)) {
|
||||
.section-viewer {
|
||||
height: calc(100vh - #{toRem(11.6)});
|
||||
width: 100vw;
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
</p>
|
||||
<div class="wrapper-edit-text">
|
||||
<EditText
|
||||
:form-title="$t('pages.sequence.sequence_form_title')"
|
||||
:default-text="newSequenceTitle || sequenceTitle"
|
||||
:is-loading="isLoading"
|
||||
:is-loaded="isLoaded"
|
||||
@@ -90,6 +91,7 @@
|
||||
v-if="isLoading"
|
||||
:load-percentage="loadPercentage"
|
||||
:is-loaded="isLoaded"
|
||||
:upload-error="uploadError"
|
||||
:uploaded-sequence="uploadedSequence"
|
||||
:pictures-count="picturesCount"
|
||||
@triggerModal="displayModal"
|
||||
@@ -134,6 +136,7 @@ import InformationCard from '@/components/InformationCard.vue'
|
||||
import UploadLoader from '@/components/upload/UploadLoader.vue'
|
||||
import License from '@/components/License.vue'
|
||||
import type { SequenceInterface } from './interfaces/UploadPicturesView'
|
||||
import type { SequenceCreatedInterface } from './interfaces/UploadPicturesView'
|
||||
import { formatDate } from '@/utils/dates'
|
||||
import {
|
||||
createAPictureToASequence,
|
||||
@@ -149,6 +152,7 @@ let pictures = ref<File[] | []>([])
|
||||
let picturesCount = ref<number>(0)
|
||||
let isLoading = ref<boolean>(false)
|
||||
let isLoaded = ref<boolean>(false)
|
||||
let uploadError = ref<string | undefined>(undefined)
|
||||
let informationCardDisplayed = ref<boolean>(true)
|
||||
let uploadedSequence = ref<SequenceInterface | null>(null)
|
||||
let picturesUploadingSize = ref<number>(0)
|
||||
@@ -250,10 +254,17 @@ async function uploadPicture(): Promise<void> {
|
||||
const title = newSequenceTitle.value
|
||||
? newSequenceTitle.value
|
||||
: sequenceTitle.value
|
||||
const { data } = await createASequence(title)
|
||||
let sequence: SequenceCreatedInterface | null = null
|
||||
try {
|
||||
sequence = await createASequence(title)
|
||||
} catch (e) {
|
||||
uploadError.value = t('pages.upload.error_upload')
|
||||
isLoaded.value = true
|
||||
}
|
||||
if (!sequence || !sequence.data) return
|
||||
uploadedSequence.value = {
|
||||
title: title,
|
||||
id: data.id,
|
||||
id: sequence.data.id,
|
||||
pictures: [],
|
||||
picturesOnError: [],
|
||||
pictureCount: pictures.value.length,
|
||||
@@ -269,7 +280,10 @@ async function uploadPicture(): Promise<void> {
|
||||
body.append('position', i.toString())
|
||||
body.append('picture', el)
|
||||
try {
|
||||
const pictureUploaded = await createAPictureToASequence(data.id, body)
|
||||
const pictureUploaded = await createAPictureToASequence(
|
||||
sequence.data.id,
|
||||
body
|
||||
)
|
||||
const pictures = { ...pictureUploaded, name: el.name }
|
||||
picturesUploadingSize.value = picturesUploadingSize.value + el.size
|
||||
uploadedSequence.value.pictures = [
|
||||
@@ -291,8 +305,8 @@ async function uploadPicture(): Promise<void> {
|
||||
calcPercentage()
|
||||
}
|
||||
}
|
||||
isLoaded.value = true
|
||||
pictures.value = []
|
||||
isLoaded.value = true
|
||||
picturesCount.value = 0
|
||||
newSequenceTitle.value = null
|
||||
sequenceTitle.value = formatSequenceTitle()
|
||||
|
||||
@@ -11,3 +11,22 @@ export interface uploadErrorInterface {
|
||||
details: { error: string }
|
||||
name: string
|
||||
}
|
||||
|
||||
export interface SequenceCreatedInterface {
|
||||
data: {
|
||||
created: string
|
||||
description: string
|
||||
extent: { spatial: object; temporal: object }
|
||||
['geovisio:status']: string
|
||||
id: string
|
||||
keywords: string[]
|
||||
license: string
|
||||
links: object[]
|
||||
providers: object[]
|
||||
stac_extensions: string[]
|
||||
stac_version: string
|
||||
['stats:items']: { count: number }
|
||||
title: string
|
||||
type: string
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ export interface MapInterface {
|
||||
zoom?: number
|
||||
center?: number[]
|
||||
bounds?: number[]
|
||||
background?: string
|
||||
raster?: {
|
||||
type: string
|
||||
tiles: string[]
|
||||
@@ -27,4 +28,10 @@ export interface ViewerInterface {
|
||||
customWidget: HTMLAnchorElement
|
||||
}
|
||||
map: MapInterface
|
||||
raster?: {
|
||||
type: string
|
||||
tiles: string[]
|
||||
attribution: string
|
||||
tileSize: number
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,23 +1,5 @@
|
||||
import axios from 'axios'
|
||||
|
||||
interface SequenceCreatedInterface {
|
||||
data: {
|
||||
created: string
|
||||
description: string
|
||||
extent: { spatial: object; temporal: object }
|
||||
['geovisio:status']: string
|
||||
id: string
|
||||
keywords: string[]
|
||||
license: string
|
||||
links: object[]
|
||||
providers: object[]
|
||||
stac_extensions: string[]
|
||||
stac_version: string
|
||||
['stats:items']: { count: number }
|
||||
title: string
|
||||
type: string
|
||||
}
|
||||
}
|
||||
import type { SequenceCreatedInterface } from '../../interfaces/UploadPicturesView'
|
||||
|
||||
interface PictureCreatedInterface {
|
||||
data: {
|
||||
|
||||
@@ -11,10 +11,13 @@ export default ({ mode }) => {
|
||||
host: true,
|
||||
port: 5173,
|
||||
strictPort: true,
|
||||
hmr: mode == "development" ? {
|
||||
overlay: false,
|
||||
clientPort: 5173,
|
||||
} : false,
|
||||
hmr:
|
||||
mode == 'development'
|
||||
? {
|
||||
overlay: false,
|
||||
clientPort: 5173
|
||||
}
|
||||
: false
|
||||
},
|
||||
base: '/',
|
||||
plugins: [
|
||||
|
||||
405
yarn.lock
405
yarn.lock
@@ -33,22 +33,22 @@
|
||||
picocolors "^1.0.0"
|
||||
|
||||
"@babel/compat-data@^7.23.5":
|
||||
version "7.24.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.1.tgz#31c1f66435f2a9c329bb5716a6d6186c516c3742"
|
||||
integrity sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA==
|
||||
version "7.24.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a"
|
||||
integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==
|
||||
|
||||
"@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.3"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.3.tgz#568864247ea10fbd4eff04dda1e05f9e2ea985c3"
|
||||
integrity sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==
|
||||
version "7.24.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.4.tgz#1f758428e88e0d8c563874741bc4ffc4f71a4717"
|
||||
integrity sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==
|
||||
dependencies:
|
||||
"@ampproject/remapping" "^2.2.0"
|
||||
"@babel/code-frame" "^7.24.2"
|
||||
"@babel/generator" "^7.24.1"
|
||||
"@babel/generator" "^7.24.4"
|
||||
"@babel/helper-compilation-targets" "^7.23.6"
|
||||
"@babel/helper-module-transforms" "^7.23.3"
|
||||
"@babel/helpers" "^7.24.1"
|
||||
"@babel/parser" "^7.24.1"
|
||||
"@babel/helpers" "^7.24.4"
|
||||
"@babel/parser" "^7.24.4"
|
||||
"@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.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==
|
||||
"@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==
|
||||
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.1":
|
||||
version "7.24.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.1.tgz#183e44714b9eba36c3038e442516587b1e0a1a94"
|
||||
integrity sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==
|
||||
"@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==
|
||||
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":
|
||||
version "7.24.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.1.tgz#1e416d3627393fab1cb5b0f2f1796a100ae9133a"
|
||||
integrity sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==
|
||||
"@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/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.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.1.tgz#431f9a794d173b53720e69a6464abc6f0e2a5c57"
|
||||
integrity sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==
|
||||
version "7.24.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.4.tgz#de795accd698007a66ba44add6cc86542aff1edd"
|
||||
integrity sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==
|
||||
dependencies:
|
||||
regenerator-runtime "^0.14.0"
|
||||
|
||||
@@ -558,43 +558,26 @@
|
||||
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3"
|
||||
integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==
|
||||
|
||||
"@intlify/core-base@9.2.2":
|
||||
version "9.2.2"
|
||||
resolved "https://registry.yarnpkg.com/@intlify/core-base/-/core-base-9.2.2.tgz#5353369b05cc9fe35cab95fe20afeb8a4481f939"
|
||||
integrity sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==
|
||||
"@intlify/core-base@9.11.1":
|
||||
version "9.11.1"
|
||||
resolved "https://registry.yarnpkg.com/@intlify/core-base/-/core-base-9.11.1.tgz#0cef49b87bc493eba8e024c4ae688aa5503fdb97"
|
||||
integrity sha512-qWXBBlEA+DC0CsHkfJiQK9ELm11c9I6lDpodY4FoOf99eMas1R6JR4woPhrfAcrtxFHp1UmXWdrQNKDegSW9IA==
|
||||
dependencies:
|
||||
"@intlify/devtools-if" "9.2.2"
|
||||
"@intlify/message-compiler" "9.2.2"
|
||||
"@intlify/shared" "9.2.2"
|
||||
"@intlify/vue-devtools" "9.2.2"
|
||||
"@intlify/message-compiler" "9.11.1"
|
||||
"@intlify/shared" "9.11.1"
|
||||
|
||||
"@intlify/devtools-if@9.2.2":
|
||||
version "9.2.2"
|
||||
resolved "https://registry.yarnpkg.com/@intlify/devtools-if/-/devtools-if-9.2.2.tgz#b13d9ac4b4e2fe6d2e7daa556517a8061fe8bd39"
|
||||
integrity sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==
|
||||
"@intlify/message-compiler@9.11.1":
|
||||
version "9.11.1"
|
||||
resolved "https://registry.yarnpkg.com/@intlify/message-compiler/-/message-compiler-9.11.1.tgz#6da0ab700c994903ddcac0ccf2d38e7ad4edf912"
|
||||
integrity sha512-y/aWx7DkaTKK2qWUw0hVbJpon8+urWXngeqh15DuIXZh6n/V/oPQiO/Ho1hUKbwap6MVMuz0OcnAJvqh3p9YPg==
|
||||
dependencies:
|
||||
"@intlify/shared" "9.2.2"
|
||||
"@intlify/shared" "9.11.1"
|
||||
source-map-js "^1.0.2"
|
||||
|
||||
"@intlify/message-compiler@9.2.2":
|
||||
version "9.2.2"
|
||||
resolved "https://registry.yarnpkg.com/@intlify/message-compiler/-/message-compiler-9.2.2.tgz#e42ab6939b8ae5b3d21faf6a44045667a18bba1c"
|
||||
integrity sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==
|
||||
dependencies:
|
||||
"@intlify/shared" "9.2.2"
|
||||
source-map "0.6.1"
|
||||
|
||||
"@intlify/shared@9.2.2":
|
||||
version "9.2.2"
|
||||
resolved "https://registry.yarnpkg.com/@intlify/shared/-/shared-9.2.2.tgz#5011be9ca2b4ab86f8660739286e2707f9abb4a5"
|
||||
integrity sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==
|
||||
|
||||
"@intlify/vue-devtools@9.2.2":
|
||||
version "9.2.2"
|
||||
resolved "https://registry.yarnpkg.com/@intlify/vue-devtools/-/vue-devtools-9.2.2.tgz#b95701556daf7ebb3a2d45aa3ae9e6415aed8317"
|
||||
integrity sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg==
|
||||
dependencies:
|
||||
"@intlify/core-base" "9.2.2"
|
||||
"@intlify/shared" "9.2.2"
|
||||
"@intlify/shared@9.11.1":
|
||||
version "9.11.1"
|
||||
resolved "https://registry.yarnpkg.com/@intlify/shared/-/shared-9.11.1.tgz#03e9ae5a90d62df4800f307d9f1dfc34b6fd8cbc"
|
||||
integrity sha512-yuDG82vjgId2oasNRgZ0PKJrF65zlL33MNyITP5itbLcP4AYOR/NcIuD+/DiI+GHXdxASMKJU0ZiITLc6RC+qw==
|
||||
|
||||
"@isaacs/cliui@^8.0.2":
|
||||
version "8.0.2"
|
||||
@@ -941,29 +924,29 @@
|
||||
resolved "https://registry.yarnpkg.com/@one-ini/wasm/-/wasm-0.1.1.tgz#6013659736c9dbfccc96e8a9c2b3de317df39323"
|
||||
integrity sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==
|
||||
|
||||
"@photo-sphere-viewer/core@^5.7.0":
|
||||
"@photo-sphere-viewer/core@^5.7.2":
|
||||
version "5.7.2"
|
||||
resolved "https://registry.yarnpkg.com/@photo-sphere-viewer/core/-/core-5.7.2.tgz#689a93354370b733441cfe336f7b0a04ab9df631"
|
||||
integrity sha512-5RznXVRwuO+Izceae2SbwYM/H8GHtwxKlT26P4UcRFZYsYKllMAggAz9hhU729Vu+r1+il5PHvomIsmPHVTTaw==
|
||||
dependencies:
|
||||
three "^0.161.0"
|
||||
|
||||
"@photo-sphere-viewer/equirectangular-tiles-adapter@^5.7.0":
|
||||
"@photo-sphere-viewer/equirectangular-tiles-adapter@^5.7.2":
|
||||
version "5.7.2"
|
||||
resolved "https://registry.yarnpkg.com/@photo-sphere-viewer/equirectangular-tiles-adapter/-/equirectangular-tiles-adapter-5.7.2.tgz#a83fc71b27c5f5ea8f6e4f3574db9528f0f3ad0d"
|
||||
integrity sha512-ldObfwS0LAUKhPaTXlN+3NEkdfHd8qqqe4GeYcUjfirdRujPXsp2lCxanWstRI9qOF2HEYV1KwhSMyC92Tdy9g==
|
||||
|
||||
"@photo-sphere-viewer/gallery-plugin@^5.7.0":
|
||||
"@photo-sphere-viewer/gallery-plugin@^5.7.2":
|
||||
version "5.7.2"
|
||||
resolved "https://registry.yarnpkg.com/@photo-sphere-viewer/gallery-plugin/-/gallery-plugin-5.7.2.tgz#1fa92520879a06cc9b80aa7123e933a0d3e467f0"
|
||||
integrity sha512-TG8sho17Q6vbVOtoQZ8Pfuo41vXOcswbHlLvlvnJyJyW46A9/VIA/8amcPEhVw4n1FZ07inp5/HoM9Hzd1VpEg==
|
||||
|
||||
"@photo-sphere-viewer/markers-plugin@^5.7.0":
|
||||
"@photo-sphere-viewer/markers-plugin@^5.7.2":
|
||||
version "5.7.2"
|
||||
resolved "https://registry.yarnpkg.com/@photo-sphere-viewer/markers-plugin/-/markers-plugin-5.7.2.tgz#c48f296c919eff7893df28536a246af6a361ca4f"
|
||||
integrity sha512-WBbFCRl6+XYkqRwJlN7Hpavhr5qnjaEyFRqY0rnsFelLIb/lfiYtMInJ1K0L4zv0so/NOW+AY+Tt8+HbIQMSTQ==
|
||||
|
||||
"@photo-sphere-viewer/virtual-tour-plugin@^5.7.0":
|
||||
"@photo-sphere-viewer/virtual-tour-plugin@^5.7.2":
|
||||
version "5.7.2"
|
||||
resolved "https://registry.yarnpkg.com/@photo-sphere-viewer/virtual-tour-plugin/-/virtual-tour-plugin-5.7.2.tgz#e85183b852bf4a62cc68e6e296bd83ab8d788ee4"
|
||||
integrity sha512-3pal6sgTtoIlgQwmqimjKlEfa1XZKZpYO6Wft4Zk/J6r3pyGf8ZqrD4XPtxrDgiV3f3nZXyaUry3xkrLrxQbSw==
|
||||
@@ -994,9 +977,9 @@
|
||||
picomatch "^2.2.2"
|
||||
|
||||
"@rushstack/eslint-patch@^1.1.4":
|
||||
version "1.10.1"
|
||||
resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.1.tgz#7ca168b6937818e9a74b47ac4e2112b2e1a024cf"
|
||||
integrity sha512-S3Kq8e7LqxkA9s7HKLqXGTGck1uwis5vAXan3FnU5yw1Ec5hsSGnq4s/UCaSqABPOnOTg7zASLyst7+ohgWexg==
|
||||
version "1.10.2"
|
||||
resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.2.tgz#053f1540703faa81dea2966b768ee5581c66aeda"
|
||||
integrity sha512-hw437iINopmQuxWPSUEvqE56NCPsiU8N4AYtfHmJFckclktzK9YQJieD3XkDCDH4OjL+C7zgPUh73R/nrcHrqw==
|
||||
|
||||
"@sideway/address@^4.1.5":
|
||||
version "4.1.5"
|
||||
@@ -1100,9 +1083,9 @@
|
||||
"@types/estree" "*"
|
||||
|
||||
"@types/eslint@*", "@types/eslint@^8.4.5":
|
||||
version "8.56.7"
|
||||
resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.7.tgz#c33b5b5a9cfb66881beb7b5be6c34aa3e81d3366"
|
||||
integrity sha512-SjDvI/x3zsZnOkYZ3lCt9lOZWZLB2jIlNKz+LBgCtDurK0JZcwucxYHn1w2BJkD34dgX9Tjnak0txtq4WTggEA==
|
||||
version "8.56.9"
|
||||
resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.9.tgz#403e9ced04a34e63f1c383c5b8ee1a94442c8cc4"
|
||||
integrity sha512-W4W3KcqzjJ0sHg2vAq9vfml6OhsJ53TcUjUqfzzZf/EChUtwspszj/S0pzMxnfRcO55/iGq47dscXw71Fxc4Zg==
|
||||
dependencies:
|
||||
"@types/estree" "*"
|
||||
"@types/json-schema" "*"
|
||||
@@ -1214,16 +1197,16 @@
|
||||
integrity sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==
|
||||
|
||||
"@types/node@*":
|
||||
version "20.12.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.3.tgz#d6658c2c7776c1cad93534bb45428195ed840c65"
|
||||
integrity sha512-sD+ia2ubTeWrOu+YMF+MTAB7E+O7qsMqAbMfW7DG3K1URwhZ5hN1pLlRVGbf4wDFzSfikL05M17EyorS86jShw==
|
||||
version "20.12.7"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.7.tgz#04080362fa3dd6c5822061aa3124f5c152cff384"
|
||||
integrity sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==
|
||||
dependencies:
|
||||
undici-types "~5.26.4"
|
||||
|
||||
"@types/node@^18.11.18":
|
||||
version "18.19.29"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.29.tgz#e7e9d796c1e195be7e7daf82b4abc50d017fb9db"
|
||||
integrity sha512-5pAX7ggTmWZdhUrhRWLPf+5oM7F80bcKVCBbr0zwEkTNzTJL2CWQjznpFgHYy6GrzkYi2Yjy7DHKoynFxqPV8g==
|
||||
version "18.19.31"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.31.tgz#b7d4a00f7cb826b60a543cebdbda5d189aaecdcd"
|
||||
integrity sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA==
|
||||
dependencies:
|
||||
undici-types "~5.26.4"
|
||||
|
||||
@@ -1472,49 +1455,49 @@
|
||||
semver "^7.3.4"
|
||||
strip-ansi "^6.0.0"
|
||||
|
||||
"@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==
|
||||
"@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==
|
||||
dependencies:
|
||||
"@babel/parser" "^7.23.9"
|
||||
"@vue/shared" "3.4.21"
|
||||
"@babel/parser" "^7.24.1"
|
||||
"@vue/shared" "3.4.23"
|
||||
entities "^4.5.0"
|
||||
estree-walker "^2.0.2"
|
||||
source-map-js "^1.0.2"
|
||||
source-map-js "^1.2.0"
|
||||
|
||||
"@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==
|
||||
"@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==
|
||||
dependencies:
|
||||
"@vue/compiler-core" "3.4.21"
|
||||
"@vue/shared" "3.4.21"
|
||||
"@vue/compiler-core" "3.4.23"
|
||||
"@vue/shared" "3.4.23"
|
||||
|
||||
"@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==
|
||||
"@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==
|
||||
dependencies:
|
||||
"@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"
|
||||
"@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"
|
||||
estree-walker "^2.0.2"
|
||||
magic-string "^0.30.7"
|
||||
postcss "^8.4.35"
|
||||
source-map-js "^1.0.2"
|
||||
magic-string "^0.30.8"
|
||||
postcss "^8.4.38"
|
||||
source-map-js "^1.2.0"
|
||||
|
||||
"@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==
|
||||
"@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==
|
||||
dependencies:
|
||||
"@vue/compiler-dom" "3.4.21"
|
||||
"@vue/shared" "3.4.21"
|
||||
"@vue/compiler-dom" "3.4.23"
|
||||
"@vue/shared" "3.4.23"
|
||||
|
||||
"@vue/devtools-api@^6.2.1", "@vue/devtools-api@^6.5.0", "@vue/devtools-api@^6.5.1":
|
||||
"@vue/devtools-api@^6.5.0", "@vue/devtools-api@^6.5.1":
|
||||
version "6.6.1"
|
||||
resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.6.1.tgz#7c14346383751d9f6ad4bea0963245b30220ef83"
|
||||
integrity sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==
|
||||
@@ -1551,42 +1534,42 @@
|
||||
path-browserify "^1.0.1"
|
||||
vue-template-compiler "^2.7.14"
|
||||
|
||||
"@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==
|
||||
"@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==
|
||||
dependencies:
|
||||
"@vue/shared" "3.4.21"
|
||||
"@vue/shared" "3.4.23"
|
||||
|
||||
"@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==
|
||||
"@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==
|
||||
dependencies:
|
||||
"@vue/reactivity" "3.4.21"
|
||||
"@vue/shared" "3.4.21"
|
||||
"@vue/reactivity" "3.4.23"
|
||||
"@vue/shared" "3.4.23"
|
||||
|
||||
"@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==
|
||||
"@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==
|
||||
dependencies:
|
||||
"@vue/runtime-core" "3.4.21"
|
||||
"@vue/shared" "3.4.21"
|
||||
"@vue/runtime-core" "3.4.23"
|
||||
"@vue/shared" "3.4.23"
|
||||
csstype "^3.1.3"
|
||||
|
||||
"@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==
|
||||
"@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==
|
||||
dependencies:
|
||||
"@vue/compiler-ssr" "3.4.21"
|
||||
"@vue/shared" "3.4.21"
|
||||
"@vue/compiler-ssr" "3.4.23"
|
||||
"@vue/shared" "3.4.23"
|
||||
|
||||
"@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/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/test-utils@^2.2.4":
|
||||
version "2.4.5"
|
||||
@@ -2285,9 +2268,9 @@ camelcase@^6.2.0:
|
||||
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
|
||||
|
||||
caniuse-lite@^1.0.30001587:
|
||||
version "1.0.30001605"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001605.tgz#ca12d7330dd8bcb784557eb9aa64f0037870d9d6"
|
||||
integrity sha512-nXwGlFWo34uliI9z3n6Qc0wZaf7zaZWA1CPZ169La5mV3I/gem7bst0vr5XQH5TJXZIMfDeZyOrZnSlVzKxxHQ==
|
||||
version "1.0.30001610"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001610.tgz#2f44ed6e21d359e914271ae35b68903632628ccf"
|
||||
integrity sha512-QFutAY4NgaelojVMjY63o6XlZyORPaLfyMnsl3HgnWdJUcX6K0oaJymHjH8PT5Gk7sTm8rvC/c5COUQKXqmOMA==
|
||||
|
||||
caseless@~0.12.0:
|
||||
version "0.12.0"
|
||||
@@ -2665,9 +2648,9 @@ csstype@^3.1.3:
|
||||
integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
|
||||
|
||||
cypress@^13.1.0:
|
||||
version "13.7.2"
|
||||
resolved "https://registry.yarnpkg.com/cypress/-/cypress-13.7.2.tgz#61e841382abb20e0a9a063086ee0d850af3ef6bc"
|
||||
integrity sha512-FF5hFI5wlRIHY8urLZjJjj/YvfCBrRpglbZCLr/cYcL9MdDe0+5usa8kTIrDHthlEc9lwihbkb5dmwqBDNS2yw==
|
||||
version "13.7.3"
|
||||
resolved "https://registry.yarnpkg.com/cypress/-/cypress-13.7.3.tgz#3e7dcd32e007676a6c8e972293c50d6ef329d991"
|
||||
integrity sha512-uoecY6FTCAuIEqLUYkTrxamDBjMHTYak/1O7jtgwboHiTnS1NaMOoR08KcTrbRZFCBvYOiS4tEkQRmsV+xcrag==
|
||||
dependencies:
|
||||
"@cypress/request" "^3.0.0"
|
||||
"@cypress/xvfb" "^1.2.4"
|
||||
@@ -2804,9 +2787,9 @@ decode-named-character-reference@^1.0.0:
|
||||
character-entities "^2.0.0"
|
||||
|
||||
dedent@^1.0.0:
|
||||
version "1.5.1"
|
||||
resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff"
|
||||
integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==
|
||||
version "1.5.3"
|
||||
resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a"
|
||||
integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==
|
||||
|
||||
deep-eql@^4.1.3:
|
||||
version "4.1.3"
|
||||
@@ -3043,16 +3026,16 @@ editorconfig@^1.0.4:
|
||||
semver "^7.5.3"
|
||||
|
||||
ejs@^3.1.6:
|
||||
version "3.1.9"
|
||||
resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361"
|
||||
integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==
|
||||
version "3.1.10"
|
||||
resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b"
|
||||
integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==
|
||||
dependencies:
|
||||
jake "^10.8.5"
|
||||
|
||||
electron-to-chromium@^1.4.668:
|
||||
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==
|
||||
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==
|
||||
|
||||
emittery@^0.13.1:
|
||||
version "0.13.1"
|
||||
@@ -3479,9 +3462,9 @@ eslint-plugin-prettier@^4.0.0:
|
||||
prettier-linter-helpers "^1.0.0"
|
||||
|
||||
eslint-plugin-vue@^9.8.0:
|
||||
version "9.24.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.24.0.tgz#71209f4652ee767f18c0bf56f25991b7cdc5aa46"
|
||||
integrity sha512-9SkJMvF8NGMT9aQCwFc5rj8Wo1XWSMSHk36i7ZwdI614BU7sIOR28ZjuFPKp8YGymZN12BSEbiSwa7qikp+PBw==
|
||||
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==
|
||||
dependencies:
|
||||
"@eslint-community/eslint-utils" "^4.4.0"
|
||||
globals "^13.24.0"
|
||||
@@ -3985,18 +3968,18 @@ 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-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==
|
||||
geovisio@2.5.1-develop-54c2e0c8:
|
||||
version "2.5.1-develop-54c2e0c8"
|
||||
resolved "https://registry.yarnpkg.com/geovisio/-/geovisio-2.5.1-develop-54c2e0c8.tgz#2fa5d12d0d8b26fc6bfc8a344cc6207ee38d988f"
|
||||
integrity sha512-OA47XzvsdZn8CjKhup/IHtpKV48zePzrYa2AaP7cEDEELdb+GjnJNL20NsFmaVzy+Z+m37KYocGw1YNjQlDpRQ==
|
||||
dependencies:
|
||||
"@fortawesome/fontawesome-svg-core" "^6.4.0"
|
||||
"@fortawesome/free-solid-svg-icons" "^6.4.0"
|
||||
"@photo-sphere-viewer/core" "^5.7.0"
|
||||
"@photo-sphere-viewer/equirectangular-tiles-adapter" "^5.7.0"
|
||||
"@photo-sphere-viewer/gallery-plugin" "^5.7.0"
|
||||
"@photo-sphere-viewer/markers-plugin" "^5.7.0"
|
||||
"@photo-sphere-viewer/virtual-tour-plugin" "^5.7.0"
|
||||
"@photo-sphere-viewer/core" "^5.7.2"
|
||||
"@photo-sphere-viewer/equirectangular-tiles-adapter" "^5.7.2"
|
||||
"@photo-sphere-viewer/gallery-plugin" "^5.7.2"
|
||||
"@photo-sphere-viewer/markers-plugin" "^5.7.2"
|
||||
"@photo-sphere-viewer/virtual-tour-plugin" "^5.7.2"
|
||||
documentation "^14.0.1"
|
||||
maplibre-gl "^3.6.2"
|
||||
pmtiles "^2.11.0"
|
||||
@@ -5666,10 +5649,10 @@ lru-cache@^6.0.0:
|
||||
dependencies:
|
||||
yallist "^4.0.0"
|
||||
|
||||
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==
|
||||
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==
|
||||
dependencies:
|
||||
"@jridgewell/sourcemap-codec" "^1.4.15"
|
||||
|
||||
@@ -6861,7 +6844,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.35:
|
||||
postcss@^8.4.18, postcss@^8.4.27, postcss@^8.4.38:
|
||||
version "8.4.38"
|
||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e"
|
||||
integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==
|
||||
@@ -7307,9 +7290,9 @@ safe-regex-test@^1.0.3:
|
||||
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||
|
||||
sass@^1.62.0:
|
||||
version "1.72.0"
|
||||
resolved "https://registry.yarnpkg.com/sass/-/sass-1.72.0.tgz#5b9978943fcfb32b25a6a5acb102fc9dabbbf41c"
|
||||
integrity sha512-Gpczt3WA56Ly0Mn8Sl21Vj94s1axi9hDIzDFn9Ph9x3C3p4nNyvsqJoQyVXKou6cBlfFWEgRW4rT8Tb4i3XnVA==
|
||||
version "1.75.0"
|
||||
resolved "https://registry.yarnpkg.com/sass/-/sass-1.75.0.tgz#91bbe87fb02dfcc34e052ddd6ab80f60d392be6c"
|
||||
integrity sha512-ShMYi3WkrDWxExyxSZPst4/okE9ts46xZmJDSawJQrnte7M1V9fScVB+uNXOVKRBt0PggHOwoZcn8mYX4trnBw==
|
||||
dependencies:
|
||||
chokidar ">=3.0.0 <4.0.0"
|
||||
immutable "^4.0.0"
|
||||
@@ -7530,7 +7513,7 @@ source-map-support@~0.5.20:
|
||||
buffer-from "^1.0.0"
|
||||
source-map "^0.6.0"
|
||||
|
||||
source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
|
||||
source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
|
||||
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
|
||||
@@ -7613,7 +7596,16 @@ string-length@^4.0.1:
|
||||
char-regex "^1.0.2"
|
||||
strip-ansi "^6.0.0"
|
||||
|
||||
"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
|
||||
"string-width-cjs@npm:string-width@^4.2.0":
|
||||
version "4.2.3"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
|
||||
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
|
||||
dependencies:
|
||||
emoji-regex "^8.0.0"
|
||||
is-fullwidth-code-point "^3.0.0"
|
||||
strip-ansi "^6.0.1"
|
||||
|
||||
string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
|
||||
version "4.2.3"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
|
||||
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
|
||||
@@ -7684,7 +7676,14 @@ stringify-entities@^4.0.0:
|
||||
character-entities-html4 "^2.0.0"
|
||||
character-entities-legacy "^3.0.0"
|
||||
|
||||
"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
||||
"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
||||
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
|
||||
dependencies:
|
||||
ansi-regex "^5.0.1"
|
||||
|
||||
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
||||
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
|
||||
@@ -7850,9 +7849,9 @@ through@^2.3.8:
|
||||
integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
|
||||
|
||||
tinybench@^2.3.1:
|
||||
version "2.6.0"
|
||||
resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.6.0.tgz#1423284ee22de07c91b3752c048d2764714b341b"
|
||||
integrity sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==
|
||||
version "2.7.0"
|
||||
resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.7.0.tgz#d56198a69bead7e240c8f9542484f3eb3c3f749d"
|
||||
integrity sha512-Qgayeb106x2o4hNzNjsZEfFziw8IbKqtbXBjVh7VIZfBxfD5M4gWtpyx5+YTae2gJ6Y6Dz/KLepiv16RFeQWNA==
|
||||
|
||||
tinypool@^0.3.0:
|
||||
version "0.3.1"
|
||||
@@ -8396,9 +8395,9 @@ vue-axios@^3.5.2:
|
||||
integrity sha512-GP+dct7UlAWkl1qoP3ppw0z6jcSua5/IrMpjB5O8bh089iIiJ+hdxPYH2NPEpajlYgkW5EVMP95ttXWdas1O0g==
|
||||
|
||||
vue-component-type-helpers@^2.0.0:
|
||||
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==
|
||||
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==
|
||||
|
||||
vue-demi@>=0.14.5, vue-demi@>=0.14.7:
|
||||
version "0.14.7"
|
||||
@@ -8431,25 +8430,24 @@ vue-eslint-parser@^9.1.0, vue-eslint-parser@^9.1.1, vue-eslint-parser@^9.4.2:
|
||||
lodash "^4.17.21"
|
||||
semver "^7.3.6"
|
||||
|
||||
vue-i18n@9.2.2:
|
||||
version "9.2.2"
|
||||
resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-9.2.2.tgz#aeb49d9424923c77e0d6441e3f21dafcecd0e666"
|
||||
integrity sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ==
|
||||
vue-i18n@9.11.1:
|
||||
version "9.11.1"
|
||||
resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-9.11.1.tgz#87d8fceaf8862240d64091227ecf66a1465d6096"
|
||||
integrity sha512-S7Xi8DkLQG4xnnbxkxzipJK6CdfLdZkmApn95st89HFGp8LTmTH0Tv+Zw6puhOCZJCFrH73PHo3Ylwd2+Bmdxg==
|
||||
dependencies:
|
||||
"@intlify/core-base" "9.2.2"
|
||||
"@intlify/shared" "9.2.2"
|
||||
"@intlify/vue-devtools" "9.2.2"
|
||||
"@vue/devtools-api" "^6.2.1"
|
||||
"@intlify/core-base" "9.11.1"
|
||||
"@intlify/shared" "9.11.1"
|
||||
"@vue/devtools-api" "^6.5.0"
|
||||
|
||||
vue-matomo@^4.2.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/vue-matomo/-/vue-matomo-4.2.0.tgz#d65e369e4ead1d95ef790bef3627512cac3d25e9"
|
||||
integrity sha512-m5hCw7LH3wPDcERaF4sp/ojR9sEx7Rl8TpOyH/4jjQxMF2DuY/q5pO+i9o5Dx+BXLSa9+IQ0qhAbWYRyESQXmA==
|
||||
|
||||
vue-router@^4.1.6:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.3.0.tgz#d5913f27bf68a0a178ee798c3c88be471811a235"
|
||||
integrity sha512-dqUcs8tUeG+ssgWhcPbjHvazML16Oga5w34uCUmsk7i0BcnskoLGwjpa15fqMr2Fa5JgVBrdL2MEgqz6XZ/6IQ==
|
||||
vue-router@^4.3.0:
|
||||
version "4.3.1"
|
||||
resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.3.1.tgz#05943e16781d8feb5195a932824afecd4d0b8282"
|
||||
integrity sha512-D0h3oyP6vp28BOvxv2hVpiqFTjTJizCf1BuMmCibc8UW0Ll/N80SWqDd/hqPMaZfzW1j+s2s+aTRyBIP9ElzOw==
|
||||
dependencies:
|
||||
"@vue/devtools-api" "^6.5.1"
|
||||
|
||||
@@ -8487,16 +8485,16 @@ vue3-smooth-scroll@^0.8.1:
|
||||
resolved "https://registry.yarnpkg.com/vue3-smooth-scroll/-/vue3-smooth-scroll-0.8.1.tgz#c2de7dc33c0da8f195bbd70ac27b02c9cb1bd44c"
|
||||
integrity sha512-9EN1aiBT2RtkIe1MoGiyGjUoLmqmlJ96R9/QVCylaiurHQ7oGu1SPzEoGJyxdhCa1q3qyMcX/pne1oTAn1UaoQ==
|
||||
|
||||
vue@^3.0.0, vue@^3.2.45:
|
||||
version "3.4.21"
|
||||
resolved "https://registry.yarnpkg.com/vue/-/vue-3.4.21.tgz#69ec30e267d358ee3a0ce16612ba89e00aaeb731"
|
||||
integrity sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==
|
||||
vue@^3.0.0, vue@^3.4.21:
|
||||
version "3.4.23"
|
||||
resolved "https://registry.yarnpkg.com/vue/-/vue-3.4.23.tgz#9d5a990a71c5bd5446f80377828e6587cfc488d5"
|
||||
integrity sha512-X1y6yyGJ28LMUBJ0k/qIeKHstGd+BlWQEOT40x3auJFTmpIhpbKLgN7EFsqalnJXq1Km5ybDEsp6BhuWKciUDg==
|
||||
dependencies:
|
||||
"@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"
|
||||
"@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"
|
||||
|
||||
w3c-xmlserializer@^4.0.0:
|
||||
version "4.0.0"
|
||||
@@ -8641,7 +8639,7 @@ which@^2.0.1:
|
||||
dependencies:
|
||||
isexe "^2.0.0"
|
||||
|
||||
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
|
||||
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
|
||||
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
|
||||
@@ -8659,6 +8657,15 @@ wrap-ansi@^6.2.0:
|
||||
string-width "^4.1.0"
|
||||
strip-ansi "^6.0.0"
|
||||
|
||||
wrap-ansi@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
|
||||
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
|
||||
dependencies:
|
||||
ansi-styles "^4.0.0"
|
||||
string-width "^4.1.0"
|
||||
strip-ansi "^6.0.0"
|
||||
|
||||
wrap-ansi@^8.1.0:
|
||||
version "8.1.0"
|
||||
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"
|
||||
|
||||
Reference in New Issue
Block a user