cluaupp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (760) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/LICENSE +21 -0
  3. package/README.md +119 -0
  4. package/bin/cluau.js +4 -0
  5. package/bin/cluaupp.js +4 -0
  6. package/docs/README.md +20 -0
  7. package/docs/architecture.md +110 -0
  8. package/docs/cli.md +69 -0
  9. package/docs/comparison.md +37 -0
  10. package/docs/config.md +31 -0
  11. package/docs/cpp-advanced.md +71 -0
  12. package/docs/cpp-const.md +52 -0
  13. package/docs/cpp-organization.md +61 -0
  14. package/docs/cpp-safety.md +58 -0
  15. package/docs/cpp-types.md +66 -0
  16. package/docs/getting-started.md +169 -0
  17. package/docs/intro.md +37 -0
  18. package/docs/libraries.md +77 -0
  19. package/docs/roblox-api.md +81 -0
  20. package/docs/syntax.md +131 -0
  21. package/include/cluaupp/datatypes.hpp +581 -0
  22. package/include/cluaupp/generated/enums.hpp +4920 -0
  23. package/include/cluaupp/generated/instances.hpp +12489 -0
  24. package/include/cluaupp/libs/chrono.hpp +26 -0
  25. package/include/cluaupp/libs/cmdr.hpp +16 -0
  26. package/include/cluaupp/libs/dataservice.hpp +141 -0
  27. package/include/cluaupp/libs/display.hpp +13 -0
  28. package/include/cluaupp/libs/ezvisual.hpp +18 -0
  29. package/include/cluaupp/libs/formatnumber.hpp +15 -0
  30. package/include/cluaupp/libs/fusion.hpp +41 -0
  31. package/include/cluaupp/libs/iris.hpp +40 -0
  32. package/include/cluaupp/libs/janitor.hpp +35 -0
  33. package/include/cluaupp/libs/math.hpp +14 -0
  34. package/include/cluaupp/libs/module3d.hpp +25 -0
  35. package/include/cluaupp/libs/net.hpp +42 -0
  36. package/include/cluaupp/libs/promise.hpp +30 -0
  37. package/include/cluaupp/libs/spring.hpp +18 -0
  38. package/include/cluaupp/libs/statemachine.hpp +19 -0
  39. package/include/cluaupp/libs/stickybillboard.hpp +14 -0
  40. package/include/cluaupp/libs/topbarplus.hpp +29 -0
  41. package/include/cluaupp/libs/twinkle.hpp +15 -0
  42. package/include/cluaupp/libs/vfx.hpp +13 -0
  43. package/include/cluaupp/libs.hpp +25 -0
  44. package/include/cluaupp/roblox.hpp +28 -0
  45. package/package.json +65 -0
  46. package/runtime/ArrayIndexer/init.luau +144 -0
  47. package/runtime/Chrono/Client/ClientClock.luau +202 -0
  48. package/runtime/Chrono/Client/InterpolationBuffer.luau +74 -0
  49. package/runtime/Chrono/Client/ModelResolver.luau +53 -0
  50. package/runtime/Chrono/Client/Player.luau +113 -0
  51. package/runtime/Chrono/Client/Receiver.luau +395 -0
  52. package/runtime/Chrono/Client/Replicate.luau +333 -0
  53. package/runtime/Chrono/Client/Sender.luau +205 -0
  54. package/runtime/Chrono/LICENSE +21 -0
  55. package/runtime/Chrono/Server/EntityGrid.luau +299 -0
  56. package/runtime/Chrono/Server/Player.luau +141 -0
  57. package/runtime/Chrono/Server/Receiver.luau +287 -0
  58. package/runtime/Chrono/Server/Replicate.luau +415 -0
  59. package/runtime/Chrono/Server/Sender.luau +306 -0
  60. package/runtime/Chrono/Server/ServerClock.luau +50 -0
  61. package/runtime/Chrono/Shared/ApplyMounts.luau +137 -0
  62. package/runtime/Chrono/Shared/Bin.luau +31 -0
  63. package/runtime/Chrono/Shared/ClockUnwrap.luau +70 -0
  64. package/runtime/Chrono/Shared/Config.luau +264 -0
  65. package/runtime/Chrono/Shared/Entity.luau +1016 -0
  66. package/runtime/Chrono/Shared/Events.luau +39 -0
  67. package/runtime/Chrono/Shared/Holder.luau +210 -0
  68. package/runtime/Chrono/Shared/InterpolationMath.luau +51 -0
  69. package/runtime/Chrono/Shared/ModelHelper.luau +122 -0
  70. package/runtime/Chrono/Shared/Remotes/ClientClockRelay.model.json +3 -0
  71. package/runtime/Chrono/Shared/Remotes/ClientHeartbeat.model.json +3 -0
  72. package/runtime/Chrono/Shared/Remotes/ClientLoaded.model.json +3 -0
  73. package/runtime/Chrono/Shared/Remotes/Death.model.json +3 -0
  74. package/runtime/Chrono/Shared/Remotes/Heartbeat.model.json +3 -0
  75. package/runtime/Chrono/Shared/Remotes/Replicate.model.json +3 -0
  76. package/runtime/Chrono/Shared/Remotes/ReplicateFull.model.json +3 -0
  77. package/runtime/Chrono/Shared/Remotes/SafeReplicate.model.json +3 -0
  78. package/runtime/Chrono/Shared/ReplicationRules.luau +122 -0
  79. package/runtime/Chrono/Shared/Signal.luau +219 -0
  80. package/runtime/Chrono/Shared/Snapshots.luau +218 -0
  81. package/runtime/Chrono/Shared/Stats.luau +204 -0
  82. package/runtime/Chrono/Shared/Ticker.luau +112 -0
  83. package/runtime/Chrono/Shared/Types.luau +247 -0
  84. package/runtime/Chrono/Shared/Warn.luau +33 -0
  85. package/runtime/Chrono/Shared/_CUSTOM_MODEL_REP/init.model.json +3 -0
  86. package/runtime/Chrono/_impl/Client/ClientClock.luau +202 -0
  87. package/runtime/Chrono/_impl/Client/InterpolationBuffer.luau +74 -0
  88. package/runtime/Chrono/_impl/Client/ModelResolver.luau +53 -0
  89. package/runtime/Chrono/_impl/Client/Player.luau +113 -0
  90. package/runtime/Chrono/_impl/Client/Receiver.luau +395 -0
  91. package/runtime/Chrono/_impl/Client/Replicate.luau +333 -0
  92. package/runtime/Chrono/_impl/Client/Sender.luau +205 -0
  93. package/runtime/Chrono/_impl/LICENSE +21 -0
  94. package/runtime/Chrono/_impl/Server/EntityGrid.luau +299 -0
  95. package/runtime/Chrono/_impl/Server/Player.luau +141 -0
  96. package/runtime/Chrono/_impl/Server/Receiver.luau +287 -0
  97. package/runtime/Chrono/_impl/Server/Replicate.luau +415 -0
  98. package/runtime/Chrono/_impl/Server/Sender.luau +306 -0
  99. package/runtime/Chrono/_impl/Server/ServerClock.luau +50 -0
  100. package/runtime/Chrono/_impl/Shared/ApplyMounts.luau +137 -0
  101. package/runtime/Chrono/_impl/Shared/Bin.luau +31 -0
  102. package/runtime/Chrono/_impl/Shared/ClockUnwrap.luau +70 -0
  103. package/runtime/Chrono/_impl/Shared/Config.luau +264 -0
  104. package/runtime/Chrono/_impl/Shared/Entity.luau +1016 -0
  105. package/runtime/Chrono/_impl/Shared/Events.luau +39 -0
  106. package/runtime/Chrono/_impl/Shared/Holder.luau +210 -0
  107. package/runtime/Chrono/_impl/Shared/InterpolationMath.luau +51 -0
  108. package/runtime/Chrono/_impl/Shared/ModelHelper.luau +122 -0
  109. package/runtime/Chrono/_impl/Shared/Remotes/ClientClockRelay.model.json +3 -0
  110. package/runtime/Chrono/_impl/Shared/Remotes/ClientHeartbeat.model.json +3 -0
  111. package/runtime/Chrono/_impl/Shared/Remotes/ClientLoaded.model.json +3 -0
  112. package/runtime/Chrono/_impl/Shared/Remotes/Death.model.json +3 -0
  113. package/runtime/Chrono/_impl/Shared/Remotes/Heartbeat.model.json +3 -0
  114. package/runtime/Chrono/_impl/Shared/Remotes/Replicate.model.json +3 -0
  115. package/runtime/Chrono/_impl/Shared/Remotes/ReplicateFull.model.json +3 -0
  116. package/runtime/Chrono/_impl/Shared/Remotes/SafeReplicate.model.json +3 -0
  117. package/runtime/Chrono/_impl/Shared/ReplicationRules.luau +122 -0
  118. package/runtime/Chrono/_impl/Shared/Signal.luau +219 -0
  119. package/runtime/Chrono/_impl/Shared/Snapshots.luau +218 -0
  120. package/runtime/Chrono/_impl/Shared/Stats.luau +204 -0
  121. package/runtime/Chrono/_impl/Shared/Ticker.luau +112 -0
  122. package/runtime/Chrono/_impl/Shared/Types.luau +247 -0
  123. package/runtime/Chrono/_impl/Shared/Warn.luau +33 -0
  124. package/runtime/Chrono/_impl/Shared/_CUSTOM_MODEL_REP/init.model.json +3 -0
  125. package/runtime/Chrono/_impl/init.luau +96 -0
  126. package/runtime/Chrono/init.luau +14 -0
  127. package/runtime/Cmdr/BuiltInCommands/Admin/announce.luau +21 -0
  128. package/runtime/Cmdr/BuiltInCommands/Admin/announceServer.luau +17 -0
  129. package/runtime/Cmdr/BuiltInCommands/Admin/ban.luau +59 -0
  130. package/runtime/Cmdr/BuiltInCommands/Admin/banServer.luau +30 -0
  131. package/runtime/Cmdr/BuiltInCommands/Admin/gotoPlace.luau +35 -0
  132. package/runtime/Cmdr/BuiltInCommands/Admin/gotoPlaceServer.luau +17 -0
  133. package/runtime/Cmdr/BuiltInCommands/Admin/kick.luau +19 -0
  134. package/runtime/Cmdr/BuiltInCommands/Admin/kickServer.luau +27 -0
  135. package/runtime/Cmdr/BuiltInCommands/Admin/kill.luau +13 -0
  136. package/runtime/Cmdr/BuiltInCommands/Admin/killServer.luau +13 -0
  137. package/runtime/Cmdr/BuiltInCommands/Admin/respawn.luau +15 -0
  138. package/runtime/Cmdr/BuiltInCommands/Admin/respawnServer.luau +7 -0
  139. package/runtime/Cmdr/BuiltInCommands/Admin/teleport.luau +30 -0
  140. package/runtime/Cmdr/BuiltInCommands/Admin/teleportServer.luau +26 -0
  141. package/runtime/Cmdr/BuiltInCommands/Admin/unban.luau +26 -0
  142. package/runtime/Cmdr/BuiltInCommands/Admin/unbanServer.luau +10 -0
  143. package/runtime/Cmdr/BuiltInCommands/Debug/blink.luau +35 -0
  144. package/runtime/Cmdr/BuiltInCommands/Debug/fetch.luau +12 -0
  145. package/runtime/Cmdr/BuiltInCommands/Debug/fetchServer.luau +7 -0
  146. package/runtime/Cmdr/BuiltInCommands/Debug/getPlayerPlaceInstance.luau +20 -0
  147. package/runtime/Cmdr/BuiltInCommands/Debug/getPlayerPlaceInstanceServer.luau +28 -0
  148. package/runtime/Cmdr/BuiltInCommands/Debug/position.luau +30 -0
  149. package/runtime/Cmdr/BuiltInCommands/Debug/thru.luau +50 -0
  150. package/runtime/Cmdr/BuiltInCommands/Debug/uptime.luau +6 -0
  151. package/runtime/Cmdr/BuiltInCommands/Debug/uptimeServer.luau +12 -0
  152. package/runtime/Cmdr/BuiltInCommands/Debug/version.luau +12 -0
  153. package/runtime/Cmdr/BuiltInCommands/Utility/alias.luau +22 -0
  154. package/runtime/Cmdr/BuiltInCommands/Utility/bind.luau +104 -0
  155. package/runtime/Cmdr/BuiltInCommands/Utility/clear.luau +20 -0
  156. package/runtime/Cmdr/BuiltInCommands/Utility/convertTimestamp.luau +18 -0
  157. package/runtime/Cmdr/BuiltInCommands/Utility/echo.luau +17 -0
  158. package/runtime/Cmdr/BuiltInCommands/Utility/edit.luau +75 -0
  159. package/runtime/Cmdr/BuiltInCommands/Utility/exit.luau +11 -0
  160. package/runtime/Cmdr/BuiltInCommands/Utility/history.luau +27 -0
  161. package/runtime/Cmdr/BuiltInCommands/Utility/hover.luau +21 -0
  162. package/runtime/Cmdr/BuiltInCommands/Utility/jsonArrayDecode.luau +25 -0
  163. package/runtime/Cmdr/BuiltInCommands/Utility/jsonArrayEncode.luau +18 -0
  164. package/runtime/Cmdr/BuiltInCommands/Utility/len.luau +16 -0
  165. package/runtime/Cmdr/BuiltInCommands/Utility/math.luau +36 -0
  166. package/runtime/Cmdr/BuiltInCommands/Utility/pick.luau +21 -0
  167. package/runtime/Cmdr/BuiltInCommands/Utility/rand.luau +27 -0
  168. package/runtime/Cmdr/BuiltInCommands/Utility/replace.luau +32 -0
  169. package/runtime/Cmdr/BuiltInCommands/Utility/resolve.luau +32 -0
  170. package/runtime/Cmdr/BuiltInCommands/Utility/run.luau +20 -0
  171. package/runtime/Cmdr/BuiltInCommands/Utility/runLines.luau +34 -0
  172. package/runtime/Cmdr/BuiltInCommands/Utility/runif.luau +95 -0
  173. package/runtime/Cmdr/BuiltInCommands/Utility/unbind.luau +27 -0
  174. package/runtime/Cmdr/BuiltInCommands/Utility/var.luau +29 -0
  175. package/runtime/Cmdr/BuiltInCommands/Utility/varServer.luau +37 -0
  176. package/runtime/Cmdr/BuiltInCommands/Utility/varSet.luau +30 -0
  177. package/runtime/Cmdr/BuiltInCommands/Utility/varSetServer.luau +29 -0
  178. package/runtime/Cmdr/BuiltInCommands/help.luau +96 -0
  179. package/runtime/Cmdr/BuiltInTypes/BrickColor.luau +258 -0
  180. package/runtime/Cmdr/BuiltInTypes/Color3.luau +59 -0
  181. package/runtime/Cmdr/BuiltInTypes/Command.luau +23 -0
  182. package/runtime/Cmdr/BuiltInTypes/Duration.luau +111 -0
  183. package/runtime/Cmdr/BuiltInTypes/JSON.luau +13 -0
  184. package/runtime/Cmdr/BuiltInTypes/MathOperator.luau +43 -0
  185. package/runtime/Cmdr/BuiltInTypes/Player.luau +36 -0
  186. package/runtime/Cmdr/BuiltInTypes/PlayerId.luau +66 -0
  187. package/runtime/Cmdr/BuiltInTypes/Primitives.luau +145 -0
  188. package/runtime/Cmdr/BuiltInTypes/StoredKey.luau +33 -0
  189. package/runtime/Cmdr/BuiltInTypes/Team.luau +49 -0
  190. package/runtime/Cmdr/BuiltInTypes/Type.luau +23 -0
  191. package/runtime/Cmdr/BuiltInTypes/URL.luau +18 -0
  192. package/runtime/Cmdr/BuiltInTypes/UserInput.luau +32 -0
  193. package/runtime/Cmdr/BuiltInTypes/Vector.luau +58 -0
  194. package/runtime/Cmdr/CmdrClient/CmdrInterface/AutoComplete.luau +240 -0
  195. package/runtime/Cmdr/CmdrClient/CmdrInterface/CreateGui.luau +227 -0
  196. package/runtime/Cmdr/CmdrClient/CmdrInterface/Window.luau +713 -0
  197. package/runtime/Cmdr/CmdrClient/CmdrInterface/init.luau +18 -0
  198. package/runtime/Cmdr/CmdrClient/DefaultEventHandlers.luau +18 -0
  199. package/runtime/Cmdr/CmdrClient/Shared/Argument.luau +395 -0
  200. package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/HasCharacter.luau +39 -0
  201. package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/IsDataStoreAvailable.luau +36 -0
  202. package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/MaxArrayLength.luau +10 -0
  203. package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/MaxStringLength.luau +10 -0
  204. package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/NonEmptyString.luau +10 -0
  205. package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/NotEquals.luau +8 -0
  206. package/runtime/Cmdr/CmdrClient/Shared/Command.luau +415 -0
  207. package/runtime/Cmdr/CmdrClient/Shared/Dispatcher.luau +407 -0
  208. package/runtime/Cmdr/CmdrClient/Shared/Registry.luau +717 -0
  209. package/runtime/Cmdr/CmdrClient/Shared/Util.luau +879 -0
  210. package/runtime/Cmdr/CmdrClient/init.luau +377 -0
  211. package/runtime/Cmdr/LICENSE +21 -0
  212. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/announce.luau +21 -0
  213. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/announceServer.luau +17 -0
  214. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/ban.luau +59 -0
  215. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/banServer.luau +30 -0
  216. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/gotoPlace.luau +35 -0
  217. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/gotoPlaceServer.luau +17 -0
  218. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/kick.luau +19 -0
  219. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/kickServer.luau +27 -0
  220. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/kill.luau +13 -0
  221. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/killServer.luau +13 -0
  222. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/respawn.luau +15 -0
  223. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/respawnServer.luau +7 -0
  224. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/teleport.luau +30 -0
  225. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/teleportServer.luau +26 -0
  226. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/unban.luau +26 -0
  227. package/runtime/Cmdr/_impl/BuiltInCommands/Admin/unbanServer.luau +10 -0
  228. package/runtime/Cmdr/_impl/BuiltInCommands/Debug/blink.luau +35 -0
  229. package/runtime/Cmdr/_impl/BuiltInCommands/Debug/fetch.luau +12 -0
  230. package/runtime/Cmdr/_impl/BuiltInCommands/Debug/fetchServer.luau +7 -0
  231. package/runtime/Cmdr/_impl/BuiltInCommands/Debug/getPlayerPlaceInstance.luau +20 -0
  232. package/runtime/Cmdr/_impl/BuiltInCommands/Debug/getPlayerPlaceInstanceServer.luau +28 -0
  233. package/runtime/Cmdr/_impl/BuiltInCommands/Debug/position.luau +30 -0
  234. package/runtime/Cmdr/_impl/BuiltInCommands/Debug/thru.luau +50 -0
  235. package/runtime/Cmdr/_impl/BuiltInCommands/Debug/uptime.luau +6 -0
  236. package/runtime/Cmdr/_impl/BuiltInCommands/Debug/uptimeServer.luau +12 -0
  237. package/runtime/Cmdr/_impl/BuiltInCommands/Debug/version.luau +12 -0
  238. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/alias.luau +22 -0
  239. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/bind.luau +104 -0
  240. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/clear.luau +20 -0
  241. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/convertTimestamp.luau +18 -0
  242. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/echo.luau +17 -0
  243. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/edit.luau +75 -0
  244. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/exit.luau +11 -0
  245. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/history.luau +27 -0
  246. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/hover.luau +21 -0
  247. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/jsonArrayDecode.luau +25 -0
  248. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/jsonArrayEncode.luau +18 -0
  249. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/len.luau +16 -0
  250. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/math.luau +36 -0
  251. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/pick.luau +21 -0
  252. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/rand.luau +27 -0
  253. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/replace.luau +32 -0
  254. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/resolve.luau +32 -0
  255. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/run.luau +20 -0
  256. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/runLines.luau +34 -0
  257. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/runif.luau +95 -0
  258. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/unbind.luau +27 -0
  259. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/var.luau +29 -0
  260. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/varServer.luau +37 -0
  261. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/varSet.luau +30 -0
  262. package/runtime/Cmdr/_impl/BuiltInCommands/Utility/varSetServer.luau +29 -0
  263. package/runtime/Cmdr/_impl/BuiltInCommands/help.luau +96 -0
  264. package/runtime/Cmdr/_impl/BuiltInTypes/BrickColor.luau +258 -0
  265. package/runtime/Cmdr/_impl/BuiltInTypes/Color3.luau +59 -0
  266. package/runtime/Cmdr/_impl/BuiltInTypes/Command.luau +23 -0
  267. package/runtime/Cmdr/_impl/BuiltInTypes/Duration.luau +111 -0
  268. package/runtime/Cmdr/_impl/BuiltInTypes/JSON.luau +13 -0
  269. package/runtime/Cmdr/_impl/BuiltInTypes/MathOperator.luau +43 -0
  270. package/runtime/Cmdr/_impl/BuiltInTypes/Player.luau +36 -0
  271. package/runtime/Cmdr/_impl/BuiltInTypes/PlayerId.luau +66 -0
  272. package/runtime/Cmdr/_impl/BuiltInTypes/Primitives.luau +145 -0
  273. package/runtime/Cmdr/_impl/BuiltInTypes/StoredKey.luau +33 -0
  274. package/runtime/Cmdr/_impl/BuiltInTypes/Team.luau +49 -0
  275. package/runtime/Cmdr/_impl/BuiltInTypes/Type.luau +23 -0
  276. package/runtime/Cmdr/_impl/BuiltInTypes/URL.luau +18 -0
  277. package/runtime/Cmdr/_impl/BuiltInTypes/UserInput.luau +32 -0
  278. package/runtime/Cmdr/_impl/BuiltInTypes/Vector.luau +58 -0
  279. package/runtime/Cmdr/_impl/CmdrClient/CmdrInterface/AutoComplete.luau +240 -0
  280. package/runtime/Cmdr/_impl/CmdrClient/CmdrInterface/CreateGui.luau +227 -0
  281. package/runtime/Cmdr/_impl/CmdrClient/CmdrInterface/Window.luau +713 -0
  282. package/runtime/Cmdr/_impl/CmdrClient/CmdrInterface/init.luau +18 -0
  283. package/runtime/Cmdr/_impl/CmdrClient/DefaultEventHandlers.luau +18 -0
  284. package/runtime/Cmdr/_impl/CmdrClient/Shared/Argument.luau +395 -0
  285. package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/HasCharacter.luau +39 -0
  286. package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/IsDataStoreAvailable.luau +36 -0
  287. package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/MaxArrayLength.luau +10 -0
  288. package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/MaxStringLength.luau +10 -0
  289. package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/NonEmptyString.luau +10 -0
  290. package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/NotEquals.luau +8 -0
  291. package/runtime/Cmdr/_impl/CmdrClient/Shared/Command.luau +415 -0
  292. package/runtime/Cmdr/_impl/CmdrClient/Shared/Dispatcher.luau +407 -0
  293. package/runtime/Cmdr/_impl/CmdrClient/Shared/Registry.luau +717 -0
  294. package/runtime/Cmdr/_impl/CmdrClient/Shared/Util.luau +879 -0
  295. package/runtime/Cmdr/_impl/CmdrClient/init.luau +377 -0
  296. package/runtime/Cmdr/_impl/LICENSE +21 -0
  297. package/runtime/Cmdr/_impl/init.luau +178 -0
  298. package/runtime/Cmdr/init.luau +8 -0
  299. package/runtime/DataService/Client.luau +209 -0
  300. package/runtime/DataService/Data.luau +886 -0
  301. package/runtime/DataService/Enum.luau +6 -0
  302. package/runtime/DataService/Enums.luau +10 -0
  303. package/runtime/DataService/Packages/quicknet/DataTypes.luau +70 -0
  304. package/runtime/DataService/Packages/quicknet/Enums.luau +85 -0
  305. package/runtime/DataService/Packages/quicknet/EnumsToNativeTypes.luau +57 -0
  306. package/runtime/DataService/Packages/quicknet/Parser.luau +355 -0
  307. package/runtime/DataService/Packages/quicknet/QuickNet.luau +953 -0
  308. package/runtime/DataService/Packages/quicknet/Serialize.luau +2020 -0
  309. package/runtime/DataService/Packages/quicknet/Types.luau +72 -0
  310. package/runtime/DataService/Packages/quicknet/init.luau +1 -0
  311. package/runtime/DataService/Packages/signal/init.luau +433 -0
  312. package/runtime/DataService/Path.luau +236 -0
  313. package/runtime/DataService/ProfileStore.luau +2243 -0
  314. package/runtime/DataService/Replicator.luau +172 -0
  315. package/runtime/DataService/Server.luau +412 -0
  316. package/runtime/DataService/init.luau +204 -0
  317. package/runtime/Display/LICENSE +201 -0
  318. package/runtime/Display/_impl/LICENSE +201 -0
  319. package/runtime/Display/_impl/init.luau +269 -0
  320. package/runtime/Display/_impl/option.luau +237 -0
  321. package/runtime/Display/init.luau +10 -0
  322. package/runtime/Display/option.luau +237 -0
  323. package/runtime/EzVisualz/Dropshadow.luau +148 -0
  324. package/runtime/EzVisualz/Gradient.luau +452 -0
  325. package/runtime/EzVisualz/GradientTemplates/Bubblegum.luau +16 -0
  326. package/runtime/EzVisualz/GradientTemplates/Chrome.luau +16 -0
  327. package/runtime/EzVisualz/GradientTemplates/Death.luau +15 -0
  328. package/runtime/EzVisualz/GradientTemplates/Electric.luau +14 -0
  329. package/runtime/EzVisualz/GradientTemplates/Fire.luau +13 -0
  330. package/runtime/EzVisualz/GradientTemplates/Galaxy.luau +11 -0
  331. package/runtime/EzVisualz/GradientTemplates/Ghost.luau +16 -0
  332. package/runtime/EzVisualz/GradientTemplates/Gold.luau +14 -0
  333. package/runtime/EzVisualz/GradientTemplates/Green.luau +14 -0
  334. package/runtime/EzVisualz/GradientTemplates/Ice.luau +14 -0
  335. package/runtime/EzVisualz/GradientTemplates/Lava.luau +15 -0
  336. package/runtime/EzVisualz/GradientTemplates/Matrix.luau +19 -0
  337. package/runtime/EzVisualz/GradientTemplates/Neon.luau +12 -0
  338. package/runtime/EzVisualz/GradientTemplates/Oceanic.luau +15 -0
  339. package/runtime/EzVisualz/GradientTemplates/Rainbow.luau +13 -0
  340. package/runtime/EzVisualz/GradientTemplates/Silver.luau +12 -0
  341. package/runtime/EzVisualz/GradientTemplates/Sunset.luau +11 -0
  342. package/runtime/EzVisualz/GradientTemplates/Zebra.luau +18 -0
  343. package/runtime/EzVisualz/GradientTemplates/init.luau +9 -0
  344. package/runtime/EzVisualz/LICENSE.md +21 -0
  345. package/runtime/EzVisualz/Presets/Bubblegum.luau +36 -0
  346. package/runtime/EzVisualz/Presets/ChromeStroke.luau +15 -0
  347. package/runtime/EzVisualz/Presets/DeathStroke.luau +15 -0
  348. package/runtime/EzVisualz/Presets/ElectricStroke.luau +54 -0
  349. package/runtime/EzVisualz/Presets/FireStroke.luau +29 -0
  350. package/runtime/EzVisualz/Presets/GalaxyStroke.luau +31 -0
  351. package/runtime/EzVisualz/Presets/Ghost.luau +10 -0
  352. package/runtime/EzVisualz/Presets/GhostStroke.luau +15 -0
  353. package/runtime/EzVisualz/Presets/Gold.luau +10 -0
  354. package/runtime/EzVisualz/Presets/GoldStroke.luau +15 -0
  355. package/runtime/EzVisualz/Presets/GreenOutline.luau +23 -0
  356. package/runtime/EzVisualz/Presets/IceStroke.luau +15 -0
  357. package/runtime/EzVisualz/Presets/Lava.luau +9 -0
  358. package/runtime/EzVisualz/Presets/LavaStroke.luau +13 -0
  359. package/runtime/EzVisualz/Presets/Matrix.luau +21 -0
  360. package/runtime/EzVisualz/Presets/NeonStroke.luau +30 -0
  361. package/runtime/EzVisualz/Presets/OceanicStroke.luau +15 -0
  362. package/runtime/EzVisualz/Presets/Rainbow.luau +9 -0
  363. package/runtime/EzVisualz/Presets/RainbowOutline.luau +23 -0
  364. package/runtime/EzVisualz/Presets/RainbowStroke.luau +13 -0
  365. package/runtime/EzVisualz/Presets/Shine.luau +48 -0
  366. package/runtime/EzVisualz/Presets/ShineOutline.luau +66 -0
  367. package/runtime/EzVisualz/Presets/Silver.luau +10 -0
  368. package/runtime/EzVisualz/Presets/SilverStroke.luau +15 -0
  369. package/runtime/EzVisualz/Presets/SunsetStroke.luau +31 -0
  370. package/runtime/EzVisualz/Presets/WaveStroke.luau +33 -0
  371. package/runtime/EzVisualz/Presets/Zebra.luau +21 -0
  372. package/runtime/EzVisualz/Presets/init.luau +9 -0
  373. package/runtime/EzVisualz/Stroke.luau +167 -0
  374. package/runtime/EzVisualz/Util.luau +7 -0
  375. package/runtime/EzVisualz/_impl/Dropshadow.luau +148 -0
  376. package/runtime/EzVisualz/_impl/Gradient.luau +452 -0
  377. package/runtime/EzVisualz/_impl/GradientTemplates/Bubblegum.luau +16 -0
  378. package/runtime/EzVisualz/_impl/GradientTemplates/Chrome.luau +16 -0
  379. package/runtime/EzVisualz/_impl/GradientTemplates/Death.luau +15 -0
  380. package/runtime/EzVisualz/_impl/GradientTemplates/Electric.luau +14 -0
  381. package/runtime/EzVisualz/_impl/GradientTemplates/Fire.luau +13 -0
  382. package/runtime/EzVisualz/_impl/GradientTemplates/Galaxy.luau +11 -0
  383. package/runtime/EzVisualz/_impl/GradientTemplates/Ghost.luau +16 -0
  384. package/runtime/EzVisualz/_impl/GradientTemplates/Gold.luau +14 -0
  385. package/runtime/EzVisualz/_impl/GradientTemplates/Green.luau +14 -0
  386. package/runtime/EzVisualz/_impl/GradientTemplates/Ice.luau +14 -0
  387. package/runtime/EzVisualz/_impl/GradientTemplates/Lava.luau +15 -0
  388. package/runtime/EzVisualz/_impl/GradientTemplates/Matrix.luau +19 -0
  389. package/runtime/EzVisualz/_impl/GradientTemplates/Neon.luau +12 -0
  390. package/runtime/EzVisualz/_impl/GradientTemplates/Oceanic.luau +15 -0
  391. package/runtime/EzVisualz/_impl/GradientTemplates/Rainbow.luau +13 -0
  392. package/runtime/EzVisualz/_impl/GradientTemplates/Silver.luau +12 -0
  393. package/runtime/EzVisualz/_impl/GradientTemplates/Sunset.luau +11 -0
  394. package/runtime/EzVisualz/_impl/GradientTemplates/Zebra.luau +18 -0
  395. package/runtime/EzVisualz/_impl/GradientTemplates/init.luau +9 -0
  396. package/runtime/EzVisualz/_impl/LICENSE.md +21 -0
  397. package/runtime/EzVisualz/_impl/Presets/Bubblegum.luau +36 -0
  398. package/runtime/EzVisualz/_impl/Presets/ChromeStroke.luau +15 -0
  399. package/runtime/EzVisualz/_impl/Presets/DeathStroke.luau +15 -0
  400. package/runtime/EzVisualz/_impl/Presets/ElectricStroke.luau +54 -0
  401. package/runtime/EzVisualz/_impl/Presets/FireStroke.luau +29 -0
  402. package/runtime/EzVisualz/_impl/Presets/GalaxyStroke.luau +31 -0
  403. package/runtime/EzVisualz/_impl/Presets/Ghost.luau +10 -0
  404. package/runtime/EzVisualz/_impl/Presets/GhostStroke.luau +15 -0
  405. package/runtime/EzVisualz/_impl/Presets/Gold.luau +10 -0
  406. package/runtime/EzVisualz/_impl/Presets/GoldStroke.luau +15 -0
  407. package/runtime/EzVisualz/_impl/Presets/GreenOutline.luau +23 -0
  408. package/runtime/EzVisualz/_impl/Presets/IceStroke.luau +15 -0
  409. package/runtime/EzVisualz/_impl/Presets/Lava.luau +9 -0
  410. package/runtime/EzVisualz/_impl/Presets/LavaStroke.luau +13 -0
  411. package/runtime/EzVisualz/_impl/Presets/Matrix.luau +21 -0
  412. package/runtime/EzVisualz/_impl/Presets/NeonStroke.luau +30 -0
  413. package/runtime/EzVisualz/_impl/Presets/OceanicStroke.luau +15 -0
  414. package/runtime/EzVisualz/_impl/Presets/Rainbow.luau +9 -0
  415. package/runtime/EzVisualz/_impl/Presets/RainbowOutline.luau +23 -0
  416. package/runtime/EzVisualz/_impl/Presets/RainbowStroke.luau +13 -0
  417. package/runtime/EzVisualz/_impl/Presets/Shine.luau +48 -0
  418. package/runtime/EzVisualz/_impl/Presets/ShineOutline.luau +66 -0
  419. package/runtime/EzVisualz/_impl/Presets/Silver.luau +10 -0
  420. package/runtime/EzVisualz/_impl/Presets/SilverStroke.luau +15 -0
  421. package/runtime/EzVisualz/_impl/Presets/SunsetStroke.luau +31 -0
  422. package/runtime/EzVisualz/_impl/Presets/WaveStroke.luau +33 -0
  423. package/runtime/EzVisualz/_impl/Presets/Zebra.luau +21 -0
  424. package/runtime/EzVisualz/_impl/Presets/init.luau +9 -0
  425. package/runtime/EzVisualz/_impl/Stroke.luau +167 -0
  426. package/runtime/EzVisualz/_impl/Util.luau +7 -0
  427. package/runtime/EzVisualz/_impl/init.luau +319 -0
  428. package/runtime/EzVisualz/_impl/wally.lock +8 -0
  429. package/runtime/EzVisualz/_impl/wally.toml +8 -0
  430. package/runtime/EzVisualz/init.luau +9 -0
  431. package/runtime/EzVisualz/wally.lock +8 -0
  432. package/runtime/EzVisualz/wally.toml +8 -0
  433. package/runtime/FormatNumber/LICENSE.md +25 -0
  434. package/runtime/FormatNumber/Main/DecimalFormatSymbols.lua +43 -0
  435. package/runtime/FormatNumber/Main/IntegerWidth.lua +41 -0
  436. package/runtime/FormatNumber/Main/Notation.lua +116 -0
  437. package/runtime/FormatNumber/Main/Precision.lua +179 -0
  438. package/runtime/FormatNumber/Main/init.lua +199 -0
  439. package/runtime/FormatNumber/Simple/init.lua +76 -0
  440. package/runtime/FormatNumber/Version.lua +82 -0
  441. package/runtime/FormatNumber/_impl/LICENSE.md +25 -0
  442. package/runtime/FormatNumber/_impl/Main/DecimalFormatSymbols.lua +43 -0
  443. package/runtime/FormatNumber/_impl/Main/IntegerWidth.lua +41 -0
  444. package/runtime/FormatNumber/_impl/Main/Notation.lua +116 -0
  445. package/runtime/FormatNumber/_impl/Main/Precision.lua +179 -0
  446. package/runtime/FormatNumber/_impl/Main/init.lua +199 -0
  447. package/runtime/FormatNumber/_impl/Simple/init.lua +76 -0
  448. package/runtime/FormatNumber/_impl/Version.lua +82 -0
  449. package/runtime/FormatNumber/_impl/_internal/class.lua +204 -0
  450. package/runtime/FormatNumber/_impl/_internal/decimal_conversion.lua +30 -0
  451. package/runtime/FormatNumber/_impl/_internal/enums.lua +55 -0
  452. package/runtime/FormatNumber/_impl/_internal/format.lua +342 -0
  453. package/runtime/FormatNumber/_impl/_internal/formatter_settings.lua +160 -0
  454. package/runtime/FormatNumber/_impl/_internal/init.lua +8 -0
  455. package/runtime/FormatNumber/_impl/_internal/skeleton.lua +541 -0
  456. package/runtime/FormatNumber/_impl/init.lua +20 -0
  457. package/runtime/FormatNumber/_internal/class.lua +204 -0
  458. package/runtime/FormatNumber/_internal/decimal_conversion.lua +30 -0
  459. package/runtime/FormatNumber/_internal/enums.lua +55 -0
  460. package/runtime/FormatNumber/_internal/format.lua +342 -0
  461. package/runtime/FormatNumber/_internal/formatter_settings.lua +160 -0
  462. package/runtime/FormatNumber/_internal/init.lua +8 -0
  463. package/runtime/FormatNumber/_internal/skeleton.lua +541 -0
  464. package/runtime/FormatNumber/init.lua +20 -0
  465. package/runtime/FormatNumber/init.luau +20 -0
  466. package/runtime/Fusion/Animation/ExternalTime.luau +84 -0
  467. package/runtime/Fusion/Animation/Spring.luau +313 -0
  468. package/runtime/Fusion/Animation/Stopwatch.luau +128 -0
  469. package/runtime/Fusion/Animation/Tween.luau +178 -0
  470. package/runtime/Fusion/Animation/getTweenDuration.luau +27 -0
  471. package/runtime/Fusion/Animation/getTweenRatio.luau +47 -0
  472. package/runtime/Fusion/Animation/lerpType.luau +164 -0
  473. package/runtime/Fusion/Animation/packType.luau +100 -0
  474. package/runtime/Fusion/Animation/springCoefficients.luau +80 -0
  475. package/runtime/Fusion/Animation/unpackType.luau +103 -0
  476. package/runtime/Fusion/Colour/Oklab.luau +70 -0
  477. package/runtime/Fusion/Colour/sRGB.luau +47 -0
  478. package/runtime/Fusion/External.luau +156 -0
  479. package/runtime/Fusion/ExternalDebug.luau +70 -0
  480. package/runtime/Fusion/Graph/Observer.luau +111 -0
  481. package/runtime/Fusion/Graph/castToGraph.luau +29 -0
  482. package/runtime/Fusion/Graph/change.luau +81 -0
  483. package/runtime/Fusion/Graph/depend.luau +33 -0
  484. package/runtime/Fusion/Graph/evaluate.luau +56 -0
  485. package/runtime/Fusion/Instances/Attribute.luau +58 -0
  486. package/runtime/Fusion/Instances/AttributeChange.luau +47 -0
  487. package/runtime/Fusion/Instances/AttributeOut.luau +63 -0
  488. package/runtime/Fusion/Instances/Child.luau +21 -0
  489. package/runtime/Fusion/Instances/Children.luau +148 -0
  490. package/runtime/Fusion/Instances/Hydrate.luau +29 -0
  491. package/runtime/Fusion/Instances/New.luau +48 -0
  492. package/runtime/Fusion/Instances/OnChange.luau +50 -0
  493. package/runtime/Fusion/Instances/OnEvent.luau +54 -0
  494. package/runtime/Fusion/Instances/Out.luau +69 -0
  495. package/runtime/Fusion/Instances/Tag.luau +61 -0
  496. package/runtime/Fusion/Instances/applyInstanceProps.luau +149 -0
  497. package/runtime/Fusion/Instances/defaultProps.luau +194 -0
  498. package/runtime/Fusion/LICENSE +21 -0
  499. package/runtime/Fusion/Logging/formatError.luau +49 -0
  500. package/runtime/Fusion/Logging/messages.luau +46 -0
  501. package/runtime/Fusion/Logging/parseError.luau +25 -0
  502. package/runtime/Fusion/Memory/checkLifetime.luau +134 -0
  503. package/runtime/Fusion/Memory/deriveScope.luau +24 -0
  504. package/runtime/Fusion/Memory/deriveScopeImpl.luau +40 -0
  505. package/runtime/Fusion/Memory/doCleanup.luau +91 -0
  506. package/runtime/Fusion/Memory/innerScope.luau +34 -0
  507. package/runtime/Fusion/Memory/insert.luau +22 -0
  508. package/runtime/Fusion/Memory/needsDestruction.luau +17 -0
  509. package/runtime/Fusion/Memory/scoped.luau +24 -0
  510. package/runtime/Fusion/RobloxExternal.luau +98 -0
  511. package/runtime/Fusion/State/Computed.luau +122 -0
  512. package/runtime/Fusion/State/For/Disassembly.luau +207 -0
  513. package/runtime/Fusion/State/For/ForTypes.luau +30 -0
  514. package/runtime/Fusion/State/For/init.luau +101 -0
  515. package/runtime/Fusion/State/ForKeys.luau +88 -0
  516. package/runtime/Fusion/State/ForPairs.luau +91 -0
  517. package/runtime/Fusion/State/ForValues.luau +88 -0
  518. package/runtime/Fusion/State/Value.luau +76 -0
  519. package/runtime/Fusion/State/castToState.luau +26 -0
  520. package/runtime/Fusion/State/peek.luau +31 -0
  521. package/runtime/Fusion/State/updateAll.luau +1 -0
  522. package/runtime/Fusion/Types.luau +318 -0
  523. package/runtime/Fusion/Utility/Contextual.luau +91 -0
  524. package/runtime/Fusion/Utility/Safe.luau +23 -0
  525. package/runtime/Fusion/Utility/isSimilar.luau +29 -0
  526. package/runtime/Fusion/Utility/merge.luau +35 -0
  527. package/runtime/Fusion/Utility/nameOf.luau +35 -0
  528. package/runtime/Fusion/Utility/never.luau +14 -0
  529. package/runtime/Fusion/Utility/nicknames.luau +11 -0
  530. package/runtime/Fusion/Utility/xtypeof.luau +27 -0
  531. package/runtime/Fusion/_impl/Animation/ExternalTime.luau +84 -0
  532. package/runtime/Fusion/_impl/Animation/Spring.luau +313 -0
  533. package/runtime/Fusion/_impl/Animation/Stopwatch.luau +128 -0
  534. package/runtime/Fusion/_impl/Animation/Tween.luau +178 -0
  535. package/runtime/Fusion/_impl/Animation/getTweenDuration.luau +27 -0
  536. package/runtime/Fusion/_impl/Animation/getTweenRatio.luau +47 -0
  537. package/runtime/Fusion/_impl/Animation/lerpType.luau +164 -0
  538. package/runtime/Fusion/_impl/Animation/packType.luau +100 -0
  539. package/runtime/Fusion/_impl/Animation/springCoefficients.luau +80 -0
  540. package/runtime/Fusion/_impl/Animation/unpackType.luau +103 -0
  541. package/runtime/Fusion/_impl/Colour/Oklab.luau +70 -0
  542. package/runtime/Fusion/_impl/Colour/sRGB.luau +47 -0
  543. package/runtime/Fusion/_impl/External.luau +156 -0
  544. package/runtime/Fusion/_impl/ExternalDebug.luau +70 -0
  545. package/runtime/Fusion/_impl/Graph/Observer.luau +111 -0
  546. package/runtime/Fusion/_impl/Graph/castToGraph.luau +29 -0
  547. package/runtime/Fusion/_impl/Graph/change.luau +81 -0
  548. package/runtime/Fusion/_impl/Graph/depend.luau +33 -0
  549. package/runtime/Fusion/_impl/Graph/evaluate.luau +56 -0
  550. package/runtime/Fusion/_impl/Instances/Attribute.luau +58 -0
  551. package/runtime/Fusion/_impl/Instances/AttributeChange.luau +47 -0
  552. package/runtime/Fusion/_impl/Instances/AttributeOut.luau +63 -0
  553. package/runtime/Fusion/_impl/Instances/Child.luau +21 -0
  554. package/runtime/Fusion/_impl/Instances/Children.luau +148 -0
  555. package/runtime/Fusion/_impl/Instances/Hydrate.luau +29 -0
  556. package/runtime/Fusion/_impl/Instances/New.luau +48 -0
  557. package/runtime/Fusion/_impl/Instances/OnChange.luau +50 -0
  558. package/runtime/Fusion/_impl/Instances/OnEvent.luau +54 -0
  559. package/runtime/Fusion/_impl/Instances/Out.luau +69 -0
  560. package/runtime/Fusion/_impl/Instances/Tag.luau +61 -0
  561. package/runtime/Fusion/_impl/Instances/applyInstanceProps.luau +149 -0
  562. package/runtime/Fusion/_impl/Instances/defaultProps.luau +194 -0
  563. package/runtime/Fusion/_impl/LICENSE +21 -0
  564. package/runtime/Fusion/_impl/Logging/formatError.luau +49 -0
  565. package/runtime/Fusion/_impl/Logging/messages.luau +46 -0
  566. package/runtime/Fusion/_impl/Logging/parseError.luau +25 -0
  567. package/runtime/Fusion/_impl/Memory/checkLifetime.luau +134 -0
  568. package/runtime/Fusion/_impl/Memory/deriveScope.luau +24 -0
  569. package/runtime/Fusion/_impl/Memory/deriveScopeImpl.luau +40 -0
  570. package/runtime/Fusion/_impl/Memory/doCleanup.luau +91 -0
  571. package/runtime/Fusion/_impl/Memory/innerScope.luau +34 -0
  572. package/runtime/Fusion/_impl/Memory/insert.luau +22 -0
  573. package/runtime/Fusion/_impl/Memory/needsDestruction.luau +17 -0
  574. package/runtime/Fusion/_impl/Memory/scoped.luau +24 -0
  575. package/runtime/Fusion/_impl/RobloxExternal.luau +98 -0
  576. package/runtime/Fusion/_impl/State/Computed.luau +122 -0
  577. package/runtime/Fusion/_impl/State/For/Disassembly.luau +207 -0
  578. package/runtime/Fusion/_impl/State/For/ForTypes.luau +30 -0
  579. package/runtime/Fusion/_impl/State/For/init.luau +101 -0
  580. package/runtime/Fusion/_impl/State/ForKeys.luau +88 -0
  581. package/runtime/Fusion/_impl/State/ForPairs.luau +91 -0
  582. package/runtime/Fusion/_impl/State/ForValues.luau +88 -0
  583. package/runtime/Fusion/_impl/State/Value.luau +76 -0
  584. package/runtime/Fusion/_impl/State/castToState.luau +26 -0
  585. package/runtime/Fusion/_impl/State/peek.luau +31 -0
  586. package/runtime/Fusion/_impl/State/updateAll.luau +1 -0
  587. package/runtime/Fusion/_impl/Types.luau +318 -0
  588. package/runtime/Fusion/_impl/Utility/Contextual.luau +91 -0
  589. package/runtime/Fusion/_impl/Utility/Safe.luau +23 -0
  590. package/runtime/Fusion/_impl/Utility/isSimilar.luau +29 -0
  591. package/runtime/Fusion/_impl/Utility/merge.luau +35 -0
  592. package/runtime/Fusion/_impl/Utility/nameOf.luau +35 -0
  593. package/runtime/Fusion/_impl/Utility/never.luau +14 -0
  594. package/runtime/Fusion/_impl/Utility/nicknames.luau +11 -0
  595. package/runtime/Fusion/_impl/Utility/xtypeof.luau +27 -0
  596. package/runtime/Fusion/_impl/init.luau +83 -0
  597. package/runtime/Fusion/init.luau +27 -0
  598. package/runtime/Iris/API.lua +2085 -0
  599. package/runtime/Iris/Internal.lua +895 -0
  600. package/runtime/Iris/LICENSE.txt +21 -0
  601. package/runtime/Iris/PubTypes.lua +43 -0
  602. package/runtime/Iris/Types.lua +660 -0
  603. package/runtime/Iris/WidgetTypes.lua +521 -0
  604. package/runtime/Iris/_impl/API.lua +2085 -0
  605. package/runtime/Iris/_impl/Internal.lua +895 -0
  606. package/runtime/Iris/_impl/LICENSE.txt +21 -0
  607. package/runtime/Iris/_impl/PubTypes.lua +43 -0
  608. package/runtime/Iris/_impl/Types.lua +660 -0
  609. package/runtime/Iris/_impl/WidgetTypes.lua +521 -0
  610. package/runtime/Iris/_impl/config.lua +305 -0
  611. package/runtime/Iris/_impl/init.lua +696 -0
  612. package/runtime/Iris/_impl/widgets/Button.lua +90 -0
  613. package/runtime/Iris/_impl/widgets/Checkbox.lua +115 -0
  614. package/runtime/Iris/_impl/widgets/Combo.lua +492 -0
  615. package/runtime/Iris/_impl/widgets/Format.lua +140 -0
  616. package/runtime/Iris/_impl/widgets/Image.lua +155 -0
  617. package/runtime/Iris/_impl/widgets/Input.lua +1232 -0
  618. package/runtime/Iris/_impl/widgets/Menu.lua +599 -0
  619. package/runtime/Iris/_impl/widgets/Plot.lua +639 -0
  620. package/runtime/Iris/_impl/widgets/RadioButton.lua +126 -0
  621. package/runtime/Iris/_impl/widgets/Root.lua +143 -0
  622. package/runtime/Iris/_impl/widgets/Tab.lua +333 -0
  623. package/runtime/Iris/_impl/widgets/Table.lua +635 -0
  624. package/runtime/Iris/_impl/widgets/Text.lua +132 -0
  625. package/runtime/Iris/_impl/widgets/Tree.lua +287 -0
  626. package/runtime/Iris/_impl/widgets/Window.lua +1075 -0
  627. package/runtime/Iris/_impl/widgets/init.lua +447 -0
  628. package/runtime/Iris/config.lua +305 -0
  629. package/runtime/Iris/init.lua +696 -0
  630. package/runtime/Iris/init.luau +12 -0
  631. package/runtime/Iris/widgets/Button.lua +90 -0
  632. package/runtime/Iris/widgets/Checkbox.lua +115 -0
  633. package/runtime/Iris/widgets/Combo.lua +492 -0
  634. package/runtime/Iris/widgets/Format.lua +140 -0
  635. package/runtime/Iris/widgets/Image.lua +155 -0
  636. package/runtime/Iris/widgets/Input.lua +1232 -0
  637. package/runtime/Iris/widgets/Menu.lua +599 -0
  638. package/runtime/Iris/widgets/Plot.lua +639 -0
  639. package/runtime/Iris/widgets/RadioButton.lua +126 -0
  640. package/runtime/Iris/widgets/Root.lua +143 -0
  641. package/runtime/Iris/widgets/Tab.lua +333 -0
  642. package/runtime/Iris/widgets/Table.lua +635 -0
  643. package/runtime/Iris/widgets/Text.lua +132 -0
  644. package/runtime/Iris/widgets/Tree.lua +287 -0
  645. package/runtime/Iris/widgets/Window.lua +1075 -0
  646. package/runtime/Iris/widgets/init.lua +447 -0
  647. package/runtime/Janitor/FastDefer.luau +33 -0
  648. package/runtime/Janitor/LICENSE +21 -0
  649. package/runtime/Janitor/_impl/FastDefer.luau +33 -0
  650. package/runtime/Janitor/_impl/LICENSE +21 -0
  651. package/runtime/Janitor/_impl/init.luau +999 -0
  652. package/runtime/Janitor/init.luau +45 -0
  653. package/runtime/MathUtils/init.luau +100 -0
  654. package/runtime/Module3D/LICENSE +21 -0
  655. package/runtime/Module3D/_impl/LICENSE +21 -0
  656. package/runtime/Module3D/_impl/init.luau +269 -0
  657. package/runtime/Module3D/init.luau +14 -0
  658. package/runtime/Net/init.luau +125 -0
  659. package/runtime/Net/src/codec.luau +153 -0
  660. package/runtime/Occlude/init.luau +54 -0
  661. package/runtime/Promise/LICENSE +21 -0
  662. package/runtime/Promise/_impl/LICENSE +21 -0
  663. package/runtime/Promise/_impl/init.lua +1991 -0
  664. package/runtime/Promise/init.lua +1990 -0
  665. package/runtime/Promise/init.luau +13 -0
  666. package/runtime/Promise/types.luau +46 -0
  667. package/runtime/SOURCES.md +22 -0
  668. package/runtime/Spring/LICENSE +201 -0
  669. package/runtime/Spring/_impl/LICENSE +201 -0
  670. package/runtime/Spring/_impl/init.luau +111 -0
  671. package/runtime/Spring/init.luau +24 -0
  672. package/runtime/StateMachine/Classes/State.lua +375 -0
  673. package/runtime/StateMachine/Classes/Transition.lua +336 -0
  674. package/runtime/StateMachine/Functions/deepCopy.lua +19 -0
  675. package/runtime/StateMachine/Functions/mergeTables.lua +22 -0
  676. package/runtime/StateMachine/LICENSE +19 -0
  677. package/runtime/StateMachine/Vendor/Signal.lua +386 -0
  678. package/runtime/StateMachine/Vendor/Trove.lua +188 -0
  679. package/runtime/StateMachine/_impl/Classes/State.lua +375 -0
  680. package/runtime/StateMachine/_impl/Classes/Transition.lua +336 -0
  681. package/runtime/StateMachine/_impl/Functions/deepCopy.lua +19 -0
  682. package/runtime/StateMachine/_impl/Functions/mergeTables.lua +22 -0
  683. package/runtime/StateMachine/_impl/LICENSE +19 -0
  684. package/runtime/StateMachine/_impl/Vendor/Signal.lua +386 -0
  685. package/runtime/StateMachine/_impl/Vendor/Trove.lua +188 -0
  686. package/runtime/StateMachine/_impl/init.lua +595 -0
  687. package/runtime/StateMachine/init.lua +595 -0
  688. package/runtime/StateMachine/init.luau +10 -0
  689. package/runtime/StickyBillboard/init.luau +167 -0
  690. package/runtime/TopbarPlus/Attribute.lua +35 -0
  691. package/runtime/TopbarPlus/Elements/Caption.lua +316 -0
  692. package/runtime/TopbarPlus/Elements/Container.lua +215 -0
  693. package/runtime/TopbarPlus/Elements/Dropdown.lua +315 -0
  694. package/runtime/TopbarPlus/Elements/Indicator.lua +91 -0
  695. package/runtime/TopbarPlus/Elements/Menu.lua +180 -0
  696. package/runtime/TopbarPlus/Elements/Notice.lua +113 -0
  697. package/runtime/TopbarPlus/Elements/Selection.lua +49 -0
  698. package/runtime/TopbarPlus/Elements/Widget.lua +437 -0
  699. package/runtime/TopbarPlus/Features/Gamepad.lua +201 -0
  700. package/runtime/TopbarPlus/Features/Overflow.lua +360 -0
  701. package/runtime/TopbarPlus/Features/Themes/Classic.lua +27 -0
  702. package/runtime/TopbarPlus/Features/Themes/Default.lua +75 -0
  703. package/runtime/TopbarPlus/Features/Themes/init.lua +353 -0
  704. package/runtime/TopbarPlus/LICENSE +381 -0
  705. package/runtime/TopbarPlus/Packages/GoodSignal.lua +182 -0
  706. package/runtime/TopbarPlus/Packages/Janitor.lua +322 -0
  707. package/runtime/TopbarPlus/Reference.lua +30 -0
  708. package/runtime/TopbarPlus/Types.lua +477 -0
  709. package/runtime/TopbarPlus/Utility.lua +462 -0
  710. package/runtime/TopbarPlus/VERSION.lua +51 -0
  711. package/runtime/TopbarPlus/_impl/Attribute.lua +35 -0
  712. package/runtime/TopbarPlus/_impl/Elements/Caption.lua +316 -0
  713. package/runtime/TopbarPlus/_impl/Elements/Container.lua +215 -0
  714. package/runtime/TopbarPlus/_impl/Elements/Dropdown.lua +315 -0
  715. package/runtime/TopbarPlus/_impl/Elements/Indicator.lua +91 -0
  716. package/runtime/TopbarPlus/_impl/Elements/Menu.lua +180 -0
  717. package/runtime/TopbarPlus/_impl/Elements/Notice.lua +113 -0
  718. package/runtime/TopbarPlus/_impl/Elements/Selection.lua +49 -0
  719. package/runtime/TopbarPlus/_impl/Elements/Widget.lua +437 -0
  720. package/runtime/TopbarPlus/_impl/Features/Gamepad.lua +201 -0
  721. package/runtime/TopbarPlus/_impl/Features/Overflow.lua +360 -0
  722. package/runtime/TopbarPlus/_impl/Features/Themes/Classic.lua +27 -0
  723. package/runtime/TopbarPlus/_impl/Features/Themes/Default.lua +75 -0
  724. package/runtime/TopbarPlus/_impl/Features/Themes/init.lua +353 -0
  725. package/runtime/TopbarPlus/_impl/LICENSE +381 -0
  726. package/runtime/TopbarPlus/_impl/Packages/GoodSignal.lua +182 -0
  727. package/runtime/TopbarPlus/_impl/Packages/Janitor.lua +322 -0
  728. package/runtime/TopbarPlus/_impl/Reference.lua +30 -0
  729. package/runtime/TopbarPlus/_impl/Types.lua +477 -0
  730. package/runtime/TopbarPlus/_impl/Utility.lua +462 -0
  731. package/runtime/TopbarPlus/_impl/VERSION.lua +51 -0
  732. package/runtime/TopbarPlus/_impl/init.lua +1249 -0
  733. package/runtime/TopbarPlus/init.lua +1249 -0
  734. package/runtime/TopbarPlus/init.luau +8 -0
  735. package/runtime/Twinkle/init.luau +157 -0
  736. package/runtime/VfxUtil/init.luau +164 -0
  737. package/src/api.generated.js +3675 -0
  738. package/src/api.js +57 -0
  739. package/src/architecture.js +393 -0
  740. package/src/cli.js +192 -0
  741. package/src/compile.js +40 -0
  742. package/src/emit.js +213 -0
  743. package/src/lex.js +149 -0
  744. package/src/libs.js +355 -0
  745. package/src/parse.js +421 -0
  746. package/src/preprocess.js +80 -0
  747. package/src/understand.js +453 -0
  748. package/templates/game/.clangd +5 -0
  749. package/templates/game/.vscode/c_cpp_properties.json +23 -0
  750. package/templates/game/.vscode/settings.json +12 -0
  751. package/templates/game/Packages/.gitkeep +0 -0
  752. package/templates/game/cluaupp.config.json +6 -0
  753. package/templates/game/compile_flags.txt +3 -0
  754. package/templates/game/default.project.json +39 -0
  755. package/templates/game/package.json +9 -0
  756. package/templates/game/src/client/init.client.cpp +5 -0
  757. package/templates/game/src/server/leaderstats.server.cpp +28 -0
  758. package/templates/game/src/shared/config.cpp +5 -0
  759. package/templates/game/src/shared/config.h +3 -0
  760. package/templates/game/wally.toml +11 -0
