@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
- this.context = canvas.getContext('2d');
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
- document.removeEventListener('visibilitychange', this.onTabSwitch);
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) {