UNPKG

@useloops/design-system

Version:

The official React based Loops design system

2 lines (1 loc) 10.8 kB
"use strict";var e=require("react/jsx-runtime"),r=require("react"),t=require("@mui/material"),i=require("@use-it/event-listener"),a=require("../../../utils/normaliseFloat.js");require("../../../utils/formValidation/misc.js"),require("../../BrandCore/Icon/Icon.js"),require("../../BrandCore/primitiveVariables.js"),require("../../WebCore/utils/typography.util.js"),require("../../WebCore/AnnualController/AnnualController.js"),require("../../WebCore/SelectItem/SelectItem.js"),require("../../WebCore/Accordion/Accordion.js"),require("../../WebCore/Animations/FadeIn.js"),require("../../WebCore/Typography/Typography.js"),require("@mui/icons-material"),require("../../WebCore/AutocompleteBaseField/_partials/AutocompleteListbox.js"),require("../../WebCore/AutocompleteBaseField/_partials/StyledPopper.js"),require("../../WebCore/AutocompleteBaseField/_partials/StyledAutocompleteField.js"),require("../../WebCore/AutocompleteBaseField/_partials/AutocompleteChip.js"),require("../../WebCore/AutocompleteBaseField/_partials/StyledAutocompleteInput.js"),require("merge-sx"),require("../../WebCore/Badge/Badge.js"),require("../../WebCore/Breadcrumb/Breadcrumb.js"),require("../../WebCore/Button/Button.js"),require("../../WebCore/ButtonBase/ButtonBase.js"),require("../../WebCore/ButtonTabGroup/_partials/ActiveIndicator.js"),require("../../WebCore/ButtonTabGroup/_partials/ButtonTabsWrapper.js"),require("../../WebCore/ButtonTabGroup/_partials/TabButton.js"),require("../../WebCore/Checkbox/StyledCheckbox.js"),require("../../WebCore/InputFieldBase/InputFieldBase.js"),require("../../WebCore/CreatableAutocomplete/CreatableAutocomplete.js"),require("../../WebCore/InputLabelBase/StyledInputLabelBase.js"),require("../../WebCore/Differential/DifferentialContainer.js"),require("../../WebCore/Differential/DifferentialRadio.js"),require("../../WebCore/DropdownMenu/StyledMenu.js"),require("../../WebCore/ExpandableTypographyClamp/ExpandableTypographyClamp.js"),require("../../WebCore/FormGenerator/FormGenerator.js"),require("../../WebCore/GridOverlay/GridOverlay.js"),require("html-react-parser"),require("../../WebCore/IconButton/IconButton.js"),require("../../WebCore/IconButtonBase/IconButtonBase.js"),require("../../WebCore/IconButtonGroup/IconButtonGroup.js"),require("../../WebCore/Image/Image.js"),require("../../WebCore/KbdGroup/Kbd.js"),require("../../WebCore/KbdGroup/KbdGroup.js"),require("../../WebCore/KeyValueLabel/KeyValueLabel.js"),require("../../WebCore/Label/Label.js"),require("../../WebCore/Likert/LikertContainer.js"),require("../../WebCore/Likert/LikertLabel.js"),require("../../WebCore/Likert/LikertRadio.js"),require("../../WebCore/Link/StyledLink.js"),require("@lottiefiles/dotlottie-react"),require("../../WebCore/LoopsAiButton/LoopsAiButton.js"),require("markdown-to-jsx"),require("material-ui-popup-state/hooks");var o=require("../../WebCore/Surface/Surface.js");require("../../WebCore/Menu/MenuItem.js"),require("../../WebCore/ModalLayout/_partials/ModalActionsWrapper.js"),require("../../WebCore/ModalLayout/_partials/ModalContentWrapper.js"),require("../../WebCore/NavigationButton/NavigationButton.js"),require("../../WebCore/Nudge/NudgeButton.js"),require("../../WebCore/NumberField/NumberField.js"),require("../../BrandCore/colorRamps.js"),require("../../BrandCore/semanticColor.js"),require("../../BrandCore/types.js"),require("../../BrandCore/typography.js"),require("../../WebCore/Progress/Progress.js"),require("../../WebCore/Pill/StyledPill.js"),require("../../WebCore/ProgressBar/ProgressBar.js"),require("../../WebCore/Radio/StyledRadio.js"),require("../../WebCore/Select/StyledSelect.js"),require("../../WebCore/RankItem/RankItemContainer.js"),require("../../WebCore/RankItem/RankItemLabel.js"),require("../../WebCore/SortableList/SortableList.js"),require("../../WebCore/SortableList/components/SortableItem/SortableItem.js"),require("../../WebCore/SortableList/components/SortableOverlay/SortableOverlay.js"),require("@tiptap/extension-placeholder"),require("@tiptap/starter-kit"),require("mui-tiptap"),require("../../WebCore/RichTextField/StyledRichTextEditor.js"),require("../../WebCore/Skeleton/Skeleton.js"),require("../../WebCore/Slider/StyledSlider.js"),require("../../WebCore/StarRating/StarRating.js"),require("../../WebCore/Switch/StyledSwitch.js"),require("../../WebCore/Textarea/Textarea.js"),require("../../WebCore/TrialCard/TrialCardContainers.js"),require("../../WebCore/TrialCard/TrialPill.js"),require("../../WebCore/UserMenu/UserMenuButton.js"),require("../../WebCore/VideoModal/VideoModal.js");var n=require("./components/ActionButton/ActionButton.js"),s=require("./components/Timeline/Timeline.js");function l(e){return e&&e.__esModule?e:{default:e}}var u=l(i);const d=t.styled(o)(({theme:e})=>({display:"flex",flex:1,padding:e.spacing(e.custom.padding.md),borderColor:e.custom.palette.stroke.light,borderWidth:1,gap:e.spacing(e.custom.padding.sm),borderStyle:"solid",flexDirection:"column"})),m=t.styled(t.Stack)(({theme:e})=>({alignItems:"center",gap:e.spacing(e.custom.padding.md),justifyContent:"space-between",flexDirection:"row",flex:1})),b=r.forwardRef(({id:t,videoElement:i,initialEndTime:o=0,initialCurrentTime:l=0,initialMuted:b,initialVolume:c,markers:p,options:C,slots:f,events:{onEnd:q,onPlay:g,onSeekEnd:j,onSeeking:y,onSeekStart:W,onTimeUpdate:T,onPause:k,onVolumeChange:B,onVolumeMute:v,onRestart:S,onFirstPlay:h,onFirstEnded:F,onReset:I}={},videoSeekTime:E,slotProps:x},L)=>{const[P,A]=r.useState(!1),[w,M]=r.useState([]),R={rtl:!1,volumeControls:!0,normaliseTime:!1,markerIndicatorMode:"time",markerIndicator:!1,markerIndicatorSize:3,volumeControlsType:"mute",disableBufferingEvents:!1,...C},[{seeking:G,endTime:V,currentTime:_,playing:D,buffering:K,loaded:N,ended:O,volume:z,muted:U,startTime:H,firstPlay:J,firstEnded:Q},X]=r.useState({startTime:a.normaliseFloat(R.normaliseTime?l:0),endTime:a.normaliseFloat(R.normaliseTime?o:i.duration),currentTime:a.normaliseFloat(l??0),loaded:!0,ended:!1,firstPlay:!1,firstEnded:!1,seeking:!1,playing:!1,volume:c||1,muted:b||!1,buffering:!1});r.useEffect(()=>{if(i.muted=U,i.volume=z,R.normaliseTime&&(void 0===o||void 0===l))throw new Error("Please supply an initial end time and initial currentTime for normalising time in VideoControls.tsx");return()=>{le()}},[]),r.useEffect(()=>{X(e=>({...e,startTime:a.normaliseFloat(R.normaliseTime?l:0),endTime:a.normaliseFloat(R.normaliseTime?o:i.duration),currentTime:a.normaliseFloat(l??0)})),i.currentTime=a.normaliseFloat(l??0)},[l,o]);const Y=r.useCallback(()=>{X(e=>({...e,playing:!1,ended:!0,...!Q&&{firstEnded:!0}})),q&&q(),!Q&&F&&F()},[Q]);r.useEffect(()=>{if(!i||null==E)return;(async()=>{const e=!i.paused,r=E===V;X(e=>({...e,playing:!1,currentTime:a.normaliseFloat(E)})),await new Promise(e=>{const r=()=>{i.removeEventListener("seeked",r),e()};i.addEventListener("seeked",r),setTimeout(e,500)}),X(e=>({...e,currentTime:a.normaliseFloat(E)})),await new Promise(e=>setTimeout(e,50)),X(t=>({...t,playing:e,currentTime:a.normaliseFloat(r?E-.001:E+.001)}))})().catch(e=>{console.error("Error seeking video:",e)})},[E,i]);const Z=r.useCallback(e=>{X(r=>({...r,muted:e.target?.muted,volume:"number"==typeof e.target?.volume?e.target?.volume:1})),U!==e.target?.muted&&v&&v(!U),z!==e.target?.volume&&B&&B(z)},[U,z]),$=r.useCallback(()=>{const e=a.normaliseFloat(i.currentTime)>=V&&V!==a.normaliseFloat(i.duration)&&!O,r=a.normaliseFloat(i.currentTime)>=V&&V===a.normaliseFloat(i.duration)&&!O&&!D;(e||r)&&(i.pause(),i.dispatchEvent(new Event("ended"))),X(e=>({...e,currentTime:a.normaliseFloat(i.currentTime)})),T&&T(a.normaliseFloat(i.currentTime))},[V,O,D]),ee=r.useCallback(()=>{X(e=>({...e,playing:!1})),k&&k()},[_]),re=r.useCallback(()=>{X(e=>({...e,playing:!0,ended:!1,...!R?.disableBufferingEvents&&{buffering:!1},...!J&&{firstPlay:!0}})),!J&&h&&h(),g&&g()},[J,R?.disableBufferingEvents]),te=r.useCallback(()=>{R?.disableBufferingEvents||X(e=>({...e,buffering:!0}))},[R?.disableBufferingEvents]),ie=r.useCallback(()=>{R?.disableBufferingEvents||X(e=>({...e,buffering:!1}))},[K,R?.disableBufferingEvents]),ae=r.useCallback(()=>{if(R?.disableBufferingEvents)return;const e=[];for(let r=0;r<i.buffered.length;r++){const t=i.buffered.start(r),a=i.buffered.end(r);if(a>=H&&t<=V){const r=Math.max(t,H),i=Math.min(a,V);e.push({start:r-H,end:i-H,startPercent:(r-H)/(V-H)*100,widthPercent:(i-r)/(V-H)*100})}}M(e)},[G,V,_,D,K,N,O,z,U,H,w,R?.disableBufferingEvents]),oe=r.useCallback(async e=>{D&&le(),i.currentTime=H,e&&await se(),S&&S()},[D,_,H,V,O]),ne=r.useCallback(async()=>{D&&le(),i.currentTime=H,X(e=>({...e,startTime:a.normaliseFloat(R.normaliseTime?l:0),endTime:a.normaliseFloat(R.normaliseTime?o:i.duration),currentTime:a.normaliseFloat(l??0),loaded:!0,ended:!1,firstPlay:!1,firstEnded:!1,seeking:!1,playing:!1})),I&&I()},[D,_,H,V,O,l,o]),se=async()=>{await i.play()},le=()=>{i.pause()},ue=r.useCallback(e=>{i.currentTime=a.normaliseFloat(e),X(r=>({...r,currentTime:a.normaliseFloat(e),ended:!1,seeking:!0,...!R?.disableBufferingEvents&&{buffering:!1},firstPlay:!J||r.firstPlay,bufferProgress:e})),y&&y(e),!J&&h&&h()},[K,J,R?.disableBufferingEvents]),de=r.useCallback(async()=>{document.hidden?D&&!i.paused?(A(!0),le()):A(!1):(P&&!D&&await se(),A(!1))},[D,P,le,se,i]),me=r.useCallback(e=>{e&&i.pause(),X(e=>({...e,seeking:!0})),W&&W()},[O]),be=r.useCallback(async(e,r,t)=>{r&&(i.currentTime=r),e&&!O&&await i.play(),t&&D&&i.pause(),X(e=>({...e,...r?{currentTime:r}:{},ended:!t&&e.ended,seeking:!1})),j&&j(r)},[D,O,K,G]);return u.default("visibilitychange",de,document),u.default("pause",ee,i),u.default("playing",re,i),u.default("timeupdate",$,i),u.default("ended",Y,i),u.default("volumechange",Z,i),u.default("waiting",te,i),u.default("canplay",ie,i),u.default("progress",ae,i),r.useImperativeHandle(L,()=>({play:se,pause:le,restart:oe,reset:ne,seek:(e,r,t)=>be(r,e,t),videoState:{seeking:G,endTime:V,currentTime:_,playing:D,buffering:K,loaded:N,ended:O,volume:z,firstPlay:J,firstEnded:Q,muted:U,startTime:H}})),e.jsxs(d,{variation:"raised",borderradius:"xl",id:t,sx:x?.paperContainer?.sx,children:[e.jsxs(m,{...R?.rtl&&{dir:"rtl"},children:[e.jsx(n,{seeking:G,playing:D,ended:O,buffering:K,handleAction:async()=>{O?await oe(!0):D?le():await se()}}),e.jsx(s,{handleSeeking:ue,handleSeekEnd:be,handleSeekStart:me,ended:O,marker:f?.marker,markers:p,markerIndicatorMode:R.markerIndicatorMode,markerIndicatorSize:R.markerIndicatorSize,markerIndicator:R.markerIndicator,startTime:R.normaliseTime?H:0,currentTime:_,endTime:V,playing:D,bufferRanges:w,buffering:K,volume:z,muted:U,volumeControls:R.volumeControls,volumeControlsType:R.volumeControlsType,handleVolumeMute:()=>{i.muted=!U},handleVolumeChange:e=>{i.volume=e,U&&(i.muted=!1)}})]}),f?.bottom]})});var c=r.memo(b);module.exports=c;