keyframekit 1.2.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/KeyframeKit.min.js +1 -0
  2. package/dist/KeyframeKit.min.js.map +1 -0
  3. package/package.json +6 -3
  4. package/docs/.vitepress/components/Playground/Playground.js +0 -243
  5. package/docs/.vitepress/components/Playground/Playground.vue +0 -208
  6. package/docs/.vitepress/components/Playground/defaultExample.js +0 -175
  7. package/docs/.vitepress/components/Playground/interFont.js +0 -14
  8. package/docs/.vitepress/components/Playground/themes/githubDark.js +0 -402
  9. package/docs/.vitepress/components/Playground/themes/githubLight.js +0 -399
  10. package/docs/.vitepress/components/Playground/themes.js +0 -24
  11. package/docs/.vitepress/config.ts +0 -136
  12. package/docs/.vitepress/referenceNavigation.ts +0 -37
  13. package/docs/.vitepress/theme/base-styles.css +0 -147
  14. package/docs/.vitepress/theme/env.d.ts +0 -5
  15. package/docs/.vitepress/theme/index.ts +0 -40
  16. package/docs/docs/get-started.md +0 -131
  17. package/docs/docs/index.md +0 -17
  18. package/docs/docs/public/icon.png +0 -0
  19. package/docs/docs/public/og-image.png +0 -0
  20. package/docs/docs/public/playground/KeyframeKit/dist/KeyframeKit.d.ts +0 -172
  21. package/docs/docs/public/playground/KeyframeKit/dist/KeyframeKit.d.ts.map +0 -1
  22. package/docs/docs/public/playground/KeyframeKit/dist/KeyframeKit.js +0 -327
  23. package/docs/docs/public/playground/KeyframeKit/dist/KeyframeKit.js.map +0 -1
  24. package/docs/docs/public/playground/KeyframeKit/dist/KeyframeKit.min.js +0 -5
  25. package/docs/docs/reference/classes/KeyframeEffectParameters.md +0 -104
  26. package/docs/docs/reference/classes/ParsedKeyframes.md +0 -58
  27. package/docs/docs/reference/index.md +0 -20
  28. package/docs/docs/reference/interfaces/KeyframesFactory.md +0 -189
  29. package/docs/docs/reference/navigation.json +0 -64
  30. package/docs/docs/reference/type-aliases/CSSStyleSheetSource.md +0 -13
  31. package/docs/docs/reference/type-aliases/KeyframeArgument.md +0 -15
  32. package/docs/docs/reference/type-aliases/ParsedKeyframesRules.md +0 -22
  33. package/docs/docs/reference/variables/default.md +0 -12
  34. package/docs/package-lock.json +0 -2321
  35. package/docs/package.json +0 -22
  36. package/docs/typedoc/plugin-markdown-mdn-links-fix.js +0 -43
  37. package/docs/typedoc/plugin-markdown-see-also.js +0 -262
  38. package/docs/typedoc/plugin-param-names.js +0 -17
  39. package/docs/typedoc.config.js +0 -81
  40. package/docs/vercel.json +0 -14
  41. package/rollup.config.js +0 -42
  42. package/tsconfig.default.json +0 -44
  43. package/tsconfig.json +0 -10
