tiny-essentials 1.16.1 → 1.17.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 (139) hide show
  1. package/dist/legacy/crypto/decrypt.cjs +1 -0
  2. package/dist/legacy/crypto/decrypt.d.mts +1 -0
  3. package/dist/legacy/crypto/decrypt.mjs +1 -0
  4. package/dist/legacy/crypto/encrypt.cjs +1 -0
  5. package/dist/legacy/crypto/encrypt.d.mts +1 -0
  6. package/dist/legacy/crypto/encrypt.mjs +1 -0
  7. package/dist/legacy/get/decimalColor.cjs +1 -0
  8. package/dist/legacy/get/decimalColor.d.mts +1 -0
  9. package/dist/legacy/get/decimalColor.mjs +1 -0
  10. package/dist/legacy/get/pagination.cjs +1 -0
  11. package/dist/legacy/get/pagination.d.mts +1 -0
  12. package/dist/legacy/get/pagination.mjs +1 -0
  13. package/dist/legacy/get/queryUrlByName.cjs +1 -0
  14. package/dist/legacy/get/queryUrlByName.d.mts +1 -0
  15. package/dist/legacy/get/queryUrlByName.mjs +1 -0
  16. package/dist/legacy/get/queryUrlJSON.cjs +1 -0
  17. package/dist/legacy/get/queryUrlJSON.d.mts +1 -0
  18. package/dist/legacy/get/queryUrlJSON.mjs +1 -0
  19. package/dist/legacy/get/super_string_filter.cjs +1 -0
  20. package/dist/legacy/get/super_string_filter.d.mts +1 -0
  21. package/dist/legacy/get/super_string_filter.mjs +1 -0
  22. package/dist/legacy/get/versionCheck.cjs +1 -0
  23. package/dist/legacy/get/versionCheck.d.mts +1 -0
  24. package/dist/legacy/get/versionCheck.mjs +1 -0
  25. package/dist/legacy/http/HTTP-1.0.cjs +2 -0
  26. package/dist/legacy/http/HTTP-1.0.mjs +2 -0
  27. package/dist/legacy/http/auth.cjs +1 -0
  28. package/dist/legacy/http/auth.d.mts +1 -0
  29. package/dist/legacy/http/auth.mjs +1 -0
  30. package/dist/legacy/http/check_domain.cjs +11 -0
  31. package/dist/legacy/http/check_domain.d.mts +3 -0
  32. package/dist/legacy/http/check_domain.mjs +11 -0
  33. package/dist/legacy/http/csrfTokenAnalyze.cjs +1 -0
  34. package/dist/legacy/http/csrfTokenAnalyze.d.mts +1 -0
  35. package/dist/legacy/http/csrfTokenAnalyze.mjs +1 -0
  36. package/dist/legacy/http/domainValidator.cjs +1 -0
  37. package/dist/legacy/http/domainValidator.d.mts +1 -0
  38. package/dist/legacy/http/domainValidator.mjs +1 -0
  39. package/dist/legacy/http/errorsCallback.cjs +1 -0
  40. package/dist/legacy/http/errorsCallback.d.mts +1 -0
  41. package/dist/legacy/http/errorsCallback.mjs +1 -0
  42. package/dist/legacy/http/fetch/json.cjs +1 -0
  43. package/dist/legacy/http/fetch/json.d.mts +1 -0
  44. package/dist/legacy/http/fetch/json.mjs +1 -0
  45. package/dist/legacy/http/fetch/text.cjs +1 -0
  46. package/dist/legacy/http/fetch/text.d.mts +1 -0
  47. package/dist/legacy/http/fetch/text.mjs +1 -0
  48. package/dist/legacy/http/fileCache.cjs +1 -0
  49. package/dist/legacy/http/fileCache.d.mts +1 -0
  50. package/dist/legacy/http/fileCache.mjs +1 -0
  51. package/dist/legacy/http/getDomainURL.cjs +1 -0
  52. package/dist/legacy/http/getDomainURL.d.mts +1 -0
  53. package/dist/legacy/http/getDomainURL.mjs +1 -0
  54. package/dist/legacy/http/userIP.cjs +1 -0
  55. package/dist/legacy/http/userIP.d.mts +1 -0
  56. package/dist/legacy/http/userIP.mjs +1 -0
  57. package/dist/legacy/libs/capitalize.cjs +1 -0
  58. package/dist/legacy/libs/capitalize.d.mts +1 -0
  59. package/dist/legacy/libs/capitalize.mjs +1 -0
  60. package/dist/legacy/libs/convertBytes.cjs +2 -0
  61. package/dist/legacy/libs/convertBytes.mjs +2 -0
  62. package/dist/legacy/libs/custom_module_loader.cjs +2 -0
  63. package/dist/legacy/libs/custom_module_loader.mjs +2 -0
  64. package/dist/legacy/libs/dice.cjs +2 -0
  65. package/dist/legacy/libs/dice.mjs +2 -0
  66. package/dist/legacy/libs/markdown.cjs +1 -0
  67. package/dist/legacy/libs/markdown.mjs +1 -0
  68. package/dist/legacy/libs/percentage.cjs +1 -0
  69. package/dist/legacy/libs/percentage.mjs +1 -0
  70. package/dist/legacy/libs/regex/getLetter.cjs +2 -0
  71. package/dist/legacy/libs/regex/getLetter.d.mts +2 -0
  72. package/dist/legacy/libs/regex/getLetter.mjs +2 -0
  73. package/dist/legacy/libs/rule3.cjs +1 -0
  74. package/dist/legacy/libs/rule3.mjs +1 -0
  75. package/dist/legacy/momentjs/getAge.cjs +1 -0
  76. package/dist/legacy/momentjs/getAge.d.mts +1 -0
  77. package/dist/legacy/momentjs/getAge.mjs +1 -0
  78. package/dist/legacy/momentjs/timeDuration.cjs +1 -0
  79. package/dist/legacy/momentjs/timeDuration.d.mts +1 -0
  80. package/dist/legacy/momentjs/timeDuration.mjs +1 -0
  81. package/dist/legacy/socket.io/antiFlood/install.cjs +1 -0
  82. package/dist/legacy/socket.io/antiFlood/install.d.mts +1 -0
  83. package/dist/legacy/socket.io/antiFlood/install.mjs +1 -0
  84. package/dist/legacy/socket.io/antiFlood/verify.cjs +1 -0
  85. package/dist/legacy/socket.io/antiFlood/verify.d.mts +1 -0
  86. package/dist/legacy/socket.io/antiFlood/verify.mjs +1 -0
  87. package/dist/legacy/socket.io/cookie-session.cjs +1 -0
  88. package/dist/legacy/socket.io/cookie-session.d.mts +1 -0
  89. package/dist/legacy/socket.io/cookie-session.mjs +1 -0
  90. package/dist/legacy/socket.io/discord.cjs +1 -0
  91. package/dist/legacy/socket.io/discord.d.mts +1 -0
  92. package/dist/legacy/socket.io/discord.mjs +1 -0
  93. package/dist/v1/TinyAfterScrollWatcher.js +49 -26
  94. package/dist/v1/TinyAfterScrollWatcher.min.js +1 -1
  95. package/dist/v1/TinyBasicsEs.js +559 -71
  96. package/dist/v1/TinyBasicsEs.min.js +1 -1
  97. package/dist/v1/TinyDragger.js +486 -47
  98. package/dist/v1/TinyDragger.min.js +1 -1
  99. package/dist/v1/TinyEssentials.js +2545 -98
  100. package/dist/v1/TinyEssentials.min.js +1 -1
  101. package/dist/v1/TinyHtml.js +486 -47
  102. package/dist/v1/TinyHtml.min.js +1 -1
  103. package/dist/v1/TinySmartScroller.js +6230 -0
  104. package/dist/v1/TinySmartScroller.min.js +1 -0
  105. package/dist/v1/TinyUploadClicker.js +1538 -72
  106. package/dist/v1/TinyUploadClicker.min.js +1 -1
  107. package/dist/v1/UltraRandomMsgGen.js +995 -0
  108. package/dist/v1/UltraRandomMsgGen.min.js +1 -0
  109. package/dist/v1/basics/html.cjs +74 -24
  110. package/dist/v1/basics/html.d.mts +38 -15
  111. package/dist/v1/basics/html.mjs +63 -20
  112. package/dist/v1/build/TinySmartScroller.cjs +7 -0
  113. package/dist/v1/build/TinySmartScroller.d.mts +3 -0
  114. package/dist/v1/build/TinySmartScroller.mjs +2 -0
  115. package/dist/v1/build/UltraRandomMsgGen.cjs +7 -0
  116. package/dist/v1/build/UltraRandomMsgGen.d.mts +3 -0
  117. package/dist/v1/build/UltraRandomMsgGen.mjs +2 -0
  118. package/dist/v1/index.cjs +4 -0
  119. package/dist/v1/index.d.mts +3 -1
  120. package/dist/v1/index.mjs +3 -1
  121. package/dist/v1/libs/TinyAfterScrollWatcher.cjs +49 -26
  122. package/dist/v1/libs/TinyAfterScrollWatcher.d.mts +17 -14
  123. package/dist/v1/libs/TinyAfterScrollWatcher.mjs +50 -24
  124. package/dist/v1/libs/TinyHtml.cjs +486 -47
  125. package/dist/v1/libs/TinyHtml.d.mts +352 -139
  126. package/dist/v1/libs/TinyHtml.mjs +431 -47
  127. package/dist/v1/libs/TinySmartScroller.cjs +976 -0
  128. package/dist/v1/libs/TinySmartScroller.d.mts +458 -0
  129. package/dist/v1/libs/TinySmartScroller.mjs +856 -0
  130. package/dist/v1/libs/UltraRandomMsgGen.cjs +956 -0
  131. package/dist/v1/libs/UltraRandomMsgGen.d.mts +390 -0
  132. package/dist/v1/libs/UltraRandomMsgGen.mjs +825 -0
  133. package/docs/v1/README.md +2 -0
  134. package/docs/v1/basics/html.md +17 -2
  135. package/docs/v1/libs/TinyAfterScrollWatcher.md +54 -4
  136. package/docs/v1/libs/TinyHtml.md +197 -8
  137. package/docs/v1/libs/TinySmartScroller.md +523 -0
  138. package/docs/v1/libs/UltraRandomMsgGen.md +289 -0
  139. package/package.json +1 -1
