decentraland-ui2 0.39.2 → 0.40.0

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 (68) hide show
  1. package/dist/components/WearablePreview/AnimationControls/AnimationControls.d.ts +3 -0
  2. package/dist/components/WearablePreview/AnimationControls/AnimationControls.js +59 -0
  3. package/dist/components/WearablePreview/AnimationControls/AnimationControls.js.map +1 -0
  4. package/dist/components/WearablePreview/AnimationControls/AnimationControls.styled.d.ts +16 -0
  5. package/dist/components/WearablePreview/AnimationControls/AnimationControls.styled.js +15 -0
  6. package/dist/components/WearablePreview/AnimationControls/AnimationControls.styled.js.map +1 -0
  7. package/dist/components/WearablePreview/AnimationControls/AnimationControls.types.d.ts +13 -0
  8. package/dist/components/WearablePreview/AnimationControls/AnimationControls.types.js +2 -0
  9. package/dist/components/WearablePreview/AnimationControls/AnimationControls.types.js.map +1 -0
  10. package/dist/components/WearablePreview/AnimationControls/index.d.ts +2 -0
  11. package/dist/components/WearablePreview/AnimationControls/index.js +2 -0
  12. package/dist/components/WearablePreview/AnimationControls/index.js.map +1 -0
  13. package/dist/components/WearablePreview/EmoteControls/EmoteControls.d.ts +3 -0
  14. package/dist/components/WearablePreview/EmoteControls/EmoteControls.js +174 -0
  15. package/dist/components/WearablePreview/EmoteControls/EmoteControls.js.map +1 -0
  16. package/dist/components/WearablePreview/EmoteControls/EmoteControls.styled.d.ts +26 -0
  17. package/dist/components/WearablePreview/EmoteControls/EmoteControls.styled.js +98 -0
  18. package/dist/components/WearablePreview/EmoteControls/EmoteControls.styled.js.map +1 -0
  19. package/dist/components/WearablePreview/EmoteControls/EmoteControls.types.d.ts +32 -0
  20. package/dist/components/WearablePreview/EmoteControls/EmoteControls.types.js +2 -0
  21. package/dist/components/WearablePreview/EmoteControls/EmoteControls.types.js.map +1 -0
  22. package/dist/components/WearablePreview/EmoteControls/index.d.ts +2 -0
  23. package/dist/components/WearablePreview/EmoteControls/index.js +2 -0
  24. package/dist/components/WearablePreview/EmoteControls/index.js.map +1 -0
  25. package/dist/components/WearablePreview/TranslationControls/TranslationControls.d.ts +3 -0
  26. package/dist/components/WearablePreview/TranslationControls/TranslationControls.js +15 -0
  27. package/dist/components/WearablePreview/TranslationControls/TranslationControls.js.map +1 -0
  28. package/dist/components/WearablePreview/TranslationControls/TranslationControls.styled.d.ts +25 -0
  29. package/dist/components/WearablePreview/TranslationControls/TranslationControls.styled.js +65 -0
  30. package/dist/components/WearablePreview/TranslationControls/TranslationControls.styled.js.map +1 -0
  31. package/dist/components/WearablePreview/TranslationControls/TranslationControls.types.d.ts +19 -0
  32. package/dist/components/WearablePreview/TranslationControls/TranslationControls.types.js +13 -0
  33. package/dist/components/WearablePreview/TranslationControls/TranslationControls.types.js.map +1 -0
  34. package/dist/components/WearablePreview/TranslationControls/index.d.ts +3 -0
  35. package/dist/components/WearablePreview/TranslationControls/index.js +3 -0
  36. package/dist/components/WearablePreview/TranslationControls/index.js.map +1 -0
  37. package/dist/components/WearablePreview/WearablePreview.controller.d.ts +3 -1
  38. package/dist/components/WearablePreview/WearablePreview.controller.js +49 -12
  39. package/dist/components/WearablePreview/WearablePreview.controller.js.map +1 -1
  40. package/dist/components/WearablePreview/WearablePreview.js +5 -3
  41. package/dist/components/WearablePreview/WearablePreview.js.map +1 -1
  42. package/dist/components/WearablePreview/WearablePreview.stories.d.ts +5 -0
  43. package/dist/components/WearablePreview/WearablePreview.stories.js +42 -5
  44. package/dist/components/WearablePreview/WearablePreview.stories.js.map +1 -1
  45. package/dist/components/WearablePreview/WearablePreview.stories.styled.js +5 -5
  46. package/dist/components/WearablePreview/WearablePreview.stories.styled.js.map +1 -1
  47. package/dist/components/WearablePreview/WearablePreview.types.d.ts +3 -9
  48. package/dist/components/WearablePreview/WearablePreview.types.js +1 -9
  49. package/dist/components/WearablePreview/WearablePreview.types.js.map +1 -1
  50. package/dist/components/WearablePreview/ZoomControls/ZoomControls.d.ts +3 -0
  51. package/dist/components/WearablePreview/ZoomControls/ZoomControls.js +19 -0
  52. package/dist/components/WearablePreview/ZoomControls/ZoomControls.js.map +1 -0
  53. package/dist/components/WearablePreview/ZoomControls/ZoomControls.styled.d.ts +11 -0
  54. package/dist/components/WearablePreview/ZoomControls/ZoomControls.styled.js +29 -0
  55. package/dist/components/WearablePreview/ZoomControls/ZoomControls.styled.js.map +1 -0
  56. package/dist/components/WearablePreview/ZoomControls/ZoomControls.types.d.ts +12 -0
  57. package/dist/components/WearablePreview/ZoomControls/ZoomControls.types.js +6 -0
  58. package/dist/components/WearablePreview/ZoomControls/ZoomControls.types.js.map +1 -0
  59. package/dist/components/WearablePreview/ZoomControls/index.d.ts +3 -0
  60. package/dist/components/WearablePreview/ZoomControls/index.js +3 -0
  61. package/dist/components/WearablePreview/ZoomControls/index.js.map +1 -0
  62. package/dist/components/WearablePreview/index.d.ts +9 -1
  63. package/dist/components/WearablePreview/index.js +5 -1
  64. package/dist/components/WearablePreview/index.js.map +1 -1
  65. package/dist/components/WearablePreview/useWearablePreviewController.d.ts +5 -0
  66. package/dist/components/WearablePreview/useWearablePreviewController.js +45 -0
  67. package/dist/components/WearablePreview/useWearablePreviewController.js.map +1 -0
  68. package/package.json +3 -3
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ import { AnimationControlsProps } from "./AnimationControls.types";
3
+ export declare const AnimationControls: React.FC<AnimationControlsProps>;
@@ -0,0 +1,59 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React, { useCallback, useEffect, useMemo, useState } from "react";
3
+ import ArrowDropDownIcon from "@mui/icons-material/ArrowDropDown";
4
+ import ArrowDropUpIcon from "@mui/icons-material/ArrowDropUp";
5
+ import ButtonGroup from "@mui/material/ButtonGroup";
6
+ import ClickAwayListener from "@mui/material/ClickAwayListener";
7
+ import MenuItem from "@mui/material/MenuItem";
8
+ import MenuList from "@mui/material/MenuList";
9
+ import Paper from "@mui/material/Paper";
10
+ import Popper from "@mui/material/Popper";
11
+ import { useWearablePreviewController } from "../useWearablePreviewController";
12
+ import { StyledAnimationButton, StyledAnimationDivider, StyledAnimationGrow, } from "./AnimationControls.styled";
13
+ export const AnimationControls = ({ wearablePreviewId, className, wearablePreviewController, selectedAnimation, onSelectAnimation, }) => {
14
+ const { controllerRef, isReady } = useWearablePreviewController(wearablePreviewId, wearablePreviewController);
15
+ const [open, setOpen] = React.useState(false);
16
+ const anchorRef = React.useRef(null);
17
+ const [socialEmoteAnimations, setSocialEmoteAnimations] = useState(undefined);
18
+ const selectedIndex = useMemo(() => {
19
+ if (!socialEmoteAnimations || !selectedAnimation) {
20
+ return 0;
21
+ }
22
+ const index = socialEmoteAnimations.findIndex((anim) => anim.title === selectedAnimation.title);
23
+ return index >= 0 ? index : 0;
24
+ }, [socialEmoteAnimations, selectedAnimation]);
25
+ useEffect(() => {
26
+ if (isReady && controllerRef.current) {
27
+ if (socialEmoteAnimations === undefined) {
28
+ controllerRef.current.emote
29
+ .getSocialEmoteAnimations()
30
+ .then((socialEmoteAnimations) => {
31
+ setSocialEmoteAnimations(socialEmoteAnimations);
32
+ })
33
+ .catch((error) => {
34
+ console.error("Error checking social emote:", error);
35
+ setSocialEmoteAnimations(null);
36
+ });
37
+ }
38
+ }
39
+ }, [socialEmoteAnimations, isReady, controllerRef]);
40
+ const handleMenuItemClick = useCallback((_event, index) => {
41
+ setOpen(false);
42
+ onSelectAnimation?.(socialEmoteAnimations[index]);
43
+ }, [socialEmoteAnimations, onSelectAnimation]);
44
+ const handleToggle = useCallback(() => {
45
+ setOpen((prevOpen) => !prevOpen);
46
+ }, []);
47
+ const handleClose = useCallback((event) => {
48
+ if (anchorRef.current &&
49
+ anchorRef.current.contains(event.target)) {
50
+ return;
51
+ }
52
+ setOpen(false);
53
+ }, [anchorRef]);
54
+ if (!socialEmoteAnimations) {
55
+ return null;
56
+ }
57
+ return (_jsxs(React.Fragment, { children: [_jsx(ButtonGroup, { className: className, variant: "contained", ref: anchorRef, "aria-label": "Button group with a nested menu", children: _jsxs(StyledAnimationButton, { size: "small", "aria-controls": open ? "split-button-menu" : undefined, "aria-expanded": open ? "true" : undefined, "aria-label": "select merge strategy", "aria-haspopup": "menu", onClick: handleToggle, children: [socialEmoteAnimations[selectedIndex].title, _jsx(StyledAnimationDivider, { orientation: "vertical", flexItem: true }), open ? _jsx(ArrowDropUpIcon, {}) : _jsx(ArrowDropDownIcon, {})] }) }), _jsx(Popper, { open: open, anchorEl: anchorRef.current, role: undefined, transition: true, disablePortal: true, className: `${className}__popper`, children: ({ TransitionProps, placement }) => (_jsx(StyledAnimationGrow, { ...TransitionProps, placement: placement, children: _jsx(Paper, { children: _jsx(ClickAwayListener, { onClickAway: handleClose, children: _jsx(MenuList, { id: "split-button-menu", autoFocusItem: true, children: socialEmoteAnimations.map((option, index) => (_jsx(MenuItem, { selected: index === selectedIndex, onClick: (event) => handleMenuItemClick(event, index), children: option.title }, option.title))) }) }) }) })) })] }));
58
+ };
59
+ //# sourceMappingURL=AnimationControls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnimationControls.js","sourceRoot":"","sources":["../../../../src/components/WearablePreview/AnimationControls/AnimationControls.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ declare const StyledAnimationButton: import("@emotion/styled").StyledComponent<import("@mui/material").ButtonOwnProps & Omit<import("@mui/material").ButtonBaseOwnProps, "classes"> & import("@mui/material/OverridableComponent").CommonProps & Omit<Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & {
2
+ ref?: ((instance: HTMLButtonElement | null) => void) | import("react").RefObject<HTMLButtonElement> | null | undefined;
3
+ }, "disabled" | "color" | "className" | "style" | "classes" | "children" | "sx" | "variant" | "tabIndex" | "disableElevation" | "fullWidth" | "startIcon" | "endIcon" | "action" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "disableFocusRipple" | "href" | "size"> & {
4
+ theme?: import("@emotion/react").Theme;
5
+ }, {}, {}>;
6
+ declare const StyledAnimationDivider: import("@emotion/styled").StyledComponent<import("@mui/material").DividerOwnProps & import("@mui/material/OverridableComponent").CommonProps & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLHRElement>, HTMLHRElement>, "ref"> & {
7
+ ref?: ((instance: HTMLHRElement | null) => void) | import("react").RefObject<HTMLHRElement> | null | undefined;
8
+ }, "light" | "textAlign" | "className" | "style" | "classes" | "children" | "sx" | "variant" | "orientation" | "absolute" | "flexItem"> & {
9
+ theme?: import("@emotion/react").Theme;
10
+ }, {}, {}>;
11
+ declare const StyledAnimationGrow: import("@emotion/styled").StyledComponent<import("@mui/material").GrowProps & {
12
+ theme?: import("@emotion/react").Theme;
13
+ } & {
14
+ placement?: string;
15
+ }, {}, {}>;
16
+ export { StyledAnimationButton, StyledAnimationDivider, StyledAnimationGrow };
@@ -0,0 +1,15 @@
1
+ import styled from "@emotion/styled";
2
+ import { Button, Divider, Grow } from "@mui/material";
3
+ const StyledAnimationButton = styled(Button)(({ theme }) => ({
4
+ gap: theme.spacing(1),
5
+ }));
6
+ const StyledAnimationDivider = styled(Divider)(({ theme }) => ({
7
+ height: "calc(100% + 8px)",
8
+ marginTop: theme.spacing(-0.5),
9
+ borderColor: theme.palette.common.white,
10
+ }));
11
+ const StyledAnimationGrow = styled(Grow)(({ placement }) => ({
12
+ transformOrigin: placement === "bottom" ? "center top" : "center bottom",
13
+ }));
14
+ export { StyledAnimationButton, StyledAnimationDivider, StyledAnimationGrow };
15
+ //# sourceMappingURL=AnimationControls.styled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnimationControls.styled.js","sourceRoot":"","sources":["../../../../src/components/WearablePreview/AnimationControls/AnimationControls.styled.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,iBAAiB,CAAA;AACpC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAErD,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3D,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;CACtB,CAAC,CAAC,CAAA;AAEH,MAAM,sBAAsB,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7D,MAAM,EAAE,kBAAkB;IAC1B,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC;IAC9B,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;CACxC,CAAC,CAAC,CAAA;AAEH,MAAM,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAAC,CACtC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;IAClB,eAAe,EAAE,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe;CACzE,CAAC,CACH,CAAA;AAED,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { IPreviewController } from "@dcl/schemas";
2
+ import { SocialEmoteAnimation } from "@dcl/schemas/dist/dapps/preview/social-emote-animation";
3
+ export type AnimationControlsProps = {
4
+ wearablePreviewId: string;
5
+ className?: string;
6
+ wearablePreviewController?: IPreviewController;
7
+ selectedAnimation?: SocialEmoteAnimation;
8
+ onSelectAnimation?: (animation: SocialEmoteAnimation) => void;
9
+ renderAnimationSelector?: (props: {
10
+ socialEmoteAnimations: SocialEmoteAnimation[] | null;
11
+ onSelectAnimation?: (animation: SocialEmoteAnimation) => void;
12
+ }) => React.ReactNode;
13
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AnimationControls.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnimationControls.types.js","sourceRoot":"","sources":["../../../../src/components/WearablePreview/AnimationControls/AnimationControls.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export { AnimationControls } from "./AnimationControls";
2
+ export type { AnimationControlsProps } from "./AnimationControls.types";
@@ -0,0 +1,2 @@
1
+ export { AnimationControls } from "./AnimationControls";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/WearablePreview/AnimationControls/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA"}
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ import { EmoteControlsProps } from "./EmoteControls.types";
3
+ export declare const EmoteControls: React.FC<EmoteControlsProps>;
@@ -0,0 +1,174 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /* eslint-disable @typescript-eslint/no-empty-function */
3
+ import { useCallback, useEffect, useState } from "react";
4
+ import { PreviewEmoteEventType } from "@dcl/schemas/dist/dapps/preview/preview-emote-event-type";
5
+ import PauseIcon from "@mui/icons-material/Pause";
6
+ import PlayArrowIcon from "@mui/icons-material/PlayArrow";
7
+ import VolumeOffIcon from "@mui/icons-material/VolumeOff";
8
+ import VolumeUpIcon from "@mui/icons-material/VolumeUp";
9
+ import { useWearablePreviewController } from "../useWearablePreviewController";
10
+ import { StyledEmoteControlsContainer, StyledFrameControl, StyledFrameInput, StyledPlayButton, StyledRangeInput, StyledSoundButton, } from "./EmoteControls.styled";
11
+ export const EmoteControls = ({ wearablePreviewId, className, hideFrameInput, hideProgressInput, hidePlayButton, hideSoundButton, wearablePreviewController, renderPlayButton, renderSoundButton, renderProgressBar, renderFrameInput, }) => {
12
+ const { controllerRef, isReady } = useWearablePreviewController(wearablePreviewId, wearablePreviewController);
13
+ const [frame, setFrame] = useState(0);
14
+ const [isPlaying, setIsPlaying] = useState(false);
15
+ const [length, setLength] = useState(undefined);
16
+ const [isSoundEnabled, setIsSoundEnabled] = useState(false);
17
+ const [hasSound, setHasSound] = useState(undefined);
18
+ const [shouldResumePlaying, setShouldResumePlaying] = useState(false);
19
+ const [isChangingFrame, setIsChangingFrame] = useState(false);
20
+ const handleAnimationLoop = useCallback(() => {
21
+ setFrame(0);
22
+ }, []);
23
+ const handleAnimationEnd = useCallback(() => {
24
+ setIsPlaying(false);
25
+ setFrame((currentFrame) => {
26
+ const currentLength = length ?? 0;
27
+ return currentFrame >= Math.floor(currentLength * 100) ? 0 : currentFrame;
28
+ });
29
+ }, [length]);
30
+ const handleAnimationPause = useCallback(() => {
31
+ setIsPlaying(false);
32
+ }, []);
33
+ const handleAnimationPlay = useCallback(async () => {
34
+ if (!isChangingFrame) {
35
+ let emoteLength = length;
36
+ if (!length && controllerRef.current) {
37
+ emoteLength = await controllerRef.current.emote.getLength();
38
+ }
39
+ setIsPlaying(true);
40
+ setLength(emoteLength);
41
+ }
42
+ }, [length, isChangingFrame, controllerRef]);
43
+ const handleAnimationPlaying = useCallback(({ length: playingLength }) => {
44
+ setFrame(Math.ceil((playingLength ?? 0) * 100));
45
+ }, []);
46
+ useEffect(() => {
47
+ const controller = controllerRef.current;
48
+ if (!controller) {
49
+ return;
50
+ }
51
+ controller.emote.events.on(PreviewEmoteEventType.ANIMATION_PLAY, handleAnimationPlay);
52
+ controller.emote.events.on(PreviewEmoteEventType.ANIMATION_PLAYING, handleAnimationPlaying);
53
+ controller.emote.events.on(PreviewEmoteEventType.ANIMATION_END, handleAnimationEnd);
54
+ controller.emote.events.on(PreviewEmoteEventType.ANIMATION_PAUSE, handleAnimationPause);
55
+ controller.emote.events.on(PreviewEmoteEventType.ANIMATION_LOOP, handleAnimationLoop);
56
+ return () => {
57
+ controller.emote.events.off(PreviewEmoteEventType.ANIMATION_PLAY, handleAnimationPlay);
58
+ controller.emote.events.off(PreviewEmoteEventType.ANIMATION_PLAYING, handleAnimationPlaying);
59
+ controller.emote.events.off(PreviewEmoteEventType.ANIMATION_END, handleAnimationEnd);
60
+ controller.emote.events.off(PreviewEmoteEventType.ANIMATION_PAUSE, handleAnimationPause);
61
+ controller.emote.events.off(PreviewEmoteEventType.ANIMATION_LOOP, handleAnimationLoop);
62
+ };
63
+ }, [
64
+ controllerRef,
65
+ handleAnimationPlay,
66
+ handleAnimationPlaying,
67
+ handleAnimationEnd,
68
+ handleAnimationPause,
69
+ handleAnimationLoop,
70
+ ]);
71
+ useEffect(() => {
72
+ if (hasSound === undefined && isReady && controllerRef.current) {
73
+ controllerRef.current.emote
74
+ .hasSound()
75
+ .then((soundExists) => setHasSound(soundExists))
76
+ .catch((error) => {
77
+ console.error("Error checking sound:", error);
78
+ setHasSound(false);
79
+ });
80
+ }
81
+ }, [hasSound, isReady, controllerRef]);
82
+ const handlePlay = useCallback(async () => {
83
+ if (!controllerRef.current) {
84
+ return;
85
+ }
86
+ try {
87
+ await controllerRef.current.emote.play();
88
+ }
89
+ catch (error) {
90
+ console.error("Error playing emote:", error);
91
+ }
92
+ }, [controllerRef]);
93
+ const handlePause = useCallback(async () => {
94
+ if (!controllerRef.current) {
95
+ return;
96
+ }
97
+ try {
98
+ await controllerRef.current.emote.pause();
99
+ }
100
+ catch (error) {
101
+ console.error("Error pausing emote:", error);
102
+ }
103
+ }, [controllerRef]);
104
+ const handlePlayPause = useCallback(async () => {
105
+ if (isPlaying) {
106
+ await handlePause();
107
+ }
108
+ else {
109
+ await handlePlay();
110
+ }
111
+ }, [isPlaying, handlePlay, handlePause]);
112
+ const handleSoundToggle = useCallback(() => {
113
+ if (isSoundEnabled) {
114
+ controllerRef.current?.emote.disableSound();
115
+ }
116
+ else {
117
+ controllerRef.current?.emote.enableSound();
118
+ }
119
+ setIsSoundEnabled(!isSoundEnabled);
120
+ }, [isSoundEnabled, controllerRef]);
121
+ const handleFrameChange = useCallback(async (value) => {
122
+ if (isNaN(value) || !controllerRef.current) {
123
+ return;
124
+ }
125
+ let targetValue = value;
126
+ const currentLength = length ?? 0;
127
+ if (currentLength * 100 < value) {
128
+ targetValue = currentLength * 100;
129
+ }
130
+ setFrame(targetValue);
131
+ setIsChangingFrame(true);
132
+ try {
133
+ if (isPlaying) {
134
+ await controllerRef.current.emote.pause();
135
+ setShouldResumePlaying(true);
136
+ }
137
+ await controllerRef.current.emote.goTo(targetValue / 100);
138
+ }
139
+ catch (error) {
140
+ console.error("Error changing frame:", error);
141
+ }
142
+ }, [length, isPlaying, controllerRef]);
143
+ const handleMouseUp = useCallback(async () => {
144
+ setIsChangingFrame(false);
145
+ if (shouldResumePlaying && controllerRef.current) {
146
+ try {
147
+ await controllerRef.current.emote.play();
148
+ }
149
+ catch (error) {
150
+ console.error("Error resuming play:", error);
151
+ }
152
+ setShouldResumePlaying(false);
153
+ }
154
+ }, [shouldResumePlaying, controllerRef]);
155
+ return (_jsxs(StyledEmoteControlsContainer, { className: className, children: [hidePlayButton ? null : renderPlayButton ? (renderPlayButton({
156
+ isPlaying,
157
+ onPlay: handlePlay,
158
+ onPause: handlePause,
159
+ onToggle: handlePlayPause,
160
+ })) : (_jsx(StyledPlayButton, { onClick: handlePlayPause, children: isPlaying ? _jsx(PauseIcon, {}) : _jsx(PlayArrowIcon, {}) })), !hideProgressInput ? (renderProgressBar ? (renderProgressBar({
161
+ frame,
162
+ length: length ?? 0,
163
+ onChange: handleFrameChange,
164
+ onMouseUp: handleMouseUp,
165
+ })) : (_jsx(StyledRangeInput, { type: "range", value: frame, max: Math.ceil((length ?? 0) * 100), min: 0, step: 1, onChange: (e) => handleFrameChange(Number(e.target.value)), onMouseUp: handleMouseUp }))) : null, hideFrameInput ? null : (_jsx(StyledFrameControl, { children: renderFrameInput ? (renderFrameInput({
166
+ frame: Math.round(frame / 100),
167
+ onChange: (value) => handleFrameChange(value * 100),
168
+ })) : (_jsx(StyledFrameInput, { type: "number", value: Math.round(frame / 100), onChange: (e) => handleFrameChange(Number(e.target.value) * 100) })) })), hideSoundButton || !hasSound ? null : renderSoundButton ? (renderSoundButton({
169
+ isSoundEnabled,
170
+ hasSound,
171
+ onToggle: handleSoundToggle,
172
+ })) : (_jsx(StyledSoundButton, { muted: !isSoundEnabled, onClick: handleSoundToggle, children: isSoundEnabled ? _jsx(VolumeUpIcon, {}) : _jsx(VolumeOffIcon, {}) }))] }));
173
+ };
174
+ //# sourceMappingURL=EmoteControls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmoteControls.js","sourceRoot":"","sources":["../../../../src/components/WearablePreview/EmoteControls/EmoteControls.tsx"],"names":[],"mappings":";AAAA,yDAAyD;AACzD,OAAc,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0DAA0D,CAAA;AAChG,OAAO,SAAS,MAAM,2BAA2B,CAAA;AACjD,OAAO,aAAa,MAAM,+BAA+B,CAAA;AACzD,OAAO,aAAa,MAAM,+BAA+B,CAAA;AACzD,OAAO,YAAY,MAAM,8BAA8B,CAAA;AACvD,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAA;AAE9E,OAAO,EACL,4BAA4B,EAC5B,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,wBAAwB,CAAA;AAE/B,MAAM,CAAC,MAAM,aAAa,GAAiC,CAAC,EAC1D,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,yBAAyB,EACzB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,GACjB,EAAE,EAAE;IACH,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,4BAA4B,CAC7D,iBAAiB,EACjB,yBAAyB,CAC1B,CAAA;IAED,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IACrC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACjD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAqB,SAAS,CAAC,CAAA;IACnE,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3D,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAsB,SAAS,CAAC,CAAA;IACxE,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACrE,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAE7D,MAAM,mBAAmB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC3C,QAAQ,CAAC,CAAC,CAAC,CAAA;IACb,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,kBAAkB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC1C,YAAY,CAAC,KAAK,CAAC,CAAA;QACnB,QAAQ,CAAC,CAAC,YAAY,EAAE,EAAE;YACxB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,CAAA;YACjC,OAAO,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAA;QAC3E,CAAC,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAEZ,MAAM,oBAAoB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5C,YAAY,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,mBAAmB,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACjD,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,IAAI,WAAW,GAAG,MAAM,CAAA;YACxB,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;gBACrC,WAAW,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,CAAA;YAC7D,CAAC;YACD,YAAY,CAAC,IAAI,CAAC,CAAA;YAClB,SAAS,CAAC,WAAW,CAAC,CAAA;QACxB,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC,CAAA;IAE5C,MAAM,sBAAsB,GAAG,WAAW,CACxC,CAAC,EAAE,MAAM,EAAE,aAAa,EAAsB,EAAE,EAAE;QAChD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;IACjD,CAAC,EACD,EAAE,CACH,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAA;QACxC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAM;QACR,CAAC;QAED,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CACxB,qBAAqB,CAAC,cAAc,EACpC,mBAAmB,CACpB,CAAA;QAED,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CACxB,qBAAqB,CAAC,iBAAiB,EACvC,sBAAsB,CACvB,CAAA;QAED,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CACxB,qBAAqB,CAAC,aAAa,EACnC,kBAAkB,CACnB,CAAA;QAED,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CACxB,qBAAqB,CAAC,eAAe,EACrC,oBAAoB,CACrB,CAAA;QAED,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CACxB,qBAAqB,CAAC,cAAc,EACpC,mBAAmB,CACpB,CAAA;QAED,OAAO,GAAG,EAAE;YACV,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CACzB,qBAAqB,CAAC,cAAc,EACpC,mBAAmB,CACpB,CAAA;YACD,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CACzB,qBAAqB,CAAC,iBAAiB,EACvC,sBAAsB,CACvB,CAAA;YACD,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CACzB,qBAAqB,CAAC,aAAa,EACnC,kBAAkB,CACnB,CAAA;YACD,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CACzB,qBAAqB,CAAC,eAAe,EACrC,oBAAoB,CACrB,CAAA;YACD,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CACzB,qBAAqB,CAAC,cAAc,EACpC,mBAAmB,CACpB,CAAA;QACH,CAAC,CAAA;IACH,CAAC,EAAE;QACD,aAAa;QACb,mBAAmB;QACnB,sBAAsB;QACtB,kBAAkB;QAClB,oBAAoB;QACpB,mBAAmB;KACpB,CAAC,CAAA;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;YAC/D,aAAa,CAAC,OAAO,CAAC,KAAK;iBACxB,QAAQ,EAAE;iBACV,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;iBAC/C,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAA;gBAC7C,WAAW,CAAC,KAAK,CAAC,CAAA;YACpB,CAAC,CAAC,CAAA;QACN,CAAC;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAA;IAEtC,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACxC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YAC3B,OAAM;QACR,CAAC;QACD,IAAI,CAAC;YACH,MAAM,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAA;QAC9C,CAAC;IACH,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAA;IAEnB,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACzC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YAC3B,OAAM;QACR,CAAC;QACD,IAAI,CAAC;YACH,MAAM,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAA;QAC9C,CAAC;IACH,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAA;IAEnB,MAAM,eAAe,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC7C,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,WAAW,EAAE,CAAA;QACrB,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,EAAE,CAAA;QACpB,CAAC;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAA;IAExC,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE;QACzC,IAAI,cAAc,EAAE,CAAC;YACnB,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,YAAY,EAAE,CAAA;QAC7C,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,WAAW,EAAE,CAAA;QAC5C,CAAC;QACD,iBAAiB,CAAC,CAAC,cAAc,CAAC,CAAA;IACpC,CAAC,EAAE,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC,CAAA;IAEnC,MAAM,iBAAiB,GAAG,WAAW,CACnC,KAAK,EAAE,KAAa,EAAE,EAAE;QACtB,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YAC3C,OAAM;QACR,CAAC;QACD,IAAI,WAAW,GAAG,KAAK,CAAA;QACvB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,CAAA;QACjC,IAAI,aAAa,GAAG,GAAG,GAAG,KAAK,EAAE,CAAC;YAChC,WAAW,GAAG,aAAa,GAAG,GAAG,CAAA;QACnC,CAAC;QACD,QAAQ,CAAC,WAAW,CAAC,CAAA;QACrB,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACxB,IAAI,CAAC;YACH,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;gBACzC,sBAAsB,CAAC,IAAI,CAAC,CAAA;YAC9B,CAAC;YACD,MAAM,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,CAAA;QAC3D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAA;QAC/C,CAAC;IACH,CAAC,EACD,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC,CACnC,CAAA;IAED,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC3C,kBAAkB,CAAC,KAAK,CAAC,CAAA;QACzB,IAAI,mBAAmB,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;YACjD,IAAI,CAAC;gBACH,MAAM,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;YAC1C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAA;YAC9C,CAAC;YACD,sBAAsB,CAAC,KAAK,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC,EAAE,CAAC,mBAAmB,EAAE,aAAa,CAAC,CAAC,CAAA;IAExC,OAAO,CACL,MAAC,4BAA4B,IAAC,SAAS,EAAE,SAAS,aAC/C,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAC1C,gBAAgB,CAAC;gBACf,SAAS;gBACT,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,WAAW;gBACpB,QAAQ,EAAE,eAAe;aAC1B,CAAC,CACH,CAAC,CAAC,CAAC,CACF,KAAC,gBAAgB,IAAC,OAAO,EAAE,eAAe,YACvC,SAAS,CAAC,CAAC,CAAC,KAAC,SAAS,KAAG,CAAC,CAAC,CAAC,KAAC,aAAa,KAAG,GAC7B,CACpB,EAEA,CAAC,iBAAiB,CAAC,CAAC,CAAC,CACpB,iBAAiB,CAAC,CAAC,CAAC,CAClB,iBAAiB,CAAC;gBAChB,KAAK;gBACL,MAAM,EAAE,MAAM,IAAI,CAAC;gBACnB,QAAQ,EAAE,iBAAiB;gBAC3B,SAAS,EAAE,aAAa;aACzB,CAAC,CACH,CAAC,CAAC,CAAC,CACF,KAAC,gBAAgB,IACf,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EACnC,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAC1D,SAAS,EAAE,aAAa,GACxB,CACH,CACF,CAAC,CAAC,CAAC,IAAI,EAEP,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACvB,KAAC,kBAAkB,cAChB,gBAAgB,CAAC,CAAC,CAAC,CAClB,gBAAgB,CAAC;oBACf,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;oBAC9B,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,GAAG,GAAG,CAAC;iBACpD,CAAC,CACH,CAAC,CAAC,CAAC,CACF,KAAC,gBAAgB,IACf,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,EAC9B,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAChE,CACH,GACkB,CACtB,EAEA,eAAe,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CACzD,iBAAiB,CAAC;gBAChB,cAAc;gBACd,QAAQ;gBACR,QAAQ,EAAE,iBAAiB;aAC5B,CAAC,CACH,CAAC,CAAC,CAAC,CACF,KAAC,iBAAiB,IAAC,KAAK,EAAE,CAAC,cAAc,EAAE,OAAO,EAAE,iBAAiB,YAClE,cAAc,CAAC,CAAC,CAAC,KAAC,YAAY,KAAG,CAAC,CAAC,CAAC,KAAC,aAAa,KAAG,GACpC,CACrB,IAC4B,CAChC,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,26 @@
1
+ declare const StyledEmoteControlsContainer: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<import("@mui/material").Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
2
+ ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
3
+ }, keyof import("@mui/system").BoxOwnProps<import("@mui/material").Theme>> & {
4
+ theme?: import("@emotion/react").Theme;
5
+ }, {}, {}>;
6
+ declare const StyledPlayButton: import("@emotion/styled").StyledComponent<import("../../Button").ButtonProps & {
7
+ theme?: import("@emotion/react").Theme;
8
+ }, {}, {}>;
9
+ declare const StyledSoundButton: import("@emotion/styled").StyledComponent<import("../../Button").ButtonProps & {
10
+ theme?: import("@emotion/react").Theme;
11
+ } & {
12
+ muted?: boolean;
13
+ }, {}, {}>;
14
+ declare const StyledRangeInput: import("@emotion/styled").StyledComponent<{
15
+ theme?: import("@emotion/react").Theme;
16
+ as?: import("react").ElementType;
17
+ }, import("react").DetailedHTMLProps<import("react").InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, {}>;
18
+ declare const StyledFrameControl: import("@emotion/styled").StyledComponent<{
19
+ theme?: import("@emotion/react").Theme;
20
+ as?: import("react").ElementType;
21
+ }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
22
+ declare const StyledFrameInput: import("@emotion/styled").StyledComponent<{
23
+ theme?: import("@emotion/react").Theme;
24
+ as?: import("react").ElementType;
25
+ }, import("react").DetailedHTMLProps<import("react").InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, {}>;
26
+ export { StyledEmoteControlsContainer, StyledPlayButton, StyledSoundButton, StyledRangeInput, StyledFrameControl, StyledFrameInput, };
@@ -0,0 +1,98 @@
1
+ import styled from "@emotion/styled";
2
+ import { Box } from "@mui/material";
3
+ import { Button } from "../../Button";
4
+ const StyledEmoteControlsContainer = styled(Box)(({ theme }) => ({
5
+ display: "flex",
6
+ position: "absolute",
7
+ width: "100%",
8
+ bottom: 0,
9
+ margin: `${theme.spacing(2)} 0`,
10
+ padding: `0 ${theme.spacing(3)}`,
11
+ gap: theme.spacing(2),
12
+ }));
13
+ const StyledPlayButton = styled(Button)(({ theme }) => ({
14
+ width: 56,
15
+ height: 44,
16
+ padding: 0,
17
+ minWidth: "unset",
18
+ background: "rgba(0, 0, 0, 0.64) !important",
19
+ "& svg": {
20
+ marginLeft: theme.spacing(0.5),
21
+ },
22
+ }));
23
+ const StyledSoundButton = styled(Button)(({ theme, muted }) => ({
24
+ marginLeft: theme.spacing(2.5),
25
+ minWidth: 25,
26
+ background: "none",
27
+ padding: 0,
28
+ opacity: muted ? 0.5 : 1,
29
+ }));
30
+ const StyledRangeInput = styled("input")(({ theme }) => ({
31
+ flex: 1,
32
+ width: "100%",
33
+ background: "none",
34
+ WebkitAppearance: "none",
35
+ "&:focus": {
36
+ outline: "none",
37
+ },
38
+ "&::-webkit-slider-thumb": {
39
+ WebkitAppearance: "none",
40
+ width: 24,
41
+ height: 24,
42
+ borderRadius: 10,
43
+ backgroundColor: "#736e7d",
44
+ overflow: "visible",
45
+ cursor: "pointer",
46
+ paddingBottom: theme.spacing(0.625),
47
+ marginTop: theme.spacing(-0.5),
48
+ },
49
+ "&::-moz-range-thumb": {
50
+ width: 24,
51
+ height: 24,
52
+ borderRadius: 20,
53
+ backgroundColor: "#736e7d",
54
+ overflow: "visible",
55
+ cursor: "pointer",
56
+ border: "none",
57
+ },
58
+ "&::-ms-thumb": {
59
+ width: 24,
60
+ height: 24,
61
+ borderRadius: 20,
62
+ backgroundColor: "#736e7d",
63
+ overflow: "visible",
64
+ cursor: "pointer",
65
+ },
66
+ "&::-webkit-slider-runnable-track": {
67
+ width: 300,
68
+ height: 15,
69
+ background: "rgba(115, 110, 125, 0.32)",
70
+ border: "none",
71
+ borderRadius: 10,
72
+ },
73
+ "&::-moz-range-track": {
74
+ width: "100%",
75
+ height: 15,
76
+ borderRadius: 10,
77
+ cursor: "pointer",
78
+ background: "rgba(115, 110, 125, 0.32)",
79
+ },
80
+ }));
81
+ const StyledFrameControl = styled("div")({
82
+ display: "flex",
83
+ alignItems: "center",
84
+ });
85
+ const StyledFrameInput = styled("input")({
86
+ width: 56,
87
+ height: 44,
88
+ borderRadius: 5,
89
+ background: "transparent",
90
+ border: "1px solid rgba(115, 110, 125, 0.4)",
91
+ color: "white",
92
+ textAlign: "center",
93
+ "&:focus-visible": {
94
+ outline: "1px solid",
95
+ },
96
+ });
97
+ export { StyledEmoteControlsContainer, StyledPlayButton, StyledSoundButton, StyledRangeInput, StyledFrameControl, StyledFrameInput, };
98
+ //# sourceMappingURL=EmoteControls.styled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmoteControls.styled.js","sourceRoot":"","sources":["../../../../src/components/WearablePreview/EmoteControls/EmoteControls.styled.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import React from "react";
2
+ import { IPreviewController } from "@dcl/schemas";
3
+ export type EmoteControlsProps = {
4
+ wearablePreviewId: string;
5
+ className?: string;
6
+ hideFrameInput?: boolean;
7
+ hideProgressInput?: boolean;
8
+ hidePlayButton?: boolean;
9
+ hideSoundButton?: boolean;
10
+ wearablePreviewController?: IPreviewController;
11
+ renderPlayButton?: (props: {
12
+ isPlaying: boolean;
13
+ onPlay: () => Promise<void>;
14
+ onPause: () => Promise<void>;
15
+ onToggle: () => Promise<void>;
16
+ }) => React.ReactNode;
17
+ renderSoundButton?: (props: {
18
+ isSoundEnabled: boolean;
19
+ hasSound: boolean;
20
+ onToggle: () => void;
21
+ }) => React.ReactNode;
22
+ renderProgressBar?: (props: {
23
+ frame: number;
24
+ length: number;
25
+ onChange: (value: number) => Promise<void>;
26
+ onMouseUp: () => Promise<void>;
27
+ }) => React.ReactNode;
28
+ renderFrameInput?: (props: {
29
+ frame: number;
30
+ onChange: (value: number) => Promise<void>;
31
+ }) => React.ReactNode;
32
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=EmoteControls.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmoteControls.types.js","sourceRoot":"","sources":["../../../../src/components/WearablePreview/EmoteControls/EmoteControls.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export { EmoteControls } from "./EmoteControls";
2
+ export type { EmoteControlsProps } from "./EmoteControls.types";
@@ -0,0 +1,2 @@
1
+ export { EmoteControls } from "./EmoteControls";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/WearablePreview/EmoteControls/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ import { TranslationControlsProps } from "./TranslationControls.types";
3
+ export declare const TranslationControls: React.FC<TranslationControlsProps>;
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback } from "react";
3
+ import SwapVertIcon from "@mui/icons-material/SwapVert";
4
+ import { useWearablePreviewController } from "../useWearablePreviewController";
5
+ import { VerticalPosition, } from "./TranslationControls.types";
6
+ import { StyledIconWrapper, StyledSlider, StyledTranslationControlsContainer, StyledVerticalSliderContainer, } from "./TranslationControls.styled";
7
+ export const TranslationControls = ({ wearablePreviewId, vertical, className, verticalPosition = VerticalPosition.RIGHT, wearablePreviewController, }) => {
8
+ const { controllerRef } = useWearablePreviewController(wearablePreviewId, wearablePreviewController);
9
+ const handleControlTranslation = useCallback((_event, value) => {
10
+ const _value = Array.isArray(value) ? value[0] : value;
11
+ controllerRef.current?.scene.panCamera({ y: _value * -1 });
12
+ }, [controllerRef]);
13
+ return (_jsx(StyledTranslationControlsContainer, { className: className, verticalPosition: verticalPosition, children: vertical ? (_jsxs(StyledVerticalSliderContainer, { children: [_jsx(StyledIconWrapper, { children: _jsx(SwapVertIcon, {}) }), _jsx(StyledSlider, { orientation: "vertical", defaultValue: 0, step: 0.1, min: -2, max: 2, onChange: handleControlTranslation })] })) : null }));
14
+ };
15
+ //# sourceMappingURL=TranslationControls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TranslationControls.js","sourceRoot":"","sources":["../../../../src/components/WearablePreview/TranslationControls/TranslationControls.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,YAAY,MAAM,8BAA8B,CAAA;AACvD,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAA;AAC9E,OAAO,EAEL,gBAAgB,GACjB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,kCAAkC,EAClC,6BAA6B,GAC9B,MAAM,8BAA8B,CAAA;AAErC,MAAM,CAAC,MAAM,mBAAmB,GAAuC,CAAC,EACtE,iBAAiB,EACjB,QAAQ,EACR,SAAS,EACT,gBAAgB,GAAG,gBAAgB,CAAC,KAAK,EACzC,yBAAyB,GAC1B,EAAE,EAAE;IACH,MAAM,EAAE,aAAa,EAAE,GAAG,4BAA4B,CACpD,iBAAiB,EACjB,yBAAyB,CAC1B,CAAA;IACD,MAAM,wBAAwB,GAAG,WAAW,CAC1C,CAAC,MAAa,EAAE,KAAwB,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QACtD,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAA;IAC5D,CAAC,EACD,CAAC,aAAa,CAAC,CAChB,CAAA;IAED,OAAO,CACL,KAAC,kCAAkC,IACjC,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,gBAAgB,YAEjC,QAAQ,CAAC,CAAC,CAAC,CACV,MAAC,6BAA6B,eAC5B,KAAC,iBAAiB,cAChB,KAAC,YAAY,KAAG,GACE,EACpB,KAAC,YAAY,IACX,WAAW,EAAC,UAAU,EACtB,YAAY,EAAE,CAAC,EACf,IAAI,EAAE,GAAG,EACT,GAAG,EAAE,CAAC,CAAC,EACP,GAAG,EAAE,CAAC,EACN,QAAQ,EAAE,wBAAwB,GAClC,IAC4B,CACjC,CAAC,CAAC,CAAC,IAAI,GAC2B,CACtC,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,25 @@
1
+ import { HorizontalPosition, VerticalPosition } from "./TranslationControls.types";
2
+ declare const StyledTranslationControlsContainer: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<import("@mui/material").Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
3
+ ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
4
+ }, keyof import("@mui/system").BoxOwnProps<import("@mui/material").Theme>> & {
5
+ theme?: import("@emotion/react").Theme;
6
+ } & {
7
+ horizontalPosition?: HorizontalPosition;
8
+ verticalPosition?: VerticalPosition;
9
+ }, {}, {}>;
10
+ declare const StyledVerticalSliderContainer: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<import("@mui/material").Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
11
+ ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
12
+ }, keyof import("@mui/system").BoxOwnProps<import("@mui/material").Theme>> & {
13
+ theme?: import("@emotion/react").Theme;
14
+ }, {}, {}>;
15
+ declare const StyledIconWrapper: import("@emotion/styled").StyledComponent<import("@mui/system").BoxOwnProps<import("@mui/material").Theme> & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
16
+ ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
17
+ }, keyof import("@mui/system").BoxOwnProps<import("@mui/material").Theme>> & {
18
+ theme?: import("@emotion/react").Theme;
19
+ }, {}, {}>;
20
+ declare const StyledSlider: import("@emotion/styled").StyledComponent<import("@mui/material").SliderOwnProps & import("@mui/material/OverridableComponent").CommonProps & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & {
21
+ ref?: ((instance: HTMLSpanElement | null) => void) | import("react").RefObject<HTMLSpanElement> | null | undefined;
22
+ }, "disabled" | "components" | "color" | "scale" | "className" | "style" | "classes" | "sx" | "track" | "defaultValue" | "tabIndex" | "aria-label" | "aria-labelledby" | "aria-valuetext" | "onChange" | "size" | "name" | "value" | "slots" | "slotProps" | "orientation" | "componentsProps" | "max" | "disableSwap" | "getAriaLabel" | "getAriaValueText" | "marks" | "min" | "onChangeCommitted" | "shiftStep" | "step" | "valueLabelDisplay" | "valueLabelFormat"> & {
23
+ theme?: import("@emotion/react").Theme;
24
+ }, {}, {}>;
25
+ export { StyledIconWrapper, StyledSlider, StyledTranslationControlsContainer, StyledVerticalSliderContainer, };