@@ -1,327 +0,0 @@
1
- /*
2
- * KeyframeKit
3
- * MIT License
4
- *
5
- * See README.md for usage.
6
- */
7
- const CHARS = {
8
- PERCENT_SIGN: '%',
9
- HYPHEN_MINUS: '-',
10
- DOUBLE_HYPHEN_MINUS: '--',
11
- WEBKIT_PREFIX: '-webkit-'
12
- };
13
- class KeyframesFactory {
14
- Error = {
15
- /** Thrown if keyframes rule name is not a string. */
16
- KeyframesRuleNameTypeError: class KeyframesRuleNameTypeError extends TypeError {
17
- message = `Keyframes rule name must be a string.`;
18
- },
19
- /** Thrown if source is not a `CSSStyleSheet` or a `StyleSheetList`. */
20
- SourceTypeError: class SourceTypeError extends TypeError {
21
- message = `Source must be either a CSSStyleSheet or a StyleSheetList.`;
22
- },
23
- /** Thrown if the stylesheet could not be imported. */
24
- StyleSheetImportError: class StyleSheetImportError extends Error {
25
- message = `The stylesheet could not be imported.`;
26
- }
27
- };
28
- /**
29
- * Gets a document's stylesheets when it loads,
30
- * or immediately returns them if it's already loaded.
31
- * @param obj
32
- * @param obj.document The document to get stylesheets from.
33
- */
34
- async getDocumentStyleSheetsOnLoad({ document = window.document } = {}) {
35
- await waitForDocumentLoad({
36
- document: document
37
- });
38
- return document.styleSheets;
39
- }
40
- /**
41
- * Imports a stylesheet from a URL.
42
- * @param url The URL of the stylesheet to import.
43
- * @remarks
44
- * Note: `@import` rules won't be resolved in imported stylesheets.
45
- * See https://github.com/WICG/construct-stylesheets/issues/119#issuecomment-588352418.
46
- */
47
- async importStyleSheet(url) {
48
- const resp = await fetch(url);
49
- if (!resp.ok) {
50
- throw new this.Error.StyleSheetImportError();
51
- }
52
- const respText = await resp.text();
53
- // remove file name from URL to get base URL
54
- const baseURL = url.split('/').slice(0, -1).join('/');
55
- const styleSheet = new CSSStyleSheet({
56
- baseURL: baseURL
57
- });
58
- await styleSheet.replace(respText);
59
- return styleSheet;
60
- }
61
- /**
62
- * Gets a CSS keyframes rule from a stylesheet or stylesheet list,
63
- * then converts it to Web Animations API keyframes.
64
- * @param obj
65
- * @param obj.of The name of the `@keyframes` rule to get keyframes from.
66
- * @param obj.in The stylesheet or stylesheet list where the rule resides.
67
- */
68
- getStyleSheetKeyframes({ of: ruleName, in: source }) {
69
- if (typeof ruleName !== 'string') {
70
- throw new this.Error.KeyframesRuleNameTypeError();
71
- }
72
- if (source instanceof StyleSheetList) {
73
- return this.#getStyleSheetKeyframesInStyleSheetList({
74
- of: ruleName,
75
- styleSheetList: source
76
- });
77
- }
78
- else if (source instanceof CSSStyleSheet) {
79
- return this.#getStyleSheetKeyframesInStyleSheet({
80
- of: ruleName,
81
- styleSheet: source
82
- });
83
- }
84
- else {
85
- throw new this.Error.SourceTypeError();
86
- }
87
- }
88
- #getStyleSheetKeyframesInStyleSheetList({ of: ruleName, styleSheetList }) {
89
- for (const styleSheet of styleSheetList) {
90
- const keyframesRule = this.#getStyleSheetKeyframesInStyleSheet({
91
- of: ruleName,
92
- styleSheet: styleSheet
93
- });
94
- if (keyframesRule !== undefined) {
95
- return keyframesRule;
96
- }
97
- }
98
- }
99
- #getStyleSheetKeyframesInStyleSheet({ of: ruleName, styleSheet }) {
100
- for (const rule of styleSheet.cssRules) {
101
- if (!(rule instanceof CSSKeyframesRule)) {
102
- continue;
103
- }
104
- if (rule.name === ruleName) {
105
- const keyframes = this.parseKeyframesRule({
106
- rule: rule
107
- });
108
- return keyframes;
109
- }
110
- }
111
- }
112
- /**
113
- * Gets all the CSS keyframes rules in a stylesheet or stylesheet list,
114
- * then converts them to Web Animations API keyframes.
115
- * @param obj
116
- * @param obj.in The style sheet or style sheet list to get keyframes from.
117
- */
118
- getAllStyleSheetKeyframesRules({ in: source }) {
119
- if (source instanceof StyleSheetList) {
120
- return this.#getAllStyleSheetKeyframesRulesInStyleSheetList({
121
- styleSheetList: source
122
- });
123
- }
124
- else if (source instanceof CSSStyleSheet) {
125
- return this.#getAllStyleSheetKeyframesRulesInStyleSheet({
126
- styleSheet: source
127
- });
128
- }
129
- else {
130
- throw new this.Error.SourceTypeError();
131
- }
132
- }
133
- #getAllStyleSheetKeyframesRulesInStyleSheetList({ styleSheetList }) {
134
- let keyframesRules = {};
135
- for (const styleSheet of styleSheetList) {
136
- const styleSheetKeyframesRules = this.#getAllStyleSheetKeyframesRulesInStyleSheet({
137
- styleSheet: styleSheet
138
- });
139
- keyframesRules = {
140
- ...keyframesRules,
141
- ...styleSheetKeyframesRules
142
- };
143
- }
144
- return keyframesRules;
145
- }
146
- #getAllStyleSheetKeyframesRulesInStyleSheet({ styleSheet }) {
147
- let keyframesRules = {};
148
- for (const rule of styleSheet.cssRules) {
149
- if (!(rule instanceof CSSKeyframesRule)) {
150
- continue;
151
- }
152
- const keyframes = this.parseKeyframesRule({
153
- rule: rule
154
- });
155
- keyframesRules[rule.name] = keyframes;
156
- }
157
- return keyframesRules;
158
- }
159
- /**
160
- * Converts a CSS keyframes rule to Web Animations API keyframes.
161
- * @param obj
162
- * @param obj.rule The rule to convert.
163
- */
164
- parseKeyframesRule({ rule: keyframes }) {
165
- let parsedKeyframes = [];
166
- for (const keyframe of keyframes) {
167
- // remove trailing '%'
168
- /// https://drafts.csswg.org/css-animations/#dom-csskeyframerule-keytext
169
- const percentString = removeSuffix({
170
- of: keyframe.keyText,
171
- suffix: CHARS.PERCENT_SIGN
172
- });
173
- const percent = Number(percentString);
174
- const offset = percent / 100;
175
- let parsedProperties = {};
176
- for (const propertyName of keyframe.style) {
177
- /// https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration/getPropertyValue
178
- const propertyValue = keyframe.style.getPropertyValue(propertyName);
179
- /// https://drafts.csswg.org/web-animations-1/#ref-for-animation-property-name-to-idl-attribute-name%E2%91%A0
180
- const attributeName = this.#animationPropertyNameToIDLAttributeName(propertyName);
181
- parsedProperties[attributeName] = propertyValue;
182
- }
183
- const parsedKeyframe = {
184
- ...parsedProperties,
185
- offset: offset
186
- };
187
- parsedKeyframes.push(parsedKeyframe);
188
- }
189
- const parsedKeyframesInstance = new ParsedKeyframes(parsedKeyframes);
190
- return parsedKeyframesInstance;
191
- }
192
- /** https://drafts.csswg.org/web-animations-1/#animation-property-name-to-idl-attribute-name */
193
- #animationPropertyNameToIDLAttributeName(property) {
194
- if (this.#isCustomPropertyName(property))
195
- return property;
196
- if (property === 'float')
197
- return 'cssFloat';
198
- if (property === 'offset')
199
- return 'cssOffset';
200
- // https://drafts.csswg.org/cssom/#ref-for-supported-css-property%E2%91%A2
201
- const lowercaseFirst = this.#isWebkitCasedAttribute(property);
202
- return this.#cssPropertyToIDLAttribute(property, lowercaseFirst);
203
- }
204
- /** https://drafts.csswg.org/cssom/#css-property-to-idl-attribute */
205
- #cssPropertyToIDLAttribute(property, lowercaseFirst = false) {
206
- let output = '';
207
- let uppercaseNext = false;
208
- if (lowercaseFirst) {
209
- property = property.slice(1);
210
- }
211
- for (const c of property) {
212
- if (c === CHARS.HYPHEN_MINUS) {
213
- uppercaseNext = true;
214
- }
215
- else if (uppercaseNext) {
216
- uppercaseNext = false;
217
- output += c.toUpperCase();
218
- }
219
- else {
220
- output += c;
221
- }
222
- }
223
- return output;
224
- }
225
- /** https://drafts.csswg.org/css-variables-2/#typedef-custom-property-name */
226
- #isCustomPropertyName(property) {
227
- return property.startsWith(CHARS.DOUBLE_HYPHEN_MINUS) &&
228
- property !== CHARS.DOUBLE_HYPHEN_MINUS;
229
- }
230
- /** https://drafts.csswg.org/cssom/#ref-for-supported-css-property%E2%91%A2 */
231
- #isWebkitCasedAttribute(property) {
232
- return property.startsWith(CHARS.WEBKIT_PREFIX);
233
- }
234
- }
235
- export default new KeyframesFactory();
236
- /** https://drafts.csswg.org/web-animations-1/#the-keyframeeffect-interface */
237
- export class KeyframeEffectParameters {
238
- keyframes;
239
- options;
240
- /**
241
- * @param obj
242
- * @param obj.keyframes [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API/Keyframe_Formats)
243
- * @param obj.options [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/KeyframeEffect/KeyframeEffect#options)
244
- */
245
- constructor({ keyframes, options = {} }) {
246
- this.keyframes = keyframes;
247
- this.options = this.#parseOptionsArg(options);
248
- }
249
- /**
250
- * @param obj
251
- * @param obj.target An element to attach the animation to.
252
- * @param obj.options Additional keyframe effect options. Can override existing keys.
253
- * [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/KeyframeEffect/KeyframeEffect#options)
254
- * @param obj.timeline [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Animation/Animation#timeline)
255
- *
256
- * @see Specifications:
257
- * - https://drafts.csswg.org/web-animations-1/#the-keyframeeffect-interface
258
- * - https://drafts.csswg.org/web-animations-1/#the-animation-interface
259
- */
260
- toAnimation({ target, options: additionalOptions = {}, timeline = document.timeline }) {
261
- additionalOptions = this.#parseOptionsArg(additionalOptions);
262
- // override existing option keys with additional options
263
- const options = {
264
- ...this.options, ...additionalOptions
265
- };
266
- const keyframeEffect = new KeyframeEffect(target, this.keyframes, options);
267
- const animation = new Animation(keyframeEffect, timeline);
268
- return animation;
269
- }
270
- /** https://drafts.csswg.org/web-animations-1/#dom-keyframeeffect-keyframeeffect-target-keyframes-options-options
271
- https://drafts.csswg.org/web-animations-1/#dom-effecttiming-duration */
272
- #parseOptionsArg(options) {
273
- if (typeof options === 'number') {
274
- return { duration: options };
275
- }
276
- return options;
277
- }
278
- }
279
- export class ParsedKeyframes {
280
- keyframes;
281
- constructor(keyframes) {
282
- this.keyframes = keyframes;
283
- }
284
- /**
285
- * @param options
286
- * [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/KeyframeEffect/KeyframeEffect#options)
287
- */
288
- toKeyframeEffect(options) {
289
- let keyframeEffect;
290
- // convert (required) nullable to optional
291
- if (options !== null) {
292
- keyframeEffect = new KeyframeEffectParameters({
293
- keyframes: this.keyframes,
294
- options: options
295
- });
296
- }
297
- else {
298
- keyframeEffect = new KeyframeEffectParameters({
299
- keyframes: this.keyframes
300
- });
301
- }
302
- return keyframeEffect;
303
- }
304
- }
305
- // MARK: - Util
306
- function removeSuffix({ of: string, suffix }) {
307
- return string.slice(0, -suffix.length);
308
- }
309
- async function waitForDocumentLoad({ document }) {
310
- if (document.readyState === 'complete') {
311
- return;
312
- }
313
- const { promise, resolve } = Promise.withResolvers();
314
- function onReadyStateChange() {
315
- if (document.readyState === 'complete') {
316
- resolve(null);
317
- }
318
- }
319
- const listener = [
320
- 'readystatechange',
321
- onReadyStateChange
322
- ];
323
- document.addEventListener(...listener);
324
- await promise;
325
- document.removeEventListener(...listener);
326
- }
327
- //# sourceMappingURL=KeyframeKit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"KeyframeKit.js","sourceRoot":"","sources":["../src/KeyframeKit.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /*
2
- * KeyframeKit
3
- * MIT License
4
- */
5
- const e="%",t="-",s="--",r="-webkit-";var o=new class{Error={KeyframesRuleNameTypeError:class extends TypeError{message="Keyframes rule name must be a string."},SourceTypeError:class extends TypeError{message="Source must be either a CSSStyleSheet or a StyleSheetList."},StyleSheetImportError:class extends Error{message="The stylesheet could not be imported."}};async getDocumentStyleSheetsOnLoad({document:e=window.document}={}){return await async function({document:e}){if("complete"===e.readyState)return;const{promise:t,resolve:s}=Promise.withResolvers();function r(){"complete"===e.readyState&&s(null)}const o=["readystatechange",r];e.addEventListener(...o),await t,e.removeEventListener(...o)}({document:e}),e.styleSheets}async importStyleSheet(e){const t=await fetch(e);if(!t.ok)throw new this.Error.StyleSheetImportError;const s=await t.text(),r=e.split("/").slice(0,-1).join("/"),o=new CSSStyleSheet({baseURL:r});return await o.replace(s),o}getStyleSheetKeyframes({of:e,in:t}){if("string"!=typeof e)throw new this.Error.KeyframesRuleNameTypeError;if(t instanceof StyleSheetList)return this.#e({of:e,styleSheetList:t});if(t instanceof CSSStyleSheet)return this.#t({of:e,styleSheet:t});throw new this.Error.SourceTypeError}#e({of:e,styleSheetList:t}){for(const s of t){const t=this.#t({of:e,styleSheet:s});if(void 0!==t)return t}}#t({of:e,styleSheet:t}){for(const s of t.cssRules)if(s instanceof CSSKeyframesRule&&s.name===e){return this.parseKeyframesRule({rule:s})}}getAllStyleSheetKeyframesRules({in:e}){if(e instanceof StyleSheetList)return this.#s({styleSheetList:e});if(e instanceof CSSStyleSheet)return this.#r({styleSheet:e});throw new this.Error.SourceTypeError}#s({styleSheetList:e}){let t={};for(const s of e){const e=this.#r({styleSheet:s});t={...t,...e}}return t}#r({styleSheet:e}){let t={};for(const s of e.cssRules){if(!(s instanceof CSSKeyframesRule))continue;const e=this.parseKeyframesRule({rule:s});t[s.name]=e}return t}parseKeyframesRule({rule:t}){let s=[];for(const r of t){const t=l({of:r.keyText,suffix:e}),o=Number(t)/100;let n={};for(const e of r.style){const t=r.style.getPropertyValue(e);n[this.#o(e)]=t}const i={...n,offset:o};s.push(i)}return new i(s)}#o(e){if(this.#n(e))return e;if("float"===e)return"cssFloat";if("offset"===e)return"cssOffset";const t=this.#i(e);return this.#l(e,t)}#l(e,s=!1){let r="",o=!1;s&&(e=e.slice(1));for(const s of e)s===t?o=!0:o?(o=!1,r+=s.toUpperCase()):r+=s;return r}#n(e){return e.startsWith(s)&&e!==s}#i(e){return e.startsWith(r)}};class n{keyframes;options;constructor({keyframes:e,options:t={}}){this.keyframes=e,this.options=this.#a(t)}toAnimation({target:e,options:t={},timeline:s=document.timeline}){t=this.#a(t);const r={...this.options,...t},o=new KeyframeEffect(e,this.keyframes,r);return new Animation(o,s)}#a(e){return"number"==typeof e?{duration:e}:e}}class i{keyframes;constructor(e){this.keyframes=e}toKeyframeEffect(e){let t;return t=new n(null!==e?{keyframes:this.keyframes,options:e}:{keyframes:this.keyframes}),t}}function l({of:e,suffix:t}){return e.slice(0,-t.length)}export{n as KeyframeEffectParameters,i as ParsedKeyframes,o as default};
@@ -1,104 +0,0 @@
1
- [KeyframeKit](../index.md) / KeyframeEffectParameters
2
-
3
- # Class: KeyframeEffectParameters
4
-
5
- https://drafts.csswg.org/web-animations-1/#the-keyframeeffect-interface
6
-
7
- ## Constructors
8
-
9
- ### Constructor
10
-
11
- ```ts
12
- new KeyframeEffectParameters(obj: {
13
- keyframes: KeyframeArgument;
14
- options?: number | KeyframeEffectOptions;
15
- }): KeyframeEffectParameters;
16
- ```
17
-
18
- #### Parameters
19
-
20
- ##### obj
21
-
22
- ###### keyframes
23
-
24
- [`KeyframeArgument`](../type-aliases/KeyframeArgument.md)
25
-
26
- [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API/Keyframe_Formats)
27
-
28
- ###### options?
29
-
30
- `number` \| `KeyframeEffectOptions` = `{}`
31
-
32
- [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/KeyframeEffect/KeyframeEffect#options)
33
-
34
- #### Returns
35
-
36
- `KeyframeEffectParameters`
37
-
38
- ## Properties
39
-
40
- ### keyframes
41
-
42
- ```ts
43
- keyframes: KeyframeArgument;
44
- ```
45
-
46
- ***
47
-
48
- ### options
49
-
50
- ```ts
51
- options: KeyframeEffectOptions;
52
- ```
53
-
54
- ## Methods
55
-
56
- ### toAnimation()
57
-
58
- ```ts
59
- toAnimation(obj: {
60
- options?: number | KeyframeEffectOptions;
61
- target: Element | null;
62
- timeline?: AnimationTimeline | null;
63
- }): Animation;
64
- ```
65
-
66
- #### Parameters
67
-
68
- ##### obj
69
-
70
- ###### options?
71
-
72
- `number` \| `KeyframeEffectOptions` = `{}`
73
-
74
- Additional keyframe effect options. Can override existing keys.
75
- [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/KeyframeEffect/KeyframeEffect#options)
76
-
77
- ###### target
78
-
79
- [`Element`](https://developer.mozilla.org/docs/Web/API/Element) \| `null`
80
-
81
- An element to attach the animation to.
82
-
83
- ###### timeline?
84
-
85
- [`AnimationTimeline`](https://developer.mozilla.org/docs/Web/API/AnimationTimeline) \| `null` = `document.timeline`
86
-
87
- [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Animation/Animation#timeline)
88
-
89
- #### Returns
90
-
91
- [`Animation`](https://developer.mozilla.org/docs/Web/API/Animation)
92
-
93
- #### See
94
-
95
- Specifications:
96
- - https://drafts.csswg.org/web-animations-1/#the-keyframeeffect-interface
97
- - https://drafts.csswg.org/web-animations-1/#the-animation-interface
98
-
99
- ## See Also
100
-
101
- ### Referenced Here
102
- - [KeyframeArgument](../type-aliases/KeyframeArgument.md)
103
- ### References This
104
- - [ParsedKeyframes.toKeyframeEffect](ParsedKeyframes.md#tokeyframeeffect)
@@ -1,58 +0,0 @@
1
- [KeyframeKit](../index.md) / ParsedKeyframes
2
-
3
- # Class: ParsedKeyframes
4
-
5
- ## Constructors
6
-
7
- ### Constructor
8
-
9
- ```ts
10
- new ParsedKeyframes(keyframes: Keyframe[]): ParsedKeyframes;
11
- ```
12
-
13
- #### Parameters
14
-
15
- ##### keyframes
16
-
17
- `Keyframe`[]
18
-
19
- #### Returns
20
-
21
- `ParsedKeyframes`
22
-
23
- ## Properties
24
-
25
- ### keyframes
26
-
27
- ```ts
28
- keyframes: Keyframe[];
29
- ```
30
-
31
- ## Methods
32
-
33
- ### toKeyframeEffect()
34
-
35
- ```ts
36
- toKeyframeEffect(options: number | KeyframeEffectOptions | null): KeyframeEffectParameters;
37
- ```
38
-
39
- #### Parameters
40
-
41
- ##### options
42
-
43
- [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/KeyframeEffect/KeyframeEffect#options)
44
-
45
- `number` | `KeyframeEffectOptions` | `null`
46
-
47
- #### Returns
48
-
49
- [`KeyframeEffectParameters`](KeyframeEffectParameters.md)
50
-
51
- ## See Also
52
-
53
- ### Referenced Here
54
- - [KeyframeEffectParameters](KeyframeEffectParameters.md)
55
- ### References This
56
- - [KeyframesFactory.getStyleSheetKeyframes](../interfaces/KeyframesFactory.md#getstylesheetkeyframes)
57
- - [KeyframesFactory.parseKeyframesRule](../interfaces/KeyframesFactory.md#parsekeyframesrule)
58
- - [ParsedKeyframesRules](../type-aliases/ParsedKeyframesRules.md)
@@ -1,20 +0,0 @@
1
- # KeyframeKit
2
-
3
- ## Classes
4
-
5
- - [KeyframeEffectParameters](classes/KeyframeEffectParameters.md)
6
- - [ParsedKeyframes](classes/ParsedKeyframes.md)
7
-
8
- ## Interfaces
9
-
10
- - [KeyframesFactory](interfaces/KeyframesFactory.md)
11
-
12
- ## Type Aliases
13
-
14
- - [CSSStyleSheetSource](type-aliases/CSSStyleSheetSource.md)
15
- - [KeyframeArgument](type-aliases/KeyframeArgument.md)
16
- - [ParsedKeyframesRules](type-aliases/ParsedKeyframesRules.md)
17
-
18
- ## Variables
19
-
20
- - [default](variables/default.md)