@shower/core 3.5.1 → 3.6.0

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/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Core for Shower HTML presentation engine
3
- * @shower/core v3.5.0, https://github.com/shower/shower/tree/main/packages/core
3
+ * @shower/core v3.5.2, https://github.com/shower/shower/tree/main/packages/core
4
4
  * @copyright 2010–2026 Vadim Makeev, https://pepelsbey.dev
5
5
  * @license MIT
6
6
  */
@@ -209,8 +209,8 @@
209
209
 
210
210
  switch (event.key.toUpperCase()) {
211
211
  case 'ENTER':
212
- if (event.metaKey && shower.isListMode) {
213
- if (event.shiftKey) {
212
+ if (event.metaKey) {
213
+ if (event.shiftKey && shower.isListMode) {
214
214
  event.preventDefault();
215
215
  shower.first();
216
216
  }
@@ -284,9 +284,13 @@
284
284
  break;
285
285
 
286
286
  case 'ENTER':
287
- if (event.metaKey && shower.isListMode) {
287
+ if (event.metaKey) {
288
288
  event.preventDefault();
289
- shower.enterFullMode();
289
+ if (shower.isListMode) {
290
+ shower.enterFullMode();
291
+ } else if (shower.isFullMode) {
292
+ shower.exitFullMode();
293
+ }
290
294
  }
291
295
  break;
292
296
 
@@ -350,7 +354,10 @@
350
354
  applyURLSlide();
351
355
  };
352
356
 
353
- applyURL();
357
+ // slide before mode, so full mode finds it instead of defaulting to first
358
+ applyURLSlide();
359
+ applyURLMode();
360
+
354
361
  window.addEventListener('popstate', applyURL);
355
362
 
356
363
  shower.addEventListener('start', () => {
@@ -661,11 +668,6 @@
661
668
  view(shower);
662
669
  touch(shower);
663
670
  mouse(shower);
664
-
665
- // maintains invariant: active slide always exists in `full` mode
666
- if (shower.isFullMode && !shower.activeSlide) {
667
- shower.first();
668
- }
669
671
  };
670
672
 
671
673
  class Shower extends EventTarget {
@@ -772,6 +774,10 @@
772
774
  * @emits Shower#modechange
773
775
  */
774
776
  enterFullMode() {
777
+ if (!this.activeSlide) {
778
+ this.first();
779
+ }
780
+
775
781
  this._setMode('full');
776
782
  }
777
783
 
@@ -22,9 +22,4 @@ export default (shower) => {
22
22
  view(shower);
23
23
  touch(shower);
24
24
  mouse(shower);
25
-
26
- // maintains invariant: active slide always exists in `full` mode
27
- if (shower.isFullMode && !shower.activeSlide) {
28
- shower.first();
29
- }
30
25
  };
@@ -6,8 +6,8 @@ export default (shower) => {
6
6
 
7
7
  switch (event.key.toUpperCase()) {
8
8
  case 'ENTER':
9
- if (event.metaKey && shower.isListMode) {
10
- if (event.shiftKey) {
9
+ if (event.metaKey) {
10
+ if (event.shiftKey && shower.isListMode) {
11
11
  event.preventDefault();
12
12
  shower.first();
13
13
  }
@@ -81,9 +81,13 @@ export default (shower) => {
81
81
  break;
82
82
 
83
83
  case 'ENTER':
84
- if (event.metaKey && shower.isListMode) {
84
+ if (event.metaKey) {
85
85
  event.preventDefault();
86
- shower.enterFullMode();
86
+ if (shower.isListMode) {
87
+ shower.enterFullMode();
88
+ } else if (shower.isFullMode) {
89
+ shower.exitFullMode();
90
+ }
87
91
  }
88
92
  break;
89
93
 
@@ -33,7 +33,10 @@ export default (shower) => {
33
33
  applyURLSlide();
34
34
  };
35
35
 
36
- applyURL();
36
+ // slide before mode, so full mode finds it instead of defaulting to first
37
+ applyURLSlide();
38
+ applyURLMode();
39
+
37
40
  window.addEventListener('popstate', applyURL);
38
41
 
39
42
  shower.addEventListener('start', () => {
package/lib/shower.js CHANGED
@@ -107,6 +107,10 @@ class Shower extends EventTarget {
107
107
  * @emits Shower#modechange
108
108
  */
109
109
  enterFullMode() {
110
+ if (!this.activeSlide) {
111
+ this.first();
112
+ }
113
+
110
114
  this._setMode('full');
111
115
  }
112
116
 
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "type": "module",
3
3
  "name": "@shower/core",
4
4
  "description": "Core for Shower HTML presentation engine",
5
- "version": "3.5.1",
5
+ "version": "3.6.0",
6
6
  "publishConfig": {
7
7
  "access": "public"
8
8
  },