backdoor-vconsole 1.1.1 → 1.2.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.cjs.js CHANGED
@@ -1,120 +1,100 @@
1
1
  'use strict';
2
2
 
3
- var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
4
3
  var VConsole = require('vconsole');
5
4
 
6
- var DEFAULT_CONFIG = {
7
- COUNT: 7,
8
- INTERVAL: 300,
9
- DURATION: 7 * 1000,
10
- CLOSE_COUNT: 10,
11
- CLOSE_DURATION: 10 * 1000
5
+ const DEFAULT_CONFIG = {
6
+ COUNT: 7,
7
+ INTERVAL: 300,
8
+ DURATION: 7 * 1000,
9
+ CLOSE_COUNT: 10,
10
+ CLOSE_DURATION: 10 * 1000,
12
11
  };
13
- var vConsoleInstance = null;
14
- var toggleVConsole = function toggleVConsole() {
15
- if (vConsoleInstance) {
16
- vConsoleInstance.destroy();
17
- vConsoleInstance = null;
18
- console.log("vConsole is closed");
19
- } else {
20
- vConsoleInstance = new VConsole();
21
- console.log("vConsole is started", vConsoleInstance);
22
- }
23
- };
24
- var isMobile = function isMobile() {
25
- return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
26
- };
27
- var getTarget = function getTarget(target) {
28
- if (typeof target === "string") {
29
- var t = document.querySelector(target);
30
- if (t) {
31
- return t;
32
- } else {
33
- throw new Error("can not find target");
12
+ let vConsoleInstance = null;
13
+ const toggleVConsole = () => {
14
+ if (vConsoleInstance) {
15
+ vConsoleInstance.destroy();
16
+ vConsoleInstance = null;
17
+ console.log("vConsole is closed");
18
+ }
19
+ else {
20
+ vConsoleInstance = new VConsole();
21
+ console.log("vConsole is started", vConsoleInstance);
34
22
  }
35
- } else if (target instanceof HTMLElement) {
36
- return target;
37
- } else {
38
- throw new Error("target is required");
39
- }
40
23
  };
41
-
42
- // 快速点击 - 点击 openCount 次开启,点击 closeCount 次关闭
43
- var rapidClicks = function rapidClicks(_ref) {
44
- var target = _ref.target,
45
- _ref$openCount = _ref.openCount,
46
- openCount = _ref$openCount === void 0 ? DEFAULT_CONFIG.COUNT : _ref$openCount,
47
- _ref$closeCount = _ref.closeCount,
48
- closeCount = _ref$closeCount === void 0 ? DEFAULT_CONFIG.CLOSE_COUNT : _ref$closeCount,
49
- _ref$interval = _ref.interval,
50
- interval = _ref$interval === void 0 ? DEFAULT_CONFIG.INTERVAL : _ref$interval;
51
- var t = getTarget(target);
52
- var clickTimer = null;
53
- var clickCount = 0;
54
- var handler = function handler() {
55
- clearTimeout(clickTimer);
56
- clickCount += 1;
57
- var threshold = vConsoleInstance ? closeCount : openCount;
58
- if (clickCount === threshold) {
59
- toggleVConsole();
60
- clickCount = 0;
24
+ const isMobile = () => /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
25
+ const getTarget = (target) => {
26
+ if (typeof target === "string") {
27
+ const t = document.querySelector(target);
28
+ if (t instanceof HTMLElement) {
29
+ return t;
30
+ }
31
+ else {
32
+ throw new Error(`can not find target`);
33
+ }
34
+ }
35
+ else if (target instanceof HTMLElement) {
36
+ return target;
37
+ }
38
+ else {
39
+ throw new Error("target is required");
61
40
  }
62
- clickTimer = setTimeout(function () {
63
- clickCount = 0;
64
- }, interval);
65
- };
66
- t.addEventListener("click", handler);
67
- return function () {
68
- t.removeEventListener("click", handler);
69
- clearTimeout(clickTimer);
70
- };
71
41
  };
72
-
73
- // 长按 - 长按 openDuration 开启,长按 closeDuration 关闭
74
- var longPress = function longPress(_ref2) {
75
- var target = _ref2.target,
76
- _ref2$openDuration = _ref2.openDuration,
77
- openDuration = _ref2$openDuration === void 0 ? DEFAULT_CONFIG.DURATION : _ref2$openDuration,
78
- _ref2$closeDuration = _ref2.closeDuration,
79
- closeDuration = _ref2$closeDuration === void 0 ? DEFAULT_CONFIG.CLOSE_DURATION : _ref2$closeDuration;
80
- var t = getTarget(target);
81
- var timer = null;
82
- var onPress = function onPress() {
83
- clearTimeout(timer);
84
- var duration = vConsoleInstance ? closeDuration : openDuration;
85
- timer = setTimeout(toggleVConsole, duration);
86
- };
87
- var clearTimer = function clearTimer() {
88
- clearTimeout(timer);
89
- timer = null;
90
- };
91
- var events = isMobile() ? {
92
- touchstart: onPress,
93
- touchend: clearTimer,
94
- touchcancel: clearTimer
95
- } : {
96
- mousedown: onPress,
97
- mouseup: clearTimer,
98
- mouseleave: clearTimer
99
- };
100
- Object.entries(events).forEach(function (_ref3) {
101
- var _ref4 = _slicedToArray(_ref3, 2),
102
- event = _ref4[0],
103
- handler = _ref4[1];
104
- return t.addEventListener(event, handler);
105
- });
106
- return function () {
107
- Object.entries(events).forEach(function (_ref5) {
108
- var _ref6 = _slicedToArray(_ref5, 2),
109
- event = _ref6[0],
110
- handler = _ref6[1];
111
- return t.removeEventListener(event, handler);
112
- });
113
- clearTimer();
114
- };
42
+ /**
43
+ * 快速点击 - 点击 openCount 次开启,点击 closeCount 次关闭
44
+ */
45
+ const rapidClicks = (options) => {
46
+ const { target, openCount = DEFAULT_CONFIG.COUNT, closeCount = DEFAULT_CONFIG.CLOSE_COUNT, interval = DEFAULT_CONFIG.INTERVAL } = options;
47
+ const t = getTarget(target);
48
+ let clickTimer = null;
49
+ let clickCount = 0;
50
+ const handler = () => {
51
+ if (clickTimer)
52
+ clearTimeout(clickTimer);
53
+ clickCount += 1;
54
+ const threshold = vConsoleInstance ? closeCount : openCount;
55
+ if (clickCount === threshold) {
56
+ toggleVConsole();
57
+ clickCount = 0;
58
+ }
59
+ clickTimer = setTimeout(() => {
60
+ clickCount = 0;
61
+ }, interval);
62
+ };
63
+ t.addEventListener("click", handler);
64
+ return () => {
65
+ t.removeEventListener("click", handler);
66
+ if (clickTimer)
67
+ clearTimeout(clickTimer);
68
+ };
69
+ };
70
+ /**
71
+ * 长按 - 长按 openDuration 开启,长按 closeDuration 关闭
72
+ */
73
+ const longPress = (options) => {
74
+ const { target, openDuration = DEFAULT_CONFIG.DURATION, closeDuration = DEFAULT_CONFIG.CLOSE_DURATION } = options;
75
+ const t = getTarget(target);
76
+ let timer = null;
77
+ const onPress = () => {
78
+ if (timer)
79
+ clearTimeout(timer);
80
+ const duration = vConsoleInstance ? closeDuration : openDuration;
81
+ timer = setTimeout(toggleVConsole, duration);
82
+ };
83
+ const clearTimer = () => {
84
+ if (timer)
85
+ clearTimeout(timer);
86
+ timer = null;
87
+ };
88
+ const events = isMobile()
89
+ ? { touchstart: onPress, touchend: clearTimer, touchcancel: clearTimer }
90
+ : { mousedown: onPress, mouseup: clearTimer, mouseleave: clearTimer };
91
+ Object.entries(events).forEach(([event, handler]) => t.addEventListener(event, handler));
92
+ return () => {
93
+ Object.entries(events).forEach(([event, handler]) => t.removeEventListener(event, handler));
94
+ clearTimer();
95
+ };
115
96
  };
116
97
 
117
98
  exports.longPress = longPress;
118
99
  exports.rapidClicks = rapidClicks;
119
100
  exports.toggleVConsole = toggleVConsole;
120
- //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- "use strict";var e=require("@babel/runtime-corejs3/helpers/slicedToArray"),n=require("vconsole"),o={COUNT:7,INTERVAL:300,DURATION:7e3,CLOSE_COUNT:10,CLOSE_DURATION:1e4},t=null,r=function(){t?(t.destroy(),t=null,console.log("vConsole is closed")):(t=new n,console.log("vConsole is started",t))},i=function(e){if("string"==typeof e){var n=document.querySelector(e);if(n)return n;throw new Error("can not find target")}if(e instanceof HTMLElement)return e;throw new Error("target is required")};exports.longPress=function(n){var u=n.target,c=n.openDuration,s=void 0===c?o.DURATION:c,l=n.closeDuration,a=void 0===l?o.CLOSE_DURATION:l,d=i(u),v=null,f=function(){clearTimeout(v),v=setTimeout(r,t?a:s)},T=function(){clearTimeout(v),v=null},E=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)?{touchstart:f,touchend:T,touchcancel:T}:{mousedown:f,mouseup:T,mouseleave:T};return Object.entries(E).forEach(function(n){var o=e(n,2),t=o[0],r=o[1];return d.addEventListener(t,r)}),function(){Object.entries(E).forEach(function(n){var o=e(n,2),t=o[0],r=o[1];return d.removeEventListener(t,r)}),T()}},exports.rapidClicks=function(e){var n=e.target,u=e.openCount,c=void 0===u?o.COUNT:u,s=e.closeCount,l=void 0===s?o.CLOSE_COUNT:s,a=e.interval,d=void 0===a?o.INTERVAL:a,v=i(n),f=null,T=0,E=function(){clearTimeout(f),(T+=1)===(t?l:c)&&(r(),T=0),f=setTimeout(function(){T=0},d)};return v.addEventListener("click",E),function(){v.removeEventListener("click",E),clearTimeout(f)}},exports.toggleVConsole=r;
1
+ "use strict";var e=require("vconsole");const t={COUNT:7,INTERVAL:300,DURATION:7e3,CLOSE_COUNT:10,CLOSE_DURATION:1e4};let o=null;const n=()=>{o?(o.destroy(),o=null,console.log("vConsole is closed")):(o=new e,console.log("vConsole is started",o))},r=e=>{if("string"==typeof e){const t=document.querySelector(e);if(t instanceof HTMLElement)return t;throw new Error("can not find target")}if(e instanceof HTMLElement)return e;throw new Error("target is required")};exports.longPress=e=>{const{target:s,openDuration:i=t.DURATION,closeDuration:l=t.CLOSE_DURATION}=e,c=r(s);let u=null;const a=()=>{u&&clearTimeout(u);u=setTimeout(n,o?l:i)},T=()=>{u&&clearTimeout(u),u=null},d=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)?{touchstart:a,touchend:T,touchcancel:T}:{mousedown:a,mouseup:T,mouseleave:T};return Object.entries(d).forEach(([e,t])=>c.addEventListener(e,t)),()=>{Object.entries(d).forEach(([e,t])=>c.removeEventListener(e,t)),T()}},exports.rapidClicks=e=>{const{target:s,openCount:i=t.COUNT,closeCount:l=t.CLOSE_COUNT,interval:c=t.INTERVAL}=e,u=r(s);let a=null,T=0;const d=()=>{a&&clearTimeout(a),T+=1;T===(o?l:i)&&(n(),T=0),a=setTimeout(()=>{T=0},c)};return u.addEventListener("click",d),()=>{u.removeEventListener("click",d),a&&clearTimeout(a)}},exports.toggleVConsole=n;
@@ -0,0 +1,31 @@
1
+ declare const toggleVConsole: () => void;
2
+ export interface RapidClicksOptions {
3
+ /** 选择器或 HTMLElement */
4
+ target: string | HTMLElement;
5
+ /** 开启次数,默认 7 */
6
+ openCount?: number;
7
+ /** 关闭次数,默认 10 */
8
+ closeCount?: number;
9
+ /** 点击间隔,默认 300ms */
10
+ interval?: number;
11
+ }
12
+ /**
13
+ * 快速点击 - 点击 openCount 次开启,点击 closeCount 次关闭
14
+ */
15
+ export declare const rapidClicks: (options: RapidClicksOptions) => (() => void);
16
+ export interface LongPressOptions {
17
+ /** 选择器或 HTMLElement */
18
+ target: string | HTMLElement;
19
+ /** 开启时长,默认 7000ms */
20
+ openDuration?: number;
21
+ /** 关闭时长,默认 10000ms */
22
+ closeDuration?: number;
23
+ }
24
+ /**
25
+ * 长按 - 长按 openDuration 开启,长按 closeDuration 关闭
26
+ */
27
+ export declare const longPress: (options: LongPressOptions) => (() => void);
28
+ /**
29
+ * 手动切换 vConsole 开关状态
30
+ */
31
+ export { toggleVConsole };
@@ -1 +1 @@
1
- import e from"@babel/runtime-corejs3/helpers/slicedToArray";import n from"vconsole";var o={COUNT:7,INTERVAL:300,DURATION:7e3,CLOSE_COUNT:10,CLOSE_DURATION:1e4},t=null,r=function(){t?(t.destroy(),t=null,console.log("vConsole is closed")):(t=new n,console.log("vConsole is started",t))},i=function(e){if("string"==typeof e){var n=document.querySelector(e);if(n)return n;throw new Error("can not find target")}if(e instanceof HTMLElement)return e;throw new Error("target is required")},u=function(e){var n=e.target,u=e.openCount,c=void 0===u?o.COUNT:u,l=e.closeCount,a=void 0===l?o.CLOSE_COUNT:l,s=e.interval,v=void 0===s?o.INTERVAL:s,d=i(n),f=null,m=0,T=function(){clearTimeout(f),(m+=1)===(t?a:c)&&(r(),m=0),f=setTimeout(function(){m=0},v)};return d.addEventListener("click",T),function(){d.removeEventListener("click",T),clearTimeout(f)}},c=function(n){var u=n.target,c=n.openDuration,l=void 0===c?o.DURATION:c,a=n.closeDuration,s=void 0===a?o.CLOSE_DURATION:a,v=i(u),d=null,f=function(){clearTimeout(d),d=setTimeout(r,t?s:l)},m=function(){clearTimeout(d),d=null},T=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)?{touchstart:f,touchend:m,touchcancel:m}:{mousedown:f,mouseup:m,mouseleave:m};return Object.entries(T).forEach(function(n){var o=e(n,2),t=o[0],r=o[1];return v.addEventListener(t,r)}),function(){Object.entries(T).forEach(function(n){var o=e(n,2),t=o[0],r=o[1];return v.removeEventListener(t,r)}),m()}};export{c as longPress,u as rapidClicks,r as toggleVConsole};
1
+ import e from"vconsole";const t={COUNT:7,INTERVAL:300,DURATION:7e3,CLOSE_COUNT:10,CLOSE_DURATION:1e4};let o=null;const n=()=>{o?(o.destroy(),o=null,console.log("vConsole is closed")):(o=new e,console.log("vConsole is started",o))},r=e=>{if("string"==typeof e){const t=document.querySelector(e);if(t instanceof HTMLElement)return t;throw new Error("can not find target")}if(e instanceof HTMLElement)return e;throw new Error("target is required")},i=e=>{const{target:i,openCount:l=t.COUNT,closeCount:s=t.CLOSE_COUNT,interval:c=t.INTERVAL}=e,u=r(i);let a=null,T=0;const E=()=>{a&&clearTimeout(a),T+=1;T===(o?s:l)&&(n(),T=0),a=setTimeout(()=>{T=0},c)};return u.addEventListener("click",E),()=>{u.removeEventListener("click",E),a&&clearTimeout(a)}},l=e=>{const{target:i,openDuration:l=t.DURATION,closeDuration:s=t.CLOSE_DURATION}=e,c=r(i);let u=null;const a=()=>{u&&clearTimeout(u);u=setTimeout(n,o?s:l)},T=()=>{u&&clearTimeout(u),u=null},E=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)?{touchstart:a,touchend:T,touchcancel:T}:{mousedown:a,mouseup:T,mouseleave:T};return Object.entries(E).forEach(([e,t])=>c.addEventListener(e,t)),()=>{Object.entries(E).forEach(([e,t])=>c.removeEventListener(e,t)),T()}};export{l as longPress,i as rapidClicks,n as toggleVConsole};
package/dist/index.mjs CHANGED
@@ -1,116 +1,96 @@
1
- import _slicedToArray from '@babel/runtime-corejs3/helpers/slicedToArray';
2
1
  import VConsole from 'vconsole';
3
2
 
4
- var DEFAULT_CONFIG = {
5
- COUNT: 7,
6
- INTERVAL: 300,
7
- DURATION: 7 * 1000,
8
- CLOSE_COUNT: 10,
9
- CLOSE_DURATION: 10 * 1000
3
+ const DEFAULT_CONFIG = {
4
+ COUNT: 7,
5
+ INTERVAL: 300,
6
+ DURATION: 7 * 1000,
7
+ CLOSE_COUNT: 10,
8
+ CLOSE_DURATION: 10 * 1000,
10
9
  };
11
- var vConsoleInstance = null;
12
- var toggleVConsole = function toggleVConsole() {
13
- if (vConsoleInstance) {
14
- vConsoleInstance.destroy();
15
- vConsoleInstance = null;
16
- console.log("vConsole is closed");
17
- } else {
18
- vConsoleInstance = new VConsole();
19
- console.log("vConsole is started", vConsoleInstance);
20
- }
21
- };
22
- var isMobile = function isMobile() {
23
- return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
24
- };
25
- var getTarget = function getTarget(target) {
26
- if (typeof target === "string") {
27
- var t = document.querySelector(target);
28
- if (t) {
29
- return t;
30
- } else {
31
- throw new Error("can not find target");
10
+ let vConsoleInstance = null;
11
+ const toggleVConsole = () => {
12
+ if (vConsoleInstance) {
13
+ vConsoleInstance.destroy();
14
+ vConsoleInstance = null;
15
+ console.log("vConsole is closed");
16
+ }
17
+ else {
18
+ vConsoleInstance = new VConsole();
19
+ console.log("vConsole is started", vConsoleInstance);
32
20
  }
33
- } else if (target instanceof HTMLElement) {
34
- return target;
35
- } else {
36
- throw new Error("target is required");
37
- }
38
21
  };
39
-
40
- // 快速点击 - 点击 openCount 次开启,点击 closeCount 次关闭
41
- var rapidClicks = function rapidClicks(_ref) {
42
- var target = _ref.target,
43
- _ref$openCount = _ref.openCount,
44
- openCount = _ref$openCount === void 0 ? DEFAULT_CONFIG.COUNT : _ref$openCount,
45
- _ref$closeCount = _ref.closeCount,
46
- closeCount = _ref$closeCount === void 0 ? DEFAULT_CONFIG.CLOSE_COUNT : _ref$closeCount,
47
- _ref$interval = _ref.interval,
48
- interval = _ref$interval === void 0 ? DEFAULT_CONFIG.INTERVAL : _ref$interval;
49
- var t = getTarget(target);
50
- var clickTimer = null;
51
- var clickCount = 0;
52
- var handler = function handler() {
53
- clearTimeout(clickTimer);
54
- clickCount += 1;
55
- var threshold = vConsoleInstance ? closeCount : openCount;
56
- if (clickCount === threshold) {
57
- toggleVConsole();
58
- clickCount = 0;
22
+ const isMobile = () => /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
23
+ const getTarget = (target) => {
24
+ if (typeof target === "string") {
25
+ const t = document.querySelector(target);
26
+ if (t instanceof HTMLElement) {
27
+ return t;
28
+ }
29
+ else {
30
+ throw new Error(`can not find target`);
31
+ }
32
+ }
33
+ else if (target instanceof HTMLElement) {
34
+ return target;
35
+ }
36
+ else {
37
+ throw new Error("target is required");
59
38
  }
60
- clickTimer = setTimeout(function () {
61
- clickCount = 0;
62
- }, interval);
63
- };
64
- t.addEventListener("click", handler);
65
- return function () {
66
- t.removeEventListener("click", handler);
67
- clearTimeout(clickTimer);
68
- };
69
39
  };
70
-
71
- // 长按 - 长按 openDuration 开启,长按 closeDuration 关闭
72
- var longPress = function longPress(_ref2) {
73
- var target = _ref2.target,
74
- _ref2$openDuration = _ref2.openDuration,
75
- openDuration = _ref2$openDuration === void 0 ? DEFAULT_CONFIG.DURATION : _ref2$openDuration,
76
- _ref2$closeDuration = _ref2.closeDuration,
77
- closeDuration = _ref2$closeDuration === void 0 ? DEFAULT_CONFIG.CLOSE_DURATION : _ref2$closeDuration;
78
- var t = getTarget(target);
79
- var timer = null;
80
- var onPress = function onPress() {
81
- clearTimeout(timer);
82
- var duration = vConsoleInstance ? closeDuration : openDuration;
83
- timer = setTimeout(toggleVConsole, duration);
84
- };
85
- var clearTimer = function clearTimer() {
86
- clearTimeout(timer);
87
- timer = null;
88
- };
89
- var events = isMobile() ? {
90
- touchstart: onPress,
91
- touchend: clearTimer,
92
- touchcancel: clearTimer
93
- } : {
94
- mousedown: onPress,
95
- mouseup: clearTimer,
96
- mouseleave: clearTimer
97
- };
98
- Object.entries(events).forEach(function (_ref3) {
99
- var _ref4 = _slicedToArray(_ref3, 2),
100
- event = _ref4[0],
101
- handler = _ref4[1];
102
- return t.addEventListener(event, handler);
103
- });
104
- return function () {
105
- Object.entries(events).forEach(function (_ref5) {
106
- var _ref6 = _slicedToArray(_ref5, 2),
107
- event = _ref6[0],
108
- handler = _ref6[1];
109
- return t.removeEventListener(event, handler);
110
- });
111
- clearTimer();
112
- };
40
+ /**
41
+ * 快速点击 - 点击 openCount 次开启,点击 closeCount 次关闭
42
+ */
43
+ const rapidClicks = (options) => {
44
+ const { target, openCount = DEFAULT_CONFIG.COUNT, closeCount = DEFAULT_CONFIG.CLOSE_COUNT, interval = DEFAULT_CONFIG.INTERVAL } = options;
45
+ const t = getTarget(target);
46
+ let clickTimer = null;
47
+ let clickCount = 0;
48
+ const handler = () => {
49
+ if (clickTimer)
50
+ clearTimeout(clickTimer);
51
+ clickCount += 1;
52
+ const threshold = vConsoleInstance ? closeCount : openCount;
53
+ if (clickCount === threshold) {
54
+ toggleVConsole();
55
+ clickCount = 0;
56
+ }
57
+ clickTimer = setTimeout(() => {
58
+ clickCount = 0;
59
+ }, interval);
60
+ };
61
+ t.addEventListener("click", handler);
62
+ return () => {
63
+ t.removeEventListener("click", handler);
64
+ if (clickTimer)
65
+ clearTimeout(clickTimer);
66
+ };
67
+ };
68
+ /**
69
+ * 长按 - 长按 openDuration 开启,长按 closeDuration 关闭
70
+ */
71
+ const longPress = (options) => {
72
+ const { target, openDuration = DEFAULT_CONFIG.DURATION, closeDuration = DEFAULT_CONFIG.CLOSE_DURATION } = options;
73
+ const t = getTarget(target);
74
+ let timer = null;
75
+ const onPress = () => {
76
+ if (timer)
77
+ clearTimeout(timer);
78
+ const duration = vConsoleInstance ? closeDuration : openDuration;
79
+ timer = setTimeout(toggleVConsole, duration);
80
+ };
81
+ const clearTimer = () => {
82
+ if (timer)
83
+ clearTimeout(timer);
84
+ timer = null;
85
+ };
86
+ const events = isMobile()
87
+ ? { touchstart: onPress, touchend: clearTimer, touchcancel: clearTimer }
88
+ : { mousedown: onPress, mouseup: clearTimer, mouseleave: clearTimer };
89
+ Object.entries(events).forEach(([event, handler]) => t.addEventListener(event, handler));
90
+ return () => {
91
+ Object.entries(events).forEach(([event, handler]) => t.removeEventListener(event, handler));
92
+ clearTimer();
93
+ };
113
94
  };
114
95
 
115
96
  export { longPress, rapidClicks, toggleVConsole };
116
- //# sourceMappingURL=index.mjs.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "backdoor-vconsole",
3
- "version": "1.1.1",
3
+ "version": "1.2.0",
4
4
  "description": "programmer backdoor trigger incident",
5
5
  "homepage": "https://github.com/jackzer666/backdoor-vconsole",
6
6
  "license": "MIT",
@@ -8,6 +8,14 @@
8
8
  "type": "module",
9
9
  "main": "dist/index.cjs.min.js",
10
10
  "module": "dist/index.min.mjs",
11
+ "types": "dist/index.d.ts",
12
+ "exports": {
13
+ ".": {
14
+ "types": "./dist/index.d.ts",
15
+ "import": "./dist/index.min.mjs",
16
+ "require": "./dist/index.cjs.min.js"
17
+ }
18
+ },
11
19
  "files": [
12
20
  "dist"
13
21
  ],
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../index.js"],"sourcesContent":["import VConsole from \"vconsole\";\n\nconst DEFAULT_CONFIG = {\n COUNT: 7,\n INTERVAL: 300,\n DURATION: 7 * 1000,\n CLOSE_COUNT: 10,\n CLOSE_INTERVAL: 300,\n CLOSE_DURATION: 10 * 1000,\n};\n\nlet vConsoleInstance = null;\n\nconst toggleVConsole = () => {\n if (vConsoleInstance) {\n vConsoleInstance.destroy();\n vConsoleInstance = null;\n console.log(\"vConsole is closed\");\n } else {\n vConsoleInstance = new VConsole();\n console.log(\"vConsole is started\", vConsoleInstance);\n }\n};\n\nconst isMobile = () =>\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n );\n\nconst getTarget = (target) => {\n if (typeof target === \"string\") {\n const t = document.querySelector(target);\n if (t) {\n return t;\n } else {\n throw new Error(`can not find target`);\n }\n } else if (target instanceof HTMLElement) {\n return target;\n } else {\n throw new Error(\"target is required\");\n }\n};\n\n// 快速点击 - 点击 openCount 次开启,点击 closeCount 次关闭\nconst rapidClicks = ({\n target,\n openCount = DEFAULT_CONFIG.COUNT,\n closeCount = DEFAULT_CONFIG.CLOSE_COUNT,\n interval = DEFAULT_CONFIG.INTERVAL,\n}) => {\n const t = getTarget(target);\n let clickTimer = null;\n let clickCount = 0;\n\n const handler = () => {\n clearTimeout(clickTimer);\n clickCount += 1;\n const threshold = vConsoleInstance ? closeCount : openCount;\n if (clickCount === threshold) {\n toggleVConsole();\n clickCount = 0;\n }\n clickTimer = setTimeout(() => {\n clickCount = 0;\n }, interval);\n };\n\n t.addEventListener(\"click\", handler);\n\n return () => {\n t.removeEventListener(\"click\", handler);\n clearTimeout(clickTimer);\n };\n};\n\n// 长按 - 长按 openDuration 开启,长按 closeDuration 关闭\nconst longPress = ({\n target,\n openDuration = DEFAULT_CONFIG.DURATION,\n closeDuration = DEFAULT_CONFIG.CLOSE_DURATION,\n}) => {\n const t = getTarget(target);\n let timer = null;\n\n const onPress = () => {\n clearTimeout(timer);\n const duration = vConsoleInstance ? closeDuration : openDuration;\n timer = setTimeout(toggleVConsole, duration);\n };\n\n const clearTimer = () => {\n clearTimeout(timer);\n timer = null;\n };\n\n const events = isMobile()\n ? { touchstart: onPress, touchend: clearTimer, touchcancel: clearTimer }\n : { mousedown: onPress, mouseup: clearTimer, mouseleave: clearTimer };\n\n Object.entries(events).forEach(([event, handler]) =>\n t.addEventListener(event, handler)\n );\n\n return () => {\n Object.entries(events).forEach(([event, handler]) =>\n t.removeEventListener(event, handler)\n );\n clearTimer();\n };\n};\n\nexport { rapidClicks, longPress, toggleVConsole };\n"],"names":["DEFAULT_CONFIG","COUNT","INTERVAL","DURATION","CLOSE_COUNT","CLOSE_INTERVAL","CLOSE_DURATION","vConsoleInstance","toggleVConsole","destroy","console","log","VConsole","isMobile","test","navigator","userAgent","getTarget","target","t","document","querySelector","Error","HTMLElement","rapidClicks","_ref","_ref$openCount","openCount","_ref$closeCount","closeCount","_ref$interval","interval","clickTimer","clickCount","handler","clearTimeout","threshold","setTimeout","addEventListener","removeEventListener","longPress","_ref2","_ref2$openDuration","openDuration","_ref2$closeDuration","closeDuration","timer","onPress","duration","clearTimer","events","touchstart","touchend","touchcancel","mousedown","mouseup","mouseleave","Object","entries","forEach","_ref3","_ref4","_slicedToArray","event","_ref5","_ref6"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","sources":["../index.js"],"sourcesContent":["import VConsole from \"vconsole\";\n\nconst DEFAULT_CONFIG = {\n COUNT: 7,\n INTERVAL: 300,\n DURATION: 7 * 1000,\n CLOSE_COUNT: 10,\n CLOSE_INTERVAL: 300,\n CLOSE_DURATION: 10 * 1000,\n};\n\nlet vConsoleInstance = null;\n\nconst toggleVConsole = () => {\n if (vConsoleInstance) {\n vConsoleInstance.destroy();\n vConsoleInstance = null;\n console.log(\"vConsole is closed\");\n } else {\n vConsoleInstance = new VConsole();\n console.log(\"vConsole is started\", vConsoleInstance);\n }\n};\n\nconst isMobile = () =>\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n );\n\nconst getTarget = (target) => {\n if (typeof target === \"string\") {\n const t = document.querySelector(target);\n if (t) {\n return t;\n } else {\n throw new Error(`can not find target`);\n }\n } else if (target instanceof HTMLElement) {\n return target;\n } else {\n throw new Error(\"target is required\");\n }\n};\n\n// 快速点击 - 点击 openCount 次开启,点击 closeCount 次关闭\nconst rapidClicks = ({\n target,\n openCount = DEFAULT_CONFIG.COUNT,\n closeCount = DEFAULT_CONFIG.CLOSE_COUNT,\n interval = DEFAULT_CONFIG.INTERVAL,\n}) => {\n const t = getTarget(target);\n let clickTimer = null;\n let clickCount = 0;\n\n const handler = () => {\n clearTimeout(clickTimer);\n clickCount += 1;\n const threshold = vConsoleInstance ? closeCount : openCount;\n if (clickCount === threshold) {\n toggleVConsole();\n clickCount = 0;\n }\n clickTimer = setTimeout(() => {\n clickCount = 0;\n }, interval);\n };\n\n t.addEventListener(\"click\", handler);\n\n return () => {\n t.removeEventListener(\"click\", handler);\n clearTimeout(clickTimer);\n };\n};\n\n// 长按 - 长按 openDuration 开启,长按 closeDuration 关闭\nconst longPress = ({\n target,\n openDuration = DEFAULT_CONFIG.DURATION,\n closeDuration = DEFAULT_CONFIG.CLOSE_DURATION,\n}) => {\n const t = getTarget(target);\n let timer = null;\n\n const onPress = () => {\n clearTimeout(timer);\n const duration = vConsoleInstance ? closeDuration : openDuration;\n timer = setTimeout(toggleVConsole, duration);\n };\n\n const clearTimer = () => {\n clearTimeout(timer);\n timer = null;\n };\n\n const events = isMobile()\n ? { touchstart: onPress, touchend: clearTimer, touchcancel: clearTimer }\n : { mousedown: onPress, mouseup: clearTimer, mouseleave: clearTimer };\n\n Object.entries(events).forEach(([event, handler]) =>\n t.addEventListener(event, handler)\n );\n\n return () => {\n Object.entries(events).forEach(([event, handler]) =>\n t.removeEventListener(event, handler)\n );\n clearTimer();\n };\n};\n\nexport { rapidClicks, longPress, toggleVConsole };\n"],"names":["DEFAULT_CONFIG","COUNT","INTERVAL","DURATION","CLOSE_COUNT","CLOSE_INTERVAL","CLOSE_DURATION","vConsoleInstance","toggleVConsole","destroy","console","log","VConsole","isMobile","test","navigator","userAgent","getTarget","target","t","document","querySelector","Error","HTMLElement","rapidClicks","_ref","_ref$openCount","openCount","_ref$closeCount","closeCount","_ref$interval","interval","clickTimer","clickCount","handler","clearTimeout","threshold","setTimeout","addEventListener","removeEventListener","longPress","_ref2","_ref2$openDuration","openDuration","_ref2$closeDuration","closeDuration","timer","onPress","duration","clearTimer","events","touchstart","touchend","touchcancel","mousedown","mouseup","mouseleave","Object","entries","forEach","_ref3","_ref4","_slicedToArray","event","_ref5","_ref6"],"mappings":"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"}