@tygo-van-den-hurk/slyde 0.0.2-unstable-b8011f5.0 → 0.0.2-unstable-8f6d5a0.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.
Files changed (55) hide show
  1. package/README.md +4 -4
  2. package/dist/browser/css/modes/base.d.ts +8 -0
  3. package/dist/browser/css/modes/base.d.ts.map +1 -0
  4. package/dist/browser/css/modes/base.js +110 -0
  5. package/dist/browser/css/modes/base.js.map +1 -0
  6. package/dist/browser/css/modes/pdf.d.ts +6 -0
  7. package/dist/browser/css/modes/pdf.d.ts.map +1 -0
  8. package/dist/browser/css/modes/pdf.js +26 -0
  9. package/dist/browser/css/modes/pdf.js.map +1 -0
  10. package/dist/browser/css/modes/presentation.d.ts +8 -0
  11. package/dist/browser/css/modes/presentation.d.ts.map +1 -0
  12. package/dist/browser/css/modes/presentation.js +43 -0
  13. package/dist/browser/css/modes/presentation.js.map +1 -0
  14. package/dist/browser/css/tw-config.d.ts +6 -0
  15. package/dist/browser/css/tw-config.d.ts.map +1 -0
  16. package/dist/browser/css/tw-config.js +34 -0
  17. package/dist/browser/css/tw-config.js.map +1 -0
  18. package/dist/browser/{css.d.ts → css/types.d.ts} +2 -10
  19. package/dist/browser/css/types.d.ts.map +1 -0
  20. package/dist/browser/css/types.js +2 -0
  21. package/dist/browser/css/types.js.map +1 -0
  22. package/dist/browser/html.d.ts +1 -1
  23. package/dist/browser/html.d.ts.map +1 -1
  24. package/dist/browser/html.js +16 -8
  25. package/dist/browser/html.js.map +1 -1
  26. package/dist/browser/scripts/input-bindings.d.ts +23 -0
  27. package/dist/browser/scripts/input-bindings.d.ts.map +1 -0
  28. package/dist/browser/scripts/input-bindings.js +129 -0
  29. package/dist/browser/scripts/input-bindings.js.map +1 -0
  30. package/dist/browser/scripts/pdf-mode.d.ts +29 -0
  31. package/dist/browser/scripts/pdf-mode.d.ts.map +1 -0
  32. package/dist/browser/scripts/pdf-mode.js +60 -0
  33. package/dist/browser/scripts/pdf-mode.js.map +1 -0
  34. package/dist/browser/scripts/slide-control.d.ts +60 -0
  35. package/dist/browser/scripts/slide-control.d.ts.map +1 -0
  36. package/dist/browser/scripts/slide-control.js +74 -0
  37. package/dist/browser/scripts/slide-control.js.map +1 -0
  38. package/dist/browser/scripts/utils.d.ts +12 -0
  39. package/dist/browser/scripts/utils.d.ts.map +1 -0
  40. package/dist/browser/scripts/utils.js +22 -0
  41. package/dist/browser/scripts/utils.js.map +1 -0
  42. package/dist/lib/core/render/render.js +1 -1
  43. package/dist/lib/core/render/render.js.map +1 -1
  44. package/package.json +1 -1
  45. package/dist/browser/css.d.ts.map +0 -1
  46. package/dist/browser/css.js +0 -184
  47. package/dist/browser/css.js.map +0 -1
  48. package/dist/browser/index.d.ts +0 -3
  49. package/dist/browser/index.d.ts.map +0 -1
  50. package/dist/browser/index.js +0 -5
  51. package/dist/browser/index.js.map +0 -1
  52. package/dist/browser/page-logic.browser.d.ts +0 -78
  53. package/dist/browser/page-logic.browser.d.ts.map +0 -1
  54. package/dist/browser/page-logic.browser.js +0 -264
  55. package/dist/browser/page-logic.browser.js.map +0 -1
