chnobli 0.1.9 → 0.1.11
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/animation/Animation.d.ts +37 -0
- package/dist/animation/Animation.d.ts.map +1 -0
- package/dist/animation/Animation.js +232 -0
- package/dist/animation/Animation.js.map +1 -0
- package/dist/animation/public.d.ts +68 -0
- package/dist/animation/public.d.ts.map +1 -0
- package/dist/animation/public.js +115 -0
- package/dist/animation/public.js.map +1 -0
- package/dist/animator/Animator.d.ts +30 -0
- package/dist/animator/Animator.d.ts.map +1 -0
- package/dist/animator/Animator.js +97 -0
- package/dist/animator/Animator.js.map +1 -0
- package/dist/animator/index.d.ts +5 -0
- package/dist/animator/index.d.ts.map +1 -0
- package/dist/animator/index.js +53 -0
- package/dist/animator/index.js.map +1 -0
- package/dist/animator/public.d.ts +16 -0
- package/dist/animator/public.d.ts.map +1 -0
- package/dist/animator/public.js +50 -0
- package/dist/animator/public.js.map +1 -0
- package/dist/chnobli.d.ts +15 -0
- package/dist/chnobli.d.ts.map +1 -0
- package/dist/chnobli.js +59 -0
- package/dist/chnobli.js.map +1 -0
- package/dist/property/BasicProperty.d.ts +38 -0
- package/dist/property/BasicProperty.d.ts.map +1 -0
- package/dist/property/BasicProperty.js +72 -0
- package/dist/property/BasicProperty.js.map +1 -0
- package/dist/property/ClassProperty.d.ts +32 -0
- package/dist/property/ClassProperty.d.ts.map +1 -0
- package/dist/property/ClassProperty.js +108 -0
- package/dist/property/ClassProperty.js.map +1 -0
- package/dist/property/Property.d.ts +13 -0
- package/dist/property/Property.d.ts.map +1 -0
- package/dist/property/Property.js +22 -0
- package/dist/property/Property.js.map +1 -0
- package/dist/property/StyleProperty.d.ts +25 -0
- package/dist/property/StyleProperty.d.ts.map +1 -0
- package/dist/property/StyleProperty.js +221 -0
- package/dist/property/StyleProperty.js.map +1 -0
- package/dist/property/TransformProperty.d.ts +15 -0
- package/dist/property/TransformProperty.d.ts.map +1 -0
- package/dist/property/TransformProperty.js +43 -0
- package/dist/property/TransformProperty.js.map +1 -0
- package/dist/property/TransformXYProperty.d.ts +28 -0
- package/dist/property/TransformXYProperty.d.ts.map +1 -0
- package/dist/property/TransformXYProperty.js +65 -0
- package/dist/property/TransformXYProperty.js.map +1 -0
- package/dist/responsive/ResponsiveEvent.d.ts +17 -0
- package/dist/responsive/ResponsiveEvent.d.ts.map +1 -0
- package/dist/responsive/ResponsiveEvent.js +45 -0
- package/dist/responsive/ResponsiveEvent.js.map +1 -0
- package/dist/responsive/TestEvent.d.ts +11 -0
- package/dist/responsive/TestEvent.d.ts.map +1 -0
- package/dist/responsive/TestEvent.js +26 -0
- package/dist/responsive/TestEvent.js.map +1 -0
- package/dist/scroll/Scroll.d.ts +61 -0
- package/dist/scroll/Scroll.d.ts.map +1 -0
- package/dist/scroll/Scroll.js +280 -0
- package/dist/scroll/Scroll.js.map +1 -0
- package/dist/scroll/ScrollEvent.d.ts +17 -0
- package/dist/scroll/ScrollEvent.d.ts.map +1 -0
- package/dist/scroll/ScrollEvent.js +40 -0
- package/dist/scroll/ScrollEvent.js.map +1 -0
- package/dist/scroll/index.d.ts +8 -0
- package/dist/scroll/index.d.ts.map +1 -0
- package/dist/scroll/index.js +9 -0
- package/dist/scroll/index.js.map +1 -0
- package/dist/scroll/public.d.ts +35 -0
- package/dist/scroll/public.d.ts.map +1 -0
- package/dist/scroll/public.js +50 -0
- package/dist/scroll/public.js.map +1 -0
- package/dist/stagger/stagger.d.ts +20 -0
- package/dist/stagger/stagger.d.ts.map +1 -0
- package/dist/stagger/stagger.js +43 -0
- package/dist/stagger/stagger.js.map +1 -0
- package/dist/target/BaseTarget.old.d.ts +33 -0
- package/dist/target/BaseTarget.old.d.ts.map +1 -0
- package/dist/target/BaseTarget.old.js +73 -0
- package/dist/target/BaseTarget.old.js.map +1 -0
- package/dist/target/DomTarget.d.ts +41 -0
- package/dist/target/DomTarget.d.ts.map +1 -0
- package/dist/target/DomTarget.js +230 -0
- package/dist/target/DomTarget.js.map +1 -0
- package/dist/target/ObjectTarget.d.ts +31 -0
- package/dist/target/ObjectTarget.d.ts.map +1 -0
- package/dist/target/ObjectTarget.js +108 -0
- package/dist/target/ObjectTarget.js.map +1 -0
- package/dist/target/Target.d.ts +25 -0
- package/dist/target/Target.d.ts.map +1 -0
- package/dist/target/Target.js +25 -0
- package/dist/target/Target.js.map +1 -0
- package/dist/target/TestDomNode.d.ts +14 -0
- package/dist/target/TestDomNode.d.ts.map +1 -0
- package/dist/target/TestDomNode.js +55 -0
- package/dist/target/TestDomNode.js.map +1 -0
- package/dist/timeline/Nested.d.ts +30 -0
- package/dist/timeline/Nested.d.ts.map +1 -0
- package/dist/timeline/Nested.js +51 -0
- package/dist/timeline/Nested.js.map +1 -0
- package/dist/timeline/Timeline.d.ts +42 -0
- package/dist/timeline/Timeline.d.ts.map +1 -0
- package/dist/timeline/Timeline.js +306 -0
- package/dist/timeline/Timeline.js.map +1 -0
- package/dist/timeline/public.d.ts +167 -0
- package/dist/timeline/public.d.ts.map +1 -0
- package/dist/timeline/public.js +396 -0
- package/dist/timeline/public.js.map +1 -0
- package/dist/timing/AnimationFrameTicker.d.ts +32 -0
- package/dist/timing/AnimationFrameTicker.d.ts.map +1 -0
- package/dist/timing/AnimationFrameTicker.js +138 -0
- package/dist/timing/AnimationFrameTicker.js.map +1 -0
- package/dist/timing/Ease.d.ts +6 -0
- package/dist/timing/Ease.d.ts.map +1 -0
- package/dist/timing/Ease.js +15 -0
- package/dist/timing/Ease.js.map +1 -0
- package/dist/timing/TestTicker.d.ts +19 -0
- package/dist/timing/TestTicker.d.ts.map +1 -0
- package/dist/timing/TestTicker.js +85 -0
- package/dist/timing/TestTicker.js.map +1 -0
- package/dist/timing/Ticker.d.ts +16 -0
- package/dist/timing/Ticker.d.ts.map +1 -0
- package/dist/timing/Ticker.js +2 -0
- package/dist/timing/Ticker.js.map +1 -0
- package/dist/timing/Timing.d.ts +116 -0
- package/dist/timing/Timing.d.ts.map +1 -0
- package/dist/timing/Timing.js +310 -0
- package/dist/timing/Timing.js.map +1 -0
- package/dist/timing/easing.d.ts +158 -0
- package/dist/timing/easing.d.ts.map +1 -0
- package/dist/timing/easing.js +273 -0
- package/dist/timing/easing.js.map +1 -0
- package/dist/utils/Events.d.ts +9 -0
- package/dist/utils/Events.d.ts.map +1 -0
- package/dist/utils/Events.js +35 -0
- package/dist/utils/Events.js.map +1 -0
- package/dist/utils/internal.d.ts +5 -0
- package/dist/utils/internal.d.ts.map +1 -0
- package/dist/utils/internal.js +9 -0
- package/dist/utils/internal.js.map +1 -0
- package/dist/utils/motionpath.d.ts +16 -0
- package/dist/utils/motionpath.d.ts.map +1 -0
- package/dist/utils/motionpath.js +41 -0
- package/dist/utils/motionpath.js.map +1 -0
- package/dist/utils/utils.d.ts +44 -0
- package/dist/utils/utils.d.ts.map +1 -0
- package/dist/utils/utils.js +88 -0
- package/dist/utils/utils.js.map +1 -0
- package/dist/values/ColorValue.d.ts +12 -0
- package/dist/values/ColorValue.d.ts.map +1 -0
- package/dist/values/ColorValue.js +134 -0
- package/dist/values/ColorValue.js.map +1 -0
- package/dist/values/StyleValue.d.ts +41 -0
- package/dist/values/StyleValue.d.ts.map +1 -0
- package/dist/values/StyleValue.js +159 -0
- package/dist/values/StyleValue.js.map +1 -0
- package/dist/values/Value.d.ts +13 -0
- package/dist/values/Value.d.ts.map +1 -0
- package/dist/values/Value.js +38 -0
- package/dist/values/Value.js.map +1 -0
- package/dist/values/defaultcolors.d.ts +2 -0
- package/dist/values/defaultcolors.d.ts.map +1 -0
- package/dist/values/defaultcolors.js +149 -0
- package/dist/values/defaultcolors.js.map +1 -0
- package/eslint.config.js +23 -0
- package/package.json +10 -3
- package/src/animation/Animation.ts +6 -3
- package/src/animator/Animator.ts +130 -0
- package/src/animator/index.ts +56 -0
- package/src/animator/public.ts +66 -0
- package/src/chnobli.ts +3 -2
- package/src/property/ClassProperty.ts +1 -1
- package/src/property/TransformXYProperty.ts +1 -1
- package/src/scroll/Scroll.ts +202 -51
- package/src/scroll/ScrollEvent.ts +1 -0
- package/src/scroll/index.ts +3 -0
- package/src/scroll/public.ts +35 -2
- package/src/target/DomTarget.ts +1 -1
- package/src/target/ObjectTarget.ts +19 -13
- package/src/tests/properties.test.ts +44 -3
- package/src/tests/timeline.test.ts +1 -1
- package/src/tests/timing.test.ts +32 -0
- package/src/tests/usecases.test.ts +40 -2
- package/src/tests/values.test.ts +9 -9
- package/src/timeline/Timeline.ts +5 -4
- package/src/timeline/public.ts +34 -12
- package/src/timing/AnimationFrameTicker.ts +6 -1
- package/src/timing/TestTicker.ts +7 -1
- package/src/timing/Ticker.ts +5 -1
- package/src/timing/Timing.ts +127 -91
- package/src/utils/Events.ts +1 -1
- package/src/utils/motionpath.ts +5 -5
- package/src/utils/utils.ts +0 -10
- package/src/values/ColorValue.ts +1 -0
- package/src/values/Value.ts +1 -1
- package/.eslintrc.cjs +0 -39
- package/src/animator.js +0 -187
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import Timing from '../timing/Timing.js';
|
|
2
|
+
import Property from '../property/Property.js';
|
|
3
|
+
import Ticker from '../timing/Ticker.js';
|
|
4
|
+
import { Target } from '../target/Target.js';
|
|
5
|
+
import { DestroyOptions } from '../timeline/public.js';
|
|
6
|
+
export default class Animation {
|
|
7
|
+
timing: Timing;
|
|
8
|
+
target: Target;
|
|
9
|
+
props: Record<string, PropertyAnimation<any>>;
|
|
10
|
+
private _ticker;
|
|
11
|
+
private _prevTimingState;
|
|
12
|
+
private _props;
|
|
13
|
+
private _initialized;
|
|
14
|
+
constructor(target: any, ticker: Ticker, props?: Record<string, any>);
|
|
15
|
+
advance(change: number): void;
|
|
16
|
+
seekMs(ms: number): void;
|
|
17
|
+
seek(pos: number): void;
|
|
18
|
+
isFinite(): boolean;
|
|
19
|
+
get duration(): number;
|
|
20
|
+
init(reset?: boolean): void;
|
|
21
|
+
render(): void;
|
|
22
|
+
destroy(opts: DestroyOptions): void;
|
|
23
|
+
}
|
|
24
|
+
declare class PropertyAnimation<V> {
|
|
25
|
+
prop: Property<V>;
|
|
26
|
+
private staticValueFn;
|
|
27
|
+
private valueFn;
|
|
28
|
+
private iniResponsive;
|
|
29
|
+
private iniFrom;
|
|
30
|
+
private iniTo;
|
|
31
|
+
constructor(prop: string, value: any, animation: Animation);
|
|
32
|
+
init(target: Target): void;
|
|
33
|
+
restoreBefore(target: Target): void;
|
|
34
|
+
render(pos: number, target: Target): void;
|
|
35
|
+
}
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=Animation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Animation.d.ts","sourceRoot":"","sources":["../../src/animation/Animation.ts"],"names":[],"mappings":"AAAA,OAAO,MAIN,MAAM,qBAAqB,CAAC;AAE7B,OAAO,QAAyC,MAAM,yBAAyB,CAAC;AAChF,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,CAAC,OAAO,OAAO,SAAS;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;IAE9C,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,YAAY,CAAU;gBAKlB,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;IAiBxE,OAAO,CAAC,MAAM,EAAE,MAAM;IAKtB,MAAM,CAAC,EAAE,EAAE,MAAM;IAKjB,IAAI,CAAC,GAAG,EAAE,MAAM;IAKhB,QAAQ,IAAI,OAAO;IAInB,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,CAAC,KAAK,UAAQ;IASlB,MAAM;IAwBN,OAAO,CAAC,IAAI,EAAE,cAAc;CAS5B;AAOD,cAAM,iBAAiB,CAAC,CAAC;IACxB,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAElB,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,OAAO,CAA2C;IAE1D,OAAO,CAAC,aAAa,CAAM;IAE3B,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,KAAK,CAAW;gBAEZ,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS;IAoC1D,IAAI,CAAC,MAAM,EAAE,MAAM;IAiDnB,aAAa,CAAC,MAAM,EAAE,MAAM;IAK5B,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAQlC"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { newTiming, STATE_BEFORE, STATE_AFTER, } from '../timing/Timing.js';
|
|
2
|
+
import { newProperty } from '../property/Property.js';
|
|
3
|
+
export default class Animation {
|
|
4
|
+
timing;
|
|
5
|
+
target;
|
|
6
|
+
props;
|
|
7
|
+
_ticker;
|
|
8
|
+
_prevTimingState;
|
|
9
|
+
_props;
|
|
10
|
+
_initialized;
|
|
11
|
+
/*
|
|
12
|
+
props
|
|
13
|
+
*/
|
|
14
|
+
constructor(target, ticker, props = {}) {
|
|
15
|
+
this.timing = newTiming(props);
|
|
16
|
+
this._ticker = ticker;
|
|
17
|
+
this.target = ticker.registerTarget(target);
|
|
18
|
+
this._prevTimingState = this.timing.state;
|
|
19
|
+
this._props = [];
|
|
20
|
+
this._initialized = false;
|
|
21
|
+
this.props = {};
|
|
22
|
+
for (const prop in props) {
|
|
23
|
+
this.props[prop] = new PropertyAnimation(prop, props[prop], this);
|
|
24
|
+
this._props.push(this.props[prop]);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
advance(change) {
|
|
28
|
+
this._prevTimingState = this.timing.state;
|
|
29
|
+
this.timing.advance(change);
|
|
30
|
+
}
|
|
31
|
+
seekMs(ms) {
|
|
32
|
+
this._prevTimingState = this.timing.state;
|
|
33
|
+
this.timing.seekMs(ms);
|
|
34
|
+
}
|
|
35
|
+
seek(pos) {
|
|
36
|
+
this._prevTimingState = this.timing.state;
|
|
37
|
+
this.timing.seek(pos);
|
|
38
|
+
}
|
|
39
|
+
isFinite() {
|
|
40
|
+
return this.timing.isFinite();
|
|
41
|
+
}
|
|
42
|
+
get duration() {
|
|
43
|
+
return this.timing.duration;
|
|
44
|
+
}
|
|
45
|
+
init(reset = false) {
|
|
46
|
+
if (this._initialized && !reset)
|
|
47
|
+
return;
|
|
48
|
+
this._initialized = true;
|
|
49
|
+
for (const prop of this._props) {
|
|
50
|
+
prop.init(this.target);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
render() {
|
|
54
|
+
if (this.timing.state === STATE_BEFORE) {
|
|
55
|
+
// console.log('render before');
|
|
56
|
+
for (const prop of this._props) {
|
|
57
|
+
prop.restoreBefore(this.target);
|
|
58
|
+
}
|
|
59
|
+
// to render before we need to remove
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
else if (this.timing.state === STATE_AFTER) {
|
|
63
|
+
// console.log('render after');
|
|
64
|
+
// return;
|
|
65
|
+
}
|
|
66
|
+
const pos = this.timing.position;
|
|
67
|
+
// now render
|
|
68
|
+
for (const prop of this._props) {
|
|
69
|
+
prop.render(pos, this.target);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
destroy(opts) {
|
|
73
|
+
if (!opts.keepValues) {
|
|
74
|
+
for (const prop of this._props) {
|
|
75
|
+
prop.restoreBefore(this.target);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
this._ticker.unregisterTarget(this.target.inner());
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function maybeResponsiveValue(prop, val) {
|
|
82
|
+
if (typeof val === 'object' && 'responsive' in val)
|
|
83
|
+
return val.responsive;
|
|
84
|
+
return prop.parseValue(val);
|
|
85
|
+
}
|
|
86
|
+
class PropertyAnimation {
|
|
87
|
+
prop;
|
|
88
|
+
staticValueFn;
|
|
89
|
+
valueFn;
|
|
90
|
+
iniResponsive;
|
|
91
|
+
// todo i don't think the types match here?
|
|
92
|
+
iniFrom;
|
|
93
|
+
iniTo;
|
|
94
|
+
constructor(prop, value, animation) {
|
|
95
|
+
this.prop = newProperty(prop, animation.target.type());
|
|
96
|
+
// we will get the from the targets
|
|
97
|
+
this.staticValueFn = false;
|
|
98
|
+
this.valueFn = null;
|
|
99
|
+
this.iniResponsive = null;
|
|
100
|
+
this.iniFrom = null;
|
|
101
|
+
this.iniTo = null;
|
|
102
|
+
if (typeof value === 'object') {
|
|
103
|
+
if ('from' in value)
|
|
104
|
+
this.iniFrom = maybeResponsiveValue(this.prop, value.from);
|
|
105
|
+
if ('to' in value)
|
|
106
|
+
this.iniTo = maybeResponsiveValue(this.prop, value.to);
|
|
107
|
+
if ('responsive' in value)
|
|
108
|
+
this.iniResponsive = value.responsive;
|
|
109
|
+
if (!this.iniFrom && !this.iniTo && !this.iniResponsive)
|
|
110
|
+
throw new Error('from or to expected');
|
|
111
|
+
}
|
|
112
|
+
else if (typeof value === 'function') {
|
|
113
|
+
if (!this.prop.allowsValueFn()) {
|
|
114
|
+
throw new Error('prop ' + prop + ' does not allow value functions');
|
|
115
|
+
}
|
|
116
|
+
this.staticValueFn = true;
|
|
117
|
+
this.valueFn = value;
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
this.iniTo = this.prop.parseValue(value);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// calculate from and to position
|
|
124
|
+
init(target) {
|
|
125
|
+
// there is nothing to initialize since on every render we call the
|
|
126
|
+
// value Fn
|
|
127
|
+
if (this.staticValueFn)
|
|
128
|
+
return;
|
|
129
|
+
this.valueFn = null;
|
|
130
|
+
let from = null;
|
|
131
|
+
let to = null;
|
|
132
|
+
// init via responsive fn
|
|
133
|
+
if (this.iniResponsive) {
|
|
134
|
+
const value = this.iniResponsive(target.inner());
|
|
135
|
+
if (typeof value === 'object') {
|
|
136
|
+
if ('from' in value)
|
|
137
|
+
from = this.prop.parseValue(value.from);
|
|
138
|
+
if ('to' in value)
|
|
139
|
+
to = this.prop.parseValue(value.to);
|
|
140
|
+
if (!from && !to)
|
|
141
|
+
throw new Error('from or to expected');
|
|
142
|
+
}
|
|
143
|
+
else if (typeof value === 'function') {
|
|
144
|
+
if (!this.prop.allowsValueFn()) {
|
|
145
|
+
throw new Error(`prop ${this.prop.name} does not allow value functions`);
|
|
146
|
+
}
|
|
147
|
+
this.valueFn = value;
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
to = this.prop.parseValue(value);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// init from
|
|
155
|
+
if (!from) {
|
|
156
|
+
if (typeof this.iniFrom === 'function')
|
|
157
|
+
from = this.prop.parseValue(this.iniFrom(target.inner()));
|
|
158
|
+
else
|
|
159
|
+
from = this.iniFrom;
|
|
160
|
+
}
|
|
161
|
+
// init to
|
|
162
|
+
if (!to) {
|
|
163
|
+
if (typeof this.iniTo === 'function')
|
|
164
|
+
to = this.prop.parseValue(this.iniTo(target.inner()));
|
|
165
|
+
else
|
|
166
|
+
to = this.iniTo;
|
|
167
|
+
}
|
|
168
|
+
this.prop.init(target, from, to);
|
|
169
|
+
}
|
|
170
|
+
restoreBefore(target) {
|
|
171
|
+
// todo this might not be enough
|
|
172
|
+
this.prop.removeValue(target);
|
|
173
|
+
}
|
|
174
|
+
render(pos, target) {
|
|
175
|
+
if (this.valueFn) {
|
|
176
|
+
this.prop.setValue(target, this.prop.parseValue(this.valueFn(pos)));
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
this.prop.setValue(target, this.prop.interpolate(pos));
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/*
|
|
183
|
+
|
|
184
|
+
animate(target, {
|
|
185
|
+
|
|
186
|
+
// special
|
|
187
|
+
// translate
|
|
188
|
+
x
|
|
189
|
+
y
|
|
190
|
+
scale
|
|
191
|
+
scaleX
|
|
192
|
+
scaleY
|
|
193
|
+
rotation
|
|
194
|
+
skew
|
|
195
|
+
skewX
|
|
196
|
+
skewY
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
// stagger
|
|
201
|
+
repeatDelay
|
|
202
|
+
stagger: {
|
|
203
|
+
// wrap advanced options in an object
|
|
204
|
+
each: 0.1,
|
|
205
|
+
from: "center",
|
|
206
|
+
grid: "auto",
|
|
207
|
+
ease: "power2.inOut",
|
|
208
|
+
repeat: -1, // Repeats immediately, not waiting for the other staggered animations to finish
|
|
209
|
+
},
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
ease,
|
|
213
|
+
duration,
|
|
214
|
+
repeat, true|false|0-x
|
|
215
|
+
repeatDelay?
|
|
216
|
+
delay,
|
|
217
|
+
alternate
|
|
218
|
+
})
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
const tl new Timeline;
|
|
222
|
+
|
|
223
|
+
tl.add([
|
|
224
|
+
animation()
|
|
225
|
+
], 100)
|
|
226
|
+
|
|
227
|
+
tl.addGroup()
|
|
228
|
+
|
|
229
|
+
tl.add()
|
|
230
|
+
|
|
231
|
+
*/
|
|
232
|
+
//# sourceMappingURL=Animation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Animation.js","sourceRoot":"","sources":["../../src/animation/Animation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import Stagger from '../stagger/stagger.js';
|
|
2
|
+
import { Targets } from '../chnobli.js';
|
|
3
|
+
export type AnimationProps = {
|
|
4
|
+
autoplay?: boolean;
|
|
5
|
+
delay?: number | string | Stagger<number | string>;
|
|
6
|
+
ease?: (t: number) => number;
|
|
7
|
+
onStart?: () => void;
|
|
8
|
+
onEnd?: () => void;
|
|
9
|
+
[key: string]: any;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* The animation consist of a timeline with just one animation
|
|
13
|
+
* This allows to reuse a lot of code
|
|
14
|
+
*
|
|
15
|
+
* ## Props
|
|
16
|
+
*
|
|
17
|
+
*/
|
|
18
|
+
export default class PublicAnimation {
|
|
19
|
+
private _tl;
|
|
20
|
+
constructor(targets: Targets, props?: AnimationProps);
|
|
21
|
+
play(): void;
|
|
22
|
+
pause(): void;
|
|
23
|
+
/**
|
|
24
|
+
* Seeks to a position in the timeline
|
|
25
|
+
*/
|
|
26
|
+
seekMs(ms: number): void;
|
|
27
|
+
/**
|
|
28
|
+
* Seeks to a normalized position in the timeline
|
|
29
|
+
*
|
|
30
|
+
* @param pos = number between 0 and 1
|
|
31
|
+
*/
|
|
32
|
+
seek(pos: number): void;
|
|
33
|
+
/**
|
|
34
|
+
* Resets the current timeline to the start
|
|
35
|
+
* without changing anything
|
|
36
|
+
*/
|
|
37
|
+
reset(): void;
|
|
38
|
+
/**
|
|
39
|
+
* Resets every used prop to it's previous value
|
|
40
|
+
*/
|
|
41
|
+
resetProps(): void;
|
|
42
|
+
/**
|
|
43
|
+
* Recalculates all values this should be called for example after a resize
|
|
44
|
+
*/
|
|
45
|
+
update(): void;
|
|
46
|
+
/**
|
|
47
|
+
* Returns wether the timeline is set to reversed
|
|
48
|
+
*/
|
|
49
|
+
isReversed(): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Set's the timeline to a specific direction
|
|
52
|
+
*/
|
|
53
|
+
setReversed(reversed: boolean): void;
|
|
54
|
+
/**
|
|
55
|
+
* Reverses the order of the current timeline
|
|
56
|
+
*/
|
|
57
|
+
reverse(): void;
|
|
58
|
+
/**
|
|
59
|
+
* @returns a function to call to unregister the event
|
|
60
|
+
*/
|
|
61
|
+
on(event: string, fn: (...args: any[]) => void): () => void;
|
|
62
|
+
onPromise(event: string): Promise<unknown>;
|
|
63
|
+
/**
|
|
64
|
+
* Destroys this timeline and resets all props
|
|
65
|
+
*/
|
|
66
|
+
destroy(): void;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=public.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../src/animation/public.ts"],"names":[],"mappings":"AAEA,OAAO,OAAuB,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,MAAM,cAAc,GAAG;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAEnD,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAE7B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IAGnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACnB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,eAAe;IACnC,OAAO,CAAC,GAAG,CAAW;gBAEV,OAAO,EAAE,OAAO,EAAE,KAAK,GAAE,cAAmB;IA0CxD,IAAI;IAIJ,KAAK;IAIL;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM;IAIjB;;;;OAIG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM;IAIhB;;;OAGG;IACH,KAAK;IAIL;;OAEG;IACH,UAAU;IAIV;;OAEG;IACH,MAAM;IAIN;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,OAAO;IAI7B;;OAEG;IACH,OAAO;IAIP;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,MAAM,IAAI;IAK3D,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI1C;;OAEG;IACH,OAAO;CAKP"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { takeProp } from '../utils/internal.js';
|
|
2
|
+
import Timeline from '../timeline/public.js';
|
|
3
|
+
import { staggerMap } from '../stagger/stagger.js';
|
|
4
|
+
/**
|
|
5
|
+
* The animation consist of a timeline with just one animation
|
|
6
|
+
* This allows to reuse a lot of code
|
|
7
|
+
*
|
|
8
|
+
* ## Props
|
|
9
|
+
*
|
|
10
|
+
*/
|
|
11
|
+
export default class PublicAnimation {
|
|
12
|
+
_tl;
|
|
13
|
+
constructor(targets, props = {}) {
|
|
14
|
+
const autoplay = parseAutoplay(takeProp(props, 'autoplay', true));
|
|
15
|
+
const delay = takeProp(props, 'delay', 0);
|
|
16
|
+
// we don't wan't the ease and duration on the timeline
|
|
17
|
+
const ease = takeProp(props, 'ease', undefined);
|
|
18
|
+
const duration = takeProp(props, 'duration', undefined);
|
|
19
|
+
this._tl = new Timeline(props);
|
|
20
|
+
// events
|
|
21
|
+
const onStart = takeProp(props, 'onStart', undefined);
|
|
22
|
+
if (onStart)
|
|
23
|
+
this._tl.on('start', onStart);
|
|
24
|
+
// events
|
|
25
|
+
const onEnd = takeProp(props, 'onEnd', undefined);
|
|
26
|
+
if (onEnd)
|
|
27
|
+
this._tl.on('end', onEnd);
|
|
28
|
+
props.ease = ease;
|
|
29
|
+
props.duration = duration;
|
|
30
|
+
this._tl.add(targets, props, staggerMap(delay, v => '+=' + v));
|
|
31
|
+
if (autoplay)
|
|
32
|
+
this._tl.play();
|
|
33
|
+
}
|
|
34
|
+
play() {
|
|
35
|
+
this._tl.play();
|
|
36
|
+
}
|
|
37
|
+
pause() {
|
|
38
|
+
this._tl.pause();
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Seeks to a position in the timeline
|
|
42
|
+
*/
|
|
43
|
+
seekMs(ms) {
|
|
44
|
+
this._tl.seekMs(ms);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Seeks to a normalized position in the timeline
|
|
48
|
+
*
|
|
49
|
+
* @param pos = number between 0 and 1
|
|
50
|
+
*/
|
|
51
|
+
seek(pos) {
|
|
52
|
+
this._tl.seek(pos);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Resets the current timeline to the start
|
|
56
|
+
* without changing anything
|
|
57
|
+
*/
|
|
58
|
+
reset() {
|
|
59
|
+
this._tl.reset();
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Resets every used prop to it's previous value
|
|
63
|
+
*/
|
|
64
|
+
resetProps() {
|
|
65
|
+
this._tl.resetProps();
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Recalculates all values this should be called for example after a resize
|
|
69
|
+
*/
|
|
70
|
+
update() {
|
|
71
|
+
this._tl.update();
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Returns wether the timeline is set to reversed
|
|
75
|
+
*/
|
|
76
|
+
isReversed() {
|
|
77
|
+
return this._tl.isReversed();
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Set's the timeline to a specific direction
|
|
81
|
+
*/
|
|
82
|
+
setReversed(reversed) {
|
|
83
|
+
this._tl.setReversed(reversed);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Reverses the order of the current timeline
|
|
87
|
+
*/
|
|
88
|
+
reverse() {
|
|
89
|
+
this._tl.reverse();
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* @returns a function to call to unregister the event
|
|
93
|
+
*/
|
|
94
|
+
on(event, fn) {
|
|
95
|
+
return this._tl.on(event, fn);
|
|
96
|
+
}
|
|
97
|
+
// not wroking
|
|
98
|
+
onPromise(event) {
|
|
99
|
+
return this._tl.onPromise(event);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Destroys this timeline and resets all props
|
|
103
|
+
*/
|
|
104
|
+
destroy() {
|
|
105
|
+
this._tl.destroy();
|
|
106
|
+
// @ts-ignore
|
|
107
|
+
this._tl = null;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
function parseAutoplay(autoplay) {
|
|
111
|
+
if (autoplay !== true && autoplay !== false)
|
|
112
|
+
throw new Error('autoplay needs to be true|false');
|
|
113
|
+
return autoplay;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=public.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public.js","sourceRoot":"","sources":["../../src/animation/public.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import Property from '../property/Property.js';
|
|
2
|
+
import { Target } from '../target/Target.js';
|
|
3
|
+
import Ticker from '../timing/Ticker.js';
|
|
4
|
+
import Timing from '../timing/Timing.js';
|
|
5
|
+
export type Settings = {
|
|
6
|
+
duration: number;
|
|
7
|
+
ease?: (t: number) => number;
|
|
8
|
+
};
|
|
9
|
+
export default class Animator {
|
|
10
|
+
setts: Settings;
|
|
11
|
+
target: Target;
|
|
12
|
+
private props;
|
|
13
|
+
private ticker;
|
|
14
|
+
constructor(target: any, ticker: Ticker, setts: Settings);
|
|
15
|
+
private getProp;
|
|
16
|
+
set(props: Record<string, any>): void;
|
|
17
|
+
to(props: Record<string, any>, duration?: number): void;
|
|
18
|
+
_tick(change: number): boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare class PropertyAnimator<V> {
|
|
21
|
+
prop: Property<V>;
|
|
22
|
+
timing: Timing;
|
|
23
|
+
private initialized;
|
|
24
|
+
constructor(prop: string, setts: Settings, target: Target);
|
|
25
|
+
set(target: Target, value: any): void;
|
|
26
|
+
to(target: Target, value: any, duration?: number): void;
|
|
27
|
+
advance(change: number): void;
|
|
28
|
+
render(target: Target): void;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=Animator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Animator.d.ts","sourceRoot":"","sources":["../../src/animator/Animator.ts"],"names":[],"mappings":"AAAA,OAAO,QAAyB,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,MAAM,MAAM,qBAAqB,CAAC;AACzC,OAAO,MAAuB,MAAM,qBAAqB,CAAC;AAE1D,MAAM,MAAM,QAAQ,GAAG;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CAC7B,CAAC;AAeF,MAAM,CAAC,OAAO,OAAO,QAAQ;IAC5B,KAAK,EAAE,QAAQ,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,KAAK,CAAqC;IAElD,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ;IASxD,OAAO,CAAC,OAAO;IASf,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAS9B,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM;IAQhD,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;CAc9B;AAED,qBAAa,gBAAgB,CAAC,CAAC;IAC9B,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IAEf,OAAO,CAAC,WAAW,CAAU;gBAEjB,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM;IAOzD,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;IAQ9B,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM;IAiBhD,OAAO,CAAC,MAAM,EAAE,MAAM;IAKtB,MAAM,CAAC,MAAM,EAAE,MAAM;CAKrB"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { newProperty } from '../property/Property.js';
|
|
2
|
+
import Timing, { STATE_AFTER } from '../timing/Timing.js';
|
|
3
|
+
/*
|
|
4
|
+
|
|
5
|
+
const opacity = animator(obj, {
|
|
6
|
+
duration: 200,
|
|
7
|
+
ease: sinInOut
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
opacity.set({ opacity: 0 });
|
|
11
|
+
|
|
12
|
+
opacity.to({ opacity: 1 });
|
|
13
|
+
opacity.to({ opacity: 2 }, 1000);
|
|
14
|
+
*/
|
|
15
|
+
export default class Animator {
|
|
16
|
+
setts;
|
|
17
|
+
target;
|
|
18
|
+
props;
|
|
19
|
+
ticker;
|
|
20
|
+
constructor(target, ticker, setts) {
|
|
21
|
+
this.setts = setts;
|
|
22
|
+
this.target = ticker.registerTarget(target);
|
|
23
|
+
this.ticker = ticker;
|
|
24
|
+
this.props = new Map();
|
|
25
|
+
}
|
|
26
|
+
getProp(name) {
|
|
27
|
+
const prop = this.props.get(name);
|
|
28
|
+
if (prop)
|
|
29
|
+
return prop;
|
|
30
|
+
const newProp = new PropertyAnimator(name, this.setts, this.target);
|
|
31
|
+
this.props.set(name, newProp);
|
|
32
|
+
return newProp;
|
|
33
|
+
}
|
|
34
|
+
set(props) {
|
|
35
|
+
for (const prop in props) {
|
|
36
|
+
const propAni = this.getProp(prop);
|
|
37
|
+
console.log('got prop ani', propAni);
|
|
38
|
+
propAni.set(this.target, props[prop]);
|
|
39
|
+
console.log('got prop ani', propAni);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
to(props, duration) {
|
|
43
|
+
for (const prop in props) {
|
|
44
|
+
const propAni = this.getProp(prop);
|
|
45
|
+
propAni.to(this.target, props[prop], duration);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/// returns if the ticker should keep running
|
|
49
|
+
_tick(change) {
|
|
50
|
+
let shouldStop = true;
|
|
51
|
+
for (const prop of this.props.values()) {
|
|
52
|
+
prop.advance(change);
|
|
53
|
+
prop.render(this.target);
|
|
54
|
+
if (prop.timing.state < STATE_AFTER) {
|
|
55
|
+
shouldStop = false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return !shouldStop;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
export class PropertyAnimator {
|
|
62
|
+
prop;
|
|
63
|
+
timing;
|
|
64
|
+
initialized;
|
|
65
|
+
constructor(prop, setts, target) {
|
|
66
|
+
this.prop = newProperty(prop, target.type());
|
|
67
|
+
this.timing = new Timing(setts);
|
|
68
|
+
this.initialized = false;
|
|
69
|
+
}
|
|
70
|
+
set(target, value) {
|
|
71
|
+
const val = this.prop.parseValue(value);
|
|
72
|
+
this.prop.init(target, val, val);
|
|
73
|
+
this.timing.seek(2);
|
|
74
|
+
}
|
|
75
|
+
to(target, value, duration) {
|
|
76
|
+
const val = this.prop.parseValue(value);
|
|
77
|
+
let current = null;
|
|
78
|
+
if (this.initialized) {
|
|
79
|
+
current = this.prop.interpolate(this.timing.position);
|
|
80
|
+
}
|
|
81
|
+
this.prop.init(target, current, val);
|
|
82
|
+
this.initialized = true;
|
|
83
|
+
this.timing.seek(0);
|
|
84
|
+
if (typeof duration === 'number') {
|
|
85
|
+
this.timing.setDuration(duration);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
advance(change) {
|
|
89
|
+
this.timing.advance(change);
|
|
90
|
+
}
|
|
91
|
+
// call advance first
|
|
92
|
+
render(target) {
|
|
93
|
+
const pos = this.timing.position;
|
|
94
|
+
this.prop.setValue(target, this.prop.interpolate(pos));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=Animator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Animator.js","sourceRoot":"","sources":["../../src/animator/Animator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/animator/index.ts"],"names":[],"mappings":"AAgDA,OAAO,QAAQ,EAAE,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,YAAY,EAAE,aAAa,EAAE,CAAC;AAE9B,wBAAgB,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,aAAa,GAAG,QAAQ,CAErE"}
|