waapi-timing-properties v1.4.8
WAAPI timing properties
List of timing properties and their possible values for animation effects used in Web Animations API.
It can be used to validate() and sanitize() options passed to Element.animate(), KeyframeEffectReadOnly() and KeyframeEffect(). Here's an example.
DEMO and its source code.
Install
$ yarn add waapi-timing-propertiesor
$ npm install waapi-timing-propertiesUsage
Import all functionality into one object:
import * as WTProperties from 'waapi-timing-properties'Or import only what you need:
import { properties, propertiesNames, sanitize, validate } from 'waapi-timing-properties'Or load from CDN:
<!-- Either -->
<script src="https://unpkg.com/waapi-timing-properties"></script>
<!-- or -->
<script src="https://cdn.jsdelivr.net/npm/waapi-timing-properties@latest/dist/wtproperties.js"></script>WTProperties.properties is an object containing properties names and their possible values.
The structure of the object is this:
WTProperties.propertiesNames.forEach((property) => {
const object = WTProperties.properties[property]
})object.default is the default value of the property.
object.type is either 'Number' or 'String'.
If object.type === 'Number' then
object.min is its minimal possible value
object.max is its maximal possible value
If object.type === 'String' then
object.values is an array of possible values.
For easing property there is also
object.valuesCubicBezier object which contains cubic-bezier equivalents of linear, ease, ease-in, ease-out and ease-in-out
and
object.valuesSteps object which contains steps equivalents of step-start and step-end
WTProperties.propertiesNames is an array containing only properties names.
WTProperties.sanitize has two optional arguments:
WTProperties.sanitize(objectArrayOrStringToCheck, checkValues = true, returnDefault = true)
WTProperties.validate also has two optional arguments:
WTProperties.validate(objectArrayOrStringToCheck, checkValues = true, returnFirstInvalidProperty = false)
Let's sanitize and validate some options:
const options = {
duration: -1000,
easing: 'not easy',
iterations: 3,
someInvalidOption: 123,
}Use WTProperties.sanitize(options) to remove properties with invalid names and replace properties with valid names but invalid values with their default values:
WTProperties.sanitize(options) ===
{
duration: 0,
easing: 'linear',
iterations: 3,
}
WTProperties.validate(options) === trueUse sanitize(options, true, false) to remove all properties with invalid names and/or values:
WTProperties.sanitize(options, true, false) ===
{
iterations: 3,
}
WTProperties.validate(options) === trueUse sanitize(options, false) to remove only properties with invalid names without checking their values:
WTProperties.sanitize(options, false) ===
{
duration: -1000,
easing: 'not easy',
iterations: 3,
}
WTProperties.validate(options) === false
WTProperties.validate(options, false) === trueSet the third argument of validate() - returnFirstInvalidProperty to true to return string containing first invalid property instead of boolean when the result is false:
This can be useful for writing tests. Here's an example.
const options = {
duration: -1000,
easing: 'not easy',
iterations: 3,
someInvalidOption: 123,
}
WTProperties.validate(options) === false
WTProperties.validate(options, true, true) === 'duration: -1000'
WTProperties.validate(options, false) === false
WTProperties.validate(options, false, true) === 'someInvalidOption: 123'options can be array of properties names to check or a string (a single property name). In this case the optional arguments have no effect.
Play with the DEMO for better understanding of how it works.
Here's the list of all the properties with their possible values and defaults:
id
Possible values:
- Any string
Default:
- No default value
direction
Possible values:
normalreversealternatealternate-reverse
Default:
normal
duration
Possible values:
- Any positive number or
0
Default:
0
- Any positive number or
easing
Possible values:
lineareaseease-inease-outease-in-outcubic-bezier(x1, y1, x2, y2)where x1 and x2 are numbers between 0 and 1, y1 and y2 are any numbersstep-startstep-endsteps(number_of_steps[, direction])wherenumber_of_stepsis an integer greater than0and optionaldirectionis one ofend,start,jump-both,jump-none,jump-end,jump-start
Default:
linear
endDelay
Possible values:
- Any positive number or
0
Default:
0
- Any positive number or
fill
Possible values:
noneforwardsbackwardsbothauto
Default:
auto
iterationStart
Possible values:
- Any positive number or
0
Default:
0
- Any positive number or
iterations
Possible values:
- Any positive number or
0orInfinity
Default:
1
- Any positive number or
composite
Possible values:
addaccumulatereplaceauto
Default:
replace
iterationComposite
Possible values:
accumulatereplace
Default:
replace
Development
Build the bundle for browsers into ./dist folder:
yarn buildRebuild the bundle when its source files change on disk:
yarn watchRun tests:
yarn testLint:
yarn lintFix linting and style errors:
yarn fixUpdate dependencies:
yarn upGenerate changelog based on commit messages:
yarn cTo use the above command conventional-changelog-cli must be installed globally. Follow the recommended workflow.
2 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago