Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit a7441a6

Browse files
committedMay 17, 2023
add more type hints
1 parent 5160e79 commit a7441a6

File tree

3 files changed

+139
-15
lines changed

3 files changed

+139
-15
lines changed
 

‎src/js/helper.js

+25-15
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/**
2-
* @param node
3-
* @param class_name
2+
* @param {HTMLElement} node
3+
* @param {string} class_name
44
*/
55

66
export function addClass(node, class_name){
@@ -9,8 +9,8 @@ export function addClass(node, class_name){
99
}
1010

1111
/**
12-
* @param node
13-
* @param class_name
12+
* @param {HTMLElement} node
13+
* @param {string} class_name
1414
*/
1515

1616
export function removeClass(node, class_name){
@@ -19,9 +19,9 @@ export function removeClass(node, class_name){
1919
}
2020

2121
/**
22-
* @param node
23-
* @param class_name
24-
* @param {?=} state
22+
* @param {HTMLElement} node
23+
* @param {string} class_name
24+
* @param {boolean=} state
2525
*/
2626

2727
export function toggleClass(node, class_name, state){
@@ -30,8 +30,8 @@ export function toggleClass(node, class_name, state){
3030
}
3131

3232
/**
33-
* @param node
34-
* @param class_name
33+
* @param {HTMLElement} node
34+
* @param {string} class_name
3535
*/
3636

3737
export function hasClass(node, class_name){
@@ -59,7 +59,7 @@ export function setStyle(node, style, value){
5959
let tmp = 0;
6060

6161
/**
62-
* @param node
62+
* @param {HTMLElement} node
6363
* @param {Function=} fn
6464
*/
6565

@@ -77,6 +77,11 @@ export function prepareStyle(node, fn){
7777
fn && setStyle(node, "transition", "");
7878
}
7979

80+
/**
81+
* @param {HTMLElement} node
82+
* @param {string} text
83+
*/
84+
8085
export function setText(node, text){
8186

8287
node.firstChild.nodeValue = text;
@@ -142,7 +147,7 @@ export function toggleListener(state, node, event, fn, mode){
142147
}
143148

144149
/**
145-
* @param event
150+
* @param {Event} event
146151
* @param {boolean=} prevent
147152
*/
148153

@@ -153,6 +158,11 @@ export function cancelEvent(event, prevent){
153158
prevent && event.preventDefault();
154159
}
155160

161+
/**
162+
* @param {HTMLBodyElement} body
163+
* @param {HTMLImageElement} image
164+
*/
165+
156166
export function downloadImage(body, image){
157167

158168
const link = /** @type {HTMLAnchorElement} */ (createElement("a"));
@@ -166,7 +176,7 @@ export function downloadImage(body, image){
166176

167177
/**
168178
* @param {!string} element
169-
* @return {Element}
179+
* @return {HTMLElement}
170180
*/
171181

172182
export function createElement(element){
@@ -175,7 +185,7 @@ export function createElement(element){
175185
}
176186

177187
/**
178-
* @param node
188+
* @param {HTMLElement} node
179189
* @param {boolean=} state
180190
*/
181191

@@ -185,7 +195,7 @@ export function toggleDisplay(node, state){
185195
}
186196

187197
/**
188-
* @param node
198+
* @param {HTMLElement} node
189199
* @param {boolean=} state
190200
*/
191201

@@ -195,7 +205,7 @@ export function toggleVisibility(node, state){
195205
}
196206

197207
/**
198-
* @param node
208+
* @param {HTMLElement} node
199209
* @param {boolean=} state
200210
*/
201211

‎src/js/parser.js

+9
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,15 @@ import { createElement } from "./helper.js";
33
const video_support = {};
44
const tpl_video = /** @type {HTMLVideoElement} */ (createElement("video"));
55

6+
/**
7+
*
8+
* @param {HTMLAnchorElement} anchor
9+
* @param {number} size
10+
* @param {!Object} options
11+
* @param {"node"|"video"|any} media
12+
* @returns {string}
13+
*/
14+
615
export default function(anchor, size, options, media){
716

817
let src, diff;

‎src/js/spotlight.js

+105
Original file line numberDiff line numberDiff line change
@@ -34,20 +34,34 @@ const controls_dom = {};
3434
const connection = navigator["connection"];
3535
const dpr = window["devicePixelRatio"] || 1;
3636

37+
/** @type {number} */
3738
let x;
39+
/** @type {number} */
3840
let y;
41+
/** @type {number} */
3942
let startX;
43+
/** @type {number} */
4044
let startY;
45+
/** @type {number} */
4146
let viewport_w;
47+
/** @type {number} */
4248
let viewport_h;
49+
/** @type {number} */
4350
let media_w;
51+
/** @type {number} */
4452
let media_h;
53+
/** @type {number} */
4554
let scale;
4655

56+
/** @type {boolean} */
4757
let is_down;
58+
/** @type {boolean} */
4859
let dragged;
60+
/** @type {boolean} */
4961
let slidable;
62+
/** @type {boolean} */
5063
let toggle_autofit;
64+
/** @type {boolean} */
5165
let toggle_theme;
5266

5367
let current_slide;
@@ -76,24 +90,43 @@ let animation_fade;
7690
let animation_slide;
7791
let animation_custom;
7892

93+
/** @type {HTMLBodyElement} */
7994
let body;
95+
/** @type {HTMLDivElement=} */
8096
let panel;
97+
/** @type {HTMLDivElement[]} */
8198
let panes;
99+
/** @type {Image|HTMLVideoElement|HTMLElement} */
82100
let media;
101+
/** @type {HTMLImageElement} */
83102
let media_next = createElement("img");
103+
/** @type {HTMLDivElement} */
84104
let slider;
105+
/** @type {HTMLDivElement} */
85106
let header;
107+
/** @type {HTMLDivElement} */
86108
let footer;
109+
/** @type {number} */
87110
let footer_visible = 0;
111+
/** @type {HTMLDivElement} */
88112
let title;
113+
/** @type {HTMLDivElement} */
89114
let description;
115+
/** @type {HTMLDivElement} */
90116
let button;
117+
/** @type {HTMLDivElement} */
91118
let page_prev;
119+
/** @type {HTMLDivElement} */
92120
let page_next;
121+
/** @type {HTMLDivElement=} */
93122
let maximize;
123+
/** @type {HTMLDivElement} */
94124
let page;
125+
/** @type {HTMLDivElement} */
95126
let player;
127+
/** @type {HTMLDivElement} */
96128
let progress;
129+
/** @type {HTMLDivElement} */
97130
let spinner;
98131

99132
let gallery;
@@ -210,6 +243,12 @@ export function init(){
210243
}
211244
}
212245

246+
/**
247+
* @param {string} classname
248+
* @param {Function} fn
249+
* @returns {HTMLDivElement}
250+
*/
251+
213252
export function addControl(classname, fn){
214253

215254
//console.log("addControl", classname, fn);
@@ -223,6 +262,10 @@ export function addControl(classname, fn){
223262
return controls_dom[classname] = div;
224263
}
225264

265+
/**
266+
* @param {string} classname
267+
*/
268+
226269
export function removeControl(classname){
227270

228271
//console.log("dispatch", classname);
@@ -236,10 +279,15 @@ export function removeControl(classname){
236279
}
237280
}
238281

282+
/**
283+
* @param {Event} event
284+
*/
285+
239286
function dispatch(event){
240287

241288
//console.log("dispatch");
242289

290+
/** @type {HTMLDivElement=} */
243291
const target = event.target.closest(".spotlight");
244292

245293
if(target){
@@ -288,6 +336,10 @@ export function show(gallery, group, index){
288336
init_gallery(index);
289337
}
290338

339+
/**
340+
* @param {number} index
341+
*/
342+
291343
function init_gallery(index){
292344

293345
//console.log("init_gallery", index);
@@ -485,6 +537,10 @@ function prepare_animation(prepare){
485537
}
486538
}
487539

540+
/**
541+
* @param {number} index
542+
*/
543+
488544
function init_slide(index){
489545

490546
//console.log("init_slide", index);
@@ -621,6 +677,10 @@ function toggle_spinner(options_spinner, is_on){
621677
options_spinner && toggleClass(spinner, "spin", is_on);
622678
}
623679

680+
/**
681+
* @returns {boolean}
682+
*/
683+
624684
function has_fullscreen(){
625685

626686
//console.log("has_fullscreen");
@@ -744,6 +804,10 @@ function toggle_listener(install){
744804
toggleListener(install, window, "popstate", history_listener);
745805
}
746806

807+
/**
808+
* @param {PopStateEvent} event
809+
*/
810+
747811
function history_listener(event) {
748812

749813
//console.log("history_listener");
@@ -754,6 +818,10 @@ function history_listener(event) {
754818
}
755819
}
756820

821+
/**
822+
* @param {KeyboardEvent} event
823+
*/
824+
757825
function key_listener(event){
758826

759827
//console.log("key_listener");
@@ -804,6 +872,10 @@ function key_listener(event){
804872
}
805873
}
806874

875+
/**
876+
* @param {WheelEvent} event
877+
*/
878+
807879
function wheel_listener(event){
808880

809881
//console.log("wheel_listener");
@@ -888,6 +960,10 @@ function autohide(){
888960
}
889961
}
890962

963+
/**
964+
* @param {number} cooldown
965+
*/
966+
891967
function schedule(cooldown){
892968

893969
//console.log("schedule", cooldown);
@@ -933,6 +1009,10 @@ export function menu(state){
9331009
}
9341010
}
9351011

1012+
/**
1013+
* @param {TouchEvent|MouseEvent} e
1014+
*/
1015+
9361016
function start(e){
9371017

9381018
//console.log("start");
@@ -956,6 +1036,10 @@ function start(e){
9561036
toggleAnimation(panel);
9571037
}
9581038

1039+
/**
1040+
* @param {TouchEvent|MouseEvent} e
1041+
*/
1042+
9591043
function end(e){
9601044

9611045
//console.log("end");
@@ -995,6 +1079,10 @@ function end(e){
9951079
}
9961080
}
9971081

1082+
/**
1083+
* @param {TouchEvent|MouseEvent} e
1084+
*/
1085+
9981086
function move(e){
9991087

10001088
//console.log("move");
@@ -1296,6 +1384,10 @@ export function close(hashchange){
12961384
options_onclose && options_onclose();
12971385
}
12981386

1387+
/**
1388+
* @param {Image|HTMLVideoElement|HTMLElement} media
1389+
*/
1390+
12991391
function checkout(media){
13001392

13011393
//console.log("checkout");
@@ -1367,6 +1459,11 @@ export function next(e){
13671459
}
13681460
}
13691461

1462+
/**
1463+
* @param {number} slide
1464+
* @returns {boolean=}
1465+
*/
1466+
13701467
export function goto(slide){
13711468

13721469
//console.log("goto", slide);
@@ -1395,6 +1492,10 @@ export function goto(slide){
13951492
}
13961493
}
13971494

1495+
/**
1496+
* @param {boolean} direction
1497+
*/
1498+
13981499
function prepare(direction){
13991500

14001501
//console.log("prepare", direction);
@@ -1452,6 +1553,10 @@ function prepare(direction){
14521553
}
14531554
}
14541555

1556+
/**
1557+
* @param {boolean} direction
1558+
*/
1559+
14551560
function setup_page(direction){
14561561

14571562
//console.log("setup_page", direction);

0 commit comments

Comments
 (0)