@@ -1,264 +0,0 @@
1
- /* eslint-disable max-lines */
2
- import { Logger } from '#lib/logger';
3
- /** Checks if the document is supposed to viewed as a PDF. */
4
- export const isPDF = function isPDF() {
5
- const params = new URLSearchParams(window.location.search);
6
- if (params.has('pdf'))
7
- return true;
8
- return params.has('type', 'pdf');
9
- };
10
- /** Adds enables the stacked layout in the body. */
11
- export const setStackedLayout = function setStackedLayout() {
12
- if (!isPDF())
13
- return;
14
- Logger.debug('is a PDF, forcing stacked layout.');
15
- document.body.classList.add('pdf');
16
- };
17
- /**
18
- * The Regex the Hash will comply with.
19
- */
20
- export const regex = /^#slide-(?<slide>\d+)/iu;
21
- /**
22
- * Sets the browsers location hash (the `#id` part) to the given index.
23
- */
24
- export const setCurrentSlideUrlHash = function setCurrentSlideUrlHash(index) {
25
- window.location.hash = `slide-${index}`;
26
- };
27
- export function getCurrentSlideUrlHash({ allowMissing = false, } = {}) {
28
- const match = regex.exec(window.location.hash);
29
- if (!match?.groups) {
30
- if (allowMissing)
31
- return null;
32
- throw new Error(`Expected window.location.hash to be of the form ${regex}, but found ${window.location.hash}.`);
33
- }
34
- const { slide } = match.groups;
35
- return Number.parseInt(slide, 10);
36
- }
37
- /** Goes to the next slide. */
38
- export const goToNextSlide = function goToNextSlide() {
39
- const currentSlide = getCurrentSlideUrlHash();
40
- const nextSlide = currentSlide + 1;
41
- Logger.info(`Going to the next slide: ${nextSlide}`);
42
- setCurrentSlideUrlHash(nextSlide);
43
- };
44
- /** Goes to the previous slide. */
45
- export const goToPreviousSlide = function goToPreviousSlide() {
46
- const currentSlide = getCurrentSlideUrlHash();
47
- const previousSlide = currentSlide - 1;
48
- if (previousSlide < 1) {
49
- Logger.warn(`At the start of the presentation, cannot go back further.`);
50
- return;
51
- }
52
- Logger.info(`Going to the previous slide: ${previousSlide}`);
53
- setCurrentSlideUrlHash(previousSlide);
54
- };
55
- /**
56
- * The callback to exec when the window has loaded to ensure that a hash slide is set.
57
- */
58
- const setupUrlHashCallBack = function setupUrlHashCallBack() {
59
- const currentSlide = getCurrentSlideUrlHash({ allowMissing: true });
60
- if (currentSlide === null)
61
- setCurrentSlideUrlHash(1);
62
- };
63
- /**
64
- * Watches for changes in the hash of the URL (the # part), and resets the hash if it is incorrect.
65
- */
66
- export const handleUrlHashChange = function handleUrlHashChange(event) {
67
- const oldUrl = new URL(event.oldURL);
68
- const newURL = new URL(event.newURL);
69
- const match = regex.exec(newURL.hash);
70
- if (!match?.groups) {
71
- let message = `The new URL hash: ${newURL.hash} does not have a hash of the right shape: ${regex}.`;
72
- message += `Resetting it to the old value of ${oldUrl.hash}`;
73
- Logger.warn(message);
74
- history.replaceState(null, '', event.oldURL);
75
- return;
76
- }
77
- Logger.info(`Moved to: ${event.newURL}`);
78
- };
79
- /** Handles mouse presses on the document, and moves slides accordingly. */
80
- // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
81
- export const handleMousePresses = function handleMousePresses(event) {
82
- if (isPDF())
83
- return;
84
- // Letting the "handle touch" function handle clicks if they are on mobile.
85
- if ('ontouchstart' in window || navigator.maxTouchPoints > 0)
86
- return;
87
- const leftClick = 0;
88
- if (event.button === leftClick)
89
- goToNextSlide();
90
- const rightClick = 2;
91
- if (event.button === rightClick)
92
- goToPreviousSlide();
93
- };
94
- /** Toggles between full screen and normal web page mode. */
95
- export const toggleFullScreen = function toggleFullScreen() {
96
- if (document.fullscreenElement) {
97
- document.exitFullscreen().catch((error) => {
98
- Logger.error(error);
99
- });
100
- }
101
- else {
102
- document.documentElement
103
- .requestFullscreen()
104
- .then(() => {
105
- Logger.info('Received full screen permissions, press ESC to exit.');
106
- })
107
- .catch((error) => {
108
- Logger.error(error);
109
- });
110
- }
111
- };
112
- /** Gets the size of one `--unit` in pixels. */
113
- export const getOneUnitSizeInPixels = function getOneUnitSizeInPixels() {
114
- const element = document.createElement('div');
115
- element.style.position = 'absolute';
116
- element.style.visibility = 'hidden';
117
- element.style.height = 'var(--unit)';
118
- document.body.appendChild(element);
119
- const pixels = element.getBoundingClientRect().height;
120
- document.body.removeChild(element);
121
- return pixels;
122
- };
123
- /** Scrolls the window down by `amount * --unit` in pixels. */
124
- export const scrollUsingUnit = function scrollUsingUnit({ amount, slides = false, }) {
125
- let modifier = 1;
126
- if (slides) {
127
- const marginBetweenSlides = 1;
128
- const value = getComputedStyle(document.body).getPropertyValue('--height').trim();
129
- modifier = Number.parseFloat(value) + marginBetweenSlides;
130
- }
131
- const pixels = getOneUnitSizeInPixels() * amount * modifier;
132
- Logger.debug(`Scrolling by ${pixels} pixels`);
133
- if (!Number.isNaN(pixels))
134
- document.body.scrollBy({ behavior: 'smooth', left: 0, top: pixels });
135
- };
136
- /** Handles key presses on the document, and moves slides accordingly. */
137
- // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
138
- export const handleKeyPresses = function handleKeyPresses(event) {
139
- switch (event.key) {
140
- case 'Enter':
141
- case ' ':
142
- case 'd':
143
- case 'l':
144
- case 'ArrowRight':
145
- if (!isPDF())
146
- goToNextSlide();
147
- break;
148
- case 'a':
149
- case 'h':
150
- case 'ArrowLeft':
151
- if (!isPDF())
152
- goToPreviousSlide();
153
- break;
154
- case 'f':
155
- case 'F11':
156
- toggleFullScreen();
157
- break;
158
- case 'ArrowDown':
159
- case 'PageDown':
160
- if (isPDF())
161
- scrollUsingUnit({ amount: 1, slides: true });
162
- break;
163
- case 'ArrowUp':
164
- case 'PageUp':
165
- if (isPDF())
166
- scrollUsingUnit({ amount: -1, slides: true });
167
- break;
168
- default:
169
- }
170
- };
171
- /** Handles scrolling through on the document, and moves slides accordingly. */
172
- // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
173
- export const handleScrollEvents = function handleScrollEvents(event) {
174
- if (isPDF())
175
- return;
176
- if (event.deltaY < 0)
177
- goToNextSlide();
178
- if (event.deltaY > 0)
179
- goToPreviousSlide();
180
- };
181
- /**
182
- * Handles touch events the screen. Goes to the next slide, when tapping the right half,
183
- * and the previous slide when tapping the left half of the screen.
184
- */
185
- // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
186
- export const handleTouchEvents = function handleTouchEvents(event) {
187
- if (isPDF())
188
- return;
189
- const half = 2;
190
- const screenWidth = window.innerWidth;
191
- for (const touch of event.touches) {
192
- // Ignoring touches outside of the presentation, or are not on document nodes.
193
- const { target } = touch;
194
- if (!(target instanceof Node))
195
- continue;
196
- if (!document.body.contains(target))
197
- continue;
198
- if (target === document.documentElement)
199
- continue;
200
- if (touch.clientX > screenWidth / half)
201
- goToNextSlide();
202
- else
203
- goToPreviousSlide();
204
- }
205
- };
206
- let hideTimeout; // eslint-disable-line @typescript-eslint/init-declarations
207
- /** Hides mouse cursor when its not moving, shows the mouse cursor when it is. */
208
- export const handleMouseMove = function handleMouseMove() {
209
- if (isPDF())
210
- return;
211
- document.documentElement.style.cursor = 'default';
212
- clearTimeout(hideTimeout);
213
- const second = 1000;
214
- hideTimeout = setTimeout(() => {
215
- document.documentElement.style.cursor = 'none';
216
- }, second);
217
- };
218
- /** Prevents context menus from showing up when right clicking. */
219
- // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
220
- export const handleContextMenus = function handleContextMenus(event) {
221
- if (isPDF())
222
- return;
223
- event.preventDefault();
224
- };
225
- /** Adds a bunch of events listeners as setup. */
226
- export const addEventListeners = function addEventListeners() {
227
- window.addEventListener('prev:slide', goToPreviousSlide);
228
- window.addEventListener('next:slide', goToNextSlide);
229
- window.addEventListener('load', setupUrlHashCallBack);
230
- window.addEventListener('load', setStackedLayout);
231
- window.addEventListener('hashchange', handleUrlHashChange);
232
- window.addEventListener('mousedown', handleMousePresses);
233
- window.addEventListener('keydown', handleKeyPresses);
234
- window.addEventListener('wheel', handleScrollEvents);
235
- window.addEventListener('touchstart', handleTouchEvents);
236
- window.addEventListener('mousemove', handleMouseMove);
237
- window.addEventListener('contextmenu', handleContextMenus);
238
- };
239
- /** The full setup code to run when first opening the document */
240
- // eslint-disable-next-line no-inline-comments
241
- export const setupScriptCode = /*JavaScript*/ `
242
- "use strict";
243
- ${isPDF.toString()}
244
- ${setStackedLayout.toString()}
245
- let hideTimeout;
246
- ${handleMouseMove.toString()}
247
- const regex = ${regex.toString()};
248
- ${setCurrentSlideUrlHash.toString()}
249
- ${getCurrentSlideUrlHash.toString()}
250
- ${goToNextSlide.toString()}
251
- ${goToPreviousSlide.toString()}
252
- ${setupUrlHashCallBack.toString()}
253
- ${handleUrlHashChange.toString()}
254
- ${handleMousePresses.toString()}
255
- ${toggleFullScreen.toString()}
256
- ${getOneUnitSizeInPixels.toString()}
257
- ${scrollUsingUnit.toString()}
258
- ${handleKeyPresses.toString()}
259
- ${handleScrollEvents.toString()}
260
- ${handleTouchEvents.toString()}
261
- ${handleContextMenus.toString()}
262
- (${addEventListeners.toString()})(); // Executes immediately.
263
- `;
264
- //# sourceMappingURL=page-logic.browser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"page-logic.browser.js","sourceRoot":"","sources":["../../browser/page-logic.browser.ts"],"names":[],"mappings":"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"}