Re: [heycam/webidl] Introduce the observable array type (#836)

I'm not 100% happy with how the hooks have turned out here, both for spec authors and for web developers using the constructor.

Here are some potential models:

* Two hooks, `before(value, index)` and `after(value, index)`, which get undefined for deletions.
* 6 hooks, `{before,after}Add(newValue, newIndex)`, `{before,after}Replace(newValue, index, oldValue)`, {before,after}Delete(oldValue, index)`.
* 4 hooks, `{before,after}Update(newValue, index)`, `{before,after}Delete(oldValue, index)`. (update = add or replace)
* 4 hooks, `{before,after}Add(newValue, newIndex)`, `{before,after}Delete(oldValue, index)`. This replacements as a delete then add.
* Variations of the above where all the after hooks are consolidated into one no-argument hook, on the assumption that specs and code will just iterate the new list contents.

I'm not sure what would be best. The `adoptedStyleSheets` case needs the `beforeAdd` hook only, for validation. (It doesn't need any after hooks, at least in the spec, since it can just say that the DocumentOrShadowRoot's adopted stylesheets are its `adoptedStyleSheetAttribute`'s backing observable array contents. But implementations would probably benefit from all of them.)

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/heycam/webidl/pull/836#issuecomment-578266974

Received on Friday, 24 January 2020 19:26:55 UTC