@@ -55,7 +66,6 @@ export default {
* @returns {Promise} Промис, который выполняется после установки обработчика события.
*/
async mount(router: Router): Promise {
-
const backButton = document.getElementById('back-button') as HTMLButtonElement;
const createTripButton = document.getElementById('trip-create-button') as HTMLButtonElement;
const authPleaseBlock = document.getElementById('please-block') as HTMLElement;
@@ -147,9 +157,14 @@ export default {
base64Photos.push(base64);
}
- const res = await Api.putPhotos(parentItem.id, base64Photos);
+ const res = await Api.postPhotos(parentItem.id, base64Photos);
+ if (res.status === 413) {
+ popUpMessage.showMessage('Слишком большое фото');
+ return;
+ }
+
if (!res.ok) {
- alert('Ошибка загрузки фото');
+ popUpMessage.showMessage('Ошибка загрузки фото');
return;
}
@@ -175,6 +190,58 @@ export default {
});
});
+
+ document.querySelectorAll('.trips-edit-icon').forEach(icon => {
+ icon.addEventListener('click', async () => {
+ const parentItem = icon.closest('.gallery-item-trips');
+ if (parentItem) {
+ const id = parentItem.id;
+ await router.goto(`/edittrip/${id}`);
+ }
+ });
+ });
+
+ const shareBlock = document.getElementById('share-block') as HTMLElement;
+ const shareLink = document.getElementById('share-link') as HTMLElement;
+ const readModeButton = document.getElementById('read-mode-button') as HTMLButtonElement;
+ const editModeButton = document.getElementById('edit-mode-button') as HTMLButtonElement;
+ let id = '';
+ readModeButton.addEventListener('click', () => {
+ shareLink.textContent = `therewillbetrip.ru/trips/${id}`;
+ navigator.clipboard.writeText(`therewillbetrip.ru/trips/${id}`);
+ popUpMessage.showMessage('Ссылка скопирована');
+ });
+ editModeButton.addEventListener('click', async () => {
+ const resLink = await Api.postTripLink(id, 'editing');
+ shareLink.textContent = resLink.data.link;
+ navigator.clipboard.writeText(resLink.data.link);
+ popUpMessage.showMessage('Ссылка скопирована');
+ });
+
+ const blurElement = document.getElementById('blur-element') as HTMLElement;
+ blurElement.addEventListener('click', () => {
+ shareBlock.classList.add('hidden-animation');
+ setTimeout(() => shareBlock.classList.add('hidden'), 300);
+ blurElement.classList.add('hidden-animation');
+ setTimeout(() => blurElement.classList.add('hidden'), 300);
+ });
+
+ document.querySelectorAll('.trips-share-icon').forEach(icon => {
+ icon.addEventListener('click', async () => {
+ const parentItem = icon.closest('.gallery-item-trips');
+ if (parentItem) {
+ id = parentItem.id;
+ blurElement.classList.remove('hidden');
+ setTimeout(() => blurElement.classList.remove('hidden-animation'), 100);
+ shareBlock.classList.remove('hidden');
+ setTimeout(() => shareBlock.classList.remove('hidden-animation'), 100);
+ shareLink.textContent = `therewillbetrip.ru/trips/${id}`;
+ navigator.clipboard.writeText(`therewillbetrip.ru/trips/${id}`);
+ popUpMessage.showMessage('Ссылка скопирована');
+ }
+ });
+ });
+
document.querySelectorAll('.gallery-trips-name').forEach(name => {
name.addEventListener('click', async () => {
const parentItem = name.closest('.gallery-item-trips');
diff --git a/src/styles/error.styl b/src/styles/error.styl
index 1cc6ab2..c0d0067 100644
--- a/src/styles/error.styl
+++ b/src/styles/error.styl
@@ -10,34 +10,3 @@
&.visible
opacity 1
-
-.error-window-message
- background myWhite
- color myGrey
- border-radius 10px
- display block
- opacity 1
- position fixed
- font-size 27px
- padding 40px
- text-align center
- align-content center
- z-index 999
- top 50px
- left 50%
- box-shadow 0px 10px 20px 5px myShadow
- transform translate(-50%, 0)
- transition opacity 0.3s ease
-
- &.hidden
- display none
-
- &.hidden-animation
- opacity 0
-
- .error-close-button
- position absolute
- width 25px
- right 10px
- top 10px
- cursor pointer
diff --git a/src/styles/home-gallery.styl b/src/styles/home-gallery.styl
index 0954c7f..3785d6b 100644
--- a/src/styles/home-gallery.styl
+++ b/src/styles/home-gallery.styl
@@ -121,16 +121,26 @@
.gallery
padding 20px
- list-style none
- columns 3 300px
+ display grid
+ grid-template-columns 1fr 1fr 1fr
margin-top 0
+ @media (max-width 700px)
+ display flex
+ flex-direction column
+
+ .place-column
+ list-style none
+ columns 1 auto
+ height 100%
+ width 100%
+ padding 0
+
.gallery-item
border-radius 20px
position relative
margin auto
width 300px
- height 100%
cursor pointer
-webkit-column-break-inside avoid /* Chrome, Safari, Opera */
page-break-inside avoid /* Firefox */
diff --git a/src/styles/index.styl b/src/styles/index.styl
index f9a76f3..9628f84 100644
--- a/src/styles/index.styl
+++ b/src/styles/index.styl
@@ -5,6 +5,7 @@
@import 'footer.styl'
@import 'search.styl'
@import 'csat.styl'
+@import 'pop-up-message.styl'
@import 'home-gallery.styl'
@import 'signin.styl'
diff --git a/src/styles/mixins.styl b/src/styles/mixins.styl
index 6c61f17..2968850 100644
--- a/src/styles/mixins.styl
+++ b/src/styles/mixins.styl
@@ -35,6 +35,10 @@ mixinFormBlock()
height fit-content
margin 40px auto
+ @media (max-width 700px)
+ margin 0 auto
+ width 90%
+
mixinForm()
display grid
width 100%
diff --git a/src/styles/place.styl b/src/styles/place.styl
index 098d8d9..2105b74 100644
--- a/src/styles/place.styl
+++ b/src/styles/place.styl
@@ -76,6 +76,9 @@
overflow auto
z-index -1
+ @media (max-width 700px)
+ font-size 27px
+
.back-button-block
mixinBlock(myBlack)
margin 0
@@ -268,6 +271,9 @@
height 100%
border-radius 20px
+ @media (max-width 700px)
+ width 85%
+
.reviews-gallery
display flex
flex-direction row
diff --git a/src/styles/pop-up-message.styl b/src/styles/pop-up-message.styl
new file mode 100644
index 0000000..7004215
--- /dev/null
+++ b/src/styles/pop-up-message.styl
@@ -0,0 +1,23 @@
+.pop-up-message
+ background myWhite
+ color myGrey
+ border-radius 10px
+ display block
+ opacity 1
+ position fixed
+ font-size 27px
+ padding 40px
+ text-align center
+ align-content center
+ z-index 999
+ top 50px
+ left 50%
+ box-shadow 0px 10px 20px 5px myShadow
+ transform translate(-50%, 0)
+ transition opacity 0.3s ease
+
+ &.hidden
+ display none
+
+ &.hidden-animation
+ opacity 0
\ No newline at end of file
diff --git a/src/styles/profile.styl b/src/styles/profile.styl
index 12bc596..116f135 100644
--- a/src/styles/profile.styl
+++ b/src/styles/profile.styl
@@ -272,10 +272,17 @@
padding 0
.gallery-item-profile-trips
- mixinGalleryItem(250px, 250px, myWhite)
+ margin 0
+ padding 15px
+ border-radius 20px
+ background myWhite
+ height 250px
+ width 250px
+ overflow hidden
+ border 2px solid myShadow
display grid
grid-template-rows repeat(4, 1fr)
- grid-template-columns 1fr 1fr
+ grid-template-columns 25% 75%
grid-template-areas "a b"\
"c c"\
"d d"\
@@ -327,9 +334,7 @@
.gallery-item-achievements
mixinGalleryItem(250px, 200px, myBlack)
- grid-template-rows auto auto auto
- grid-template-columns 100%
- row-gap 0
+ height fit-content
place-items center
.gallery-item-achievements-img
@@ -343,9 +348,6 @@
font-size 20px
color myWhite
text-align center
- overflow hidden
- white-space nowrap
- text-overflow ellipsis
.gallery-item-achievements-progressbar
font-size 20px
diff --git a/src/styles/trip.styl b/src/styles/trip.styl
index 871fe0a..1c9b5fa 100644
--- a/src/styles/trip.styl
+++ b/src/styles/trip.styl
@@ -1,145 +1,14 @@
.trip-page
mixinSideMenu()
- .copy-message
- background myWhite
- color myGrey
- border-radius 10px
- display block
- opacity 1
- position fixed
- font-size 27px
- padding 40px
- text-align center
- align-content center
- z-index 999
- top 50px
- left 50%
- box-shadow 0px 10px 20px 5px myShadow
- transform translate(-50%, 0)
- transition opacity 0.3s ease
-
- &.hidden
- display none
-
- &.hidden-animation
- opacity 0
-
- .blur-element
- position fixed
- inset 0
- width 100%
- height 100%
- backdrop-filter blur(5px)
- background myShadow
- display block
- opacity 1
- transition opacity 0.3s ease
-
- &.hidden
- display none
-
- &.hidden-animation
- opacity 1
-
- .share-block
- position fixed
- left 50%
- top 50%
- transform translate(-50%, -50%)
- background myWhite
- width fit-content
- height fit-content
- padding 40px
- justify-content center
- align-content center
- border-radius 20px
- z-index 998
- display grid
- grid-template-rows 60px 40px 40px
- grid-template-columns auto auto auto auto
- grid-template-areas "a a a a"\
- "b b b c"\
- "d d e e"
- row-gap 20px
- column-gap 10px
- opacity 1
- transition opacity 0.3s ease
-
- .grid-share-block-title
- grid-area a
-
- .grid-share-link
- grid-area b
-
- .grid-copy-link-button
- grid-area c
-
- .grid-read-mode
- grid-area d
-
- .grid-edit-mode
- grid-area e
-
-
- &.hidden
- display none
-
- &.hidden-animation
- opacity 1
-
- .share-link
- border 2px solid myLightGrey
- border-radius 10px
- width 222px
- padding 10px
- overflow-x scroll
- scrollbar-width none
- height 100%
-
- .copy-link-button
- background myGrey
- cursor pointer
- height 100%
- padding 5px
- border-radius 10px
-
- .share-block-title
- color myBlack
- font-size 27px
- justify-self center
-
- .read-mode
- background myGrey
- color myWhite
- padding 5px 20px
- cursor pointer
- justify-self center
- text-align center
- align-content center
- border-radius 10px
- width 100%
-
- .edit-mode
- background myGrey
- color myWhite
- padding 5px 20px
- cursor pointer
- justify-self center
- text-align center
- align-content center
- border-radius 10px
- width 100%
-
-
main
mixinBlock(myWhite)
display grid
grid-template-columns 10% 1fr 1fr 1fr 1fr 4% 4%
grid-template-rows 70px 70px auto auto
- grid-template-areas "a b b b b c d"\
- "g g g g e e e"\
- "g g g g . . ."\
+ grid-template-areas "a b b b b . d"\
+ "c c c c e e e"\
+ "g g g g g g g"\
"f f f f f f f"
row-gap 20px
column-gap 10px
@@ -149,6 +18,7 @@
@media (max-width 700px)
margin 15px
+ padding 25px
grid-template-rows auto auto auto auto auto
grid-template-columns 15% auto 15%
grid-template-areas "b b b"\
@@ -163,7 +33,7 @@
.grid-trip-title
grid-area b
- .grid-trip-edit-icon
+ .grid-trip-authors-gallery
grid-area c
.grid-trip-share-icon
@@ -178,20 +48,54 @@
.grid-trip-description
grid-area g
- .trip-edit-icon
+ .trip-authors-gallery
+ display flex
+ flex-direction row
+ overflow-x scroll
+ scrollbar-width none
width 100%
- padding 5px
- background myBlack
- border-radius 10px
- cursor pointer
- transition all 0.3s ease
+ height 100%
+ align-items center
+ column-gap 10px
- @media (max-width 700px)
- justify-self center
- width 40px
+ .please-no-authors
+ font-size 27px
+ color myBlack
- &:hover
- background myPink
+ .authors-block
+ background myBlack
+ align-content center
+ justify-content center
+ border-radius 15px
+ height 100%
+ width fit-content
+ display grid
+ grid-template-columns auto auto
+ padding 0 10px
+ column-gap 10px
+
+ @media (max-width 700px)
+ background none
+ padding 0
+ grid-template-columns auto
+
+ .author-avatar
+ width 50px
+ height 50px
+ background myBlack
+ border-radius 50%
+
+ .author-username
+ font-size 27px
+ color myWhite
+ white-space nowrap
+ overflow hidden
+ text-overflow ellipsis
+ text-align center
+ align-self center
+
+ @media (max-width 700px)
+ display none
.trip-share-icon
width 100%
@@ -226,6 +130,14 @@
text-align center
align-content center
border-radius 10px
+ white-space nowrap
+ overflow hidden
+ text-overflow ellipsis
+
+ @media (max-width 700px)
+ width 100%
+ font-size 22px
+ padding 10px 20px
.trip-date
background myBlack
@@ -253,11 +165,37 @@
display flex
flex-direction row
column-gap 20px
+ justify-content center
+ padding-bottom 30px
.trip-photos
display flex
+ flex-wrap wrap
flex-direction row
column-gap 20px
+ row-gap 20px
+
+ @media (max-width 700px)
+ column-gap 10px
+ row-gap 10px
+
+
+ .please-block
+ align-items center
+ display flex
+ flex-direction column
+
+ .please-img
+ height 200px
+ width 200px
+
+ .please-no-photo
+ font-size 24px
+ font-weight bold
+ color myBlack
+ margin auto
+ text-align center
+ width fit-content
.add-photo-button
color myWhite
diff --git a/src/styles/trips.styl b/src/styles/trips.styl
index 329df8d..8c0ef86 100644
--- a/src/styles/trips.styl
+++ b/src/styles/trips.styl
@@ -1,6 +1,117 @@
.trips-page
mixinSideMenu()
+ .blur-element
+ position fixed
+ inset 0
+ width 100%
+ height 100%
+ backdrop-filter blur(5px)
+ background myShadow
+ display block
+ opacity 1
+ transition opacity 0.3s ease
+ z-index 990
+
+ &.hidden
+ display none
+
+ &.hidden-animation
+ opacity 1
+
+ .share-block
+ position fixed
+ left 50%
+ top 50%
+ transform translate(-50%, -50%)
+ background myWhite
+ width 30%
+ height fit-content
+ padding 40px
+ justify-content center
+ align-content center
+ border-radius 20px
+ z-index 998
+ display grid
+ grid-template-rows auto auto auto
+ grid-template-columns 1fr 1fr
+ grid-template-areas "a a"\
+ "b b"\
+ "c d"
+ row-gap 15px
+ column-gap 10px
+ opacity 1
+ transition opacity 0.3s ease
+
+ @media (max-width 700px)
+ width 95%
+
+ .grid-share-block-title
+ grid-area a
+
+ .grid-share-link
+ grid-area b
+
+ .grid-read-mode
+ grid-area c
+
+ .grid-edit-mode
+ grid-area d
+
+
+ &.hidden
+ display none
+
+ &.hidden-animation
+ opacity 1
+
+ .share-link
+ border 2px solid myLightGrey
+ border-radius 10px
+ width 100%
+ padding 10px
+ overflow-x scroll
+ overflow-y hidden
+ scrollbar-width none
+ white-space nowrap
+ height 100%
+
+ .share-block-title
+ color myBlack
+ font-size 27px
+ justify-self center
+ text-align center
+
+ .read-mode
+ background myGrey
+ color myWhite
+ padding 5px 20px
+ cursor pointer
+ justify-self center
+ text-align center
+ align-content center
+ border-radius 10px
+ width 100%
+ transition background 0.3s ease
+
+ &:hover
+ background myPink
+
+ .edit-mode
+ background myGrey
+ color myWhite
+ padding 5px 20px
+ cursor pointer
+ justify-self center
+ text-align center
+ align-content center
+ border-radius 10px
+ width 100%
+ transition background 0.3s ease
+
+ &:hover
+ background myPink
+
.trips-block
mixinBlock(myBlack)
display flex
@@ -82,24 +193,23 @@
display grid
gap 10px
align-items center
- grid-template-columns 10% 10% 50% 20% 5%
+ grid-template-columns 10% 10% 45% 15% 5% 5%
grid-template-rows 1fr 1fr
- grid-template-areas "a b c e g"\
- "a b d e g"
+ grid-template-areas "a b c e f h"\
+ "a b d e g h"
@media (max-width 700px)
- grid-template-columns 15% 70% 15%
- grid-template-areas "a c g"\
- "a d g"
-
+ grid-template-rows 25% 30% 40%
+ grid-template-columns 1fr 1fr 1fr 1fr 1fr
+ grid-template-areas "a c c c c"\
+ "a d d d d"\
+ "a f g h ."
.gallery-item-trips-bottom-panel
display flex
width 100%
height 100%
overflow-y hidden
- overflow-x scroll
- scrollbar-width none
flex-direction row
column-gap 20px
opacity 1
@@ -116,6 +226,8 @@
display flex
flex-direction row
column-gap 20px
+ overflow-x scroll
+ scrollbar-width none
.add-photo-button
color myWhite
@@ -184,10 +296,13 @@
grid-area e
.trips-edit-icon-grid
grid-area f
- .trips-delete-icon-grid
+ .trips-share-icon-grid
grid-area g
+ .trips-delete-icon-grid
+ grid-area h
.trips-trip-icon
+ display block
width 65px
height 65px
@@ -205,6 +320,7 @@
display none
.trips-open-icon
+ display block
width 35px
height 35px
margin auto
@@ -216,6 +332,7 @@
transform rotate(90deg)
.trips-delete-icon
+ display block
cursor pointer
border-radius 10px
height 100%
@@ -226,6 +343,43 @@
&:hover
background myRed
+ @media (max-width 700px)
+ width 32px
+ height 32px
+
+ .trips-edit-icon
+ display block
+ cursor pointer
+ border-radius 10px
+ height 100%
+ width 100%
+ background myBlack
+ transition background 0.3s ease
+ padding 5px
+
+ &:hover
+ background myPink
+
+ @media (max-width 700px)
+ width 32px
+ height 32px
+
+ .trips-share-icon
+ cursor pointer
+ border-radius 10px
+ height 100%
+ width 100%
+ background myBlack
+ transition background 0.3s ease
+ padding 5px
+
+ &:hover
+ background myPink
+
+ @media (max-width 700px)
+ width 32px
+ height 32px
+
.trips-column-open
display grid
align-items center
diff --git a/src/utils/Api.ts b/src/utils/Api.ts
index 419dad5..6c95bd2 100644
--- a/src/utils/Api.ts
+++ b/src/utils/Api.ts
@@ -7,7 +7,7 @@ type JsonResponse = {
ok: boolean,
}
-type Trip = {
+type Trips = {
id: string,
userId: number,
name: string,
@@ -21,6 +21,28 @@ type Trip = {
}[],
}
+type Trip = {
+ trip: {
+ id: string,
+ userId: number,
+ name: string,
+ cityId: number,
+ description: string,
+ startDate: string,
+ endDate: string,
+ private: boolean,
+ photos: {
+ photoPath: string
+ }[],
+ },
+ users: {
+ username: string,
+ avatarPath: string,
+ email: string,
+ }[],
+ userAdded: boolean,
+}
+
type TripPhoto = {
photoPath: string
};
@@ -111,6 +133,12 @@ type Avatar = {
avatarPath: string,
}
+type Author = {
+ login: string,
+ avatar_path: string | null,
+ email: string,
+}
+
type Profile = {
username: string,
avatarPath: string | null,
@@ -135,8 +163,27 @@ type Link = {
link: string,
}
-export default {
+type Achievements = {
+ id: number,
+ name: string,
+ iconPath: string,
+}
+export default {
+ async getAchievements(userId: string): Promise> {
+ const res = await RESTApi.get(`api/v1/users/${userId}/achievements`);
+ return {
+ data: Array.isArray(res.data) ? res.data.map( (achievement: any) =>
+ ({
+ id: Number(achievement.id),
+ name: String(achievement.name),
+ iconPath: String(achievement.icon_path),
+ })) : [],
+ status: res.status,
+ ok: res.ok,
+ };
+ },
+
async getStat(surveyId: string) {
const res = await RESTApi.get(`/api/v1/survey/stats/${surveyId}`);
return {
@@ -272,7 +319,7 @@ export default {
};
},
- async getUserTrips(id: string): Promise> {
+ async getUserTrips(id: string): Promise> {
const res = await RESTApi.get(`/api/v1/users/${id}/trips`);
return {
data: Array.isArray(res.data) ? res.data.map( (trip) => ({
@@ -293,28 +340,40 @@ export default {
};
},
- async getTrip(tripId: number): Promise> {
- const res = await RESTApi.get(`/api/v1/trips/${tripId}`);
+ async getTrip(tripId: number, userId: string | undefined = undefined): Promise> {
+ let reqUrl = `/api/v1/trips/${tripId}`;
+ if (userId) {
+ reqUrl = reqUrl + `?user_id=${userId}`;
+ }
+ const res = await RESTApi.get(reqUrl);
return {
data: {
- userId: Number(res.data.user_id),
- id: String(res.data.id),
- name: String(res.data.name),
- cityId: Number(res.data.city_id),
- description: String(res.data.description),
- startDate: formatDate(res.data.start_date),
- endDate: formatDate(res.data.end_date),
- private: Boolean(res.data.private),
- photos: Array.isArray(res.data.photos)
- ? res.data.photos.map((photo: any) => ({ photoPath: String(photo) }))
- : [],
+ trip: {
+ userId: Number(res.data.trip.user_id),
+ id: String(res.data.trip.id),
+ name: String(res.data.trip.name),
+ cityId: Number(res.data.trip.city_id),
+ description: String(res.data.trip.description),
+ startDate: formatDate(res.data.trip.start_date),
+ endDate: formatDate(res.data.trip.end_date),
+ private: Boolean(res.data.trip.private),
+ photos: Array.isArray(res.data.trip.photos)
+ ? res.data.trip.photos.map((photo: any) => ({ photoPath: String(photo) }))
+ : [],
+ },
+ users: Array.isArray(res.data.users) ? res.data.users.map( (user: Author) => ({
+ username: String(user.login),
+ avatarPath: String(user.avatar_path),
+ email: String(user.email),
+ })) : [],
+ userAdded: Boolean(res.data.user_added),
},
status: res.status,
ok: res.ok,
};
},
- async postTripLink(tripId: number, option: string): Promise> {
+ async postTripLink(tripId: string, option: string): Promise> {
const res = await RESTApi.post(`/api/v1/trips/${tripId}/share?sharing_option=${option}`, {});
return {
data: {
@@ -431,6 +490,17 @@ export default {
};
},
+ async postPhotos(tripId: string, newPhotos: string[]): Promise> {
+ const res = await RESTApi.post(`/api/v1/trips/${tripId}/photos`, {photos: newPhotos});
+ return {
+ data: Array.isArray(res.data) ? res.data.map( (photo) => ({
+ photoPath: String(photo.photoPath),
+ })) : [],
+ status: res.status,
+ ok: res.ok,
+ };
+ },
+
async putTrip(tripId: number, userId:number, name: string, cityId: number, description: string, startDate: string, endDate: string, privateTrip: boolean): Promise> {
const res = await RESTApi.put(`/api/v1/trips/${tripId}`, {user_id: userId, name, city_id: cityId, description: description, start_date: startDate, end_date: endDate, private_trip: privateTrip });
return {
@@ -480,17 +550,6 @@ export default {
};
},
- async putPhotos(tripId: string, newPhotos: string[]): Promise> {
- const res = await RESTApi.put(`/api/v1/trips/${tripId}/photos`, {photos: newPhotos});
- return {
- data: Array.isArray(res.data) ? res.data.map( (photo) => ({
- photoPath: String(photo.photoPath),
- })) : [],
- status: res.status,
- ok: res.ok,
- };
- },
-
async deleteTrip(id: string): Promise> {
const res = await RESTApi.delete(`/api/v1/trips/${id}`, {id: id});
return {
diff --git a/src/utils/search-memory.ts b/src/utils/search-memory.ts
index d11037d..0cae016 100644
--- a/src/utils/search-memory.ts
+++ b/src/utils/search-memory.ts
@@ -7,6 +7,7 @@ class Search {
cityId: number;
categoryId: number;
filterId: number;
+ categoryActiveElement: HTMLButtonElement | null;
private constructor() {
@@ -15,6 +16,7 @@ class Search {
this.offset = 0;
this.cityId = -1;
this.categoryId = -1;
+ this.categoryActiveElement = null;
this.filterId = -1;
}
diff --git a/webpack.config.js b/webpack.config.js
index 2f079f7..0769ba7 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -89,7 +89,7 @@ module.exports = {
beautify: false, // Отключает форматирование выходного файла.
},
compress: {
- drop_console: true, // Удаляет все console.log
+ // drop_console: true, // Удаляет все console.log
drop_debugger: true, // Удаляет все debugger
ecma: 2020, // Указывает стандарт ECMAScript для оптимизации
},