UI: Power button widget pressed state improvements.
This commit is contained in:
parent
753f502891
commit
6943ead99d
@ -44,6 +44,7 @@
|
||||
"@ngrx/store-devtools": "^15.4.0",
|
||||
"@ngx-translate/core": "^14.0.0",
|
||||
"@ngx-translate/http-loader": "^7.0.0",
|
||||
"@svgdotjs/svg.filter.js": "^3.0.8",
|
||||
"@svgdotjs/svg.js": "^3.2.0",
|
||||
"@tinymce/tinymce-angular": "^7.0.0",
|
||||
"ace-builds": "1.4.13",
|
||||
|
||||
@ -46,10 +46,10 @@
|
||||
justify-content: center;
|
||||
svg {
|
||||
.tb-small-shadow {
|
||||
filter: drop-shadow(0px 4px 6px rgba(0, 0, 0, 0.08));
|
||||
filter: drop-shadow(0px 0px 4px rgba(0, 0, 0, 0.2));
|
||||
}
|
||||
.tb-shadow {
|
||||
filter: drop-shadow(8px 8px 8px rgba(0, 0, 0, 0.1));
|
||||
filter: drop-shadow(0px 0px 10px rgba(0, 0, 0, 0.15));
|
||||
}
|
||||
}
|
||||
&.tb-power-button-pointer {
|
||||
|
||||
@ -105,6 +105,7 @@ export class PowerButtonWidgetComponent extends
|
||||
|
||||
this.loading$.subscribe((loading) => {
|
||||
this.updateDisabledState(loading || this.disabled);
|
||||
this.cd.markForCheck();
|
||||
});
|
||||
}
|
||||
|
||||
@ -139,6 +140,7 @@ export class PowerButtonWidgetComponent extends
|
||||
if (this.value !== newValue) {
|
||||
this.value = newValue;
|
||||
this.powerButtonSvgShape?.setValue(this.value);
|
||||
this.cd.markForCheck();
|
||||
}
|
||||
}
|
||||
|
||||
@ -147,6 +149,7 @@ export class PowerButtonWidgetComponent extends
|
||||
if (this.disabled !== newDisabled) {
|
||||
this.disabled = newDisabled;
|
||||
this.updateDisabledState(this.disabled);
|
||||
this.cd.markForCheck();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -24,7 +24,8 @@ import {
|
||||
SetValueSettings,
|
||||
ValueToDataType
|
||||
} from '@shared/models/action-widget-settings.models';
|
||||
import { Circle, Element, G, Gradient, Runner, Stop, Svg, Text, Timeline } from '@svgdotjs/svg.js';
|
||||
import { Circle, Effect, Element, G, Gradient, Runner, Svg, Text, Timeline } from '@svgdotjs/svg.js';
|
||||
import '@svgdotjs/svg.filter.js';
|
||||
import tinycolor from 'tinycolor2';
|
||||
import { WidgetContext } from '@home/models/widget-component.models';
|
||||
|
||||
@ -216,6 +217,8 @@ export const powerButtonShapeSize = 110;
|
||||
const cx = powerButtonShapeSize / 2;
|
||||
const cy = powerButtonShapeSize / 2;
|
||||
|
||||
const powerButtonAnimation = (element: Element): Runner => element.animate(200, 0, 'now');
|
||||
|
||||
export abstract class PowerButtonShape {
|
||||
|
||||
static fromSettings(ctx: WidgetContext,
|
||||
@ -398,20 +401,6 @@ export abstract class PowerButtonShape {
|
||||
shape.maskWith(mask);
|
||||
}
|
||||
|
||||
protected createPressedShadow(diameter: number, rightElseLeft = true): Gradient {
|
||||
const innerShadowGradient = this.svgShape.gradient('radial', (add) => {
|
||||
add.stop(0.7, '#000000', 0);
|
||||
add.stop(1, '#000000', 0.4);
|
||||
}).attr({ cx: rightElseLeft ? '45%' : '55%', cy: '55%', r: '100%'});
|
||||
this.svgShape.circle(diameter).center(cx, cy)
|
||||
.fill(innerShadowGradient).stroke({width: 0});
|
||||
return innerShadowGradient;
|
||||
}
|
||||
|
||||
protected pressedAnimation(element: Element): Runner {
|
||||
return element.animate(200, 0, 'now');
|
||||
}
|
||||
|
||||
protected createOnLabel(fontWeight = '500'): Text {
|
||||
return this.createLabel(this.onLabel, fontWeight);
|
||||
}
|
||||
@ -431,6 +420,72 @@ export abstract class PowerButtonShape {
|
||||
|
||||
}
|
||||
|
||||
class InnerShadowCircle {
|
||||
|
||||
private shadowCircle: Circle;
|
||||
private blurEffect: Effect;
|
||||
private offsetEffect: Effect;
|
||||
private floodEffect: Effect;
|
||||
|
||||
constructor(private svgShape: Svg,
|
||||
private diameter: number,
|
||||
private centerX: number,
|
||||
private centerY: number,
|
||||
private blur = 6,
|
||||
private shadowOpacity = 0.6,
|
||||
private dx = 0,
|
||||
private dy = 0,
|
||||
private shadowColor = '#000') {
|
||||
|
||||
this.shadowCircle = this.svgShape.circle(this.diameter).center(this.centerX, this.centerY)
|
||||
.fill({color: '#fff', opacity: 1}).stroke({width: 0});
|
||||
|
||||
this.shadowCircle.filterWith(add => {
|
||||
add.x('-50%').y('-50%').width('200%').height('200%');
|
||||
let effect: Effect = add.componentTransfer(components => {
|
||||
components.funcA({ type: 'table', tableValues: '1 0' });
|
||||
}).in(add.$fill);
|
||||
effect = effect.gaussianBlur(this.blur, this.blur).attr({stdDeviation: this.blur});
|
||||
this.blurEffect = effect;
|
||||
effect = effect.offset(this.dx, this.dy);
|
||||
this.offsetEffect = effect;
|
||||
effect = effect.flood(this.shadowColor, this.shadowOpacity);
|
||||
this.floodEffect = effect;
|
||||
effect = effect.composite(this.offsetEffect, 'in');
|
||||
effect.composite(add.$sourceAlpha, 'in');
|
||||
add.merge(m => {
|
||||
m.mergeNode(add.$fill);
|
||||
m.mergeNode();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
public timeline(tl: Timeline): void {
|
||||
this.blurEffect.timeline(tl);
|
||||
this.offsetEffect.timeline(tl);
|
||||
this.floodEffect.timeline(tl);
|
||||
}
|
||||
|
||||
public animate(blur: number, opacity: number, dx = 0, dy = 0): Runner {
|
||||
powerButtonAnimation(this.blurEffect).attr({stdDeviation: blur});
|
||||
powerButtonAnimation(this.offsetEffect).attr({dx, dy});
|
||||
return powerButtonAnimation(this.floodEffect).attr({'flood-opacity': opacity});
|
||||
}
|
||||
|
||||
public animateRestore(): Runner {
|
||||
return this.animate(this.blur, this.shadowOpacity, this.dx, this.dy);
|
||||
}
|
||||
|
||||
public show(): void {
|
||||
this.shadowCircle.show();
|
||||
}
|
||||
|
||||
public hide(): void {
|
||||
this.shadowCircle.hide();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class DefaultPowerButtonShape extends PowerButtonShape {
|
||||
|
||||
private outerBorder: Circle;
|
||||
@ -438,7 +493,7 @@ class DefaultPowerButtonShape extends PowerButtonShape {
|
||||
private offLabelShape: Text;
|
||||
private onCircleShape: Circle;
|
||||
private onLabelShape: Text;
|
||||
private pressedShadow: Gradient;
|
||||
private pressedShadow: InnerShadowCircle;
|
||||
private pressedTimeline: Timeline;
|
||||
private centerGroup: G;
|
||||
|
||||
@ -453,7 +508,7 @@ class DefaultPowerButtonShape extends PowerButtonShape {
|
||||
.center(cx, cy);
|
||||
this.onLabelShape = this.createOnLabel();
|
||||
this.createMask(this.onCircleShape, [this.onLabelShape]);
|
||||
this.pressedShadow = this.createPressedShadow(powerButtonShapeSize - 20);
|
||||
this.pressedShadow = new InnerShadowCircle(this.svgShape, powerButtonShapeSize - 20, cx, cy, 0, 0);
|
||||
|
||||
this.pressedTimeline = new Timeline();
|
||||
this.centerGroup.timeline(this.pressedTimeline);
|
||||
@ -482,16 +537,16 @@ class DefaultPowerButtonShape extends PowerButtonShape {
|
||||
protected onPressStart() {
|
||||
this.pressedTimeline.finish();
|
||||
const pressedScale = 0.75;
|
||||
this.pressedAnimation(this.centerGroup).transform({scale: pressedScale});
|
||||
this.pressedAnimation(this.onLabelShape).transform({scale: pressedScale});
|
||||
this.pressedAnimation(this.pressedShadow).attr({r: '62%'});
|
||||
powerButtonAnimation(this.centerGroup).transform({scale: pressedScale});
|
||||
powerButtonAnimation(this.onLabelShape).transform({scale: pressedScale});
|
||||
this.pressedShadow.animate(6, 0.6);
|
||||
}
|
||||
|
||||
protected onPressEnd() {
|
||||
this.pressedTimeline.finish();
|
||||
this.pressedAnimation(this.centerGroup).transform({scale: 1});
|
||||
this.pressedAnimation(this.onLabelShape).transform({scale: 1});
|
||||
this.pressedAnimation(this.pressedShadow).attr({r: '100%'});
|
||||
powerButtonAnimation(this.centerGroup).transform({scale: 1});
|
||||
powerButtonAnimation(this.onLabelShape).transform({scale: 1});
|
||||
this.pressedShadow.animateRestore();
|
||||
}
|
||||
|
||||
}
|
||||
@ -503,7 +558,7 @@ class SimplifiedPowerButtonShape extends PowerButtonShape {
|
||||
private onCircleShape: Circle;
|
||||
private offLabelShape: Text;
|
||||
private onLabelShape: Text;
|
||||
private pressedShadow: Gradient;
|
||||
private pressedShadow: InnerShadowCircle;
|
||||
private pressedTimeline: Timeline;
|
||||
private centerGroup: G;
|
||||
|
||||
@ -517,7 +572,7 @@ class SimplifiedPowerButtonShape extends PowerButtonShape {
|
||||
this.onCircleShape = this.svgShape.circle(powerButtonShapeSize).center(cx, cy);
|
||||
this.onLabelShape = this.createOnLabel();
|
||||
this.createMask(this.onCircleShape, [this.onLabelShape]);
|
||||
this.pressedShadow = this.createPressedShadow(powerButtonShapeSize - 4);
|
||||
this.pressedShadow = new InnerShadowCircle(this.svgShape, powerButtonShapeSize - 4, cx, cy, 0, 0);
|
||||
|
||||
this.pressedTimeline = new Timeline();
|
||||
this.centerGroup.timeline(this.pressedTimeline);
|
||||
@ -546,16 +601,16 @@ class SimplifiedPowerButtonShape extends PowerButtonShape {
|
||||
protected onPressStart() {
|
||||
this.pressedTimeline.finish();
|
||||
const pressedScale = 0.75;
|
||||
this.pressedAnimation(this.centerGroup).transform({scale: pressedScale});
|
||||
this.pressedAnimation(this.onLabelShape).transform({scale: pressedScale});
|
||||
this.pressedAnimation(this.pressedShadow).attr({r: '62%'});
|
||||
powerButtonAnimation(this.centerGroup).transform({scale: pressedScale});
|
||||
powerButtonAnimation(this.onLabelShape).transform({scale: pressedScale});
|
||||
this.pressedShadow.animate(6, 0.6);
|
||||
}
|
||||
|
||||
protected onPressEnd() {
|
||||
this.pressedTimeline.finish();
|
||||
this.pressedAnimation(this.centerGroup).transform({scale: 1});
|
||||
this.pressedAnimation(this.onLabelShape).transform({scale: 1});
|
||||
this.pressedAnimation(this.pressedShadow).attr({r: '100%'});
|
||||
powerButtonAnimation(this.centerGroup).transform({scale: 1});
|
||||
powerButtonAnimation(this.onLabelShape).transform({scale: 1});
|
||||
this.pressedShadow.animateRestore();
|
||||
}
|
||||
}
|
||||
|
||||
@ -567,7 +622,7 @@ class OutlinedPowerButtonShape extends PowerButtonShape {
|
||||
private offLabelShape: Text;
|
||||
private onCircleShape: Circle;
|
||||
private onLabelShape: Text;
|
||||
private pressedShadow: Gradient;
|
||||
private pressedShadow: InnerShadowCircle;
|
||||
private pressedTimeline: Timeline;
|
||||
private centerGroup: G;
|
||||
private onCenterGroup: G;
|
||||
@ -588,7 +643,7 @@ class OutlinedPowerButtonShape extends PowerButtonShape {
|
||||
.addTo(this.onCenterGroup);
|
||||
this.onLabelShape = this.createOnLabel();
|
||||
this.createMask(this.onCircleShape, [this.onLabelShape]);
|
||||
this.pressedShadow = this.createPressedShadow(powerButtonShapeSize - 24);
|
||||
this.pressedShadow = new InnerShadowCircle(this.svgShape, powerButtonShapeSize - 24, cx, cy, 0, 0);
|
||||
|
||||
this.pressedTimeline = new Timeline();
|
||||
this.centerGroup.timeline(this.pressedTimeline);
|
||||
@ -617,18 +672,18 @@ class OutlinedPowerButtonShape extends PowerButtonShape {
|
||||
protected onPressStart() {
|
||||
this.pressedTimeline.finish();
|
||||
const pressedScale = 0.75;
|
||||
this.pressedAnimation(this.centerGroup).transform({scale: pressedScale});
|
||||
this.pressedAnimation(this.onCenterGroup).transform({scale: 0.98});
|
||||
this.pressedAnimation(this.onLabelShape).transform({scale: pressedScale / 0.98});
|
||||
this.pressedAnimation(this.pressedShadow).attr({r: '62%'});
|
||||
powerButtonAnimation(this.centerGroup).transform({scale: pressedScale});
|
||||
powerButtonAnimation(this.onCenterGroup).transform({scale: 0.98});
|
||||
powerButtonAnimation(this.onLabelShape).transform({scale: pressedScale / 0.98});
|
||||
this.pressedShadow.animate(6, 0.6);
|
||||
}
|
||||
|
||||
protected onPressEnd() {
|
||||
this.pressedTimeline.finish();
|
||||
this.pressedAnimation(this.centerGroup).transform({scale: 1});
|
||||
this.pressedAnimation(this.onCenterGroup).transform({scale: 1});
|
||||
this.pressedAnimation(this.onLabelShape).transform({scale: 1});
|
||||
this.pressedAnimation(this.pressedShadow).attr({r: '100%'});
|
||||
powerButtonAnimation(this.centerGroup).transform({scale: 1});
|
||||
powerButtonAnimation(this.onCenterGroup).transform({scale: 1});
|
||||
powerButtonAnimation(this.onLabelShape).transform({scale: 1});
|
||||
this.pressedShadow.animateRestore();
|
||||
}
|
||||
}
|
||||
|
||||
@ -639,9 +694,9 @@ class DefaultVolumePowerButtonShape extends PowerButtonShape {
|
||||
private innerBorder: Circle;
|
||||
private innerBorderMask: Circle;
|
||||
private innerBorderGradient: Gradient;
|
||||
private innerShadow: Circle;
|
||||
private innerShadowGradient: Gradient;
|
||||
private innerShadowGradientStop: Stop;
|
||||
private innerShadow: InnerShadowCircle;
|
||||
//private innerShadowGradient: Gradient;
|
||||
//private innerShadowGradientStop: Stop;
|
||||
private offLabelShape: Text;
|
||||
private onCircleShape: Circle;
|
||||
private onLabelShape: Text;
|
||||
@ -670,18 +725,12 @@ class DefaultVolumePowerButtonShape extends PowerButtonShape {
|
||||
this.onCircleShape = this.svgShape.circle(powerButtonShapeSize - 24).center(cx, cy);
|
||||
this.onLabelShape = this.createOnLabel('400');
|
||||
this.createMask(this.onCircleShape, [this.onLabelShape]);
|
||||
this.innerShadow = this.svgShape.circle(powerButtonShapeSize - 24).center(cx, cy);
|
||||
this.innerShadowGradient = this.svgShape.gradient('radial', (add) => {
|
||||
add.stop(0.7, '#000000', 0);
|
||||
this.innerShadowGradientStop = add.stop(1, '#000000', 0.2);
|
||||
}).attr({ cx: '45%', cy: '55%', r: '65%'});
|
||||
this.innerShadow.fill(this.innerShadowGradient);
|
||||
this.innerShadow = new InnerShadowCircle(this.svgShape, powerButtonShapeSize - 24, cx, cy, 3, 0.3);
|
||||
|
||||
this.pressedTimeline = new Timeline();
|
||||
this.centerGroup.timeline(this.pressedTimeline);
|
||||
this.onLabelShape.timeline(this.pressedTimeline);
|
||||
this.innerShadowGradient.timeline(this.pressedTimeline);
|
||||
this.innerShadowGradientStop.timeline(this.pressedTimeline);
|
||||
this.innerShadow.timeline(this.pressedTimeline);
|
||||
}
|
||||
|
||||
protected drawColorState(mainColor: PowerButtonColor){
|
||||
@ -724,22 +773,20 @@ class DefaultVolumePowerButtonShape extends PowerButtonShape {
|
||||
this.pressedTimeline.finish();
|
||||
this.innerShadow.show();
|
||||
const pressedScale = 0.75;
|
||||
this.pressedAnimation(this.centerGroup).transform({scale: pressedScale});
|
||||
this.pressedAnimation(this.onLabelShape).transform({scale: pressedScale});
|
||||
this.pressedAnimation(this.innerShadowGradient).attr({ r: '60%'});
|
||||
this.pressedAnimation(this.innerShadowGradientStop).update({ opacity: 0.4 });
|
||||
powerButtonAnimation(this.centerGroup).transform({scale: pressedScale});
|
||||
powerButtonAnimation(this.onLabelShape).transform({scale: pressedScale});
|
||||
this.innerShadow.animate(6, 0.6);
|
||||
}
|
||||
|
||||
protected onPressEnd() {
|
||||
this.pressedTimeline.finish();
|
||||
this.pressedAnimation(this.centerGroup).transform({scale: 1});
|
||||
this.pressedAnimation(this.onLabelShape).transform({scale: 1});
|
||||
this.pressedAnimation(this.innerShadowGradient).attr({ r: '65%'}).after(() => {
|
||||
powerButtonAnimation(this.centerGroup).transform({scale: 1});
|
||||
powerButtonAnimation(this.onLabelShape).transform({scale: 1});
|
||||
this.innerShadow.animateRestore().after(() => {
|
||||
if (this.disabled) {
|
||||
this.innerShadow.hide();
|
||||
}
|
||||
});
|
||||
this.pressedAnimation(this.innerShadowGradientStop).update({ opacity: 0.2 });
|
||||
}
|
||||
|
||||
}
|
||||
@ -750,8 +797,8 @@ class SimplifiedVolumePowerButtonShape extends PowerButtonShape {
|
||||
private outerBorderMask: Circle;
|
||||
private offLabelShape: Text;
|
||||
private onLabelShape: Text;
|
||||
private innerShadow: Circle;
|
||||
private pressedShadow: Gradient;
|
||||
private innerShadow: InnerShadowCircle;
|
||||
private pressedShadow: InnerShadowCircle;
|
||||
private pressedTimeline: Timeline;
|
||||
private centerGroup: G;
|
||||
private onCenterGroup: G;
|
||||
@ -766,14 +813,8 @@ class SimplifiedVolumePowerButtonShape extends PowerButtonShape {
|
||||
this.offLabelShape = this.createOffLabel().addTo(this.centerGroup);
|
||||
this.onCenterGroup = this.svgShape.group();
|
||||
this.onLabelShape = this.createOnLabel().addTo(this.onCenterGroup);
|
||||
this.innerShadow = this.svgShape.circle(powerButtonShapeSize - 4).center(cx, cy);
|
||||
const innerShadowGradient = this.svgShape.gradient('radial', (add) => {
|
||||
add.stop(0.7, '#000000', 0);
|
||||
add.stop(1, '#000000', 0.2);
|
||||
}).attr({ cx: '55%', cy: '55%', r: '65%'});
|
||||
this.innerShadow.fill(innerShadowGradient);
|
||||
this.pressedShadow = this.createPressedShadow(powerButtonShapeSize - 4, false);
|
||||
|
||||
this.innerShadow = new InnerShadowCircle(this.svgShape, powerButtonShapeSize - 4, cx, cy, 3, 0.3);
|
||||
this.pressedShadow = new InnerShadowCircle(this.svgShape, powerButtonShapeSize - 4, cx, cy, 0, 0);
|
||||
this.pressedTimeline = new Timeline();
|
||||
this.centerGroup.timeline(this.pressedTimeline);
|
||||
this.onCenterGroup.timeline(this.pressedTimeline);
|
||||
@ -807,16 +848,16 @@ class SimplifiedVolumePowerButtonShape extends PowerButtonShape {
|
||||
if (!this.value) {
|
||||
this.backgroundShape.removeClass('tb-shadow');
|
||||
}
|
||||
this.pressedAnimation(this.centerGroup).transform({scale: pressedScale});
|
||||
this.pressedAnimation(this.onCenterGroup).transform({scale: pressedScale});
|
||||
this.pressedAnimation(this.pressedShadow).attr({r: '62%'});
|
||||
powerButtonAnimation(this.centerGroup).transform({scale: pressedScale});
|
||||
powerButtonAnimation(this.onCenterGroup).transform({scale: pressedScale});
|
||||
this.pressedShadow.animate(8, 0.4);
|
||||
}
|
||||
|
||||
protected onPressEnd() {
|
||||
this.pressedTimeline.finish();
|
||||
this.pressedAnimation(this.centerGroup).transform({scale: 1});
|
||||
this.pressedAnimation(this.onCenterGroup).transform({scale: 1});
|
||||
this.pressedAnimation(this.pressedShadow).attr({r: '100%'}).after(() => {
|
||||
powerButtonAnimation(this.centerGroup).transform({scale: 1});
|
||||
powerButtonAnimation(this.onCenterGroup).transform({scale: 1});
|
||||
this.pressedShadow.animateRestore().after(() => {
|
||||
if (!this.value) {
|
||||
this.backgroundShape.addClass('tb-shadow');
|
||||
}
|
||||
@ -833,7 +874,7 @@ class OutlinedVolumePowerButtonShape extends PowerButtonShape {
|
||||
private offLabelShape: Text;
|
||||
private onCircleShape: Circle;
|
||||
private onLabelShape: Text;
|
||||
private pressedShadow: Gradient;
|
||||
private pressedShadow: InnerShadowCircle;
|
||||
private pressedTimeline: Timeline;
|
||||
private centerGroup: G;
|
||||
private onCenterGroup: G;
|
||||
@ -858,7 +899,7 @@ class OutlinedVolumePowerButtonShape extends PowerButtonShape {
|
||||
.addTo(this.onCenterGroup);
|
||||
this.onLabelShape = this.createOnLabel('800');
|
||||
this.createMask(this.onCircleShape, [this.onLabelShape]);
|
||||
this.pressedShadow = this.createPressedShadow(powerButtonShapeSize - 30);
|
||||
this.pressedShadow = new InnerShadowCircle(this.svgShape, powerButtonShapeSize - 30, cx, cy, 0, 0);
|
||||
this.backgroundShape.addClass('tb-small-shadow');
|
||||
|
||||
this.pressedTimeline = new Timeline();
|
||||
@ -895,18 +936,18 @@ class OutlinedVolumePowerButtonShape extends PowerButtonShape {
|
||||
protected onPressStart() {
|
||||
this.pressedTimeline.finish();
|
||||
const pressedScale = 0.75;
|
||||
this.pressedAnimation(this.centerGroup).transform({scale: pressedScale});
|
||||
this.pressedAnimation(this.onCenterGroup).transform({scale: 0.98});
|
||||
this.pressedAnimation(this.onLabelShape).transform({scale: pressedScale / 0.98});
|
||||
this.pressedAnimation(this.pressedShadow).attr({r: '62%'});
|
||||
powerButtonAnimation(this.centerGroup).transform({scale: pressedScale});
|
||||
powerButtonAnimation(this.onCenterGroup).transform({scale: 0.98});
|
||||
powerButtonAnimation(this.onLabelShape).transform({scale: pressedScale / 0.98});
|
||||
this.pressedShadow.animate(6, 0.6);
|
||||
}
|
||||
|
||||
protected onPressEnd() {
|
||||
this.pressedTimeline.finish();
|
||||
this.pressedAnimation(this.centerGroup).transform({scale: 1});
|
||||
this.pressedAnimation(this.onCenterGroup).transform({scale: 1});
|
||||
this.pressedAnimation(this.onLabelShape).transform({scale: 1});
|
||||
this.pressedAnimation(this.pressedShadow).attr({r: '100%'});
|
||||
powerButtonAnimation(this.centerGroup).transform({scale: 1});
|
||||
powerButtonAnimation(this.onCenterGroup).transform({scale: 1});
|
||||
powerButtonAnimation(this.onLabelShape).transform({scale: 1});
|
||||
this.pressedShadow.animateRestore();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -2747,7 +2747,14 @@
|
||||
resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553"
|
||||
integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==
|
||||
|
||||
"@svgdotjs/svg.js@^3.2.0":
|
||||
"@svgdotjs/svg.filter.js@^3.0.8":
|
||||
version "3.0.8"
|
||||
resolved "https://registry.yarnpkg.com/@svgdotjs/svg.filter.js/-/svg.filter.js-3.0.8.tgz#998cb2481a871fa70d7dbaa891c886b335c562d7"
|
||||
integrity sha512-YshF2YDaeRA2StyzAs5nUPrev7npQ38oWD0eTRwnsciSL2KrRPMoUw8BzjIXItb3+dccKGTX3IQOd2NFzmHkog==
|
||||
dependencies:
|
||||
"@svgdotjs/svg.js" "^3.1.1"
|
||||
|
||||
"@svgdotjs/svg.js@^3.1.1", "@svgdotjs/svg.js@^3.2.0":
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@svgdotjs/svg.js/-/svg.js-3.2.0.tgz#6baa8cef6778a93818ac18faa2055222e60aa644"
|
||||
integrity sha512-Tr8p+QVP7y+QT1GBlq1Tt57IvedVH8zCPoYxdHLX0Oof3a/PqnC/tXAkVufv1JQJfsDHlH/UrjcDfgxSofqSNA==
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user