tiny-essentials 1.28.19 → 1.29.1

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 (556) hide show
  1. package/README.md +1 -1
  2. package/changelog/1/28/19.md +24 -0
  3. package/changelog/1/29/0.md +58 -0
  4. package/changelog/1/29/1.md +11 -0
  5. package/dist/v1/ColorSafeStringify.min.js +1 -1
  6. package/dist/v1/TinyAdvancedRaffle.min.js +1 -1
  7. package/dist/v1/TinyAfterScrollWatcher.min.js +1 -1
  8. package/dist/v1/TinyAnalogClock.min.js +1 -1
  9. package/dist/v1/TinyArrayComparator.min.js +1 -1
  10. package/dist/v1/TinyArrayPaginator.min.js +1 -1
  11. package/dist/v1/TinyBasicsEs.min.js +1 -1
  12. package/dist/v1/TinyBrowserMonitor.min.js +1 -0
  13. package/dist/v1/TinyClassManager.min.js +1 -1
  14. package/dist/v1/TinyClipboard.min.js +1 -1
  15. package/dist/v1/TinyCloner.min.js +1 -0
  16. package/dist/v1/TinyColorConverter.min.js +1 -1
  17. package/dist/v1/TinyColorValidator.min.js +1 -1
  18. package/dist/v1/TinyCookieConsent.min.js +1 -1
  19. package/dist/v1/TinyDayNightCycle.min.js +1 -1
  20. package/dist/v1/TinyDebugger.min.js +1 -1
  21. package/dist/v1/TinyDomReadyManager.min.js +1 -1
  22. package/dist/v1/TinyDragDropDetector.min.js +1 -1
  23. package/dist/v1/TinyDragger.min.js +1 -1
  24. package/dist/v1/TinyElementObserver.min.js +1 -1
  25. package/dist/v1/TinyEssentials.min.js +1 -1
  26. package/dist/v1/TinyGamepad.min.js +1 -1
  27. package/dist/v1/TinyHtml.min.js +1 -1
  28. package/dist/v1/TinyHtmlTagRegexBuilder.min.js +1 -0
  29. package/dist/v1/TinyHttpResponseRegistry.min.js +1 -0
  30. package/dist/v1/TinyI18.min.js +1 -1
  31. package/dist/v1/TinyIframeEvents.min.js +1 -1
  32. package/dist/v1/TinyInventory.min.js +1 -1
  33. package/dist/v1/TinyInventoryTrader.min.js +1 -1
  34. package/dist/v1/TinyLevelUp.min.js +1 -1
  35. package/dist/v1/TinyLoadingScreen.min.js +1 -1
  36. package/dist/v1/TinyLocalStorage.min.js +1 -1
  37. package/dist/v1/TinyMaInSys.min.js +1 -1
  38. package/dist/v1/TinyMapCache.min.js +1 -0
  39. package/dist/v1/TinyMediaPlayer.min.js +1 -1
  40. package/dist/v1/TinyNeedBar.min.js +1 -1
  41. package/dist/v1/TinyNewWinEvents.min.js +1 -1
  42. package/dist/v1/TinyNotificationAdapter.min.js +1 -0
  43. package/dist/v1/TinyNotifications.min.js +1 -1
  44. package/dist/v1/TinyNotifyCenter.min.js +1 -1
  45. package/dist/v1/TinyOPFSFileSystem.min.js +1 -0
  46. package/dist/v1/TinyPasswordValidator.min.js +1 -0
  47. package/dist/v1/TinyPluginPackage.min.js +1 -0
  48. package/dist/v1/TinyPromiseQueue.min.js +1 -1
  49. package/dist/v1/TinyPushManager.min.js +1 -0
  50. package/dist/v1/TinyPushPayload.min.js +1 -0
  51. package/dist/v1/TinyPushRouter.min.js +1 -0
  52. package/dist/v1/TinyRadioFm.min.js +1 -1
  53. package/dist/v1/TinyRateLimiter.min.js +1 -1
  54. package/dist/v1/TinyRegexEs.min.js +1 -0
  55. package/dist/v1/TinyRouter.min.js +1 -0
  56. package/dist/v1/TinyServiceWorker.min.js +1 -0
  57. package/dist/v1/TinyServiceWorkerEngine.min.js +1 -0
  58. package/dist/v1/TinySetMapPackage.min.js +1 -0
  59. package/dist/v1/TinySimpleDice.min.js +1 -1
  60. package/dist/v1/TinySmartScroller.min.js +1 -1
  61. package/dist/v1/TinyStorageBucketFileSystem.min.js +1 -0
  62. package/dist/v1/TinyTextDiffer.min.js +1 -1
  63. package/dist/v1/TinyTextRangeEditor.min.js +1 -1
  64. package/dist/v1/TinyTextarea.min.js +1 -1
  65. package/dist/v1/TinyThrottledApi.min.js +1 -0
  66. package/dist/v1/TinyTimeout.min.js +1 -1
  67. package/dist/v1/TinyToastNotify.min.js +1 -1
  68. package/dist/v1/TinyUploadClicker.min.js +1 -1
  69. package/dist/v1/TinyUriParser.min.js +1 -0
  70. package/dist/v1/TinyVersion.min.js +1 -0
  71. package/dist/v1/TinyWebWorker.min.js +1 -0
  72. package/dist/v1/TinyWebWorkerEngine.min.js +1 -0
  73. package/dist/v1/UltraRandomMsgGen.min.js +1 -1
  74. package/dist/v1/basics/array.cjs +2 -2
  75. package/dist/v1/basics/array.d.mts +2 -0
  76. package/dist/v1/basics/array.d.mts.map +1 -1
  77. package/dist/v1/basics/array.mjs +2 -1
  78. package/dist/v1/basics/browserDetector.cjs +37 -12
  79. package/dist/v1/basics/browserDetector.d.mts +8 -0
  80. package/dist/v1/basics/browserDetector.d.mts.map +1 -1
  81. package/dist/v1/basics/browserDetector.mjs +32 -13
  82. package/dist/v1/basics/crypto.cjs +23 -0
  83. package/dist/v1/basics/crypto.d.mts +10 -0
  84. package/dist/v1/basics/crypto.d.mts.map +1 -0
  85. package/dist/v1/basics/crypto.mjs +18 -0
  86. package/dist/v1/basics/html.cjs +0 -3
  87. package/dist/v1/basics/html.d.mts.map +1 -1
  88. package/dist/v1/basics/html.mjs +0 -2
  89. package/dist/v1/basics/index.cjs +8 -1
  90. package/dist/v1/basics/index.d.mts +6 -5
  91. package/dist/v1/basics/index.d.mts.map +1 -1
  92. package/dist/v1/basics/index.mjs +6 -5
  93. package/dist/v1/basics/objChecker.cjs +88 -0
  94. package/dist/v1/basics/objChecker.d.mts +26 -0
  95. package/dist/v1/basics/objChecker.d.mts.map +1 -1
  96. package/dist/v1/basics/objChecker.mjs +74 -0
  97. package/dist/v1/basics/objFilter.cjs +234 -93
  98. package/dist/v1/basics/objFilter.d.mts +96 -22
  99. package/dist/v1/basics/objFilter.d.mts.map +1 -1
  100. package/dist/v1/basics/objFilter.mjs +216 -92
  101. package/dist/v1/basics/promiseUtils.cjs +48 -12
  102. package/dist/v1/basics/promiseUtils.d.mts +45 -12
  103. package/dist/v1/basics/promiseUtils.d.mts.map +1 -1
  104. package/dist/v1/basics/promiseUtils.mjs +47 -12
  105. package/dist/v1/basics/text.cjs +0 -12
  106. package/dist/v1/basics/text.d.mts +0 -10
  107. package/dist/v1/basics/text.d.mts.map +1 -1
  108. package/dist/v1/basics/text.mjs +0 -10
  109. package/dist/v1/index.cjs +88 -3
  110. package/dist/v1/index.d.mts +31 -6
  111. package/dist/v1/index.d.mts.map +1 -1
  112. package/dist/v1/index.mjs +32 -7
  113. package/dist/v1/jsdoc/EventEmitter.cjs +4 -0
  114. package/dist/v1/jsdoc/EventEmitter.d.mts +33 -0
  115. package/dist/v1/jsdoc/EventEmitter.d.mts.map +1 -0
  116. package/dist/v1/jsdoc/EventEmitter.mjs +18 -0
  117. package/dist/v1/libs/array/TinyArrayComparator.cjs +240 -25
  118. package/dist/v1/libs/array/TinyArrayComparator.d.mts +130 -22
  119. package/dist/v1/libs/array/TinyArrayComparator.d.mts.map +1 -1
  120. package/dist/v1/libs/array/TinyArrayComparator.mjs +210 -24
  121. package/dist/v1/libs/fs/constants.cjs +74 -0
  122. package/dist/v1/libs/fs/constants.d.mts +22 -0
  123. package/dist/v1/libs/fs/constants.d.mts.map +1 -0
  124. package/dist/v1/libs/fs/constants.mjs +53 -0
  125. package/dist/v1/libs/fs/encoding.cjs +118 -0
  126. package/dist/v1/libs/fs/encoding.d.mts +50 -0
  127. package/dist/v1/libs/fs/encoding.d.mts.map +1 -0
  128. package/dist/v1/libs/fs/encoding.mjs +102 -0
  129. package/dist/v1/libs/fs/error.cjs +188 -0
  130. package/dist/v1/libs/fs/error.d.mts +105 -0
  131. package/dist/v1/libs/fs/error.d.mts.map +1 -0
  132. package/dist/v1/libs/fs/error.mjs +158 -0
  133. package/dist/v1/libs/fs/handle.cjs +121 -0
  134. package/dist/v1/libs/fs/handle.d.mts +56 -0
  135. package/dist/v1/libs/fs/handle.d.mts.map +1 -0
  136. package/dist/v1/libs/fs/handle.mjs +100 -0
  137. package/dist/v1/libs/fs/index.cjs +700 -0
  138. package/dist/v1/libs/fs/index.d.mts +377 -0
  139. package/dist/v1/libs/fs/index.d.mts.map +1 -0
  140. package/dist/v1/libs/fs/index.mjs +630 -0
  141. package/dist/v1/libs/fs/path.cjs +234 -0
  142. package/dist/v1/libs/fs/path.d.mts +176 -0
  143. package/dist/v1/libs/fs/path.d.mts.map +1 -0
  144. package/dist/v1/libs/fs/path.mjs +197 -0
  145. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.cjs +202 -0
  146. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.d.mts +121 -0
  147. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.d.mts.map +1 -0
  148. package/dist/v1/libs/fs/plugins/OPFS/StorageBucket.mjs +172 -0
  149. package/dist/v1/libs/fs/plugins/OPFS/index.cjs +334 -0
  150. package/dist/v1/libs/fs/plugins/OPFS/index.d.mts +98 -0
  151. package/dist/v1/libs/fs/plugins/OPFS/index.d.mts.map +1 -0
  152. package/dist/v1/libs/fs/plugins/OPFS/index.mjs +300 -0
  153. package/dist/v1/libs/fs/stats.cjs +245 -0
  154. package/dist/v1/libs/fs/stats.d.mts +226 -0
  155. package/dist/v1/libs/fs/stats.d.mts.map +1 -0
  156. package/dist/v1/libs/fs/stats.mjs +197 -0
  157. package/dist/v1/libs/html/events/TinyIframeEvents.cjs +10 -1
  158. package/dist/v1/libs/html/events/TinyIframeEvents.d.mts +9 -2
  159. package/dist/v1/libs/html/events/TinyIframeEvents.d.mts.map +1 -1
  160. package/dist/v1/libs/html/events/TinyIframeEvents.mjs +8 -1
  161. package/dist/v1/libs/html/events/TinyNewWinEvents.cjs +14 -3
  162. package/dist/v1/libs/html/events/TinyNewWinEvents.d.mts +21 -5
  163. package/dist/v1/libs/html/events/TinyNewWinEvents.d.mts.map +1 -1
  164. package/dist/v1/libs/html/events/TinyNewWinEvents.mjs +12 -3
  165. package/dist/v1/libs/html/scroll/TinySmartScroller.cjs +13 -1
  166. package/dist/v1/libs/html/scroll/TinySmartScroller.d.mts +29 -2
  167. package/dist/v1/libs/html/scroll/TinySmartScroller.d.mts.map +1 -1
  168. package/dist/v1/libs/html/scroll/TinySmartScroller.mjs +11 -1
  169. package/dist/v1/libs/math/TinyAdvancedRaffle.cjs +13 -1
  170. package/dist/v1/libs/math/TinyAdvancedRaffle.d.mts +32 -2
  171. package/dist/v1/libs/math/TinyAdvancedRaffle.d.mts.map +1 -1
  172. package/dist/v1/libs/math/TinyAdvancedRaffle.mjs +11 -1
  173. package/dist/v1/libs/math/TinyTimeout.cjs +0 -14
  174. package/dist/v1/libs/math/TinyTimeout.d.mts +0 -11
  175. package/dist/v1/libs/math/TinyTimeout.d.mts.map +1 -1
  176. package/dist/v1/libs/math/TinyTimeout.mjs +0 -13
  177. package/dist/v1/libs/media/TinyMediaPlayer/index.cjs +25 -1
  178. package/dist/v1/libs/media/TinyMediaPlayer/index.d.mts +35 -2
  179. package/dist/v1/libs/media/TinyMediaPlayer/index.d.mts.map +1 -1
  180. package/dist/v1/libs/media/TinyMediaPlayer/index.mjs +23 -1
  181. package/dist/v1/libs/media/TinyMediaPlayer.cjs +2 -2
  182. package/dist/v1/libs/media/TinyMediaPlayer.d.mts +2 -2
  183. package/dist/v1/libs/media/TinyMediaPlayer.d.mts.map +1 -1
  184. package/dist/v1/libs/media/TinyMediaPlayer.mjs +2 -2
  185. package/dist/v1/libs/media/TinyRadioFm.cjs +19 -1
  186. package/dist/v1/libs/media/TinyRadioFm.d.mts +78 -2
  187. package/dist/v1/libs/media/TinyRadioFm.d.mts.map +1 -1
  188. package/dist/v1/libs/media/TinyRadioFm.mjs +17 -1
  189. package/dist/v1/libs/plugin/TinyPlugin.cjs +1630 -0
  190. package/dist/v1/libs/plugin/TinyPlugin.d.mts +753 -0
  191. package/dist/v1/libs/plugin/TinyPlugin.d.mts.map +1 -0
  192. package/dist/v1/libs/plugin/TinyPlugin.mjs +1376 -0
  193. package/dist/v1/libs/plugin/TinyVersion.cjs +204 -0
  194. package/dist/v1/libs/plugin/TinyVersion.d.mts +70 -0
  195. package/dist/v1/libs/plugin/TinyVersion.d.mts.map +1 -0
  196. package/dist/v1/libs/plugin/TinyVersion.mjs +179 -0
  197. package/dist/v1/libs/router/TinyRouter.cjs +661 -0
  198. package/dist/v1/libs/router/TinyRouter.d.mts +320 -0
  199. package/dist/v1/libs/router/TinyRouter.d.mts.map +1 -0
  200. package/dist/v1/libs/router/TinyRouter.mjs +572 -0
  201. package/dist/v1/libs/storage/TinyLocalStorage.cjs +20 -1
  202. package/dist/v1/libs/storage/TinyLocalStorage.d.mts +64 -2
  203. package/dist/v1/libs/storage/TinyLocalStorage.d.mts.map +1 -1
  204. package/dist/v1/libs/storage/TinyLocalStorage.mjs +18 -1
  205. package/dist/v1/libs/storage/TinyMapCache.cjs +373 -0
  206. package/dist/v1/libs/storage/TinyMapCache.d.mts +274 -0
  207. package/dist/v1/libs/storage/TinyMapCache.d.mts.map +1 -0
  208. package/dist/v1/libs/storage/TinyMapCache.mjs +333 -0
  209. package/dist/v1/libs/storage/TinySetMapDatabase.cjs +1167 -0
  210. package/dist/v1/libs/storage/TinySetMapDatabase.d.mts +603 -0
  211. package/dist/v1/libs/storage/TinySetMapDatabase.d.mts.map +1 -0
  212. package/dist/v1/libs/storage/TinySetMapDatabase.mjs +1059 -0
  213. package/dist/v1/libs/sw/browser/TinyNotificationAdapter.cjs +126 -0
  214. package/dist/v1/libs/sw/browser/TinyNotificationAdapter.d.mts +132 -0
  215. package/dist/v1/libs/sw/browser/TinyNotificationAdapter.d.mts.map +1 -0
  216. package/dist/v1/libs/sw/browser/TinyNotificationAdapter.mjs +109 -0
  217. package/dist/v1/libs/sw/browser/TinyPushManager.cjs +310 -0
  218. package/dist/v1/libs/sw/browser/TinyPushManager.d.mts +168 -0
  219. package/dist/v1/libs/sw/browser/TinyPushManager.d.mts.map +1 -0
  220. package/dist/v1/libs/sw/browser/TinyPushManager.mjs +264 -0
  221. package/dist/v1/libs/sw/browser/TinyServiceWorker.cjs +1060 -0
  222. package/dist/v1/libs/sw/browser/TinyServiceWorker.d.mts +348 -0
  223. package/dist/v1/libs/sw/browser/TinyServiceWorker.d.mts.map +1 -0
  224. package/dist/v1/libs/sw/browser/TinyServiceWorker.mjs +933 -0
  225. package/dist/v1/libs/sw/browser/plugins/TabManager.cjs +315 -0
  226. package/dist/v1/libs/sw/browser/plugins/TabManager.d.mts +178 -0
  227. package/dist/v1/libs/sw/browser/plugins/TabManager.d.mts.map +1 -0
  228. package/dist/v1/libs/sw/browser/plugins/TabManager.mjs +274 -0
  229. package/dist/v1/libs/sw/browser/utils.cjs +28 -0
  230. package/dist/v1/libs/sw/browser/utils.d.mts +8 -0
  231. package/dist/v1/libs/sw/browser/utils.d.mts.map +1 -0
  232. package/dist/v1/libs/sw/browser/utils.mjs +21 -0
  233. package/dist/v1/libs/sw/service/TinyPushRouter.cjs +222 -0
  234. package/dist/v1/libs/sw/service/TinyPushRouter.d.mts +138 -0
  235. package/dist/v1/libs/sw/service/TinyPushRouter.d.mts.map +1 -0
  236. package/dist/v1/libs/sw/service/TinyPushRouter.mjs +201 -0
  237. package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.cjs +3016 -0
  238. package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.d.mts +993 -0
  239. package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.d.mts.map +1 -0
  240. package/dist/v1/libs/sw/service/TinyServiceWorkerEngine.mjs +2558 -0
  241. package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.cjs +88 -0
  242. package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.d.mts +32 -0
  243. package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.d.mts.map +1 -0
  244. package/dist/v1/libs/sw/service/plugins/GlobBypassPlugin.mjs +69 -0
  245. package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.cjs +112 -0
  246. package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.d.mts +31 -0
  247. package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.d.mts.map +1 -0
  248. package/dist/v1/libs/sw/service/plugins/GlobCachePlugin.mjs +91 -0
  249. package/dist/v1/libs/sw/service/plugins/Ping.cjs +32 -0
  250. package/dist/v1/libs/sw/service/plugins/Ping.d.mts +9 -0
  251. package/dist/v1/libs/sw/service/plugins/Ping.d.mts.map +1 -0
  252. package/dist/v1/libs/sw/service/plugins/Ping.mjs +25 -0
  253. package/dist/v1/libs/sw/service/plugins/TabManager.cjs +457 -0
  254. package/dist/v1/libs/sw/service/plugins/TabManager.d.mts +91 -0
  255. package/dist/v1/libs/sw/service/plugins/TabManager.d.mts.map +1 -0
  256. package/dist/v1/libs/sw/service/plugins/TabManager.mjs +372 -0
  257. package/dist/v1/libs/sw/service/plugins/ViteFileDetector.cjs +180 -0
  258. package/dist/v1/libs/sw/service/plugins/ViteFileDetector.d.mts +28 -0
  259. package/dist/v1/libs/sw/service/plugins/ViteFileDetector.d.mts.map +1 -0
  260. package/dist/v1/libs/sw/service/plugins/ViteFileDetector.mjs +148 -0
  261. package/dist/v1/libs/sw/service/shared/TinyPushPayload.cjs +199 -0
  262. package/dist/v1/libs/sw/service/shared/TinyPushPayload.d.mts +80 -0
  263. package/dist/v1/libs/sw/service/shared/TinyPushPayload.d.mts.map +1 -0
  264. package/dist/v1/libs/sw/service/shared/TinyPushPayload.mjs +174 -0
  265. package/dist/v1/libs/sw/utils.cjs +57 -0
  266. package/dist/v1/libs/sw/utils.d.mts +173 -0
  267. package/dist/v1/libs/sw/utils.d.mts.map +1 -0
  268. package/dist/v1/libs/sw/utils.mjs +50 -0
  269. package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.cjs +57 -0
  270. package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.d.mts +39 -0
  271. package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.d.mts.map +1 -0
  272. package/dist/v1/libs/text/TinyI18/Browser-NON-DOM.mjs +48 -0
  273. package/dist/v1/libs/text/TinyI18/Browser.cjs +64 -0
  274. package/dist/v1/libs/text/TinyI18/Browser.d.mts +47 -0
  275. package/dist/v1/libs/text/TinyI18/Browser.d.mts.map +1 -0
  276. package/dist/v1/libs/text/TinyI18/Browser.mjs +57 -0
  277. package/dist/v1/libs/text/TinyI18/Node.cjs +49 -0
  278. package/dist/v1/libs/text/TinyI18/Node.d.mts +38 -0
  279. package/dist/v1/libs/text/TinyI18/Node.d.mts.map +1 -0
  280. package/dist/v1/libs/text/TinyI18/Node.mjs +43 -0
  281. package/dist/v1/libs/text/TinyI18/browser-utils.cjs +17 -0
  282. package/dist/v1/libs/text/TinyI18/browser-utils.d.mts +8 -0
  283. package/dist/v1/libs/text/TinyI18/browser-utils.d.mts.map +1 -0
  284. package/dist/v1/libs/text/TinyI18/browser-utils.mjs +13 -0
  285. package/dist/v1/libs/text/{TinyI18.cjs → TinyI18/index.cjs} +205 -104
  286. package/dist/v1/libs/text/{TinyI18.d.mts → TinyI18/index.d.mts} +141 -92
  287. package/dist/v1/libs/text/TinyI18/index.d.mts.map +1 -0
  288. package/dist/v1/libs/text/{TinyI18.mjs → TinyI18/index.mjs} +195 -101
  289. package/dist/v1/libs/tools/TinyBrowserMonitor.cjs +1088 -0
  290. package/dist/v1/libs/tools/TinyBrowserMonitor.d.mts +621 -0
  291. package/dist/v1/libs/tools/TinyBrowserMonitor.d.mts.map +1 -0
  292. package/dist/v1/libs/tools/TinyBrowserMonitor.mjs +940 -0
  293. package/dist/v1/libs/tools/TinyDebugger.cjs +180 -19
  294. package/dist/v1/libs/tools/TinyDebugger.d.mts +220 -24
  295. package/dist/v1/libs/tools/TinyDebugger.d.mts.map +1 -1
  296. package/dist/v1/libs/tools/TinyDebugger.mjs +161 -19
  297. package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.cjs +256 -0
  298. package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.d.mts +125 -0
  299. package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.d.mts.map +1 -0
  300. package/dist/v1/libs/tools/TinyHtmlTagRegexBuilder.mjs +223 -0
  301. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.cjs +23 -0
  302. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.d.mts +17 -0
  303. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.d.mts.map +1 -0
  304. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser-NON-DOM.mjs +19 -0
  305. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.cjs +23 -0
  306. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.d.mts +17 -0
  307. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.d.mts.map +1 -0
  308. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Browser.mjs +19 -0
  309. package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.cjs +390 -0
  310. package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.d.mts +9 -0
  311. package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.d.mts.map +1 -0
  312. package/dist/v1/libs/tools/TinyHttpResponseRegistry/EmptyRequestCodes.mjs +387 -0
  313. package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.cjs +2 -0
  314. package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.d.mts +27 -0
  315. package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.d.mts.map +1 -0
  316. package/dist/v1/libs/tools/TinyHttpResponseRegistry/JsDoc.mjs +12 -0
  317. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/LICENSE +53 -0
  318. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.cjs +405 -0
  319. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.d.mts +34 -0
  320. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.d.mts.map +1 -0
  321. package/dist/v1/libs/tools/TinyHttpResponseRegistry/MozillaRequestCodes/index.mjs +342 -0
  322. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.cjs +23 -0
  323. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.d.mts +17 -0
  324. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.d.mts.map +1 -0
  325. package/dist/v1/libs/tools/TinyHttpResponseRegistry/Node.mjs +19 -0
  326. package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.cjs +327 -0
  327. package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.d.mts +9 -0
  328. package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.d.mts.map +1 -0
  329. package/dist/v1/libs/tools/TinyHttpResponseRegistry/RequestCodes.mjs +324 -0
  330. package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.cjs +268 -0
  331. package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.d.mts +107 -0
  332. package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.d.mts.map +1 -0
  333. package/dist/v1/libs/tools/TinyHttpResponseRegistry/index.mjs +238 -0
  334. package/dist/v1/libs/tools/TinyPasswordValidator.cjs +491 -0
  335. package/dist/v1/libs/tools/TinyPasswordValidator.d.mts +246 -0
  336. package/dist/v1/libs/tools/TinyPasswordValidator.d.mts.map +1 -0
  337. package/dist/v1/libs/tools/TinyPasswordValidator.mjs +434 -0
  338. package/dist/v1/libs/tools/TinyPkgExportValidator.cjs +48 -0
  339. package/dist/v1/libs/tools/TinyPkgExportValidator.d.mts +14 -0
  340. package/dist/v1/libs/tools/TinyPkgExportValidator.d.mts.map +1 -1
  341. package/dist/v1/libs/tools/TinyPkgExportValidator.mjs +44 -0
  342. package/dist/v1/libs/tools/TinySiteMap.cjs +1029 -0
  343. package/dist/v1/libs/tools/TinySiteMap.d.mts +429 -0
  344. package/dist/v1/libs/tools/TinySiteMap.d.mts.map +1 -0
  345. package/dist/v1/libs/tools/TinySiteMap.mjs +910 -0
  346. package/dist/v1/libs/tools/TinySiteMapStream.cjs +121 -0
  347. package/dist/v1/libs/tools/TinySiteMapStream.d.mts +51 -0
  348. package/dist/v1/libs/tools/TinySiteMapStream.d.mts.map +1 -0
  349. package/dist/v1/libs/tools/TinySiteMapStream.mjs +85 -0
  350. package/dist/v1/libs/tools/TinyURLSecurityVerifier.cjs +444 -0
  351. package/dist/v1/libs/tools/TinyURLSecurityVerifier.d.mts +217 -0
  352. package/dist/v1/libs/tools/TinyURLSecurityVerifier.d.mts.map +1 -0
  353. package/dist/v1/libs/tools/TinyURLSecurityVerifier.mjs +394 -0
  354. package/dist/v1/libs/tools/TinyUriParser/BlueSky.cjs +613 -0
  355. package/dist/v1/libs/tools/TinyUriParser/BlueSky.d.mts +152 -0
  356. package/dist/v1/libs/tools/TinyUriParser/BlueSky.d.mts.map +1 -0
  357. package/dist/v1/libs/tools/TinyUriParser/BlueSky.mjs +527 -0
  358. package/dist/v1/libs/tools/TinyUriParser/Discord.cjs +1119 -0
  359. package/dist/v1/libs/tools/TinyUriParser/Discord.d.mts +306 -0
  360. package/dist/v1/libs/tools/TinyUriParser/Discord.d.mts.map +1 -0
  361. package/dist/v1/libs/tools/TinyUriParser/Discord.mjs +968 -0
  362. package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.cjs +469 -0
  363. package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.d.mts +80 -0
  364. package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.d.mts.map +1 -0
  365. package/dist/v1/libs/tools/TinyUriParser/MatrixProtocol.mjs +379 -0
  366. package/dist/v1/libs/tools/TinyUriParser.cjs +217 -0
  367. package/dist/v1/libs/tools/TinyUriParser.d.mts +109 -0
  368. package/dist/v1/libs/tools/TinyUriParser.d.mts.map +1 -0
  369. package/dist/v1/libs/tools/TinyUriParser.mjs +183 -0
  370. package/dist/v1/libs/utils/TinyCloner.cjs +466 -0
  371. package/dist/v1/libs/utils/TinyCloner.d.mts +221 -0
  372. package/dist/v1/libs/utils/TinyCloner.d.mts.map +1 -0
  373. package/dist/v1/libs/utils/TinyCloner.mjs +416 -0
  374. package/dist/v1/libs/utils/TinyPromiseQueue.cjs +1 -1
  375. package/dist/v1/libs/utils/TinyPromiseQueue.d.mts +2 -2
  376. package/dist/v1/libs/utils/TinyPromiseQueue.d.mts.map +1 -1
  377. package/dist/v1/libs/utils/TinyPromiseQueue.mjs +1 -1
  378. package/dist/v1/libs/utils/TinyThrottledApi.cjs +333 -0
  379. package/dist/v1/libs/utils/TinyThrottledApi.d.mts +163 -0
  380. package/dist/v1/libs/utils/TinyThrottledApi.d.mts.map +1 -0
  381. package/dist/v1/libs/utils/TinyThrottledApi.mjs +294 -0
  382. package/dist/v1/libs/worker/browser/TinyWebWorker.cjs +342 -0
  383. package/dist/v1/libs/worker/browser/TinyWebWorker.d.mts +97 -0
  384. package/dist/v1/libs/worker/browser/TinyWebWorker.d.mts.map +1 -0
  385. package/dist/v1/libs/worker/browser/TinyWebWorker.mjs +305 -0
  386. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.cjs +346 -0
  387. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.d.mts +127 -0
  388. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.d.mts.map +1 -0
  389. package/dist/v1/libs/worker/engine/TinyWebWorkerEngine.mjs +304 -0
  390. package/dist/v1/regexp/Email.cjs +185 -0
  391. package/dist/v1/regexp/Email.d.mts +73 -0
  392. package/dist/v1/regexp/Email.d.mts.map +1 -0
  393. package/dist/v1/regexp/Email.mjs +153 -0
  394. package/dist/v1/regexp/Glob.cjs +293 -0
  395. package/dist/v1/regexp/Glob.d.mts +45 -0
  396. package/dist/v1/regexp/Glob.d.mts.map +1 -0
  397. package/dist/v1/regexp/Glob.mjs +260 -0
  398. package/dist/v1/regexp/Ipv4.cjs +57 -0
  399. package/dist/v1/regexp/Ipv4.d.mts +29 -0
  400. package/dist/v1/regexp/Ipv4.d.mts.map +1 -0
  401. package/dist/v1/regexp/Ipv4.mjs +45 -0
  402. package/dist/v1/regexp/Ipv6.cjs +67 -0
  403. package/dist/v1/regexp/Ipv6.d.mts +29 -0
  404. package/dist/v1/regexp/Ipv6.d.mts.map +1 -0
  405. package/dist/v1/regexp/Ipv6.mjs +54 -0
  406. package/dist/v1/regexp/SegmentExtractor.cjs +145 -0
  407. package/dist/v1/regexp/SegmentExtractor.d.mts +91 -0
  408. package/dist/v1/regexp/SegmentExtractor.d.mts.map +1 -0
  409. package/dist/v1/regexp/SegmentExtractor.mjs +116 -0
  410. package/dist/v1/regexp/UrlDetector.cjs +125 -0
  411. package/dist/v1/regexp/UrlDetector.d.mts +67 -0
  412. package/dist/v1/regexp/UrlDetector.d.mts.map +1 -0
  413. package/dist/v1/regexp/UrlDetector.mjs +102 -0
  414. package/dist/v1/regexp/Username/index.cjs +233 -0
  415. package/dist/v1/regexp/Username/index.d.mts +77 -0
  416. package/dist/v1/regexp/Username/index.d.mts.map +1 -0
  417. package/dist/v1/regexp/Username/index.mjs +199 -0
  418. package/dist/v1/regexp/Username/jsDoc.cjs +2 -0
  419. package/dist/v1/regexp/Username/jsDoc.d.mts +57 -0
  420. package/dist/v1/regexp/Username/jsDoc.d.mts.map +1 -0
  421. package/dist/v1/regexp/Username/jsDoc.mjs +18 -0
  422. package/dist/v1/regexp/Username/templates/BlueSky.cjs +56 -0
  423. package/dist/v1/regexp/Username/templates/BlueSky.d.mts +35 -0
  424. package/dist/v1/regexp/Username/templates/BlueSky.d.mts.map +1 -0
  425. package/dist/v1/regexp/Username/templates/BlueSky.mjs +52 -0
  426. package/dist/v1/regexp/Username/templates/Discord.cjs +505 -0
  427. package/dist/v1/regexp/Username/templates/Discord.d.mts +209 -0
  428. package/dist/v1/regexp/Username/templates/Discord.d.mts.map +1 -0
  429. package/dist/v1/regexp/Username/templates/Discord.mjs +458 -0
  430. package/dist/v1/regexp/Username/templates/MatrixProtocol.cjs +143 -0
  431. package/dist/v1/regexp/Username/templates/MatrixProtocol.d.mts +70 -0
  432. package/dist/v1/regexp/Username/templates/MatrixProtocol.d.mts.map +1 -0
  433. package/dist/v1/regexp/Username/templates/MatrixProtocol.mjs +128 -0
  434. package/dist/v1/regexp/Username/templates/deprecated/Discord.cjs +24 -0
  435. package/dist/v1/regexp/Username/templates/deprecated/Discord.d.mts +17 -0
  436. package/dist/v1/regexp/Username/templates/deprecated/Discord.d.mts.map +1 -0
  437. package/dist/v1/regexp/Username/templates/deprecated/Discord.mjs +20 -0
  438. package/dist/v1/regexp/Username/templates/index.cjs +11 -0
  439. package/dist/v1/regexp/Username/templates/index.d.mts +5 -0
  440. package/dist/v1/regexp/Username/templates/index.d.mts.map +1 -0
  441. package/dist/v1/regexp/Username/templates/index.mjs +4 -0
  442. package/dist/v1/regexp/index.cjs +41 -0
  443. package/dist/v1/regexp/index.d.mts +9 -0
  444. package/dist/v1/regexp/index.d.mts.map +1 -0
  445. package/dist/v1/regexp/index.mjs +8 -0
  446. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.cjs +64 -0
  447. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.d.mts +11 -0
  448. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.d.mts.map +1 -0
  449. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Browser.mjs +51 -0
  450. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.cjs +66 -0
  451. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.d.mts +11 -0
  452. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.d.mts.map +1 -0
  453. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/FileInput.mjs +51 -0
  454. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.cjs +39 -0
  455. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.d.mts +11 -0
  456. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.d.mts.map +1 -0
  457. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Node.mjs +28 -0
  458. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.cjs +494 -0
  459. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.d.mts +142 -0
  460. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.d.mts.map +1 -0
  461. package/dist/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters/Template.mjs +445 -0
  462. package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.cjs +30 -4
  463. package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.d.mts +5 -2
  464. package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.d.mts.map +1 -1
  465. package/dist/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.mjs +29 -5
  466. package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.cjs +135 -0
  467. package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.d.mts +83 -0
  468. package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.d.mts.map +1 -0
  469. package/dist/v1/webTemplates/media/MediaValidator/v1/Browser/index.mjs +120 -0
  470. package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.cjs +127 -0
  471. package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.d.mts +95 -0
  472. package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.d.mts.map +1 -0
  473. package/dist/v1/webTemplates/media/MediaValidator/v1/Node/index.mjs +109 -0
  474. package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.cjs +83 -0
  475. package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.d.mts +46 -0
  476. package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.d.mts.map +1 -0
  477. package/dist/v1/webTemplates/multiformats/14.0/IPFSHasher/index.mjs +71 -0
  478. package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.cjs +493 -0
  479. package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.d.mts +67 -0
  480. package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.d.mts.map +1 -0
  481. package/dist/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.mjs +399 -0
  482. package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.cjs +35 -0
  483. package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.d.mts +6 -0
  484. package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.d.mts.map +1 -0
  485. package/dist/v1/webTemplates/vite/7.3/plugins/githubUtils.mjs +29 -0
  486. package/docs/info/RegExp.md +74 -0
  487. package/docs/v1/Exports.md +101 -0
  488. package/docs/v1/README.md +113 -15
  489. package/docs/v1/basics/asyncReplace.md +2 -0
  490. package/docs/v1/basics/browserDetector.md +28 -11
  491. package/docs/v1/basics/crypto.md +85 -0
  492. package/docs/v1/basics/deprecated/html.md +2 -0
  493. package/docs/v1/basics/deprecated/objFilter.md +2 -0
  494. package/docs/v1/basics/html.md +2 -0
  495. package/docs/v1/basics/objChecker.md +55 -0
  496. package/docs/v1/basics/objFilter.md +57 -86
  497. package/docs/v1/basics/promiseUtils.md +12 -3
  498. package/docs/v1/basics/text.md +0 -1
  499. package/docs/v1/libs/array/TinyArrayComparator.md +50 -39
  500. package/docs/v1/libs/fs/TinyFS.md +752 -0
  501. package/docs/v1/libs/fs/TinyOPFSFileSystem.md +495 -0
  502. package/docs/v1/libs/fs/TinyStorageBucketFileSystem.md +407 -0
  503. package/docs/v1/libs/plugin/TinyPlugin.md +441 -0
  504. package/docs/v1/libs/plugin/TinyVersion.md +145 -0
  505. package/docs/v1/libs/router/TinyRouter.md +216 -0
  506. package/docs/v1/libs/storage/TinyMapCache.md +219 -0
  507. package/docs/v1/libs/storage/TinySetMapDatabase.md +478 -0
  508. package/docs/v1/libs/sw/browser/TinyNotificationAdapter.md +280 -0
  509. package/docs/v1/libs/sw/browser/TinyPushManager.md +782 -0
  510. package/docs/v1/libs/sw/browser/TinyServiceWorker.md +365 -0
  511. package/docs/v1/libs/sw/browser/plugins/TabManager.md +133 -0
  512. package/docs/v1/libs/sw/service/TinyPushRouter.md +314 -0
  513. package/docs/v1/libs/sw/service/TinyServiceWorkerEngine.md +748 -0
  514. package/docs/v1/libs/sw/service/plugins/GlobBypassPlugin.md +229 -0
  515. package/docs/v1/libs/sw/service/plugins/GlobCachePlugin.md +91 -0
  516. package/docs/v1/libs/sw/service/plugins/Ping.md +36 -0
  517. package/docs/v1/libs/sw/service/plugins/TabManager.md +64 -0
  518. package/docs/v1/libs/sw/service/plugins/ViteFileDetector.md +92 -0
  519. package/docs/v1/libs/sw/service/shared/TinyPushPayload.md +316 -0
  520. package/docs/v1/libs/text/TinyI18.md +80 -56
  521. package/docs/v1/libs/tools/TinyBrowserMonitor.md +170 -0
  522. package/docs/v1/libs/tools/TinyDebugger.md +117 -1
  523. package/docs/v1/libs/tools/TinyHtmlTagRegexBuilder.md +141 -0
  524. package/docs/v1/libs/tools/TinyHttpResponseRegistry.md +129 -0
  525. package/docs/v1/libs/tools/TinyPasswordValidator.md +153 -0
  526. package/docs/v1/libs/tools/TinyPkgExportValidator.md +45 -1
  527. package/docs/v1/libs/tools/TinySiteMap.md +134 -0
  528. package/docs/v1/libs/tools/TinySiteMapStream.md +97 -0
  529. package/docs/v1/libs/tools/TinyURLSecurityVerifier.md +146 -0
  530. package/docs/v1/libs/tools/TinyUriParser/Discord.md +374 -0
  531. package/docs/v1/libs/tools/TinyUriParser/MatrixProtocol.md +54 -0
  532. package/docs/v1/libs/tools/TinyUriParser.md +128 -0
  533. package/docs/v1/libs/utils/TinyCloner.md +126 -0
  534. package/docs/v1/libs/utils/TinyPromiseQueue.md +1 -1
  535. package/docs/v1/libs/utils/TinyThrottledApi.md +219 -0
  536. package/docs/v1/libs/worker/browser/TinyWebWorker.md +331 -0
  537. package/docs/v1/libs/worker/engine/TinyWebWorkerEngine.md +137 -0
  538. package/docs/v1/regexp/Email.md +127 -0
  539. package/docs/v1/regexp/Glob.md +155 -0
  540. package/docs/v1/regexp/IPv4.md +103 -0
  541. package/docs/v1/regexp/IPv6.md +122 -0
  542. package/docs/v1/regexp/SegmentExtractor.md +120 -0
  543. package/docs/v1/regexp/UrlDetector.md +117 -0
  544. package/docs/v1/regexp/Username/Base.md +131 -0
  545. package/docs/v1/regexp/Username/Discord.md +267 -0
  546. package/docs/v1/regexp/Username/MatrixProtocol.md +131 -0
  547. package/docs/v1/webTemplates/ag-psd/31.0/ProcessSolidFilters.md +565 -0
  548. package/docs/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.md +19 -7
  549. package/docs/v1/webTemplates/media/MediaValidator/v1/Browser.md +123 -0
  550. package/docs/v1/webTemplates/media/MediaValidator/v1/Node.md +136 -0
  551. package/docs/v1/webTemplates/multiformats/14.0/IPFSHasher.md +310 -0
  552. package/docs/v1/webTemplates/vite/7.3/plugins/TinyVitePwaPlugin.md +131 -0
  553. package/docs/v1/webTemplates/vite/7.3/plugins/githubUtils.md +50 -0
  554. package/package.json +340 -22
  555. package/types/EventEmitter.d.ts +48 -0
  556. package/dist/v1/libs/text/TinyI18.d.mts.map +0 -1