@@ -0,0 +1,437 @@
1
+ -- I named this 'Widget' instead of 'Icon' to make a clear difference between the icon *object* and
2
+ -- the icon (aka Widget) instance.
3
+ -- This contains the core components of the icon such as the button, image, label and notice. It's
4
+ -- also responsible for handling the automatic resizing of the widget (based upon image visibility and text length)
5
+
6
+ return function(icon, Icon)
7
+
8
+ local widget = Instance.new("Frame")
9
+ widget:SetAttribute("WidgetUID", icon.UID)
10
+ widget.Name = "Widget"
11
+ widget.BackgroundTransparency = 1
12
+ widget.Visible = true
13
+ widget.ZIndex = 20
14
+ widget.Active = false
15
+ widget.ClipsDescendants = true
16
+
17
+ local button = Instance.new("Frame")
18
+ button.Name = "IconButton"
19
+ button.Visible = true
20
+ button.ZIndex = 2
21
+ button.BorderSizePixel = 0
22
+ button.Parent = widget
23
+ button.ClipsDescendants = true
24
+ button.Active = false -- This is essential for mobile scrollers to work when dragging
25
+ icon.deselected:Connect(function()
26
+ button.ClipsDescendants = true
27
+ task.delay(0.2, function()
28
+ if icon.isSelected then
29
+ button.ClipsDescendants = false
30
+ end
31
+ end)
32
+ end)
33
+
34
+ -- Account for PreferredTransparency which can be set by every player
35
+ local GuiService = game:GetService("GuiService")
36
+ icon:setBehaviour("IconButton", "BackgroundTransparency", function(value)
37
+ local preference = GuiService.PreferredTransparency
38
+ local newValue = value * preference
39
+ if value == 1 then
40
+ return value
41
+ end
42
+ return newValue
43
+ end)
44
+ icon.janitor:add(GuiService:GetPropertyChangedSignal("PreferredTransparency"):Connect(function()
45
+ icon:refreshAppearance(button, "BackgroundTransparency")
46
+ end))
47
+
48
+ local iconCorner = Instance.new("UICorner")
49
+ iconCorner:SetAttribute("Collective", "IconCorners")
50
+ iconCorner.Name = "UICorner"
51
+ iconCorner.Parent = button
52
+
53
+ local menu = require(script.Parent.Menu)(icon)
54
+ local menuUIListLayout = menu.MenuUIListLayout
55
+ local menuGap = menu.MenuGap
56
+ menu.Parent = button
57
+
58
+ local iconSpot = Instance.new("Frame")
59
+ iconSpot.Name = "IconSpot"
60
+ iconSpot.BackgroundColor3 = Color3.fromRGB(225, 225, 225)
61
+ iconSpot.BackgroundTransparency = 0.9
62
+ iconSpot.Visible = true
63
+ iconSpot.AnchorPoint = Vector2.new(0, 0.5)
64
+ iconSpot.ZIndex = 5
65
+ iconSpot.Parent = menu
66
+
67
+ local iconSpotCorner = iconCorner:Clone()
68
+ iconSpotCorner.Parent = iconSpot
69
+
70
+ local overlay = iconSpot:Clone()
71
+ overlay.UICorner.Name = "OverlayUICorner"
72
+ overlay.Name = "IconOverlay"
73
+ overlay.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
74
+ overlay.ZIndex = iconSpot.ZIndex + 1
75
+ overlay.Size = UDim2.new(1, 0, 1, 0)
76
+ overlay.Position = UDim2.new(0, 0, 0, 0)
77
+ overlay.AnchorPoint = Vector2.new(0, 0)
78
+ overlay.Visible = false
79
+ overlay.Parent = iconSpot
80
+
81
+ local clickRegion = Instance.new("TextButton")
82
+ clickRegion:SetAttribute("CorrespondingIconUID", icon.UID)
83
+ clickRegion.Name = "ClickRegion"
84
+ clickRegion.BackgroundTransparency = 1
85
+ clickRegion.Visible = true
86
+ clickRegion.Text = ""
87
+ clickRegion.ZIndex = 20
88
+ clickRegion.Selectable = true
89
+ clickRegion.SelectionGroup = true
90
+ clickRegion.Parent = iconSpot
91
+
92
+ local Gamepad = require(script.Parent.Parent.Features.Gamepad)
93
+ Gamepad.registerButton(clickRegion)
94
+
95
+ local clickRegionCorner = iconCorner:Clone()
96
+ clickRegionCorner.Parent = clickRegion
97
+
98
+ local contents = Instance.new("Frame")
99
+ contents.Name = "Contents"
100
+ contents.BackgroundTransparency = 1
101
+ contents.Size = UDim2.fromScale(1, 1)
102
+ contents.Parent = iconSpot
103
+
104
+ local contentsList = Instance.new("UIListLayout")
105
+ contentsList.Name = "ContentsList"
106
+ contentsList.FillDirection = Enum.FillDirection.Horizontal
107
+ contentsList.VerticalAlignment = Enum.VerticalAlignment.Center
108
+ contentsList.SortOrder = Enum.SortOrder.LayoutOrder
109
+ contentsList.VerticalFlex = Enum.UIFlexAlignment.SpaceEvenly
110
+ contentsList.Padding = UDim.new(0, 3)
111
+ contentsList.Parent = contents
112
+
113
+ local paddingLeft = Instance.new("Frame")
114
+ paddingLeft.Name = "PaddingLeft"
115
+ paddingLeft.LayoutOrder = 1
116
+ paddingLeft.ZIndex = 5
117
+ paddingLeft.BorderColor3 = Color3.fromRGB(0, 0, 0)
118
+ paddingLeft.BackgroundTransparency = 1
119
+ paddingLeft.BorderSizePixel = 0
120
+ paddingLeft.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
121
+ paddingLeft.Parent = contents
122
+
123
+ local paddingCenter = Instance.new("Frame")
124
+ paddingCenter.Name = "PaddingCenter"
125
+ paddingCenter.LayoutOrder = 3
126
+ paddingCenter.ZIndex = 5
127
+ paddingCenter.Size = UDim2.new(0, 0, 1, 0)
128
+ paddingCenter.BorderColor3 = Color3.fromRGB(0, 0, 0)
129
+ paddingCenter.BackgroundTransparency = 1
130
+ paddingCenter.BorderSizePixel = 0
131
+ paddingCenter.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
132
+ paddingCenter.Parent = contents
133
+
134
+ local paddingRight = Instance.new("Frame")
135
+ paddingRight.Name = "PaddingRight"
136
+ paddingRight.LayoutOrder = 5
137
+ paddingRight.ZIndex = 5
138
+ paddingRight.BorderColor3 = Color3.fromRGB(0, 0, 0)
139
+ paddingRight.BackgroundTransparency = 1
140
+ paddingRight.BorderSizePixel = 0
141
+ paddingRight.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
142
+ paddingRight.Parent = contents
143
+
144
+ local iconLabelContainer = Instance.new("Frame")
145
+ iconLabelContainer.Name = "IconLabelContainer"
146
+ iconLabelContainer.LayoutOrder = 4
147
+ iconLabelContainer.ZIndex = 3
148
+ iconLabelContainer.AnchorPoint = Vector2.new(0, 0.5)
149
+ iconLabelContainer.Size = UDim2.new(0, 0, 0.5, 0)
150
+ iconLabelContainer.BackgroundTransparency = 1
151
+ iconLabelContainer.Position = UDim2.new(0.5, 0, 0.5, 0)
152
+ iconLabelContainer.Parent = contents
153
+
154
+ local iconLabel = Instance.new("TextLabel")
155
+ local viewportX = workspace.CurrentCamera.ViewportSize.X+200
156
+ iconLabel.Name = "IconLabel"
157
+ iconLabel.LayoutOrder = 4
158
+ iconLabel.ZIndex = 15
159
+ iconLabel.AnchorPoint = Vector2.new(0, 0)
160
+ iconLabel.Size = UDim2.new(0, viewportX, 1, 0)
161
+ iconLabel.ClipsDescendants = false
162
+ iconLabel.BackgroundTransparency = 1
163
+ iconLabel.Position = UDim2.fromScale(0, 0)
164
+ iconLabel.RichText = true
165
+ iconLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
166
+ iconLabel.TextXAlignment = Enum.TextXAlignment.Left
167
+ iconLabel.Text = ""
168
+ iconLabel.TextWrapped = true
169
+ iconLabel.TextWrap = true
170
+ iconLabel.TextScaled = false
171
+ iconLabel.Active = false
172
+ iconLabel.AutoLocalize = true
173
+ iconLabel.Parent = iconLabelContainer
174
+
175
+ local iconImage = Instance.new("ImageLabel")
176
+ iconImage.Name = "IconImage"
177
+ iconImage.LayoutOrder = 2
178
+ iconImage.ZIndex = 15
179
+ iconImage.AnchorPoint = Vector2.new(0, 0.5)
180
+ iconImage.Size = UDim2.new(0, 0, 0.5, 0)
181
+ iconImage.BackgroundTransparency = 1
182
+ iconImage.Position = UDim2.new(0, 11, 0.5, 0)
183
+ iconImage.ScaleType = Enum.ScaleType.Stretch
184
+ iconImage.Active = false
185
+ iconImage.Parent = contents
186
+
187
+ local iconImageCorner = iconCorner:Clone()
188
+ iconImageCorner:SetAttribute("Collective", nil)
189
+ iconImageCorner.CornerRadius = UDim.new(0, 0)
190
+ iconImageCorner.Name = "IconImageCorner"
191
+ iconImageCorner.Parent = iconImage
192
+
193
+ local TweenService = game:GetService("TweenService")
194
+ local resizingCount = 0
195
+ local function handleLabelAndImageChangesUnstaggered(forceUpdateString)
196
+
197
+ -- We defer changes by a frame to eliminate all but 1 requests which
198
+ -- could otherwise stack up to 20+ requests in a single frame
199
+ -- We then repeat again once to account for any final changes
200
+ -- Deferring is also essential because properties are set immediately
201
+ -- afterwards (therefore calculations will use the correct values)
202
+ task.defer(function()
203
+ local indicator = icon.indicator
204
+ local usingIndicator = indicator and indicator.Visible
205
+ local usingText = usingIndicator or iconLabel.Text ~= ""
206
+ local usingImage = iconImage.Image ~= "" and iconImage.Image ~= nil
207
+ local _alignment = Enum.HorizontalAlignment.Center
208
+ local NORMAL_BUTTON_SIZE = UDim2.fromScale(1, 1)
209
+ local buttonSize = NORMAL_BUTTON_SIZE
210
+ if usingImage and not usingText then
211
+ iconLabelContainer.Visible = false
212
+ iconImage.Visible = true
213
+ paddingLeft.Visible = false
214
+ paddingCenter.Visible = false
215
+ paddingRight.Visible = false
216
+ elseif not usingImage and usingText then
217
+ iconLabelContainer.Visible = true
218
+ iconImage.Visible = false
219
+ paddingLeft.Visible = true
220
+ paddingCenter.Visible = false
221
+ paddingRight.Visible = true
222
+ elseif usingImage and usingText then
223
+ iconLabelContainer.Visible = true
224
+ iconImage.Visible = true
225
+ paddingLeft.Visible = true
226
+ paddingCenter.Visible = not usingIndicator
227
+ paddingRight.Visible = not usingIndicator
228
+ _alignment = Enum.HorizontalAlignment.Left
229
+ end
230
+ button.Size = buttonSize
231
+
232
+ local function getItemWidth(item)
233
+ local targetWidth = item:GetAttribute("TargetWidth") or item.AbsoluteSize.X
234
+ return targetWidth
235
+ end
236
+ local contentsPadding = contentsList.Padding.Offset
237
+ local initialWidgetWidth = contentsPadding --0
238
+ local textWidth = iconLabel.TextBounds.X
239
+ iconLabelContainer.Size = UDim2.new(0, textWidth, iconLabel.Size.Y.Scale, 0)
240
+ for _, child in pairs(contents:GetChildren()) do
241
+ if child:IsA("GuiObject") and child.Visible == true then
242
+ local itemWidth = getItemWidth(child)
243
+ initialWidgetWidth += itemWidth + contentsPadding
244
+ end
245
+ end
246
+ local widgetMinimumWidth = widget:GetAttribute("MinimumWidth")
247
+ local widgetMinimumHeight = widget:GetAttribute("MinimumHeight")
248
+ local widgetBorderSize = widget:GetAttribute("BorderSize")
249
+ local widgetWidth = math.clamp(initialWidgetWidth, widgetMinimumWidth, viewportX)
250
+ local menuIcons = icon.menuIcons
251
+ local additionalWidth = 0
252
+ local hasMenu = #menuIcons > 0
253
+ local showMenu = hasMenu and icon.isSelected
254
+ if showMenu then
255
+ for _, frame in pairs(menu:GetChildren()) do
256
+ if frame ~= iconSpot and frame:IsA("GuiObject") and frame.Visible then
257
+ additionalWidth += getItemWidth(frame) + menuUIListLayout.Padding.Offset
258
+ end
259
+ end
260
+ if not iconSpot.Visible then
261
+ widgetWidth -= (getItemWidth(iconSpot) + menuUIListLayout.Padding.Offset*2 + widgetBorderSize)
262
+ end
263
+ additionalWidth -= (widgetBorderSize*0.5)
264
+ widgetWidth += additionalWidth - (widgetBorderSize*0.75)
265
+ end
266
+ menuGap.Visible = showMenu and iconSpot.Visible
267
+ local desiredWidth = widget:GetAttribute("DesiredWidth")
268
+ if desiredWidth and widgetWidth < desiredWidth then
269
+ widgetWidth = desiredWidth
270
+ end
271
+
272
+ icon.updateMenu:Fire()
273
+ local preWidth = math.max(widgetWidth-additionalWidth, widgetMinimumWidth)
274
+ local spotWidth = preWidth-(widgetBorderSize*2)
275
+ local menuWidth = menu:GetAttribute("MenuWidth")
276
+ local totalMenuWidth = menuWidth and menuWidth + spotWidth + menuUIListLayout.Padding.Offset + 10
277
+ if totalMenuWidth then
278
+ local maxWidth = menu:GetAttribute("MaxWidth")
279
+ if maxWidth then
280
+ totalMenuWidth = math.max(maxWidth, widgetMinimumWidth)
281
+ end
282
+ menu:SetAttribute("MenuCanvasWidth", widgetWidth)
283
+ if totalMenuWidth < widgetWidth then
284
+ widgetWidth = totalMenuWidth
285
+ end
286
+ end
287
+
288
+ local style = Enum.EasingStyle.Quint
289
+ local direction = Enum.EasingDirection.Out
290
+ local spotWidthMax = math.max(spotWidth, getItemWidth(iconSpot), iconSpot.AbsoluteSize.X)
291
+ local widgetWidthMax = math.max(widgetWidth, getItemWidth(widget), widget.AbsoluteSize.X)
292
+ local SPEED = 750
293
+ local spotTweenInfo = TweenInfo.new(spotWidthMax/SPEED, style, direction)
294
+ local widgetTweenInfo = TweenInfo.new(widgetWidthMax/SPEED, style, direction)
295
+ TweenService:Create(iconSpot, spotTweenInfo, {
296
+ Position = UDim2.new(0, widgetBorderSize, 0.5, 0),
297
+ Size = UDim2.new(0, spotWidth, 1, -widgetBorderSize*2),
298
+ }):Play()
299
+ TweenService:Create(clickRegion, spotTweenInfo, {
300
+ Size = UDim2.new(0, spotWidth, 1, 0),
301
+ }):Play()
302
+ local newWidgetSize = UDim2.fromOffset(widgetWidth, widgetMinimumHeight)
303
+ local updateInstantly = widget.Size.Y.Offset ~= widgetMinimumHeight
304
+ if updateInstantly then
305
+ widget.Size = newWidgetSize
306
+ end
307
+ widget:SetAttribute("TargetWidth", newWidgetSize.X.Offset)
308
+ local movingTween = TweenService:Create(widget, widgetTweenInfo, {
309
+ Size = newWidgetSize,
310
+ })
311
+ movingTween:Play()
312
+ resizingCount += 1
313
+ for i = 1, widgetTweenInfo.Time * 100 do
314
+ task.delay(i/100, function()
315
+ Icon.iconChanged:Fire(icon)
316
+ end)
317
+ end
318
+ task.delay(widgetTweenInfo.Time-0.2, function()
319
+ resizingCount -= 1
320
+ task.defer(function()
321
+ if resizingCount == 0 then
322
+ icon.resizingComplete:Fire()
323
+ end
324
+ end)
325
+ end)
326
+ icon:updateParent()
327
+ end)
328
+ end
329
+ local Utility = require(script.Parent.Parent.Utility)
330
+ local handleLabelAndImageChanges = Utility.createStagger(0.01, handleLabelAndImageChangesUnstaggered)
331
+ local firstTimeSettingFontFace = true
332
+ icon:setBehaviour("IconLabel", "Text", handleLabelAndImageChanges)
333
+ icon:setBehaviour("IconLabel", "FontFace", function(value)
334
+ local previousFontFace = iconLabel.FontFace
335
+ if previousFontFace == value then
336
+ return
337
+ end
338
+ task.spawn(function()
339
+ --[[
340
+ local fontLink = value.Family
341
+ if string.match(fontLink, "rbxassetid://") then
342
+ local ContentProvider = game:GetService("ContentProvider")
343
+ local assets = {fontLink}
344
+ ContentProvider:PreloadAsync(assets)
345
+ end--]]
346
+
347
+ -- Afaik there's no way to determine when a Font Family has
348
+ -- loaded (even with ContentProvider), so we just have to try
349
+ -- a few times and hope it loads within the refresh period
350
+ handleLabelAndImageChanges()
351
+ if firstTimeSettingFontFace then
352
+ firstTimeSettingFontFace = false
353
+ for i = 1, 10 do
354
+ task.wait(1)
355
+ handleLabelAndImageChanges()
356
+ end
357
+ end
358
+ end)
359
+ end)
360
+ local function updateBorderSize()
361
+ task.defer(function()
362
+ local borderOffset = widget:GetAttribute("BorderSize")
363
+ local alignment = icon.alignment
364
+ local alignmentOffset = (iconSpot.Visible == false and 0) or (alignment == "Right" and -borderOffset) or borderOffset
365
+ menu.Position = UDim2.new(0, alignmentOffset, 0, 0)
366
+ menuGap.Size = UDim2.fromOffset(borderOffset, 0)
367
+ menuUIListLayout.Padding = UDim.new(0, 0)
368
+ handleLabelAndImageChanges()
369
+ end)
370
+ end
371
+ icon:setBehaviour("Widget", "BorderSize", updateBorderSize)
372
+ icon:setBehaviour("IconSpot", "Visible", updateBorderSize)
373
+ icon.startMenuUpdate:Connect(handleLabelAndImageChanges)
374
+ icon.updateSize:Connect(handleLabelAndImageChanges)
375
+ icon:setBehaviour("ContentsList", "HorizontalAlignment", handleLabelAndImageChanges)
376
+ icon:setBehaviour("Widget", "Visible", handleLabelAndImageChanges)
377
+ icon:setBehaviour("Widget", "DesiredWidth", handleLabelAndImageChanges)
378
+ icon:setBehaviour("Widget", "MinimumWidth", handleLabelAndImageChanges)
379
+ icon:setBehaviour("Widget", "MinimumHeight", handleLabelAndImageChanges)
380
+ icon:setBehaviour("Indicator", "Visible", handleLabelAndImageChanges)
381
+ icon:setBehaviour("IconImageRatio", "AspectRatio", handleLabelAndImageChanges)
382
+ icon:setBehaviour("IconImage", "Image", function(value)
383
+ local textureId = (tonumber(value) and "http://www.roblox.com/asset/?id="..value) or value or ""
384
+ if iconImage.Image ~= textureId then
385
+ handleLabelAndImageChanges()
386
+ end
387
+ return textureId
388
+ end)
389
+ icon.alignmentChanged:Connect(function(newAlignment)
390
+ if newAlignment == "Center" then
391
+ newAlignment = "Left"
392
+ end
393
+ menuUIListLayout.HorizontalAlignment = Enum.HorizontalAlignment[newAlignment]
394
+ updateBorderSize()
395
+ end)
396
+
397
+ -- Localization support (refresh icon size whenever player changes language changes in-game)
398
+ local Players = game:GetService("Players")
399
+ local localPlayer = Players.LocalPlayer
400
+ local lastLocaleId = localPlayer.LocaleId
401
+ icon.janitor:add(localPlayer:GetPropertyChangedSignal("LocaleId"):Connect(function()
402
+ task.delay(0.2, function()
403
+ local newLocaleId = localPlayer.LocaleId
404
+ if newLocaleId ~= lastLocaleId then
405
+ lastLocaleId = newLocaleId
406
+ icon:refresh()
407
+ task.wait(0.5)
408
+ icon:refresh()
409
+ end
410
+ end)
411
+ end))
412
+
413
+ local iconImageScale = Instance.new("NumberValue")
414
+ iconImageScale.Name = "IconImageScale"
415
+ iconImageScale.Parent = iconImage
416
+ iconImageScale:GetPropertyChangedSignal("Value"):Connect(function()
417
+ iconImage.Size = UDim2.new(iconImageScale.Value, 0, iconImageScale.Value, 0)
418
+ end)
419
+
420
+ local UIAspectRatioConstraint = Instance.new("UIAspectRatioConstraint")
421
+ UIAspectRatioConstraint.Name = "IconImageRatio"
422
+ UIAspectRatioConstraint.AspectType = Enum.AspectType.FitWithinMaxSize
423
+ UIAspectRatioConstraint.DominantAxis = Enum.DominantAxis.Height
424
+ UIAspectRatioConstraint.Parent = iconImage
425
+
426
+ local iconGradient = Instance.new("UIGradient")
427
+ iconGradient.Name = "IconGradient"
428
+ iconGradient.Enabled = true
429
+ iconGradient.Parent = button
430
+
431
+ local iconSpotGradient = Instance.new("UIGradient")
432
+ iconSpotGradient.Name = "IconSpotGradient"
433
+ iconSpotGradient.Enabled = true
434
+ iconSpotGradient.Parent = iconSpot
435
+
436
+ return widget
437
+ end
@@ -0,0 +1,201 @@
1
+ -- As the name suggests, this handles everything related to gamepads
2
+ -- (i.e. Xbox or Playstation controllers) and their navigation
3
+ -- I created a separate module for gamepads (and not touchpads or
4
+ -- keyboards) because gamepads are greatly more unqiue and require
5
+ -- additional tailored programming
6
+
7
+
8
+
9
+ -- SERVICES
10
+ local GamepadService = game:GetService("GamepadService")
11
+ local UserInputService = game:GetService("UserInputService")
12
+ local GuiService = game:GetService("GuiService")
13
+
14
+
15
+
16
+ -- LOCAL
17
+ local DEFAULT_HIGHLIGHT_KEY = Enum.KeyCode.DPadUp -- The default key to highlight the topbar icon
18
+ local GAMEPAD_INPUT = Enum.PreferredInput.Gamepad
19
+ local Gamepad = {}
20
+ local Icon
21
+
22
+
23
+
24
+ -- FUNCTIONS
25
+ -- This is called upon the Icon initializing
26
+ function Gamepad.start(incomingIcon)
27
+
28
+ -- Public variables
29
+ Icon = incomingIcon
30
+ Icon.highlightKey = if Icon.highlightKey ~= nil then Icon.highlightKey else DEFAULT_HIGHLIGHT_KEY -- What controller key to highlight the topbar (or set to false to disable)
31
+ Icon.highlightIcon = false -- Change to a specific icon if you'd like to highlight a specific icon instead of the left-most
32
+
33
+ -- We defer so the developer can make changes before the
34
+ -- gamepad controls are initialized
35
+ task.delay(1, function()
36
+ -- Some local utility
37
+ local iconsDict = Icon.iconsDictionary
38
+ local function getIconFromSelectedObject()
39
+ local clickRegion = GuiService.SelectedObject
40
+ local iconUID = clickRegion and clickRegion:GetAttribute("CorrespondingIconUID")
41
+ local icon = iconUID and iconsDict[iconUID]
42
+ return icon
43
+ end
44
+
45
+ -- This enables users to instantly open up their last selected icon
46
+ local previousHighlightedIcon
47
+ local usedIndicatorOnce = DEFAULT_HIGHLIGHT_KEY ~= Icon.highlightKey
48
+ local usedBOnce = DEFAULT_HIGHLIGHT_KEY ~= Icon.highlightKey
49
+ local Selection = require(script.Parent.Parent.Elements.Selection)
50
+ local function updateSelectedObject()
51
+ local icon = getIconFromSelectedObject()
52
+ local isUsingGamepad = UserInputService.PreferredInput == GAMEPAD_INPUT
53
+ if icon then
54
+ if isUsingGamepad then
55
+ local clickRegion = icon:getInstance("ClickRegion")
56
+ local selection = icon.selection
57
+ if not selection then
58
+ selection = icon.janitor:add(Selection(Icon))
59
+ selection:SetAttribute("IgnoreVisibilityUpdater", true)
60
+ selection.Parent = icon.widget
61
+ icon.selection = selection
62
+ icon:refreshAppearance(selection) --icon:clipOutside(selection)
63
+ end
64
+ clickRegion.SelectionImageObject = selection.Selection
65
+ end
66
+ if previousHighlightedIcon and previousHighlightedIcon ~= icon then
67
+ previousHighlightedIcon:setIndicator()
68
+ end
69
+ local newIndicator = if isUsingGamepad and not usedBOnce and not icon.parentIconUID then Enum.KeyCode.ButtonB else nil
70
+ previousHighlightedIcon = icon
71
+ Icon.lastHighlightedIcon = icon
72
+ icon:setIndicator(newIndicator)
73
+ else
74
+ local newIndicator = if isUsingGamepad and not usedIndicatorOnce then Icon.highlightKey else nil
75
+ if not previousHighlightedIcon then
76
+ previousHighlightedIcon = Gamepad.getIconToHighlight()
77
+ end
78
+ if newIndicator == Icon.highlightKey then
79
+ -- We only display the highlightKey once to show
80
+ -- the user how to highlight the topbar icon
81
+ usedIndicatorOnce = true
82
+ else
83
+ --usedBOnce = true
84
+ end
85
+ if previousHighlightedIcon then
86
+ previousHighlightedIcon:setIndicator(newIndicator)
87
+ end
88
+ end
89
+ end
90
+ GuiService:GetPropertyChangedSignal("SelectedObject"):Connect(updateSelectedObject)
91
+
92
+ -- This listens for a gamepad being present/added/removed
93
+ local function preferredInputChanged()
94
+ local preferredInput = UserInputService.PreferredInput
95
+ local isUsingGamepad = preferredInput == GAMEPAD_INPUT
96
+
97
+ if not isUsingGamepad then
98
+ usedIndicatorOnce = false
99
+ usedBOnce = false
100
+ end
101
+ updateSelectedObject()
102
+ end
103
+ UserInputService:GetPropertyChangedSignal("PreferredInput"):Connect(preferredInputChanged)
104
+ preferredInputChanged()
105
+
106
+ -- This allows for easy highlighting of the topbar when the
107
+ -- when ``Icon.highlightKey`` (i.e. DPadUp) is pressed.
108
+ -- If you'd like to disable, do ``Icon.highlightKey = false``
109
+ UserInputService.InputBegan:Connect(function(input, touchingAnObject)
110
+ if input.UserInputType == Enum.UserInputType.MouseButton1 then
111
+ -- Sometimes the Roblox gamepad glitches when combined with a cursor
112
+ -- This fixes that by unhighlighting if the cursor is pressed down
113
+ -- (i.e. a mouse click)
114
+ local icon = getIconFromSelectedObject()
115
+ if icon then
116
+ GuiService.SelectedObject = nil
117
+ end
118
+ return
119
+ end
120
+ if input.KeyCode ~= Icon.highlightKey then
121
+ return
122
+ end
123
+ local iconToHighlight = Gamepad.getIconToHighlight()
124
+ if iconToHighlight then
125
+ if GamepadService.GamepadCursorEnabled then
126
+ task.wait(0.2)
127
+ GamepadService:DisableGamepadCursor()
128
+ end
129
+ local clickRegion = iconToHighlight:getInstance("ClickRegion")
130
+ GuiService.SelectedObject = clickRegion
131
+ end
132
+ end)
133
+ end)
134
+ end
135
+
136
+ function Gamepad.getIconToHighlight()
137
+ -- If an icon has already been selected, returns the last selected icon
138
+ -- Else if more than 0 icons, it selects the left-most icon
139
+ local iconsDict = Icon.iconsDictionary
140
+ local iconToHighlight = Icon.highlightIcon or Icon.lastHighlightedIcon
141
+ if not iconToHighlight then
142
+ local currentX
143
+ for _, icon in pairs(iconsDict) do
144
+ if icon.parentIconUID then
145
+ continue
146
+ end
147
+ local thisX = icon.widget.AbsolutePosition.X
148
+ if not currentX or thisX < currentX then
149
+ iconToHighlight = icon
150
+ currentX = iconToHighlight.widget.AbsolutePosition.X
151
+ end
152
+ end
153
+ end
154
+ return iconToHighlight
155
+ end
156
+
157
+ -- This called when the icon's ClickRegion is created
158
+ function Gamepad.registerButton(buttonInstance)
159
+ -- This provides a basic level of support for controllers by making
160
+ -- the icons easy to highlight via the virtual cursor, then
161
+ -- when selected, focuses in on the selected icon and hops
162
+ -- between other nearby icons simply by toggling the joystick
163
+ local inputBegan = false
164
+ buttonInstance.InputBegan:Connect(function(input)
165
+ -- Two wait frames required to ensure inputBegan is detected within
166
+ -- UserInputService.InputBegan. We do this because object.InputBegan
167
+ -- does not return the correct input objects (unlike the service)
168
+ inputBegan = true
169
+ task.wait()
170
+ task.wait()
171
+ inputBegan = false
172
+ end)
173
+ local connection = UserInputService.InputBegan:Connect(function(input)
174
+ task.wait()
175
+ if input.KeyCode == Enum.KeyCode.ButtonA and inputBegan then
176
+ -- We focus on an icon when selected via the virtual cursor
177
+ task.wait(0.2)
178
+ GamepadService:DisableGamepadCursor()
179
+ GuiService.SelectedObject = buttonInstance
180
+ return
181
+ end
182
+ local isSelected = GuiService.SelectedObject == buttonInstance
183
+ local unselectKeyCodes = {"ButtonB", "ButtonSelect"}
184
+ local keyName = input.KeyCode.Name
185
+ if table.find(unselectKeyCodes, keyName) and isSelected then
186
+ -- We unfocus when back button is pressed, but ignore
187
+ -- if the virtual cursor is disabled otherwise it will be
188
+ -- impossible to select the topbar
189
+ if not(keyName == "ButtonSelect" and not GamepadService.GamepadCursorEnabled) then
190
+ GuiService.SelectedObject = nil
191
+ end
192
+ end
193
+ end)
194
+ buttonInstance.Destroying:Once(function()
195
+ connection:Disconnect()
196
+ end)
197
+ end
198
+
199
+
200
+
201
+ return Gamepad