- From: Majid Valipour via GitHub <sysbot+gh@w3.org>
- Date: Fri, 07 Jun 2019 11:30:27 +0000
- To: public-houdini-archive@w3.org
To make the difference more clear. Here are the two choices: ### Currently specified - Use two separate superclasses ``` // The fact that this extends StatefulAnimator indicates this is a stateful. // It still has to implement state() function. registerAnimator('a', class Foo extends StatefulAnimator { constructor(options, state) {} animate(currentTime, effect) {} state() { return 'some state'; } }); registerAnimator('b', class Bar extends StatelessAnimator { constructor(options) {} animate(currentTime, effect) {} }); ``` Cons: - Two super classes (as opposed to mixin) makes its harder for authors to mix it with any existing class hierarchy they have. I suspect most will just have StatefulAnimator at the top of their class hierarchy which defeats the purpose. - The author still has to implement state() function anyway. - More difficult to spec and implement ### New proposal - Use state function existence to differentiate ```js registerAnimator('a', class Foo { constructor(options, state) {} animate(currentTime, effect) {} // The fact that there is a state getter indicates this is a stateful animator. state() { return 'some state'; } }); registerAnimator('b', class Bar { constructor(options) {} animate(currentTime, effect) {} }); ``` Pros: - No requirements on class hierarchy which allows a lot more flexibility - Implementation of state function(satisfying the contract) is enough! - Simpler to spec and implement Cons: - Having a superclass is nice e.g., we can add other methods that have meaningful default behavior (e.g., `pause`, `play`) but that only needs a single superclass `Animator` and also can be done later when it is needed. -- GitHub Notification of comment by majido Please view or discuss this issue at https://github.com/w3c/css-houdini-drafts/issues/850#issuecomment-499851180 using your GitHub account
Received on Friday, 7 June 2019 11:30:29 UTC