diff --git a/src/app/link-parser/ui/parser-form/parser-form.component.scss b/src/app/link-parser/ui/parser-form/parser-form.component.scss
index a2fe853..6cd35b2 100644
--- a/src/app/link-parser/ui/parser-form/parser-form.component.scss
+++ b/src/app/link-parser/ui/parser-form/parser-form.component.scss
@@ -1,7 +1,8 @@
:host {
- display: grid;
- row-gap: 1ch;
- grid-template-columns: auto minmax(auto, 80ch) auto;
+ display: flex;
+ flex-direction: column;
+ row-gap: 2ch;
+ // grid-template-columns: auto minmax(auto, 80ch) auto;
}
.logo-text {
@@ -129,23 +130,26 @@ app-text-embracer {
@keyframes halloween {
0% {
--halloween-base: #A0FF00;
-
+
}
50% {
- --halloween-base: #FF7518;
+ --halloween-base: #FF7518;
}
100% {
- --halloween-base: #6C2DC7;
+ --halloween-base: #6C2DC7;
}
}
.form-wrapper {
- grid-column: 2;
+ min-width: 0;
+ // grid-column: 2;
display: grid;
gap: 2ch;
padding: 0px;
+
+ place-content: center;
}
form {
@@ -157,6 +161,17 @@ form {
position: relative;
}
+app-file-change ::ng-deep .button {
+ padding-inline: 2ch;
+ font-family: 'Courier New', Courier, monospace;
+ // background: unset;
+
+ text-overflow: ellipsis;
+max-width: 90vw;
+ overflow: hidden;
+ white-space: nowrap;
+}
+
input[type=url],
textarea {
display: block;
diff --git a/src/app/link-parser/ui/parser-form/parser-form.component.ts b/src/app/link-parser/ui/parser-form/parser-form.component.ts
index 021724f..a2fd831 100644
--- a/src/app/link-parser/ui/parser-form/parser-form.component.ts
+++ b/src/app/link-parser/ui/parser-form/parser-form.component.ts
@@ -1,4 +1,4 @@
-import { ChangeDetectionStrategy, Component, computed, inject, PLATFORM_ID, signal, Signal, WritableSignal } from '@angular/core';
+import { AfterContentInit, AfterViewInit, ChangeDetectionStrategy, Component, computed, inject, PLATFORM_ID, signal, Signal, WritableSignal } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { LangService } from '../../../shared/data-access/lang.service';
import { Base64 } from '../../../shared/utils';
@@ -6,6 +6,8 @@ import { LinkParserSettingsService } from '../../data-access/link-parser-setting
import { LinkParserService } from '../../data-access/link-parser.service';
import { ImgurLinkParser, MangadexLinkParser, TelegraphLinkParser, RedditLinkParser, ZenkoLinkParser, NhentaiLinkParser, YandereParser, PixivLinkParser, BlankaryLinkParser, JsonLinkParser } from '../../utils';
import { ComickLinkParser } from '../../utils/comick-link-parser';
+import { ImgchestLinkParser } from '../../utils/imgchest-link-parser';
+import { MetaTagsService } from '../../../shared/data-access/meta-tags.service';
@Component({
selector: 'app-parser-form',
@@ -44,6 +46,7 @@ export class ParserFormComponent {
this.parser.parsers.push(new ComickLinkParser)
this.parser.parsers.push(new YandereParser)
this.parser.parsers.push(new PixivLinkParser)
+ this.parser.parsers.push(new ImgchestLinkParser)
// this.parser.parsers.push(new BlankaryLinkParser)
this.parser.parsers.push(new JsonLinkParser)
}
@@ -107,6 +110,7 @@ export class ParserFormComponent {
comick: '//comick.io/favicon.ico',
yandere: '//yande.re/favicon.ico',
pixiv: '//pixiv.net/favicon.ico',
+ imgchest: '//imgchest.com/assets/img/favicons/favicon-32x32.png?v=2',
// blankary: '//blankary.com/favicon.ico',
read: 'data:image/svg+xml,
'
}
diff --git a/src/app/link-parser/utils/imgchest-link-parser.ts b/src/app/link-parser/utils/imgchest-link-parser.ts
new file mode 100644
index 0000000..65ea129
--- /dev/null
+++ b/src/app/link-parser/utils/imgchest-link-parser.ts
@@ -0,0 +1,6 @@
+import { LinkParser } from "./link-parser";
+
+export class ImgchestLinkParser extends LinkParser {
+ override regex = /imgchest\.com\/p\/([\w\d-]+)/;
+ override site = 'imgchest';
+};
diff --git a/src/app/list/list-shell/list-shell.component.ts b/src/app/list/list-shell/list-shell.component.ts
index a0c6a14..632842e 100644
--- a/src/app/list/list-shell/list-shell.component.ts
+++ b/src/app/list/list-shell/list-shell.component.ts
@@ -4,16 +4,17 @@ import { BlankaryLinkParser, ImgurLinkParser, JsonLinkParser, LinkParser, Mangad
import { DomManipulationService } from '../../shared/data-access';
import { LangService } from '../../shared/data-access/lang.service';
import { ComickLinkParser } from '../../link-parser/utils/comick-link-parser';
+import { ImgchestLinkParser } from '../../link-parser/utils/imgchest-link-parser';
@Component({
- selector: 'app-list-shell',
- templateUrl: './list-shell.component.html',
- styleUrls: [
- './list-shell.component.scss',
- '../../shared/ui/@styles/input-group.scss'
- ],
- standalone: false
+ selector: 'app-list-shell',
+ templateUrl: './list-shell.component.html',
+ styleUrls: [
+ './list-shell.component.scss',
+ '../../shared/ui/@styles/input-group.scss'
+ ],
+ standalone: false
})
export class ListShellComponent {
public inputValue: WritableSignal
= signal('')
@@ -92,6 +93,7 @@ export class ListShellComponent {
this.parser.parsers.push(new ComickLinkParser)
this.parser.parsers.push(new YandereParser)
this.parser.parsers.push(new PixivLinkParser)
+ this.parser.parsers.push(new ImgchestLinkParser)
// this.parser.parsers.push(new BlankaryLinkParser)
this.parser.parsers.push(new JsonLinkParser)
}
diff --git a/src/app/shared/data-access/lang.service.ts b/src/app/shared/data-access/lang.service.ts
index e69a78a..763eb0e 100644
--- a/src/app/shared/data-access/lang.service.ts
+++ b/src/app/shared/data-access/lang.service.ts
@@ -1,6 +1,6 @@
import { ChangeDetectorRef, Injectable, PLATFORM_ID, WritableSignal, inject, signal } from '@angular/core';
import { Phrases } from '../utils/phrases';
-import { Observable, map, of } from 'rxjs';
+import { Observable, Subject, map, of } from 'rxjs';
import { HttpClient } from '@angular/common/http';
import { ViewModeOption } from './viewer.service';
import { DOCUMENT, isPlatformBrowser } from '@angular/common';
@@ -24,6 +24,9 @@ export class LangService {
['uk', "manifest-uk.webmanifest"]
]);
+ private langChanged = new Subject();
+ langChanged$ = this.langChanged.asObservable();
+
langOpt = LANG_OPTIONS
platformId = inject(PLATFORM_ID)
private readonly document = inject(DOCUMENT);
@@ -32,8 +35,8 @@ export class LangService {
lang: WritableSignal = signal(
(!isPlatformBrowser(this.platformId)) ? DEFAULT_LANG :
-
- localStorage?.getItem(LANG_STORAGE_NAME) ?? DEFAULT_LANG)
+
+ localStorage?.getItem(LANG_STORAGE_NAME) ?? DEFAULT_LANG)
;
linkManifestElement: WritableSignal = signal(this.document.querySelector('link[rel="manifest"]'))
@@ -46,12 +49,12 @@ export class LangService {
setLang(lang: string) {
this.lang.set(lang)
this.document.documentElement.lang = lang
-
- if(!isPlatformBrowser(this.platformId)) return;
-
- localStorage.setItem(LANG_STORAGE_NAME, lang)
this.updateTranslate();
+ // this.langChanged.next();
+ if (!isPlatformBrowser(this.platformId)) return;
+
+ localStorage.setItem(LANG_STORAGE_NAME, lang)
this.vibro.vibrateLangToggle(this.lang())
}
@@ -60,13 +63,16 @@ export class LangService {
}
updateTranslate() {
- if (this.lang() == 'en') {
- this.ph.set(new Phrases());
- return;
+ if (this.lang() == 'en') {
+ this.ph.set(new Phrases());
+ this.langChanged.next();
+ return;
}
- this.getTranslate(this.lang()).subscribe(data =>{
+ this.getTranslate(this.lang()).subscribe(data => {
this.ph.set(data)
+ this.langChanged.next();
+
})
}
diff --git a/src/app/shared/data-access/meta-tags.service.ts b/src/app/shared/data-access/meta-tags.service.ts
index 2d17550..3d3744a 100644
--- a/src/app/shared/data-access/meta-tags.service.ts
+++ b/src/app/shared/data-access/meta-tags.service.ts
@@ -65,7 +65,7 @@ export class MetaTagsService {
setOg() {
this.meta.updateTag({ property: 'og:site_name', content: 'Chytanka' })
this.meta.updateTag({ property: 'og:locale', content: 'uk_UA' })
- this.meta.updateTag({ property: 'og:type', content: 'object' })
+ this.meta.updateTag({ property: 'og:type', content: 'website' })
}
setOgUrl(url: string) {
diff --git a/src/app/shared/data-access/viewer.service.ts b/src/app/shared/data-access/viewer.service.ts
index a1f26f7..550d00a 100644
--- a/src/app/shared/data-access/viewer.service.ts
+++ b/src/app/shared/data-access/viewer.service.ts
@@ -36,22 +36,25 @@ export class ViewerService {
}
initNightlight() {
- if(!isPlatformBrowser(this.platformId)) return;
-
- const n = Number(localStorage.getItem('nightlight')) ?? 0;
+ this.nightlight.set(6500);
+
+ if (!isPlatformBrowser(this.platformId)) return;
+
+ const n = Number(localStorage.getItem('nightlight') ?? 6500);
this.nightlight.set(n);
}
setNightlight(n: number) {
- if(!isPlatformBrowser(this.platformId)) return;
-
this.nightlight.set(n);
+
+ if (!isPlatformBrowser(this.platformId)) return;
+
localStorage.setItem('nightlight', n.toString())
}
initViewModeOption() {
- if(!isPlatformBrowser(this.platformId)) return;
-
+ if (!isPlatformBrowser(this.platformId)) return;
+
const localOpt: ViewModeOption = JSON.parse(localStorage?.getItem(VIEW_MODE_OPT_NAME) ?? '{}');
const opt: ViewModeOption = this.getViewModeOptionByCode(localOpt?.code) ?? VIEV_MODE_OPTIONS[0]
this.setViewModeOption(opt);
diff --git a/src/app/shared/ui/file-change/file-change.component.html b/src/app/shared/ui/file-change/file-change.component.html
index 2306670..8d165a5 100644
--- a/src/app/shared/ui/file-change/file-change.component.html
+++ b/src/app/shared/ui/file-change/file-change.component.html
@@ -1,6 +1,6 @@
-
+
@if(showDragAndDropZone){
diff --git a/src/app/shared/ui/file-change/file-change.component.scss b/src/app/shared/ui/file-change/file-change.component.scss
index b299ce6..be14bb1 100644
--- a/src/app/shared/ui/file-change/file-change.component.scss
+++ b/src/app/shared/ui/file-change/file-change.component.scss
@@ -19,4 +19,9 @@
z-index: 1;
border-radius: .25ch;
}
+}
+
+.button {
+ width: 100%;
+ text-align: unset;
}
\ No newline at end of file
diff --git a/src/app/shared/ui/file-change/file-change.component.ts b/src/app/shared/ui/file-change/file-change.component.ts
index ac3721d..d879914 100644
--- a/src/app/shared/ui/file-change/file-change.component.ts
+++ b/src/app/shared/ui/file-change/file-change.component.ts
@@ -18,6 +18,7 @@ export class FileChangeComponent implements OnInit {
lang = inject(LangService)
accept = input
([])
+ label = input("Open File")
input: HTMLInputElement | undefined;
showDragAndDropZone: boolean = false;
diff --git a/src/app/shared/ui/manga-page/manga-page-even.component.html b/src/app/shared/ui/manga-page/manga-page-even.component.html
index 88e6e80..4482967 100644
--- a/src/app/shared/ui/manga-page/manga-page-even.component.html
+++ b/src/app/shared/ui/manga-page/manga-page-even.component.html
@@ -12,4 +12,6 @@
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/src/app/shared/ui/manga-page/manga-page-even.component.scss b/src/app/shared/ui/manga-page/manga-page-even.component.scss
index e49a26c..4089250 100644
--- a/src/app/shared/ui/manga-page/manga-page-even.component.scss
+++ b/src/app/shared/ui/manga-page/manga-page-even.component.scss
@@ -1,7 +1,17 @@
+svg {
+ aspect-ratio: 257/364;
+ border: 1px solid;
+ grid-area: 1/4;
+ width: 100%;
+ pointer-events: none;
+ user-select: none;
+ visibility: hidden;
+}
+
:host {
display: grid;
max-height: 100vh;
- aspect-ratio: 2/3;
+ aspect-ratio: 257/364;
--side-gap: 2rem;
background-color: #fff;
diff --git a/src/app/shared/ui/manga-page/manga-page.component.html b/src/app/shared/ui/manga-page/manga-page.component.html
index 417eb96..724f98a 100644
--- a/src/app/shared/ui/manga-page/manga-page.component.html
+++ b/src/app/shared/ui/manga-page/manga-page.component.html
@@ -15,4 +15,5 @@
\ No newline at end of file
+ -->
+
\ No newline at end of file
diff --git a/src/app/shared/ui/manga-page/manga-page.component.scss b/src/app/shared/ui/manga-page/manga-page.component.scss
index 5b9588a..fd6d0d3 100644
--- a/src/app/shared/ui/manga-page/manga-page.component.scss
+++ b/src/app/shared/ui/manga-page/manga-page.component.scss
@@ -2,7 +2,7 @@
--side-gap: 2rem;
display: grid;
max-height: 100vh;
- aspect-ratio: 2/3;
+ aspect-ratio: 257/364;
background-color: #fff;
color: #000;
gap: 2ch 1ch;
@@ -12,6 +12,16 @@
counter-reset: read-order;
}
+svg {
+ aspect-ratio: 257/364;
+ border: 1px solid;
+ grid-area: 1/4;
+ width: 100%;
+ pointer-events: none;
+ user-select: none;
+ visibility: hidden;
+}
+
section {
opacity: .8;
border: .4ch solid;
diff --git a/src/app/shared/ui/overlay/overlay.component.scss b/src/app/shared/ui/overlay/overlay.component.scss
index 6651262..235dda3 100644
--- a/src/app/shared/ui/overlay/overlay.component.scss
+++ b/src/app/shared/ui/overlay/overlay.component.scss
@@ -2,28 +2,30 @@
display: flex;
gap: 1ch;
align-items: center;
- opacity: 0;
position: fixed;
bottom: 0;
left: 0;
width: 100%;
z-index: 1;
- padding: 1ch calc(1rem + .25ch) 1.25ch 1rem;
+ // padding: 1ch calc(1rem + .25ch) 1.25ch 1rem;
+ padding: 2ch 3ch;
pointer-events: none;
- transition: opacity var(--t) cubic-bezier(.4, 0, 1, 1);
-
- font-size: 14px;
+ transition: transform var(--t) ease-in-out;
+ font-size: .8rem;
line-height: 1;
- background: var(--surface);
- background: oklch(from var(--surface) calc(l + .05) c h);
- &.show {
- opacity: 1;
- pointer-events: unset;
- }
+ transform: translateY(100%);
&.top {
top: 0;
bottom: unset;
+ transform: translateY(-100%);
+
+ }
+
+ &.show {
+ transform: translateY(0);
+ // opacity: 1;
+ pointer-events: unset;
}
}
\ No newline at end of file
diff --git a/src/app/shared/ui/viewer/components/viewer-footer/viewer-footer.component.scss b/src/app/shared/ui/viewer/components/viewer-footer/viewer-footer.component.scss
index e69de29..e050ea1 100644
--- a/src/app/shared/ui/viewer/components/viewer-footer/viewer-footer.component.scss
+++ b/src/app/shared/ui/viewer/components/viewer-footer/viewer-footer.component.scss
@@ -0,0 +1,4 @@
+app-overlay {
+ padding-bottom: 2ch;
+ padding-top: unset;
+}
\ No newline at end of file
diff --git a/src/app/shared/ui/viewer/components/viewer-header/viewer-header.component.html b/src/app/shared/ui/viewer/components/viewer-header/viewer-header.component.html
index b114b22..18bdb0d 100644
--- a/src/app/shared/ui/viewer/components/viewer-header/viewer-header.component.html
+++ b/src/app/shared/ui/viewer/components/viewer-header/viewer-header.component.html
@@ -1,7 +1,7 @@
@if(!embedHelper.isEmbedded()){
🏠
-
+
} @else {
}
@@ -10,7 +10,7 @@
}
- {{episode?.title}}
+ {{episode?.title}}
diff --git a/src/app/shared/ui/viewer/components/viewer-header/viewer-header.component.scss b/src/app/shared/ui/viewer/components/viewer-header/viewer-header.component.scss
index 6f22513..d3150d2 100644
--- a/src/app/shared/ui/viewer/components/viewer-header/viewer-header.component.scss
+++ b/src/app/shared/ui/viewer/components/viewer-header/viewer-header.component.scss
@@ -76,7 +76,6 @@ textarea {
.title {
text-overflow: ellipsis;
-
overflow: hidden;
white-space: nowrap;
}
\ No newline at end of file
diff --git a/src/app/shared/ui/viewer/viewer.component.html b/src/app/shared/ui/viewer/viewer.component.html
index edc75f9..9183a8f 100644
--- a/src/app/shared/ui/viewer/viewer.component.html
+++ b/src/app/shared/ui/viewer/viewer.component.html
@@ -29,8 +29,9 @@
[labelDisagree]="lang.ph().nsfwLabelDisagree" />
}
-
+