vivth 1.4.10 → 1.5.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 (379) hide show
  1. package/README.md +6060 -2037
  2. package/README.src.md +22 -14
  3. package/bun.lock +154 -194
  4. package/dev/auto/.src.ignore +28 -0
  5. package/dev/auto-doc.mjs +137 -0
  6. package/generated/types/generated/vivth/exports/all.d.mts +145 -0
  7. package/generated/types/generated/vivth/exports/neutral.d.mts +105 -0
  8. package/generated/types/generated/vivth/exports/node.d.mts +40 -0
  9. package/generated/types/src/bundler/CompileAS.d.mts +30 -0
  10. package/generated/types/src/bundler/CompileJS.d.mts +109 -0
  11. package/{types → generated/types}/src/bundler/CreateESPlugin.d.mts +1 -1
  12. package/{types → generated/types}/src/bundler/EsBundler.d.mts +9 -7
  13. package/generated/types/src/bundler/FSAnalyzer.d.mts +58 -0
  14. package/generated/types/src/bundler/FSasar.bundled.d.mts +28 -0
  15. package/generated/types/src/bundler/FSasar.d.mts +51 -0
  16. package/generated/types/src/bundler/FileSelfMapper.d.mts +137 -0
  17. package/generated/types/src/bundler/JSDirMapper.d.mts +128 -0
  18. package/generated/types/src/bundler/RunWatchThenCompileJSOnSafeExit.d.mts +63 -0
  19. package/generated/types/src/bundler/adds/BrowserExternals.d.mts +21 -0
  20. package/generated/types/src/bundler/adds/CreateTransform.d.mts +26 -0
  21. package/generated/types/src/bundler/adds/LastEditedUnix.d.mts +5 -0
  22. package/generated/types/src/bundler/adds/NodeModuleList.d.mts +15 -0
  23. package/generated/types/src/bundler/adds/PathFSBundles.bundled.d.mts +25 -0
  24. package/generated/types/src/bundler/adds/PathFSBundles.d.mts +48 -0
  25. package/generated/types/src/bundler/adds/PathFSDir.bundled.d.mts +30 -0
  26. package/generated/types/src/bundler/adds/PathFSDir.d.mts +48 -0
  27. package/generated/types/src/bundler/adds/PathFSFile.bundled.d.mts +25 -0
  28. package/generated/types/src/bundler/adds/PathFSFile.d.mts +40 -0
  29. package/{types → generated/types}/src/bundler/adds/ToBundledJSPlugin.d.mts +6 -6
  30. package/generated/types/src/bundler/adds/autoExternalize.d.mts +2 -0
  31. package/generated/types/src/bundler/adds/emptyBufferValue.d.mts +1 -0
  32. package/generated/types/src/bundler/adds/isModuleTheBundledVersion.d.mts +1 -0
  33. package/generated/types/src/bundler/adds/onEndEsBuildErrorLogger.d.mts +1 -0
  34. package/generated/types/src/bundler/adds/resolveJSDependencyPath.d.mts +1 -0
  35. package/generated/types/src/class/AwaitSignal.d.mts +48 -0
  36. package/generated/types/src/class/Console.d.mts +82 -0
  37. package/generated/types/src/class/DataLog.d.mts +25 -0
  38. package/generated/types/src/class/Derived.d.mts +74 -0
  39. package/generated/types/src/class/Effect.d.mts +213 -0
  40. package/{types → generated/types}/src/class/EnvSignal.d.mts +6 -2
  41. package/generated/types/src/class/EsWatcher.d.mts +36 -0
  42. package/{types → generated/types}/src/class/EventSignal.d.mts +39 -39
  43. package/generated/types/src/class/FSDirArchWatcher.d.mts +110 -0
  44. package/{types → generated/types}/src/class/FileSafe.d.mts +32 -16
  45. package/generated/types/src/class/ForEach.d.mts +57 -0
  46. package/generated/types/src/class/ForSignal.d.mts +63 -0
  47. package/generated/types/src/class/GetterSetter.d.mts +38 -0
  48. package/generated/types/src/class/JSONFileHandler.d.mts +50 -0
  49. package/{types → generated/types}/src/class/ListSignal.d.mts +49 -15
  50. package/{types → generated/types}/src/class/LitExp.d.mts +18 -18
  51. package/generated/types/src/class/ObjectSignal.d.mts +267 -0
  52. package/generated/types/src/class/Paths.d.mts +95 -0
  53. package/generated/types/src/class/Prettivy.d.mts +26 -0
  54. package/{types → generated/types}/src/class/QChannel.d.mts +24 -16
  55. package/generated/types/src/class/SafeExit.d.mts +69 -0
  56. package/{types → generated/types}/src/class/Setup.d.mts +29 -16
  57. package/{types → generated/types}/src/class/Signal.d.mts +29 -15
  58. package/generated/types/src/class/SignalCollection.d.mts +96 -0
  59. package/{types → generated/types}/src/class/WalkThrough.d.mts +4 -19
  60. package/generated/types/src/class/WorkerMainThread.bundled.d.mts +83 -0
  61. package/{types → generated/types}/src/class/WorkerMainThread.d.mts +33 -39
  62. package/{types → generated/types}/src/class/WorkerThread.d.mts +11 -5
  63. package/{types → generated/types}/src/common/Base64URL.d.mts +2 -1
  64. package/generated/types/src/common/Base64URLFromFile.d.mts +20 -0
  65. package/generated/types/src/common/BundledV.bundled.d.mts +3 -0
  66. package/generated/types/src/common/BundledV.d.mts +36 -0
  67. package/{types → generated/types}/src/common/CreateStringID.d.mts +5 -4
  68. package/generated/types/src/common/EnvMode.d.mts +79 -0
  69. package/generated/types/src/common/FactoryKey.d.mts +9 -0
  70. package/generated/types/src/common/Preferrence.d.mts +25 -0
  71. package/{types → generated/types}/src/common/Trace.d.mts +1 -1
  72. package/{types → generated/types}/src/common/TracePath.d.mts +1 -1
  73. package/generated/types/src/common/VivthUnBundledCodeBlock.d.mts +6 -0
  74. package/generated/types/src/doc/JSautoDOC.d.mts +172 -0
  75. package/generated/types/src/doc/cleanPreserveTypedef.d.mts +1 -0
  76. package/{types/src/doc/parsedFile.d.mts → generated/types/src/doc/parsedFileForDOC.d.mts} +56 -27
  77. package/generated/types/src/function/ClearRequireCache.d.mts +1 -0
  78. package/{types → generated/types}/src/function/CreateImmutable.d.mts +5 -4
  79. package/{types → generated/types}/src/function/EventCheck.d.mts +3 -1
  80. package/{types → generated/types}/src/function/EventObject.d.mts +2 -6
  81. package/generated/types/src/function/ForInAsync.d.mts +36 -0
  82. package/generated/types/src/function/ForInSync.d.mts +36 -0
  83. package/generated/types/src/function/ForOfAsync.d.mts +25 -0
  84. package/generated/types/src/function/ForOfSync.d.mts +36 -0
  85. package/generated/types/src/function/GetBufferFromRelativePath.d.mts +15 -0
  86. package/generated/types/src/function/GetFilesFromDir.d.mts +14 -0
  87. package/generated/types/src/function/GetMaxFilenameLength.d.mts +9 -0
  88. package/generated/types/src/function/GetModuleEsbuildPlatform.d.mts +13 -0
  89. package/{types → generated/types}/src/function/GetNamedImportAlias.d.mts +1 -1
  90. package/generated/types/src/function/GetRuntime.d.mts +2 -0
  91. package/generated/types/src/function/InstantiateAssemblyScript.d.mts +15 -0
  92. package/{types → generated/types}/src/function/IsAsync.d.mts +1 -1
  93. package/generated/types/src/function/IsInstanceOf.d.mts +25 -0
  94. package/generated/types/src/function/IsSameFile.d.mts +16 -0
  95. package/generated/types/src/function/IsStringLooksLikeAPath.d.mts +16 -0
  96. package/generated/types/src/function/IsTypeOf.d.mts +25 -0
  97. package/{types → generated/types}/src/function/LazyFactory.d.mts +9 -10
  98. package/generated/types/src/function/MonkeyPatch.d.mts +33 -0
  99. package/generated/types/src/function/NewAnimationTimeline.d.mts +24 -0
  100. package/generated/types/src/function/NewChainable.d.mts +35 -0
  101. package/generated/types/src/function/NewDynamicsExport.d.mts +49 -0
  102. package/generated/types/src/function/NewObjectWrapper.d.mts +10 -0
  103. package/generated/types/src/function/ObjectRegistrar.d.mts +17 -0
  104. package/generated/types/src/function/ParseSQLFile.d.mts +25 -0
  105. package/generated/types/src/function/PipeAsync.d.mts +19 -0
  106. package/generated/types/src/function/PipeSync.d.mts +17 -0
  107. package/generated/types/src/function/SafeImport.d.mts +21 -0
  108. package/generated/types/src/function/TemplateLiteral.d.mts +23 -0
  109. package/{types → generated/types}/src/function/Timeout.d.mts +1 -1
  110. package/{types → generated/types}/src/function/Tries.d.mts +4 -4
  111. package/{types → generated/types}/src/function/TryAsync.d.mts +2 -2
  112. package/{types → generated/types}/src/function/TryNew.d.mts +1 -1
  113. package/generated/types/src/function/TsToMjs.d.mts +27 -0
  114. package/generated/types/src/function/UniqueFSTempName.d.mts +9 -0
  115. package/generated/types/src/function/errorToMessage.d.mts +5 -0
  116. package/generated/types/src/neinth/VivthyNeinth.d.mts +202 -0
  117. package/generated/types/src/typehints/ArrayToKeys.d.mts +23 -0
  118. package/generated/types/src/typehints/AssemblyScriptExportsType.d.mts +4 -0
  119. package/generated/types/src/typehints/AssemblyScriptLoaderInstantiate.d.mts +4 -0
  120. package/generated/types/src/typehints/AutoDocASOptions.d.mts +15 -0
  121. package/generated/types/src/typehints/ChainableType.d.mts +3 -0
  122. package/generated/types/src/typehints/ComponentDecorator_Constructor.d.mts +3 -0
  123. package/generated/types/src/typehints/ConsoleAdditionalSettingType.d.mts +3 -0
  124. package/generated/types/src/typehints/Decorator.d.mts +11 -0
  125. package/generated/types/src/typehints/DecoratorMonkeyPatch.d.mts +15 -0
  126. package/{types/src/types → generated/types/src/typehints}/DevTestCB.d.mts +2 -2
  127. package/generated/types/src/typehints/EnvModeType.d.mts +4 -0
  128. package/generated/types/src/typehints/ListArg.d.mts +4 -0
  129. package/generated/types/src/typehints/MonkeyPatchedType.d.mts +1 -0
  130. package/generated/types/src/typehints/ParametersFollowingN.d.mts +13 -0
  131. package/generated/types/src/typehints/PrefixedKeysOf.d.mts +1 -0
  132. package/generated/types/src/typehints/Runtime.d.mts +4 -0
  133. package/generated/types/src/typehints/SafeImportReturnType.d.mts +1 -0
  134. package/generated/types/src/typehints/StylePropRefType.d.mts +2 -0
  135. package/generated/types/src/typehints/TemplateLiteralValueHandler.d.mts +10 -0
  136. package/generated/types/src/typehints/VLifecycleCallbacks.d.mts +6 -0
  137. package/generated/types/src/typehints/VivthCleanup.d.mts +12 -0
  138. package/generated/types/src/web/BrowserDirMapper.d.mts +70 -0
  139. package/generated/types/src/web/EnsureValidTag.d.mts +7 -0
  140. package/generated/types/src/web/ViteAddDynamics.d.mts +28 -0
  141. package/generated/types/src/web/ViteGetAllHTMLFile.d.mts +9 -0
  142. package/generated/types/src/web/WC_extendsA.d.mts +135 -0
  143. package/generated/types/src/web/WC_extendsB.d.mts +135 -0
  144. package/generated/types/src/web/bindings/WC_StyleProp_bind.d.mts +42 -0
  145. package/generated/types/src/web/bindings/WC_createElement_bind.d.mts +51 -0
  146. package/generated/types/src/web/bindings/WC_createNamedSlot.d.mts +26 -0
  147. package/generated/types/src/web/bindings/WC_litRender_bind.d.mts +20 -0
  148. package/generated/types/src/web/bindings/WC_litStyleMap.d.mts +7 -0
  149. package/generated/types/src/web/common/CSS.d.mts +23 -0
  150. package/generated/types/src/web/common/E.d.mts +41 -0
  151. package/generated/types/src/web/common/NewStyleSheetAsync.d.mts +15 -0
  152. package/generated/types/src/web/common/NewStyleSheetSync.d.mts +15 -0
  153. package/generated/types/src/web/common/WC_TagName_type.d.mts +15 -0
  154. package/generated/types/src/web/signals/IsInViewPortSignal.d.mts +52 -0
  155. package/generated/types/src/web/signals/ObserverSignal.d.mts +32 -0
  156. package/generated/types/src/web/signals/WC_litRef.d.mts +26 -0
  157. package/generated/types/src/web/signals/WC_loopedSiblingsRef.d.mts +44 -0
  158. package/generated/vivth/exports/all.mjs +233 -0
  159. package/generated/vivth/exports/neutral.mjs +193 -0
  160. package/generated/vivth/exports/node.mjs +46 -0
  161. package/package.json +78 -42
  162. package/src/bundler/CompileAS.mjs +36 -0
  163. package/src/bundler/CompileJS.mjs +98 -171
  164. package/src/bundler/CreateESPlugin.mjs +1 -1
  165. package/src/bundler/EsBundler.mjs +38 -13
  166. package/src/bundler/FSAnalyzer.mjs +253 -0
  167. package/src/bundler/FSasar.bundled.mjs +128 -0
  168. package/src/bundler/FSasar.mjs +96 -0
  169. package/src/bundler/FileSelfMapper.mjs +491 -0
  170. package/src/bundler/JSDirMapper.mjs +528 -0
  171. package/src/bundler/RunWatchThenCompileJSOnSafeExit.mjs +129 -0
  172. package/src/bundler/adds/BrowserExternals.mjs +37 -0
  173. package/src/bundler/adds/CreateTransform.mjs +36 -0
  174. package/src/bundler/adds/LastEditedUnix.mjs +12 -0
  175. package/src/bundler/adds/NodeModuleList.mjs +33 -0
  176. package/src/bundler/adds/PathFSBundles.bundled.mjs +41 -0
  177. package/src/bundler/adds/PathFSBundles.mjs +91 -0
  178. package/src/bundler/adds/PathFSDir.bundled.mjs +53 -0
  179. package/src/bundler/adds/PathFSDir.mjs +100 -0
  180. package/src/bundler/adds/PathFSFile.bundled.mjs +40 -0
  181. package/src/bundler/adds/PathFSFile.mjs +85 -0
  182. package/src/bundler/adds/ToBundledJSPlugin.mjs +116 -55
  183. package/src/bundler/adds/autoExternalize.mjs +81 -0
  184. package/src/bundler/adds/emptyBufferValue.mjs +5 -0
  185. package/src/bundler/adds/isModuleTheBundledVersion.mjs +10 -0
  186. package/src/bundler/adds/onEndEsBuildErrorLogger.mjs +34 -0
  187. package/src/bundler/adds/resolveJSDependencyPath.mjs +17 -0
  188. package/src/class/AwaitSignal.mjs +119 -0
  189. package/src/class/Console.mjs +36 -14
  190. package/src/class/DataLog.mjs +29 -0
  191. package/src/class/Derived.mjs +67 -55
  192. package/src/class/Effect.mjs +270 -84
  193. package/src/class/EnvSignal.mjs +11 -8
  194. package/src/class/EsWatcher.mjs +60 -0
  195. package/src/class/EventSignal.mjs +46 -58
  196. package/src/class/FSDirArchWatcher.mjs +246 -0
  197. package/src/class/FileSafe.mjs +72 -24
  198. package/src/class/ForEach.mjs +78 -0
  199. package/src/class/ForSignal.mjs +115 -0
  200. package/src/class/GetterSetter.mjs +40 -0
  201. package/src/class/JSONFileHandler.mjs +90 -0
  202. package/src/class/ListSignal.mjs +68 -26
  203. package/src/class/LitExp.mjs +59 -36
  204. package/src/class/ObjectSignal.mjs +225 -0
  205. package/src/class/Paths.mjs +56 -20
  206. package/src/class/Prettivy.mjs +51 -0
  207. package/src/class/QChannel.mjs +48 -26
  208. package/src/class/SafeExit.mjs +156 -99
  209. package/src/class/Setup.mjs +28 -16
  210. package/src/class/Signal.mjs +50 -27
  211. package/src/class/SignalCollection.mjs +130 -0
  212. package/src/class/WalkThrough.mjs +6 -23
  213. package/src/class/{WorkerMainThreadBundled.mjs → WorkerMainThread.bundled.mjs} +56 -77
  214. package/src/class/WorkerMainThread.mjs +98 -94
  215. package/src/class/WorkerThread.mjs +24 -17
  216. package/src/common/Base64URL.mjs +6 -3
  217. package/src/common/Base64URLFromFile.mjs +17 -4
  218. package/src/common/BundledV.bundled.mjs +7 -0
  219. package/src/common/BundledV.mjs +45 -0
  220. package/src/common/CreateStringID.mjs +8 -7
  221. package/src/common/EnvMode.mjs +172 -0
  222. package/src/common/FactoryKey.mjs +11 -0
  223. package/src/common/Preferrence.mjs +27 -0
  224. package/src/common/Trace.mjs +1 -1
  225. package/src/common/TracePath.mjs +53 -3
  226. package/src/common/VivthUnBundledCodeBlock.mjs +8 -0
  227. package/src/doc/JSautoDOC.mjs +673 -284
  228. package/src/doc/cleanPreserveTypedef.mjs +27 -0
  229. package/src/doc/correctBeforeParse.mjs +57 -48
  230. package/src/doc/{parsedFile.mjs → parsedFileForDOC.mjs} +133 -120
  231. package/src/function/ClearRequireCache.mjs +33 -0
  232. package/src/function/CreateImmutable.mjs +40 -37
  233. package/src/function/EventCheck.mjs +5 -2
  234. package/src/function/EventObject.mjs +2 -6
  235. package/src/function/ForInAsync.mjs +76 -0
  236. package/src/function/ForInSync.mjs +87 -0
  237. package/src/function/ForOfAsync.mjs +61 -0
  238. package/src/function/ForOfSync.mjs +70 -0
  239. package/src/function/GetBufferFromRelativePath.mjs +25 -0
  240. package/src/function/GetFilesFromDir.mjs +49 -0
  241. package/src/function/GetMaxFilenameLength.mjs +32 -0
  242. package/src/function/GetModuleEsbuildPlatform.mjs +118 -0
  243. package/src/function/GetNamedImportAlias.mjs +2 -2
  244. package/src/function/GetRuntime.mjs +10 -14
  245. package/src/function/InstantiateAssemblyScript.mjs +22 -0
  246. package/src/function/IsAsync.mjs +1 -1
  247. package/src/function/IsInstanceOf.mjs +29 -0
  248. package/src/function/IsSameFile.mjs +41 -0
  249. package/src/function/IsStringLooksLikeAPath.mjs +20 -0
  250. package/src/function/IsTypeOf.mjs +27 -0
  251. package/src/function/IsTypeOf.mts +31 -0
  252. package/src/function/LazyFactory.mjs +25 -23
  253. package/src/function/MonkeyPatch.mjs +38 -0
  254. package/src/function/NewAnimationTimeline.mjs +55 -0
  255. package/src/function/NewChainable.mjs +69 -0
  256. package/src/function/NewDynamicsExport.mjs +312 -0
  257. package/src/function/NewObjectWrapper.mjs +14 -0
  258. package/src/function/ObjectRegistrar.mjs +23 -0
  259. package/src/function/ParseSQLFile.mjs +129 -0
  260. package/src/function/PipeAsync.mjs +30 -0
  261. package/src/function/PipeSync.mjs +28 -0
  262. package/src/function/SafeImport.mjs +77 -0
  263. package/src/function/TemplateLiteral.mjs +42 -23
  264. package/src/function/Timeout.mjs +4 -4
  265. package/src/function/Tries.mjs +22 -16
  266. package/src/function/TryAsync.mjs +3 -2
  267. package/src/function/TryNew.mjs +1 -1
  268. package/src/function/TsToMjs.mjs +184 -21
  269. package/src/function/UniqueFSTempName.mjs +33 -0
  270. package/src/function/errorToMessage.mjs +21 -0
  271. package/src/function/resolveErrorArray.mjs +15 -1
  272. package/src/neinth/VivthyNeinth.mjs +487 -0
  273. package/src/typehints/ArrayToKeys.mjs +17 -0
  274. package/src/typehints/ArrayToKeys.mts +31 -0
  275. package/src/typehints/AssemblyScriptExportsType.mjs +7 -0
  276. package/src/typehints/AssemblyScriptLoaderInstantiate.mjs +7 -0
  277. package/src/typehints/AutoDocASOptions.mjs +14 -0
  278. package/src/typehints/ChainableType.mjs +11 -0
  279. package/src/typehints/ComponentDecorator_Constructor.mjs +10 -0
  280. package/src/typehints/ConsoleAdditionalSettingType.mjs +6 -0
  281. package/src/typehints/Decorator.mjs +9 -0
  282. package/src/typehints/Decorator.mts +31 -0
  283. package/src/typehints/DecoratorMonkeyPatch.mjs +10 -0
  284. package/src/typehints/DecoratorMonkeyPatch.mts +43 -0
  285. package/src/{types → typehints}/DevTestCB.mjs +2 -2
  286. package/src/typehints/EnvModeType.mjs +6 -0
  287. package/src/{types → typehints}/ListArg.mjs +1 -1
  288. package/src/{types → typehints}/LitExpResultType.mjs +1 -1
  289. package/src/typehints/MonkeyPatchedType.mjs +13 -0
  290. package/src/typehints/ParametersFollowingN.mjs +8 -0
  291. package/src/typehints/ParametersFollowingN.mts +17 -0
  292. package/src/typehints/PrefixedKeysOf.mjs +9 -0
  293. package/src/typehints/Runtime.mjs +6 -0
  294. package/src/typehints/SafeImportReturnType.mjs +6 -0
  295. package/src/typehints/StylePropRefType.mjs +12 -0
  296. package/src/typehints/TemplateLiteralValueHandler.mjs +14 -0
  297. package/src/typehints/VLifecycleCallbacks.mjs +10 -0
  298. package/src/typehints/VivthCleanup.mjs +14 -0
  299. package/src/web/BrowserDirMapper.mjs +255 -0
  300. package/src/web/EnsureValidTag.mjs +5 -0
  301. package/src/web/EnsureValidTag.mts +10 -0
  302. package/src/web/ViteAddDynamics.mjs +34 -0
  303. package/src/web/ViteGetAllHTMLFile.mjs +97 -0
  304. package/src/web/WC_extendsA.mjs +330 -0
  305. package/src/web/WC_extendsB.mjs +332 -0
  306. package/src/web/bindings/WC_StyleProp_bind.mjs +70 -0
  307. package/src/web/bindings/WC_createElement_bind.mjs +95 -0
  308. package/src/web/bindings/WC_createNamedSlot.mjs +29 -0
  309. package/src/web/bindings/WC_litRender_bind.mjs +26 -0
  310. package/src/web/bindings/WC_litStyleMap.mjs +14 -0
  311. package/src/web/common/CSS.mjs +35 -0
  312. package/src/web/common/E.mjs +126 -0
  313. package/src/web/common/NewStyleSheetAsync.mjs +21 -0
  314. package/src/web/common/NewStyleSheetSync.mjs +21 -0
  315. package/src/web/common/WC_TagName_type.mjs +10 -0
  316. package/src/web/common/WC_TagName_type.mts +36 -0
  317. package/src/web/signals/IsInViewPortSignal.mjs +140 -0
  318. package/src/web/signals/ObserverSignal.mjs +93 -0
  319. package/src/web/signals/WC_litRef.mjs +61 -0
  320. package/src/web/signals/WC_loopedSiblingsRef.mjs +100 -0
  321. package/tsconfig.json +44 -41
  322. package/index.mjs +0 -91
  323. package/src/bundler/FSInline.mjs +0 -67
  324. package/src/bundler/FSInlineAnalyzer.mjs +0 -228
  325. package/src/bundler/FSInlineBundled.mjs +0 -38
  326. package/src/bundler/adds/externals.mjs +0 -8
  327. package/src/class/ListDerived.mjs +0 -42
  328. package/src/common/Dev.mjs +0 -142
  329. package/src/common/DevBundled.mjs +0 -5
  330. package/src/common/lazie.mjs +0 -3
  331. package/src/types/IsListSignal.mjs +0 -6
  332. package/src/types/Runtime.mjs +0 -6
  333. package/src/types/VivthDevCodeBlockStringType.mjs +0 -6
  334. package/types/index.d.mts +0 -58
  335. package/types/src/bundler/CompileJS.d.mts +0 -119
  336. package/types/src/bundler/FSInline.d.mts +0 -50
  337. package/types/src/bundler/FSInlineAnalyzer.d.mts +0 -37
  338. package/types/src/bundler/FSInlineBundled.d.mts +0 -22
  339. package/types/src/bundler/adds/externals.d.mts +0 -1
  340. package/types/src/class/Console.d.mts +0 -71
  341. package/types/src/class/Derived.d.mts +0 -98
  342. package/types/src/class/Effect.d.mts +0 -216
  343. package/types/src/class/ListDerived.d.mts +0 -38
  344. package/types/src/class/Paths.d.mts +0 -69
  345. package/types/src/class/SafeExit.d.mts +0 -103
  346. package/types/src/class/WorkerMainThreadBundled.d.mts +0 -83
  347. package/types/src/common/Base64URLFromFile.d.mts +0 -16
  348. package/types/src/common/Dev.d.mts +0 -68
  349. package/types/src/common/DevBundled.d.mts +0 -3
  350. package/types/src/common/lazie.d.mts +0 -1
  351. package/types/src/doc/JSautoDOC.d.mts +0 -83
  352. package/types/src/function/GetRuntime.d.mts +0 -2
  353. package/types/src/function/TemplateLiteral.d.mts +0 -22
  354. package/types/src/function/TsToMjs.d.mts +0 -23
  355. package/types/src/types/IsListSignal.d.mts +0 -4
  356. package/types/src/types/ListArg.d.mts +0 -4
  357. package/types/src/types/Runtime.d.mts +0 -4
  358. package/types/src/types/VivthDevCodeBlockStringType.d.mts +0 -4
  359. /package/{types → generated/types}/src/bundler/adds/pluginVivthBundle.d.mts +0 -0
  360. /package/{types → generated/types}/src/class/WorkerResult.d.mts +0 -0
  361. /package/{types → generated/types}/src/common/EventNameSpace.d.mts +0 -0
  362. /package/{types → generated/types}/src/common/eventObjects.d.mts +0 -0
  363. /package/{types → generated/types}/src/common/keys.d.mts +0 -0
  364. /package/{types → generated/types}/src/doc/correctBeforeParse.d.mts +0 -0
  365. /package/{types → generated/types}/src/function/TrySync.d.mts +0 -0
  366. /package/{types → generated/types}/src/function/resolveErrorArray.d.mts +0 -0
  367. /package/{types/src/types → generated/types/src/typehints}/AnyButUndefined.d.mts +0 -0
  368. /package/{types/src/types → generated/types/src/typehints}/ExtnameType.d.mts +0 -0
  369. /package/{types/src/types → generated/types/src/typehints}/LitExpKeyType.d.mts +0 -0
  370. /package/{types/src/types → generated/types/src/typehints}/LitExpResultType.d.mts +0 -0
  371. /package/{types/src/types → generated/types/src/typehints}/MutationType.d.mts +0 -0
  372. /package/{types/src/types → generated/types/src/typehints}/QCBFIFOReturn.d.mts +0 -0
  373. /package/{types/src/types → generated/types/src/typehints}/QCBReturn.d.mts +0 -0
  374. /package/src/{types → typehints}/AnyButUndefined.mjs +0 -0
  375. /package/src/{types → typehints}/ExtnameType.mjs +0 -0
  376. /package/src/{types → typehints}/LitExpKeyType.mjs +0 -0
  377. /package/src/{types → typehints}/MutationType.mjs +0 -0
  378. /package/src/{types → typehints}/QCBFIFOReturn.mjs +0 -0
  379. /package/src/{types → typehints}/QCBReturn.mjs +0 -0
