@lightningjs/renderer 3.0.0 → 3.0.2
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.
- package/dist/src/core/CoreNode.d.ts +1 -1
- package/dist/src/core/CoreTextNode.js +8 -0
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/lib/ImageWorker.d.ts +2 -2
- package/dist/src/core/lib/ImageWorker.js +12 -31
- package/dist/src/core/lib/ImageWorker.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +60 -109
- package/dist/src/core/lib/WebGlContextWrapper.js +158 -164
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- package/dist/src/core/lib/textureCompression.js +10 -19
- package/dist/src/core/lib/textureCompression.js.map +1 -1
- package/dist/src/core/lib/validateImageBitmap.d.ts +1 -2
- package/dist/src/core/lib/validateImageBitmap.js +4 -4
- package/dist/src/core/lib/validateImageBitmap.js.map +1 -1
- package/dist/src/core/platform.js +5 -2
- package/dist/src/core/platform.js.map +1 -1
- package/dist/src/core/platforms/web/WebGlContextWrapper.d.ts +5 -5
- package/dist/src/core/renderers/webgl/WebGlCoreShader.destroy.d.ts +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreShader.destroy.js +2 -0
- package/dist/src/core/renderers/webgl/WebGlCoreShader.destroy.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +5 -3
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +4 -1
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js +1 -2
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +14 -35
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +8 -25
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/core/CoreTextNode.ts +9 -0
- package/src/core/renderers/webgl/WebGlCtxTexture.test.ts +113 -0
- package/src/core/renderers/webgl/WebGlRenderer.ts +4 -3
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +3 -1
- package/src/core/renderers/webgl/internal/RendererUtils.ts +1 -2
- package/dist/src/core/AutosizeManager.d.ts +0 -29
- package/dist/src/core/AutosizeManager.js +0 -169
- package/dist/src/core/AutosizeManager.js.map +0 -1
- package/dist/src/core/animations/Animation.d.ts +0 -21
- package/dist/src/core/animations/Animation.js +0 -194
- package/dist/src/core/animations/Animation.js.map +0 -1
- package/dist/src/core/animations/Playback.d.ts +0 -64
- package/dist/src/core/animations/Playback.js +0 -169
- package/dist/src/core/animations/Playback.js.map +0 -1
- package/dist/src/core/animations/Transition.d.ts +0 -27
- package/dist/src/core/animations/Transition.js +0 -52
- package/dist/src/core/animations/Transition.js.map +0 -1
- package/dist/src/core/animations/utils.d.ts +0 -2
- package/dist/src/core/animations/utils.js +0 -136
- package/dist/src/core/animations/utils.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +0 -45
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +0 -127
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +0 -1
- package/dist/src/core/shaders/webgl/SdfShadowShader.d.ts +0 -9
- package/dist/src/core/shaders/webgl/SdfShadowShader.js +0 -100
- package/dist/src/core/shaders/webgl/SdfShadowShader.js.map +0 -1
- package/dist/src/core/text-rendering/CanvasFont.d.ts +0 -14
- package/dist/src/core/text-rendering/CanvasFont.js +0 -111
- package/dist/src/core/text-rendering/CanvasFont.js.map +0 -1
- package/dist/src/core/text-rendering/CoreFont.d.ts +0 -33
- package/dist/src/core/text-rendering/CoreFont.js +0 -48
- package/dist/src/core/text-rendering/CoreFont.js.map +0 -1
- package/dist/src/core/text-rendering/FontManager.d.ts +0 -11
- package/dist/src/core/text-rendering/FontManager.js +0 -42
- package/dist/src/core/text-rendering/FontManager.js.map +0 -1
- package/dist/src/core/text-rendering/SdfFont.d.ts +0 -29
- package/dist/src/core/text-rendering/SdfFont.js +0 -142
- package/dist/src/core/text-rendering/SdfFont.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* If not stated otherwise in this file or this component's LICENSE file the
|
|
3
|
-
* following copyright and licenses apply:
|
|
4
|
-
*
|
|
5
|
-
* Copyright 2023 Comcast Cable Communications Management, LLC.
|
|
6
|
-
*
|
|
7
|
-
* Licensed under the Apache License, Version 2.0 (the License);
|
|
8
|
-
* you may not use this file except in compliance with the License.
|
|
9
|
-
* You may obtain a copy of the License at
|
|
10
|
-
*
|
|
11
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
-
*
|
|
13
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
-
* See the License for the specific language governing permissions and
|
|
17
|
-
* limitations under the License.
|
|
18
|
-
*/
|
|
19
|
-
import { Matrix3d } from './lib/Matrix3d.js';
|
|
20
|
-
/**
|
|
21
|
-
* Creates an autosize manager for efficient child bounds calculation
|
|
22
|
-
*
|
|
23
|
-
* @remarks
|
|
24
|
-
* This function creates a closure-based manager that tracks child transform
|
|
25
|
-
* changes and calculates parent dimensions based on children's bounding boxes.
|
|
26
|
-
* It's optimized for performance with minimal allocations and fast lookups.
|
|
27
|
-
*
|
|
28
|
-
* @param parentNode - The autosize parent node
|
|
29
|
-
* @returns Object with autosize management methods
|
|
30
|
-
*/
|
|
31
|
-
export function createAutosizeManager(parentNode) {
|
|
32
|
-
const childDataMap = new Map();
|
|
33
|
-
let isActive = true;
|
|
34
|
-
let lastWidth = 0;
|
|
35
|
-
let lastHeight = 0;
|
|
36
|
-
let lastHasChanged = false;
|
|
37
|
-
const corners = [
|
|
38
|
-
{ x: 0, y: 0 },
|
|
39
|
-
{ x: 0, y: 0 },
|
|
40
|
-
{ x: 0, y: 0 },
|
|
41
|
-
{ x: 0, y: 0 },
|
|
42
|
-
];
|
|
43
|
-
/**
|
|
44
|
-
* Add or update a child node in the autosize calculation chain
|
|
45
|
-
* @param child - Child node to add or update
|
|
46
|
-
*/
|
|
47
|
-
const addOrUpdateChild = (child) => {
|
|
48
|
-
if (isActive === false)
|
|
49
|
-
return;
|
|
50
|
-
if (child === parentNode)
|
|
51
|
-
return; // Avoid circular references
|
|
52
|
-
const currentTransform = child.localTransform || Matrix3d.identity();
|
|
53
|
-
const existingData = childDataMap.get(child);
|
|
54
|
-
if (existingData !== undefined) {
|
|
55
|
-
// Update existing child
|
|
56
|
-
Matrix3d.copy(currentTransform, existingData.localTransform);
|
|
57
|
-
existingData.width = child.w;
|
|
58
|
-
existingData.height = child.h;
|
|
59
|
-
existingData.hasChanged = true;
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
// Add new child
|
|
63
|
-
childDataMap.set(child, {
|
|
64
|
-
localTransform: Matrix3d.copy(currentTransform),
|
|
65
|
-
hasChanged: true,
|
|
66
|
-
width: child.w,
|
|
67
|
-
height: child.h,
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
// Mark parent for recalculation
|
|
71
|
-
parentNode.autosizeNeedsUpdate = true;
|
|
72
|
-
};
|
|
73
|
-
/**
|
|
74
|
-
* Remove a child node from the autosize calculation chain
|
|
75
|
-
* @param child - Child node to remove
|
|
76
|
-
*/
|
|
77
|
-
const removeChild = (child) => {
|
|
78
|
-
if (childDataMap.delete(child) === true) {
|
|
79
|
-
parentNode.autosizeNeedsUpdate = true;
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
|
-
/**
|
|
83
|
-
* Calculate the autosize dimensions based on all child bounds
|
|
84
|
-
* @returns Autosize calculation result
|
|
85
|
-
*/
|
|
86
|
-
const calculateAutosize = () => {
|
|
87
|
-
if (isActive === false || childDataMap.size === 0) {
|
|
88
|
-
return { width: 0, height: 0, hasChanged: false };
|
|
89
|
-
}
|
|
90
|
-
let hasAnyChildChanged = false;
|
|
91
|
-
for (const childData of childDataMap.values()) {
|
|
92
|
-
if (childData.hasChanged) {
|
|
93
|
-
hasAnyChildChanged = true;
|
|
94
|
-
break;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
if (hasAnyChildChanged === false) {
|
|
98
|
-
return {
|
|
99
|
-
width: lastWidth,
|
|
100
|
-
height: lastHeight,
|
|
101
|
-
hasChanged: lastHasChanged,
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
let minX = Infinity;
|
|
105
|
-
let minY = Infinity;
|
|
106
|
-
let maxX = -Infinity;
|
|
107
|
-
let maxY = -Infinity;
|
|
108
|
-
for (const [child, childData] of childDataMap) {
|
|
109
|
-
if (!child.isRenderable)
|
|
110
|
-
continue;
|
|
111
|
-
const transform = child.localTransform || Matrix3d.identity();
|
|
112
|
-
const width = childData.width;
|
|
113
|
-
const height = childData.height;
|
|
114
|
-
corners[0].x = 0;
|
|
115
|
-
corners[0].y = 0;
|
|
116
|
-
corners[1].x = width;
|
|
117
|
-
corners[1].y = 0;
|
|
118
|
-
corners[2].x = width;
|
|
119
|
-
corners[2].y = height;
|
|
120
|
-
corners[3].x = 0;
|
|
121
|
-
corners[3].y = height;
|
|
122
|
-
for (let i = 0; i < 4; i++) {
|
|
123
|
-
const corner = corners[i];
|
|
124
|
-
const localX = transform.ta * corner.x + transform.tb * corner.y + transform.tx;
|
|
125
|
-
const localY = transform.tc * corner.x + transform.td * corner.y + transform.ty;
|
|
126
|
-
if (localX < minX)
|
|
127
|
-
minX = localX;
|
|
128
|
-
if (localY < minY)
|
|
129
|
-
minY = localY;
|
|
130
|
-
if (localX > maxX)
|
|
131
|
-
maxX = localX;
|
|
132
|
-
if (localY > maxY)
|
|
133
|
-
maxY = localY;
|
|
134
|
-
}
|
|
135
|
-
childData.hasChanged = false;
|
|
136
|
-
}
|
|
137
|
-
const newWidth = maxX > minX ? maxX - minX : 0;
|
|
138
|
-
const newHeight = maxY > minY ? maxY - minY : 0;
|
|
139
|
-
const dimensionsChanged = lastWidth !== newWidth || lastHeight !== newHeight;
|
|
140
|
-
lastWidth = newWidth;
|
|
141
|
-
lastHeight = newHeight;
|
|
142
|
-
lastHasChanged = dimensionsChanged;
|
|
143
|
-
return {
|
|
144
|
-
width: newWidth,
|
|
145
|
-
height: newHeight,
|
|
146
|
-
hasChanged: dimensionsChanged,
|
|
147
|
-
};
|
|
148
|
-
};
|
|
149
|
-
/**
|
|
150
|
-
* Deactivate this autosize manager and clean up resources
|
|
151
|
-
*/
|
|
152
|
-
const deactivate = () => {
|
|
153
|
-
isActive = false;
|
|
154
|
-
childDataMap.clear();
|
|
155
|
-
};
|
|
156
|
-
return {
|
|
157
|
-
addOrUpdateChild,
|
|
158
|
-
removeChild,
|
|
159
|
-
calculateAutosize,
|
|
160
|
-
deactivate,
|
|
161
|
-
get active() {
|
|
162
|
-
return isActive;
|
|
163
|
-
},
|
|
164
|
-
get childCount() {
|
|
165
|
-
return childDataMap.size;
|
|
166
|
-
},
|
|
167
|
-
};
|
|
168
|
-
}
|
|
169
|
-
//# sourceMappingURL=AutosizeManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AutosizeManager.js","sourceRoot":"","sources":["../../../src/core/AutosizeManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import type { AnimationManager } from './AnimationManager.js';
|
|
2
|
-
import type { PlaybackSettings, StopMethodOptions } from './Playback.js';
|
|
3
|
-
import { type Transition, type TransitionTypes } from './Transition.js';
|
|
4
|
-
import { type TimingFunction } from './utils.js';
|
|
5
|
-
import Playback from './Playback.js';
|
|
6
|
-
export type AnimatableValues = number | number[];
|
|
7
|
-
export type AnimationParams<T> = Partial<PlaybackSettings> & {
|
|
8
|
-
[K in keyof T]?: TransitionTypes;
|
|
9
|
-
};
|
|
10
|
-
export type AnimatableTarget = Record<string, AnimatableValues>;
|
|
11
|
-
export type AnimationSettings = {
|
|
12
|
-
[key: string]: TransitionTypes | boolean | number | string | TimingFunction | StopMethodOptions | undefined;
|
|
13
|
-
} & Partial<PlaybackSettings>;
|
|
14
|
-
export default class Animation extends Playback {
|
|
15
|
-
target: AnimatableTarget;
|
|
16
|
-
transitions: Record<string, Transition[]>;
|
|
17
|
-
transitionKeys: string[];
|
|
18
|
-
constructor(animationManager: AnimationManager, target: AnimatableTarget, animationParams: AnimationSettings);
|
|
19
|
-
updateValues(currentTime: number): void;
|
|
20
|
-
applyStartValues(): void;
|
|
21
|
-
}
|
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
import { createTransition, } from './Transition.js';
|
|
2
|
-
import { normalizeTimingFunction } from './utils.js';
|
|
3
|
-
import Playback, { PlaybackSettingsKeys } from './Playback.js';
|
|
4
|
-
const mapTransitions = (target, animationParams, aDuration, aEasing) => {
|
|
5
|
-
const transitionsByKey = {};
|
|
6
|
-
const keys = Object.keys(animationParams);
|
|
7
|
-
const filteredKeys = [];
|
|
8
|
-
for (let i = 0; i < keys.length; i++) {
|
|
9
|
-
const key = keys[i];
|
|
10
|
-
//skip playback settings
|
|
11
|
-
if (PlaybackSettingsKeys[key] === true) {
|
|
12
|
-
continue;
|
|
13
|
-
}
|
|
14
|
-
transitionsByKey[key] = [];
|
|
15
|
-
filteredKeys.push(key);
|
|
16
|
-
}
|
|
17
|
-
aEasing = aEasing ?? undefined;
|
|
18
|
-
//only initialize these values when needed to avoid unnecessary workload
|
|
19
|
-
let easing;
|
|
20
|
-
let delay;
|
|
21
|
-
let duration;
|
|
22
|
-
let to;
|
|
23
|
-
let from;
|
|
24
|
-
let start;
|
|
25
|
-
let end;
|
|
26
|
-
for (let i = 0; i < filteredKeys.length; i++) {
|
|
27
|
-
const key = filteredKeys[i];
|
|
28
|
-
const prop = target[key];
|
|
29
|
-
if (prop === undefined) {
|
|
30
|
-
console.warn(`CoreAnimation: property "${key}" does not exist on target.`);
|
|
31
|
-
continue;
|
|
32
|
-
}
|
|
33
|
-
const aProp = animationParams[key];
|
|
34
|
-
if (typeof aProp === 'number') {
|
|
35
|
-
transitionsByKey[key].push(createTransition({
|
|
36
|
-
to: aProp,
|
|
37
|
-
from: undefined,
|
|
38
|
-
start: 0,
|
|
39
|
-
end: aDuration,
|
|
40
|
-
delay: 0,
|
|
41
|
-
duration: aDuration,
|
|
42
|
-
easing: aEasing,
|
|
43
|
-
}));
|
|
44
|
-
continue;
|
|
45
|
-
}
|
|
46
|
-
easing = aEasing;
|
|
47
|
-
if (typeof aProp === 'object' && Array.isArray(aProp) === false) {
|
|
48
|
-
delay = aProp.delay ?? 0;
|
|
49
|
-
duration = aProp.duration ?? aDuration;
|
|
50
|
-
from = aProp.from;
|
|
51
|
-
start = delay;
|
|
52
|
-
end = start + duration;
|
|
53
|
-
easing =
|
|
54
|
-
aProp.easing !== undefined
|
|
55
|
-
? normalizeTimingFunction(aProp.easing) ?? easing
|
|
56
|
-
: easing;
|
|
57
|
-
transitionsByKey[key].push(createTransition({
|
|
58
|
-
to: aProp.to,
|
|
59
|
-
from: from,
|
|
60
|
-
start,
|
|
61
|
-
end,
|
|
62
|
-
delay,
|
|
63
|
-
duration,
|
|
64
|
-
easing,
|
|
65
|
-
}));
|
|
66
|
-
continue;
|
|
67
|
-
}
|
|
68
|
-
//keyframed animation
|
|
69
|
-
let frame;
|
|
70
|
-
const isUsableArray = Array.isArray(aProp) && aProp.length > 0;
|
|
71
|
-
//keyframed animation for number arrays
|
|
72
|
-
if (isUsableArray === true) {
|
|
73
|
-
const spreadDuration = aDuration / Math.max(aProp.length - 1, 1);
|
|
74
|
-
start = 0;
|
|
75
|
-
let startValue = aProp[0];
|
|
76
|
-
if (typeof startValue === 'object') {
|
|
77
|
-
frame = aProp[0];
|
|
78
|
-
startValue = frame.to;
|
|
79
|
-
to = startValue;
|
|
80
|
-
from = frame.from;
|
|
81
|
-
duration = frame.duration ?? aDuration;
|
|
82
|
-
delay = frame.delay ?? 0;
|
|
83
|
-
easing =
|
|
84
|
-
frame.easing !== undefined
|
|
85
|
-
? normalizeTimingFunction(frame.easing) ?? easing
|
|
86
|
-
: easing;
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
to = startValue;
|
|
90
|
-
from = startValue;
|
|
91
|
-
duration = aDuration;
|
|
92
|
-
delay = 0;
|
|
93
|
-
}
|
|
94
|
-
start = delay;
|
|
95
|
-
end = start + duration;
|
|
96
|
-
const len = aProp.length;
|
|
97
|
-
if (len > 1) {
|
|
98
|
-
for (let j = 1; j < len; j++) {
|
|
99
|
-
const value = aProp[j];
|
|
100
|
-
if (typeof value === 'object') {
|
|
101
|
-
frame = value;
|
|
102
|
-
to = frame.to;
|
|
103
|
-
from = startValue;
|
|
104
|
-
duration = frame.duration ?? spreadDuration;
|
|
105
|
-
delay = frame.delay ?? 0;
|
|
106
|
-
easing =
|
|
107
|
-
frame.easing !== undefined
|
|
108
|
-
? normalizeTimingFunction(frame.easing) ?? easing
|
|
109
|
-
: easing;
|
|
110
|
-
}
|
|
111
|
-
else {
|
|
112
|
-
to = value;
|
|
113
|
-
from = startValue;
|
|
114
|
-
duration = spreadDuration;
|
|
115
|
-
delay = 0;
|
|
116
|
-
}
|
|
117
|
-
start = start + delay;
|
|
118
|
-
end = start + duration;
|
|
119
|
-
transitionsByKey[key].push(createTransition({
|
|
120
|
-
to,
|
|
121
|
-
from,
|
|
122
|
-
start,
|
|
123
|
-
end,
|
|
124
|
-
delay,
|
|
125
|
-
duration,
|
|
126
|
-
easing,
|
|
127
|
-
}));
|
|
128
|
-
//carry over to next transition
|
|
129
|
-
start = end;
|
|
130
|
-
startValue = to;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
transitionsByKey[key].push(createTransition({
|
|
135
|
-
to,
|
|
136
|
-
from,
|
|
137
|
-
start,
|
|
138
|
-
end,
|
|
139
|
-
delay,
|
|
140
|
-
duration,
|
|
141
|
-
easing,
|
|
142
|
-
}));
|
|
143
|
-
}
|
|
144
|
-
continue;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
return transitionsByKey;
|
|
148
|
-
};
|
|
149
|
-
export default class Animation extends Playback {
|
|
150
|
-
target;
|
|
151
|
-
transitions;
|
|
152
|
-
transitionKeys;
|
|
153
|
-
constructor(animationManager, target, animationParams) {
|
|
154
|
-
super(animationManager, animationParams);
|
|
155
|
-
this.target = target;
|
|
156
|
-
this.transitions = mapTransitions(target, animationParams, this.duration, this.easing);
|
|
157
|
-
this.transitionKeys = Object.keys(this.transitions);
|
|
158
|
-
}
|
|
159
|
-
updateValues(currentTime) {
|
|
160
|
-
for (let i = 0; i < this.transitionKeys.length; i++) {
|
|
161
|
-
const key = this.transitionKeys[i];
|
|
162
|
-
const transitions = this.transitions[key];
|
|
163
|
-
for (let j = 0; j < transitions.length; j++) {
|
|
164
|
-
const transition = transitions[j];
|
|
165
|
-
if (currentTime >= transition.start && currentTime <= transition.end) {
|
|
166
|
-
//apply value to target
|
|
167
|
-
this.target[key] =
|
|
168
|
-
transition.update(currentTime - transition.start);
|
|
169
|
-
continue;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
applyStartValues() {
|
|
175
|
-
//set start values for transitions
|
|
176
|
-
for (let i = 0; i < this.transitionKeys.length; i++) {
|
|
177
|
-
const key = this.transitionKeys[i];
|
|
178
|
-
const transitionsByKey = this.transitions[key];
|
|
179
|
-
//only need to set the first transition's from value
|
|
180
|
-
const firstTransition = transitionsByKey[0];
|
|
181
|
-
const from = firstTransition.from;
|
|
182
|
-
if (from !== undefined) {
|
|
183
|
-
this.target[key] = from;
|
|
184
|
-
firstTransition.current = from;
|
|
185
|
-
firstTransition.from = from;
|
|
186
|
-
continue;
|
|
187
|
-
}
|
|
188
|
-
const currentValue = this.target[key];
|
|
189
|
-
firstTransition.from = currentValue;
|
|
190
|
-
firstTransition.current = currentValue;
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
//# sourceMappingURL=Animation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Animation.js","sourceRoot":"","sources":["../../../../src/core/animations/Animation.ts"],"names":[],"mappings":"AAoBA,OAAO,EACL,gBAAgB,GAIjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAuB,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,QAAQ,EAAE,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAqB/D,MAAM,cAAc,GAAG,CACrB,MAAwB,EACxB,eAAkC,EAClC,SAAiB,EACjB,OAAmC,EACL,EAAE;IAChC,MAAM,gBAAgB,GAAiC,EAAE,CAAC;IAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACrB,wBAAwB;QACxB,IAAI,oBAAoB,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;YACvC,SAAS;QACX,CAAC;QACD,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QAC3B,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,GAAG,OAAO,IAAI,SAAS,CAAC;IAC/B,wEAAwE;IACxE,IAAI,MAAkC,CAAC;IACvC,IAAI,KAAa,CAAC;IAClB,IAAI,QAAgB,CAAC;IACrB,IAAI,EAAmB,CAAC;IACxB,IAAI,IAAiC,CAAC;IACtC,IAAI,KAAa,CAAC;IAClB,IAAI,GAAW,CAAC;IAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CACV,4BAA4B,GAAG,6BAA6B,CAC7D,CAAC;YACF,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAE,CAAC;QAEpC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,gBAAgB,CAAC,GAAG,CAAE,CAAC,IAAI,CACzB,gBAAgB,CAAC;gBACf,EAAE,EAAE,KAAK;gBACT,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,CAAC;gBACR,GAAG,EAAE,SAAS;gBACd,KAAK,EAAE,CAAC;gBACR,QAAQ,EAAE,SAAS;gBACnB,MAAM,EAAE,OAAO;aAChB,CAAC,CACH,CAAC;YACF,SAAS;QACX,CAAC;QAED,MAAM,GAAG,OAAO,CAAC;QAEjB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;YAChE,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;YACzB,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,SAAS,CAAC;YACvC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;YAClB,KAAK,GAAG,KAAK,CAAC;YACd,GAAG,GAAG,KAAK,GAAG,QAAQ,CAAC;YACvB,MAAM;gBACJ,KAAK,CAAC,MAAM,KAAK,SAAS;oBACxB,CAAC,CAAC,uBAAuB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM;oBACjD,CAAC,CAAC,MAAM,CAAC;YAEb,gBAAgB,CAAC,GAAG,CAAE,CAAC,IAAI,CACzB,gBAAgB,CAAC;gBACf,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,IAAI,EAAE,IAAI;gBACV,KAAK;gBACL,GAAG;gBACH,KAAK;gBACL,QAAQ;gBACR,MAAM;aACP,CAAC,CACH,CAAC;YACF,SAAS;QACX,CAAC;QAED,qBAAqB;QACrB,IAAI,KAAwC,CAAC;QAC7C,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/D,uCAAuC;QACvC,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,cAAc,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACjE,KAAK,GAAG,CAAC,CAAC;YACV,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;YAC3B,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;gBACnC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAoB,CAAC;gBACpC,UAAU,GAAG,KAAK,CAAC,EAAE,CAAC;gBACtB,EAAE,GAAG,UAAU,CAAC;gBAChB,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;gBAClB,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,SAAS,CAAC;gBACvC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;gBACzB,MAAM;oBACJ,KAAK,CAAC,MAAM,KAAK,SAAS;wBACxB,CAAC,CAAC,uBAAuB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM;wBACjD,CAAC,CAAC,MAAM,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,EAAE,GAAG,UAAU,CAAC;gBAChB,IAAI,GAAG,UAAU,CAAC;gBAClB,QAAQ,GAAG,SAAS,CAAC;gBACrB,KAAK,GAAG,CAAC,CAAC;YACZ,CAAC;YACD,KAAK,GAAG,KAAK,CAAC;YACd,GAAG,GAAG,KAAK,GAAG,QAAQ,CAAC;YACvB,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;YACzB,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;gBACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;wBAC9B,KAAK,GAAG,KAAwB,CAAC;wBACjC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;wBACd,IAAI,GAAG,UAA6B,CAAC;wBACrC,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,cAAc,CAAC;wBAC5C,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;wBACzB,MAAM;4BACJ,KAAK,CAAC,MAAM,KAAK,SAAS;gCACxB,CAAC,CAAC,uBAAuB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM;gCACjD,CAAC,CAAC,MAAM,CAAC;oBACf,CAAC;yBAAM,CAAC;wBACN,EAAE,GAAG,KAAM,CAAC;wBACZ,IAAI,GAAG,UAA6B,CAAC;wBACrC,QAAQ,GAAG,cAAc,CAAC;wBAC1B,KAAK,GAAG,CAAC,CAAC;oBACZ,CAAC;oBAED,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;oBACtB,GAAG,GAAG,KAAK,GAAG,QAAQ,CAAC;oBAEvB,gBAAgB,CAAC,GAAG,CAAE,CAAC,IAAI,CACzB,gBAAgB,CAAC;wBACf,EAAE;wBACF,IAAI;wBACJ,KAAK;wBACL,GAAG;wBACH,KAAK;wBACL,QAAQ;wBACR,MAAM;qBACP,CAAC,CACH,CAAC;oBACF,+BAA+B;oBAC/B,KAAK,GAAG,GAAG,CAAC;oBACZ,UAAU,GAAG,EAAE,CAAC;gBAClB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,gBAAgB,CAAC,GAAG,CAAE,CAAC,IAAI,CACzB,gBAAgB,CAAC;oBACf,EAAE;oBACF,IAAI;oBACJ,KAAK;oBACL,GAAG;oBACH,KAAK;oBACL,QAAQ;oBACR,MAAM;iBACP,CAAC,CACH,CAAC;YACJ,CAAC;YACD,SAAS;QACX,CAAC;IACH,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,QAAQ;IAC7C,MAAM,CAAmB;IACzB,WAAW,CAA+B;IAC1C,cAAc,CAAW;IAEzB,YACE,gBAAkC,EAClC,MAAwB,EACxB,eAAkC;QAElC,KAAK,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,cAAc,CAC/B,MAAM,EACN,eAAe,EACf,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,MAAM,CACZ,CAAC;QACF,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtD,CAAC;IAEQ,YAAY,CAAC,WAAmB;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAE,CAAC;YACpC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAE,CAAC;YAE3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5C,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAE,CAAC;gBACnC,IAAI,WAAW,IAAI,UAAU,CAAC,KAAK,IAAI,WAAW,IAAI,UAAU,CAAC,GAAG,EAAE,CAAC;oBACrE,uBAAuB;oBAEtB,IAAI,CAAC,MAA2C,CAAC,GAAG,CAAC;wBACpD,UAAU,CAAC,MAAM,CAAC,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;oBACpD,SAAS;gBACX,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAEQ,gBAAgB;QACvB,kCAAkC;QAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAE,CAAC;YACpC,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAiB,CAAC;YAE/D,oDAAoD;YACpD,MAAM,eAAe,GAAG,gBAAgB,CAAC,CAAC,CAAe,CAAC;YAC1D,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC;YAClC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;gBACxB,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;gBAC/B,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC;gBAC5B,SAAS;YACX,CAAC;YACD,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAW,CAAC;YAChD,eAAe,CAAC,IAAI,GAAG,YAAY,CAAC;YACpC,eAAe,CAAC,OAAO,GAAG,YAAY,CAAC;QACzC,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from '../../common/EventEmitter.js';
|
|
2
|
-
import type { AnimationManager } from './AnimationManager.js';
|
|
3
|
-
import { type TimingFunction } from './utils.js';
|
|
4
|
-
export declare enum StopMethodFlags {
|
|
5
|
-
Immediate = 0,
|
|
6
|
-
Reset = 1,
|
|
7
|
-
Reverse = 2
|
|
8
|
-
}
|
|
9
|
-
export type StopMethodOptions = 'reverse' | 'reset' | 'immediate';
|
|
10
|
-
export declare const getStopMethodFlag: (method: string | undefined) => StopMethodFlags;
|
|
11
|
-
export interface PlaybackSettings {
|
|
12
|
-
delay: number;
|
|
13
|
-
duration: number;
|
|
14
|
-
easing: string | TimingFunction;
|
|
15
|
-
loop: boolean;
|
|
16
|
-
repeat: number;
|
|
17
|
-
reverse: boolean;
|
|
18
|
-
stopMethod: StopMethodOptions;
|
|
19
|
-
autoPlay: boolean;
|
|
20
|
-
}
|
|
21
|
-
export declare enum PlaybackState {
|
|
22
|
-
Idle = 0,
|
|
23
|
-
Destroyed = 1,
|
|
24
|
-
Stopped = 2,
|
|
25
|
-
Finished = 3,
|
|
26
|
-
Paused = 4,
|
|
27
|
-
Playing = 5,
|
|
28
|
-
Stopping = 6
|
|
29
|
-
}
|
|
30
|
-
export declare const PlaybackSettingsKeys: {
|
|
31
|
-
delay: boolean;
|
|
32
|
-
duration: boolean;
|
|
33
|
-
easing: boolean;
|
|
34
|
-
loop: boolean;
|
|
35
|
-
repeat: boolean;
|
|
36
|
-
reverse: boolean;
|
|
37
|
-
stopMethod: boolean;
|
|
38
|
-
autoPlay: boolean;
|
|
39
|
-
};
|
|
40
|
-
export declare function getPlaybackId(): number;
|
|
41
|
-
export default class Playback extends EventEmitter {
|
|
42
|
-
readonly animationManager: AnimationManager;
|
|
43
|
-
readonly id: number;
|
|
44
|
-
delay: number;
|
|
45
|
-
duration: number;
|
|
46
|
-
easing: TimingFunction | undefined;
|
|
47
|
-
loop: boolean;
|
|
48
|
-
repeat: number;
|
|
49
|
-
reverse: boolean;
|
|
50
|
-
stopMethod: StopMethodFlags;
|
|
51
|
-
state: PlaybackState;
|
|
52
|
-
startTime: number | null;
|
|
53
|
-
pauseTime: number | null;
|
|
54
|
-
endTime: number | null;
|
|
55
|
-
currentTime: number;
|
|
56
|
-
iteration: number;
|
|
57
|
-
constructor(animationManager: AnimationManager, settings?: Partial<PlaybackSettings>);
|
|
58
|
-
update(currentFrameTime: number): void;
|
|
59
|
-
updateValues(currentTime: number): void;
|
|
60
|
-
applyStartValues(): void;
|
|
61
|
-
start(): this;
|
|
62
|
-
stop(): void;
|
|
63
|
-
finish(): void;
|
|
64
|
-
}
|
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* If not stated otherwise in this file or this component's LICENSE file the
|
|
3
|
-
* following copyright and licenses apply:
|
|
4
|
-
*
|
|
5
|
-
* Copyright 2023 Comcast Cable Communications Management, LLC.
|
|
6
|
-
*
|
|
7
|
-
* Licensed under the Apache License, Version 2.0 (the License);
|
|
8
|
-
* you may not use this file except in compliance with the License.
|
|
9
|
-
* You may obtain a copy of the License at
|
|
10
|
-
*
|
|
11
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
-
*
|
|
13
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
-
* See the License for the specific language governing permissions and
|
|
17
|
-
* limitations under the License.
|
|
18
|
-
*/
|
|
19
|
-
import { EventEmitter } from '../../common/EventEmitter.js';
|
|
20
|
-
import { normalizeTimingFunction } from './utils.js';
|
|
21
|
-
export var StopMethodFlags;
|
|
22
|
-
(function (StopMethodFlags) {
|
|
23
|
-
StopMethodFlags[StopMethodFlags["Immediate"] = 0] = "Immediate";
|
|
24
|
-
StopMethodFlags[StopMethodFlags["Reset"] = 1] = "Reset";
|
|
25
|
-
StopMethodFlags[StopMethodFlags["Reverse"] = 2] = "Reverse";
|
|
26
|
-
})(StopMethodFlags || (StopMethodFlags = {}));
|
|
27
|
-
export const getStopMethodFlag = (method) => {
|
|
28
|
-
if (method === undefined || method === 'immediate') {
|
|
29
|
-
return StopMethodFlags.Immediate;
|
|
30
|
-
}
|
|
31
|
-
switch (method) {
|
|
32
|
-
case 'reverse':
|
|
33
|
-
return StopMethodFlags.Reverse;
|
|
34
|
-
case 'reset':
|
|
35
|
-
return StopMethodFlags.Reset;
|
|
36
|
-
}
|
|
37
|
-
return StopMethodFlags.Immediate;
|
|
38
|
-
};
|
|
39
|
-
export var PlaybackState;
|
|
40
|
-
(function (PlaybackState) {
|
|
41
|
-
PlaybackState[PlaybackState["Idle"] = 0] = "Idle";
|
|
42
|
-
PlaybackState[PlaybackState["Destroyed"] = 1] = "Destroyed";
|
|
43
|
-
PlaybackState[PlaybackState["Stopped"] = 2] = "Stopped";
|
|
44
|
-
PlaybackState[PlaybackState["Finished"] = 3] = "Finished";
|
|
45
|
-
PlaybackState[PlaybackState["Paused"] = 4] = "Paused";
|
|
46
|
-
PlaybackState[PlaybackState["Playing"] = 5] = "Playing";
|
|
47
|
-
PlaybackState[PlaybackState["Stopping"] = 6] = "Stopping";
|
|
48
|
-
})(PlaybackState || (PlaybackState = {}));
|
|
49
|
-
export const PlaybackSettingsKeys = {
|
|
50
|
-
delay: true,
|
|
51
|
-
duration: true,
|
|
52
|
-
easing: true,
|
|
53
|
-
loop: true,
|
|
54
|
-
repeat: true,
|
|
55
|
-
reverse: true,
|
|
56
|
-
stopMethod: true,
|
|
57
|
-
autoPlay: true,
|
|
58
|
-
};
|
|
59
|
-
//freeze the keys object to prevent modification
|
|
60
|
-
Object.freeze(PlaybackSettingsKeys);
|
|
61
|
-
/**
|
|
62
|
-
* Returns a new unique ID
|
|
63
|
-
*/
|
|
64
|
-
let playbackId = 1;
|
|
65
|
-
export function getPlaybackId() {
|
|
66
|
-
return playbackId++;
|
|
67
|
-
}
|
|
68
|
-
export default class Playback extends EventEmitter {
|
|
69
|
-
animationManager;
|
|
70
|
-
//id
|
|
71
|
-
id = getPlaybackId();
|
|
72
|
-
//settings
|
|
73
|
-
delay;
|
|
74
|
-
duration;
|
|
75
|
-
easing;
|
|
76
|
-
loop;
|
|
77
|
-
repeat;
|
|
78
|
-
reverse;
|
|
79
|
-
stopMethod;
|
|
80
|
-
//lifecycle
|
|
81
|
-
state = PlaybackState.Idle;
|
|
82
|
-
startTime = null;
|
|
83
|
-
pauseTime = null;
|
|
84
|
-
endTime = null;
|
|
85
|
-
currentTime = 0;
|
|
86
|
-
iteration = 0;
|
|
87
|
-
constructor(animationManager, settings = {}) {
|
|
88
|
-
super();
|
|
89
|
-
this.animationManager = animationManager;
|
|
90
|
-
this.delay = settings.delay ?? 0;
|
|
91
|
-
this.duration = settings.duration ?? 200;
|
|
92
|
-
this.easing =
|
|
93
|
-
settings.easing !== undefined
|
|
94
|
-
? normalizeTimingFunction(settings.easing)
|
|
95
|
-
: undefined;
|
|
96
|
-
this.loop = settings.loop ?? false;
|
|
97
|
-
this.repeat = settings.repeat ?? 0;
|
|
98
|
-
this.reverse = settings.reverse ?? false;
|
|
99
|
-
this.stopMethod = getStopMethodFlag(settings.stopMethod);
|
|
100
|
-
}
|
|
101
|
-
update(currentFrameTime) {
|
|
102
|
-
let state = this.state;
|
|
103
|
-
let targetTime = currentFrameTime - this.startTime;
|
|
104
|
-
if (targetTime < 0) {
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
if (state === PlaybackState.Stopping) {
|
|
108
|
-
targetTime = this.duration - targetTime;
|
|
109
|
-
}
|
|
110
|
-
if (state === PlaybackState.Playing && targetTime > this.duration) {
|
|
111
|
-
targetTime = this.duration;
|
|
112
|
-
if (this.loop === true) {
|
|
113
|
-
this.iteration++;
|
|
114
|
-
this.startTime = currentFrameTime;
|
|
115
|
-
targetTime = 0;
|
|
116
|
-
if (this.repeat > 0 && this.iteration > this.repeat) {
|
|
117
|
-
this.stop();
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
this.stop();
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
this.currentTime = targetTime;
|
|
125
|
-
this.updateValues(targetTime);
|
|
126
|
-
}
|
|
127
|
-
updateValues(currentTime) { }
|
|
128
|
-
applyStartValues() {
|
|
129
|
-
//needs to be implemented in subclass
|
|
130
|
-
}
|
|
131
|
-
start() {
|
|
132
|
-
const animationManager = this.animationManager;
|
|
133
|
-
this.applyStartValues();
|
|
134
|
-
this.startTime = animationManager.currentFrameTime + this.delay;
|
|
135
|
-
this.endTime = this.startTime + this.duration;
|
|
136
|
-
this.state = PlaybackState.Playing;
|
|
137
|
-
animationManager.register(this);
|
|
138
|
-
this.emit('start');
|
|
139
|
-
return this;
|
|
140
|
-
}
|
|
141
|
-
stop() {
|
|
142
|
-
const stopMethod = this.stopMethod;
|
|
143
|
-
if (stopMethod === StopMethodFlags.Immediate) {
|
|
144
|
-
console.log('Stopping playback immediately');
|
|
145
|
-
this.finish();
|
|
146
|
-
return;
|
|
147
|
-
}
|
|
148
|
-
if (stopMethod === StopMethodFlags.Reset) {
|
|
149
|
-
this.updateValues(0);
|
|
150
|
-
this.finish();
|
|
151
|
-
return;
|
|
152
|
-
}
|
|
153
|
-
if (stopMethod === StopMethodFlags.Reverse) {
|
|
154
|
-
if (this.state === PlaybackState.Playing) {
|
|
155
|
-
this.state = PlaybackState.Stopping;
|
|
156
|
-
//adjust start time to account for current time
|
|
157
|
-
const currentFrameTime = this.animationManager.currentFrameTime;
|
|
158
|
-
const elapsedTime = currentFrameTime - this.startTime;
|
|
159
|
-
this.startTime = currentFrameTime - (this.duration - elapsedTime);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
finish() {
|
|
164
|
-
this.state = PlaybackState.Finished;
|
|
165
|
-
this.emit('finish');
|
|
166
|
-
this.animationManager.unregister(this);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
//# sourceMappingURL=Playback.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Playback.js","sourceRoot":"","sources":["../../../../src/core/animations/Playback.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import type { TimingFunction } from './utils.js';
|
|
2
|
-
export interface TransitionProps {
|
|
3
|
-
to: number | string;
|
|
4
|
-
from?: number | string;
|
|
5
|
-
duration: number;
|
|
6
|
-
start: number;
|
|
7
|
-
end: number;
|
|
8
|
-
delay: number;
|
|
9
|
-
easing?: string | TimingFunction;
|
|
10
|
-
}
|
|
11
|
-
export interface Transition {
|
|
12
|
-
to: number;
|
|
13
|
-
from?: number;
|
|
14
|
-
current?: number;
|
|
15
|
-
duration: number;
|
|
16
|
-
start: number;
|
|
17
|
-
end: number;
|
|
18
|
-
delay: number;
|
|
19
|
-
easing?: TimingFunction;
|
|
20
|
-
update: (animationTime: number) => number;
|
|
21
|
-
progressFn: (p: number) => number;
|
|
22
|
-
}
|
|
23
|
-
export type TransitionTypes = TransitionProps | number | string | (TransitionProps | number | string)[];
|
|
24
|
-
export declare function easedProgressFn(this: Required<Transition>, p: number): number;
|
|
25
|
-
export declare function linearProgressFn(this: Required<Transition>, p: number): number;
|
|
26
|
-
export declare function updateTransition(this: Required<Transition>, animationTime: number): number;
|
|
27
|
-
export declare function createTransition(props: TransitionProps): Transition;
|