what i mean is, if you have a native binary argon2, just set some decent amount of hash grinding count and memory usage on it and that's plenty for securing it. the AES hash or chacha/poly hash is no better than what argon uses, which is, iirc, chacha12/poly1305.
anyhow, there is no reversing even a single hash, the point of these is to add some compute time to brute force it, so actually, if there is a strong cryptographically secure hash available in the javascript runtime, that can be used repeatedly on the nsec, starting with the password, and you can make it expand it by hashing the first 32 bytes to make the second and so on, until it uses several kilobytes, and define some number of times it does that again with the expanded hash. that's what scrypt and argon do, anyway. scrypt uses sha256