@@ -14,14 +14,16 @@
14
14
  class TinyAfterScrollWatcher {
15
15
  /** @type {Element|Window} */
16
16
  #scrollTarget;
17
- /** @type {number} */
18
- lastScrollTime = 0;
17
+ /** @type {null|NodeJS.Timeout} */
18
+ #lastScrollTime = null;
19
19
  /** @type {FnData[]} */
20
20
  #afterScrollQueue = [];
21
21
  /** @type {number} */
22
22
  #inactivityTime = 100;
23
23
  /** @type {Set<OnScrollFunc>} */
24
24
  #externalScrollListeners = new Set();
25
+ /** @type {Set<FnData>} */
26
+ #onStopListeners = new Set();
25
27
  /** @type {boolean} */
26
28
  #destroyed = false;
27
29
  /**
@@ -34,12 +36,18 @@ class TinyAfterScrollWatcher {
34
36
  if (!(scrollTarget instanceof Element) && !(scrollTarget instanceof Window))
35
37
  throw new TypeError('scrollTarget must be an Element or the Window object.');
36
38
  this.#scrollTarget = scrollTarget;
37
- this._onScroll = this._onScroll.bind(this);
38
- this._checkQueue = this._checkQueue.bind(this);
39
- this.#scrollTarget.addEventListener('scroll', this._onScroll);
39
+ this._checkTimer = this._checkTimer.bind(this);
40
+ this.#scrollTarget.addEventListener('scroll', this._checkTimer);
40
41
  this.#inactivityTime = inactivityTime;
41
- requestAnimationFrame(this._checkQueue);
42
42
  }
43
+ _checkTimer = () => {
44
+ if (this.#lastScrollTime)
45
+ clearTimeout(this.#lastScrollTime);
46
+ this.#lastScrollTime = setTimeout(() => {
47
+ this.#lastScrollTime = null;
48
+ this.#checkQueue();
49
+ }, this.#inactivityTime);
50
+ };
43
51
  /**
44
52
  * Gets the current inactivity time in milliseconds.
45
53
  * @returns {number}
@@ -58,29 +66,23 @@ class TinyAfterScrollWatcher {
58
66
  throw new Error('inactivityTime must be a positive number in milliseconds.');
59
67
  this.#inactivityTime = value;
60
68
  }
61
- /**
62
- * Internal handler for scroll events.
63
- * Updates the last scroll timestamp.
64
- * @private
65
- */
66
- _onScroll() {
67
- this.lastScrollTime = Date.now();
68
- }
69
69
  /**
70
70
  * Continuously checks whether the user has stopped scrolling,
71
71
  * and if so, runs all queued functions.
72
- * @private
73
72
  */
74
- _checkQueue() {
73
+ #checkQueue() {
75
74
  if (this.#destroyed)
76
75
  return;
77
- requestAnimationFrame(this._checkQueue);
78
- if (Date.now() - this.lastScrollTime > this.#inactivityTime) {
79
- while (this.#afterScrollQueue.length) {
80
- const fn = this.#afterScrollQueue.pop();
81
- if (typeof fn === 'function')
82
- fn();
83
- }
76
+ // Runs all onStop first listeners
77
+ for (const fn of this.#onStopListeners) {
78
+ if (typeof fn === 'function')
79
+ fn();
80
+ }
81
+ // Then execute the queue afterScrollQueue
82
+ while (this.#afterScrollQueue.length) {
83
+ const fn = this.#afterScrollQueue.pop();
84
+ if (typeof fn === 'function')
85
+ fn();
84
86
  }
85
87
  }
86
88
  /**
@@ -96,6 +98,29 @@ class TinyAfterScrollWatcher {
96
98
  this.lastScrollTime = Date.now();
97
99
  this.#afterScrollQueue.push(fn);
98
100
  }
101
+ /**
102
+ * Registers a function to run once after scrolling has stopped,
103
+ * before any afterScrollQueue functions.
104
+ *
105
+ * @param {FnData} fn - A function to execute after scroll stop.
106
+ * @throws {TypeError} If the argument is not a function.
107
+ */
108
+ onStop(fn) {
109
+ if (typeof fn !== 'function')
110
+ throw new TypeError('Argument must be a function.');
111
+ this.#onStopListeners.add(fn);
112
+ }
113
+ /**
114
+ * Removes a previously registered onStop function.
115
+ *
116
+ * @param {FnData} fn - The function to remove.
117
+ * @throws {TypeError} If the argument is not a function.
118
+ */
119
+ offStop(fn) {
120
+ if (typeof fn !== 'function')
121
+ throw new TypeError('Argument must be a function.');
122
+ this.#onStopListeners.delete(fn);
123
+ }
99
124
  /**
100
125
  * Registers an external scroll listener on the tracked element.
101
126
  *
@@ -129,10 +154,11 @@ class TinyAfterScrollWatcher {
129
154
  if (this.#destroyed)
130
155
  return;
131
156
  this.#destroyed = true;
132
- this.#scrollTarget.removeEventListener('scroll', this._onScroll);
157
+ this.#scrollTarget.removeEventListener('scroll', this._checkTimer);
133
158
  for (const fn of this.#externalScrollListeners)
134
159
  this.#scrollTarget.removeEventListener('scroll', fn);
135
160
  this.#externalScrollListeners.clear();
161
+ this.#onStopListeners.clear();
136
162
  }
137
163
  }
138
164
  export default TinyAfterScrollWatcher;