* Implement support for variadic arguments to `m.fragment`
While I was at it, I refactored the common logic out of `hyperscript`.
* Add a missed change from #2326
* Update docs + changelog [skip ci]
* Explain rationale for `hyperscriptVnode`'s calling convention
This way, it doesn't get erroneously "cleaned up" into something worse,
and so it's clearer how it'd be potentially optimized once ES5 support
is dropped.
* Emphasize closure components in components.md
* Use closure components for all stateful component examples
* Add change-log entry
* Edits and separate sections for closure, class & POJO state
* Add docs about using EventListener objects
* Fix typo
* Less misleading description of event handlers
* Fix a typo + grammar mistake
* More grammar/typo fixes
- Fix custom elements attribute application to acknowledge that not all
custom elements operate purely based on attributes. (Plus, those
blasted things are verbose as heck when you're working with them in
raw form. It's also not that uncommon for functionality to be exposed
via property and *not* attribute.)
- Don't memoize the normalized value when we 1. only use it once in each
branch, and 2. only use it for a few special cases.
- Centralize the "has property key" code, so it's easier to tune and
read. I also inlined a couple functions while I was at it since they
were small and only used once.
- Actually test for how attributes are applied to raw DOM elements vs
when we choose to use keys. When I first developed the patch, it
silently worked, when I should've been breaking things.