@konce-pt/angular 0.9.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,36 @@
|
|
|
1
1
|
# @konce-pt/angular
|
|
2
2
|
|
|
3
|
+
## 0.9.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- f6999a7: `KptBackdrop` nie wywraca już renderowania po stronie serwera.
|
|
8
|
+
|
|
9
|
+
Komponent buduje się w `afterNextRender`, więc na serwerze nie powstawało nic — ale niszczenie
|
|
10
|
+
wykonuje się i tam, bo Angular tworzy komponent, zbiera z niego HTML i od razu go niszczy.
|
|
11
|
+
Sprzątanie zdejmowało nasłuch `visibilitychange` bezwarunkowo, a `document` nie istnieje wtedy
|
|
12
|
+
jako zmienna globalna: platforma serwerowa podaje go przez wstrzykiwanie zależności.
|
|
13
|
+
|
|
14
|
+
Skutek był mylący: prerendering przewracał się `ReferenceError: document is not defined` już
|
|
15
|
+
**po** wyprodukowaniu strony, więc objaw wskazywał na generator, a nie na komponent. Każda
|
|
16
|
+
aplikacja renderowana na serwerze i używająca `kpt-backdrop` trafiała na to samo.
|
|
17
|
+
|
|
18
|
+
Drugą rzeczą z tej samej rodziny jest `getContext('2d')`. Wbrew nazwie `afterNextRender`
|
|
19
|
+
wykonuje się przy prerenderingu, a tamtejsza atrapa DOM canvasu nie implementuje i **rzuca**,
|
|
20
|
+
zamiast zwrócić `null` — więc stojąca tuż niżej bramka na brak kontekstu sama nie wystarczała.
|
|
21
|
+
Wyjątek lądował w logu jako gołe „NotYetImplemented" i nie wskazywał na nic. Płótno, na którym
|
|
22
|
+
nie da się rysować, jest teraz traktowane jak brak płótna: nie ma czego budować.
|
|
23
|
+
- @konce-pt/backdrop@0.9.1
|
|
24
|
+
- @konce-pt/chart@0.9.1
|
|
25
|
+
- @konce-pt/chat@0.9.1
|
|
26
|
+
- @konce-pt/datetime@0.9.1
|
|
27
|
+
- @konce-pt/i18n@0.9.1
|
|
28
|
+
- @konce-pt/icons@0.9.1
|
|
29
|
+
- @konce-pt/map@0.9.1
|
|
30
|
+
- @konce-pt/mention@0.9.1
|
|
31
|
+
- @konce-pt/roadmap@0.9.1
|
|
32
|
+
- @konce-pt/table@0.9.1
|
|
33
|
+
|
|
3
34
|
## 0.9.0
|
|
4
35
|
|
|
5
36
|
### Minor Changes
|
|
@@ -7706,7 +7706,18 @@ class KptBackdrop {
|
|
|
7706
7706
|
});
|
|
7707
7707
|
afterNextRender(() => {
|
|
7708
7708
|
const canvas = this.canvas().nativeElement;
|
|
7709
|
-
|
|
7709
|
+
// `getContext` opakowane, bo wbrew nazwie hooka **to się wykonuje przy renderowaniu
|
|
7710
|
+
// po stronie serwera**, a tamtejsza atrapa DOM nie implementuje canvasu i rzuca zamiast
|
|
7711
|
+
// zwrócić `null`. Bramka `if (!this.context)` poniżej sama by nie wystarczyła: wyjątek
|
|
7712
|
+
// leciał wcześniej, lądował w logu prerenderingu jako gołe „NotYetImplemented" i nie
|
|
7713
|
+
// wskazywał na nic. Płótno, na którym nie da się rysować, i brak płótna to ten sam
|
|
7714
|
+
// przypadek — nie ma czego budować.
|
|
7715
|
+
try {
|
|
7716
|
+
this.context = canvas.getContext('2d');
|
|
7717
|
+
}
|
|
7718
|
+
catch {
|
|
7719
|
+
this.context = null;
|
|
7720
|
+
}
|
|
7710
7721
|
if (!this.context)
|
|
7711
7722
|
return;
|
|
7712
7723
|
this.ready = true;
|
|
@@ -7851,7 +7862,15 @@ class KptBackdrop {
|
|
|
7851
7862
|
this.intersect?.disconnect();
|
|
7852
7863
|
this.unwatchTheme?.();
|
|
7853
7864
|
this.motion?.removeEventListener('change', this.onMotionChange);
|
|
7854
|
-
|
|
7865
|
+
// Reszta powyżej jest pisana przez `?.`, bo przy renderowaniu po stronie serwera nic z tego
|
|
7866
|
+
// nie powstało — budowa siedzi w `afterNextRender`. Ale **niszczenie wykonuje się i tam**:
|
|
7867
|
+
// Angular tworzy komponent, zbiera z niego HTML i od razu go niszczy. `document` nie istnieje
|
|
7868
|
+
// wtedy jako zmienna globalna (platforma serwerowa podaje go przez DI, nie globalnie), więc
|
|
7869
|
+
// bezwarunkowe zdjęcie nasłuchu wywracało prerendering — i to na samym końcu, już po
|
|
7870
|
+
// wyprodukowaniu strony, przez co objaw wyglądał na problem generatora, a nie komponentu.
|
|
7871
|
+
if (typeof document !== 'undefined') {
|
|
7872
|
+
document.removeEventListener('visibilitychange', this.onTabSwitch);
|
|
7873
|
+
}
|
|
7855
7874
|
}
|
|
7856
7875
|
static { this.ɵfac = function KptBackdrop_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptBackdrop)(); }; }
|
|
7857
7876
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptBackdrop, selectors: [["kpt-backdrop"]], viewQuery: function KptBackdrop_Query(rf, ctx) { if (rf & 1) {
|