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,2085 @@
1
+ local Types = require(script.Parent.Types)
2
+
3
+ return function(Iris: Types.Iris)
4
+ -- basic wrapper for nearly every widget, saves space.
5
+ local function wrapper(name)
6
+ return function(arguments, states)
7
+ return Iris.Internal._Insert(name, arguments, states)
8
+ end
9
+ end
10
+
11
+ --[[
12
+ ----------------------------
13
+ [SECTION] Window API
14
+ ----------------------------
15
+ ]]
16
+ --[=[
17
+ @class Window
18
+
19
+ Windows are the fundamental widget for Iris. Every other widget must be a descendant of a window.
20
+
21
+ ```lua
22
+ Iris.Window({ "Example Window" })
23
+ Iris.Text({ "This is an example window!" })
24
+ Iris.End()
25
+ ```
26
+
27
+ ![Example window](/Iris/assets/api/window/basicWindow.png)
28
+
29
+ If you do not want the code inside a window to run unless it is open then you can use the following:
30
+ ```lua
31
+ local window = Iris.Window({ "Many Widgets Window" })
32
+
33
+ if window.state.isOpened.value and window.state.isUncollapsed.value then
34
+ Iris.Text({ "I will only be created when the window is open." })
35
+ end
36
+ Iris.End() -- must always call Iris.End(), regardless of whether the window is open or not.
37
+ ```
38
+ ]=]
39
+
40
+ --[=[
41
+ @within Window
42
+ @prop Window Iris.Window
43
+ @tag Widget
44
+ @tag HasChildren
45
+ @tag HasState
46
+
47
+ The top-level container for all other widgets to be created within.
48
+ Can be moved and resized across the screen. Cannot contain embedded windows.
49
+ Menus can be appended to windows creating a menubar.
50
+
51
+ ```lua
52
+ hasChildren = true
53
+ hasState = true
54
+ Arguments = {
55
+ Title: string,
56
+ NoTitleBar: boolean? = false,
57
+ NoBackground: boolean? = false, -- the background behind the widget container.
58
+ NoCollapse: boolean? = false,
59
+ NoClose: boolean? = false,
60
+ NoMove: boolean? = false,
61
+ NoScrollbar: boolean? = false, -- the scrollbar if the window is too short for all widgets.
62
+ NoResize: boolean? = false,
63
+ NoNav: boolean? = false, -- unimplemented.
64
+ NoMenu: boolean? = false -- whether the menubar will show if created.
65
+ }
66
+ Events = {
67
+ opened: () -> boolean, -- once when opened.
68
+ closed: () -> boolean, -- once when closed.
69
+ collapsed: () -> boolean, -- once when collapsed.
70
+ uncollapsed: () -> boolean, -- once when uncollapsed.
71
+ hovered: () -> boolean -- fires when the mouse hovers over any of the window.
72
+ }
73
+ States = {
74
+ size: State<Vector2>? = Vector2.new(400, 300),
75
+ position: State<Vector2>?,
76
+ isUncollapsed: State<boolean>? = true,
77
+ isOpened: State<boolean>? = true,
78
+ scrollDistance: State<number>? -- vertical scroll distance, if too short.
79
+ }
80
+ ```
81
+ ]=]
82
+ Iris.Window = wrapper("Window")
83
+
84
+ --[=[
85
+ @within Iris
86
+ @function SetFocusedWindow
87
+ @param window Types.Window -- the window to focus.
88
+
89
+ Sets the focused window to the window provided, which brings it to the front and makes it active.
90
+ ]=]
91
+ Iris.SetFocusedWindow = Iris.Internal.SetFocusedWindow
92
+
93
+ --[=[
94
+ @within Window
95
+ @prop Tooltip Iris.Tooltip
96
+ @tag Widget
97
+
98
+ Displays a text label next to the cursor
99
+
100
+ ```lua
101
+ Iris.Tooltip({"My custom tooltip"})
102
+ ```
103
+
104
+ ![Basic tooltip example](/Iris/assets/api/window/basicTooltip.png)
105
+
106
+ ```lua
107
+ hasChildren = false
108
+ hasState = false
109
+ Arguments = {
110
+ Text: string
111
+ }
112
+ ```
113
+ ]=]
114
+ Iris.Tooltip = wrapper("Tooltip")
115
+
116
+ --[[
117
+ ---------------------------------
118
+ [SECTION] Menu Widget API
119
+ ---------------------------------
120
+ ]]
121
+ --[=[
122
+ @class Menu
123
+ Menu API
124
+ ]=]
125
+
126
+ --[=[
127
+ @within Menu
128
+ @prop MenuBar Iris.MenuBar
129
+ @tag Widget
130
+ @tag HasChildren
131
+
132
+ Creates a MenuBar for the current window. Must be called directly under a Window and not within a child widget.
133
+ :::info
134
+ This does not create any menus, just tells the window that we going to add menus within.
135
+ :::
136
+
137
+ ```lua
138
+ hasChildren = true
139
+ hasState = false
140
+ ```
141
+ ]=]
142
+ Iris.MenuBar = wrapper("MenuBar")
143
+
144
+ --[=[
145
+ @within Menu
146
+ @prop Menu Iris.Menu
147
+ @tag Widget
148
+ @tag HasChildren
149
+ @tag HasState
150
+
151
+ Creates an collapsable menu. If the Menu is created directly under a MenuBar, then the widget will
152
+ be placed horizontally below the window title. If the menu Menu is created within another menu, then
153
+ it will be placed vertically alongside MenuItems and display an arrow alongside.
154
+
155
+ The opened menu will be a vertically listed box below or next to the button.
156
+
157
+ ```lua
158
+ Iris.Window({"Menu Demo"})
159
+ Iris.MenuBar()
160
+ Iris.Menu({"Test Menu"})
161
+ Iris.Button({"Menu Option 1"})
162
+ Iris.Button({"Menu Option 2"})
163
+ Iris.End()
164
+ Iris.End()
165
+ Iris.End()
166
+ ```
167
+
168
+ ![Example menu](/Iris/assets/api/menu/basicMenu.gif)
169
+
170
+ :::info
171
+ There are widgets which are designed for being parented to a menu whilst other happens to work. There is nothing
172
+ preventing you from adding any widget as a child, but the behaviour is unexplained and not intended.
173
+ :::
174
+
175
+ ```lua
176
+ hasChildren = true
177
+ hasState = true
178
+ Arguments = {
179
+ Text: string -- menu text.
180
+ }
181
+ Events = {
182
+ clicked: () -> boolean,
183
+ opened: () -> boolean, -- once when opened.
184
+ closed: () -> boolean, -- once when closed.
185
+ hovered: () -> boolean
186
+ }
187
+ States = {
188
+ isOpened: State<boolean>? -- whether the menu is open, including any sub-menus within.
189
+ }
190
+ ```
191
+ ]=]
192
+ Iris.Menu = wrapper("Menu")
193
+
194
+ --[=[
195
+ @within Menu
196
+ @prop MenuItem Iris.MenuItem
197
+ @tag Widget
198
+
199
+ Creates a button within a menu. The optional KeyCode and ModiferKey arguments will show the keys next
200
+ to the title, but **will not** bind any connection to them. You will need to do this yourself.
201
+
202
+ ```lua
203
+ Iris.Window({"MenuToggle Demo"})
204
+ Iris.MenuBar()
205
+ Iris.MenuToggle({"Menu Item"})
206
+ Iris.End()
207
+ Iris.End()
208
+ ```
209
+
210
+ ![Example Menu Item](/Iris/assets/api/menu/basicMenuItem.gif)
211
+
212
+ ```lua
213
+ hasChildren = false
214
+ hasState = false
215
+ Arguments = {
216
+ Text: string,
217
+ KeyCode: Enum.KeyCode? = nil, -- an optional keycode, does not actually connect an event.
218
+ ModifierKey: Enum.ModifierKey? = nil -- an optional modifer key for the key code.
219
+ }
220
+ Events = {
221
+ clicked: () -> boolean,
222
+ hovered: () -> boolean
223
+ }
224
+ ```
225
+ ]=]
226
+ Iris.MenuItem = wrapper("MenuItem")
227
+
228
+ --[=[
229
+ @within Menu
230
+ @prop MenuToggle Iris.MenuToggle
231
+ @tag Widget
232
+ @tag HasState
233
+
234
+ Creates a togglable button within a menu. The optional KeyCode and ModiferKey arguments act the same
235
+ as the MenuItem. It is not visually the same as a checkbox, but has the same functionality.
236
+
237
+ ```lua
238
+ Iris.Window({"MenuToggle Demo"})
239
+ Iris.MenuBar()
240
+ Iris.MenuToggle({"Menu Toggle"})
241
+ Iris.End()
242
+ Iris.End()
243
+ ```
244
+
245
+ ![Example Menu Toggle](/Iris/assets/api/menu/basicMenuToggle.gif)
246
+
247
+ ```lua
248
+ hasChildren = false
249
+ hasState = true
250
+ Arguments = {
251
+ Text: string,
252
+ KeyCode: Enum.KeyCode? = nil, -- an optional keycode, does not actually connect an event.
253
+ ModifierKey: Enum.ModifierKey? = nil -- an optional modifer key for the key code.
254
+ }
255
+ Events = {
256
+ checked: () -> boolean, -- once on check.
257
+ unchecked: () -> boolean, -- once on uncheck.
258
+ hovered: () -> boolean
259
+ }
260
+ States = {
261
+ isChecked: State<boolean>?
262
+ }
263
+ ```
264
+ ]=]
265
+ Iris.MenuToggle = wrapper("MenuToggle")
266
+
267
+ --[[
268
+ -----------------------------------
269
+ [SECTION] Format Widget Iris
270
+ -----------------------------------
271
+ ]]
272
+ --[=[
273
+ @class Format
274
+ Format API
275
+ ]=]
276
+
277
+ --[=[
278
+ @within Format
279
+ @prop Separator Iris.Separator
280
+ @tag Widget
281
+
282
+ A vertical or horizonal line, depending on the context, which visually seperates widgets.
283
+
284
+ ```lua
285
+ Iris.Window({"Separator Demo"})
286
+ Iris.Text({"Some text here!"})
287
+ Iris.Separator()
288
+ Iris.Text({"This text has been separated!"})
289
+ Iris.End()
290
+ ```
291
+
292
+ ![Example Separator](/Iris/assets/api/format/basicSeparator.png)
293
+
294
+ ```lua
295
+ hasChildren = false
296
+ hasState = false
297
+ ```
298
+ ]=]
299
+ Iris.Separator = wrapper("Separator")
300
+
301
+ --[=[
302
+ @within Format
303
+ @prop Indent Iris.Indent
304
+ @tag Widget
305
+ @tag HasChildren
306
+
307
+ Indents its child widgets.
308
+
309
+ ```lua
310
+ Iris.Window({"Indent Demo"})
311
+ Iris.Text({"Unindented text!"})
312
+ Iris.Indent()
313
+ Iris.Text({"This text has been indented!"})
314
+ Iris.End()
315
+ Iris.End()
316
+ ```
317
+
318
+ ![Example Indent](/Iris/assets/api/format/basicIndent.png)
319
+
320
+ ```lua
321
+ hasChildren = true
322
+ hasState = false
323
+ Arguments = {
324
+ Width: number? = Iris._config.IndentSpacing -- indent width ammount.
325
+ }
326
+ ```
327
+ ]=]
328
+ Iris.Indent = wrapper("Indent")
329
+
330
+ --[=[
331
+ @within Format
332
+ @prop SameLine Iris.SameLine
333
+ @tag Widget
334
+ @tag HasChildren
335
+
336
+ Positions its children in a row, horizontally.
337
+
338
+ ```lua
339
+ Iris.Window({"Same Line Demo"})
340
+ Iris.Text({"All of these buttons are on the same line!"})
341
+ Iris.SameLine()
342
+ Iris.Button({"Button 1"})
343
+ Iris.Button({"Button 2"})
344
+ Iris.Button({"Button 3"})
345
+ Iris.End()
346
+ Iris.End()
347
+ ```
348
+
349
+ ![Example SameLine](/Iris/assets/api/format/basicSameLine.png)
350
+
351
+ ```lua
352
+ hasChildren = true
353
+ hasState = false
354
+ Arguments = {
355
+ Width: number? = Iris._config.ItemSpacing.X, -- horizontal spacing between child widgets.
356
+ VerticalAlignment: Enum.VerticalAlignment? = Enum.VerticalAlignment.Center -- how widgets vertically to each other.
357
+ HorizontalAlignment: Enum.HorizontalAlignment? = Enum.HorizontalAlignment.Center -- how widgets are horizontally.
358
+ }
359
+ ```
360
+ ]=]
361
+ Iris.SameLine = wrapper("SameLine")
362
+
363
+ --[=[
364
+ @within Format
365
+ @prop Group Iris.Group
366
+ @tag Widget
367
+ @tag HasChildren
368
+
369
+ Layout widget which contains its children as a single group.
370
+
371
+ ```lua
372
+ hasChildren = true
373
+ hasState = false
374
+ ```
375
+ ]=]
376
+ Iris.Group = wrapper("Group")
377
+
378
+ --[[
379
+ ---------------------------------
380
+ [SECTION] Text Widget API
381
+ ---------------------------------
382
+ ]]
383
+ --[=[
384
+ @class Text
385
+ Text Widget API
386
+ ]=]
387
+
388
+ --[=[
389
+ @within Text
390
+ @prop Text Iris.Text
391
+ @tag Widget
392
+
393
+ A text label to display the text argument.
394
+ The Wrapped argument will make the text wrap around if it is cut off by its parent.
395
+ The Color argument will change the color of the text, by default it is defined in the configuration file.
396
+
397
+ ```lua
398
+ Iris.Window({"Text Demo"})
399
+ Iris.Text({"This is regular text"})
400
+ Iris.End()
401
+ ```
402
+
403
+ ![Example Text](/Iris/assets/api/text/basicText.png)
404
+
405
+ ```lua
406
+ hasChildren = false
407
+ hasState = false
408
+ Arguments = {
409
+ Text: string,
410
+ Wrapped: boolean? = [CONFIG] = false, -- whether the text will wrap around inside the parent container. If not specified, then equal to the config
411
+ Color: Color3? = Iris._config.TextColor, -- the colour of the text.
412
+ RichText: boolean? = [CONFIG] = false -- enable RichText. If not specified, then equal to the config
413
+ }
414
+ Events = {
415
+ hovered: () -> boolean
416
+ }
417
+ ```
418
+ ]=]
419
+ Iris.Text = wrapper("Text")
420
+
421
+ --[=[
422
+ @within Text
423
+ @prop TextWrapped Iris.Text
424
+ @tag Widget
425
+ @deprecated v2.0.0 -- Use 'Text' with the Wrapped argument or change the config.
426
+
427
+ An alias for [Iris.Text](Text#Text) with the Wrapped argument set to true, and the text will wrap around if cut off by its parent.
428
+
429
+ ```lua
430
+ hasChildren = false
431
+ hasState = false
432
+ Arguments = {
433
+ Text: string,
434
+ }
435
+ Events = {
436
+ hovered: () -> boolean
437
+ }
438
+ ```
439
+ ]=]
440
+ Iris.TextWrapped = function(arguments: Types.WidgetArguments)
441
+ arguments[2] = true
442
+ return Iris.Internal._Insert("Text", arguments)
443
+ end
444
+
445
+ --[=[
446
+ @within Text
447
+ @prop TextColored Iris.Text
448
+ @tag Widget
449
+ @deprecated v2.0.0 -- Use 'Text' with the Color argument or change the config.
450
+
451
+ An alias for [Iris.Text](Text#Text) with the color set by the Color argument.
452
+
453
+ ```lua
454
+ hasChildren = false
455
+ hasState = false
456
+ Arguments = {
457
+ Text: string,
458
+ Color: Color3 -- the colour of the text.
459
+ }
460
+ Events = {
461
+ hovered: () -> boolean
462
+ }
463
+ ```
464
+ ]=]
465
+ Iris.TextColored = function(arguments: Types.WidgetArguments)
466
+ arguments[3] = arguments[2]
467
+ arguments[2] = nil
468
+ return Iris.Internal._Insert("Text", arguments)
469
+ end
470
+
471
+ --[=[
472
+ @within Text
473
+ @prop SeparatorText Iris.SeparatorText
474
+ @tag Widget
475
+
476
+ Similar to [Iris.Separator](Format#Separator) but with a text label to be used as a header
477
+ when an [Iris.Tree](Tree#Tree) or [Iris.CollapsingHeader](Tree#CollapsingHeader) is not appropriate.
478
+
479
+ Visually a full width thin line with a text label clipping out part of the line.
480
+
481
+ ```lua
482
+ Iris.Window({"Separator Text Demo"})
483
+ Iris.Text({"Regular Text"})
484
+ Iris.SeparatorText({"This is a separator with text"})
485
+ Iris.Text({"More Regular Text"})
486
+ Iris.End()
487
+ ```
488
+
489
+ ![Example Separator Text](/Iris/assets/api/text/basicSeparatorText.png)
490
+
491
+ ```lua
492
+ hasChildren = false
493
+ hasState = false
494
+ Arguments = {
495
+ Text: string
496
+ }
497
+ ```
498
+ ]=]
499
+ Iris.SeparatorText = wrapper("SeparatorText")
500
+
501
+ --[=[
502
+ @within Text
503
+ @prop InputText Iris.InputText
504
+ @tag Widget
505
+ @tag HasState
506
+
507
+ A field which allows the user to enter text.
508
+
509
+ ```lua
510
+ Iris.Window({"Input Text Demo"})
511
+ local inputtedText = Iris.State("")
512
+
513
+ Iris.InputText({"Enter text here:"}, {text = inputtedText})
514
+ Iris.Text({"You entered: " .. inputtedText:get()})
515
+ Iris.End()
516
+ ```
517
+
518
+ ![Example Input Text](/Iris/assets/api/text/basicInputText.gif)
519
+
520
+ ```lua
521
+ hasChildren = false
522
+ hasState = true
523
+ Arguments = {
524
+ Text: string? = "InputText",
525
+ TextHint: string? = "", -- a hint to display when the text box is empty.
526
+ ReadOnly: boolean? = false,
527
+ MultiLine: boolean? = false
528
+ }
529
+ Events = {
530
+ textChanged: () -> boolean, -- whenever the textbox looses focus and a change was made.
531
+ hovered: () -> boolean
532
+ }
533
+ States = {
534
+ text: State<string>?
535
+ }
536
+ ```
537
+ ]=]
538
+ Iris.InputText = wrapper("InputText")
539
+
540
+ --[[
541
+ ----------------------------------
542
+ [SECTION] Basic Widget API
543
+ ----------------------------------
544
+ ]]
545
+ --[=[
546
+ @class Basic
547
+ Basic Widget API
548
+ ]=]
549
+
550
+ --[=[
551
+ @within Basic
552
+ @prop Button Iris.Button
553
+ @tag Widget
554
+
555
+ A clickable button the size of the text with padding. Can listen to the `clicked()` event to determine if it was pressed.
556
+
557
+ ```lua
558
+ hasChildren = false
559
+ hasState = false
560
+ Arguments = {
561
+ Text: string,
562
+ Size: UDim2? = UDim2.fromOffset(0, 0),
563
+ }
564
+ Events = {
565
+ clicked: () -> boolean,
566
+ rightClicked: () -> boolean,
567
+ doubleClicked: () -> boolean,
568
+ ctrlClicked: () -> boolean, -- when the control key is down and clicked.
569
+ hovered: () -> boolean
570
+ }
571
+ ```
572
+ ]=]
573
+ Iris.Button = wrapper("Button")
574
+
575
+ --[=[
576
+ @within Basic
577
+ @prop SmallButton Iris.SmallButton
578
+ @tag Widget
579
+
580
+ A smaller clickable button, the same as a [Iris.Button](Basic#Button) but without padding. Can listen to the `clicked()` event to determine if it was pressed.
581
+
582
+ ```lua
583
+ hasChildren = false
584
+ hasState = false
585
+ Arguments = {
586
+ Text: string,
587
+ Size: UDim2? = 0,
588
+ }
589
+ Events = {
590
+ clicked: () -> boolean,
591
+ rightClicked: () -> boolean,
592
+ doubleClicked: () -> boolean,
593
+ ctrlClicked: () -> boolean, -- when the control key is down and clicked.
594
+ hovered: () -> boolean
595
+ }
596
+ ```
597
+ ]=]
598
+ Iris.SmallButton = wrapper("SmallButton")
599
+
600
+ --[=[
601
+ @within Basic
602
+ @prop Checkbox Iris.Checkbox
603
+ @tag Widget
604
+ @tag HasState
605
+
606
+ A checkable box with a visual tick to represent a boolean true or false state.
607
+
608
+ ```lua
609
+ hasChildren = false
610
+ hasState = true
611
+ Arguments = {
612
+ Text: string
613
+ }
614
+ Events = {
615
+ checked: () -> boolean, -- once when checked.
616
+ unchecked: () -> boolean, -- once when unchecked.
617
+ hovered: () -> boolean
618
+ }
619
+ States = {
620
+ isChecked = State<boolean>? -- whether the box is checked.
621
+ }
622
+ ```
623
+ ]=]
624
+ Iris.Checkbox = wrapper("Checkbox")
625
+
626
+ --[=[
627
+ @within Basic
628
+ @prop RadioButton Iris.RadioButton
629
+ @tag Widget
630
+ @tag HasState
631
+
632
+ A circular selectable button, changing the state to its index argument. Used in conjunction with multiple other RadioButtons sharing the same state to represent one value from multiple options.
633
+
634
+ ```lua
635
+ hasChildren = false
636
+ hasState = true
637
+ Arguments = {
638
+ Text: string,
639
+ Index: any -- the state object is set to when clicked.
640
+ }
641
+ Events = {
642
+ selected: () -> boolean,
643
+ unselected: () -> boolean,
644
+ active: () -> boolean, -- if the state index equals the RadioButton's index.
645
+ hovered: () -> boolean
646
+ }
647
+ States = {
648
+ index = State<any>? -- the state set by the index of a RadioButton.
649
+ }
650
+ ```
651
+ ]=]
652
+ Iris.RadioButton = wrapper("RadioButton")
653
+
654
+ --[[
655
+ ----------------------------------
656
+ [SECTION] Image Widget API
657
+ ----------------------------------
658
+ ]]
659
+ --[=[
660
+ @class Image
661
+ Image Widget API
662
+
663
+ Provides two widgets for Images and ImageButtons, which provide the same control as a an ImageLabel instance.
664
+ ]=]
665
+
666
+ --[=[
667
+ @within Image
668
+ @prop Image Iris.Image
669
+ @tag Widget
670
+
671
+ An image widget for displaying an image given its texture ID and a size. The widget also supports Rect Offset and Size allowing cropping of the image and the rest of the ScaleType properties.
672
+ Some of the arguments are only used depending on the ScaleType property, such as TileSize or Slice which will be ignored.
673
+
674
+ ```lua
675
+ hasChildren = false
676
+ hasState = false
677
+ Arguments = {
678
+ Image: string, -- the texture asset id
679
+ Size: UDim2,
680
+ Rect: Rect? = Rect.new(), -- Rect structure which is used to determine the offset or size. An empty, zeroed rect is equivalent to nil
681
+ ScaleType: Enum.ScaleType? = Enum.ScaleType.Stretch, -- used to determine whether the TileSize, SliceCenter and SliceScale arguments are used
682
+ ResampleMode: Enum.ResampleMode? = Enum.ResampleMode.Default,
683
+ TileSize: UDim2? = UDim2.fromScale(1, 1), -- only used if the ScaleType is set to Tile
684
+ SliceCenter: Rect? = Rect.new(), -- only used if the ScaleType is set to Slice
685
+ SliceScale: number? = 1 -- only used if the ScaleType is set to Slice
686
+ }
687
+ Events = {
688
+ hovered: () -> boolean
689
+ }
690
+ ```
691
+ ]=]
692
+ Iris.Image = wrapper("Image")
693
+
694
+ --[=[
695
+ @within Image
696
+ @prop ImageButton Iris.ImageButton
697
+ @tag Widget
698
+
699
+ An image button widget for a button as an image given its texture ID and a size. The widget also supports Rect Offset and Size allowing cropping of the image, and the rest of the ScaleType properties.
700
+ Supports all of the events of a regular button.
701
+
702
+ ```lua
703
+ hasChildren = false
704
+ hasState = false
705
+ Arguments = {
706
+ Image: string, -- the texture asset id
707
+ Size: UDim2,
708
+ Rect: Rect? = Rect.new(), -- Rect structure which is used to determine the offset or size. An empty, zeroed rect is equivalent to nil
709
+ ScaleType: Enum.ScaleType? = Enum.ScaleType.Stretch, -- used to determine whether the TileSize, SliceCenter and SliceScale arguments are used
710
+ ResampleMode: Enum.ResampleMode? = Enum.ResampleMode.Default,
711
+ TileSize: UDim2? = UDim2.fromScale(1, 1), -- only used if the ScaleType is set to Tile
712
+ SliceCenter: Rect? = Rect.new(), -- only used if the ScaleType is set to Slice
713
+ SliceScale: number? = 1 -- only used if the ScaleType is set to Slice
714
+ }
715
+ Events = {
716
+ clicked: () -> boolean,
717
+ rightClicked: () -> boolean,
718
+ doubleClicked: () -> boolean,
719
+ ctrlClicked: () -> boolean, -- when the control key is down and clicked.
720
+ hovered: () -> boolean
721
+ }
722
+ ```
723
+ ]=]
724
+ Iris.ImageButton = wrapper("ImageButton")
725
+
726
+ --[[
727
+ ---------------------------------
728
+ [SECTION] Tree Widget API
729
+ ---------------------------------
730
+ ]]
731
+ --[=[
732
+ @class Tree
733
+ Tree Widget API
734
+ ]=]
735
+
736
+ --[=[
737
+ @within Tree
738
+ @prop Tree Iris.Tree
739
+ @tag Widget
740
+ @tag HasChildren
741
+ @tag HasState
742
+
743
+ A collapsable container for other widgets, to organise and hide widgets when not needed. The state determines whether the child widgets are visible or not. Clicking on the widget will collapse or uncollapse it.
744
+
745
+ ```lua
746
+ hasChildren: true
747
+ hasState: true
748
+ Arguments = {
749
+ Text: string,
750
+ SpanAvailWidth: boolean? = false, -- the tree title will fill all horizontal space to the end its parent container.
751
+ NoIndent: boolean? = false, -- the child widgets will not be indented underneath.
752
+ DefaultOpen: boolean? = false -- initially opens the tree if no state is provided
753
+ }
754
+ Events = {
755
+ collapsed: () -> boolean,
756
+ uncollapsed: () -> boolean,
757
+ hovered: () -> boolean
758
+ }
759
+ States = {
760
+ isUncollapsed: State<boolean>? -- whether the widget is collapsed.
761
+ }
762
+ ```
763
+ ]=]
764
+ Iris.Tree = wrapper("Tree")
765
+
766
+ --[=[
767
+ @within Tree
768
+ @prop CollapsingHeader Iris.CollapsingHeader
769
+ @tag Widget
770
+ @tag HasChildren
771
+ @tag HasState
772
+
773
+ The same as a Tree Widget, but with a larger title and clearer, used mainly for organsing widgets on the first level of a window.
774
+
775
+ ```lua
776
+ hasChildren: true
777
+ hasState: true
778
+ Arguments = {
779
+ Text: string,
780
+ DefaultOpen: boolean? = false -- initially opens the tree if no state is provided
781
+ }
782
+ Events = {
783
+ collapsed: () -> boolean,
784
+ uncollapsed: () -> boolean,
785
+ hovered: () -> boolean
786
+ }
787
+ States = {
788
+ isUncollapsed: State<boolean>? -- whether the widget is collapsed.
789
+ }
790
+ ```
791
+ ]=]
792
+ Iris.CollapsingHeader = wrapper("CollapsingHeader")
793
+
794
+ --[[
795
+ --------------------------------
796
+ [SECTION] Tab Widget API
797
+ --------------------------------
798
+ ]]
799
+ --[=[
800
+ @class Tab
801
+ Tab Widget API
802
+ ]=]
803
+
804
+ --[=[
805
+ @within Tab
806
+ @prop TabBar Iris.TabBar
807
+ @tag Widget
808
+ @tag HasChildren
809
+ @tag HasState
810
+
811
+ Creates a TabBar for putting tabs under. This does not create the tabs but just the container for them to be in.
812
+ The index state is used to control the current tab and is based on an index starting from 1 rather than the
813
+ text provided to a Tab. The TabBar will replicate the index to the Tab children .
814
+
815
+ ```lua
816
+ hasChildren: true
817
+ hasState: true
818
+ States = {
819
+ index: State<number>? -- whether the widget is collapsed.
820
+ }
821
+ ```
822
+ ]=]
823
+ Iris.TabBar = wrapper("TabBar")
824
+
825
+ --[=[
826
+ @within Tab
827
+ @prop Tab Iris.Tab
828
+ @tag Widget
829
+ @tag HasChildren
830
+ @tag HasState
831
+
832
+ The tab item for use under a TabBar. The TabBar must be the parent and determines the index value. You cannot
833
+ provide a state for this tab. The optional Hideable argument determines if a tab can be closed, which is
834
+ controlled by the isOpened state.
835
+
836
+ A tab will take up the full horizontal width of the parent and hide any other tabs in the TabBar.
837
+
838
+ ```lua
839
+ hasChildren: true
840
+ hasState: true
841
+ Arguments = {
842
+ Text: string,
843
+ Hideable: boolean? = nil -- determines whether a tab can be closed/hidden
844
+ }
845
+ Events = {
846
+ clicked: () -> boolean,
847
+ hovered: () -> boolean
848
+ selected: () -> boolean
849
+ unselected: () -> boolean
850
+ active: () -> boolean
851
+ opened: () -> boolean
852
+ closed: () -> boolean
853
+ }
854
+ States = {
855
+ isOpened: State<boolean>?
856
+ }
857
+ ```
858
+ ]=]
859
+ Iris.Tab = wrapper("Tab")
860
+
861
+ --[[
862
+ ----------------------------------
863
+ [SECTION] Input Widget API
864
+ ----------------------------------
865
+ ]]
866
+ --[=[
867
+ @class Input
868
+ Input Widget API
869
+
870
+ Input Widgets are textboxes for typing in specific number values. See [Drag], [Slider] or [InputText](Text#InputText) for more input types.
871
+
872
+ Iris provides a set of specific inputs for the datatypes:
873
+ Number,
874
+ [Vector2](https://create.roblox.com/docs/reference/engine/datatypes/Vector2),
875
+ [Vector3](https://create.roblox.com/docs/reference/engine/datatypes/Vector3),
876
+ [UDim](https://create.roblox.com/docs/reference/engine/datatypes/UDim),
877
+ [UDim2](https://create.roblox.com/docs/reference/engine/datatypes/UDim2),
878
+ [Rect](https://create.roblox.com/docs/reference/engine/datatypes/Rect),
879
+ [Color3](https://create.roblox.com/docs/reference/engine/datatypes/Color3)
880
+ and the custom [Color4](https://create.roblox.com/docs/reference/engine/datatypes/Color3).
881
+
882
+ Each Input widget has the same arguments but the types depend of the DataType:
883
+ 1. Text: string? = "Input{type}" -- the text to be displayed to the right of the textbox.
884
+ 2. Increment: DataType? = nil, -- the increment argument determines how a value will be rounded once the textbox looses focus.
885
+ 3. Min: DataType? = nil, -- the minimum value that the widget will allow, no clamping by default.
886
+ 4. Max: DataType? = nil, -- the maximum value that the widget will allow, no clamping by default.
887
+ 5. Format: string | { string }? = [DYNAMIC] -- uses `string.format` to customise visual display.
888
+
889
+ The format string can either by a single value which will apply to every box, or a table allowing specific text.
890
+
891
+ :::note
892
+ If you do not specify a format option then Iris will dynamically calculate a relevant number of sigifs and format option.
893
+ For example, if you have Increment, Min and Max values of 1, 0 and 100, then Iris will guess that you are only using integers
894
+ and will format the value as an integer.
895
+ As another example, if you have Increment, Min and max values of 0.005, 0, 1, then Iris will guess you are using a float of 3
896
+ significant figures.
897
+
898
+ Additionally, for certain DataTypes, Iris will append an prefix to each box if no format option is provided.
899
+ For example, a Vector3 box will have the append values of "X: ", "Y: " and "Z: " to the relevant input box.
900
+ :::
901
+ ]=]
902
+
903
+ --[=[
904
+ @within Input
905
+ @prop InputNum Iris.InputNum
906
+ @tag Widget
907
+ @tag HasState
908
+
909
+ An input box for numbers. The number can be either an integer or a float.
910
+
911
+ ```lua
912
+ hasChildren = false
913
+ hasState = true
914
+ Arguments = {
915
+ Text: string? = "InputNum",
916
+ Increment: number? = nil,
917
+ Min: number? = nil,
918
+ Max: number? = nil,
919
+ Format: string? | { string }? = [DYNAMIC], -- Iris will dynamically generate an approriate format.
920
+ NoButtons: boolean? = false -- whether to display + and - buttons next to the input box.
921
+ }
922
+ Events = {
923
+ numberChanged: () -> boolean,
924
+ hovered: () -> boolean
925
+ }
926
+ States = {
927
+ number: State<number>?,
928
+ editingText: State<boolean>?
929
+ }
930
+ ```
931
+ ]=]
932
+ Iris.InputNum = wrapper("InputNum")
933
+
934
+ --[=[
935
+ @within Input
936
+ @prop InputVector2 Iris.InputVector2
937
+ @tag Widget
938
+ @tag HasState
939
+
940
+ An input box for Vector2. The numbers can be either integers or floats.
941
+
942
+ ```lua
943
+ hasChildren = false
944
+ hasState = true
945
+ Arguments = {
946
+ Text: string? = "InputVector2",
947
+ Increment: Vector2? = nil,
948
+ Min: Vector2? = nil,
949
+ Max: Vector2? = nil,
950
+ Format: string? | { string }? = [DYNAMIC] -- Iris will dynamically generate an approriate format.
951
+ }
952
+ Events = {
953
+ numberChanged: () -> boolean,
954
+ hovered: () -> boolean
955
+ }
956
+ States = {
957
+ number: State<Vector2>?,
958
+ editingText: State<boolean>?
959
+ }
960
+ ```
961
+ ]=]
962
+ Iris.InputVector2 = wrapper("InputVector2")
963
+
964
+ --[=[
965
+ @within Input
966
+ @prop InputVector3 Iris.InputVector3
967
+ @tag Widget
968
+ @tag HasState
969
+
970
+ An input box for Vector3. The numbers can be either integers or floats.
971
+
972
+ ```lua
973
+ hasChildren = false
974
+ hasState = true
975
+ Arguments = {
976
+ Text: string? = "InputVector3",
977
+ Increment: Vector3? = nil,
978
+ Min: Vector3? = nil,
979
+ Max: Vector3? = nil,
980
+ Format: string? | { string }? = [DYNAMIC] -- Iris will dynamically generate an approriate format.
981
+ }
982
+ Events = {
983
+ numberChanged: () -> boolean,
984
+ hovered: () -> boolean
985
+ }
986
+ States = {
987
+ number: State<Vector3>?,
988
+ editingText: State<boolean>?
989
+ }
990
+ ```
991
+ ]=]
992
+ Iris.InputVector3 = wrapper("InputVector3")
993
+
994
+ --[=[
995
+ @within Input
996
+ @prop InputUDim Iris.InputUDim
997
+ @tag Widget
998
+ @tag HasState
999
+
1000
+ An input box for UDim. The Scale box will be a float and the Offset box will be
1001
+ an integer, unless specified differently.
1002
+
1003
+ ```lua
1004
+ hasChildren = false
1005
+ hasState = true
1006
+ Arguments = {
1007
+ Text: string? = "InputUDim",
1008
+ Increment: UDim? = nil,
1009
+ Min: UDim? = nil,
1010
+ Max: UDim? = nil,
1011
+ Format: string? | { string }? = [DYNAMIC] -- Iris will dynamically generate an approriate format.
1012
+ }
1013
+ Events = {
1014
+ numberChanged: () -> boolean,
1015
+ hovered: () -> boolean
1016
+ }
1017
+ States = {
1018
+ number: State<UDim>?,
1019
+ editingText: State<boolean>?
1020
+ }
1021
+ ```
1022
+ ]=]
1023
+ Iris.InputUDim = wrapper("InputUDim")
1024
+
1025
+ --[=[
1026
+ @within Input
1027
+ @prop InputUDim2 Iris.InputUDim2
1028
+ @tag Widget
1029
+ @tag HasState
1030
+
1031
+ An input box for UDim2. The Scale boxes will be floats and the Offset boxes will be
1032
+ integers, unless specified differently.
1033
+
1034
+ ```lua
1035
+ hasChildren = false
1036
+ hasState = true
1037
+ Arguments = {
1038
+ Text: string? = "InputUDim2",
1039
+ Increment: UDim2? = nil,
1040
+ Min: UDim2? = nil,
1041
+ Max: UDim2? = nil,
1042
+ Format: string? | { string }? = [DYNAMIC] -- Iris will dynamically generate an approriate format.
1043
+ }
1044
+ Events = {
1045
+ numberChanged: () -> boolean,
1046
+ hovered: () -> boolean
1047
+ }
1048
+ States = {
1049
+ number: State<UDim2>?,
1050
+ editingText: State<boolean>?
1051
+ }
1052
+ ```
1053
+ ]=]
1054
+ Iris.InputUDim2 = wrapper("InputUDim2")
1055
+
1056
+ --[=[
1057
+ @within Input
1058
+ @prop InputRect Iris.InputRect
1059
+ @tag Widget
1060
+ @tag HasState
1061
+
1062
+ An input box for Rect. The numbers will default to integers, unless specified differently.
1063
+
1064
+ ```lua
1065
+ hasChildren = false
1066
+ hasState = true
1067
+ Arguments = {
1068
+ Text: string? = "InputRect",
1069
+ Increment: Rect? = nil,
1070
+ Min: Rect? = nil,
1071
+ Max: Rect? = nil,
1072
+ Format: string? | { string }? = [DYNAMIC] -- Iris will dynamically generate an approriate format.
1073
+ }
1074
+ Events = {
1075
+ numberChanged: () -> boolean,
1076
+ hovered: () -> boolean
1077
+ }
1078
+ States = {
1079
+ number: State<Rect>?,
1080
+ editingText: State<boolean>?
1081
+ }
1082
+ ```
1083
+ ]=]
1084
+ Iris.InputRect = wrapper("InputRect")
1085
+
1086
+ --[[
1087
+ ---------------------------------
1088
+ [SECTION] Drag Widget API
1089
+ ---------------------------------
1090
+ ]]
1091
+ --[=[
1092
+ @class Drag
1093
+ Drag Widget API
1094
+
1095
+ A draggable widget for each datatype. Allows direct typing input but also dragging values by clicking and holding.
1096
+
1097
+ See [Input] for more details on the arguments.
1098
+ ]=]
1099
+
1100
+ --[=[
1101
+ @within Drag
1102
+ @prop DragNum Iris.DragNum
1103
+ @tag Widget
1104
+ @tag HasState
1105
+
1106
+ A field which allows the user to click and drag their cursor to enter a number.
1107
+ You can ctrl + click to directly input a number, like InputNum.
1108
+ You can hold Shift to increase speed, and Alt to decrease speed when dragging.
1109
+
1110
+ ```lua
1111
+ hasChildren = false
1112
+ hasState = true
1113
+ Arguments = {
1114
+ Text: string? = "DragNum",
1115
+ Increment: number? = nil,
1116
+ Min: number? = nil,
1117
+ Max: number? = nil,
1118
+ Format: string? | { string }? = [DYNAMIC] -- Iris will dynamically generate an approriate format.
1119
+ }
1120
+ Events = {
1121
+ numberChanged: () -> boolean,
1122
+ hovered: () -> boolean
1123
+ }
1124
+ States = {
1125
+ number: State<number>?,
1126
+ editingText: State<boolean>?
1127
+ }
1128
+ ```
1129
+ ]=]
1130
+ Iris.DragNum = wrapper("DragNum")
1131
+
1132
+ --[=[
1133
+ @within Drag
1134
+ @prop DragVector2 Iris.DragVector2
1135
+ @tag Widget
1136
+ @tag HasState
1137
+
1138
+ A field which allows the user to click and drag their cursor to enter a Vector2.
1139
+ You can ctrl + click to directly input a Vector2, like InputVector2.
1140
+ You can hold Shift to increase speed, and Alt to decrease speed when dragging.
1141
+
1142
+ ```lua
1143
+ hasChildren = false
1144
+ hasState = true
1145
+ Arguments = {
1146
+ Text: string? = "DragVector2",
1147
+ Increment: Vector2? = nil,
1148
+ Min: Vector2? = nil,
1149
+ Max: Vector2? = nil,
1150
+ Format: string? | { string }? = [DYNAMIC] -- Iris will dynamically generate an approriate format.
1151
+ }
1152
+ Events = {
1153
+ numberChanged: () -> boolean,
1154
+ hovered: () -> boolean
1155
+ }
1156
+ States = {
1157
+ number: State<Vector2>?,
1158
+ editingText: State<boolean>?
1159
+ }
1160
+ ```
1161
+ ]=]
1162
+ Iris.DragVector2 = wrapper("DragVector2")
1163
+
1164
+ --[=[
1165
+ @within Drag
1166
+ @prop DragVector3 Iris.DragVector3
1167
+ @tag Widget
1168
+ @tag HasState
1169
+
1170
+ A field which allows the user to click and drag their cursor to enter a Vector3.
1171
+ You can ctrl + click to directly input a Vector3, like InputVector3.
1172
+ You can hold Shift to increase speed, and Alt to decrease speed when dragging.
1173
+
1174
+ ```lua
1175
+ hasChildren = false
1176
+ hasState = true
1177
+ Arguments = {
1178
+ Text: string? = "DragVector3",
1179
+ Increment: Vector3? = nil,
1180
+ Min: Vector3? = nil,
1181
+ Max: Vector3? = nil,
1182
+ Format: string? | { string }? = [DYNAMIC] -- Iris will dynamically generate an approriate format.
1183
+ }
1184
+ Events = {
1185
+ numberChanged: () -> boolean,
1186
+ hovered: () -> boolean
1187
+ }
1188
+ States = {
1189
+ number: State<Vector3>?,
1190
+ editingText: State<boolean>?
1191
+ }
1192
+ ```
1193
+ ]=]
1194
+ Iris.DragVector3 = wrapper("DragVector3")
1195
+
1196
+ --[=[
1197
+ @within Drag
1198
+ @prop DragUDim Iris.DragUDim
1199
+ @tag Widget
1200
+ @tag HasState
1201
+
1202
+ A field which allows the user to click and drag their cursor to enter a UDim.
1203
+ You can ctrl + click to directly input a UDim, like InputUDim.
1204
+ You can hold Shift to increase speed, and Alt to decrease speed when dragging.
1205
+
1206
+ ```lua
1207
+ hasChildren = false
1208
+ hasState = true
1209
+ Arguments = {
1210
+ Text: string? = "DragUDim",
1211
+ Increment: UDim? = nil,
1212
+ Min: UDim? = nil,
1213
+ Max: UDim? = nil,
1214
+ Format: string? | { string }? = [DYNAMIC] -- Iris will dynamically generate an approriate format.
1215
+ }
1216
+ Events = {
1217
+ numberChanged: () -> boolean,
1218
+ hovered: () -> boolean
1219
+ }
1220
+ States = {
1221
+ number: State<UDim>?,
1222
+ editingText: State<boolean>?
1223
+ }
1224
+ ```
1225
+ ]=]
1226
+ Iris.DragUDim = wrapper("DragUDim")
1227
+
1228
+ --[=[
1229
+ @within Drag
1230
+ @prop DragUDim2 Iris.DragUDim2
1231
+ @tag Widget
1232
+ @tag HasState
1233
+
1234
+ A field which allows the user to click and drag their cursor to enter a UDim2.
1235
+ You can ctrl + click to directly input a UDim2, like InputUDim2.
1236
+ You can hold Shift to increase speed, and Alt to decrease speed when dragging.
1237
+
1238
+ ```lua
1239
+ hasChildren = false
1240
+ hasState = true
1241
+ Arguments = {
1242
+ Text: string? = "DragUDim2",
1243
+ Increment: UDim2? = nil,
1244
+ Min: UDim2? = nil,
1245
+ Max: UDim2? = nil,
1246
+ Format: string? | { string }? = [DYNAMIC] -- Iris will dynamically generate an approriate format.
1247
+ }
1248
+ Events = {
1249
+ numberChanged: () -> boolean,
1250
+ hovered: () -> boolean
1251
+ }
1252
+ States = {
1253
+ number: State<UDim2>?,
1254
+ editingText: State<boolean>?
1255
+ }
1256
+ ```
1257
+ ]=]
1258
+ Iris.DragUDim2 = wrapper("DragUDim2")
1259
+
1260
+ --[=[
1261
+ @within Drag
1262
+ @prop DragRect Iris.DragRect
1263
+ @tag Widget
1264
+ @tag HasState
1265
+
1266
+ A field which allows the user to click and drag their cursor to enter a Rect.
1267
+ You can ctrl + click to directly input a Rect, like InputRect.
1268
+ You can hold Shift to increase speed, and Alt to decrease speed when dragging.
1269
+
1270
+ ```lua
1271
+ hasChildren = false
1272
+ hasState = true
1273
+ Arguments = {
1274
+ Text: string? = "DragRect",
1275
+ Increment: Rect? = nil,
1276
+ Min: Rect? = nil,
1277
+ Max: Rect? = nil,
1278
+ Format: string? | { string }? = [DYNAMIC] -- Iris will dynamically generate an approriate format.
1279
+ }
1280
+ Events = {
1281
+ numberChanged: () -> boolean,
1282
+ hovered: () -> boolean
1283
+ }
1284
+ States = {
1285
+ number: State<Rect>?,
1286
+ editingText: State<boolean>?
1287
+ }
1288
+ ```
1289
+ ]=]
1290
+ Iris.DragRect = wrapper("DragRect")
1291
+
1292
+ --[=[
1293
+ @within Input
1294
+ @prop InputColor3 Iris.InputColor3
1295
+ @tag Widget
1296
+ @tag HasState
1297
+
1298
+ An input box for Color3. The input boxes are draggable between 0 and 255 or if UseFloats then between 0 and 1.
1299
+ Input can also be done using HSV instead of the default RGB.
1300
+ If no format argument is provided then a default R, G, B or H, S, V prefix is applied.
1301
+
1302
+ ```lua
1303
+ hasChildren = false
1304
+ hasState = true
1305
+ Arguments = {
1306
+ Text: string? = "InputColor3",
1307
+ UseFloats: boolean? = false, -- constrain the values between floats 0 and 1 or integers 0 and 255.
1308
+ UseHSV: boolean? = false, -- input using HSV instead.
1309
+ Format: string? | { string }? = [DYNAMIC] -- Iris will dynamically generate an approriate format.
1310
+ }
1311
+ Events = {
1312
+ numberChanged: () -> boolean,
1313
+ hovered: () -> boolean
1314
+ }
1315
+ States = {
1316
+ color: State<Color3>?,
1317
+ editingText: State<boolean>?
1318
+ }
1319
+ ```
1320
+ ]=]
1321
+ Iris.InputColor3 = wrapper("InputColor3")
1322
+
1323
+ --[=[
1324
+ @within Input
1325
+ @prop InputColor4 Iris.InputColor4
1326
+ @tag Widget
1327
+ @tag HasState
1328
+
1329
+ An input box for Color4. Color4 is a combination of Color3 and a fourth transparency argument.
1330
+ It has two states for this purpose.
1331
+ The input boxes are draggable between 0 and 255 or if UseFloats then between 0 and 1.
1332
+ Input can also be done using HSV instead of the default RGB.
1333
+ If no format argument is provided then a default R, G, B, T or H, S, V, T prefix is applied.
1334
+
1335
+ ```lua
1336
+ hasChildren = false
1337
+ hasState = true
1338
+ Arguments = {
1339
+ Text: string? = "InputColor4",
1340
+ UseFloats: boolean? = false, -- constrain the values between floats 0 and 1 or integers 0 and 255.
1341
+ UseHSV: boolean? = false, -- input using HSV instead.
1342
+ Format: string? | { string }? = [DYNAMIC] -- Iris will dynamically generate an approriate format.
1343
+ }
1344
+ Events = {
1345
+ numberChanged: () -> boolean,
1346
+ hovered: () -> boolean
1347
+ }
1348
+ States = {
1349
+ color: State<Color3>?,
1350
+ transparency: State<number>?,
1351
+ editingText: State<boolean>?
1352
+ }
1353
+ ```
1354
+ ]=]
1355
+ Iris.InputColor4 = wrapper("InputColor4")
1356
+
1357
+ --[[
1358
+ -----------------------------------
1359
+ [SECTION] Slider Widget API
1360
+ -----------------------------------
1361
+ ]]
1362
+ --[=[
1363
+ @class Slider
1364
+ Slider Widget API
1365
+
1366
+ A draggable widget with a visual bar constrained between a min and max for each datatype.
1367
+ Allows direct typing input but also dragging the slider by clicking and holding anywhere in the box.
1368
+
1369
+ See [Input] for more details on the arguments.
1370
+ ]=]
1371
+
1372
+ --[=[
1373
+ @within Slider
1374
+ @prop SliderNum Iris.SliderNum
1375
+ @tag Widget
1376
+ @tag HasState
1377
+
1378
+ A field which allows the user to slide a grip to enter a number within a range.
1379
+ You can ctrl + click to directly input a number, like InputNum.
1380
+
1381
+ ```lua
1382
+ hasChildren = false
1383
+ hasState = true
1384
+ Arguments = {
1385
+ Text: string? = "SliderNum",
1386
+ Increment: number? = 1,
1387
+ Min: number? = 0,
1388
+ Max: number? = 100,
1389
+ Format: string? | { string }? = [DYNAMIC] -- Iris will dynamically generate an approriate format.
1390
+ }
1391
+ Events = {
1392
+ numberChanged: () -> boolean,
1393
+ hovered: () -> boolean
1394
+ }
1395
+ States = {
1396
+ number: State<number>?,
1397
+ editingText: State<boolean>?
1398
+ }
1399
+ ```
1400
+ ]=]
1401
+ Iris.SliderNum = wrapper("SliderNum")
1402
+
1403
+ --[=[
1404
+ @within Slider
1405
+ @prop SliderVector2 Iris.SliderVector2
1406
+ @tag Widget
1407
+ @tag HasState
1408
+
1409
+ A field which allows the user to slide a grip to enter a Vector2 within a range.
1410
+ You can ctrl + click to directly input a Vector2, like InputVector2.
1411
+
1412
+ ```lua
1413
+ hasChildren = false
1414
+ hasState = true
1415
+ Arguments = {
1416
+ Text: string? = "SliderVector2",
1417
+ Increment: Vector2? = { 1, 1 },
1418
+ Min: Vector2? = { 0, 0 },
1419
+ Max: Vector2? = { 100, 100 },
1420
+ Format: string? | { string }? = [DYNAMIC] -- Iris will dynamically generate an approriate format.
1421
+ }
1422
+ Events = {
1423
+ numberChanged: () -> boolean,
1424
+ hovered: () -> boolean
1425
+ }
1426
+ States = {
1427
+ number: State<Vector2>?,
1428
+ editingText: State<boolean>?
1429
+ }
1430
+ ```
1431
+ ]=]
1432
+ Iris.SliderVector2 = wrapper("SliderVector2")
1433
+
1434
+ --[=[
1435
+ @within Slider
1436
+ @prop SliderVector3 Iris.SliderVector3
1437
+ @tag Widget
1438
+ @tag HasState
1439
+
1440
+ A field which allows the user to slide a grip to enter a Vector3 within a range.
1441
+ You can ctrl + click to directly input a Vector3, like InputVector3.
1442
+
1443
+ ```lua
1444
+ hasChildren = false
1445
+ hasState = true
1446
+ Arguments = {
1447
+ Text: string? = "SliderVector3",
1448
+ Increment: Vector3? = { 1, 1, 1 },
1449
+ Min: Vector3? = { 0, 0, 0 },
1450
+ Max: Vector3? = { 100, 100, 100 },
1451
+ Format: string? | { string }? = [DYNAMIC] -- Iris will dynamically generate an approriate format.
1452
+ }
1453
+ Events = {
1454
+ numberChanged: () -> boolean,
1455
+ hovered: () -> boolean
1456
+ }
1457
+ States = {
1458
+ number: State<Vector3>?,
1459
+ editingText: State<boolean>?
1460
+ }
1461
+ ```
1462
+ ]=]
1463
+ Iris.SliderVector3 = wrapper("SliderVector3")
1464
+
1465
+ --[=[
1466
+ @within Slider
1467
+ @prop SliderUDim Iris.SliderUDim
1468
+ @tag Widget
1469
+ @tag HasState
1470
+
1471
+ A field which allows the user to slide a grip to enter a UDim within a range.
1472
+ You can ctrl + click to directly input a UDim, like InputUDim.
1473
+
1474
+ ```lua
1475
+ hasChildren = false
1476
+ hasState = true
1477
+ Arguments = {
1478
+ Text: string? = "SliderUDim",
1479
+ Increment: UDim? = { 0.01, 1 },
1480
+ Min: UDim? = { 0, 0 },
1481
+ Max: UDim? = { 1, 960 },
1482
+ Format: string? | { string }? = [DYNAMIC] -- Iris will dynamically generate an approriate format.
1483
+ }
1484
+ Events = {
1485
+ numberChanged: () -> boolean,
1486
+ hovered: () -> boolean
1487
+ }
1488
+ States = {
1489
+ number: State<UDim>?,
1490
+ editingText: State<boolean>?
1491
+ }
1492
+ ```
1493
+ ]=]
1494
+ Iris.SliderUDim = wrapper("SliderUDim")
1495
+
1496
+ --[=[
1497
+ @within Slider
1498
+ @prop SliderUDim2 Iris.SliderUDim2
1499
+ @tag Widget
1500
+ @tag HasState
1501
+
1502
+ A field which allows the user to slide a grip to enter a UDim2 within a range.
1503
+ You can ctrl + click to directly input a UDim2, like InputUDim2.
1504
+
1505
+ ```lua
1506
+ hasChildren = false
1507
+ hasState = true
1508
+ Arguments = {
1509
+ Text: string? = "SliderUDim2",
1510
+ Increment: UDim2? = { 0.01, 1, 0.01, 1 },
1511
+ Min: UDim2? = { 0, 0, 0, 0 },
1512
+ Max: UDim2? = { 1, 960, 1, 960 },
1513
+ Format: string? | { string }? = [DYNAMIC] -- Iris will dynamically generate an approriate format.
1514
+ }
1515
+ Events = {
1516
+ numberChanged: () -> boolean,
1517
+ hovered: () -> boolean
1518
+ }
1519
+ States = {
1520
+ number: State<UDim2>?,
1521
+ editingText: State<boolean>?
1522
+ }
1523
+ ```
1524
+ ]=]
1525
+ Iris.SliderUDim2 = wrapper("SliderUDim2")
1526
+
1527
+ --[=[
1528
+ @within Slider
1529
+ @prop SliderRect Iris.SliderRect
1530
+ @tag Widget
1531
+ @tag HasState
1532
+
1533
+ A field which allows the user to slide a grip to enter a Rect within a range.
1534
+ You can ctrl + click to directly input a Rect, like InputRect.
1535
+
1536
+ ```lua
1537
+ hasChildren = false
1538
+ hasState = true
1539
+ Arguments = {
1540
+ Text: string? = "SliderRect",
1541
+ Increment: Rect? = { 1, 1, 1, 1 },
1542
+ Min: Rect? = { 0, 0, 0, 0 },
1543
+ Max: Rect? = { 960, 960, 960, 960 },
1544
+ Format: string? | { string }? = [DYNAMIC] -- Iris will dynamically generate an approriate format.
1545
+ }
1546
+ Events = {
1547
+ numberChanged: () -> boolean,
1548
+ hovered: () -> boolean
1549
+ }
1550
+ States = {
1551
+ number: State<Rect>?,
1552
+ editingText: State<boolean>?
1553
+ }
1554
+ ```
1555
+ ]=]
1556
+ Iris.SliderRect = wrapper("SliderRect")
1557
+
1558
+ --[[
1559
+ ----------------------------------
1560
+ [SECTION] Combo Widget API
1561
+ ----------------------------------
1562
+ ]]
1563
+ --[=[
1564
+ @class Combo
1565
+ Combo Widget API
1566
+ ]=]
1567
+
1568
+ --[=[
1569
+ @within Combo
1570
+ @prop Selectable Iris.Selectable
1571
+ @tag Widget
1572
+ @tag HasState
1573
+
1574
+ An object which can be selected.
1575
+
1576
+ ```lua
1577
+ hasChildren = false
1578
+ hasState = true
1579
+ Arguments = {
1580
+ Text: string,
1581
+ Index: any, -- index of selectable value.
1582
+ NoClick: boolean? = false -- prevents the selectable from being clicked by the user.
1583
+ }
1584
+ Events = {
1585
+ selected: () -> boolean,
1586
+ unselected: () -> boolean,
1587
+ active: () -> boolean,
1588
+ clicked: () -> boolean,
1589
+ rightClicked: () -> boolean,
1590
+ doubleClicked: () -> boolean,
1591
+ ctrlClicked: () -> boolean,
1592
+ hovered: () -> boolean,
1593
+ }
1594
+ States = {
1595
+ index: State<any> -- a shared state between all selectables.
1596
+ }
1597
+ ```
1598
+ ]=]
1599
+ Iris.Selectable = wrapper("Selectable")
1600
+
1601
+ --[=[
1602
+ @within Combo
1603
+ @prop Combo Iris.Combo
1604
+ @tag Widget
1605
+ @tag HasChildren
1606
+ @tag HasState
1607
+
1608
+ A dropdown menu box to make a selection from a list of values.
1609
+
1610
+ ```lua
1611
+ hasChildren = true
1612
+ hasState = true
1613
+ Arguments = {
1614
+ Text: string,
1615
+ NoButton: boolean? = false, -- hide the dropdown button.
1616
+ NoPreview: boolean? = false -- hide the preview field.
1617
+ }
1618
+ Events = {
1619
+ opened: () -> boolean,
1620
+ closed: () -> boolean,
1621
+ changed: () -> boolean,
1622
+ clicked: () -> boolean,
1623
+ hovered: () -> boolean
1624
+ }
1625
+ States = {
1626
+ index: State<any>,
1627
+ isOpened: State<boolean>?
1628
+ }
1629
+ ```
1630
+ ]=]
1631
+ Iris.Combo = wrapper("Combo")
1632
+
1633
+ --[=[
1634
+ @within Combo
1635
+ @prop ComboArray Iris.Combo
1636
+ @tag Widget
1637
+ @tag HasChildren
1638
+ @tag HasState
1639
+
1640
+ A selection box to choose a value from an array.
1641
+
1642
+ ```lua
1643
+ hasChildren = true
1644
+ hasState = true
1645
+ Arguments = {
1646
+ Text: string,
1647
+ NoButton: boolean? = false, -- hide the dropdown button.
1648
+ NoPreview: boolean? = false -- hide the preview field.
1649
+ }
1650
+ Events = {
1651
+ opened: () -> boolean,
1652
+ closed: () -> boolean,
1653
+ clicked: () -> boolean,
1654
+ hovered: () -> boolean
1655
+ }
1656
+ States = {
1657
+ index: State<any>,
1658
+ isOpened: State<boolean>?
1659
+ }
1660
+ Extra = {
1661
+ selectionArray: { any } -- the array to generate a combo from.
1662
+ }
1663
+ ```
1664
+ ]=]
1665
+ Iris.ComboArray = function<T>(arguments: Types.WidgetArguments, states: Types.WidgetStates?, selectionArray: { T })
1666
+ local defaultState
1667
+ if states == nil then
1668
+ defaultState = Iris.State(selectionArray[1])
1669
+ else
1670
+ defaultState = states
1671
+ end
1672
+ local thisWidget = Iris.Internal._Insert("Combo", arguments, defaultState)
1673
+ local sharedIndex = thisWidget.state.index
1674
+ for _, Selection in selectionArray do
1675
+ Iris.Internal._Insert("Selectable", { Selection, Selection }, { index = sharedIndex })
1676
+ end
1677
+ Iris.End()
1678
+
1679
+ return thisWidget
1680
+ end
1681
+
1682
+ --[=[
1683
+ @within Combo
1684
+ @prop ComboEnum Iris.Combo
1685
+ @tag Widget
1686
+ @tag HasChildren
1687
+ @tag HasState
1688
+
1689
+ A selection box to choose a value from an Enum.
1690
+
1691
+ ```lua
1692
+ hasChildren = true
1693
+ hasState = true
1694
+ Arguments = {
1695
+ Text: string,
1696
+ NoButton: boolean? = false, -- hide the dropdown button.
1697
+ NoPreview: boolean? = false -- hide the preview field.
1698
+ }
1699
+ Events = {
1700
+ opened: () -> boolean,
1701
+ closed: () -> boolean,
1702
+ clicked: () -> boolean,
1703
+ hovered: () -> boolean
1704
+ }
1705
+ States = {
1706
+ index: State<any>,
1707
+ isOpened: State<boolean>?
1708
+ }
1709
+ Extra = {
1710
+ enumType: Enum -- the enum to generate a combo from.
1711
+ }
1712
+ ```
1713
+ ]=]
1714
+ Iris.ComboEnum = function(arguments: Types.WidgetArguments, states: Types.WidgetStates?, enumType: Enum)
1715
+ local defaultState
1716
+ if states == nil then
1717
+ defaultState = Iris.State(enumType:GetEnumItems()[1])
1718
+ else
1719
+ defaultState = states
1720
+ end
1721
+ local thisWidget = Iris.Internal._Insert("Combo", arguments, defaultState)
1722
+ local sharedIndex = thisWidget.state.index
1723
+ for _, Selection in enumType:GetEnumItems() do
1724
+ Iris.Internal._Insert("Selectable", { Selection.Name, Selection }, { index = sharedIndex })
1725
+ end
1726
+ Iris.End()
1727
+
1728
+ return thisWidget
1729
+ end
1730
+
1731
+ --[=[
1732
+ @private
1733
+ @within Slider
1734
+ @prop InputEnum Iris.InputEnum
1735
+ @tag Widget
1736
+ @tag HasState
1737
+
1738
+ A field which allows the user to slide a grip to enter a number within a range.
1739
+ You can ctrl + click to directly input a number, like InputNum.
1740
+
1741
+ ```lua
1742
+ hasChildren = false
1743
+ hasState = true
1744
+ Arguments = {
1745
+ Text: string? = "InputEnum",
1746
+ Increment: number? = 1,
1747
+ Min: number? = 0,
1748
+ Max: number? = 100,
1749
+ Format: string? | { string }? = [DYNAMIC] -- Iris will dynamically generate an approriate format.
1750
+ }
1751
+ Events = {
1752
+ numberChanged: () -> boolean,
1753
+ hovered: () -> boolean
1754
+ }
1755
+ States = {
1756
+ number: State<number>?,
1757
+ editingText: State<boolean>?,
1758
+ enumItem: EnumItem
1759
+ }
1760
+ ```
1761
+ ]=]
1762
+ Iris.InputEnum = Iris.ComboEnum
1763
+
1764
+ --[[
1765
+ ---------------------------------
1766
+ [SECTION] Plot Widget API
1767
+ ---------------------------------
1768
+ ]]
1769
+ --[=[
1770
+ @class Plot
1771
+ Plot Widget API
1772
+ ]=]
1773
+
1774
+ --[=[
1775
+ @within Plot
1776
+ @prop ProgressBar Iris.ProgressBar
1777
+ @tag Widget
1778
+ @tag HasState
1779
+
1780
+ A progress bar line with a state value to show the current state.
1781
+
1782
+ ```lua
1783
+ hasChildren = false
1784
+ hasState = true
1785
+ Arguments = {
1786
+ Text: string? = "Progress Bar",
1787
+ Format: string? = nil -- optional to override with a custom progress such as `29/54`
1788
+ }
1789
+ Events = {
1790
+ hovered: () -> boolean,
1791
+ changed: () -> boolean
1792
+ }
1793
+ States = {
1794
+ progress: State<number>?
1795
+ }
1796
+ ```
1797
+ ]=]
1798
+ Iris.ProgressBar = wrapper("ProgressBar")
1799
+
1800
+ --[=[
1801
+ @within Plot
1802
+ @prop PlotLines Iris.PlotLines
1803
+ @tag Widget
1804
+ @tag HasState
1805
+
1806
+ A line graph for plotting a single line. Includes hovering to see a specific value on the graph,
1807
+ and automatic scaling. Has an overlay text option at the top of the plot for displaying any
1808
+ information.
1809
+
1810
+ ```lua
1811
+ hasChildren = false
1812
+ hasState = true
1813
+ Arguments = {
1814
+ Text: string? = "Plot Lines",
1815
+ Height: number? = 0,
1816
+ Min: number? = min, -- Iris will use the minimum value from the values
1817
+ Max: number? = max, -- Iris will use the maximum value from the values
1818
+ TextOverlay: string? = ""
1819
+ }
1820
+ Events = {
1821
+ hovered: () -> boolean
1822
+ }
1823
+ States = {
1824
+ values: State<{number}>?,
1825
+ hovered: State<{number}>? -- read-only property
1826
+ }
1827
+ ```
1828
+ ]=]
1829
+ Iris.PlotLines = wrapper("PlotLines")
1830
+
1831
+ --[=[
1832
+ @within Plot
1833
+ @prop PlotHistogram Iris.PlotHistogram
1834
+ @tag Widget
1835
+ @tag HasState
1836
+
1837
+ A hisogram graph for showing values. Includes hovering to see a specific block on the graph,
1838
+ and automatic scaling. Has an overlay text option at the top of the plot for displaying any
1839
+ information. Also supports a baseline option, which determines where the blocks start from.
1840
+
1841
+ ```lua
1842
+ hasChildren = false
1843
+ hasState = true
1844
+ Arguments = {
1845
+ Text: string? = "Plot Histogram",
1846
+ Height: number? = 0,
1847
+ Min: number? = min, -- Iris will use the minimum value from the values
1848
+ Max: number? = max, -- Iris will use the maximum value from the values
1849
+ TextOverlay: string? = "",
1850
+ BaseLine: number? = 0 -- by default, blocks swap side at 0
1851
+ }
1852
+ Events = {
1853
+ hovered: () -> boolean
1854
+ }
1855
+ States = {
1856
+ values: State<{number}>?,
1857
+ hovered: State<{number}>? -- read-only property
1858
+ }
1859
+ ```
1860
+ ]=]
1861
+ Iris.PlotHistogram = wrapper("PlotHistogram")
1862
+
1863
+ --[[
1864
+ ----------------------------------
1865
+ [SECTION] Table Widget API
1866
+ ----------------------------------
1867
+ ]]
1868
+ --[=[
1869
+ @class Table
1870
+ Table Widget API
1871
+
1872
+ Example usage for creating a simple table:
1873
+ ```lua
1874
+ Iris.Table({ 4, true })
1875
+ do
1876
+ Iris.SetHeaderColumnIndex(1)
1877
+
1878
+ -- for each row
1879
+ for i = 0, 10 do
1880
+
1881
+ -- for each column
1882
+ for j = 1, 4 do
1883
+ if i == 0 then
1884
+ --
1885
+ Iris.Text({ `H: {j}` })
1886
+ else
1887
+ Iris.Text({ `R: {i}, C: {j}` })
1888
+ end
1889
+
1890
+ -- move the next column (and row when necessary)
1891
+ Iris.NextColumn()
1892
+ end
1893
+ end
1894
+ ```
1895
+ ]=]
1896
+
1897
+ --[=[
1898
+ @within Table
1899
+ @prop Table Iris.Table
1900
+ @tag Widget
1901
+ @tag HasChildren
1902
+
1903
+ A layout widget which allows children to be displayed in configurable columns and rows. Highly configurable for many different
1904
+ options, with options for custom width columns as configured by the user, or automatically use the best size.
1905
+
1906
+ When Resizable is enabled, the vertical columns can be dragged horizontally to increase or decrease space. This is linked to
1907
+ the widths state, which controls the width of each column. This is also dependent on whether the FixedWidth argument is enabled.
1908
+ By default, the columns will scale with the width of the table overall, therefore taking up a percentage, and the widths will be
1909
+ in the range of 0 to 1 as a float. If FixedWidth is enabled, then the widths will be in pixels and have a value of > 2 as an
1910
+ integer.
1911
+
1912
+ ProportionalWidth determines whether each column has the same width, or individual. By default, each column will take up an equal
1913
+ proportion of the total table width. If true, then the columns will be allocated a width proportional to their total content size,
1914
+ meaning wider columns take up a greater share of the total available space. For a fixed width table, by default each column will
1915
+ take the max width of all the columns. When true, each column width will the minimum to fit the children within.
1916
+
1917
+ LimitTableWidth is used when FixedWidth is true. It will cut off the table horizontally after the last column.
1918
+
1919
+ :::info
1920
+ Once the NumColumns is set, it is not possible to change it without some extra code. The best way to do this is by using
1921
+ `Iris.PushConfig()` and `Iris.PopConfig()` which will automatically redraw the widget when the columns change.
1922
+
1923
+ ```lua
1924
+ local numColumns = 4
1925
+ Iris.PushConfig({ columns = numColumns })
1926
+ Iris.Table({ numColumns, ...})
1927
+ do
1928
+ ...
1929
+ end
1930
+ Iris.End()
1931
+ Iris.PopConfig()
1932
+ ```
1933
+
1934
+ :::danger Error: nil
1935
+ Always ensure that the number of elements in the widths state is greater or equal to the
1936
+ new number of columns when changing the number of columns.
1937
+ :::
1938
+ :::
1939
+
1940
+ ```lua
1941
+ hasChildren = true
1942
+ hasState = false
1943
+ Arguments = {
1944
+ NumColumns: number, -- number of columns in the table, cannot be changed
1945
+ Header: boolean? = false, -- display a header row for each column
1946
+ RowBackground: boolean? = false, -- alternating row background colours
1947
+ OuterBorders: boolean? = false, -- outer border on the entire table
1948
+ InnerBorders: boolean? = false, -- inner bordres on the entire table
1949
+ Resizable: boolean? = false, -- the columns can be resized by dragging or state
1950
+ FixedWidth: boolean? = false, -- columns takes up a fixed pixel width, rather than a proportion of the total available
1951
+ ProportionalWidth: boolean? = false, -- minimises the width of each column individually
1952
+ LimitTableWidth: boolean? = false, -- when a fixed width, cut of any unused space
1953
+ }
1954
+ Events = {
1955
+ hovered: () -> boolean
1956
+ }
1957
+ States = {
1958
+ widths: State<{ number }>? -- the widths of each column if Resizable
1959
+ }
1960
+ ```
1961
+ ]=]
1962
+ Iris.Table = wrapper("Table")
1963
+
1964
+ --[=[
1965
+ @within Table
1966
+ @function NextColumn
1967
+
1968
+ In a table, moves to the next available cell. If the current cell is in the last column,
1969
+ then moves to the cell in the first column of the next row.
1970
+ ]=]
1971
+ Iris.NextColumn = function()
1972
+ local Table = Iris.Internal._GetParentWidget() :: Types.Table
1973
+ assert(Table ~= nil, "Iris.NextColumn() can only called when directly within a table.")
1974
+
1975
+ local columnIndex = Table._columnIndex
1976
+ if columnIndex == Table.arguments.NumColumns then
1977
+ Table._columnIndex = 1
1978
+ Table._rowIndex += 1
1979
+ else
1980
+ Table._columnIndex += 1
1981
+ end
1982
+ return Table._columnIndex
1983
+ end
1984
+
1985
+ --[=[
1986
+ @within Table
1987
+ @function NextRow
1988
+
1989
+ In a table, moves to the cell in the first column of the next row.
1990
+ ]=]
1991
+ Iris.NextRow = function()
1992
+ local Table = Iris.Internal._GetParentWidget() :: Types.Table
1993
+ assert(Table ~= nil, "Iris.NextRow() can only called when directly within a table.")
1994
+ Table._columnIndex = 1
1995
+ Table._rowIndex += 1
1996
+ return Table._rowIndex
1997
+ end
1998
+
1999
+ --[=[
2000
+ @within Table
2001
+ @function SetColumnIndex
2002
+ @param index number
2003
+
2004
+ In a table, moves to the cell in the given column in the same previous row.
2005
+
2006
+ Will erorr if the given index is not in the range of 1 to NumColumns.
2007
+ ]=]
2008
+ Iris.SetColumnIndex = function(index: number)
2009
+ local Table = Iris.Internal._GetParentWidget() :: Types.Table
2010
+ assert(Table ~= nil, "Iris.SetColumnIndex() can only called when directly within a table.")
2011
+ assert((index >= 1) and (index <= Table.arguments.NumColumns), `The index must be between 1 and {Table.arguments.NumColumns}, inclusive.`)
2012
+ Table._columnIndex = index
2013
+ end
2014
+
2015
+ --[=[
2016
+ @within Table
2017
+ @function SetRowIndex
2018
+ @param index number
2019
+
2020
+ In a table, moves to the cell in the given row with the same previous column.
2021
+ ]=]
2022
+ Iris.SetRowIndex = function(index: number)
2023
+ local Table = Iris.Internal._GetParentWidget() :: Types.Table
2024
+ assert(Table ~= nil, "Iris.SetRowIndex() can only called when directly within a table.")
2025
+ assert(index >= 1, "The index must be greater or equal to 1.")
2026
+ Table._rowIndex = index
2027
+ end
2028
+
2029
+ --[=[
2030
+ @within Table
2031
+ @function NextHeaderColumn
2032
+
2033
+ In a table, moves to the cell in the next column in the header row (row index 0). Will loop around
2034
+ from the last column to the first.
2035
+ ]=]
2036
+ Iris.NextHeaderColumn = function()
2037
+ local Table = Iris.Internal._GetParentWidget() :: Types.Table
2038
+ assert(Table ~= nil, "Iris.NextHeaderColumn() can only called when directly within a table.")
2039
+
2040
+ Table._rowIndex = 0
2041
+ Table._columnIndex = (Table._columnIndex % Table.arguments.NumColumns) + 1
2042
+
2043
+ return Table._columnIndex
2044
+ end
2045
+
2046
+ --[=[
2047
+ @within Table
2048
+ @function SetHeaderColumnIndex
2049
+ @param index number
2050
+
2051
+ In a table, moves to the cell in the given column in the header row (row index 0).
2052
+
2053
+ Will erorr if the given index is not in the range of 1 to NumColumns.
2054
+ ]=]
2055
+ Iris.SetHeaderColumnIndex = function(index: number)
2056
+ local Table = Iris.Internal._GetParentWidget() :: Types.Table
2057
+ assert(Table ~= nil, "Iris.SetHeaderColumnIndex() can only called when directly within a table.")
2058
+ assert((index >= 1) and (index <= Table.arguments.NumColumns), `The index must be between 1 and {Table.arguments.NumColumns}, inclusive.`)
2059
+
2060
+ Table._rowIndex = 0
2061
+ Table._columnIndex = index
2062
+ end
2063
+
2064
+ --[=[
2065
+ @within Table
2066
+ @function SetColumnWidth
2067
+ @param index number
2068
+ @param width number
2069
+
2070
+ In a table, sets the width of the given column to the given value by changing the
2071
+ Table's widths state. When the FixedWidth argument is true, the width should be in
2072
+ pixels >2, otherwise as a float between 0 and 1.
2073
+
2074
+ Will erorr if the given index is not in the range of 1 to NumColumns.
2075
+ ]=]
2076
+ Iris.SetColumnWidth = function(index: number, width: number)
2077
+ local Table = Iris.Internal._GetParentWidget() :: Types.Table
2078
+ assert(Table ~= nil, "Iris.SetColumnWidth() can only called when directly within a table.")
2079
+ assert((index >= 1) and (index <= Table.arguments.NumColumns), `The index must be between 1 and {Table.arguments.NumColumns}, inclusive.`)
2080
+
2081
+ local oldValue = Table.state.widths.value[index]
2082
+ Table.state.widths.value[index] = width
2083
+ Table.state.widths:set(Table.state.widths.value, width ~= oldValue)
2084
+ end
2085
+ end