<commit_before>--[=[
	@class SlottedTouchButtonUtils
]=]

local require = require(script.Parent.loader).load(script)

local InputModeType = require("InputModeType")

local SlottedTouchButtonUtils = {}

--[=[
	Internal data representing a slotted touch button
	@interface SlottedTouchButtonData
	.slotId string
	.inputModeType InputModeType
	@within SlottedTouchButtonUtils
]=]


--[=[
	A touch button that goes into a specific slot. This ensures
	consistent slot positions.

	@interface SlottedTouchButton
	.type "SlottedTouchButton"
	.slotId string
	@within SlottedTouchButtonUtils
]=]

--[=[
	Touch buttons should always show up in the same position
	We use the SlotId to determine which slot we should put
	these buttons in.

	@param slotId string
	@return SlottedTouchButton
]=]
function SlottedTouchButtonUtils.createSlottedTouchButton(slotId)
	assert(slotId == "primary1"
		or slotId == "primary2"
		or slotId == "primary3"
		or slotId == "primary4"
		or slotId == "touchpad1", "Bad slotId")

	return {
		type = "SlottedTouchButton";
		slotId = slotId;
	}
end

--[=[
	Returns whether an inputType is a SlottedTouchButton type

	@param inputType any
	@return boolean
]=]
function SlottedTouchButtonUtils.isSlottedTouchButton(inputType)
	return type(inputType) == "table" and inputType.type == "SlottedTouchButton"
end

--[=[
	Gets slotted touch button data for an inputKeyMapList

	@param slotId string
	@param inputModeType InputModeType
	@return SlottedTouchButtonData
]=]
function SlottedTouchButtonUtils.createTouchButtonData(slotId, inputModeType)
	return {
		slotId = slotId;
		inputModeType = inputModeType;<commit_msg>feat: Add inner1 and inner2 buttons<commit_after>--[=[
	@class SlottedTouchButtonUtils
]=]

local require = require(script.Parent.loader).load(script)

local InputModeType = require("InputModeType")

local SlottedTouchButtonUtils = {}

--[=[
	Internal data representing a slotted touch button
	@interface SlottedTouchButtonData
	.slotId string
	.inputModeType InputModeType
	@within SlottedTouchButtonUtils
]=]


--[=[
	A touch button that goes into a specific slot. This ensures
	consistent slot positions.

	@interface SlottedTouchButton
	.type "SlottedTouchButton"
	.slotId string
	@within SlottedTouchButtonUtils
]=]

--[=[
	Touch buttons should always show up in the same position
	We use the SlotId to determine which slot we should put
	these buttons in.

	@param slotId string
	@return SlottedTouchButton
]=]
function SlottedTouchButtonUtils.createSlottedTouchButton(slotId)
	assert(slotId == "primary1"
		or slotId == "primary2"
		or slotId == "primary3"
		or slotId == "primary4"
		or slotId == "inner1"
		or slotId == "inner2"
		or slotId == "jumpbutton"
		or slotId == "touchpad1", "Bad slotId")

	return {
		type = "SlottedTouchButton";
		slotId = slotId;
	}
end

--[=[
	Returns whether an inputType is a SlottedTouchButton type

	@param inputType any
	@return boolean
]=]
function SlottedTouchButtonUtils.isSlottedTouchButton(inputType)
	return type(inputType) == "table" and inputType.type == "SlottedTouchButton"
end

--[=[
	Gets slotted touch button data for an inputKeyMapList

	@param slotId string
	@param inputModeType InputModeType
	@return SlottedTouchButtonData
]=]
function SlottedTouchButtonUtils.createTouchButtonData(slotId, inputModeType)
	return {
		slotId = slotId;
		inputModeType = inputModeType;
{'fraction_non_alphanumeric': 0.09136904761904761, 'fraction_numerical': 0.004166666666666667, 'mean_word_length': 5.178308823529412, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6614553', 'n_tokens_mistral': 1079, 'n_tokens_neox': 1025, 'n_words': 307}