Clickable elements in a page which are not hyperlinks to other pages should be buttons for accessibility. This changes the clickable area into a button to more closely align with best practices.
Product is the noun, while the correct part of speech here is the verb "produce".
Also of note, the limit doesn't change unless data is entered and then removed (otherwise the previous limit is kept) even if the button is clicked (which isn't the expected behavior based on the text). However, I'm not sure how to convey this succintly though and I'm not familiar enough with React to change the value when only the button is clicked (especially since it is probably the intended behavior to not change the value when the modal is closed by clicking outside of it).
* fixed the export material fix
* changed teh dev menu fund adjuster for more granular control
* added checks for smartSupply and setSmartSupply
* few random autolints
* added early out in UpgradeWarehouse when not enough cash
* added checks to enforce maxProducts
* added checks to enforce export material is valid for location
* added checks for market ti reasearches
* coupled some of the styles to avoid breaking this later on
* added tooltip incase its too long/ too small
* changes to use elipsis and RTL to read the end of file name
It is possible for a player to qualify for an aug through a faction and
not the gang, e.g. when the gang is newly formed and still getting up to
speed. So, we need to consider both gang qualifications and faction
qualifications when constructing the sleeve augmentation list.
After destroying a BitNode, the `resetIndustryResearchTrees` reset all
industries to the _base_ research tree, leaving the product industries
without the `uPgrade` researches in the graph. So corporations started
in the next BitNode were unable to expand product capacity.
This fixes that reset function to use the correct product industry tree.
Just realized that I checked for exactly equal (as would be likely when operating internally), but really, it should treat anything greater than or equal to as a zero growth scenario (just better protection from a wider range of potential issues)
implemented numCycleForGrowthByMultiplier (fully compatible with old growthAnalyze - though still slightly wrong, it does so in a way that could be seen as beneficial and is compatible with existing scripts)
Also some fixes to numCycleForGrowthByHackAmt (wrong parameter order)
* NOTE: the prehackMoney parameter can be removed and server.moneyMax used in its place. The return value would then give a thread count
* that would slowly grow the server more than it is hacked until reaching moneyMax where it would return the correct number of threads.