@@ -0,0 +1,445 @@
1
+ /**
2
+ * Describes a single filter that claims layers by matching their names.
3
+ * @typedef {Object} FilterConfig
4
+ * @property {string} id - Filter identifier (e.g., 'artist1').
5
+ * @property {string} color - Color in HEX format (e.g., '#ffffff').
6
+ * @property {string|string[]} [startsWith] - Prefix(es) the layer name must start with.
7
+ * @property {string|string[]} [endsWith] - Suffix(es) the layer name must end with.
8
+ * @property {string|string[]} [contains] - Substring(s) the layer name must contain.
9
+ * @property {string|string[]} [equals] - Exact value(s) the layer name must be equal to.
10
+ * @property {RegExp|RegExp[]} [matches] - Regular expression(s) the layer name must satisfy. Avoid the global (g) flag, as it makes the RegExp stateful.
11
+ * @property {(layerName: string) => boolean} [test] - Custom predicate for advanced matching.
12
+ * @property {boolean|FolderOptions} [folder] - When enabled, the filter also matches folders, claiming every layer inside them.
13
+ */
14
+ /**
15
+ * Describes how the layers nested inside a claimed folder must be handled.
16
+ * @typedef {Object} FolderOptions
17
+ * @property {'inherit'|'exclude'|'custom'} [subfolders='inherit'] - How nested folders are handled. 'inherit' applies the parent filter to every subfolder, 'exclude' leaves subfolders untouched, and 'custom' delegates to 'childFilter'.
18
+ * @property {FilterConfig|FilterConfig[]} [childFilter] - Filter(s) matched against nested folders when 'subfolders' is 'custom'.
19
+ */
20
+ /**
21
+ * Describes the fallback configuration applied to layers that no filter claims.
22
+ * @typedef {Object} DefaultConfig
23
+ * @property {string} color - Color in HEX format for layers that do not match filters.
24
+ */
25
+ /**
26
+ * Describes the complete result produced by processing a PSD file.
27
+ * @template {Buffer|Blob} Data
28
+ * @typedef {Object} ProcessedPsdResult
29
+ * @property {Data} fullImageBuffer - PNG Buffer or Blob of the complete reconstructed image.
30
+ * @property {Array<{ id: string, buffer: Data }>} separatedImages - Array containing the results of each isolated color.
31
+ * @property {Record<string, number>} stats - Object reporting the integer number of pixels claimed by each filter.
32
+ * @property {LayerVectorData[]} vectorData - Vector representation of every layer that was processed, in painting order.
33
+ */
34
+ /**
35
+ * Describes the position and size of a layer inside the document.
36
+ * @typedef {Object} VectorBounds
37
+ * @property {number} x - The horizontal offset of the layer inside the document, in pixels.
38
+ * @property {number} y - The vertical offset of the layer inside the document, in pixels.
39
+ * @property {number} width - The width of the layer, in pixels.
40
+ * @property {number} height - The height of the layer, in pixels.
41
+ */
42
+ /**
43
+ * Describes the vector representation of a single processed layer.
44
+ * @typedef {Object} LayerVectorData
45
+ * @property {string} name - The original name of the layer inside the PSD file.
46
+ * @property {string} filterId - The ID of the filter that claimed this layer, or 'unfiltered'.
47
+ * @property {number} opacity - The effective opacity of the layer, from 0 to 1.
48
+ * @property {VectorBounds} bounds - The bounding box of the layer in the document space.
49
+ */
50
+ /**
51
+ * Converts a hexadecimal color to a strict RGBA array.
52
+ * @param {string} hex - Hexadecimal color.
53
+ * @returns {number[]} Array containing [R, G, B, A].
54
+ * @throws {Error} If the color is not a valid HEX string.
55
+ */
56
+ function hexToRgba(hex) {
57
+ if (typeof hex !== 'string' || !hex.startsWith('#')) {
58
+ throw new Error(`Invalid color received: ${hex}. You must use a HEX string starting with #.`);
59
+ }
60
+ const cleanHex = hex.replace('#', '');
61
+ const normalizedHex = cleanHex.length === 3
62
+ ? cleanHex
63
+ .split('')
64
+ .map((c) => c + c)
65
+ .join('')
66
+ : cleanHex;
67
+ const bigint = parseInt(normalizedHex, 16);
68
+ return [(bigint >> 16) & 255, (bigint >> 8) & 255, bigint & 255, 255];
69
+ }
70
+ /**
71
+ * Builds the vector representation of a single PSD layer.
72
+ * @param {any} layer - The raw ag-psd layer node.
73
+ * @param {string} filterId - The ID of the filter that claimed this layer.
74
+ * @param {number} opacity - The effective opacity of the layer, from 0 to 1.
75
+ * @returns {LayerVectorData} The vector data describing the layer geometry.
76
+ * @throws {TypeError} If the layer, filterId, or opacity are invalid.
77
+ */
78
+ function buildLayerVectorData(layer, filterId, opacity) {
79
+ if (layer === null || typeof layer !== 'object') {
80
+ throw new TypeError("The 'layer' argument must be a valid PSD layer object.");
81
+ }
82
+ if (typeof filterId !== 'string') {
83
+ throw new TypeError("The 'filterId' argument must be a string.");
84
+ }
85
+ if (typeof opacity !== 'number' || Number.isNaN(opacity)) {
86
+ throw new TypeError("The 'opacity' argument must be a valid number.");
87
+ }
88
+ return {
89
+ name: typeof layer.name === 'string' ? layer.name : '',
90
+ filterId: filterId,
91
+ opacity: opacity,
92
+ bounds: {
93
+ x: typeof layer.left === 'number' ? layer.left : 0,
94
+ y: typeof layer.top === 'number' ? layer.top : 0,
95
+ width: layer.canvas ? layer.canvas.width : 0,
96
+ height: layer.canvas ? layer.canvas.height : 0,
97
+ },
98
+ };
99
+ }
100
+ /**
101
+ * Normalizes a value into an array so it can be iterated uniformly.
102
+ * @template T
103
+ * @param {T|T[]} value - A single value or an array of values.
104
+ * @returns {T[]} The value wrapped in an array when it is not one already.
105
+ */
106
+ function toArray(value) {
107
+ return Array.isArray(value) ? value : [value];
108
+ }
109
+ /**
110
+ * Compiles a single filter configuration into a reusable predicate.
111
+ * All criteria declared in the filter are combined with a logical AND.
112
+ * Values inside a single criterion are combined with a logical OR.
113
+ * @param {FilterConfig} filter - The filter configuration to compile.
114
+ * @returns {(layerName: string) => boolean} A predicate that returns true when a layer name matches.
115
+ * @throws {TypeError} If the filter or any of its properties are invalid.
116
+ */
117
+ function buildFilterPredicate(filter) {
118
+ if (filter === null || typeof filter !== 'object') {
119
+ throw new TypeError('Each filter must be a valid object.');
120
+ }
121
+ if (typeof filter.id !== 'string' || filter.id.length === 0) {
122
+ throw new TypeError("Each filter must declare a non-empty string 'id'.");
123
+ }
124
+ /** @type {Array<(layerName: string) => boolean>} */
125
+ const criteria = [];
126
+ if (filter.startsWith !== undefined) {
127
+ const patterns = toArray(filter.startsWith);
128
+ criteria.push((name) => patterns.some((pattern) => name.startsWith(pattern)));
129
+ }
130
+ if (filter.endsWith !== undefined) {
131
+ const patterns = toArray(filter.endsWith);
132
+ criteria.push((name) => patterns.some((pattern) => name.endsWith(pattern)));
133
+ }
134
+ if (filter.contains !== undefined) {
135
+ const patterns = toArray(filter.contains);
136
+ criteria.push((name) => patterns.some((pattern) => name.includes(pattern)));
137
+ }
138
+ if (filter.equals !== undefined) {
139
+ const patterns = toArray(filter.equals);
140
+ criteria.push((name) => patterns.some((pattern) => name === pattern));
141
+ }
142
+ if (filter.matches !== undefined) {
143
+ const patterns = toArray(filter.matches);
144
+ criteria.push((name) => patterns.some((pattern) => pattern.test(name)));
145
+ }
146
+ if (filter.test !== undefined) {
147
+ if (typeof filter.test !== 'function') {
148
+ throw new TypeError("The 'test' property must be a function.");
149
+ }
150
+ const customTest = filter.test;
151
+ criteria.push((name) => customTest(name) === true);
152
+ }
153
+ if (criteria.length === 0) {
154
+ throw new TypeError(`The filter '${filter.id}' must declare at least one matching criterion.`);
155
+ }
156
+ return (layerName) => criteria.every((criterion) => criterion(layerName));
157
+ }
158
+ /**
159
+ * Normalizes the 'folder' option of a filter into a consistent object.
160
+ * @param {boolean|FolderOptions|undefined} folder - The raw folder option.
161
+ * @returns {{ subfolders: 'inherit'|'exclude'|'custom', childFilter: FilterConfig[] }|null} The normalized options, or null when folder mode is disabled.
162
+ * @throws {TypeError} If the folder option is invalid.
163
+ */
164
+ function normalizeFolderOptions(folder) {
165
+ if (folder === undefined || folder === false) {
166
+ return null;
167
+ }
168
+ if (folder === true) {
169
+ return { subfolders: 'inherit', childFilter: [] };
170
+ }
171
+ if (typeof folder !== 'object' || folder === null) {
172
+ throw new TypeError("The 'folder' option must be a boolean or an object.");
173
+ }
174
+ const subfolders = folder.subfolders ?? 'inherit';
175
+ if (!['inherit', 'exclude', 'custom'].includes(subfolders)) {
176
+ throw new TypeError("The 'subfolders' option must be 'inherit', 'exclude', or 'custom'.");
177
+ }
178
+ return {
179
+ subfolders,
180
+ childFilter: folder.childFilter ? toArray(folder.childFilter) : [],
181
+ };
182
+ }
183
+ /**
184
+ * Compiles an array of filter configurations into reusable matchers.
185
+ * @param {FilterConfig[]} filters - The filter configurations to compile.
186
+ * @returns {Array<{ id: string, predicate: (layerName: string) => boolean, folder: { subfolders: string, childFilter: FilterConfig[] }|null }>} The compiled matchers.
187
+ */
188
+ function buildMatchers(filters) {
189
+ return filters.map((filter) => ({
190
+ id: filter.id,
191
+ predicate: buildFilterPredicate(filter),
192
+ folder: normalizeFolderOptions(filter.folder),
193
+ }));
194
+ }
195
+ /**
196
+ * Recursively collects every filter, including the ones nested inside folder options.
197
+ * @param {FilterConfig[]} filters - The filters to expand.
198
+ * @param {FilterConfig[]} [acc] - The accumulator used during recursion.
199
+ * @returns {FilterConfig[]} Every filter, flattened.
200
+ */
201
+ function flattenFilters(filters, acc = []) {
202
+ for (const filter of filters) {
203
+ acc.push(filter);
204
+ if (filter.folder && typeof filter.folder === 'object' && filter.folder.childFilter) {
205
+ flattenFilters(toArray(filter.folder.childFilter), acc);
206
+ }
207
+ }
208
+ return acc;
209
+ }
210
+ /**
211
+ * Resolves the filter id for a single layer name.
212
+ * @param {string} layerName - The name of the layer.
213
+ * @param {ReturnType<typeof buildMatchers>} matchers - The active matchers.
214
+ * @returns {string} The id of the first matching filter, or 'unfiltered'.
215
+ */
216
+ function resolveLayerFilterId(layerName, matchers) {
217
+ if (typeof layerName !== 'string') {
218
+ return 'unfiltered';
219
+ }
220
+ for (const matcher of matchers) {
221
+ if (matcher.predicate(layerName)) {
222
+ return matcher.id;
223
+ }
224
+ }
225
+ return 'unfiltered';
226
+ }
227
+ /**
228
+ * Finds the first folder matcher that claims the given folder name.
229
+ * @param {string} folderName - The name of the folder.
230
+ * @param {ReturnType<typeof buildMatchers>} matchers - The active matchers.
231
+ * @returns {ReturnType<typeof buildMatchers>[number]|null} The matching matcher, or null when no folder matcher applies.
232
+ */
233
+ function findFolderMatcher(folderName, matchers) {
234
+ if (typeof folderName !== 'string') {
235
+ return null;
236
+ }
237
+ for (const matcher of matchers) {
238
+ if (matcher.folder && matcher.predicate(folderName)) {
239
+ return matcher;
240
+ }
241
+ }
242
+ return null;
243
+ }
244
+ /**
245
+ * Traverses the PSD tree, resolving the filter id of every visible layer.
246
+ * @param {any[]} children - The PSD nodes to traverse.
247
+ * @param {ReturnType<typeof buildMatchers>} matchers - The matchers active in the current scope.
248
+ * @param {boolean} parentVisible - Whether the parent node is visible.
249
+ * @param {Array<{ layer: any, filterId: string }>} result - The output array, in painting order.
250
+ * @returns {void} This function mutates the 'result' array instead of returning a value.
251
+ */
252
+ function collectLayers(children, matchers, parentVisible, result) {
253
+ for (const layer of children) {
254
+ const isVisible = parentVisible && layer.hidden !== true;
255
+ if (!isVisible) {
256
+ continue;
257
+ }
258
+ if (layer.children) {
259
+ const matcher = findFolderMatcher(layer.name, matchers);
260
+ if (matcher) {
261
+ collectClaimedLayers(layer, matcher, matchers, result);
262
+ }
263
+ else {
264
+ collectLayers(layer.children, matchers, isVisible, result);
265
+ }
266
+ }
267
+ else {
268
+ result.push({ layer, filterId: resolveLayerFilterId(layer.name, matchers) });
269
+ }
270
+ }
271
+ }
272
+ /**
273
+ * Claims every layer inside a folder for a given matcher, honoring the subfolder strategy.
274
+ * @param {any} folder - The folder node that was claimed.
275
+ * @param {ReturnType<typeof buildMatchers>[number]} matcher - The matcher that claimed the folder.
276
+ * @param {ReturnType<typeof buildMatchers>} matchers - The matchers active in the parent scope.
277
+ * @param {Array<{ layer: any, filterId: string }>} result - The output array, in painting order.
278
+ * @returns {void} This function mutates the 'result' array instead of returning a value.
279
+ */
280
+ function collectClaimedLayers(folder, matcher, matchers, result) {
281
+ const options = matcher.folder;
282
+ for (const child of folder.children) {
283
+ if (child.hidden === true) {
284
+ continue;
285
+ }
286
+ if (!child.children) {
287
+ result.push({ layer: child, filterId: matcher.id });
288
+ continue;
289
+ }
290
+ const subfolders = options?.subfolders;
291
+ if (subfolders === 'inherit') {
292
+ collectClaimedLayers(child, matcher, matchers, result);
293
+ }
294
+ else if (subfolders === 'exclude') {
295
+ collectLayers([child], matchers, true, result);
296
+ }
297
+ else if (subfolders === 'custom') {
298
+ const childMatchers = buildMatchers(options?.childFilter ?? []);
299
+ collectLayers([child], childMatchers, true, result);
300
+ }
301
+ }
302
+ }
303
+ /**
304
+ * Creates a PSD processing function bound to a specific runtime environment.
305
+ * The returned function extracts solid colors, resolves which filter claims each pixel,
306
+ * and produces both a composite image and one image per filter.
307
+ * @template {Buffer | ArrayBuffer} ValidatorResult
308
+ * @template {Buffer|Blob} Data
309
+ * @template {string | Blob | HTMLInputElement} PsdInput
310
+ * @template {import('canvas').Canvas | HTMLCanvasElement} UniversalCanvas
311
+ * @template {import('canvas').CanvasRenderingContext2D | CanvasRenderingContext2D} UniversalCanvasRenderingContext2D
312
+ * @template {import('canvas').ImageData | ImageData} UniversalImageData
313
+ *
314
+ * @param {(psdInput: PsdInput) => Promise<ValidatorResult>} validator - Loads the PSD source and returns its raw bytes for the current environment.
315
+ * @param {(width: number, height: number) => UniversalCanvas} createCanvas - Factory that allocates a canvas compatible with the current environment.
316
+ * @param {typeof import('ag-psd').readPsd} readPsd - The ag-psd parser used to decode the raw bytes into a PSD tree.
317
+ * @param {(canvas: UniversalCanvas) => Promise<Data>} exportCanvas - Injected function to handle environment-specific export.
318
+ */
319
+ export function createProcessPsdSolidFilters(validator, createCanvas, readPsd, exportCanvas) {
320
+ /**
321
+ * Extracts solid colors and calculates the area of each claimed filter in the PSD.
322
+ * @param {PsdInput} psdInput - The absolute path, URL, or Blob file of the PSD.
323
+ * @param {FilterConfig[]} filters - The configurations to capture specific layers.
324
+ * @param {DefaultConfig} defaultConfig - The fallback configuration for the remaining layers.
325
+ * @returns {Promise<ProcessedPsdResult<Data>>} Results of the separated and reconstructed images, and pixel statistics.
326
+ * @throws {Error|TypeError} If the parameters or the file are invalid.
327
+ * @beta
328
+ */
329
+ return async function processPsdSolidFilters(psdInput, filters, defaultConfig) {
330
+ if (!Array.isArray(filters)) {
331
+ throw new TypeError("The 'filters' argument must be an array.");
332
+ }
333
+ if (!defaultConfig || typeof defaultConfig.color !== 'string') {
334
+ throw new Error("The 'defaultConfig' argument must have a 'color' property of type string.");
335
+ }
336
+ // 1. PSD Reading and Preparation
337
+ const buffer = await validator(psdInput);
338
+ const psd = readPsd(buffer);
339
+ const W = psd.width;
340
+ const H = psd.height;
341
+ const allFilters = flattenFilters(filters);
342
+ const colorMap = new Map();
343
+ for (const f of allFilters) {
344
+ colorMap.set(f.id, hexToRgba(f.color));
345
+ }
346
+ colorMap.set('unfiltered', hexToRgba(defaultConfig.color));
347
+ // 1D array to store which ID dominates each pixel in the space (W * H)
348
+ const ownerMap = new Array(W * H).fill(null);
349
+ const matchers = buildMatchers(filters);
350
+ /** @type {Array<{ layer: any, filterId: string }>} */
351
+ const resolvedLayers = [];
352
+ collectLayers(psd.children || [], matchers, true, resolvedLayers);
353
+ /** @type {LayerVectorData[]} */
354
+ const vectorData = [];
355
+ // 2. Pixel-by-Pixel Processing (Bottom-Up)
356
+ for (const { layer, filterId } of resolvedLayers) {
357
+ if (!layer.canvas)
358
+ continue; // Ignores layers that do not have image data
359
+ // Layer opacity affects pixel alpha
360
+ const layerOpacity = layer.opacity !== undefined ? layer.opacity / 255 : 1;
361
+ vectorData.push(buildLayerVectorData(layer, filterId, layerOpacity));
362
+ const ctx = layer.canvas.getContext('2d');
363
+ const imgData = ctx.getImageData(0, 0, layer.canvas.width, layer.canvas.height);
364
+ const data = imgData.data;
365
+ for (let y = 0; y < layer.canvas.height; y++) {
366
+ for (let x = 0; x < layer.canvas.width; x++) {
367
+ const idx = (y * layer.canvas.width + x) * 4;
368
+ const alpha = data[idx + 3] * layerOpacity;
369
+ // Threshold: If it is minimally visible, it captures the pixel.
370
+ // This ensures that pure colors completely overlap what is behind.
371
+ if (alpha > 1) {
372
+ const globalX = layer.left + x;
373
+ const globalY = layer.top + y;
374
+ // Only renders if the pixel falls within the main document canvas
375
+ if (globalX >= 0 && globalX < W && globalY >= 0 && globalY < H) {
376
+ ownerMap[globalY * W + globalX] = filterId;
377
+ }
378
+ }
379
+ }
380
+ }
381
+ }
382
+ // 3. Final Image Generation and Data Counting
383
+ /** @type {Record<string, number>} */
384
+ const stats = { unclaimed: 0 };
385
+ /** @type {Record<string, { canvas: UniversalCanvas; ctx: UniversalCanvasRenderingContext2D; imgData: UniversalImageData }>} */
386
+ const separatedData = {};
387
+ const ids = ['unfiltered', ...new Set(allFilters.map((f) => f.id))];
388
+ ids.forEach((id) => {
389
+ stats[id] = 0;
390
+ const c = createCanvas(W, H);
391
+ separatedData[id] = {
392
+ canvas: c,
393
+ // @ts-ignore
394
+ ctx: c.getContext('2d'),
395
+ // @ts-ignore
396
+ imgData: c.getContext('2d').createImageData(W, H),
397
+ };
398
+ });
399
+ const fullCanvas = createCanvas(W, H);
400
+ const fullCtx = fullCanvas.getContext('2d');
401
+ // @ts-ignore
402
+ const fullImgData = fullCtx.createImageData(W, H);
403
+ // Mapping the Winning Pixels
404
+ for (let i = 0; i < ownerMap.length; i++) {
405
+ const ownerId = ownerMap[i];
406
+ if (ownerId === null) {
407
+ stats.unclaimed++;
408
+ continue;
409
+ }
410
+ stats[ownerId]++; // Increments filter INT
411
+ const color = colorMap.get(ownerId);
412
+ const pixelStart = i * 4;
413
+ // Write to the Complete Composite Image
414
+ fullImgData.data[pixelStart] = color[0]; // R
415
+ fullImgData.data[pixelStart + 1] = color[1]; // G
416
+ fullImgData.data[pixelStart + 2] = color[2]; // B
417
+ fullImgData.data[pixelStart + 3] = 255; // 100% Solid Opacity
418
+ // Write to the Specific Filter Image
419
+ const targetData = separatedData[ownerId].imgData.data;
420
+ targetData[pixelStart] = color[0];
421
+ targetData[pixelStart + 1] = color[1];
422
+ targetData[pixelStart + 2] = color[2];
423
+ targetData[pixelStart + 3] = 255;
424
+ }
425
+ // 4. Finalization and Asynchronous Data Export
426
+ // @ts-ignore
427
+ fullCtx.putImageData(fullImgData, 0, 0);
428
+ const fullBuffer = await exportCanvas(fullCanvas);
429
+ const separatedImagesArray = [];
430
+ for (const id of ids) {
431
+ // @ts-ignore
432
+ separatedData[id].ctx.putImageData(separatedData[id].imgData, 0, 0);
433
+ separatedImagesArray.push({
434
+ id: id,
435
+ buffer: await exportCanvas(separatedData[id].canvas),
436
+ });
437
+ }
438
+ return {
439
+ fullImageBuffer: fullBuffer,
440
+ separatedImages: separatedImagesArray,
441
+ stats: stats,
442
+ vectorData: vectorData,
443
+ };
444
+ };
445
+ }
@@ -375,11 +375,36 @@ class BootstrapDialogs {
375
375
 
376
376
  /**
377
377
  * Displays a global, non-dismissible loading overlay for background/DB tasks.
378
+ * If a loading overlay is already active, it updates the existing message and styles.
378
379
  * @param {string} [message='Processing...'] - The text to display while the loading state is active.
380
+ * @param {CustomElementConfig} [config] - Customization for the loading message element.
379
381
  * @returns {void}
380
382
  */
381
- static showLoading(message = 'Processing...') {
382
- if (this._loadingInstance) return; // Prevent multiple loading overlays
383
+ static showLoading(message = 'Processing...', config = {}) {
384
+ // Base configuration for the loading text
385
+ const defaultTitleConfig = {
386
+ className: [
387
+ 'fw-bold',
388
+ 'text-white',
389
+ 'shadow-sm',
390
+ 'px-4',
391
+ 'py-2',
392
+ 'rounded',
393
+ 'bg-dark',
394
+ 'bg-opacity-75',
395
+ ],
396
+ };
397
+
398
+ // If a loading modal is already active, update the text and apply new styles/classes
399
+ if (this._loadingInstance) {
400
+ const titleElement = this._loadingElement?.querySelector('h5');
401
+ if (titleElement) {
402
+ titleElement.textContent = message;
403
+ // Apply extra classes/styles to the existing element
404
+ this._applyCustomizations(titleElement, defaultTitleConfig, config);
405
+ }
406
+ return;
407
+ }
383
408
 
384
409
  const modal = document.createElement('div');
385
410
  modal.className = 'modal fade';
@@ -405,7 +430,7 @@ class BootstrapDialogs {
405
430
  spinner.style.height = '4rem';
406
431
 
407
432
  const title = document.createElement('h5');
408
- title.className = 'fw-bold text-white shadow-sm px-4 py-2 rounded bg-dark bg-opacity-75';
433
+ this._applyCustomizations(title, defaultTitleConfig, config);
409
434
  title.textContent = message;
410
435
 
411
436
  body.append(spinner, title);
@@ -681,9 +706,10 @@ const confirm = (msg, options) => BootstrapDialogs.confirm(msg, options);
681
706
 
682
707
  /**
683
708
  * @param {string} msg - The message to display.
709
+ * @param {CustomElementConfig} [config] - Customization for the loading message.
684
710
  * @returns {void}
685
711
  */
686
- const showLoading = (msg) => BootstrapDialogs.showLoading(msg);
712
+ const showLoading = (msg, config) => BootstrapDialogs.showLoading(msg, config);
687
713
 
688
714
  /**
689
715
  * Hides and destroys the active loading overlay.
@@ -219,10 +219,12 @@ declare class BootstrapDialogs {
219
219
  static prompt(message: string, defaultValue?: string, options?: ModalOptions): Promise<string | null>;
220
220
  /**
221
221
  * Displays a global, non-dismissible loading overlay for background/DB tasks.
222
+ * If a loading overlay is already active, it updates the existing message and styles.
222
223
  * @param {string} [message='Processing...'] - The text to display while the loading state is active.
224
+ * @param {CustomElementConfig} [config] - Customization for the loading message element.
223
225
  * @returns {void}
224
226
  */
225
- static showLoading(message?: string): void;
227
+ static showLoading(message?: string, config?: CustomElementConfig): void;
226
228
  /**
227
229
  * Hides and destroys the active loading overlay.
228
230
  * @returns {void}
@@ -279,9 +281,10 @@ export declare const prompt: (msg: string, def?: string, options?: ModalOptions)
279
281
  export declare const confirm: (msg: string, options?: ModalOptions) => Promise<boolean>;
280
282
  /**
281
283
  * @param {string} msg - The message to display.
284
+ * @param {CustomElementConfig} [config] - Customization for the loading message.
282
285
  * @returns {void}
283
286
  */
284
- export declare const showLoading: (msg: string) => void;
287
+ export declare const showLoading: (msg: string, config?: CustomElementConfig) => void;
285
288
  /**
286
289
  * Hides and destroys the active loading overlay.
287
290
  * @returns {void}
@@ -1 +1 @@
1
- {"version":3,"file":"BootstrapDialogs.d.mts","sourceRoot":"","sources":["../../../../../../src/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.mjs"],"names":[],"mappings":"AAAA;;GAEG;AADA,YAAqC,KAAK,GAAhC,OAAO,WAAW,EAAE,KAAK,CAAO;AAI1C,YAA4C,UAAU,GAA5C,cAAc,WAAW,EAAE,KAAK,CAAY;AAItD,YAAkB,mBAAmB,GACrC;;;;IAA+B,SAAS,AAAxC,CACA,EADW,MAAM,GAAG,MAAM,EAAE,CAC5B;;;;IAAyC,MAAM,AAA/C,CACF,gCAAA;CAAA,CAAA;AAGE,YAAkB,YAAY,GAC9B;;;;IAAoB,KAAK,AAAzB,CACA,EADW,MAAM,CACjB;;;;IAAoB,WAAW,AAA/B,CACA,EADW,MAAM,CACjB;;;;IAAoB,UAAU,AAA9B,CACA,EADW,MAAM,CACjB;;;;IAAoB,YAAY,AAAhC,CACA,EADW,MAAM,CACjB;;;;IAAiC,WAAW,AAA5C,CACA,EADW,mBAAmB,CAC9B;;;;IAAiC,YAAY,AAA7C,CACA,EADW,mBAAmB,CAC9B;;;;IAAiC,WAAW,AAA5C,CACA,EADW,mBAAmB,CAC9B;;;;IAAiC,cAAc,AAA/C,CACA,EADW,mBAAmB,CAC9B;;;;IAAiC,UAAU,AAA3C,CACA,EADW,mBAAmB,CAC9B;;;;IAAiC,YAAY,AAA7C,CACA,EADW,mBAAmB,CAC9B;;;;IAAiC,gBAAgB,AAAjD,CACA,EADW,mBAAmB,CAC9B;;;;IAAiC,eAAe,AAAhD,CACA,EADW,mBAAmB,CAC9B;;;;IAAiC,aAAa,AAA9C,CACA,EADW,mBAAmB,CAC9B;;;;IAAiC,YAAY,AAA7C,CACF,EADa,mBAAmB,CAChC;CAAA,CAAA;AA1BD;;GAEG;AAEH;;;;GAIG;AAEH;;;;;;;;;;;;;;;;GAgBG;AAEH;;;GAGG;AACH,cAAM,gBAAgB;;IACpB,yBAAyB;IACzB,MAAM,CAAC,eAAe,EADX,KAAK,GAAC,IAAI,CACS;IAC9B,yBAAyB;IACzB,MAAM,CAAC,gBAAgB,EADZ,KAAK,GAAC,IAAI,CACU;IAC/B,+BAA+B;IAC/B,MAAM,CAAC,aAAa,EADT,WAAW,GAAC,IAAI,CACC;IAC5B,+BAA+B;IAC/B,MAAM,CAAC,eAAe,EADX,WAAW,GAAC,IAAI,CACG;IAC9B,4BAA4B;IAC5B,MAAM,CAAC,cAAc,EADV,WAAS,IAAI,CACK;IAC7B,8CAA8C;IAC9C,MAAM,CAAC,WAAW,EADP,OAAO,GAAC,SAAS,GAAC,QAAQ,GAAC,IAAI,CAChB;IAyB1B;;;OAGG;IACH,MAAM,KAAK,aAAa,wCAEvB;IAED;;;;OAIG;IACH,MAAM,KAAK,aAAa,CAAC,MAAM,qCAAA,EAG9B;IAED;;;;OAIG;IACH,MAAM,KAAK,KAAK,CAAC,KAAK,EAHX,UAGW,EAIrB;IAED;;;;OAIG;IACH,MAAM,KAAK,KAAK,IAHH,UAAU,CAMtB;IAED;;;;;OAKG;mBACI,gBAAgB;IAyBvB,uCAAuC;IACvC,MAAM,KAAK,WAAW,CAAC,GAAG,EADd,mBACc,EAEzB;IACD,MAAM,KAAK,WAAW,IAJV,mBAAmB,CAM9B;IACD,uCAAuC;IACvC,MAAM,KAAK,YAAY,CAAC,GAAG,EADf,mBACe,EAE1B;IACD,MAAM,KAAK,YAAY,IAJX,mBAAmB,CAM9B;IACD,uCAAuC;IACvC,MAAM,KAAK,WAAW,CAAC,GAAG,EADd,mBACc,EAEzB;IACD,MAAM,KAAK,WAAW,IAJV,mBAAmB,CAM9B;IACD,uCAAuC;IACvC,MAAM,KAAK,cAAc,CAAC,GAAG,EADjB,mBACiB,EAE5B;IACD,MAAM,KAAK,cAAc,IAJb,mBAAmB,CAM9B;IACD,uCAAuC;IACvC,MAAM,KAAK,UAAU,CAAC,GAAG,EADb,mBACa,EAExB;IACD,MAAM,KAAK,UAAU,IAJT,mBAAmB,CAM9B;IACD,uCAAuC;IACvC,MAAM,KAAK,YAAY,CAAC,GAAG,EADf,mBACe,EAE1B;IACD,MAAM,KAAK,YAAY,IAJX,mBAAmB,CAM9B;IACD,uCAAuC;IACvC,MAAM,KAAK,gBAAgB,CAAC,GAAG,EADnB,mBACmB,EAE9B;IACD,MAAM,KAAK,gBAAgB,IAJf,mBAAmB,CAM9B;IACD,uCAAuC;IACvC,MAAM,KAAK,eAAe,CAAC,GAAG,EADlB,mBACkB,EAE7B;IACD,MAAM,KAAK,eAAe,IAJd,mBAAmB,CAM9B;IACD,uCAAuC;IACvC,MAAM,KAAK,aAAa,CAAC,GAAG,EADhB,mBACgB,EAE3B;IACD,MAAM,KAAK,aAAa,IAJZ,mBAAmB,CAM9B;IACD,uCAAuC;IACvC,MAAM,KAAK,YAAY,CAAC,GAAG,EADf,mBACe,EAE1B;IACD,MAAM,KAAK,YAAY,IAJX,mBAAmB,CAM9B;IAED;;;OAGG;IACH,MAAM,CAAC,YAAY,IAFN,IAAI,CAahB;IAED;;;;;;;OAOG;mBACI,oBAAoB;IAwB3B;;;;;OAKG;mBACI,gBAAgB;IAmDvB;;;;;OAKG;IACH,OAAa,KAAK,CAAC,OAAO,EAJf,MAIe,EAAE,OAAO,AAHhC,CACA,EADQ,YAG6B,GAF3B,OAAO,CAAC,IAAI,CAAC,CAMzB;IAED;;;;;OAKG;IACH,OAAa,OAAO,CAAC,OAAO,EAJjB,MAIiB,EAAE,OAAO,AAHlC,CACA,EADQ,YAG+B,GAF7B,OAAO,CAAC,OAAO,CAAC,CAO5B;IAED;;;;;;OAMG;IACH,OAAa,MAAM,CAAC,OAAO,EALhB,MAKgB,EAAE,YAAY,AAJtC,CACA,EADQ,MAImC,EAAE,OAAO,AAHpD,CACA,EADQ,YAGiD,GAF/C,OAAO,CAAC,MAAM,GAAC,IAAI,CAAC,CAqBhC;IAED;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,AAHvB,CACA,EADQ,MAGiC,GAF/B,IAAI,CA4ChB;IAED;;;OAGG;IACH,MAAM,CAAC,WAAW,IAFL,IAAI,CAehB;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,kBAAkB,CACvB,SAAS,EATA,MASA,EACT,WAAW,EATF,WAAW,GAAC,MASV,EACX,UAAU,EATD,OASC,EACV,WAAW,EATF,MASE,EACX,UAAU,AATT,CACA,EADQ,MAAM,GAAC,IASK,EACrB,OAAO,AATN,CACA,EADQ,YASG,GARD,WAAW,CAgFvB;IAED;;;OAGG;IACH,MAAM,CAAC,QAAQ,IAFF,IAAI,CAyBhB;IAED;;;;;;;;;;OAUG;IACH,MAAM,CAAC,KAAK,CACV,KAAK,EAVI,MAUJ,EACL,WAAW,EAVF,WAAW,GAAC,MAUV,EACX,UAAU,EAVD,OAUC,EACV,WAAW,EAVF,MAUE,EACX,UAAU,AAVT,CACA,EADQ,MAAM,GAAC,IAUN,EACV,IAAI,AAVH,CACA,EADQ,OAAO,GAAC,SAAS,GAAC,QAUb,EACd,OAAO,AAVN,CACA,EADQ,YAUG,GATD,OAAO,CAAC,GAAG,CAAC,CAqFxB;CACF;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B;;;;GAIG;AACH,eAAO,MAAM,KAAK,QAJP,MAAM,YACN,YAAY,KACV,OAAO,CAAC,IAAI,CAEkD,CAAC;AAE5E;;;;;GAKG;AACH,eAAO,MAAM,MAAM,QALR,MAAM,QACN,MAAM,YACN,YAAY,KACV,OAAO,CAAC,MAAM,GAAC,IAAI,CAEuD,CAAC;AAExF;;;;GAIG;AACH,eAAO,MAAM,OAAO,QAJT,MAAM,YACN,YAAY,KACV,OAAO,CAAC,OAAO,CAEmD,CAAC;AAEhF;;;GAGG;AACH,eAAO,MAAM,WAAW,QAHb,MAAM,KACJ,IAEwD,CAAC;AAEtE;;;GAGG;AACH,eAAO,MAAM,WAAW,QAFX,IAEkD,CAAC"}
1
+ {"version":3,"file":"BootstrapDialogs.d.mts","sourceRoot":"","sources":["../../../../../../src/v1/webTemplates/bootstrap/5.3/html/BootstrapDialogs.mjs"],"names":[],"mappings":"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"}
@@ -337,12 +337,35 @@ class BootstrapDialogs {
337
337
  }
338
338
  /**
339
339
  * Displays a global, non-dismissible loading overlay for background/DB tasks.
340
+ * If a loading overlay is already active, it updates the existing message and styles.
340
341
  * @param {string} [message='Processing...'] - The text to display while the loading state is active.
342
+ * @param {CustomElementConfig} [config] - Customization for the loading message element.
341
343
  * @returns {void}
342
344
  */
343
- static showLoading(message = 'Processing...') {
344
- if (this._loadingInstance)
345
- return; // Prevent multiple loading overlays
345
+ static showLoading(message = 'Processing...', config = {}) {
346
+ // Base configuration for the loading text
347
+ const defaultTitleConfig = {
348
+ className: [
349
+ 'fw-bold',
350
+ 'text-white',
351
+ 'shadow-sm',
352
+ 'px-4',
353
+ 'py-2',
354
+ 'rounded',
355
+ 'bg-dark',
356
+ 'bg-opacity-75',
357
+ ],
358
+ };
359
+ // If a loading modal is already active, update the text and apply new styles/classes
360
+ if (this._loadingInstance) {
361
+ const titleElement = this._loadingElement?.querySelector('h5');
362
+ if (titleElement) {
363
+ titleElement.textContent = message;
364
+ // Apply extra classes/styles to the existing element
365
+ this._applyCustomizations(titleElement, defaultTitleConfig, config);
366
+ }
367
+ return;
368
+ }
346
369
  const modal = document.createElement('div');
347
370
  modal.className = 'modal fade';
348
371
  modal.id = 'bs-loading-modal';
@@ -362,7 +385,7 @@ class BootstrapDialogs {
362
385
  spinner.style.width = '4rem';
363
386
  spinner.style.height = '4rem';
364
387
  const title = document.createElement('h5');
365
- title.className = 'fw-bold text-white shadow-sm px-4 py-2 rounded bg-dark bg-opacity-75';
388
+ this._applyCustomizations(title, defaultTitleConfig, config);
366
389
  title.textContent = message;
367
390
  body.append(spinner, title);
368
391
  content.appendChild(body);
@@ -580,9 +603,10 @@ export const prompt = (msg, def, options) => BootstrapDialogs.prompt(msg, def, o
580
603
  export const confirm = (msg, options) => BootstrapDialogs.confirm(msg, options);
581
604
  /**
582
605
  * @param {string} msg - The message to display.
606
+ * @param {CustomElementConfig} [config] - Customization for the loading message.
583
607
  * @returns {void}
584
608
  */
585
- export const showLoading = (msg) => BootstrapDialogs.showLoading(msg);
609
+ export const showLoading = (msg, config) => BootstrapDialogs.showLoading(msg, config);
586
610
  /**
587
611
  * Hides and destroys the active loading overlay.
588
612
  * @returns {void}