- From: Brian Birtles via GitHub <sysbot+gh@w3.org>
- Date: Fri, 12 Jan 2018 07:13:27 +0000
- To: public-css-archive@w3.org
I had a go at implementing this in Firefox just to see how it feels. The modified IDL I used is:
```webidl
dictionary EffectTiming {
double delay = 0.0;
double endDelay = 0.0;
FillMode fill = "auto";
double iterationStart = 0.0;
unrestricted double iterations = 1.0;
(unrestricted double or DOMString) duration = "auto";
PlaybackDirection direction = "normal";
DOMString easing = "linear";
};
dictionary PartialEffectTiming {
double delay;
double endDelay;
FillMode fill;
double iterationStart;
unrestricted double iterations;
(unrestricted double or DOMString) duration;
PlaybackDirection direction;
DOMString easing;
};
dictionary ComputedEffectTiming : EffectTiming {
unrestricted double computedDuration = 0.0;
FillMode computedFillMode = "none";
unrestricted double endTime = 0.0;
unrestricted double activeDuration = 0.0;
double? localTime = null;
double? progress = null;
unrestricted double? currentIteration = null;
};
interface AnimationEffectReadOnly {
ComputedEffectTiming getTiming();
void setTiming(optional EffectTiming timing);
void updateTiming(optional PartialEffectTiming timing);
};
```
As you can see I took the liberty of renaming some of the dictionaries at the same time. (Now that we no longer have `AnimationEffectTiming(ReadOnly)` we now longer need the `Properties` on `AnimationEffectTimingProperties` but I decided to try and simplify the names further still.)
The `Partial` naming is based on [`Partial`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-1.html#partial-readonly-record-and-pick) from TypeScript.
The two questions I have before specing this are:
1) Obviously adding `setTiming` and `updateTiming` to `AnimationEffectReadOnly` don't make sense so where should they go? On `KeyframeEffect` itself? Or should we fix this and issue #2068 at the same time?
For solving #2068 we'd rename the interface `AnimationEffect` and work out how these methods work when applied to animations tied to markup (CSS animations/transitions).
2) Is having `computedDuration` and `computedFill` a bit weird? Is it weird that `activeDuration` is a computed property but `duration` is not? E.g. if you do:
```js
const timing = anim.effect.getTiming();
timing.duration = 3000;
timing.activeDuration = 6000;
anim.effect.updateTiming(timing);
```
only `duration` will have any effect, `activeDuration` will be ignored.
Also, it just occurred to me, might it be useful to have `setTiming` / `updateTiming` return the updated computed timing so you can chain calls together?
I'm not sure if there's a way of expressing partial dictionaries in WebIDL that's less redundant that what I have above.
--
GitHub Notification of comment by birtles
Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/2065#issuecomment-357160686 using your GitHub account
Received on Friday, 12 January 2018 07:13:29 UTC