@@ -0,0 +1,70 @@
1
+ // @ts-check
2
+
3
+ /**
4
+ * @description
5
+ * - type helper to create ref custom style `property`;
6
+ */
7
+ export class WC_StyleProp_bind {
8
+ /**
9
+ * @description
10
+ * @param {HTMLElement} element
11
+ * @param {string} name
12
+ * - automatically prefixed with `--`;
13
+ * @param {Object} options
14
+ * @param {boolean} options.isGlobal
15
+ * - `false`: target scoped `property` on that component, and that component instance alone;
16
+ * >- will not even bleed to other instance with same constructor;
17
+ * - `true`: target style variable defined in global scope(loaded on document `styles` | `link[rel="stylesheet"]`);
18
+ * @example
19
+ * @example
20
+ * // webcomponent context via `WC_extends`
21
+ * #myStyle = new WC_StyleProp_bind(this, 'my-theme', {isGlobal:false});
22
+ * //
23
+ */
24
+ constructor(element, name, { isGlobal }) {
25
+ if (!name.startsWith('--')) {
26
+ name = `--${name}`;
27
+ }
28
+ this.name = name;
29
+ if (isGlobal) {
30
+ this.#style = document.documentElement.style;
31
+ } else {
32
+ this.#style = element.style;
33
+ }
34
+ }
35
+ /**
36
+ * @type {string}
37
+ */
38
+ name;
39
+ /**
40
+ * @type {CSSStyleDeclaration}
41
+ */
42
+ #style;
43
+ /**
44
+ * @param {import('../../typehints/ParametersFollowingN.mts').ParametersFollowingN<CSSStyleDeclaration["setProperty"], 1>} args
45
+ */
46
+ set = (...args) => {
47
+ if (!this.name) {
48
+ return;
49
+ }
50
+ this.#style.setProperty(this.name, ...args);
51
+ };
52
+ /**
53
+ * @returns {string|void}
54
+ */
55
+ get value() {
56
+ if (!this.name) {
57
+ return;
58
+ }
59
+ return this.#style.getPropertyValue(this.name);
60
+ }
61
+ /**
62
+ * @returns {string|void}
63
+ */
64
+ get priority() {
65
+ if (!this.name) {
66
+ return;
67
+ }
68
+ return this.#style.getPropertyPriority(this.name);
69
+ }
70
+ }
@@ -0,0 +1,95 @@
1
+ // @ts-check
2
+
3
+ import { render } from 'lit-html';
4
+
5
+ import { ForInSync } from '../../function/ForInSync.mjs';
6
+ import { ForOfSync } from '../../function/ForOfSync.mjs';
7
+
8
+ /**
9
+ * @import {ArrayToKeys} from '../../typehints/ArrayToKeys.mjs'
10
+ * @import {TemplateResult, RenderOptions} from 'lit-html'
11
+ */
12
+ /**
13
+ * @typedef {typeof import('../../function/IsTypeOf.mjs').TypeMap} TypeMap
14
+ */
15
+ /**
16
+ * @param {readonly string[]} namedSlots
17
+ * @param {Record<string, string>|undefined} childrenDataArgsPlaceholder
18
+ * @returns {any}
19
+ */
20
+ const getChildrenData = (namedSlots, childrenDataArgsPlaceholder) => {
21
+ if (!childrenDataArgsPlaceholder) {
22
+ childrenDataArgsPlaceholder = {};
23
+ ForOfSync(namedSlots, (name) => {
24
+ // @ts-expect-error
25
+ childrenDataArgsPlaceholder[name] = name;
26
+ });
27
+ }
28
+ return childrenDataArgsPlaceholder;
29
+ };
30
+ /**
31
+ * @description
32
+ * - typesafe factory generator for creating element of `WC_extendsA`/`WC_extendsB` class;
33
+ * - this function is returned by static method `.define`;
34
+ * >- bind it with static property;
35
+ * - uses `lit-html` under the hood;
36
+ * @template {(new (...args: any[]) => HTMLElement) & {
37
+ * tagName: string;
38
+ * extendIs: string;
39
+ * observedAttributes?: readonly string[];
40
+ * namedSlots?: readonly string[];
41
+ * props?: Record<string, keyof TypeMap|(new (...args:any[])=>any)>;
42
+ * }} BASE_CONSTRUCTOR
43
+ * @param {BASE_CONSTRUCTOR} arg0
44
+ * @returns {(
45
+ * param?:{
46
+ * attrs?:BASE_CONSTRUCTOR['observedAttributes'] extends readonly string[]
47
+ * ? Partial<
48
+ * Record<ArrayToKeys<BASE_CONSTRUCTOR['observedAttributes']>, string>
49
+ * >
50
+ * : undefined;
51
+ * props?: {[K in keyof NonNullable<BASE_CONSTRUCTOR["props"]>]:
52
+ * NonNullable<BASE_CONSTRUCTOR["props"]>[K] extends keyof TypeMap
53
+ * ? TypeMap[NonNullable<BASE_CONSTRUCTOR["props"]>[K]]
54
+ * : InstanceType<NonNullable<BASE_CONSTRUCTOR["props"]>[K]>
55
+ * };
56
+ * children?:(slotName:Record<ArrayToKeys<BASE_CONSTRUCTOR['namedSlots']>, string>)=>TemplateResult;
57
+ * renderOptions?:RenderOptions;
58
+ * },
59
+ * )=>InstanceType<BASE_CONSTRUCTOR>}
60
+ * @example
61
+ * // webcomponent context via `WC_extends`
62
+ * static createElement = this.define(...args);
63
+ * //
64
+ */
65
+ export function WC_createElement_bind({ tagName, extendIs, namedSlots = [] }) {
66
+ /**
67
+ * @type {Record<string, string>|undefined}
68
+ */
69
+ let childrenDataArgsPlaceholder;
70
+ return ({ attrs, children, renderOptions, props } = {}) => {
71
+ /**
72
+ * @type {InstanceType<BASE_CONSTRUCTOR>}
73
+ */
74
+ let element;
75
+ if (!extendIs) {
76
+ // @ts-expect-error
77
+ element = document.createElement(tagName);
78
+ } else {
79
+ // @ts-expect-error
80
+ element = document.createElement(tagName, {
81
+ is: extendIs,
82
+ });
83
+ }
84
+ if (attrs) {
85
+ ForInSync(attrs, (key, value) => {
86
+ element.setAttribute(key.toString(), value ?? '');
87
+ });
88
+ }
89
+ if (children) {
90
+ const trueChildrenData = children(getChildrenData(namedSlots, childrenDataArgsPlaceholder));
91
+ render(trueChildrenData, element, renderOptions);
92
+ }
93
+ return Object.assign(element, { props });
94
+ };
95
+ }
@@ -0,0 +1,29 @@
1
+ // @ts-check
2
+
3
+ import { html } from 'lit-html/static.js';
4
+
5
+ /**
6
+ * @import {TemplateResult} from 'lit-html'
7
+ * @import {ArrayToKeys} from '../../typehints/ArrayToKeys.mts'
8
+ */
9
+
10
+ /**
11
+ * @description
12
+ * - typesafe factory generator for creating slot element of `WC_extendsA`/`WC_extendsB` class;
13
+ * @template {{
14
+ * namedSlots?: readonly string[]
15
+ * }} NAMEDSLOTS
16
+ * @param {ArrayToKeys<NAMEDSLOTS["namedSlots"] extends readonly string[]
17
+ * ? NAMEDSLOTS["namedSlots"]
18
+ * : never
19
+ * >} name
20
+ * @param {TemplateResult} [defaultNode]
21
+ * @returns {TemplateResult}
22
+ * @example
23
+ * // webcomponent context via `WC_extends`.callback props
24
+ * this.createNamedSlot(...args);
25
+ * //
26
+ */
27
+ export function WC_createNamedSlot(name, defaultNode = html``) {
28
+ return html`<slot name="${name}">${defaultNode}</slot>`;
29
+ }
@@ -0,0 +1,26 @@
1
+ // @ts-check
2
+
3
+ import { render } from 'lit-html';
4
+
5
+ /**
6
+ * @description
7
+ * - factory to create simplified render function by omiting args[1++];
8
+ * @param {import('../../typehints/ParametersFollowingN.mts').ParametersFollowingN<typeof render, 1>} args
9
+ * @returns {(template: import('lit-html').TemplateResult)=>import('lit-html').RootPart}
10
+ * @example
11
+ * // webcomponent context via `WC_extends`
12
+ * constructor(){
13
+ * super();
14
+ * this.#root = this.attachShadow({ mode: 'closed' });
15
+ * this.#render = WC_litRender_bind(this.#root, this);
16
+ * }
17
+ * #root;
18
+ * #render;
19
+ * #something(){
20
+ * this.#render(html`<div></div>`); // <- args[1++] are omitted
21
+ * }
22
+ * ///
23
+ */
24
+ export function WC_litRender_bind(...args) {
25
+ return (template) => render(template, ...args);
26
+ }
@@ -0,0 +1,14 @@
1
+ // @ts-check
2
+
3
+ import { styleMap } from 'lit-html/directives/style-map.js';
4
+
5
+ /**
6
+ * @description
7
+ * - type helper for `import { styleMap } from 'lit-html/directives/style-map.js';`, by typehinting the properties;
8
+ * @param {Partial<CSSStyleProperties>} properties
9
+ * @returns {import('lit-html/directive.js').DirectiveResult}
10
+ */
11
+ export function WC_litStyleMap(properties) {
12
+ // @ts-expect-error
13
+ return styleMap(properties);
14
+ }
@@ -0,0 +1,35 @@
1
+ // @ts-check
2
+
3
+ import { TemplateLiteral } from '../../function/TemplateLiteral.mjs';
4
+ import { NewStyleSheetSync } from './NewStyleSheetSync.mjs';
5
+
6
+ /**
7
+ * @description
8
+ * - generate `CSSStyleSheet` with template literal;
9
+ * @param {TemplateStringsArray} strings
10
+ * @param {...string} values
11
+ * @returns {CSSStyleSheet}
12
+ * @example
13
+ * import { CSS as css } from 'vivth/neutral';
14
+ * // webcomponent context via `WC_extends`
15
+ * static CSS = css`
16
+ * :host{
17
+ * --my-theme: salmon;
18
+ * background-color: var(--my-theme);
19
+ * }
20
+ * `
21
+ * constructor(){
22
+ * super();
23
+ * const root = this.attachShadow({mode:'closed'});
24
+ * root.adoptedStyleSheets= [MyClass.CSS];
25
+ * }
26
+ * //
27
+ */
28
+ export function CSS(strings, ...values) {
29
+ /**
30
+ * @type {ReturnType<typeof TemplateLiteral<string, string>>}
31
+ */
32
+ const handler = TemplateLiteral(({ currentValue }) => currentValue);
33
+ const string = handler(strings, ...values);
34
+ return NewStyleSheetSync(string);
35
+ }
@@ -0,0 +1,126 @@
1
+ // @ts-check
2
+
3
+ import { Effect } from '../../class/Effect.mjs';
4
+ import { Signal } from '../../class/Signal.mjs';
5
+ import { WalkThrough } from '../../class/WalkThrough.mjs';
6
+ import { ForInSync } from '../../function/ForInSync.mjs';
7
+ import { IsTypeOf } from '../../function/IsTypeOf.mts';
8
+
9
+ /**
10
+ * @param {Element} element
11
+ * @param {ChildNode[]} childNodes
12
+ * @returns {void}
13
+ */
14
+ const modifyChild = (element, childNodes) => {
15
+ const len = Math.max(element.childNodes.length, childNodes.length);
16
+ /**
17
+ * @type {ChildNode[]}
18
+ */
19
+ const shouldBeRemoved = [];
20
+ for (let i = 0; i < len; i++) {
21
+ const currentChildNode = element.childNodes[i];
22
+ const shouldBeChildNode = childNodes[i];
23
+ if (currentChildNode) {
24
+ if (shouldBeChildNode) {
25
+ if (currentChildNode !== shouldBeChildNode) {
26
+ currentChildNode.replaceWith(shouldBeChildNode);
27
+ }
28
+ } else {
29
+ shouldBeRemoved.push(currentChildNode);
30
+ }
31
+ } else {
32
+ if (shouldBeChildNode) {
33
+ element.append(shouldBeChildNode);
34
+ } else {
35
+ break;
36
+ }
37
+ }
38
+ }
39
+ for (let i = 0; i < shouldBeRemoved.length; i++) {
40
+ shouldBeRemoved[i]?.remove();
41
+ }
42
+ };
43
+
44
+ /**
45
+ * @description
46
+ * - helper function to create element;
47
+ * @template {keyof HTMLElementTagNameMap} K
48
+ * @template {Partial<HTMLElementTagNameMap[K]> & Record<string, any>} RR
49
+ * @param {K} tagName
50
+ * @param {(
51
+ * & Omit<Record<string, string|Signal<string>>, 'style'|'class'>
52
+ * & { style?: string, class?: string }
53
+ * )} [attrs]
54
+ * @param {RR} [props]
55
+ * @param {ChildNode[]|Signal<ChildNode[]>} [childNodes]
56
+ * @returns {HTMLElementTagNameMap[K]
57
+ * & RR
58
+ * & {
59
+ * onDisconnected:()=>void;
60
+ * }
61
+ * }
62
+ * @example
63
+ * const text = new Text('hello');
64
+ * const div = E('div',{
65
+ * class: 'p-1 m-1',
66
+ * id: 'my-div',
67
+ * },
68
+ * {
69
+ * onclick(e){
70
+ * console.log(e);
71
+ * },
72
+ * },
73
+ * [text],
74
+ * )
75
+ * // fine grain modify
76
+ * text.nodeValue = 'hello world';
77
+ */
78
+ export function E(
79
+ tagName,
80
+ attrs = {},
81
+ // @ts-expect-error
82
+ props = {},
83
+ childNodes = [],
84
+ ) {
85
+ const element = document.createElement(tagName);
86
+ /**
87
+ * @type {Set<()=>any>}
88
+ */
89
+ const setOFDisconnected = new Set();
90
+ ForInSync(attrs, (key, value) => {
91
+ if (IsTypeOf(value, 'string')) {
92
+ element.setAttribute(key, value);
93
+ } else {
94
+ const effect = new Effect(async ({ subscribe }) => {
95
+ element.setAttribute(key, subscribe(value).value);
96
+ });
97
+ value.subscribers.setOf.add(effect);
98
+ setOFDisconnected.add(() => {
99
+ value.vivthCleanup();
100
+ effect.vivthCleanup();
101
+ });
102
+ }
103
+ });
104
+ ForInSync(props, (key, value) => {
105
+ // @ts-expect-error
106
+ element[key] = value;
107
+ });
108
+ if (Array.isArray(childNodes)) {
109
+ element.append(...childNodes);
110
+ } else {
111
+ const effect = new Effect(async ({ subscribe }) => {
112
+ modifyChild(element, subscribe(childNodes).value);
113
+ });
114
+ childNodes.subscribers.setOf.add(effect);
115
+ setOFDisconnected.add(effect.vivthCleanup);
116
+ }
117
+ return Object.assign(element, {
118
+ ...props,
119
+ onDisconnected: () => {
120
+ WalkThrough.set(setOFDisconnected, (cb) => {
121
+ cb();
122
+ });
123
+ element.remove();
124
+ },
125
+ });
126
+ }
@@ -0,0 +1,21 @@
1
+ // @ts-check
2
+
3
+ /**
4
+ * @description
5
+ * - function helper to asynchronously `CSSStyleSheet`;
6
+ * >- './main.css';
7
+ * ```css
8
+ * :host{
9
+ * background-color: red;
10
+ * }
11
+ * ```
12
+ * - internally used for `Dynamics`;
13
+ * @param {string} string
14
+ * @param {ConstructorParameters<typeof CSSStyleSheet>} arg1
15
+ * @returns {Promise<CSSStyleSheet>}
16
+ */
17
+ export async function NewStyleSheetAsync(string, ...arg1) {
18
+ const sheet = new CSSStyleSheet(...arg1);
19
+ await sheet.replace(string);
20
+ return sheet;
21
+ }
@@ -0,0 +1,21 @@
1
+ // @ts-check
2
+
3
+ /**
4
+ * @description
5
+ * - function helper to synchronously `CSSStyleSheet`;
6
+ * >- './main.css';
7
+ * ```css
8
+ * :host{
9
+ * background-color: red;
10
+ * }
11
+ * ```
12
+ * - internally used for `CSS`;
13
+ * @param {string} string
14
+ * @param {ConstructorParameters<typeof CSSStyleSheet>} arg1
15
+ * @returns {CSSStyleSheet}
16
+ */
17
+ export function NewStyleSheetSync(string, ...arg1) {
18
+ const sheet = new CSSStyleSheet(...arg1);
19
+ sheet.replaceSync(string);
20
+ return sheet;
21
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @preserve
3
+ * @description
4
+ * Validates whether a string follows the strict custom-element layout:
5
+ * - Must contain a hyphen (-)
6
+ * - No spaces allowed anywhere
7
+ * - Must be strictly lowercase
8
+ * @template {string} TAG
9
+ * @typedef {import('./WC_TagName_type.mts').WC_TagName_type<TAG>} WC_TagName_type
10
+ */
@@ -0,0 +1,36 @@
1
+ // types.mts
2
+
3
+ /**
4
+ * Checks if a string segment contains invalid characters (Spaces, Uppercase, or Symbols)
5
+ */
6
+ export type IsValidSegment<S extends string> = S extends `${infer Char}${infer Rest}`
7
+ ? Char extends ' ' | '_' | '/' | '\\' | '.' | ',' | '?' | '!' // Block spaces and common separators
8
+ ? false
9
+ : Char extends Uppercase<Char> // Enforce strict lowercase (Blocks A-Z and symbols that don't have case)
10
+ ? Char extends Lowercase<Char>
11
+ ? true // It's a number or valid special character allowed by the browser
12
+ : false // It's an uppercase letter! Block it.
13
+ : IsValidSegment<Rest> // Continue checking character by character
14
+ : true;
15
+
16
+ /**
17
+ * @preserve
18
+ * @description
19
+ * Validates whether a string follows the strict custom-element layout:
20
+ * - Must contain a hyphen (-)
21
+ * - No spaces allowed anywhere
22
+ * - Must be strictly lowercase
23
+ * @template {string} TAG
24
+ * @[blank]typedef {import('./WC_TagName_type.mts').WC_TagName_type<TAG>} WC_TagName_type
25
+ */
26
+ export type WC_TagName_type<T extends string> = T extends `${infer Prefix}-${infer Suffix}`
27
+ ? Prefix extends ''
28
+ ? 'ERROR: Custom element tag names cannot start with a hyphen.'
29
+ : Suffix extends ''
30
+ ? 'ERROR: Custom element tag names cannot end with a hyphen.'
31
+ : IsValidSegment<Prefix> extends false
32
+ ? 'ERROR: Tag contains spaces, uppercase letters, or invalid characters in the prefix.'
33
+ : IsValidSegment<Suffix> extends false
34
+ ? 'ERROR: Tag contains spaces, uppercase letters, or invalid characters in the suffix.'
35
+ : T // ✅ 100% Valid Custom Element tag structure!
36
+ : 'ERROR: Web Component tag names MUST contain a hyphen (-) character.';
@@ -0,0 +1,140 @@
1
+ // @ts-check
2
+
3
+ import { Console } from '../../class/Console.mjs';
4
+ import { QChannel } from '../../class/QChannel.mjs';
5
+ import { Signal } from '../../class/Signal.mjs';
6
+ import { IsInstanceOf } from '../../function/IsInstanceOf.mjs';
7
+ import { LazyFactory } from '../../function/LazyFactory.mjs';
8
+
9
+ /**
10
+ * @typedef {import('../../typehints/VivthCleanup.mjs').VivthCleanup} VivthCleanup
11
+ */
12
+
13
+ /**
14
+ * @description
15
+ * - signal helper to check whether element is in viewport;
16
+ * @implements {VivthCleanup}
17
+ * @extends {Signal<boolean>}
18
+ */
19
+ export class IsInViewPortSignal extends Signal {
20
+ /**
21
+ * @description
22
+ * @override
23
+ * - cleanup callback;
24
+ */
25
+ vivthCleanup = async () => {
26
+ IsInViewPortSignal.#intersectionObserver.unobserve(this.#element);
27
+ this.remove.ref();
28
+ IsInViewPortSignal.#mapped.delete(this.#element);
29
+ };
30
+ /**
31
+ * @description
32
+ * @param {Element} element
33
+ */
34
+ constructor(element) {
35
+ super(IsInViewPortSignal.#isInViewport(element));
36
+ IsInViewPortSignal.#mapped.set(element, this);
37
+ this.#element = element;
38
+ IsInViewPortSignal.#intersectionObserver.observe(element);
39
+ }
40
+ /**
41
+ * @type {Element}
42
+ */
43
+ #element;
44
+ /**
45
+ * @type {WeakMap<Element, Signal<boolean>>}
46
+ */
47
+ static #mapped = new WeakMap();
48
+ /**
49
+ * @type {IntersectionObserver|undefined}
50
+ */
51
+ static #intersectionObserver_;
52
+ static #q = LazyFactory(() => new QChannel('IsInViewPort'));
53
+ static get #intersectionObserver() {
54
+ if (!IsInViewPortSignal.#intersectionObserver_) {
55
+ IsInViewPortSignal.#intersectionObserver_ = new IntersectionObserver(
56
+ IsInViewPortSignal.#intersectionObserverCallback,
57
+ IsInViewPortSignal.#intersectionObserverInit,
58
+ );
59
+ }
60
+ return IsInViewPortSignal.#intersectionObserver_;
61
+ }
62
+ /**
63
+ * @type {IntersectionObserverInit}
64
+ */
65
+ static #intersectionObserverInit = {
66
+ root: null,
67
+ rootMargin: '0px',
68
+ threshold: 0,
69
+ };
70
+ /**
71
+ * @type {IntersectionObserverCallback}
72
+ */
73
+ static #intersectionObserverCallback = (entries) => {
74
+ for (let i = 0; i < entries.length; i++) {
75
+ const entry = entries[i];
76
+ if (!entry) {
77
+ continue;
78
+ }
79
+ const target = entry.target;
80
+ if (!IsInstanceOf(target, Element)) {
81
+ continue;
82
+ }
83
+ IsInViewPortSignal.#q.callback(target, async ({ isLastOnQ }) => {
84
+ await IsInViewPortSignal.#qCB(isLastOnQ, target, entry);
85
+ });
86
+ }
87
+ };
88
+ /**
89
+ * @param {()=>boolean} isLastOnQ
90
+ * @param {Element} target
91
+ * @param {IntersectionObserverEntry} entry
92
+ * @returns {Promise<void>}
93
+ */
94
+ static #qCB = async (isLastOnQ, target, entry) => {
95
+ if (!isLastOnQ()) {
96
+ return;
97
+ }
98
+ const signal = IsInViewPortSignal.#mapped.get(target);
99
+ if (!signal || !IsInstanceOf(signal, IsInViewPortSignal)) {
100
+ return;
101
+ }
102
+ signal.#setSuperValue(entry.isIntersecting);
103
+ };
104
+ /**
105
+ * @param {Element} element
106
+ * @returns {boolean}
107
+ */
108
+ static #isInViewport(element) {
109
+ const rect = element.getBoundingClientRect();
110
+ return (
111
+ rect.top < window.innerHeight &&
112
+ rect.bottom > 0 &&
113
+ rect.left < window.innerWidth &&
114
+ rect.right > 0
115
+ );
116
+ }
117
+ /**
118
+ *
119
+ * @param {boolean} newValue
120
+ */
121
+ #setSuperValue(newValue) {
122
+ super.value = newValue;
123
+ }
124
+ /**
125
+ * @description
126
+ * - `Signal.value` reference to check if element is in viewport;
127
+ * @returns {boolean}
128
+ * @override
129
+ */
130
+ get value() {
131
+ return super.value;
132
+ }
133
+ /**
134
+ * @returns {boolean}
135
+ * @override
136
+ */
137
+ set value(_) {
138
+ Console.error('you cannot manually set value of IsInViewPortSignal');
139
+ }
140
+ }