lyb-js 1.6.2 → 1.6.4
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/Base/LibJsResizeWatcher.d.ts +21 -0
- package/Base/LibJsResizeWatcher.js +30 -0
- package/Browser/LibJsPathParams.js +2 -1
- package/Browser/libJsParseQueryString.js +1 -1
- package/README.md +14 -0
- package/libJs.d.ts +3 -0
- package/libJs.js +3 -0
- package/lyb.js +30 -2
- package/package.json +1 -1
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description 用于监听浏览器窗口尺寸变化的类
|
|
3
|
+
* @link 使用方法:https://www.npmjs.com/package/lyb-js#LibJsResizeWatcher-窗口监听
|
|
4
|
+
*/
|
|
5
|
+
type Listener = (w: number, h: number) => void;
|
|
6
|
+
/** @description 监听窗口变化,内部只注册一次resize事件,调用监听自身可取消监听 */
|
|
7
|
+
export declare class LibJsResizeWatcher {
|
|
8
|
+
/** 存储所有监听器及其是否需要立即执行的标志 */
|
|
9
|
+
private _listeners;
|
|
10
|
+
constructor();
|
|
11
|
+
/**
|
|
12
|
+
* @description 注册一个窗口尺寸变化的监听器
|
|
13
|
+
* @param cb 回调函数,参数为当前窗口宽度和高度
|
|
14
|
+
* @param immediate 是否在注册时立即执行一次回调,默认为 true
|
|
15
|
+
* @returns 一个函数,用于移除该监听器
|
|
16
|
+
*/
|
|
17
|
+
on(cb: Listener, immediate?: boolean): () => void;
|
|
18
|
+
/** @description 内部 resize 回调函数,调用所有注册的监听器 */
|
|
19
|
+
private _handleResize;
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/** @description 监听窗口变化,内部只注册一次resize事件,调用监听自身可取消监听 */
|
|
2
|
+
export class LibJsResizeWatcher {
|
|
3
|
+
constructor() {
|
|
4
|
+
/** 存储所有监听器及其是否需要立即执行的标志 */
|
|
5
|
+
this._listeners = [];
|
|
6
|
+
/** @description 内部 resize 回调函数,调用所有注册的监听器 */
|
|
7
|
+
this._handleResize = () => {
|
|
8
|
+
const w = window.innerWidth;
|
|
9
|
+
const h = window.innerHeight;
|
|
10
|
+
this._listeners.forEach(({ cb }) => cb(w, h));
|
|
11
|
+
};
|
|
12
|
+
//初始化时绑定窗口 resize 事件
|
|
13
|
+
window.addEventListener("resize", this._handleResize);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* @description 注册一个窗口尺寸变化的监听器
|
|
17
|
+
* @param cb 回调函数,参数为当前窗口宽度和高度
|
|
18
|
+
* @param immediate 是否在注册时立即执行一次回调,默认为 true
|
|
19
|
+
* @returns 一个函数,用于移除该监听器
|
|
20
|
+
*/
|
|
21
|
+
on(cb, immediate = true) {
|
|
22
|
+
const item = { cb, immediate };
|
|
23
|
+
this._listeners.push(item);
|
|
24
|
+
if (immediate)
|
|
25
|
+
cb(window.innerWidth, window.innerHeight);
|
|
26
|
+
return () => {
|
|
27
|
+
this._listeners = this._listeners.filter((l) => l !== item);
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -7,7 +7,8 @@ export const libJsPathParams = (path) => {
|
|
|
7
7
|
if (!url)
|
|
8
8
|
return {};
|
|
9
9
|
const params = url.split("&").reduce((pre, cur) => {
|
|
10
|
-
const [k, v] = cur.split(/=(.+)/);
|
|
10
|
+
const [k, v] = cur.split(/=(.+)/).map(decodeURIComponent);
|
|
11
|
+
;
|
|
11
12
|
return (pre[k] = v), pre;
|
|
12
13
|
}, {}) || {};
|
|
13
14
|
return params;
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
* @param query URL参数
|
|
3
3
|
* @link 使用方法:https://www.npmjs.com/package/lyb-js#LibJsParseQueryString-URL参数转对象
|
|
4
4
|
*/
|
|
5
|
-
export const libJsParseQueryString = (query) => Object.fromEntries(new URLSearchParams(query));
|
|
5
|
+
export const libJsParseQueryString = (query) => Object.fromEntries(new URLSearchParams(decodeURIComponent(query)));
|
package/README.md
CHANGED
|
@@ -64,6 +64,8 @@ console.log(t); //"string"
|
|
|
64
64
|
|
|
65
65
|
\- [LibJsPromiseTimeout-延时执行](#LibJsPromiseTimeout-延时执行)
|
|
66
66
|
|
|
67
|
+
\- [LibJsResizeWatcher-窗口监听](#LibJsResizeWatcher-窗口监听)
|
|
68
|
+
|
|
67
69
|
|
|
68
70
|
### Browser-浏览器
|
|
69
71
|
|
|
@@ -202,6 +204,18 @@ libJsPromiseTimeout(3000, () => {
|
|
|
202
204
|
});
|
|
203
205
|
```
|
|
204
206
|
|
|
207
|
+
### LibJsResizeWatcher-窗口监听
|
|
208
|
+
|
|
209
|
+
> 监听窗口变化,内部只注册一次`resize`事件,调用监听自身可取消监听
|
|
210
|
+
|
|
211
|
+
```ts
|
|
212
|
+
const libJsResizeWatcher = new LibJsResizeWatcher();
|
|
213
|
+
|
|
214
|
+
const off = libJsResizeWatcher.on((w,h)=>{})
|
|
215
|
+
|
|
216
|
+
off()
|
|
217
|
+
```
|
|
218
|
+
|
|
205
219
|
## Browser-浏览器
|
|
206
220
|
|
|
207
221
|
### LibJsColorConsole-有色打印
|
package/libJs.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { LibJsNumberStepper } from "./Misc/LibJsNumberStepper";
|
|
2
2
|
import { LibJsClassObservable } from "./Misc/LibJsClassObservable";
|
|
3
|
+
import { LibJsResizeWatcher } from "./Base/LibJsResizeWatcher";
|
|
3
4
|
/** @description 基础方法 */
|
|
4
5
|
export declare const Base: {
|
|
5
6
|
/**
|
|
@@ -15,6 +16,8 @@ export declare const Base: {
|
|
|
15
16
|
* @link 使用方法:https://www.npmjs.com/package/lyb-js#LibJsPromiseTimeout-延时执行
|
|
16
17
|
*/
|
|
17
18
|
libJsPromiseTimeout: (delay?: number, fn?: () => void) => Promise<void>;
|
|
19
|
+
/** @description 监听窗口变化,内部只注册一次resize事件,调用监听自身可取消监听 */
|
|
20
|
+
LibJsResizeWatcher: typeof LibJsResizeWatcher;
|
|
18
21
|
};
|
|
19
22
|
/** @description 浏览器相关方法 */
|
|
20
23
|
export declare const Browser: {
|
package/libJs.js
CHANGED
|
@@ -42,6 +42,7 @@ import { LibJsLerp } from "./Math/LibJsLerp";
|
|
|
42
42
|
import { LibJsNormalizeInRange } from "./Math/LibJsNormalizeInRange";
|
|
43
43
|
import { LibJsClassObservable } from "./Misc/LibJsClassObservable";
|
|
44
44
|
import { libJsCopy } from "./Browser/LibJsCopy";
|
|
45
|
+
import { LibJsResizeWatcher } from "./Base/LibJsResizeWatcher";
|
|
45
46
|
/** @description 基础方法 */
|
|
46
47
|
export const Base = {
|
|
47
48
|
/**
|
|
@@ -57,6 +58,8 @@ export const Base = {
|
|
|
57
58
|
* @link 使用方法:https://www.npmjs.com/package/lyb-js#LibJsPromiseTimeout-延时执行
|
|
58
59
|
*/
|
|
59
60
|
libJsPromiseTimeout,
|
|
61
|
+
/** @description 监听窗口变化,内部只注册一次resize事件,调用监听自身可取消监听 */
|
|
62
|
+
LibJsResizeWatcher,
|
|
60
63
|
};
|
|
61
64
|
/** @description 浏览器相关方法 */
|
|
62
65
|
export const Browser = {
|
package/lyb.js
CHANGED
|
@@ -92,7 +92,7 @@ ${log3.label}:`, log3.value];
|
|
|
92
92
|
if (!url)
|
|
93
93
|
return {};
|
|
94
94
|
const params = url.split("&").reduce((pre, cur) => {
|
|
95
|
-
const [k, v2] = cur.split(/=(.+)/);
|
|
95
|
+
const [k, v2] = cur.split(/=(.+)/).map(decodeURIComponent);
|
|
96
96
|
return pre[k] = v2, pre;
|
|
97
97
|
}, {}) || {};
|
|
98
98
|
return params;
|
|
@@ -3507,6 +3507,32 @@ ${log3.label}:`, log3.value];
|
|
|
3507
3507
|
fallbackCopy(text);
|
|
3508
3508
|
}
|
|
3509
3509
|
};
|
|
3510
|
+
class LibJsResizeWatcher {
|
|
3511
|
+
constructor() {
|
|
3512
|
+
this._listeners = [];
|
|
3513
|
+
this._handleResize = () => {
|
|
3514
|
+
const w = window.innerWidth;
|
|
3515
|
+
const h = window.innerHeight;
|
|
3516
|
+
this._listeners.forEach(({ cb }) => cb(w, h));
|
|
3517
|
+
};
|
|
3518
|
+
window.addEventListener("resize", this._handleResize);
|
|
3519
|
+
}
|
|
3520
|
+
/**
|
|
3521
|
+
* @description 注册一个窗口尺寸变化的监听器
|
|
3522
|
+
* @param cb 回调函数,参数为当前窗口宽度和高度
|
|
3523
|
+
* @param immediate 是否在注册时立即执行一次回调,默认为 true
|
|
3524
|
+
* @returns 一个函数,用于移除该监听器
|
|
3525
|
+
*/
|
|
3526
|
+
on(cb, immediate = true) {
|
|
3527
|
+
const item = { cb, immediate };
|
|
3528
|
+
this._listeners.push(item);
|
|
3529
|
+
if (immediate)
|
|
3530
|
+
cb(window.innerWidth, window.innerHeight);
|
|
3531
|
+
return () => {
|
|
3532
|
+
this._listeners = this._listeners.filter((l) => l !== item);
|
|
3533
|
+
};
|
|
3534
|
+
}
|
|
3535
|
+
}
|
|
3510
3536
|
const Base = {
|
|
3511
3537
|
/**
|
|
3512
3538
|
* @description 返回数据类型
|
|
@@ -3520,7 +3546,9 @@ ${log3.label}:`, log3.value];
|
|
|
3520
3546
|
* @param fn 延时执行函数
|
|
3521
3547
|
* @link 使用方法:https://www.npmjs.com/package/lyb-js#LibJsPromiseTimeout-延时执行
|
|
3522
3548
|
*/
|
|
3523
|
-
libJsPromiseTimeout
|
|
3549
|
+
libJsPromiseTimeout,
|
|
3550
|
+
/** @description 监听窗口变化,内部只注册一次resize事件,调用监听自身可取消监听 */
|
|
3551
|
+
LibJsResizeWatcher
|
|
3524
3552
|
};
|
|
3525
3553
|
const Browser = {
|
|
3526
3554
|
/** @description console颜色打印
|