@mindexec/cli 0.2.339 → 0.2.341

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 (265) hide show
  1. package/codex-runtime.js +255 -31
  2. package/package.json +1 -1
  3. package/remote-hub.js +80 -2
  4. package/scripts/remote-fast-live-rate-smoke.mjs +19 -3
  5. package/scripts/remote-fast-mdm-browser-smoke.mjs +28 -2
  6. package/scripts/remote-hub-smoke.mjs +32 -2
  7. package/server.js +1304 -21
  8. package/wwwroot/_headers +50 -17
  9. package/wwwroot/assets/AdminDashboardPage-B2vz2Px9.css +1 -0
  10. package/wwwroot/assets/AdminDashboardPage-DpUfWSRs.js +1 -0
  11. package/wwwroot/assets/AppSidebar-CBqvLonm.js +1 -0
  12. package/wwwroot/assets/AuthPages-Cd5fYgU0.js +1 -0
  13. package/wwwroot/assets/AuthPages-DFGWKWuB.css +1 -0
  14. package/wwwroot/assets/CodePage-Bncc352E.css +1 -0
  15. package/wwwroot/assets/CodePage-D9-cUf4A.js +87 -0
  16. package/wwwroot/assets/CompanyCorePage-ChBnq1ve.css +1 -0
  17. package/wwwroot/assets/CompanyCorePage-D0byTW77.js +13 -0
  18. package/wwwroot/assets/ExecutionModePage-DtMDlqYc.js +18 -0
  19. package/wwwroot/assets/ExecutionModePage-TLuld9l3.css +1 -0
  20. package/wwwroot/assets/LaunchLeadCapture-CiRI1shz.css +1 -0
  21. package/wwwroot/assets/LaunchLeadCapture-CqeoHfvb.js +1 -0
  22. package/wwwroot/assets/MarketingHome-DPzaYzA_.css +1 -0
  23. package/wwwroot/assets/MarketingHome-DbWyEAya.js +1 -0
  24. package/wwwroot/assets/MindCanvas-CME1KpAo.js +48 -0
  25. package/wwwroot/assets/MindCanvas-DiQlUDJu.css +1 -0
  26. package/wwwroot/assets/PlanMasterPage-CJ36rep-.css +1 -0
  27. package/wwwroot/assets/PlanMasterPage-mhlZZK19.js +4 -0
  28. package/wwwroot/assets/PricingPage-Cg_0i_ZR.css +1 -0
  29. package/wwwroot/assets/PricingPage-zVu8-CrF.js +1 -0
  30. package/wwwroot/assets/ToolPages-DIB187pZ.css +1 -0
  31. package/wwwroot/assets/ToolPages-DTSqKzQd.js +28 -0
  32. package/wwwroot/assets/YouTubeSearchPage-IPPa_BIH.css +1 -0
  33. package/wwwroot/assets/YouTubeSearchPage-xGiaLNqk.js +4 -0
  34. package/wwwroot/assets/app-runtime-xD2Z3NdN.js +1 -0
  35. package/wwwroot/assets/canvas-runtime-D1gfvqKp.js +44 -0
  36. package/wwwroot/assets/code-agent-runtime-B5PPZd1t.js +74 -0
  37. package/wwwroot/assets/executionModeSettings-NJqurj-o.js +1 -0
  38. package/wwwroot/assets/index-CP_xejf2.css +1 -0
  39. package/wwwroot/assets/index-CZS-9WFu.js +2 -0
  40. package/wwwroot/assets/marketingTools-DN_rnHeB.js +4 -0
  41. package/wwwroot/assets/mindCanvasSearchWorker-BzPMsHOB.js +1 -0
  42. package/wwwroot/assets/mindexecution-mindcanvas.png +0 -0
  43. package/wwwroot/assets/mindexecution-prod-home-current.png +0 -0
  44. package/wwwroot/assets/mindexecution-prod-pricing-current.png +0 -0
  45. package/wwwroot/assets/pricingCheckoutShell-O-DnwmbU.js +1 -0
  46. package/wwwroot/assets/runtimeSettingsPersistenceProjection-BoNWmYjU.js +1 -0
  47. package/wwwroot/assets/storage-CGDupGH4.js +1 -0
  48. package/wwwroot/assets/supabaseAuthAdapter-C3z334Qw.js +44 -0
  49. package/wwwroot/assets/toolHandoff-D5e5f7t5.js +4 -0
  50. package/wwwroot/assets/vendor-icons-oiW_NVNO.js +681 -0
  51. package/wwwroot/assets/vendor-msgpack-BE8aAsr3.js +1 -0
  52. package/wwwroot/assets/vendor-react-BXzpOyCS.js +40 -0
  53. package/wwwroot/favicon.svg +7 -0
  54. package/wwwroot/index.html +22 -736
  55. package/wwwroot/manifest.webmanifest +18 -21
  56. package/wwwroot/robots.txt +1 -1
  57. package/wwwroot/service-worker.js +5 -31
  58. package/wwwroot/sitemap.xml +21 -9
  59. package/wwwroot/MindExecution.Web.styles.css +0 -3
  60. package/wwwroot/_content/MindExecution.Plugins.Admin/css/admin-dashboard.css +0 -546
  61. package/wwwroot/_content/MindExecution.Plugins.Directory/MindExecution.Plugins.Directory.u7utcng611.bundle.scp.css +0 -7
  62. package/wwwroot/_content/MindExecution.Plugins.Directory/background.png +0 -0
  63. package/wwwroot/_content/MindExecution.Plugins.Directory/directory-manager.js +0 -202
  64. package/wwwroot/_content/MindExecution.Plugins.Directory/exampleJsInterop.js +0 -6
  65. package/wwwroot/_content/MindExecution.Plugins.YouTube/css/youtube-search.css +0 -251
  66. package/wwwroot/_content/MindExecution.Shared/MindExecution.Shared.wsano1j4wp.bundle.scp.css +0 -4
  67. package/wwwroot/_content/MindExecution.Shared/css/admin-dashboard.css +0 -559
  68. package/wwwroot/_content/MindExecution.Shared/css/app.css +0 -1
  69. package/wwwroot/_content/MindExecution.Shared/css/mind-map-overrides.css +0 -3705
  70. package/wwwroot/_content/MindExecution.Shared/fonts/NotoSansKR-Bold.ttf +0 -0
  71. package/wwwroot/_content/MindExecution.Shared/fonts/NotoSansKR-Regular.ttf +0 -0
  72. package/wwwroot/_content/MindExecution.Shared/js/agent-visualization.js +0 -359
  73. package/wwwroot/_content/MindExecution.Shared/js/background-themes.js +0 -1631
  74. package/wwwroot/_content/MindExecution.Shared/js/code-master.js +0 -8316
  75. package/wwwroot/_content/MindExecution.Shared/js/file-system-helper.js +0 -639
  76. package/wwwroot/_content/MindExecution.Shared/js/helpers/InfiniteGridHelper.js +0 -109
  77. package/wwwroot/_content/MindExecution.Shared/js/marked.min.js +0 -69
  78. package/wwwroot/_content/MindExecution.Shared/js/mind-map-core.js +0 -12909
  79. package/wwwroot/_content/MindExecution.Shared/js/mind-map-core.js.backup +0 -1059
  80. package/wwwroot/_content/MindExecution.Shared/js/mind-map-css3d-manager.js +0 -24635
  81. package/wwwroot/_content/MindExecution.Shared/js/mind-map-dev-guards.js +0 -325
  82. package/wwwroot/_content/MindExecution.Shared/js/mind-map-dnd.js +0 -1491
  83. package/wwwroot/_content/MindExecution.Shared/js/mind-map-dnd.js.bak +0 -434
  84. package/wwwroot/_content/MindExecution.Shared/js/mind-map-glow-shader.js +0 -260
  85. package/wwwroot/_content/MindExecution.Shared/js/mind-map-interactions.js +0 -7829
  86. package/wwwroot/_content/MindExecution.Shared/js/mind-map-lod-plan-worker.js +0 -160
  87. package/wwwroot/_content/MindExecution.Shared/js/mind-map-lod-renderer.js +0 -10392
  88. package/wwwroot/_content/MindExecution.Shared/js/mind-map-logic-workers.js +0 -977
  89. package/wwwroot/_content/MindExecution.Shared/js/mind-map-menu-manager.js +0 -1531
  90. package/wwwroot/_content/MindExecution.Shared/js/mind-map-multi-select.js +0 -1716
  91. package/wwwroot/_content/MindExecution.Shared/js/mind-map-node-search-worker.js +0 -554
  92. package/wwwroot/_content/MindExecution.Shared/js/mind-map-nodes.js +0 -4578
  93. package/wwwroot/_content/MindExecution.Shared/js/mind-map-object-manager.js +0 -489
  94. package/wwwroot/_content/MindExecution.Shared/js/mind-map-object-manager.js.backup +0 -372
  95. package/wwwroot/_content/MindExecution.Shared/js/mind-map-pipeline.js +0 -2203
  96. package/wwwroot/_content/MindExecution.Shared/js/mind-map-text-lod-system.js +0 -646
  97. package/wwwroot/_content/MindExecution.Shared/js/mind-map-text-overlay-v2.js +0 -4735
  98. package/wwwroot/_content/MindExecution.Shared/js/mind-map-texture-factory.js +0 -2383
  99. package/wwwroot/_content/MindExecution.Shared/js/mind-map-texture-factory.js.backup +0 -1258
  100. package/wwwroot/_content/MindExecution.Shared/js/mind-map-visibility-worker.js +0 -890
  101. package/wwwroot/_content/MindExecution.Shared/js/mindmap-toolbar.js +0 -639
  102. package/wwwroot/_content/MindExecution.Shared/js/native-drop-handler.js +0 -170
  103. package/wwwroot/_content/MindExecution.Shared/js/plan-master.js +0 -788
  104. package/wwwroot/_content/MindExecution.Shared/js/renderers/CSS3DRenderer.js +0 -90
  105. package/wwwroot/_content/MindExecution.Shared/js/texture-worker-manager.js +0 -188
  106. package/wwwroot/_content/MindExecution.Shared/js/texture-worker.js +0 -208
  107. package/wwwroot/_content/MindExecution.Shared/js/three.min.js +0 -6
  108. package/wwwroot/_content/MindExecution.Shared/js/titlebar-handler.js +0 -191
  109. package/wwwroot/_content/MindExecution.Shared/js/token-manager.js +0 -37
  110. package/wwwroot/_content/MindExecution.Shared/js/token-worker.js +0 -28
  111. package/wwwroot/_content/MindExecution.Shared/js/troika-bundle.js +0 -5626
  112. package/wwwroot/_content/MindExecution.Shared/js/troika-bundle.js.map +0 -7
  113. package/wwwroot/_content/MindExecution.Shared/lib/font-awesome/css/all.min.css +0 -9
  114. package/wwwroot/_content/MindExecution.Shared/lib/font-awesome/webfonts/fa-brands-400.ttf +0 -0
  115. package/wwwroot/_content/MindExecution.Shared/lib/font-awesome/webfonts/fa-brands-400.woff2 +0 -0
  116. package/wwwroot/_content/MindExecution.Shared/lib/font-awesome/webfonts/fa-regular-400.ttf +0 -0
  117. package/wwwroot/_content/MindExecution.Shared/lib/font-awesome/webfonts/fa-regular-400.woff2 +0 -0
  118. package/wwwroot/_content/MindExecution.Shared/lib/font-awesome/webfonts/fa-solid-900.ttf +0 -0
  119. package/wwwroot/_content/MindExecution.Shared/lib/font-awesome/webfonts/fa-solid-900.woff2 +0 -0
  120. package/wwwroot/_content/MindExecution.Shared/models/all-MiniLM-L6-v2-quantized.onnx +0 -0
  121. package/wwwroot/_content/MindExecution.Shared/models/vocab.txt +0 -30522
  122. package/wwwroot/_framework/Google.Protobuf.9h59ukbel7.dll +0 -0
  123. package/wwwroot/_framework/Markdig.d1j7v41cl1.dll +0 -0
  124. package/wwwroot/_framework/MessagePack.Annotations.l6qv48kgpt.dll +0 -0
  125. package/wwwroot/_framework/MessagePack.eqoptzx9d5.dll +0 -0
  126. package/wwwroot/_framework/Microsoft.AspNetCore.Authorization.k7dsih5y5g.dll +0 -0
  127. package/wwwroot/_framework/Microsoft.AspNetCore.Components.6nyje9sa0g.dll +0 -0
  128. package/wwwroot/_framework/Microsoft.AspNetCore.Components.Authorization.iycd6unprw.dll +0 -0
  129. package/wwwroot/_framework/Microsoft.AspNetCore.Components.Web.487u3twia4.dll +0 -0
  130. package/wwwroot/_framework/Microsoft.AspNetCore.Components.WebAssembly.d0gcnmlxxz.dll +0 -0
  131. package/wwwroot/_framework/Microsoft.AspNetCore.Metadata.h4yevl9adi.dll +0 -0
  132. package/wwwroot/_framework/Microsoft.CSharp.8bsm8vx6su.dll +0 -0
  133. package/wwwroot/_framework/Microsoft.Data.Sqlite.jdlxgv2jtg.dll +0 -0
  134. package/wwwroot/_framework/Microsoft.EntityFrameworkCore.4gjazp7kjf.dll +0 -0
  135. package/wwwroot/_framework/Microsoft.EntityFrameworkCore.Abstractions.gocudnvz7b.dll +0 -0
  136. package/wwwroot/_framework/Microsoft.EntityFrameworkCore.Relational.lt4rsvinuo.dll +0 -0
  137. package/wwwroot/_framework/Microsoft.EntityFrameworkCore.Sqlite.69luj0fa9r.dll +0 -0
  138. package/wwwroot/_framework/Microsoft.Extensions.Caching.Abstractions.364t4jh3zz.dll +0 -0
  139. package/wwwroot/_framework/Microsoft.Extensions.Caching.Memory.izlxhpzosu.dll +0 -0
  140. package/wwwroot/_framework/Microsoft.Extensions.Configuration.8zq7hh41o7.dll +0 -0
  141. package/wwwroot/_framework/Microsoft.Extensions.Configuration.Abstractions.8if74zs6ea.dll +0 -0
  142. package/wwwroot/_framework/Microsoft.Extensions.Configuration.Json.duvlngw8i0.dll +0 -0
  143. package/wwwroot/_framework/Microsoft.Extensions.DependencyInjection.Abstractions.t2hh9kvx0o.dll +0 -0
  144. package/wwwroot/_framework/Microsoft.Extensions.DependencyInjection.n4tg99oy8l.dll +0 -0
  145. package/wwwroot/_framework/Microsoft.Extensions.DependencyModel.h0d06ixk3e.dll +0 -0
  146. package/wwwroot/_framework/Microsoft.Extensions.Logging.Abstractions.rl32bkx2sd.dll +0 -0
  147. package/wwwroot/_framework/Microsoft.Extensions.Logging.dlht1xei0t.dll +0 -0
  148. package/wwwroot/_framework/Microsoft.Extensions.Options.qeunebioml.dll +0 -0
  149. package/wwwroot/_framework/Microsoft.Extensions.Primitives.18cr6vnuuz.dll +0 -0
  150. package/wwwroot/_framework/Microsoft.IO.RecyclableMemoryStream.r915vovvw4.dll +0 -0
  151. package/wwwroot/_framework/Microsoft.IdentityModel.Abstractions.1ejljk3erv.dll +0 -0
  152. package/wwwroot/_framework/Microsoft.IdentityModel.JsonWebTokens.1596zr8gne.dll +0 -0
  153. package/wwwroot/_framework/Microsoft.IdentityModel.Logging.229uyvpgio.dll +0 -0
  154. package/wwwroot/_framework/Microsoft.IdentityModel.Tokens.9sibtajc9f.dll +0 -0
  155. package/wwwroot/_framework/Microsoft.JSInterop.WebAssembly.ryia5gxiad.dll +0 -0
  156. package/wwwroot/_framework/Microsoft.JSInterop.ew9vz9o332.dll +0 -0
  157. package/wwwroot/_framework/Microsoft.ML.OnnxRuntime.w9deo1m5ss.dll +0 -0
  158. package/wwwroot/_framework/Microsoft.ML.Tokenizers.cm2vuv2z61.dll +0 -0
  159. package/wwwroot/_framework/Microsoft.NET.StringTools.3qbrf4v2ki.dll +0 -0
  160. package/wwwroot/_framework/MimeMapping.og9ys58ylm.dll +0 -0
  161. package/wwwroot/_framework/MindExecution.Core.y7ffihhajj.dll +0 -0
  162. package/wwwroot/_framework/MindExecution.Kernel.l5y3qroa7p.dll +0 -0
  163. package/wwwroot/_framework/MindExecution.Plugins.Admin.uuf238xa0h.dll +0 -0
  164. package/wwwroot/_framework/MindExecution.Plugins.Business.nyr3v25v48.dll +0 -0
  165. package/wwwroot/_framework/MindExecution.Plugins.Concept.l9z9tx9svt.dll +0 -0
  166. package/wwwroot/_framework/MindExecution.Plugins.Directory.ju87t8h3zs.dll +0 -0
  167. package/wwwroot/_framework/MindExecution.Plugins.PlanMaster.krn3jgvjpa.dll +0 -0
  168. package/wwwroot/_framework/MindExecution.Plugins.YouTube.5m53srfud6.dll +0 -0
  169. package/wwwroot/_framework/MindExecution.Shared.ojp3psugsm.dll +0 -0
  170. package/wwwroot/_framework/MindExecution.Web.82k6ktlkfg.dll +0 -0
  171. package/wwwroot/_framework/Newtonsoft.Json.a56zs13vug.dll +0 -0
  172. package/wwwroot/_framework/SQLitePCLRaw.batteries_v2.rrd1nzawpp.dll +0 -0
  173. package/wwwroot/_framework/SQLitePCLRaw.core.1dxloztpfz.dll +0 -0
  174. package/wwwroot/_framework/SQLitePCLRaw.provider.e_sqlite3.oekyzl53i1.dll +0 -0
  175. package/wwwroot/_framework/Supabase.Core.s1pkj4aj0l.dll +0 -0
  176. package/wwwroot/_framework/Supabase.Functions.qz4nu782sg.dll +0 -0
  177. package/wwwroot/_framework/Supabase.Gotrue.twah27pkik.dll +0 -0
  178. package/wwwroot/_framework/Supabase.Postgrest.gmuuv369ih.dll +0 -0
  179. package/wwwroot/_framework/Supabase.Realtime.ox3kchdy3w.dll +0 -0
  180. package/wwwroot/_framework/Supabase.Storage.fnjnepaowr.dll +0 -0
  181. package/wwwroot/_framework/Supabase.azmaw5pgcz.dll +0 -0
  182. package/wwwroot/_framework/System.Collections.23yxgetbju.dll +0 -0
  183. package/wwwroot/_framework/System.Collections.Concurrent.vow3rm1dku.dll +0 -0
  184. package/wwwroot/_framework/System.Collections.Immutable.ap9596utv5.dll +0 -0
  185. package/wwwroot/_framework/System.Collections.NonGeneric.npjkaz40oc.dll +0 -0
  186. package/wwwroot/_framework/System.Collections.Specialized.ugkjbs6p02.dll +0 -0
  187. package/wwwroot/_framework/System.ComponentModel.Annotations.clwo0z2oyu.dll +0 -0
  188. package/wwwroot/_framework/System.ComponentModel.Primitives.end4v0xe2c.dll +0 -0
  189. package/wwwroot/_framework/System.ComponentModel.TypeConverter.tgtp5sm4iv.dll +0 -0
  190. package/wwwroot/_framework/System.ComponentModel.wupoltkk1t.dll +0 -0
  191. package/wwwroot/_framework/System.Console.9dik0wogo2.dll +0 -0
  192. package/wwwroot/_framework/System.Data.Common.4v8jejsiu0.dll +0 -0
  193. package/wwwroot/_framework/System.Diagnostics.DiagnosticSource.e2q75ondtq.dll +0 -0
  194. package/wwwroot/_framework/System.Diagnostics.Process.9736yjnxs8.dll +0 -0
  195. package/wwwroot/_framework/System.Diagnostics.TraceSource.h9al53gbbw.dll +0 -0
  196. package/wwwroot/_framework/System.Diagnostics.Tracing.h4bcp2fo98.dll +0 -0
  197. package/wwwroot/_framework/System.Drawing.64oovy8qts.dll +0 -0
  198. package/wwwroot/_framework/System.Drawing.Primitives.o6jiqpgbgl.dll +0 -0
  199. package/wwwroot/_framework/System.Formats.Asn1.rylx5ipd40.dll +0 -0
  200. package/wwwroot/_framework/System.IO.Compression.iceabaupns.dll +0 -0
  201. package/wwwroot/_framework/System.IO.Pipelines.uw8csd3mlz.dll +0 -0
  202. package/wwwroot/_framework/System.IdentityModel.Tokens.Jwt.t67es60z5b.dll +0 -0
  203. package/wwwroot/_framework/System.Linq.Expressions.ty95ava37f.dll +0 -0
  204. package/wwwroot/_framework/System.Linq.Queryable.hs2195jrwy.dll +0 -0
  205. package/wwwroot/_framework/System.Linq.hssodjwmlf.dll +0 -0
  206. package/wwwroot/_framework/System.Memory.1k78n7wdxb.dll +0 -0
  207. package/wwwroot/_framework/System.Net.Http.3br8rfql4c.dll +0 -0
  208. package/wwwroot/_framework/System.Net.Http.Json.860wbh17d8.dll +0 -0
  209. package/wwwroot/_framework/System.Net.NetworkInformation.e3wr00853o.dll +0 -0
  210. package/wwwroot/_framework/System.Net.Ping.r5cw4mf1a4.dll +0 -0
  211. package/wwwroot/_framework/System.Net.Primitives.ksxwiwlvhu.dll +0 -0
  212. package/wwwroot/_framework/System.Net.WebSockets.6rt3n3gl2q.dll +0 -0
  213. package/wwwroot/_framework/System.Net.WebSockets.Client.z3usrzo7rz.dll +0 -0
  214. package/wwwroot/_framework/System.Numerics.Tensors.0c7z4mt3on.dll +0 -0
  215. package/wwwroot/_framework/System.Numerics.Vectors.lbdzx8reja.dll +0 -0
  216. package/wwwroot/_framework/System.ObjectModel.yct1gdirzf.dll +0 -0
  217. package/wwwroot/_framework/System.Private.CoreLib.c1dbswx1b2.dll +0 -0
  218. package/wwwroot/_framework/System.Private.Uri.zp9kmg0z93.dll +0 -0
  219. package/wwwroot/_framework/System.Private.Xml.Linq.lgv2n0akl4.dll +0 -0
  220. package/wwwroot/_framework/System.Private.Xml.dpsk8g304y.dll +0 -0
  221. package/wwwroot/_framework/System.Reactive.t3fuon548l.dll +0 -0
  222. package/wwwroot/_framework/System.Reflection.Emit.ILGeneration.1tcuz2cmbk.dll +0 -0
  223. package/wwwroot/_framework/System.Reflection.Emit.Lightweight.ddt2wylovg.dll +0 -0
  224. package/wwwroot/_framework/System.Reflection.Emit.d8vkadiwhg.dll +0 -0
  225. package/wwwroot/_framework/System.Reflection.Primitives.cpsl71xd1z.dll +0 -0
  226. package/wwwroot/_framework/System.Runtime.InteropServices.31vjgsfk1o.dll +0 -0
  227. package/wwwroot/_framework/System.Runtime.InteropServices.JavaScript.pn2wvizzet.dll +0 -0
  228. package/wwwroot/_framework/System.Runtime.InteropServices.RuntimeInformation.l5rk496q70.dll +0 -0
  229. package/wwwroot/_framework/System.Runtime.Intrinsics.0zee9qcqfy.dll +0 -0
  230. package/wwwroot/_framework/System.Runtime.Loader.xw2jr9wl92.dll +0 -0
  231. package/wwwroot/_framework/System.Runtime.Numerics.ezj1dfyvbj.dll +0 -0
  232. package/wwwroot/_framework/System.Runtime.Serialization.Formatters.0y019e9zkr.dll +0 -0
  233. package/wwwroot/_framework/System.Runtime.Serialization.Primitives.bia5wb62c8.dll +0 -0
  234. package/wwwroot/_framework/System.Runtime.h9cduidfkh.dll +0 -0
  235. package/wwwroot/_framework/System.Security.Claims.2r18wim2rl.dll +0 -0
  236. package/wwwroot/_framework/System.Security.Cryptography.qqgybpoucx.dll +0 -0
  237. package/wwwroot/_framework/System.Text.Encoding.Extensions.9t3hs6kyll.dll +0 -0
  238. package/wwwroot/_framework/System.Text.Encodings.Web.wftjfh2crk.dll +0 -0
  239. package/wwwroot/_framework/System.Text.Json.0v0qgmri0w.dll +0 -0
  240. package/wwwroot/_framework/System.Text.RegularExpressions.cvkox11l6l.dll +0 -0
  241. package/wwwroot/_framework/System.Threading.Channels.419493szqu.dll +0 -0
  242. package/wwwroot/_framework/System.Threading.Thread.xhmys87xh5.dll +0 -0
  243. package/wwwroot/_framework/System.Threading.b66vzsz9g1.dll +0 -0
  244. package/wwwroot/_framework/System.Transactions.Local.7zfffdvnwf.dll +0 -0
  245. package/wwwroot/_framework/System.Web.HttpUtility.9up6xfbtuq.dll +0 -0
  246. package/wwwroot/_framework/System.Xml.Linq.n5rzv9nbf7.dll +0 -0
  247. package/wwwroot/_framework/System.Xml.ReaderWriter.ag8pilllob.dll +0 -0
  248. package/wwwroot/_framework/System.Xml.XDocument.sn51jas17n.dll +0 -0
  249. package/wwwroot/_framework/System.brmz7yk5qh.dll +0 -0
  250. package/wwwroot/_framework/Websocket.Client.vapounvmnl.dll +0 -0
  251. package/wwwroot/_framework/blazor.boot.json +0 -305
  252. package/wwwroot/_framework/blazor.webassembly.js +0 -1
  253. package/wwwroot/_framework/dotnet.js +0 -4
  254. package/wwwroot/_framework/dotnet.native.boem75ye5i.wasm +0 -0
  255. package/wwwroot/_framework/dotnet.native.qc8g39g30v.js +0 -16
  256. package/wwwroot/_framework/dotnet.runtime.opaiwunc3t.js +0 -4
  257. package/wwwroot/_framework/icudt_CJK.tjcz0u77k5.dat +0 -0
  258. package/wwwroot/_framework/icudt_EFIGS.tptq2av103.dat +0 -0
  259. package/wwwroot/_framework/icudt_no_CJK.lfu7j35m59.dat +0 -0
  260. package/wwwroot/_framework/netstandard.yvr3prsx0x.dll +0 -0
  261. package/wwwroot/appsettings.json +0 -83
  262. package/wwwroot/icon-192.png +0 -0
  263. package/wwwroot/icon-512.png +0 -0
  264. package/wwwroot/js/marketing-tool.js +0 -180
  265. package/wwwroot/service-worker-assets.js +0 -857
