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.
- package/CHANGELOG.md +20 -0
- package/LICENSE +21 -0
- package/README.md +119 -0
- package/bin/cluau.js +4 -0
- package/bin/cluaupp.js +4 -0
- package/docs/README.md +20 -0
- package/docs/architecture.md +110 -0
- package/docs/cli.md +69 -0
- package/docs/comparison.md +37 -0
- package/docs/config.md +31 -0
- package/docs/cpp-advanced.md +71 -0
- package/docs/cpp-const.md +52 -0
- package/docs/cpp-organization.md +61 -0
- package/docs/cpp-safety.md +58 -0
- package/docs/cpp-types.md +66 -0
- package/docs/getting-started.md +169 -0
- package/docs/intro.md +37 -0
- package/docs/libraries.md +77 -0
- package/docs/roblox-api.md +81 -0
- package/docs/syntax.md +131 -0
- package/include/cluaupp/datatypes.hpp +581 -0
- package/include/cluaupp/generated/enums.hpp +4920 -0
- package/include/cluaupp/generated/instances.hpp +12489 -0
- package/include/cluaupp/libs/chrono.hpp +26 -0
- package/include/cluaupp/libs/cmdr.hpp +16 -0
- package/include/cluaupp/libs/dataservice.hpp +141 -0
- package/include/cluaupp/libs/display.hpp +13 -0
- package/include/cluaupp/libs/ezvisual.hpp +18 -0
- package/include/cluaupp/libs/formatnumber.hpp +15 -0
- package/include/cluaupp/libs/fusion.hpp +41 -0
- package/include/cluaupp/libs/iris.hpp +40 -0
- package/include/cluaupp/libs/janitor.hpp +35 -0
- package/include/cluaupp/libs/math.hpp +14 -0
- package/include/cluaupp/libs/module3d.hpp +25 -0
- package/include/cluaupp/libs/net.hpp +42 -0
- package/include/cluaupp/libs/promise.hpp +30 -0
- package/include/cluaupp/libs/spring.hpp +18 -0
- package/include/cluaupp/libs/statemachine.hpp +19 -0
- package/include/cluaupp/libs/stickybillboard.hpp +14 -0
- package/include/cluaupp/libs/topbarplus.hpp +29 -0
- package/include/cluaupp/libs/twinkle.hpp +15 -0
- package/include/cluaupp/libs/vfx.hpp +13 -0
- package/include/cluaupp/libs.hpp +25 -0
- package/include/cluaupp/roblox.hpp +28 -0
- package/package.json +65 -0
- package/runtime/ArrayIndexer/init.luau +144 -0
- package/runtime/Chrono/Client/ClientClock.luau +202 -0
- package/runtime/Chrono/Client/InterpolationBuffer.luau +74 -0
- package/runtime/Chrono/Client/ModelResolver.luau +53 -0
- package/runtime/Chrono/Client/Player.luau +113 -0
- package/runtime/Chrono/Client/Receiver.luau +395 -0
- package/runtime/Chrono/Client/Replicate.luau +333 -0
- package/runtime/Chrono/Client/Sender.luau +205 -0
- package/runtime/Chrono/LICENSE +21 -0
- package/runtime/Chrono/Server/EntityGrid.luau +299 -0
- package/runtime/Chrono/Server/Player.luau +141 -0
- package/runtime/Chrono/Server/Receiver.luau +287 -0
- package/runtime/Chrono/Server/Replicate.luau +415 -0
- package/runtime/Chrono/Server/Sender.luau +306 -0
- package/runtime/Chrono/Server/ServerClock.luau +50 -0
- package/runtime/Chrono/Shared/ApplyMounts.luau +137 -0
- package/runtime/Chrono/Shared/Bin.luau +31 -0
- package/runtime/Chrono/Shared/ClockUnwrap.luau +70 -0
- package/runtime/Chrono/Shared/Config.luau +264 -0
- package/runtime/Chrono/Shared/Entity.luau +1016 -0
- package/runtime/Chrono/Shared/Events.luau +39 -0
- package/runtime/Chrono/Shared/Holder.luau +210 -0
- package/runtime/Chrono/Shared/InterpolationMath.luau +51 -0
- package/runtime/Chrono/Shared/ModelHelper.luau +122 -0
- package/runtime/Chrono/Shared/Remotes/ClientClockRelay.model.json +3 -0
- package/runtime/Chrono/Shared/Remotes/ClientHeartbeat.model.json +3 -0
- package/runtime/Chrono/Shared/Remotes/ClientLoaded.model.json +3 -0
- package/runtime/Chrono/Shared/Remotes/Death.model.json +3 -0
- package/runtime/Chrono/Shared/Remotes/Heartbeat.model.json +3 -0
- package/runtime/Chrono/Shared/Remotes/Replicate.model.json +3 -0
- package/runtime/Chrono/Shared/Remotes/ReplicateFull.model.json +3 -0
- package/runtime/Chrono/Shared/Remotes/SafeReplicate.model.json +3 -0
- package/runtime/Chrono/Shared/ReplicationRules.luau +122 -0
- package/runtime/Chrono/Shared/Signal.luau +219 -0
- package/runtime/Chrono/Shared/Snapshots.luau +218 -0
- package/runtime/Chrono/Shared/Stats.luau +204 -0
- package/runtime/Chrono/Shared/Ticker.luau +112 -0
- package/runtime/Chrono/Shared/Types.luau +247 -0
- package/runtime/Chrono/Shared/Warn.luau +33 -0
- package/runtime/Chrono/Shared/_CUSTOM_MODEL_REP/init.model.json +3 -0
- package/runtime/Chrono/_impl/Client/ClientClock.luau +202 -0
- package/runtime/Chrono/_impl/Client/InterpolationBuffer.luau +74 -0
- package/runtime/Chrono/_impl/Client/ModelResolver.luau +53 -0
- package/runtime/Chrono/_impl/Client/Player.luau +113 -0
- package/runtime/Chrono/_impl/Client/Receiver.luau +395 -0
- package/runtime/Chrono/_impl/Client/Replicate.luau +333 -0
- package/runtime/Chrono/_impl/Client/Sender.luau +205 -0
- package/runtime/Chrono/_impl/LICENSE +21 -0
- package/runtime/Chrono/_impl/Server/EntityGrid.luau +299 -0
- package/runtime/Chrono/_impl/Server/Player.luau +141 -0
- package/runtime/Chrono/_impl/Server/Receiver.luau +287 -0
- package/runtime/Chrono/_impl/Server/Replicate.luau +415 -0
- package/runtime/Chrono/_impl/Server/Sender.luau +306 -0
- package/runtime/Chrono/_impl/Server/ServerClock.luau +50 -0
- package/runtime/Chrono/_impl/Shared/ApplyMounts.luau +137 -0
- package/runtime/Chrono/_impl/Shared/Bin.luau +31 -0
- package/runtime/Chrono/_impl/Shared/ClockUnwrap.luau +70 -0
- package/runtime/Chrono/_impl/Shared/Config.luau +264 -0
- package/runtime/Chrono/_impl/Shared/Entity.luau +1016 -0
- package/runtime/Chrono/_impl/Shared/Events.luau +39 -0
- package/runtime/Chrono/_impl/Shared/Holder.luau +210 -0
- package/runtime/Chrono/_impl/Shared/InterpolationMath.luau +51 -0
- package/runtime/Chrono/_impl/Shared/ModelHelper.luau +122 -0
- package/runtime/Chrono/_impl/Shared/Remotes/ClientClockRelay.model.json +3 -0
- package/runtime/Chrono/_impl/Shared/Remotes/ClientHeartbeat.model.json +3 -0
- package/runtime/Chrono/_impl/Shared/Remotes/ClientLoaded.model.json +3 -0
- package/runtime/Chrono/_impl/Shared/Remotes/Death.model.json +3 -0
- package/runtime/Chrono/_impl/Shared/Remotes/Heartbeat.model.json +3 -0
- package/runtime/Chrono/_impl/Shared/Remotes/Replicate.model.json +3 -0
- package/runtime/Chrono/_impl/Shared/Remotes/ReplicateFull.model.json +3 -0
- package/runtime/Chrono/_impl/Shared/Remotes/SafeReplicate.model.json +3 -0
- package/runtime/Chrono/_impl/Shared/ReplicationRules.luau +122 -0
- package/runtime/Chrono/_impl/Shared/Signal.luau +219 -0
- package/runtime/Chrono/_impl/Shared/Snapshots.luau +218 -0
- package/runtime/Chrono/_impl/Shared/Stats.luau +204 -0
- package/runtime/Chrono/_impl/Shared/Ticker.luau +112 -0
- package/runtime/Chrono/_impl/Shared/Types.luau +247 -0
- package/runtime/Chrono/_impl/Shared/Warn.luau +33 -0
- package/runtime/Chrono/_impl/Shared/_CUSTOM_MODEL_REP/init.model.json +3 -0
- package/runtime/Chrono/_impl/init.luau +96 -0
- package/runtime/Chrono/init.luau +14 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/announce.luau +21 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/announceServer.luau +17 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/ban.luau +59 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/banServer.luau +30 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/gotoPlace.luau +35 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/gotoPlaceServer.luau +17 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/kick.luau +19 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/kickServer.luau +27 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/kill.luau +13 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/killServer.luau +13 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/respawn.luau +15 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/respawnServer.luau +7 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/teleport.luau +30 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/teleportServer.luau +26 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/unban.luau +26 -0
- package/runtime/Cmdr/BuiltInCommands/Admin/unbanServer.luau +10 -0
- package/runtime/Cmdr/BuiltInCommands/Debug/blink.luau +35 -0
- package/runtime/Cmdr/BuiltInCommands/Debug/fetch.luau +12 -0
- package/runtime/Cmdr/BuiltInCommands/Debug/fetchServer.luau +7 -0
- package/runtime/Cmdr/BuiltInCommands/Debug/getPlayerPlaceInstance.luau +20 -0
- package/runtime/Cmdr/BuiltInCommands/Debug/getPlayerPlaceInstanceServer.luau +28 -0
- package/runtime/Cmdr/BuiltInCommands/Debug/position.luau +30 -0
- package/runtime/Cmdr/BuiltInCommands/Debug/thru.luau +50 -0
- package/runtime/Cmdr/BuiltInCommands/Debug/uptime.luau +6 -0
- package/runtime/Cmdr/BuiltInCommands/Debug/uptimeServer.luau +12 -0
- package/runtime/Cmdr/BuiltInCommands/Debug/version.luau +12 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/alias.luau +22 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/bind.luau +104 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/clear.luau +20 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/convertTimestamp.luau +18 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/echo.luau +17 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/edit.luau +75 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/exit.luau +11 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/history.luau +27 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/hover.luau +21 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/jsonArrayDecode.luau +25 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/jsonArrayEncode.luau +18 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/len.luau +16 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/math.luau +36 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/pick.luau +21 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/rand.luau +27 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/replace.luau +32 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/resolve.luau +32 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/run.luau +20 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/runLines.luau +34 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/runif.luau +95 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/unbind.luau +27 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/var.luau +29 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/varServer.luau +37 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/varSet.luau +30 -0
- package/runtime/Cmdr/BuiltInCommands/Utility/varSetServer.luau +29 -0
- package/runtime/Cmdr/BuiltInCommands/help.luau +96 -0
- package/runtime/Cmdr/BuiltInTypes/BrickColor.luau +258 -0
- package/runtime/Cmdr/BuiltInTypes/Color3.luau +59 -0
- package/runtime/Cmdr/BuiltInTypes/Command.luau +23 -0
- package/runtime/Cmdr/BuiltInTypes/Duration.luau +111 -0
- package/runtime/Cmdr/BuiltInTypes/JSON.luau +13 -0
- package/runtime/Cmdr/BuiltInTypes/MathOperator.luau +43 -0
- package/runtime/Cmdr/BuiltInTypes/Player.luau +36 -0
- package/runtime/Cmdr/BuiltInTypes/PlayerId.luau +66 -0
- package/runtime/Cmdr/BuiltInTypes/Primitives.luau +145 -0
- package/runtime/Cmdr/BuiltInTypes/StoredKey.luau +33 -0
- package/runtime/Cmdr/BuiltInTypes/Team.luau +49 -0
- package/runtime/Cmdr/BuiltInTypes/Type.luau +23 -0
- package/runtime/Cmdr/BuiltInTypes/URL.luau +18 -0
- package/runtime/Cmdr/BuiltInTypes/UserInput.luau +32 -0
- package/runtime/Cmdr/BuiltInTypes/Vector.luau +58 -0
- package/runtime/Cmdr/CmdrClient/CmdrInterface/AutoComplete.luau +240 -0
- package/runtime/Cmdr/CmdrClient/CmdrInterface/CreateGui.luau +227 -0
- package/runtime/Cmdr/CmdrClient/CmdrInterface/Window.luau +713 -0
- package/runtime/Cmdr/CmdrClient/CmdrInterface/init.luau +18 -0
- package/runtime/Cmdr/CmdrClient/DefaultEventHandlers.luau +18 -0
- package/runtime/Cmdr/CmdrClient/Shared/Argument.luau +395 -0
- package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/HasCharacter.luau +39 -0
- package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/IsDataStoreAvailable.luau +36 -0
- package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/MaxArrayLength.luau +10 -0
- package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/MaxStringLength.luau +10 -0
- package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/NonEmptyString.luau +10 -0
- package/runtime/Cmdr/CmdrClient/Shared/BuiltInGuards/NotEquals.luau +8 -0
- package/runtime/Cmdr/CmdrClient/Shared/Command.luau +415 -0
- package/runtime/Cmdr/CmdrClient/Shared/Dispatcher.luau +407 -0
- package/runtime/Cmdr/CmdrClient/Shared/Registry.luau +717 -0
- package/runtime/Cmdr/CmdrClient/Shared/Util.luau +879 -0
- package/runtime/Cmdr/CmdrClient/init.luau +377 -0
- package/runtime/Cmdr/LICENSE +21 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/announce.luau +21 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/announceServer.luau +17 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/ban.luau +59 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/banServer.luau +30 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/gotoPlace.luau +35 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/gotoPlaceServer.luau +17 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/kick.luau +19 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/kickServer.luau +27 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/kill.luau +13 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/killServer.luau +13 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/respawn.luau +15 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/respawnServer.luau +7 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/teleport.luau +30 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/teleportServer.luau +26 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/unban.luau +26 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Admin/unbanServer.luau +10 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Debug/blink.luau +35 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Debug/fetch.luau +12 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Debug/fetchServer.luau +7 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Debug/getPlayerPlaceInstance.luau +20 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Debug/getPlayerPlaceInstanceServer.luau +28 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Debug/position.luau +30 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Debug/thru.luau +50 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Debug/uptime.luau +6 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Debug/uptimeServer.luau +12 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Debug/version.luau +12 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/alias.luau +22 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/bind.luau +104 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/clear.luau +20 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/convertTimestamp.luau +18 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/echo.luau +17 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/edit.luau +75 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/exit.luau +11 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/history.luau +27 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/hover.luau +21 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/jsonArrayDecode.luau +25 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/jsonArrayEncode.luau +18 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/len.luau +16 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/math.luau +36 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/pick.luau +21 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/rand.luau +27 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/replace.luau +32 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/resolve.luau +32 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/run.luau +20 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/runLines.luau +34 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/runif.luau +95 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/unbind.luau +27 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/var.luau +29 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/varServer.luau +37 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/varSet.luau +30 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/Utility/varSetServer.luau +29 -0
- package/runtime/Cmdr/_impl/BuiltInCommands/help.luau +96 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/BrickColor.luau +258 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/Color3.luau +59 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/Command.luau +23 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/Duration.luau +111 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/JSON.luau +13 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/MathOperator.luau +43 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/Player.luau +36 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/PlayerId.luau +66 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/Primitives.luau +145 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/StoredKey.luau +33 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/Team.luau +49 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/Type.luau +23 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/URL.luau +18 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/UserInput.luau +32 -0
- package/runtime/Cmdr/_impl/BuiltInTypes/Vector.luau +58 -0
- package/runtime/Cmdr/_impl/CmdrClient/CmdrInterface/AutoComplete.luau +240 -0
- package/runtime/Cmdr/_impl/CmdrClient/CmdrInterface/CreateGui.luau +227 -0
- package/runtime/Cmdr/_impl/CmdrClient/CmdrInterface/Window.luau +713 -0
- package/runtime/Cmdr/_impl/CmdrClient/CmdrInterface/init.luau +18 -0
- package/runtime/Cmdr/_impl/CmdrClient/DefaultEventHandlers.luau +18 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/Argument.luau +395 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/HasCharacter.luau +39 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/IsDataStoreAvailable.luau +36 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/MaxArrayLength.luau +10 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/MaxStringLength.luau +10 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/NonEmptyString.luau +10 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/BuiltInGuards/NotEquals.luau +8 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/Command.luau +415 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/Dispatcher.luau +407 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/Registry.luau +717 -0
- package/runtime/Cmdr/_impl/CmdrClient/Shared/Util.luau +879 -0
- package/runtime/Cmdr/_impl/CmdrClient/init.luau +377 -0
- package/runtime/Cmdr/_impl/LICENSE +21 -0
- package/runtime/Cmdr/_impl/init.luau +178 -0
- package/runtime/Cmdr/init.luau +8 -0
- package/runtime/DataService/Client.luau +209 -0
- package/runtime/DataService/Data.luau +886 -0
- package/runtime/DataService/Enum.luau +6 -0
- package/runtime/DataService/Enums.luau +10 -0
- package/runtime/DataService/Packages/quicknet/DataTypes.luau +70 -0
- package/runtime/DataService/Packages/quicknet/Enums.luau +85 -0
- package/runtime/DataService/Packages/quicknet/EnumsToNativeTypes.luau +57 -0
- package/runtime/DataService/Packages/quicknet/Parser.luau +355 -0
- package/runtime/DataService/Packages/quicknet/QuickNet.luau +953 -0
- package/runtime/DataService/Packages/quicknet/Serialize.luau +2020 -0
- package/runtime/DataService/Packages/quicknet/Types.luau +72 -0
- package/runtime/DataService/Packages/quicknet/init.luau +1 -0
- package/runtime/DataService/Packages/signal/init.luau +433 -0
- package/runtime/DataService/Path.luau +236 -0
- package/runtime/DataService/ProfileStore.luau +2243 -0
- package/runtime/DataService/Replicator.luau +172 -0
- package/runtime/DataService/Server.luau +412 -0
- package/runtime/DataService/init.luau +204 -0
- package/runtime/Display/LICENSE +201 -0
- package/runtime/Display/_impl/LICENSE +201 -0
- package/runtime/Display/_impl/init.luau +269 -0
- package/runtime/Display/_impl/option.luau +237 -0
- package/runtime/Display/init.luau +10 -0
- package/runtime/Display/option.luau +237 -0
- package/runtime/EzVisualz/Dropshadow.luau +148 -0
- package/runtime/EzVisualz/Gradient.luau +452 -0
- package/runtime/EzVisualz/GradientTemplates/Bubblegum.luau +16 -0
- package/runtime/EzVisualz/GradientTemplates/Chrome.luau +16 -0
- package/runtime/EzVisualz/GradientTemplates/Death.luau +15 -0
- package/runtime/EzVisualz/GradientTemplates/Electric.luau +14 -0
- package/runtime/EzVisualz/GradientTemplates/Fire.luau +13 -0
- package/runtime/EzVisualz/GradientTemplates/Galaxy.luau +11 -0
- package/runtime/EzVisualz/GradientTemplates/Ghost.luau +16 -0
- package/runtime/EzVisualz/GradientTemplates/Gold.luau +14 -0
- package/runtime/EzVisualz/GradientTemplates/Green.luau +14 -0
- package/runtime/EzVisualz/GradientTemplates/Ice.luau +14 -0
- package/runtime/EzVisualz/GradientTemplates/Lava.luau +15 -0
- package/runtime/EzVisualz/GradientTemplates/Matrix.luau +19 -0
- package/runtime/EzVisualz/GradientTemplates/Neon.luau +12 -0
- package/runtime/EzVisualz/GradientTemplates/Oceanic.luau +15 -0
- package/runtime/EzVisualz/GradientTemplates/Rainbow.luau +13 -0
- package/runtime/EzVisualz/GradientTemplates/Silver.luau +12 -0
- package/runtime/EzVisualz/GradientTemplates/Sunset.luau +11 -0
- package/runtime/EzVisualz/GradientTemplates/Zebra.luau +18 -0
- package/runtime/EzVisualz/GradientTemplates/init.luau +9 -0
- package/runtime/EzVisualz/LICENSE.md +21 -0
- package/runtime/EzVisualz/Presets/Bubblegum.luau +36 -0
- package/runtime/EzVisualz/Presets/ChromeStroke.luau +15 -0
- package/runtime/EzVisualz/Presets/DeathStroke.luau +15 -0
- package/runtime/EzVisualz/Presets/ElectricStroke.luau +54 -0
- package/runtime/EzVisualz/Presets/FireStroke.luau +29 -0
- package/runtime/EzVisualz/Presets/GalaxyStroke.luau +31 -0
- package/runtime/EzVisualz/Presets/Ghost.luau +10 -0
- package/runtime/EzVisualz/Presets/GhostStroke.luau +15 -0
- package/runtime/EzVisualz/Presets/Gold.luau +10 -0
- package/runtime/EzVisualz/Presets/GoldStroke.luau +15 -0
- package/runtime/EzVisualz/Presets/GreenOutline.luau +23 -0
- package/runtime/EzVisualz/Presets/IceStroke.luau +15 -0
- package/runtime/EzVisualz/Presets/Lava.luau +9 -0
- package/runtime/EzVisualz/Presets/LavaStroke.luau +13 -0
- package/runtime/EzVisualz/Presets/Matrix.luau +21 -0
- package/runtime/EzVisualz/Presets/NeonStroke.luau +30 -0
- package/runtime/EzVisualz/Presets/OceanicStroke.luau +15 -0
- package/runtime/EzVisualz/Presets/Rainbow.luau +9 -0
- package/runtime/EzVisualz/Presets/RainbowOutline.luau +23 -0
- package/runtime/EzVisualz/Presets/RainbowStroke.luau +13 -0
- package/runtime/EzVisualz/Presets/Shine.luau +48 -0
- package/runtime/EzVisualz/Presets/ShineOutline.luau +66 -0
- package/runtime/EzVisualz/Presets/Silver.luau +10 -0
- package/runtime/EzVisualz/Presets/SilverStroke.luau +15 -0
- package/runtime/EzVisualz/Presets/SunsetStroke.luau +31 -0
- package/runtime/EzVisualz/Presets/WaveStroke.luau +33 -0
- package/runtime/EzVisualz/Presets/Zebra.luau +21 -0
- package/runtime/EzVisualz/Presets/init.luau +9 -0
- package/runtime/EzVisualz/Stroke.luau +167 -0
- package/runtime/EzVisualz/Util.luau +7 -0
- package/runtime/EzVisualz/_impl/Dropshadow.luau +148 -0
- package/runtime/EzVisualz/_impl/Gradient.luau +452 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Bubblegum.luau +16 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Chrome.luau +16 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Death.luau +15 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Electric.luau +14 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Fire.luau +13 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Galaxy.luau +11 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Ghost.luau +16 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Gold.luau +14 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Green.luau +14 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Ice.luau +14 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Lava.luau +15 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Matrix.luau +19 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Neon.luau +12 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Oceanic.luau +15 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Rainbow.luau +13 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Silver.luau +12 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Sunset.luau +11 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/Zebra.luau +18 -0
- package/runtime/EzVisualz/_impl/GradientTemplates/init.luau +9 -0
- package/runtime/EzVisualz/_impl/LICENSE.md +21 -0
- package/runtime/EzVisualz/_impl/Presets/Bubblegum.luau +36 -0
- package/runtime/EzVisualz/_impl/Presets/ChromeStroke.luau +15 -0
- package/runtime/EzVisualz/_impl/Presets/DeathStroke.luau +15 -0
- package/runtime/EzVisualz/_impl/Presets/ElectricStroke.luau +54 -0
- package/runtime/EzVisualz/_impl/Presets/FireStroke.luau +29 -0
- package/runtime/EzVisualz/_impl/Presets/GalaxyStroke.luau +31 -0
- package/runtime/EzVisualz/_impl/Presets/Ghost.luau +10 -0
- package/runtime/EzVisualz/_impl/Presets/GhostStroke.luau +15 -0
- package/runtime/EzVisualz/_impl/Presets/Gold.luau +10 -0
- package/runtime/EzVisualz/_impl/Presets/GoldStroke.luau +15 -0
- package/runtime/EzVisualz/_impl/Presets/GreenOutline.luau +23 -0
- package/runtime/EzVisualz/_impl/Presets/IceStroke.luau +15 -0
- package/runtime/EzVisualz/_impl/Presets/Lava.luau +9 -0
- package/runtime/EzVisualz/_impl/Presets/LavaStroke.luau +13 -0
- package/runtime/EzVisualz/_impl/Presets/Matrix.luau +21 -0
- package/runtime/EzVisualz/_impl/Presets/NeonStroke.luau +30 -0
- package/runtime/EzVisualz/_impl/Presets/OceanicStroke.luau +15 -0
- package/runtime/EzVisualz/_impl/Presets/Rainbow.luau +9 -0
- package/runtime/EzVisualz/_impl/Presets/RainbowOutline.luau +23 -0
- package/runtime/EzVisualz/_impl/Presets/RainbowStroke.luau +13 -0
- package/runtime/EzVisualz/_impl/Presets/Shine.luau +48 -0
- package/runtime/EzVisualz/_impl/Presets/ShineOutline.luau +66 -0
- package/runtime/EzVisualz/_impl/Presets/Silver.luau +10 -0
- package/runtime/EzVisualz/_impl/Presets/SilverStroke.luau +15 -0
- package/runtime/EzVisualz/_impl/Presets/SunsetStroke.luau +31 -0
- package/runtime/EzVisualz/_impl/Presets/WaveStroke.luau +33 -0
- package/runtime/EzVisualz/_impl/Presets/Zebra.luau +21 -0
- package/runtime/EzVisualz/_impl/Presets/init.luau +9 -0
- package/runtime/EzVisualz/_impl/Stroke.luau +167 -0
- package/runtime/EzVisualz/_impl/Util.luau +7 -0
- package/runtime/EzVisualz/_impl/init.luau +319 -0
- package/runtime/EzVisualz/_impl/wally.lock +8 -0
- package/runtime/EzVisualz/_impl/wally.toml +8 -0
- package/runtime/EzVisualz/init.luau +9 -0
- package/runtime/EzVisualz/wally.lock +8 -0
- package/runtime/EzVisualz/wally.toml +8 -0
- package/runtime/FormatNumber/LICENSE.md +25 -0
- package/runtime/FormatNumber/Main/DecimalFormatSymbols.lua +43 -0
- package/runtime/FormatNumber/Main/IntegerWidth.lua +41 -0
- package/runtime/FormatNumber/Main/Notation.lua +116 -0
- package/runtime/FormatNumber/Main/Precision.lua +179 -0
- package/runtime/FormatNumber/Main/init.lua +199 -0
- package/runtime/FormatNumber/Simple/init.lua +76 -0
- package/runtime/FormatNumber/Version.lua +82 -0
- package/runtime/FormatNumber/_impl/LICENSE.md +25 -0
- package/runtime/FormatNumber/_impl/Main/DecimalFormatSymbols.lua +43 -0
- package/runtime/FormatNumber/_impl/Main/IntegerWidth.lua +41 -0
- package/runtime/FormatNumber/_impl/Main/Notation.lua +116 -0
- package/runtime/FormatNumber/_impl/Main/Precision.lua +179 -0
- package/runtime/FormatNumber/_impl/Main/init.lua +199 -0
- package/runtime/FormatNumber/_impl/Simple/init.lua +76 -0
- package/runtime/FormatNumber/_impl/Version.lua +82 -0
- package/runtime/FormatNumber/_impl/_internal/class.lua +204 -0
- package/runtime/FormatNumber/_impl/_internal/decimal_conversion.lua +30 -0
- package/runtime/FormatNumber/_impl/_internal/enums.lua +55 -0
- package/runtime/FormatNumber/_impl/_internal/format.lua +342 -0
- package/runtime/FormatNumber/_impl/_internal/formatter_settings.lua +160 -0
- package/runtime/FormatNumber/_impl/_internal/init.lua +8 -0
- package/runtime/FormatNumber/_impl/_internal/skeleton.lua +541 -0
- package/runtime/FormatNumber/_impl/init.lua +20 -0
- package/runtime/FormatNumber/_internal/class.lua +204 -0
- package/runtime/FormatNumber/_internal/decimal_conversion.lua +30 -0
- package/runtime/FormatNumber/_internal/enums.lua +55 -0
- package/runtime/FormatNumber/_internal/format.lua +342 -0
- package/runtime/FormatNumber/_internal/formatter_settings.lua +160 -0
- package/runtime/FormatNumber/_internal/init.lua +8 -0
- package/runtime/FormatNumber/_internal/skeleton.lua +541 -0
- package/runtime/FormatNumber/init.lua +20 -0
- package/runtime/FormatNumber/init.luau +20 -0
- package/runtime/Fusion/Animation/ExternalTime.luau +84 -0
- package/runtime/Fusion/Animation/Spring.luau +313 -0
- package/runtime/Fusion/Animation/Stopwatch.luau +128 -0
- package/runtime/Fusion/Animation/Tween.luau +178 -0
- package/runtime/Fusion/Animation/getTweenDuration.luau +27 -0
- package/runtime/Fusion/Animation/getTweenRatio.luau +47 -0
- package/runtime/Fusion/Animation/lerpType.luau +164 -0
- package/runtime/Fusion/Animation/packType.luau +100 -0
- package/runtime/Fusion/Animation/springCoefficients.luau +80 -0
- package/runtime/Fusion/Animation/unpackType.luau +103 -0
- package/runtime/Fusion/Colour/Oklab.luau +70 -0
- package/runtime/Fusion/Colour/sRGB.luau +47 -0
- package/runtime/Fusion/External.luau +156 -0
- package/runtime/Fusion/ExternalDebug.luau +70 -0
- package/runtime/Fusion/Graph/Observer.luau +111 -0
- package/runtime/Fusion/Graph/castToGraph.luau +29 -0
- package/runtime/Fusion/Graph/change.luau +81 -0
- package/runtime/Fusion/Graph/depend.luau +33 -0
- package/runtime/Fusion/Graph/evaluate.luau +56 -0
- package/runtime/Fusion/Instances/Attribute.luau +58 -0
- package/runtime/Fusion/Instances/AttributeChange.luau +47 -0
- package/runtime/Fusion/Instances/AttributeOut.luau +63 -0
- package/runtime/Fusion/Instances/Child.luau +21 -0
- package/runtime/Fusion/Instances/Children.luau +148 -0
- package/runtime/Fusion/Instances/Hydrate.luau +29 -0
- package/runtime/Fusion/Instances/New.luau +48 -0
- package/runtime/Fusion/Instances/OnChange.luau +50 -0
- package/runtime/Fusion/Instances/OnEvent.luau +54 -0
- package/runtime/Fusion/Instances/Out.luau +69 -0
- package/runtime/Fusion/Instances/Tag.luau +61 -0
- package/runtime/Fusion/Instances/applyInstanceProps.luau +149 -0
- package/runtime/Fusion/Instances/defaultProps.luau +194 -0
- package/runtime/Fusion/LICENSE +21 -0
- package/runtime/Fusion/Logging/formatError.luau +49 -0
- package/runtime/Fusion/Logging/messages.luau +46 -0
- package/runtime/Fusion/Logging/parseError.luau +25 -0
- package/runtime/Fusion/Memory/checkLifetime.luau +134 -0
- package/runtime/Fusion/Memory/deriveScope.luau +24 -0
- package/runtime/Fusion/Memory/deriveScopeImpl.luau +40 -0
- package/runtime/Fusion/Memory/doCleanup.luau +91 -0
- package/runtime/Fusion/Memory/innerScope.luau +34 -0
- package/runtime/Fusion/Memory/insert.luau +22 -0
- package/runtime/Fusion/Memory/needsDestruction.luau +17 -0
- package/runtime/Fusion/Memory/scoped.luau +24 -0
- package/runtime/Fusion/RobloxExternal.luau +98 -0
- package/runtime/Fusion/State/Computed.luau +122 -0
- package/runtime/Fusion/State/For/Disassembly.luau +207 -0
- package/runtime/Fusion/State/For/ForTypes.luau +30 -0
- package/runtime/Fusion/State/For/init.luau +101 -0
- package/runtime/Fusion/State/ForKeys.luau +88 -0
- package/runtime/Fusion/State/ForPairs.luau +91 -0
- package/runtime/Fusion/State/ForValues.luau +88 -0
- package/runtime/Fusion/State/Value.luau +76 -0
- package/runtime/Fusion/State/castToState.luau +26 -0
- package/runtime/Fusion/State/peek.luau +31 -0
- package/runtime/Fusion/State/updateAll.luau +1 -0
- package/runtime/Fusion/Types.luau +318 -0
- package/runtime/Fusion/Utility/Contextual.luau +91 -0
- package/runtime/Fusion/Utility/Safe.luau +23 -0
- package/runtime/Fusion/Utility/isSimilar.luau +29 -0
- package/runtime/Fusion/Utility/merge.luau +35 -0
- package/runtime/Fusion/Utility/nameOf.luau +35 -0
- package/runtime/Fusion/Utility/never.luau +14 -0
- package/runtime/Fusion/Utility/nicknames.luau +11 -0
- package/runtime/Fusion/Utility/xtypeof.luau +27 -0
- package/runtime/Fusion/_impl/Animation/ExternalTime.luau +84 -0
- package/runtime/Fusion/_impl/Animation/Spring.luau +313 -0
- package/runtime/Fusion/_impl/Animation/Stopwatch.luau +128 -0
- package/runtime/Fusion/_impl/Animation/Tween.luau +178 -0
- package/runtime/Fusion/_impl/Animation/getTweenDuration.luau +27 -0
- package/runtime/Fusion/_impl/Animation/getTweenRatio.luau +47 -0
- package/runtime/Fusion/_impl/Animation/lerpType.luau +164 -0
- package/runtime/Fusion/_impl/Animation/packType.luau +100 -0
- package/runtime/Fusion/_impl/Animation/springCoefficients.luau +80 -0
- package/runtime/Fusion/_impl/Animation/unpackType.luau +103 -0
- package/runtime/Fusion/_impl/Colour/Oklab.luau +70 -0
- package/runtime/Fusion/_impl/Colour/sRGB.luau +47 -0
- package/runtime/Fusion/_impl/External.luau +156 -0
- package/runtime/Fusion/_impl/ExternalDebug.luau +70 -0
- package/runtime/Fusion/_impl/Graph/Observer.luau +111 -0
- package/runtime/Fusion/_impl/Graph/castToGraph.luau +29 -0
- package/runtime/Fusion/_impl/Graph/change.luau +81 -0
- package/runtime/Fusion/_impl/Graph/depend.luau +33 -0
- package/runtime/Fusion/_impl/Graph/evaluate.luau +56 -0
- package/runtime/Fusion/_impl/Instances/Attribute.luau +58 -0
- package/runtime/Fusion/_impl/Instances/AttributeChange.luau +47 -0
- package/runtime/Fusion/_impl/Instances/AttributeOut.luau +63 -0
- package/runtime/Fusion/_impl/Instances/Child.luau +21 -0
- package/runtime/Fusion/_impl/Instances/Children.luau +148 -0
- package/runtime/Fusion/_impl/Instances/Hydrate.luau +29 -0
- package/runtime/Fusion/_impl/Instances/New.luau +48 -0
- package/runtime/Fusion/_impl/Instances/OnChange.luau +50 -0
- package/runtime/Fusion/_impl/Instances/OnEvent.luau +54 -0
- package/runtime/Fusion/_impl/Instances/Out.luau +69 -0
- package/runtime/Fusion/_impl/Instances/Tag.luau +61 -0
- package/runtime/Fusion/_impl/Instances/applyInstanceProps.luau +149 -0
- package/runtime/Fusion/_impl/Instances/defaultProps.luau +194 -0
- package/runtime/Fusion/_impl/LICENSE +21 -0
- package/runtime/Fusion/_impl/Logging/formatError.luau +49 -0
- package/runtime/Fusion/_impl/Logging/messages.luau +46 -0
- package/runtime/Fusion/_impl/Logging/parseError.luau +25 -0
- package/runtime/Fusion/_impl/Memory/checkLifetime.luau +134 -0
- package/runtime/Fusion/_impl/Memory/deriveScope.luau +24 -0
- package/runtime/Fusion/_impl/Memory/deriveScopeImpl.luau +40 -0
- package/runtime/Fusion/_impl/Memory/doCleanup.luau +91 -0
- package/runtime/Fusion/_impl/Memory/innerScope.luau +34 -0
- package/runtime/Fusion/_impl/Memory/insert.luau +22 -0
- package/runtime/Fusion/_impl/Memory/needsDestruction.luau +17 -0
- package/runtime/Fusion/_impl/Memory/scoped.luau +24 -0
- package/runtime/Fusion/_impl/RobloxExternal.luau +98 -0
- package/runtime/Fusion/_impl/State/Computed.luau +122 -0
- package/runtime/Fusion/_impl/State/For/Disassembly.luau +207 -0
- package/runtime/Fusion/_impl/State/For/ForTypes.luau +30 -0
- package/runtime/Fusion/_impl/State/For/init.luau +101 -0
- package/runtime/Fusion/_impl/State/ForKeys.luau +88 -0
- package/runtime/Fusion/_impl/State/ForPairs.luau +91 -0
- package/runtime/Fusion/_impl/State/ForValues.luau +88 -0
- package/runtime/Fusion/_impl/State/Value.luau +76 -0
- package/runtime/Fusion/_impl/State/castToState.luau +26 -0
- package/runtime/Fusion/_impl/State/peek.luau +31 -0
- package/runtime/Fusion/_impl/State/updateAll.luau +1 -0
- package/runtime/Fusion/_impl/Types.luau +318 -0
- package/runtime/Fusion/_impl/Utility/Contextual.luau +91 -0
- package/runtime/Fusion/_impl/Utility/Safe.luau +23 -0
- package/runtime/Fusion/_impl/Utility/isSimilar.luau +29 -0
- package/runtime/Fusion/_impl/Utility/merge.luau +35 -0
- package/runtime/Fusion/_impl/Utility/nameOf.luau +35 -0
- package/runtime/Fusion/_impl/Utility/never.luau +14 -0
- package/runtime/Fusion/_impl/Utility/nicknames.luau +11 -0
- package/runtime/Fusion/_impl/Utility/xtypeof.luau +27 -0
- package/runtime/Fusion/_impl/init.luau +83 -0
- package/runtime/Fusion/init.luau +27 -0
- package/runtime/Iris/API.lua +2085 -0
- package/runtime/Iris/Internal.lua +895 -0
- package/runtime/Iris/LICENSE.txt +21 -0
- package/runtime/Iris/PubTypes.lua +43 -0
- package/runtime/Iris/Types.lua +660 -0
- package/runtime/Iris/WidgetTypes.lua +521 -0
- package/runtime/Iris/_impl/API.lua +2085 -0
- package/runtime/Iris/_impl/Internal.lua +895 -0
- package/runtime/Iris/_impl/LICENSE.txt +21 -0
- package/runtime/Iris/_impl/PubTypes.lua +43 -0
- package/runtime/Iris/_impl/Types.lua +660 -0
- package/runtime/Iris/_impl/WidgetTypes.lua +521 -0
- package/runtime/Iris/_impl/config.lua +305 -0
- package/runtime/Iris/_impl/init.lua +696 -0
- package/runtime/Iris/_impl/widgets/Button.lua +90 -0
- package/runtime/Iris/_impl/widgets/Checkbox.lua +115 -0
- package/runtime/Iris/_impl/widgets/Combo.lua +492 -0
- package/runtime/Iris/_impl/widgets/Format.lua +140 -0
- package/runtime/Iris/_impl/widgets/Image.lua +155 -0
- package/runtime/Iris/_impl/widgets/Input.lua +1232 -0
- package/runtime/Iris/_impl/widgets/Menu.lua +599 -0
- package/runtime/Iris/_impl/widgets/Plot.lua +639 -0
- package/runtime/Iris/_impl/widgets/RadioButton.lua +126 -0
- package/runtime/Iris/_impl/widgets/Root.lua +143 -0
- package/runtime/Iris/_impl/widgets/Tab.lua +333 -0
- package/runtime/Iris/_impl/widgets/Table.lua +635 -0
- package/runtime/Iris/_impl/widgets/Text.lua +132 -0
- package/runtime/Iris/_impl/widgets/Tree.lua +287 -0
- package/runtime/Iris/_impl/widgets/Window.lua +1075 -0
- package/runtime/Iris/_impl/widgets/init.lua +447 -0
- package/runtime/Iris/config.lua +305 -0
- package/runtime/Iris/init.lua +696 -0
- package/runtime/Iris/init.luau +12 -0
- package/runtime/Iris/widgets/Button.lua +90 -0
- package/runtime/Iris/widgets/Checkbox.lua +115 -0
- package/runtime/Iris/widgets/Combo.lua +492 -0
- package/runtime/Iris/widgets/Format.lua +140 -0
- package/runtime/Iris/widgets/Image.lua +155 -0
- package/runtime/Iris/widgets/Input.lua +1232 -0
- package/runtime/Iris/widgets/Menu.lua +599 -0
- package/runtime/Iris/widgets/Plot.lua +639 -0
- package/runtime/Iris/widgets/RadioButton.lua +126 -0
- package/runtime/Iris/widgets/Root.lua +143 -0
- package/runtime/Iris/widgets/Tab.lua +333 -0
- package/runtime/Iris/widgets/Table.lua +635 -0
- package/runtime/Iris/widgets/Text.lua +132 -0
- package/runtime/Iris/widgets/Tree.lua +287 -0
- package/runtime/Iris/widgets/Window.lua +1075 -0
- package/runtime/Iris/widgets/init.lua +447 -0
- package/runtime/Janitor/FastDefer.luau +33 -0
- package/runtime/Janitor/LICENSE +21 -0
- package/runtime/Janitor/_impl/FastDefer.luau +33 -0
- package/runtime/Janitor/_impl/LICENSE +21 -0
- package/runtime/Janitor/_impl/init.luau +999 -0
- package/runtime/Janitor/init.luau +45 -0
- package/runtime/MathUtils/init.luau +100 -0
- package/runtime/Module3D/LICENSE +21 -0
- package/runtime/Module3D/_impl/LICENSE +21 -0
- package/runtime/Module3D/_impl/init.luau +269 -0
- package/runtime/Module3D/init.luau +14 -0
- package/runtime/Net/init.luau +125 -0
- package/runtime/Net/src/codec.luau +153 -0
- package/runtime/Occlude/init.luau +54 -0
- package/runtime/Promise/LICENSE +21 -0
- package/runtime/Promise/_impl/LICENSE +21 -0
- package/runtime/Promise/_impl/init.lua +1991 -0
- package/runtime/Promise/init.lua +1990 -0
- package/runtime/Promise/init.luau +13 -0
- package/runtime/Promise/types.luau +46 -0
- package/runtime/SOURCES.md +22 -0
- package/runtime/Spring/LICENSE +201 -0
- package/runtime/Spring/_impl/LICENSE +201 -0
- package/runtime/Spring/_impl/init.luau +111 -0
- package/runtime/Spring/init.luau +24 -0
- package/runtime/StateMachine/Classes/State.lua +375 -0
- package/runtime/StateMachine/Classes/Transition.lua +336 -0
- package/runtime/StateMachine/Functions/deepCopy.lua +19 -0
- package/runtime/StateMachine/Functions/mergeTables.lua +22 -0
- package/runtime/StateMachine/LICENSE +19 -0
- package/runtime/StateMachine/Vendor/Signal.lua +386 -0
- package/runtime/StateMachine/Vendor/Trove.lua +188 -0
- package/runtime/StateMachine/_impl/Classes/State.lua +375 -0
- package/runtime/StateMachine/_impl/Classes/Transition.lua +336 -0
- package/runtime/StateMachine/_impl/Functions/deepCopy.lua +19 -0
- package/runtime/StateMachine/_impl/Functions/mergeTables.lua +22 -0
- package/runtime/StateMachine/_impl/LICENSE +19 -0
- package/runtime/StateMachine/_impl/Vendor/Signal.lua +386 -0
- package/runtime/StateMachine/_impl/Vendor/Trove.lua +188 -0
- package/runtime/StateMachine/_impl/init.lua +595 -0
- package/runtime/StateMachine/init.lua +595 -0
- package/runtime/StateMachine/init.luau +10 -0
- package/runtime/StickyBillboard/init.luau +167 -0
- package/runtime/TopbarPlus/Attribute.lua +35 -0
- package/runtime/TopbarPlus/Elements/Caption.lua +316 -0
- package/runtime/TopbarPlus/Elements/Container.lua +215 -0
- package/runtime/TopbarPlus/Elements/Dropdown.lua +315 -0
- package/runtime/TopbarPlus/Elements/Indicator.lua +91 -0
- package/runtime/TopbarPlus/Elements/Menu.lua +180 -0
- package/runtime/TopbarPlus/Elements/Notice.lua +113 -0
- package/runtime/TopbarPlus/Elements/Selection.lua +49 -0
- package/runtime/TopbarPlus/Elements/Widget.lua +437 -0
- package/runtime/TopbarPlus/Features/Gamepad.lua +201 -0
- package/runtime/TopbarPlus/Features/Overflow.lua +360 -0
- package/runtime/TopbarPlus/Features/Themes/Classic.lua +27 -0
- package/runtime/TopbarPlus/Features/Themes/Default.lua +75 -0
- package/runtime/TopbarPlus/Features/Themes/init.lua +353 -0
- package/runtime/TopbarPlus/LICENSE +381 -0
- package/runtime/TopbarPlus/Packages/GoodSignal.lua +182 -0
- package/runtime/TopbarPlus/Packages/Janitor.lua +322 -0
- package/runtime/TopbarPlus/Reference.lua +30 -0
- package/runtime/TopbarPlus/Types.lua +477 -0
- package/runtime/TopbarPlus/Utility.lua +462 -0
- package/runtime/TopbarPlus/VERSION.lua +51 -0
- package/runtime/TopbarPlus/_impl/Attribute.lua +35 -0
- package/runtime/TopbarPlus/_impl/Elements/Caption.lua +316 -0
- package/runtime/TopbarPlus/_impl/Elements/Container.lua +215 -0
- package/runtime/TopbarPlus/_impl/Elements/Dropdown.lua +315 -0
- package/runtime/TopbarPlus/_impl/Elements/Indicator.lua +91 -0
- package/runtime/TopbarPlus/_impl/Elements/Menu.lua +180 -0
- package/runtime/TopbarPlus/_impl/Elements/Notice.lua +113 -0
- package/runtime/TopbarPlus/_impl/Elements/Selection.lua +49 -0
- package/runtime/TopbarPlus/_impl/Elements/Widget.lua +437 -0
- package/runtime/TopbarPlus/_impl/Features/Gamepad.lua +201 -0
- package/runtime/TopbarPlus/_impl/Features/Overflow.lua +360 -0
- package/runtime/TopbarPlus/_impl/Features/Themes/Classic.lua +27 -0
- package/runtime/TopbarPlus/_impl/Features/Themes/Default.lua +75 -0
- package/runtime/TopbarPlus/_impl/Features/Themes/init.lua +353 -0
- package/runtime/TopbarPlus/_impl/LICENSE +381 -0
- package/runtime/TopbarPlus/_impl/Packages/GoodSignal.lua +182 -0
- package/runtime/TopbarPlus/_impl/Packages/Janitor.lua +322 -0
- package/runtime/TopbarPlus/_impl/Reference.lua +30 -0
- package/runtime/TopbarPlus/_impl/Types.lua +477 -0
- package/runtime/TopbarPlus/_impl/Utility.lua +462 -0
- package/runtime/TopbarPlus/_impl/VERSION.lua +51 -0
- package/runtime/TopbarPlus/_impl/init.lua +1249 -0
- package/runtime/TopbarPlus/init.lua +1249 -0
- package/runtime/TopbarPlus/init.luau +8 -0
- package/runtime/Twinkle/init.luau +157 -0
- package/runtime/VfxUtil/init.luau +164 -0
- package/src/api.generated.js +3675 -0
- package/src/api.js +57 -0
- package/src/architecture.js +393 -0
- package/src/cli.js +192 -0
- package/src/compile.js +40 -0
- package/src/emit.js +213 -0
- package/src/lex.js +149 -0
- package/src/libs.js +355 -0
- package/src/parse.js +421 -0
- package/src/preprocess.js +80 -0
- package/src/understand.js +453 -0
- package/templates/game/.clangd +5 -0
- package/templates/game/.vscode/c_cpp_properties.json +23 -0
- package/templates/game/.vscode/settings.json +12 -0
- package/templates/game/Packages/.gitkeep +0 -0
- package/templates/game/cluaupp.config.json +6 -0
- package/templates/game/compile_flags.txt +3 -0
- package/templates/game/default.project.json +39 -0
- package/templates/game/package.json +9 -0
- package/templates/game/src/client/init.client.cpp +5 -0
- package/templates/game/src/server/leaderstats.server.cpp +28 -0
- package/templates/game/src/shared/config.cpp +5 -0
- package/templates/game/src/shared/config.h +3 -0
- 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
|
+

|
|
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
|
+

|
|
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
|
+

|
|
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
|
+

|
|
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
|
+

|
|
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
|
+

|
|
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
|
+

|
|
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
|
+

|
|
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
|
+

|
|
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
|
+

|
|
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
|
+

|
|
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
|