@@ -1,890 +0,0 @@
1
- 'use strict';
2
-
3
- const FULL_RES_VISIBILITY_EXIT_MARGIN_SCALE = 1.8;
4
- const MAX_DIRECT_GRID_LOOKUPS = 4096;
5
- const DEFAULT_HIT_TEST_CELL_RADIUS = 1;
6
- const MAX_HIT_TEST_CELL_RADIUS = 3;
7
-
8
- function createState() {
9
- return {
10
- boardId: '',
11
- cellSize: 500,
12
- nodes: new Map(),
13
- spatialGrid: new Map(),
14
- lastVisibleIds: new Set(),
15
- lastPriorityIds: [],
16
- lastVisibilityRect: null,
17
- lastNodeCount: 0,
18
- lastResultSeq: 0
19
- };
20
- }
21
-
22
- let runtime = createState();
23
-
24
- function normalizeBoardId(boardId) {
25
- return String(boardId ?? '').trim();
26
- }
27
-
28
- function normalizeNodeSnapshot(node) {
29
- if (!node || typeof node !== 'object') {
30
- return null;
31
- }
32
-
33
- const id = String(node.id || '').trim();
34
- if (!id) {
35
- return null;
36
- }
37
-
38
- const minX = Number(node.minX || 0);
39
- const maxX = Number(node.maxX || minX);
40
- const minY = Number(node.minY || 0);
41
- const maxY = Number(node.maxY || minY);
42
-
43
- return {
44
- id,
45
- contentType: String(node.contentType || '').trim().toLowerCase(),
46
- textLike: node.textLike === true,
47
- x: Number(node.x || minX),
48
- y: Number(node.y || maxY),
49
- z: Number(node.z || 0),
50
- width: Math.max(1, Number(node.width || (maxX - minX) || 1)),
51
- height: Math.max(1, Number(node.height || (maxY - minY) || 1)),
52
- minX,
53
- maxX,
54
- minY,
55
- maxY,
56
- cellKeys: Array.isArray(node.cellKeys)
57
- ? node.cellKeys.map((key) => String(key || '').trim()).filter(Boolean)
58
- : []
59
- };
60
- }
61
-
62
- function clearState(boardId, cellSize) {
63
- runtime = createState();
64
- runtime.boardId = normalizeBoardId(boardId);
65
- runtime.cellSize = Math.max(1, Number(cellSize || 500));
66
- }
67
-
68
- function removeNodeFromGrid(nodeId, node) {
69
- const normalizedId = String(nodeId || '').trim();
70
- if (!normalizedId || !node?.cellKeys) {
71
- return;
72
- }
73
-
74
- for (let i = 0; i < node.cellKeys.length; i++) {
75
- const key = node.cellKeys[i];
76
- const cell = runtime.spatialGrid.get(key);
77
- if (!cell) {
78
- continue;
79
- }
80
-
81
- cell.delete(normalizedId);
82
- if (cell.size === 0) {
83
- runtime.spatialGrid.delete(key);
84
- }
85
- }
86
- }
87
-
88
- function upsertNode(node) {
89
- const normalizedNode = normalizeNodeSnapshot(node);
90
- if (!normalizedNode) {
91
- return;
92
- }
93
-
94
- const existing = runtime.nodes.get(normalizedNode.id);
95
- if (existing) {
96
- removeNodeFromGrid(normalizedNode.id, existing);
97
- }
98
-
99
- runtime.nodes.set(normalizedNode.id, normalizedNode);
100
- for (let i = 0; i < normalizedNode.cellKeys.length; i++) {
101
- const key = normalizedNode.cellKeys[i];
102
- let cell = runtime.spatialGrid.get(key);
103
- if (!cell) {
104
- cell = new Set();
105
- runtime.spatialGrid.set(key, cell);
106
- }
107
- cell.add(normalizedNode.id);
108
- }
109
- }
110
-
111
- function removeNode(nodeId) {
112
- const normalizedId = String(nodeId || '').trim();
113
- if (!normalizedId) {
114
- return;
115
- }
116
-
117
- const existing = runtime.nodes.get(normalizedId);
118
- if (!existing) {
119
- return;
120
- }
121
-
122
- removeNodeFromGrid(normalizedId, existing);
123
- runtime.nodes.delete(normalizedId);
124
- runtime.lastVisibleIds.delete(normalizedId);
125
- }
126
-
127
- function rebuildBoard(boardId, cellSize, nodes) {
128
- clearState(boardId, cellSize);
129
- const sourceNodes = Array.isArray(nodes) ? nodes : [];
130
- for (let i = 0; i < sourceNodes.length; i++) {
131
- upsertNode(sourceNodes[i]);
132
- }
133
- }
134
-
135
- function getVisibilityMarginPolicy(cameraZ, isPanning = false, isCtrlWheelVerticalScrolling = false) {
136
- let cullingMarginPx = 3000;
137
- let maxMarginCells = 6;
138
- let useCoarseVisibility = false;
139
-
140
- if (cameraZ < 4500) {
141
- cullingMarginPx = 1000;
142
- maxMarginCells = 4;
143
- } else if (cameraZ < 12000) {
144
- cullingMarginPx = 2200;
145
- maxMarginCells = 5;
146
- } else if (cameraZ < 30000) {
147
- cullingMarginPx = 900;
148
- maxMarginCells = 2;
149
- } else {
150
- cullingMarginPx = 240;
151
- maxMarginCells = 1;
152
- useCoarseVisibility = isPanning !== true;
153
- }
154
-
155
- if (isPanning === true) {
156
- if (cameraZ < 4500) {
157
- cullingMarginPx += 500;
158
- maxMarginCells += 1;
159
- } else if (cameraZ < 12000) {
160
- cullingMarginPx += 700;
161
- maxMarginCells += 1;
162
- } else if (cameraZ < 30000) {
163
- cullingMarginPx += 600;
164
- maxMarginCells += 1;
165
- } else {
166
- cullingMarginPx += 320;
167
- maxMarginCells += 1;
168
- }
169
- }
170
-
171
- if (isCtrlWheelVerticalScrolling && cameraZ < 12000) {
172
- cullingMarginPx += (cameraZ < 4500) ? 700 : 900;
173
- maxMarginCells += 2;
174
- }
175
-
176
- return {
177
- cullingMarginPx,
178
- maxMarginCells,
179
- useCoarseVisibility
180
- };
181
- }
182
-
183
- function describeCellRange(rect, cellSize) {
184
- if (!rect) {
185
- return null;
186
- }
187
-
188
- const left = Number(rect.left);
189
- const right = Number(rect.right);
190
- const bottom = Number(rect.bottom);
191
- const top = Number(rect.top);
192
- if (!Number.isFinite(left) || !Number.isFinite(right) || !Number.isFinite(bottom) || !Number.isFinite(top)) {
193
- return null;
194
- }
195
- if (right < left || top < bottom) {
196
- return null;
197
- }
198
-
199
- const startCellX = Math.floor(left / cellSize);
200
- const endCellX = Math.floor(right / cellSize);
201
- const startCellY = Math.floor(bottom / cellSize);
202
- const endCellY = Math.floor(top / cellSize);
203
- const spanX = Math.max(0, endCellX - startCellX + 1);
204
- const spanY = Math.max(0, endCellY - startCellY + 1);
205
-
206
- return {
207
- startCellX,
208
- endCellX,
209
- startCellY,
210
- endCellY,
211
- spanX,
212
- spanY,
213
- directGridLookups: spanX * spanY
214
- };
215
- }
216
-
217
- function intersectsRect(node, rect) {
218
- if (!node || !rect) {
219
- return false;
220
- }
221
-
222
- return !(
223
- node.maxX < rect.left ||
224
- node.minX > rect.right ||
225
- node.maxY < rect.bottom ||
226
- node.minY > rect.top
227
- );
228
- }
229
-
230
- function collectCandidates(range) {
231
- const candidateIds = new Set();
232
- let usedPopulatedCellScan = false;
233
-
234
- if (!range) {
235
- runtime.nodes.forEach((_, nodeId) => candidateIds.add(nodeId));
236
- return {
237
- candidateIds,
238
- usedPopulatedCellScan,
239
- directGridLookups: 0,
240
- gridSpanX: 0,
241
- gridSpanY: 0
242
- };
243
- }
244
-
245
- if (range.directGridLookups > MAX_DIRECT_GRID_LOOKUPS) {
246
- usedPopulatedCellScan = true;
247
- runtime.spatialGrid.forEach((nodeIds, key) => {
248
- const separatorIndex = key.indexOf(':');
249
- if (separatorIndex <= 0) {
250
- return;
251
- }
252
-
253
- const cx = Number(key.slice(0, separatorIndex));
254
- const cy = Number(key.slice(separatorIndex + 1));
255
- if (!Number.isFinite(cx) || !Number.isFinite(cy)) {
256
- return;
257
- }
258
-
259
- if (cx >= range.startCellX && cx <= range.endCellX && cy >= range.startCellY && cy <= range.endCellY) {
260
- nodeIds.forEach((nodeId) => candidateIds.add(nodeId));
261
- }
262
- });
263
- } else {
264
- for (let cx = range.startCellX; cx <= range.endCellX; cx++) {
265
- for (let cy = range.startCellY; cy <= range.endCellY; cy++) {
266
- const cell = runtime.spatialGrid.get(`${cx}:${cy}`);
267
- if (!cell) {
268
- continue;
269
- }
270
- cell.forEach((nodeId) => candidateIds.add(nodeId));
271
- }
272
- }
273
- }
274
-
275
- runtime.lastVisibleIds.forEach((nodeId) => {
276
- if (runtime.nodes.has(nodeId)) {
277
- candidateIds.add(nodeId);
278
- }
279
- });
280
-
281
- return {
282
- candidateIds,
283
- usedPopulatedCellScan,
284
- directGridLookups: range.directGridLookups,
285
- gridSpanX: range.spanX,
286
- gridSpanY: range.spanY
287
- };
288
- }
289
-
290
- function buildCellKeySetFromRange(range, targetSet) {
291
- if (!range || !targetSet) {
292
- return;
293
- }
294
-
295
- for (let cx = range.startCellX; cx <= range.endCellX; cx++) {
296
- for (let cy = range.startCellY; cy <= range.endCellY; cy++) {
297
- targetSet.add(`${cx}:${cy}`);
298
- }
299
- }
300
- }
301
-
302
- function addCandidatesFromCellKeySet(cellKeys, candidateIds, skipPreviouslyVisible = false) {
303
- if (!cellKeys || !candidateIds || cellKeys.size === 0) {
304
- return;
305
- }
306
-
307
- cellKeys.forEach((key) => {
308
- const nodeIds = runtime.spatialGrid.get(key);
309
- if (!nodeIds) {
310
- return;
311
- }
312
-
313
- nodeIds.forEach((nodeId) => {
314
- if (skipPreviouslyVisible && runtime.lastVisibleIds.has(nodeId)) {
315
- return;
316
- }
317
-
318
- candidateIds.add(nodeId);
319
- });
320
- });
321
- }
322
-
323
- function normalizeHitTestCellRadius(cellRadius) {
324
- const normalized = Math.round(Number(cellRadius || DEFAULT_HIT_TEST_CELL_RADIUS));
325
- if (!Number.isFinite(normalized)) {
326
- return DEFAULT_HIT_TEST_CELL_RADIUS;
327
- }
328
-
329
- return Math.max(0, Math.min(MAX_HIT_TEST_CELL_RADIUS, normalized));
330
- }
331
-
332
- function collectHitTestCandidateIds(centerCellX, centerCellY, cellRadius) {
333
- const candidateIds = new Set();
334
- const normalizedCellRadius = normalizeHitTestCellRadius(cellRadius);
335
- let cellLookups = 0;
336
-
337
- for (let offsetX = -normalizedCellRadius; offsetX <= normalizedCellRadius; offsetX++) {
338
- for (let offsetY = -normalizedCellRadius; offsetY <= normalizedCellRadius; offsetY++) {
339
- cellLookups++;
340
- const cell = runtime.spatialGrid.get(`${centerCellX + offsetX}:${centerCellY + offsetY}`);
341
- if (!cell) {
342
- continue;
343
- }
344
-
345
- cell.forEach((nodeId) => candidateIds.add(nodeId));
346
- }
347
- }
348
-
349
- return {
350
- candidateIds,
351
- cellLookups,
352
- cellRadius: normalizedCellRadius
353
- };
354
- }
355
-
356
- function normalizeSelectionRect(rect) {
357
- if (!rect || typeof rect !== 'object') {
358
- return null;
359
- }
360
-
361
- const left = Number(rect.left);
362
- const right = Number(rect.right);
363
- const bottom = Number(rect.bottom);
364
- const top = Number(rect.top);
365
- if (!Number.isFinite(left) || !Number.isFinite(right) || !Number.isFinite(bottom) || !Number.isFinite(top)) {
366
- return null;
367
- }
368
-
369
- return {
370
- left: Math.min(left, right),
371
- right: Math.max(left, right),
372
- bottom: Math.min(bottom, top),
373
- top: Math.max(bottom, top)
374
- };
375
- }
376
-
377
- function buildPriorityIds(visibleIds, camX, camY) {
378
- const buffer = [];
379
- visibleIds.forEach((nodeId) => {
380
- const node = runtime.nodes.get(nodeId);
381
- if (!node) {
382
- return;
383
- }
384
-
385
- const dx = Number(node.x || 0) - camX;
386
- const dy = Number(node.y || 0) - camY;
387
- const distSq = (dx * dx) + (dy * dy);
388
- const textPriority = node.textLike === true ? 0 : 1;
389
- const mediaPriority = node.contentType === 'image' ? 0 : 1;
390
- buffer.push({ nodeId, textPriority, mediaPriority, distSq });
391
- });
392
-
393
- buffer.sort((a, b) => {
394
- if (a.textPriority !== b.textPriority) {
395
- return a.textPriority - b.textPriority;
396
- }
397
- if (a.mediaPriority !== b.mediaPriority) {
398
- return a.mediaPriority - b.mediaPriority;
399
- }
400
- return a.distSq - b.distSq;
401
- });
402
-
403
- return buffer.map((entry) => entry.nodeId);
404
- }
405
-
406
- function buildIncrementalPriorityIds(nextVisibleIds, enteredIds, camX, camY) {
407
- const priorityIds = [];
408
- const used = new Set();
409
-
410
- if (Array.isArray(runtime.lastPriorityIds)) {
411
- for (let i = 0; i < runtime.lastPriorityIds.length; i++) {
412
- const nodeId = String(runtime.lastPriorityIds[i] || '').trim();
413
- if (!nodeId || used.has(nodeId) || !nextVisibleIds.has(nodeId)) {
414
- continue;
415
- }
416
-
417
- priorityIds.push(nodeId);
418
- used.add(nodeId);
419
- }
420
- }
421
-
422
- const enteredSet = new Set();
423
- if (Array.isArray(enteredIds)) {
424
- for (let i = 0; i < enteredIds.length; i++) {
425
- const nodeId = String(enteredIds[i] || '').trim();
426
- if (nodeId && nextVisibleIds.has(nodeId) && !used.has(nodeId)) {
427
- enteredSet.add(nodeId);
428
- }
429
- }
430
- }
431
-
432
- if (enteredSet.size > 0) {
433
- const enteredPriorityIds = buildPriorityIds(enteredSet, camX, camY);
434
- for (let i = 0; i < enteredPriorityIds.length; i++) {
435
- const nodeId = enteredPriorityIds[i];
436
- if (!used.has(nodeId)) {
437
- priorityIds.push(nodeId);
438
- used.add(nodeId);
439
- }
440
- }
441
- }
442
-
443
- if (priorityIds.length !== nextVisibleIds.size) {
444
- return buildPriorityIds(nextVisibleIds, camX, camY);
445
- }
446
-
447
- return priorityIds;
448
- }
449
-
450
- function handleVisibilityQuery(message) {
451
- const boardId = normalizeBoardId(message.boardId);
452
- if (!boardId || boardId !== runtime.boardId) {
453
- return;
454
- }
455
-
456
- const t0 = (typeof performance !== 'undefined' && typeof performance.now === 'function')
457
- ? performance.now()
458
- : Date.now();
459
-
460
- const camera = message.camera || {};
461
- const state = message.state || {};
462
- const seq = Number(message.seq || 0);
463
- const previousResultSeq = Math.max(0, Math.floor(Number(runtime.lastResultSeq || 0)));
464
- const mainLastAppliedSeq = Math.max(0, Math.floor(Number(message.mainLastAppliedSeq || 0)));
465
- const cellSize = Math.max(1, Number(message.cellSize || runtime.cellSize || 500));
466
- const camX = Number(camera.x || 0);
467
- const camY = Number(camera.y || 0);
468
- const camZ = Number(camera.z || 0);
469
- const camNear = Number(camera.near || 0);
470
- const camFar = Number(camera.far || Number.MAX_SAFE_INTEGER);
471
- const viewportW = Math.max(1, Number(camera.viewportW || 1));
472
- const viewportH = Math.max(1, Number(camera.viewportH || 1));
473
- const aspect = Math.max(0.1, Number(camera.aspect || 1));
474
- const fov = Number(camera.fov || 45);
475
- const isPanning = state.isPanning === true;
476
- const isZooming = state.isZooming === true;
477
- const isFullResMode = state.isFullResMode === true;
478
- const isCtrlWheelVerticalScrolling = state.isCtrlWheelVerticalScrolling === true;
479
-
480
- const marginPolicy = getVisibilityMarginPolicy(camZ, isPanning, isCtrlWheelVerticalScrolling);
481
- let marginWorld = 0;
482
- let verticalLeadMarginTopWorld = 0;
483
- let verticalLeadMarginBottomWorld = 0;
484
- let horizontalLeadMarginLeftWorld = 0;
485
- let horizontalLeadMarginRightWorld = 0;
486
-
487
- const vfov = (fov * Math.PI) / 180;
488
- const viewHeight = 2 * Math.tan(vfov / 2) * Math.max(1, camZ);
489
- const viewWidth = viewHeight * aspect;
490
- const worldPerPxX = viewWidth / viewportW;
491
- const worldPerPxY = viewHeight / viewportH;
492
- const rawMarginWorld = marginPolicy.cullingMarginPx * Math.max(worldPerPxX, worldPerPxY);
493
- marginWorld = Math.min(rawMarginWorld, cellSize * marginPolicy.maxMarginCells);
494
-
495
- if (isCtrlWheelVerticalScrolling && camZ < 12000) {
496
- const directionalLeadWorld = Math.min(
497
- rawMarginWorld * 0.8,
498
- cellSize * Math.max(1, marginPolicy.maxMarginCells - 1)
499
- );
500
- const lastCtrlWheelDeltaY = Number(state.lastCtrlWheelDeltaY || 0);
501
- if (lastCtrlWheelDeltaY < -0.01) {
502
- verticalLeadMarginTopWorld = directionalLeadWorld;
503
- } else if (lastCtrlWheelDeltaY > 0.01) {
504
- verticalLeadMarginBottomWorld = directionalLeadWorld;
505
- } else {
506
- verticalLeadMarginTopWorld = directionalLeadWorld * 0.5;
507
- verticalLeadMarginBottomWorld = directionalLeadWorld * 0.5;
508
- }
509
- }
510
-
511
- if (isPanning && camZ < 12000) {
512
- const panLeadWorld = Math.min(
513
- rawMarginWorld * (camZ < 4500 ? 1.35 : 1.1),
514
- cellSize * Math.max(1, marginPolicy.maxMarginCells)
515
- );
516
- const panDx = Number(state.lastPanWorldDeltaX || 0);
517
- const panDy = Number(state.lastPanWorldDeltaY || 0);
518
- if (panDx > 0.01) {
519
- horizontalLeadMarginRightWorld = panLeadWorld;
520
- } else if (panDx < -0.01) {
521
- horizontalLeadMarginLeftWorld = panLeadWorld;
522
- }
523
- if (panDy > 0.01) {
524
- verticalLeadMarginTopWorld = Math.max(verticalLeadMarginTopWorld, panLeadWorld);
525
- } else if (panDy < -0.01) {
526
- verticalLeadMarginBottomWorld = Math.max(verticalLeadMarginBottomWorld, panLeadWorld);
527
- }
528
- }
529
-
530
- const halfVisibleW = viewWidth / 2;
531
- const halfVisibleH = viewHeight / 2;
532
- const viewportLeft = camX - halfVisibleW;
533
- const viewportRight = camX + halfVisibleW;
534
- const viewportBottom = camY - halfVisibleH;
535
- const viewportTop = camY + halfVisibleH;
536
- const enterMarginWorld = marginWorld;
537
- const exitMarginWorld = marginWorld * FULL_RES_VISIBILITY_EXIT_MARGIN_SCALE;
538
-
539
- const currentEnterRect = {
540
- left: viewportLeft - (enterMarginWorld + horizontalLeadMarginLeftWorld),
541
- right: viewportRight + (enterMarginWorld + horizontalLeadMarginRightWorld),
542
- bottom: viewportBottom - (enterMarginWorld + verticalLeadMarginBottomWorld),
543
- top: viewportTop + (enterMarginWorld + verticalLeadMarginTopWorld)
544
- };
545
- const currentPreserveRect = {
546
- left: viewportLeft - (exitMarginWorld + horizontalLeadMarginLeftWorld),
547
- right: viewportRight + (exitMarginWorld + horizontalLeadMarginRightWorld),
548
- bottom: viewportBottom - (exitMarginWorld + verticalLeadMarginBottomWorld),
549
- top: viewportTop + (exitMarginWorld + verticalLeadMarginTopWorld)
550
- };
551
-
552
- const previousVisibilityRect = runtime.lastVisibilityRect || null;
553
- const currentRange = describeCellRange(currentEnterRect, cellSize);
554
- let candidateIds = new Set();
555
- let usedPopulatedCellScan = false;
556
- let directGridLookups = Number(currentRange?.directGridLookups || 0);
557
- let gridSpanX = Number(currentRange?.spanX || 0);
558
- let gridSpanY = Number(currentRange?.spanY || 0);
559
- const previousVisibleCount = runtime.lastVisibleIds.size;
560
- const nextVisibleIds = new Set();
561
- let usedIncrementalPanVisibility = false;
562
- let incrementalPanBandCount = 0;
563
- let incrementalPanCellLookups = 0;
564
- const canAttemptIncrementalFullResPan =
565
- isFullResMode === true &&
566
- isPanning === true &&
567
- isZooming !== true &&
568
- state.isWindowResizing !== true &&
569
- state.isResizing !== true &&
570
- previousVisibilityRect?.mode === 'full-res' &&
571
- runtime.lastNodeCount === runtime.nodes.size &&
572
- Math.abs(Number(previousVisibilityRect?.cameraZ || 0) - camZ) < 0.01 &&
573
- runtime.lastVisibleIds.size > 0;
574
-
575
- if (canAttemptIncrementalFullResPan && currentRange) {
576
- const prevRect = previousVisibilityRect;
577
- const epsilon = 0.01;
578
- const incrementalBands = [];
579
-
580
- if (currentEnterRect.left < Number(prevRect.left) - epsilon) {
581
- incrementalBands.push({
582
- left: currentEnterRect.left,
583
- right: Math.min(currentEnterRect.right, Number(prevRect.left)),
584
- bottom: currentEnterRect.bottom,
585
- top: currentEnterRect.top
586
- });
587
- }
588
- if (currentEnterRect.right > Number(prevRect.right) + epsilon) {
589
- incrementalBands.push({
590
- left: Math.max(currentEnterRect.left, Number(prevRect.right)),
591
- right: currentEnterRect.right,
592
- bottom: currentEnterRect.bottom,
593
- top: currentEnterRect.top
594
- });
595
- }
596
- if (currentEnterRect.bottom < Number(prevRect.bottom) - epsilon) {
597
- incrementalBands.push({
598
- left: currentEnterRect.left,
599
- right: currentEnterRect.right,
600
- bottom: currentEnterRect.bottom,
601
- top: Math.min(currentEnterRect.top, Number(prevRect.bottom))
602
- });
603
- }
604
- if (currentEnterRect.top > Number(prevRect.top) + epsilon) {
605
- incrementalBands.push({
606
- left: currentEnterRect.left,
607
- right: currentEnterRect.right,
608
- bottom: Math.max(currentEnterRect.bottom, Number(prevRect.top)),
609
- top: currentEnterRect.top
610
- });
611
- }
612
-
613
- const incrementalCellKeys = new Set();
614
- for (let i = 0; i < incrementalBands.length; i++) {
615
- const bandRange = describeCellRange(incrementalBands[i], cellSize);
616
- if (!bandRange || bandRange.directGridLookups <= 0) {
617
- continue;
618
- }
619
-
620
- incrementalPanBandCount++;
621
- buildCellKeySetFromRange(bandRange, incrementalCellKeys);
622
- }
623
-
624
- if (incrementalPanBandCount > 0 &&
625
- incrementalCellKeys.size > 0 &&
626
- incrementalCellKeys.size < directGridLookups) {
627
- usedIncrementalPanVisibility = true;
628
- incrementalPanCellLookups = incrementalCellKeys.size;
629
-
630
- runtime.lastVisibleIds.forEach((nodeId) => {
631
- if (runtime.nodes.has(nodeId)) {
632
- nextVisibleIds.add(nodeId);
633
- }
634
- });
635
- addCandidatesFromCellKeySet(incrementalCellKeys, candidateIds, true);
636
- }
637
- }
638
-
639
- if (!usedIncrementalPanVisibility) {
640
- const result = collectCandidates(currentRange);
641
- candidateIds = result.candidateIds;
642
- usedPopulatedCellScan = result.usedPopulatedCellScan;
643
- directGridLookups = result.directGridLookups;
644
- gridSpanX = result.gridSpanX;
645
- gridSpanY = result.gridSpanY;
646
- }
647
-
648
- candidateIds.forEach((nodeId) => {
649
- const node = runtime.nodes.get(nodeId);
650
- if (!node) {
651
- return;
652
- }
653
-
654
- const depth = camZ - node.z;
655
- if (depth <= camNear || depth >= camFar) {
656
- return;
657
- }
658
-
659
- const baseMarginWorld = runtime.lastVisibleIds.has(nodeId)
660
- ? exitMarginWorld
661
- : enterMarginWorld;
662
- const leftBound = viewportLeft - (baseMarginWorld + horizontalLeadMarginLeftWorld);
663
- const rightBound = viewportRight + (baseMarginWorld + horizontalLeadMarginRightWorld);
664
- const bottomBound = viewportBottom - (baseMarginWorld + verticalLeadMarginBottomWorld);
665
- const topBound = viewportTop + (baseMarginWorld + verticalLeadMarginTopWorld);
666
-
667
- const isVisible = !(
668
- node.maxX < leftBound ||
669
- node.minX > rightBound ||
670
- node.maxY < bottomBound ||
671
- node.minY > topBound
672
- );
673
-
674
- if (isVisible) {
675
- nextVisibleIds.add(nodeId);
676
- }
677
- });
678
-
679
- const enteredIds = [];
680
- nextVisibleIds.forEach((nodeId) => {
681
- if (!runtime.lastVisibleIds.has(nodeId)) {
682
- enteredIds.push(nodeId);
683
- }
684
- });
685
-
686
- const exitedIds = [];
687
- runtime.lastVisibleIds.forEach((nodeId) => {
688
- if (!usedIncrementalPanVisibility && !nextVisibleIds.has(nodeId)) {
689
- exitedIds.push(nodeId);
690
- }
691
- });
692
-
693
- const priorityIds = usedIncrementalPanVisibility
694
- ? buildIncrementalPriorityIds(nextVisibleIds, enteredIds, camX, camY)
695
- : buildPriorityIds(nextVisibleIds, camX, camY);
696
- const visibilityChanged = enteredIds.length > 0 || exitedIds.length > 0;
697
-
698
- runtime.lastVisibleIds = nextVisibleIds;
699
- runtime.lastPriorityIds = priorityIds;
700
- runtime.lastVisibilityRect = {
701
- left: currentEnterRect.left,
702
- right: currentEnterRect.right,
703
- bottom: currentEnterRect.bottom,
704
- top: currentEnterRect.top,
705
- mode: isFullResMode === true ? 'full-res' : 'lod',
706
- cameraZ: camZ
707
- };
708
- runtime.lastNodeCount = runtime.nodes.size;
709
- runtime.lastResultSeq = seq;
710
-
711
- const t1 = (typeof performance !== 'undefined' && typeof performance.now === 'function')
712
- ? performance.now()
713
- : Date.now();
714
-
715
- const canOmitFullVisibleIds =
716
- usedIncrementalPanVisibility === true &&
717
- mainLastAppliedSeq > 0 &&
718
- mainLastAppliedSeq === previousResultSeq &&
719
- seq === previousResultSeq + 1;
720
-
721
- self.postMessage({
722
- type: 'VISIBILITY_RESULT',
723
- boardId,
724
- seq,
725
- visibleIds: canOmitFullVisibleIds ? undefined : Array.from(nextVisibleIds),
726
- visibleCount: Number(nextVisibleIds.size || 0),
727
- enteredIds,
728
- exitedIds,
729
- priorityIds,
730
- visibilityChanged,
731
- viewportRect: runtime.lastVisibilityRect,
732
- lastVisibilityNodeCount: runtime.lastNodeCount,
733
- fullResVisibilityReconcilePending: usedIncrementalPanVisibility === true,
734
- profile: {
735
- durationMs: Number(Math.max(0, t1 - t0).toFixed(2)),
736
- cameraZ: Number((camZ || 0).toFixed(2)),
737
- useCoarseVisibility: marginPolicy.useCoarseVisibility === true,
738
- marginWorld: Number((marginWorld || 0).toFixed(2)),
739
- gridSpanX: Number(gridSpanX || 0),
740
- gridSpanY: Number(gridSpanY || 0),
741
- directGridLookups: Number(directGridLookups || 0),
742
- usedPopulatedCellScan: usedPopulatedCellScan === true,
743
- incrementalPanMode: usedIncrementalPanVisibility === true,
744
- incrementalPanBandCount,
745
- incrementalPanCellLookups,
746
- omittedFullVisibleIds: canOmitFullVisibleIds === true,
747
- candidateCount: Number(candidateIds.size || 0),
748
- processedCount: Number(candidateIds.size || 0),
749
- prevVisibleCount: Number(previousVisibleCount || 0),
750
- nextVisibleCount: Number(nextVisibleIds.size || 0),
751
- visibilityChanged: visibilityChanged === true
752
- }
753
- });
754
- }
755
-
756
- function handleHitTestQuery(message) {
757
- const boardId = normalizeBoardId(message.boardId);
758
- if (!boardId || boardId !== runtime.boardId) {
759
- return;
760
- }
761
-
762
- const seq = Number(message.seq || 0);
763
- const cellX = Math.floor(Number(message.cellX || 0));
764
- const cellY = Math.floor(Number(message.cellY || 0));
765
- const t0 = (typeof performance !== 'undefined' && typeof performance.now === 'function')
766
- ? performance.now()
767
- : Date.now();
768
- const { candidateIds, cellLookups, cellRadius } = collectHitTestCandidateIds(
769
- cellX,
770
- cellY,
771
- message.cellRadius
772
- );
773
- const t1 = (typeof performance !== 'undefined' && typeof performance.now === 'function')
774
- ? performance.now()
775
- : Date.now();
776
-
777
- self.postMessage({
778
- type: 'HIT_TEST_RESULT',
779
- boardId,
780
- seq,
781
- cellX,
782
- cellY,
783
- cellRadius,
784
- rangeKey: `${cellX}:${cellY}:${cellRadius}`,
785
- candidateIds: Array.from(candidateIds),
786
- profile: {
787
- durationMs: Number(Math.max(0, t1 - t0).toFixed(2)),
788
- cellLookups,
789
- candidateCount: Number(candidateIds.size || 0),
790
- spatialGridCellCount: Number(runtime.spatialGrid.size || 0)
791
- }
792
- });
793
- }
794
-
795
- function handleSelectionQuery(message) {
796
- const boardId = normalizeBoardId(message.boardId);
797
- if (!boardId || boardId !== runtime.boardId) {
798
- return;
799
- }
800
-
801
- const rect = normalizeSelectionRect(message.selectionRect);
802
- if (!rect) {
803
- return;
804
- }
805
-
806
- const seq = Number(message.seq || 0);
807
- const t0 = (typeof performance !== 'undefined' && typeof performance.now === 'function')
808
- ? performance.now()
809
- : Date.now();
810
- const range = describeCellRange(rect, Math.max(1, Number(message.cellSize || runtime.cellSize || 500)));
811
- const { candidateIds, usedPopulatedCellScan, directGridLookups, gridSpanX, gridSpanY } = collectCandidates(range);
812
- const selectedIds = [];
813
-
814
- candidateIds.forEach((nodeId) => {
815
- const node = runtime.nodes.get(nodeId);
816
- if (!node) {
817
- return;
818
- }
819
-
820
- if (node.minX >= rect.left &&
821
- node.maxX <= rect.right &&
822
- node.minY >= rect.bottom &&
823
- node.maxY <= rect.top) {
824
- selectedIds.push(nodeId);
825
- }
826
- });
827
-
828
- const t1 = (typeof performance !== 'undefined' && typeof performance.now === 'function')
829
- ? performance.now()
830
- : Date.now();
831
-
832
- self.postMessage({
833
- type: 'SELECTION_QUERY_RESULT',
834
- boardId,
835
- seq,
836
- selectedIds,
837
- selectionRect: rect,
838
- profile: {
839
- durationMs: Number(Math.max(0, t1 - t0).toFixed(2)),
840
- candidateCount: Number(candidateIds.size || 0),
841
- selectedCount: Number(selectedIds.length || 0),
842
- gridSpanX: Number(gridSpanX || 0),
843
- gridSpanY: Number(gridSpanY || 0),
844
- directGridLookups: Number(directGridLookups || 0),
845
- usedPopulatedCellScan: usedPopulatedCellScan === true
846
- }
847
- });
848
- }
849
-
850
- self.onmessage = function (event) {
851
- const message = event?.data || null;
852
- if (!message || typeof message !== 'object') {
853
- return;
854
- }
855
-
856
- switch (message.type) {
857
- case 'RESET_BOARD':
858
- clearState(message.boardId, message.cellSize);
859
- break;
860
- case 'REBUILD_BOARD':
861
- rebuildBoard(message.boardId, message.cellSize, message.nodes);
862
- break;
863
- case 'UPSERT_NODE':
864
- if (normalizeBoardId(message.boardId) === runtime.boardId) {
865
- upsertNode(message.node);
866
- }
867
- break;
868
- case 'REMOVE_NODE':
869
- if (normalizeBoardId(message.boardId) === runtime.boardId) {
870
- removeNode(message.nodeId);
871
- }
872
- break;
873
- case 'VISIBILITY_QUERY':
874
- handleVisibilityQuery(message);
875
- break;
876
- case 'HIT_TEST_QUERY':
877
- handleHitTestQuery(message);
878
- break;
879
- case 'SELECTION_QUERY':
880
- handleSelectionQuery(message);
881
- break;
882
- default:
883
- break;
884
- }
885
- };
886
-
887
- self.postMessage({
888
- type: 'READY',
889
- worker: 'visibility'
890
- });