@aigamo/hydrangean-diva 0.0.1-alpha.6 → 0.0.1-alpha.8

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/index.cjs.js CHANGED
@@ -1,2 +1,45 @@
1
- "use strict";var w=Object.defineProperty;var O=(n,e,i)=>e in n?w(n,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):n[e]=i;var p=(n,e,i)=>O(n,typeof e!="symbol"?e+"":e,i);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("@aigamo/nostalgic-diva"),s=require("@elastic/eui"),c=require("@fluentui/react-icons"),h=require("mobx-react-lite"),t=require("react"),F=require("react-sortablejs"),a=require("mobx"),T=require("lodash-es"),R=require("ajv");var u=(n=>(n.Off="Off",n.All="All",n.One="One",n))(u||{});const x=80,M=h.observer(({playerStore:n})=>{const e=g.useNostalgicDiva(),i=t.useCallback(l=>{const m=Number(l.currentTarget.value)/100;n.setPercent(m)},[n]),o=t.useCallback(l=>{l.button===0&&n.setSeeking(!0)},[n]),r=t.useCallback(async l=>{if(l.button===0){const m=Number(l.currentTarget.value)/100;n.setSeeking(!1);const d=await e.getDuration();d!==void 0&&await e.setCurrentTime(d*m)}},[n,e]);return t.createElement(s.EuiRange,{min:0,max:100,step:1e-7,value:n.percent*100,onChange:i,onMouseDown:o,onMouseUp:r,fullWidth:!0,showRange:!0,css:{blockSize:32}})}),A=t.memo(({button:n,isOpen:e,closePopover:i})=>{const[o,r]=t.useState("0"),l=g.useNostalgicDiva();t.useLayoutEffect(()=>{e&&l.getVolume().then(d=>{d!==void 0&&r(Math.floor(d*100).toString())})},[e,l]);const m=t.useCallback(async d=>{r(d.currentTarget.value),await l.setVolume(Number(d.currentTarget.value)/100)},[l]);return t.createElement(s.EuiPopover,{button:n,isOpen:e,closePopover:i,anchorPosition:"upRight"},t.createElement(s.EuiFormRow,null,t.createElement(s.EuiFlexGroup,{responsive:!1,gutterSize:"s",justifyContent:"center",alignItems:"center"},t.createElement(s.EuiButtonIcon,{title:"Mute","aria-label":"Mute",iconType:c.Speaker2Regular,size:"s",iconSize:"l"}),t.createElement(s.EuiRange,{min:0,max:100,step:1,value:o,onChange:m,css:{blockSize:32}}))))}),z=t.memo(({playQueueStore:n,closePopover:e})=>{const i=g.useNostalgicDiva(),o=t.useCallback(async()=>{const E=await i.getCurrentTime();E!==void 0&&await i.setCurrentTime(E-10),e()},[i,e]),r=t.useCallback(async()=>{const E=await i.getCurrentTime();E!==void 0&&await i.setCurrentTime(E+30),e()},[i,e]),l=t.useCallback(async E=>{await i.setPlaybackRate(E),e()},[i,e]),m=t.useCallback(async()=>{n.currentItem!==void 0&&await n.removeItems([n.currentItem]),e()},[n,e]),[d]=t.useState(),v=t.useMemo(()=>[{id:0,items:[{name:"Speed",icon:t.createElement(s.EuiIcon,{type:c.TopSpeedRegular,size:"m"}),panel:1},{name:"Skip back 10 seconds",icon:t.createElement(s.EuiIcon,{type:c.SkipBack10Regular,size:"m"}),onClick:o,disabled:n.isEmpty},{name:"Skip forward 30 seconds",icon:t.createElement(s.EuiIcon,{type:c.SkipForward30Regular,size:"m"}),onClick:r,disabled:n.isEmpty},{isSeparator:!0},{name:"Remove from play queue",icon:t.createElement(s.EuiIcon,{type:c.DismissRegular,size:"m"}),onClick:m,disabled:n.isEmpty}]},{id:1,title:"Speed",items:[.25,.5,.75,1,1.25,1.5,1.75,2].map(E=>({name:E.toString(),onClick:()=>l(E),icon:E===d?"check":"empty"}))}],[n,o,r,m,l,d]);return t.createElement(s.EuiContextMenu,{initialPanelId:0,panels:v})}),B=t.memo(({playQueueStore:n,button:e,isOpen:i,closePopover:o})=>t.createElement(s.EuiPopover,{button:e,isOpen:i,closePopover:o,panelPaddingSize:"none",anchorPosition:"upRight"},t.createElement(z,{playQueueStore:n,closePopover:o}))),N={[u.Off]:c.ArrowRepeatAllOffFilled,[u.All]:c.ArrowRepeatAllFilled,[u.One]:c.ArrowRepeat1Filled},D=h.observer(({playerStore:n,playQueueStore:e})=>{const i=g.useNostalgicDiva(),o=t.useCallback(async()=>{if(e.hasPreviousItem){const r=await i.getCurrentTime();r===void 0||r<5?await e.previous():await i.setCurrentTime(0)}else await i.setCurrentTime(0)},[e,i]);return t.createElement(s.EuiFlexGroup,{responsive:!1,gutterSize:"s",justifyContent:"center",alignItems:"center"},t.createElement(s.EuiButtonIcon,{title:`Shuffle: ${e.shuffle?"On":"Off"}`,"aria-label":`Shuffle: ${e.shuffle?"On":"Off"}`,iconType:e.shuffle?c.ArrowShuffleFilled:c.ArrowShuffleOffFilled,size:"s",iconSize:"l",onClick:e.toggleShuffle,disabled:!0}),t.createElement(s.EuiButtonIcon,{title:"Previous","aria-label":"Previous",iconType:c.PreviousFilled,size:"s",iconSize:"l",onClick:o,disabled:e.isEmpty}),n.playing?t.createElement(s.EuiButtonIcon,{title:"Pause","aria-label":"Pause",iconType:c.PauseFilled,size:"s",iconSize:"l",onClick:()=>i.pause(),disabled:!e.canPlay}):t.createElement(s.EuiButtonIcon,{title:"Play","aria-label":"Play",iconType:c.PlayFilled,size:"s",iconSize:"l",onClick:()=>i.play(),disabled:!e.canPlay}),t.createElement(s.EuiButtonIcon,{title:"Next","aria-label":"Next",iconType:c.NextFilled,size:"s",iconSize:"l",onClick:e.next,disabled:!e.hasNextItem}),t.createElement(s.EuiButtonIcon,{title:`Repeat: ${e.repeat===u.All?"All":e.repeat===u.One?"One":"Off"}`,"aria-label":`Repeat: ${e.repeat===u.All?"All":e.repeat===u.One?"One":"Off"}`,iconType:N[e.repeat],size:"s",iconSize:"l",onClick:e.toggleRepeat}))}),L=t.memo(()=>{const[n,e]=t.useState(!1),i=()=>e(!n);return t.createElement(A,{button:t.createElement(s.EuiButtonIcon,{title:"Volume","aria-label":"Volume",iconType:c.Speaker2Regular,size:"s",iconSize:"l",onClick:i}),isOpen:n,closePopover:()=>e(!1)})}),V=t.memo(({playQueueStore:n})=>{const[e,i]=t.useState(!1),o=()=>i(!e);return t.createElement(B,{playQueueStore:n,button:t.createElement(s.EuiButtonIcon,{title:"More options","aria-label":"More options",iconType:c.MoreHorizontalFilled,size:"s",iconSize:"l",onClick:o}),isOpen:e,closePopover:()=>i(!1)})}),H=t.memo(({playQueueStore:n})=>t.createElement(s.EuiFlexGroup,{responsive:!1,gutterSize:"s",justifyContent:"flexEnd",alignItems:"center"},t.createElement(L,null),t.createElement(V,{playQueueStore:n}))),j=h.observer(({playerStore:n,playQueueStore:e})=>t.createElement(s.EuiBottomBar,{paddingSize:"s"},t.createElement(s.EuiFlexGroup,{direction:"column",gutterSize:"none"},t.createElement(s.EuiFlexItem,null,t.createElement(M,{playerStore:n})),t.createElement(s.EuiFlexItem,null,t.createElement(s.EuiFlexGroup,{responsive:!1},t.createElement(s.EuiFlexItem,{css:{width:"calc(100% / 3)"}}),t.createElement(s.EuiFlexItem,{css:{width:"calc(100% / 3)"}},t.createElement(D,{playerStore:n,playQueueStore:e})),t.createElement(s.EuiFlexItem,{css:{width:"calc(100% / 3)"}},t.createElement(H,{playQueueStore:e}))))))),q=({onCancel:n,onSave:e})=>{const[i,o]=t.useState(""),[r,l]=t.useState(""),[m,d]=t.useState(!1);return t.createElement(s.EuiModal,{onClose:n,initialFocus:"[name=url]"},t.createElement(s.EuiModalHeader,null,t.createElement(s.EuiModalHeaderTitle,null,"Add video")),t.createElement(s.EuiModalBody,null,t.createElement(s.EuiForm,{component:"form"},t.createElement(s.EuiFormRow,{label:"URL"},t.createElement(s.EuiFieldText,{name:"url",value:i,onChange:v=>o(v.target.value)})),t.createElement(s.EuiFormRow,{label:"Title"},t.createElement(s.EuiFieldText,{name:"title",value:r,onChange:v=>l(v.target.value)})))),t.createElement(s.EuiModalFooter,null,t.createElement(s.EuiButtonEmpty,{onClick:n},"Cancel"),t.createElement(s.EuiButton,{type:"submit",onClick:async()=>{try{d(!0),await e({url:i,title:r})}finally{d(!1)}},fill:!0,disabled:i.trim().length===0,isLoading:m},"Save")))};function U(n){return n!==null&&typeof n=="object"&&"title"in n&&typeof n.title=="string"}const $=t.memo(({playQueueStore:n})=>{const[e,i]=t.useState(!1),o=t.useCallback(async r=>{const l=g.findVideoService(r.url);if(l!==void 0){const m=l.extractVideoId(r.url);if(m!==void 0){const v=await(await fetch(`https://noembed.com/embed?url=${encodeURIComponent(r.url)}`)).json();await n.addItems([n.createItem({url:r.url,type:l.type,videoId:m,title:r.title||(U(v)?v.title:m)})])}}i(!1)},[n]);return t.createElement(t.Fragment,null,t.createElement(s.EuiButton,{onClick:()=>i(!0),iconType:c.AddRegular,color:"primary"},"Add video"),e&&t.createElement(q,{onCancel:()=>i(!1),onSave:o}))}),G=h.observer(({playQueueStore:n})=>{const{euiTheme:e}=s.useEuiTheme();return t.createElement(s.EuiTableHeader,{style:{position:"sticky",top:112,zIndex:998,background:e.colors.backgroundBasePlain}},t.createElement(s.EuiTableHeaderCellCheckbox,null,t.createElement(s.EuiCheckbox,{id:"",checked:n.allItemsSelected,onChange:i=>{n.allItemsSelected=i.target.checked}})),t.createElement(s.EuiTableHeaderCell,{width:24}),t.createElement(s.EuiTableHeaderCell,null,"Title"),t.createElement(s.EuiTableHeaderCell,null))}),J=t.memo(({item:n,closePopover:e})=>{const i=t.memo(({onClick:o,...r})=>{const l=t.useCallback(m=>{e(),o==null||o(m)},[o]);return t.createElement(s.EuiContextMenuItem,{...r,onClick:l})});return t.createElement(s.EuiContextMenuPanel,null,t.createElement(i,{icon:t.createElement(s.EuiIcon,{type:""}),onClick:n.playFirst},"Play first"),t.createElement(i,{icon:t.createElement(s.EuiIcon,{type:""}),onClick:n.playNext},"Play next"),t.createElement(i,{icon:t.createElement(s.EuiIcon,{type:c.AddRegular}),onClick:n.addToPlayQueue},"Add to play queue"),t.createElement(s.EuiHorizontalRule,{margin:"none"}),t.createElement(i,{icon:t.createElement(s.EuiIcon,{type:c.ArrowUploadRegular}),onClick:n.moveToTop,disabled:!n.canMoveToTop},"Move to the top"),t.createElement(i,{icon:t.createElement(s.EuiIcon,{type:c.ArrowDownloadRegular}),onClick:n.moveToBottom,disabled:!n.canMoveToBottom},"Move to the bottom"),t.createElement(s.EuiHorizontalRule,{margin:"none"}),t.createElement(i,{icon:t.createElement(s.EuiIcon,{type:""}),onClick:n.removeToTop,disabled:!n.canRemoveToTop},"Remove to the top"),t.createElement(i,{icon:t.createElement(s.EuiIcon,{type:""}),onClick:n.removeOthers,disabled:!n.canRemoveOthers},"Remove others"))}),X=t.memo(({item:n})=>{const[e,i]=t.useState(!1),o=t.useCallback(()=>i(!e),[e]),r=t.useCallback(()=>i(!1),[]);return t.createElement(s.EuiPopover,{button:t.createElement(s.EuiButtonIcon,{title:"More options","aria-label":"More options",iconType:c.MoreHorizontalFilled,size:"s",color:"text",onClick:o}),isOpen:e,closePopover:r,panelPaddingSize:"none",anchorPosition:"leftCenter"},t.createElement(J,{item:n,closePopover:r}))}),W=h.observer(({item:n})=>{const e=g.useNostalgicDiva();return t.createElement(s.EuiTableRowCell,{textOnly:!1,hasActions:!0,align:"right"},t.createElement(s.EuiButton,{iconType:c.PlayRegular,size:"s",onClick:async()=>{n.isCurrent?await e.setCurrentTime(0):n.play()}},"Play"),t.createElement(s.EuiButton,{iconType:c.DismissRegular,size:"s",onClick:n.remove},"Remove"),t.createElement(X,{item:n}))}),Y={Audio:"",Dailymotion:"https://www.dailymotion.com/favicon.ico",Niconico:"https://www.nicovideo.jp/favicon.ico",SoundCloud:"https://soundcloud.com/favicon.ico",Twitch:"https://www.twitch.tv/favicon.ico",Vimeo:"https://vimeo.com/favicon.ico",YouTube:"https://www.youtube.com/favicon.ico"},K=h.observer(({item:n})=>{const e=g.useNostalgicDiva();return t.createElement(s.EuiTableRow,{key:n.id,isSelected:n.isCurrent},t.createElement(s.EuiTableRowCellCheckbox,null,t.createElement(s.EuiCheckbox,{id:n.id.toString(),checked:n.isSelected,onChange:n.toggleSelected})),t.createElement(s.EuiTableRowCell,{textOnly:!1},t.createElement("img",{src:Y[n.type],width:16,height:16,alt:n.type})),t.createElement(s.EuiTableRowCell,null,t.createElement(s.EuiLink,{href:n.url,target:"_blank",external:!0,onClick:()=>e.pause()},n.title)),t.createElement(W,{item:n}))}),Z=h.observer(({playQueueStore:n})=>t.createElement(F.ReactSortable,{tag:"tbody",list:n.items,setList:e=>n.setItems(e)},n.items.map(e=>t.createElement(K,{key:e.id,item:e})))),_=h.observer(({playQueueStore:n})=>t.createElement(s.EuiTable,null,t.createElement(G,{playQueueStore:n}),t.createElement(Z,{playQueueStore:n}))),Q=h.observer(({playQueueStore:n})=>{const[e,i]=t.useState(!1);return t.createElement(t.Fragment,null,e&&t.createElement(s.EuiFlyout,{type:"push",size:"s",onClose:()=>i(!1)},t.createElement("div",{style:{blockSize:"100%"}},t.createElement(s.EuiCodeBlock,{language:"json",overflowHeight:"100%",isCopyable:!0,isVirtualized:!0},JSON.stringify(n.localStorageState,void 0,2)))),t.createElement($,{playQueueStore:n}))}),ee=h.observer(({playerStore:n,playQueueStore:e})=>{const{euiTheme:i}=s.useEuiTheme();return t.createElement(t.Fragment,null,t.createElement(s.EuiFlexGroup,{alignItems:"center",gutterSize:"m",style:{position:"sticky",top:48,zIndex:998,background:i.colors.backgroundBasePlain}},t.createElement(s.EuiFlexItem,{grow:!1},t.createElement(s.EuiButton,{disabled:e.isEmpty||e.selectedItems.length===0,onClick:e.playSelectedItemsNext},"Play next")),t.createElement(s.EuiFlexItem,{grow:!1},t.createElement(s.EuiButton,{iconType:c.AddRegular,onClick:e.addSelectedItems,disabled:e.isEmpty||e.selectedItems.length===0},"Add to play queue")),t.createElement(s.EuiFlexItem,{grow:!1},t.createElement(s.EuiButton,{iconType:c.DismissRegular,onClick:e.removeSelectedItems,disabled:e.isEmpty||e.selectedItems.length===0},"Remove")),t.createElement(s.EuiFlexItem,{grow:!1},t.createElement(s.EuiButton,{iconType:c.DeleteRegular,onClick:e.clear,disabled:e.isEmpty},"Clear")),t.createElement(s.EuiFlexItem,{grow:!0}),t.createElement(s.EuiFlexItem,{grow:!1},t.createElement(Q,{playQueueStore:e}))),!e.isEmpty&&t.createElement(t.Fragment,null,t.createElement(s.EuiSpacer,{size:"l",style:{position:"sticky",top:88,zIndex:998,background:i.colors.backgroundBasePlain}}),t.createElement(_,{playQueueStore:e})))}),te=h.observer(({playerStore:n,playQueueStore:e})=>t.createElement(t.Fragment,null,t.createElement(s.EuiPageTemplate.Header,{pageTitle:"Play queue",rightSideItems:[]}),t.createElement(s.EuiPageTemplate.Section,null,t.createElement(ee,{playerStore:n,playQueueStore:e})))),I={width:16*25,height:9*25},ne=h.observer(({playerStore:n,playQueueStore:e})=>{const i=g.useNostalgicDiva(),o=t.useCallback(async()=>{e.interacted&&await i.play()},[e,i]),r=t.useCallback(async()=>{switch(e.repeat){case u.One:await i.setCurrentTime(0);break;case u.Off:case u.All:if(e.isLastItem)switch(e.repeat){case u.Off:n.onEnded();break;case u.All:e.hasMultipleItems?await e.goToFirst():await i.setCurrentTime(0);break}else await e.next();break}},[e,n,i]),l=t.useMemo(()=>({onLoaded:o,onPlay:n.onPlay,onPause:n.onPause,onEnded:r,onTimeUpdate:n.onTimeUpdate}),[n,o,r]);return t.createElement("div",{css:{position:"fixed",right:0,bottom:x,width:I.width,height:I.height,zIndex:998,backgroundColor:"rgb(39, 39, 39)",display:"flex",flexDirection:"column"}},t.createElement("div",{css:{flexGrow:1,backgroundColor:"black"}},e.currentItem&&t.createElement(g.NostalgicDiva,{src:e.currentItem.url,options:l})))});class C{makeObservable(e,i){return a.makeObservable(e,i)}}const b=class b{constructor(e,i,o){p(this,"id");p(this,"isSelected",!1);this.observableStateProvider=e,this.playQueueStore=i,this.dto=o,this.id=b.nextId++,e.makeObservable(this,{isSelected:a.observable,isCurrent:a.computed,index:a.computed,isFirst:a.computed,isLast:a.computed,canMoveToTop:a.computed,canMoveToBottom:a.computed,canRemoveToTop:a.computed,canRemoveOthers:a.computed,unselect:a.action,toggleSelected:a.action.bound,play:a.action,remove:a.action.bound,playFirst:a.action.bound,playNext:a.action.bound,addToPlayQueue:a.action.bound,moveToTop:a.action.bound,moveToBottom:a.action.bound,removeToTop:a.action.bound,removeOthers:a.action.bound})}static fromDto(e,i,o){return new b(e,i,o)}get url(){return this.dto.url}get type(){return this.dto.type}get videoId(){return this.dto.videoId}get title(){return this.dto.title}get isCurrent(){return this.playQueueStore.currentItem===this}get index(){return this.playQueueStore.items.indexOf(this)}get isFirst(){return this.index===0}get isLast(){return this.index===this.playQueueStore.items.length-1}get canMoveToTop(){return!this.isFirst}get canMoveToBottom(){return!this.isLast}get canRemoveToTop(){return!this.isFirst}get canRemoveOthers(){return this.playQueueStore.hasMultipleItems}clone(){return this.playQueueStore.createItem(this.dto)}unselect(){this.isSelected=!1}toggleSelected(){this.isSelected=!this.isSelected}play(){this.playQueueStore.setCurrentItem(this)}remove(){return this.playQueueStore.removeItems([this])}async playFirst(){await this.playQueueStore.playFirst([this.clone()])}async playNext(){await this.playQueueStore.playNext([this.clone()])}async addToPlayQueue(){await this.playQueueStore.addItems([this.clone()])}moveToTop(){this.playQueueStore.moveItem(this,0)}moveToBottom(){this.playQueueStore.moveItem(this,this.playQueueStore.items.length-1)}removeToTop(){return this.playQueueStore.removeItemsAbove(this)}removeOthers(){return this.playQueueStore.removeOtherItems(this)}};p(b,"nextId",1);let y=b;const f=new R({coerceTypes:!0});function ie(n,e){let i;if(i=f.getSchema(e),i===void 0&&(f.addSchema(n,e),i=f.getSchema(e)),i===void 0||i.schema!==n)throw new Error(`Invalid schema. Expected: '${JSON.stringify(n)}', but got '${JSON.stringify(i==null?void 0:i.schema)}'.`);return i}const se={type:"object",properties:{version:{type:"string",nullable:!0},repeat:{type:"string",enum:Object.values(u),nullable:!0},shuffle:{type:"boolean",nullable:!0},items:{type:"array",nullable:!0,items:{type:"object",properties:{url:{type:"string"},type:{type:"string"},videoId:{type:"string"},title:{type:"string"}},required:["url","type","videoId","title"]}},currentIndex:{type:"integer",nullable:!0}}},ae=ie(se,"PlayQueueStore");class oe{constructor(e){p(this,"interacted",!1);p(this,"items",[]);p(this,"currentId");p(this,"repeat",u.Off);p(this,"shuffle",!1);this.observableStateProvider=e,e.makeObservable(this,{interacted:a.observable,items:a.observable,currentId:a.observable,repeat:a.observable,shuffle:a.observable,localStorageState:a.computed.struct,isEmpty:a.computed,currentItem:a.computed,canPlay:a.computed,canPause:a.computed,hasMultipleItems:a.computed,currentIndex:a.computed,hasPreviousItem:a.computed,hasNextItem:a.computed,isLastItem:a.computed,selectedItems:a.computed,allItemsSelected:a.computed,selectedItemsOrAllItems:a.computed,setItems:a.action,interact:a.action,clear:a.action.bound,unselectAll:a.action,setCurrentItem:a.action,setNextItems:a.action,clearAndSetItems:a.action,playNext:a.action,playSelectedItemsNext:a.action.bound,addItems:a.action,addSelectedItems:a.action.bound,playFirst:a.action,moveItem:a.action,removeItems:a.action,removeSelectedItems:a.action.bound,removeOtherItems:a.action,removeItemsAbove:a.action,toggleRepeat:a.action.bound,toggleShuffle:a.action.bound,previous:a.action,next:a.action.bound,goToFirst:a.action})}createItem(e){return y.fromDto(this.observableStateProvider,this,e)}get localStorageState(){return{version:"1.0",repeat:this.repeat,shuffle:this.shuffle,items:this.items.map(e=>e.dto),currentIndex:this.currentIndex}}set localStorageState(e){var i;this.repeat=e.repeat??u.Off,this.shuffle=e.shuffle??!1,this.items=((i=e.items)==null?void 0:i.map(o=>this.createItem(o)))??[],this.currentIndex=e.currentIndex}validateLocalStorageState(e){return ae(e)}get isEmpty(){return this.items.length===0}get currentItem(){return this.items.find(e=>e.id===this.currentId)}get canPlay(){return this.currentItem!==void 0}get canPause(){return this.currentItem!==void 0}get hasMultipleItems(){return this.items.length>1}get currentIndex(){return this.currentId!==void 0?this.items.findIndex(e=>e.id===this.currentId):void 0}set currentIndex(e){var i;this.currentId=e!==void 0?(i=this.items.at(e))==null?void 0:i.id:void 0}get hasPreviousItem(){return this.hasMultipleItems&&this.currentIndex!==void 0&&this.currentIndex>0}get hasNextItem(){return this.hasMultipleItems&&this.currentIndex!==void 0&&this.currentIndex<this.items.length-1}get isLastItem(){return this.currentIndex!==void 0&&this.currentIndex===this.items.length-1}get selectedItems(){return this.items.filter(e=>e.isSelected)}get allItemsSelected(){return this.selectedItems.length===this.items.length}set allItemsSelected(e){for(const i of this.items)i.isSelected=e}get selectedItemsOrAllItems(){return this.selectedItems.length>0?this.selectedItems:this.items}setItems(e){this.items=e}interact(){this.interacted=!0}clear(){this.interact(),this.currentIndex=void 0,this.items=[]}unselectAll(){for(const e of this.items)e.unselect()}setCurrentItem(e){this.interact(),this.currentId=e==null?void 0:e.id}setNextItems(e){this.currentIndex!==void 0&&this.items.splice(this.currentIndex+1,0,...e)}clearAndSetItems(e){this.clear(),this.setCurrentItem(e[0]),this.setNextItems(e)}async playNext(e){if(this.isEmpty){this.clearAndSetItems(e);return}this.setNextItems(e)}async playSelectedItemsNext(){await this.playNext(this.selectedItemsOrAllItems.map(e=>e.clone())),this.unselectAll()}async addItems(e){if(this.isEmpty){this.clearAndSetItems(e);return}this.items.push(...e)}async addSelectedItems(){await this.addItems(this.selectedItemsOrAllItems.map(e=>e.clone())),this.unselectAll()}async playFirst(e){if(this.isEmpty){this.clearAndSetItems(e);return}const{currentIndex:i}=this;i!==void 0&&(this.interact(),this.items.splice(i,0,...e),this.currentIndex=i)}moveItem(e,i){const o=this.items.splice(this.items.indexOf(e),1)[0];this.items.splice(i,0,o)}async removeItems(e){const{currentItem:i}=this;T.pull(this.items,...e.filter(l=>l!==i));const{currentIndex:o,isLastItem:r}=this;T.pull(this.items,e.find(l=>l===i)),this.currentItem!==i&&(this.interact(),r?await this.goToFirst():this.currentIndex=o)}async removeSelectedItems(){await this.removeItems(this.selectedItemsOrAllItems),this.unselectAll()}async removeOtherItems(e){const i=e.id;return this.removeItems(this.items.filter(o=>o.id!==i))}async removeItemsAbove(e){const i=this.items.indexOf(e);return this.removeItems(this.items.filter((o,r)=>r<i))}toggleRepeat(){switch(this.repeat){case u.Off:this.repeat=u.All;break;case u.All:this.repeat=u.One;break;case u.One:this.repeat=u.Off;break}}toggleShuffle(){this.shuffle=!this.shuffle}async previous(){this.currentIndex!==void 0&&this.hasPreviousItem&&(this.interact(),this.currentIndex--)}async next(){this.currentIndex!==void 0&&this.hasNextItem&&(this.interact(),this.currentIndex++)}async goToFirst(){this.currentIndex!==void 0&&(this.currentIndex=0)}}const k=t.createContext(void 0),re=({children:n})=>{const[e]=t.useState(()=>new oe(new C)),i=g.useNostalgicDiva();return t.useEffect(()=>a.reaction(()=>e.currentItem,async(o,r)=>{o===void 0||r===void 0||o.type===r.type&&o.videoId===r.videoId&&await i.setCurrentTime(0)}),[e,i]),t.createElement(k.Provider,{value:e},n)},P=()=>t.useContext(k),le=h.observer(({children:n})=>{const e=P();return t.createElement(s.EuiPageTemplate,{panelled:!0,style:{minBlockSize:`max(460px, 100vh - ${x}px)`}},n,!e.isEmpty&&t.createElement(s.EuiSpacer,{style:{blockSize:I.height}}))});class ce{constructor(e){p(this,"playing",!1);p(this,"percent",0);p(this,"seeking",!1);e.makeObservable(this,{playing:a.observable,percent:a.observable,seeking:a.observable,setPlaying:a.action,setPercent:a.action,setSeeking:a.action,onPlay:a.action.bound,onPause:a.action.bound,onEnded:a.action.bound,onTimeUpdate:a.action.bound})}setPlaying(e){this.playing=e}setPercent(e){this.percent=e}setSeeking(e){this.seeking=e}onPlay(){this.playing=!0}onPause(){this.playing=!1}onEnded(){this.playing=!1}onTimeUpdate({percent:e}){e!==void 0&&(this.seeking||(this.percent=e))}}const S=t.createContext(void 0),ue=({children:n})=>{const[e]=t.useState(()=>new ce(new C));return t.createElement(S.Provider,{value:e},n)},me=()=>t.useContext(S);class de{makeObservable(e,i){return e}}exports.BottomBar=j;exports.HydrangeanDiva=te;exports.MediaPlayerLayout=le;exports.MiniPlayer=ne;exports.MobXObservableStateProvider=C;exports.ObservableStateProvider=de;exports.PlayQueueStoreProvider=re;exports.PlayerStoreProvider=ue;exports.RepeatMode=u;exports.bottomBarHeight=x;exports.miniPlayerSize=I;exports.usePlayQueueStore=P;exports.usePlayerStore=me;
1
+ "use strict";var Qt=Object.defineProperty;var er=(t,e,n)=>e in t?Qt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var U=(t,e,n)=>er(t,typeof e!="symbol"?e+"":e,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=require("react"),tr=require("@emotion/cache"),J=require("@aigamo/nostalgic-diva"),l=require("@elastic/eui"),R=require("@fluentui/react-icons"),Y=require("mobx-react-lite"),rr=require("react-sortablejs"),u=require("mobx"),ft=require("lodash-es"),nr=require("ajv");function ir(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const n in t)if(n!=="default"){const i=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,i.get?i:{enumerable:!0,get:()=>t[n]})}}return e.default=t,Object.freeze(e)}const Z=ir(h);var ke={exports:{}},he={};/**
2
+ * @license React
3
+ * react-jsx-runtime.production.min.js
4
+ *
5
+ * Copyright (c) Facebook, Inc. and its affiliates.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */var mt;function or(){if(mt)return he;mt=1;var t=h,e=Symbol.for("react.element"),n=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,a=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function m(p,y,g){var S,O={},z=null,D=null;g!==void 0&&(z=""+g),y.key!==void 0&&(z=""+y.key),y.ref!==void 0&&(D=y.ref);for(S in y)i.call(y,S)&&!c.hasOwnProperty(S)&&(O[S]=y[S]);if(p&&p.defaultProps)for(S in y=p.defaultProps,y)O[S]===void 0&&(O[S]=y[S]);return{$$typeof:e,type:p,key:z,ref:D,props:O,_owner:a.current}}return he.Fragment=n,he.jsx=m,he.jsxs=m,he}var pe={};/**
10
+ * @license React
11
+ * react-jsx-runtime.development.js
12
+ *
13
+ * Copyright (c) Facebook, Inc. and its affiliates.
14
+ *
15
+ * This source code is licensed under the MIT license found in the
16
+ * LICENSE file in the root directory of this source tree.
17
+ */var vt;function ar(){return vt||(vt=1,process.env.NODE_ENV!=="production"&&function(){var t=h,e=Symbol.for("react.element"),n=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),c=Symbol.for("react.profiler"),m=Symbol.for("react.provider"),p=Symbol.for("react.context"),y=Symbol.for("react.forward_ref"),g=Symbol.for("react.suspense"),S=Symbol.for("react.suspense_list"),O=Symbol.for("react.memo"),z=Symbol.for("react.lazy"),D=Symbol.for("react.offscreen"),F=Symbol.iterator,W="@@iterator";function K(r){if(r===null||typeof r!="object")return null;var s=F&&r[F]||r[W];return typeof s=="function"?s:null}var B=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function w(r){{for(var s=arguments.length,f=new Array(s>1?s-1:0),b=1;b<s;b++)f[b-1]=arguments[b];M("error",r,f)}}function M(r,s,f){{var b=B.ReactDebugCurrentFrame,I=b.getStackAddendum();I!==""&&(s+="%s",f=f.concat([I]));var P=f.map(function(x){return String(x)});P.unshift("Warning: "+s),Function.prototype.apply.call(console[r],console,P)}}var k=!1,d=!1,L=!1,se=!1,xe=!1,Se;Se=Symbol.for("react.module.reference");function je(r){return!!(typeof r=="string"||typeof r=="function"||r===i||r===c||xe||r===a||r===g||r===S||se||r===D||k||d||L||typeof r=="object"&&r!==null&&(r.$$typeof===z||r.$$typeof===O||r.$$typeof===m||r.$$typeof===p||r.$$typeof===y||r.$$typeof===Se||r.getModuleId!==void 0))}function Ne(r,s,f){var b=r.displayName;if(b)return b;var I=s.displayName||s.name||"";return I!==""?f+"("+I+")":f}function Ie(r){return r.displayName||"Context"}function H(r){if(r==null)return null;if(typeof r.tag=="number"&&w("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof r=="function")return r.displayName||r.name||null;if(typeof r=="string")return r;switch(r){case i:return"Fragment";case n:return"Portal";case c:return"Profiler";case a:return"StrictMode";case g:return"Suspense";case S:return"SuspenseList"}if(typeof r=="object")switch(r.$$typeof){case p:var s=r;return Ie(s)+".Consumer";case m:var f=r;return Ie(f._context)+".Provider";case y:return Ne(r,r.render,"ForwardRef");case O:var b=r.displayName||null;return b!==null?b:H(r.type)||"Memo";case z:{var I=r,P=I._payload,x=I._init;try{return H(x(P))}catch{return null}}}return null}var X=Object.assign,Q=0,Te,Ce,le,Pe,ce,Re,we;function Oe(){}Oe.__reactDisabledLog=!0;function De(){{if(Q===0){Te=console.log,Ce=console.info,le=console.warn,Pe=console.error,ce=console.group,Re=console.groupCollapsed,we=console.groupEnd;var r={configurable:!0,enumerable:!0,value:Oe,writable:!0};Object.defineProperties(console,{info:r,log:r,warn:r,error:r,group:r,groupCollapsed:r,groupEnd:r})}Q++}}function $e(){{if(Q--,Q===0){var r={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:X({},r,{value:Te}),info:X({},r,{value:Ce}),warn:X({},r,{value:le}),error:X({},r,{value:Pe}),group:X({},r,{value:ce}),groupCollapsed:X({},r,{value:Re}),groupEnd:X({},r,{value:we})})}Q<0&&w("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var ue=B.ReactCurrentDispatcher,de;function re(r,s,f){{if(de===void 0)try{throw Error()}catch(I){var b=I.stack.trim().match(/\n( *(at )?)/);de=b&&b[1]||""}return`
18
+ `+de+r}}var fe=!1,ne;{var ze=typeof WeakMap=="function"?WeakMap:Map;ne=new ze}function v(r,s){if(!r||fe)return"";{var f=ne.get(r);if(f!==void 0)return f}var b;fe=!0;var I=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var P;P=ue.current,ue.current=null,De();try{if(s){var x=function(){throw Error()};if(Object.defineProperty(x.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(x,[])}catch(V){b=V}Reflect.construct(r,[],x)}else{try{x.call()}catch(V){b=V}r.call(x.prototype)}}else{try{throw Error()}catch(V){b=V}r()}}catch(V){if(V&&b&&typeof V.stack=="string"){for(var E=V.stack.split(`
19
+ `),$=b.stack.split(`
20
+ `),A=E.length-1,j=$.length-1;A>=1&&j>=0&&E[A]!==$[j];)j--;for(;A>=1&&j>=0;A--,j--)if(E[A]!==$[j]){if(A!==1||j!==1)do if(A--,j--,j<0||E[A]!==$[j]){var q=`
21
+ `+E[A].replace(" at new "," at ");return r.displayName&&q.includes("<anonymous>")&&(q=q.replace("<anonymous>",r.displayName)),typeof r=="function"&&ne.set(r,q),q}while(A>=1&&j>=0);break}}}finally{fe=!1,ue.current=P,$e(),Error.prepareStackTrace=I}var ae=r?r.displayName||r.name:"",te=ae?re(ae):"";return typeof r=="function"&&ne.set(r,te),te}function me(r,s,f){return v(r,!1)}function ie(r){var s=r.prototype;return!!(s&&s.isReactComponent)}function ee(r,s,f){if(r==null)return"";if(typeof r=="function")return v(r,ie(r));if(typeof r=="string")return re(r);switch(r){case g:return re("Suspense");case S:return re("SuspenseList")}if(typeof r=="object")switch(r.$$typeof){case y:return me(r.render);case O:return ee(r.type,s,f);case z:{var b=r,I=b._payload,P=b._init;try{return ee(P(I),s,f)}catch{}}}return""}var ve=Object.prototype.hasOwnProperty,Ze={},Qe=B.ReactDebugCurrentFrame;function _e(r){if(r){var s=r._owner,f=ee(r.type,r._source,s?s.type:null);Qe.setExtraStackFrame(f)}else Qe.setExtraStackFrame(null)}function kt(r,s,f,b,I){{var P=Function.call.bind(ve);for(var x in r)if(P(r,x)){var E=void 0;try{if(typeof r[x]!="function"){var $=Error((b||"React class")+": "+f+" type `"+x+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof r[x]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw $.name="Invariant Violation",$}E=r[x](s,x,b,f,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(A){E=A}E&&!(E instanceof Error)&&(_e(I),w("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",b||"React class",f,x,typeof E),_e(null)),E instanceof Error&&!(E.message in Ze)&&(Ze[E.message]=!0,_e(I),w("Failed %s type: %s",f,E.message),_e(null))}}}var At=Array.isArray;function Be(r){return At(r)}function Ft(r){{var s=typeof Symbol=="function"&&Symbol.toStringTag,f=s&&r[Symbol.toStringTag]||r.constructor.name||"Object";return f}}function Mt(r){try{return et(r),!1}catch{return!0}}function et(r){return""+r}function tt(r){if(Mt(r))return w("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",Ft(r)),et(r)}var rt=B.ReactCurrentOwner,jt={key:!0,ref:!0,__self:!0,__source:!0},nt,it;function Nt(r){if(ve.call(r,"ref")){var s=Object.getOwnPropertyDescriptor(r,"ref").get;if(s&&s.isReactWarning)return!1}return r.ref!==void 0}function Dt(r){if(ve.call(r,"key")){var s=Object.getOwnPropertyDescriptor(r,"key").get;if(s&&s.isReactWarning)return!1}return r.key!==void 0}function $t(r,s){typeof r.ref=="string"&&rt.current}function zt(r,s){{var f=function(){nt||(nt=!0,w("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",s))};f.isReactWarning=!0,Object.defineProperty(r,"key",{get:f,configurable:!0})}}function Bt(r,s){{var f=function(){it||(it=!0,w("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",s))};f.isReactWarning=!0,Object.defineProperty(r,"ref",{get:f,configurable:!0})}}var Lt=function(r,s,f,b,I,P,x){var E={$$typeof:e,type:r,key:s,ref:f,props:x,_owner:P};return E._store={},Object.defineProperty(E._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(E,"_self",{configurable:!1,enumerable:!1,writable:!1,value:b}),Object.defineProperty(E,"_source",{configurable:!1,enumerable:!1,writable:!1,value:I}),Object.freeze&&(Object.freeze(E.props),Object.freeze(E)),E};function Vt(r,s,f,b,I){{var P,x={},E=null,$=null;f!==void 0&&(tt(f),E=""+f),Dt(s)&&(tt(s.key),E=""+s.key),Nt(s)&&($=s.ref,$t(s,I));for(P in s)ve.call(s,P)&&!jt.hasOwnProperty(P)&&(x[P]=s[P]);if(r&&r.defaultProps){var A=r.defaultProps;for(P in A)x[P]===void 0&&(x[P]=A[P])}if(E||$){var j=typeof r=="function"?r.displayName||r.name||"Unknown":r;E&&zt(x,j),$&&Bt(x,j)}return Lt(r,E,$,I,b,rt.current,x)}}var Le=B.ReactCurrentOwner,ot=B.ReactDebugCurrentFrame;function oe(r){if(r){var s=r._owner,f=ee(r.type,r._source,s?s.type:null);ot.setExtraStackFrame(f)}else ot.setExtraStackFrame(null)}var Ve;Ve=!1;function Ye(r){return typeof r=="object"&&r!==null&&r.$$typeof===e}function at(){{if(Le.current){var r=H(Le.current.type);if(r)return`
22
+
23
+ Check the render method of \``+r+"`."}return""}}function Yt(r){return""}var st={};function Wt(r){{var s=at();if(!s){var f=typeof r=="string"?r:r.displayName||r.name;f&&(s=`
24
+
25
+ Check the top-level render call using <`+f+">.")}return s}}function lt(r,s){{if(!r._store||r._store.validated||r.key!=null)return;r._store.validated=!0;var f=Wt(s);if(st[f])return;st[f]=!0;var b="";r&&r._owner&&r._owner!==Le.current&&(b=" It was passed a child from "+H(r._owner.type)+"."),oe(r),w('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',f,b),oe(null)}}function ct(r,s){{if(typeof r!="object")return;if(Be(r))for(var f=0;f<r.length;f++){var b=r[f];Ye(b)&&lt(b,s)}else if(Ye(r))r._store&&(r._store.validated=!0);else if(r){var I=K(r);if(typeof I=="function"&&I!==r.entries)for(var P=I.call(r),x;!(x=P.next()).done;)Ye(x.value)&&lt(x.value,s)}}}function qt(r){{var s=r.type;if(s==null||typeof s=="string")return;var f;if(typeof s=="function")f=s.propTypes;else if(typeof s=="object"&&(s.$$typeof===y||s.$$typeof===O))f=s.propTypes;else return;if(f){var b=H(s);kt(f,r.props,"prop",b,r)}else if(s.PropTypes!==void 0&&!Ve){Ve=!0;var I=H(s);w("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",I||"Unknown")}typeof s.getDefaultProps=="function"&&!s.getDefaultProps.isReactClassApproved&&w("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function Ut(r){{for(var s=Object.keys(r.props),f=0;f<s.length;f++){var b=s[f];if(b!=="children"&&b!=="key"){oe(r),w("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",b),oe(null);break}}r.ref!==null&&(oe(r),w("Invalid attribute `ref` supplied to `React.Fragment`."),oe(null))}}var ut={};function dt(r,s,f,b,I,P){{var x=je(r);if(!x){var E="";(r===void 0||typeof r=="object"&&r!==null&&Object.keys(r).length===0)&&(E+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var $=Yt();$?E+=$:E+=at();var A;r===null?A="null":Be(r)?A="array":r!==void 0&&r.$$typeof===e?(A="<"+(H(r.type)||"Unknown")+" />",E=" Did you accidentally export a JSX literal instead of a component?"):A=typeof r,w("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",A,E)}var j=Vt(r,s,f,I,P);if(j==null)return j;if(x){var q=s.children;if(q!==void 0)if(b)if(Be(q)){for(var ae=0;ae<q.length;ae++)ct(q[ae],r);Object.freeze&&Object.freeze(q)}else w("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else ct(q,r)}if(ve.call(s,"key")){var te=H(r),V=Object.keys(s).filter(function(Zt){return Zt!=="key"}),We=V.length>0?"{key: someKey, "+V.join(": ..., ")+": ...}":"{key: someKey}";if(!ut[te+We]){var Xt=V.length>0?"{"+V.join(": ..., ")+": ...}":"{}";w(`A props object containing a "key" prop is being spread into JSX:
26
+ let props = %s;
27
+ <%s {...props} />
28
+ React keys must be passed directly to JSX without using spread:
29
+ let props = %s;
30
+ <%s key={someKey} {...props} />`,We,te,Xt,te),ut[te+We]=!0}}return r===i?Ut(j):qt(j),j}}function Ht(r,s,f){return dt(r,s,f,!0)}function Gt(r,s,f){return dt(r,s,f,!1)}var Jt=Gt,Kt=Ht;pe.Fragment=i,pe.jsx=Jt,pe.jsxs=Kt}()),pe}var ht;function sr(){return ht||(ht=1,process.env.NODE_ENV==="production"?ke.exports=or():ke.exports=ar()),ke.exports}var be=sr(),Ae={exports:{}},T={};/** @license React v16.13.1
31
+ * react-is.production.min.js
32
+ *
33
+ * Copyright (c) Facebook, Inc. and its affiliates.
34
+ *
35
+ * This source code is licensed under the MIT license found in the
36
+ * LICENSE file in the root directory of this source tree.
37
+ */var pt;function lr(){if(pt)return T;pt=1;var t=typeof Symbol=="function"&&Symbol.for,e=t?Symbol.for("react.element"):60103,n=t?Symbol.for("react.portal"):60106,i=t?Symbol.for("react.fragment"):60107,a=t?Symbol.for("react.strict_mode"):60108,c=t?Symbol.for("react.profiler"):60114,m=t?Symbol.for("react.provider"):60109,p=t?Symbol.for("react.context"):60110,y=t?Symbol.for("react.async_mode"):60111,g=t?Symbol.for("react.concurrent_mode"):60111,S=t?Symbol.for("react.forward_ref"):60112,O=t?Symbol.for("react.suspense"):60113,z=t?Symbol.for("react.suspense_list"):60120,D=t?Symbol.for("react.memo"):60115,F=t?Symbol.for("react.lazy"):60116,W=t?Symbol.for("react.block"):60121,K=t?Symbol.for("react.fundamental"):60117,B=t?Symbol.for("react.responder"):60118,w=t?Symbol.for("react.scope"):60119;function M(d){if(typeof d=="object"&&d!==null){var L=d.$$typeof;switch(L){case e:switch(d=d.type,d){case y:case g:case i:case c:case a:case O:return d;default:switch(d=d&&d.$$typeof,d){case p:case S:case F:case D:case m:return d;default:return L}}case n:return L}}}function k(d){return M(d)===g}return T.AsyncMode=y,T.ConcurrentMode=g,T.ContextConsumer=p,T.ContextProvider=m,T.Element=e,T.ForwardRef=S,T.Fragment=i,T.Lazy=F,T.Memo=D,T.Portal=n,T.Profiler=c,T.StrictMode=a,T.Suspense=O,T.isAsyncMode=function(d){return k(d)||M(d)===y},T.isConcurrentMode=k,T.isContextConsumer=function(d){return M(d)===p},T.isContextProvider=function(d){return M(d)===m},T.isElement=function(d){return typeof d=="object"&&d!==null&&d.$$typeof===e},T.isForwardRef=function(d){return M(d)===S},T.isFragment=function(d){return M(d)===i},T.isLazy=function(d){return M(d)===F},T.isMemo=function(d){return M(d)===D},T.isPortal=function(d){return M(d)===n},T.isProfiler=function(d){return M(d)===c},T.isStrictMode=function(d){return M(d)===a},T.isSuspense=function(d){return M(d)===O},T.isValidElementType=function(d){return typeof d=="string"||typeof d=="function"||d===i||d===g||d===c||d===a||d===O||d===z||typeof d=="object"&&d!==null&&(d.$$typeof===F||d.$$typeof===D||d.$$typeof===m||d.$$typeof===p||d.$$typeof===S||d.$$typeof===K||d.$$typeof===B||d.$$typeof===w||d.$$typeof===W)},T.typeOf=M,T}var C={};/** @license React v16.13.1
38
+ * react-is.development.js
39
+ *
40
+ * Copyright (c) Facebook, Inc. and its affiliates.
41
+ *
42
+ * This source code is licensed under the MIT license found in the
43
+ * LICENSE file in the root directory of this source tree.
44
+ */var yt;function cr(){return yt||(yt=1,process.env.NODE_ENV!=="production"&&function(){var t=typeof Symbol=="function"&&Symbol.for,e=t?Symbol.for("react.element"):60103,n=t?Symbol.for("react.portal"):60106,i=t?Symbol.for("react.fragment"):60107,a=t?Symbol.for("react.strict_mode"):60108,c=t?Symbol.for("react.profiler"):60114,m=t?Symbol.for("react.provider"):60109,p=t?Symbol.for("react.context"):60110,y=t?Symbol.for("react.async_mode"):60111,g=t?Symbol.for("react.concurrent_mode"):60111,S=t?Symbol.for("react.forward_ref"):60112,O=t?Symbol.for("react.suspense"):60113,z=t?Symbol.for("react.suspense_list"):60120,D=t?Symbol.for("react.memo"):60115,F=t?Symbol.for("react.lazy"):60116,W=t?Symbol.for("react.block"):60121,K=t?Symbol.for("react.fundamental"):60117,B=t?Symbol.for("react.responder"):60118,w=t?Symbol.for("react.scope"):60119;function M(v){return typeof v=="string"||typeof v=="function"||v===i||v===g||v===c||v===a||v===O||v===z||typeof v=="object"&&v!==null&&(v.$$typeof===F||v.$$typeof===D||v.$$typeof===m||v.$$typeof===p||v.$$typeof===S||v.$$typeof===K||v.$$typeof===B||v.$$typeof===w||v.$$typeof===W)}function k(v){if(typeof v=="object"&&v!==null){var me=v.$$typeof;switch(me){case e:var ie=v.type;switch(ie){case y:case g:case i:case c:case a:case O:return ie;default:var ee=ie&&ie.$$typeof;switch(ee){case p:case S:case F:case D:case m:return ee;default:return me}}case n:return me}}}var d=y,L=g,se=p,xe=m,Se=e,je=S,Ne=i,Ie=F,H=D,X=n,Q=c,Te=a,Ce=O,le=!1;function Pe(v){return le||(le=!0,console.warn("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API.")),ce(v)||k(v)===y}function ce(v){return k(v)===g}function Re(v){return k(v)===p}function we(v){return k(v)===m}function Oe(v){return typeof v=="object"&&v!==null&&v.$$typeof===e}function De(v){return k(v)===S}function $e(v){return k(v)===i}function ue(v){return k(v)===F}function de(v){return k(v)===D}function re(v){return k(v)===n}function fe(v){return k(v)===c}function ne(v){return k(v)===a}function ze(v){return k(v)===O}C.AsyncMode=d,C.ConcurrentMode=L,C.ContextConsumer=se,C.ContextProvider=xe,C.Element=Se,C.ForwardRef=je,C.Fragment=Ne,C.Lazy=Ie,C.Memo=H,C.Portal=X,C.Profiler=Q,C.StrictMode=Te,C.Suspense=Ce,C.isAsyncMode=Pe,C.isConcurrentMode=ce,C.isContextConsumer=Re,C.isContextProvider=we,C.isElement=Oe,C.isForwardRef=De,C.isFragment=$e,C.isLazy=ue,C.isMemo=de,C.isPortal=re,C.isProfiler=fe,C.isStrictMode=ne,C.isSuspense=ze,C.isValidElementType=M,C.typeOf=k}()),C}var bt;function ur(){return bt||(bt=1,process.env.NODE_ENV==="production"?Ae.exports=lr():Ae.exports=cr()),Ae.exports}var qe,gt;function dr(){if(gt)return qe;gt=1;var t=ur(),e={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},n={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},a={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},c={};c[t.ForwardRef]=i,c[t.Memo]=a;function m(F){return t.isMemo(F)?a:c[F.$$typeof]||e}var p=Object.defineProperty,y=Object.getOwnPropertyNames,g=Object.getOwnPropertySymbols,S=Object.getOwnPropertyDescriptor,O=Object.getPrototypeOf,z=Object.prototype;function D(F,W,K){if(typeof W!="string"){if(z){var B=O(W);B&&B!==z&&D(F,B,K)}var w=y(W);g&&(w=w.concat(g(W)));for(var M=m(F),k=m(W),d=0;d<w.length;++d){var L=w[d];if(!n[L]&&!(K&&K[L])&&!(k&&k[L])&&!(M&&M[L])){var se=S(W,L);try{p(F,L,se)}catch{}}}}return F}return qe=D,qe}dr();var fr=!0;function mr(t,e,n){var i="";return n.split(" ").forEach(function(a){t[a]!==void 0?e.push(t[a]+";"):a&&(i+=a+" ")}),i}var It=function(e,n,i){var a=e.key+"-"+n.name;(i===!1||fr===!1)&&e.registered[a]===void 0&&(e.registered[a]=n.styles)},vr=function(e,n,i){It(e,n,i);var a=e.key+"-"+n.name;if(e.inserted[n.name]===void 0){var c=n;do e.insert(n===c?"."+a:"",c,e.sheet,!0),c=c.next;while(c!==void 0)}};function hr(t){for(var e=0,n,i=0,a=t.length;a>=4;++i,a-=4)n=t.charCodeAt(i)&255|(t.charCodeAt(++i)&255)<<8|(t.charCodeAt(++i)&255)<<16|(t.charCodeAt(++i)&255)<<24,n=(n&65535)*1540483477+((n>>>16)*59797<<16),n^=n>>>24,e=(n&65535)*1540483477+((n>>>16)*59797<<16)^(e&65535)*1540483477+((e>>>16)*59797<<16);switch(a){case 3:e^=(t.charCodeAt(i+2)&255)<<16;case 2:e^=(t.charCodeAt(i+1)&255)<<8;case 1:e^=t.charCodeAt(i)&255,e=(e&65535)*1540483477+((e>>>16)*59797<<16)}return e^=e>>>13,e=(e&65535)*1540483477+((e>>>16)*59797<<16),((e^e>>>15)>>>0).toString(36)}var pr={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,scale:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1};function yr(t){var e=Object.create(null);return function(n){return e[n]===void 0&&(e[n]=t(n)),e[n]}}var br=/[A-Z]|^ms/g,gr=/_EMO_([^_]+?)_([^]*?)_EMO_/g,Tt=function(e){return e.charCodeAt(1)===45},Et=function(e){return e!=null&&typeof e!="boolean"},Ue=yr(function(t){return Tt(t)?t:t.replace(br,"-$&").toLowerCase()}),xt=function(e,n){switch(e){case"animation":case"animationName":if(typeof n=="string")return n.replace(gr,function(i,a,c){return G={name:a,styles:c,next:G},a})}return pr[e]!==1&&!Tt(e)&&typeof n=="number"&&n!==0?n+"px":n};function ge(t,e,n){if(n==null)return"";var i=n;if(i.__emotion_styles!==void 0)return i;switch(typeof n){case"boolean":return"";case"object":{var a=n;if(a.anim===1)return G={name:a.name,styles:a.styles,next:G},a.name;var c=n;if(c.styles!==void 0){var m=c.next;if(m!==void 0)for(;m!==void 0;)G={name:m.name,styles:m.styles,next:G},m=m.next;var p=c.styles+";";return p}return Er(t,e,n)}case"function":{if(t!==void 0){var y=G,g=n(t);return G=y,ge(t,e,g)}break}}var S=n;return S}function Er(t,e,n){var i="";if(Array.isArray(n))for(var a=0;a<n.length;a++)i+=ge(t,e,n[a])+";";else for(var c in n){var m=n[c];if(typeof m!="object"){var p=m;Et(p)&&(i+=Ue(c)+":"+xt(c,p)+";")}else if(Array.isArray(m)&&typeof m[0]=="string"&&e==null)for(var y=0;y<m.length;y++)Et(m[y])&&(i+=Ue(c)+":"+xt(c,m[y])+";");else{var g=ge(t,e,m);switch(c){case"animation":case"animationName":{i+=Ue(c)+":"+g+";";break}default:i+=c+"{"+g+"}"}}}return i}var St=/label:\s*([^\s;{]+)\s*(;|$)/g,G;function xr(t,e,n){if(t.length===1&&typeof t[0]=="object"&&t[0]!==null&&t[0].styles!==void 0)return t[0];var i=!0,a="";G=void 0;var c=t[0];if(c==null||c.raw===void 0)i=!1,a+=ge(n,e,c);else{var m=c;a+=m[0]}for(var p=1;p<t.length;p++)if(a+=ge(n,e,t[p]),i){var y=c;a+=y[p]}St.lastIndex=0;for(var g="",S;(S=St.exec(a))!==null;)g+="-"+S[1];var O=hr(a)+g;return{name:O,styles:a,next:G}}var Sr=function(e){return e()},Ir=Z.useInsertionEffect?Z.useInsertionEffect:!1,Tr=Ir||Sr,Ct=Z.createContext(typeof HTMLElement<"u"?tr({key:"css"}):null);Ct.Provider;var Cr=function(e){return h.forwardRef(function(n,i){var a=h.useContext(Ct);return e(n,a,i)})},Pr=Z.createContext({}),Me={}.hasOwnProperty,Ge="__EMOTION_TYPE_PLEASE_DO_NOT_USE__",Pt=function(e,n){var i={};for(var a in n)Me.call(n,a)&&(i[a]=n[a]);return i[Ge]=e,i},Rr=function(e){var n=e.cache,i=e.serialized,a=e.isStringTag;return It(n,i,a),Tr(function(){return vr(n,i,a)}),null},wr=Cr(function(t,e,n){var i=t.css;typeof i=="string"&&e.registered[i]!==void 0&&(i=e.registered[i]);var a=t[Ge],c=[i],m="";typeof t.className=="string"?m=mr(e.registered,c,t.className):t.className!=null&&(m=t.className+" ");var p=xr(c,void 0,Z.useContext(Pr));m+=e.key+"-"+p.name;var y={};for(var g in t)Me.call(t,g)&&g!=="css"&&g!==Ge&&(y[g]=t[g]);return y.className=m,n&&(y.ref=n),Z.createElement(Z.Fragment,null,Z.createElement(Rr,{cache:e,serialized:p,isStringTag:typeof a=="string"}),Z.createElement(a,y))}),Rt=wr,Ee=be.Fragment,o=function(e,n,i){return Me.call(n,"css")?be.jsx(Rt,Pt(e,n),i):be.jsx(e,n,i)},N=function(e,n,i){return Me.call(n,"css")?be.jsxs(Rt,Pt(e,n),i):be.jsxs(e,n,i)},_=(t=>(t.Off="Off",t.All="All",t.One="One",t))(_||{});const Ke=80,Or=Y.observer(({playerStore:t})=>{const e=J.useNostalgicDiva(),n=h.useCallback(c=>{const m=Number(c.currentTarget.value)/100;t.setPercent(m)},[t]),i=h.useCallback(c=>{c.button===0&&t.setSeeking(!0)},[t]),a=h.useCallback(async c=>{if(c.button===0){const m=Number(c.currentTarget.value)/100;t.setSeeking(!1);const p=await e.getDuration();p!==void 0&&await e.setCurrentTime(p*m)}},[t,e]);return o(l.EuiRange,{min:0,max:100,step:1e-7,value:t.percent*100,onChange:n,onMouseDown:i,onMouseUp:a,fullWidth:!0,showRange:!0,css:{blockSize:32}})}),_r=h.memo(({button:t,isOpen:e,closePopover:n})=>{const[i,a]=h.useState("0"),c=J.useNostalgicDiva();h.useLayoutEffect(()=>{e&&c.getVolume().then(p=>{p!==void 0&&a(Math.floor(p*100).toString())})},[e,c]);const m=h.useCallback(async p=>{a(p.currentTarget.value),await c.setVolume(Number(p.currentTarget.value)/100)},[c]);return o(l.EuiPopover,{button:t,isOpen:e,closePopover:n,anchorPosition:"upRight",children:o(l.EuiFormRow,{children:N(l.EuiFlexGroup,{responsive:!1,gutterSize:"s",justifyContent:"center",alignItems:"center",children:[o(l.EuiButtonIcon,{title:"Mute","aria-label":"Mute",iconType:R.Speaker2Regular,size:"s",iconSize:"l"}),o(l.EuiRange,{min:0,max:100,step:1,value:i,onChange:m,css:{blockSize:32}})]})})})}),kr=h.memo(({playQueueStore:t,closePopover:e})=>{const n=J.useNostalgicDiva(),i=h.useCallback(async()=>{const g=await n.getCurrentTime();g!==void 0&&await n.setCurrentTime(g-10),e()},[n,e]),a=h.useCallback(async()=>{const g=await n.getCurrentTime();g!==void 0&&await n.setCurrentTime(g+30),e()},[n,e]),c=h.useCallback(async g=>{await n.setPlaybackRate(g),e()},[n,e]),m=h.useCallback(async()=>{t.currentItem!==void 0&&await t.removeItems([t.currentItem]),e()},[t,e]),[p]=h.useState(),y=h.useMemo(()=>[{id:0,items:[{name:"Speed",icon:o(l.EuiIcon,{type:R.TopSpeedRegular,size:"m"}),panel:1},{name:"Skip back 10 seconds",icon:o(l.EuiIcon,{type:R.SkipBack10Regular,size:"m"}),onClick:i,disabled:t.isEmpty},{name:"Skip forward 30 seconds",icon:o(l.EuiIcon,{type:R.SkipForward30Regular,size:"m"}),onClick:a,disabled:t.isEmpty},{isSeparator:!0},{name:"Remove from play queue",icon:o(l.EuiIcon,{type:R.DismissRegular,size:"m"}),onClick:m,disabled:t.isEmpty}]},{id:1,title:"Speed",items:[.25,.5,.75,1,1.25,1.5,1.75,2].map(g=>({name:g.toString(),onClick:()=>c(g),icon:g===p?"check":"empty"}))}],[t,i,a,m,c,p]);return o(l.EuiContextMenu,{initialPanelId:0,panels:y})}),Ar=h.memo(({playQueueStore:t,button:e,isOpen:n,closePopover:i})=>o(l.EuiPopover,{button:e,isOpen:n,closePopover:i,panelPaddingSize:"none",anchorPosition:"upRight",children:o(kr,{playQueueStore:t,closePopover:i})})),Fr={[_.Off]:R.ArrowRepeatAllOffFilled,[_.All]:R.ArrowRepeatAllFilled,[_.One]:R.ArrowRepeat1Filled},Mr=Y.observer(({playerStore:t,playQueueStore:e})=>{const n=J.useNostalgicDiva(),i=h.useCallback(async()=>{if(e.hasPreviousItem){const a=await n.getCurrentTime();a===void 0||a<5?await e.previous():await n.setCurrentTime(0)}else await n.setCurrentTime(0)},[e,n]);return N(l.EuiFlexGroup,{responsive:!1,gutterSize:"s",justifyContent:"center",alignItems:"center",children:[o(l.EuiButtonIcon,{title:`Shuffle: ${e.shuffle?"On":"Off"}`,"aria-label":`Shuffle: ${e.shuffle?"On":"Off"}`,iconType:e.shuffle?R.ArrowShuffleFilled:R.ArrowShuffleOffFilled,size:"s",iconSize:"l",onClick:e.toggleShuffle,disabled:!0}),o(l.EuiButtonIcon,{title:"Previous","aria-label":"Previous",iconType:R.PreviousFilled,size:"s",iconSize:"l",onClick:i,disabled:e.isEmpty}),t.playing?o(l.EuiButtonIcon,{title:"Pause","aria-label":"Pause",iconType:R.PauseFilled,size:"s",iconSize:"l",onClick:()=>n.pause(),disabled:!e.canPlay}):o(l.EuiButtonIcon,{title:"Play","aria-label":"Play",iconType:R.PlayFilled,size:"s",iconSize:"l",onClick:()=>n.play(),disabled:!e.canPlay}),o(l.EuiButtonIcon,{title:"Next","aria-label":"Next",iconType:R.NextFilled,size:"s",iconSize:"l",onClick:e.next,disabled:!e.hasNextItem}),o(l.EuiButtonIcon,{title:`Repeat: ${e.repeat===_.All?"All":e.repeat===_.One?"One":"Off"}`,"aria-label":`Repeat: ${e.repeat===_.All?"All":e.repeat===_.One?"One":"Off"}`,iconType:Fr[e.repeat],size:"s",iconSize:"l",onClick:e.toggleRepeat})]})}),jr=h.memo(()=>{const[t,e]=h.useState(!1),n=()=>e(!t);return o(_r,{button:o(l.EuiButtonIcon,{title:"Volume","aria-label":"Volume",iconType:R.Speaker2Regular,size:"s",iconSize:"l",onClick:n}),isOpen:t,closePopover:()=>e(!1)})}),Nr=h.memo(({playQueueStore:t})=>{const[e,n]=h.useState(!1),i=()=>n(!e);return o(Ar,{playQueueStore:t,button:o(l.EuiButtonIcon,{title:"More options","aria-label":"More options",iconType:R.MoreHorizontalFilled,size:"s",iconSize:"l",onClick:i}),isOpen:e,closePopover:()=>n(!1)})}),Dr=h.memo(({playQueueStore:t})=>N(l.EuiFlexGroup,{responsive:!1,gutterSize:"s",justifyContent:"flexEnd",alignItems:"center",children:[o(jr,{}),o(Nr,{playQueueStore:t})]})),$r=Y.observer(({playerStore:t,playQueueStore:e})=>o(l.EuiBottomBar,{paddingSize:"s",children:N(l.EuiFlexGroup,{direction:"column",gutterSize:"none",children:[o(l.EuiFlexItem,{children:o(Or,{playerStore:t})}),o(l.EuiFlexItem,{children:N(l.EuiFlexGroup,{responsive:!1,children:[o(l.EuiFlexItem,{css:{width:"calc(100% / 3)"}}),o(l.EuiFlexItem,{css:{width:"calc(100% / 3)"},children:o(Mr,{playerStore:t,playQueueStore:e})}),o(l.EuiFlexItem,{css:{width:"calc(100% / 3)"},children:o(Dr,{playQueueStore:e})})]})})]})})),zr=({onCancel:t,onSave:e})=>{const[n,i]=h.useState(""),[a,c]=h.useState(""),[m,p]=h.useState(!1);return N(l.EuiModal,{onClose:t,initialFocus:"[name=url]",children:[o(l.EuiModalHeader,{children:o(l.EuiModalHeaderTitle,{children:"Add video"})}),o(l.EuiModalBody,{children:N(l.EuiForm,{component:"form",children:[o(l.EuiFormRow,{label:"URL",children:o(l.EuiFieldText,{name:"url",value:n,onChange:y=>i(y.target.value)})}),o(l.EuiFormRow,{label:"Title",children:o(l.EuiFieldText,{name:"title",value:a,onChange:y=>c(y.target.value)})})]})}),N(l.EuiModalFooter,{children:[o(l.EuiButtonEmpty,{onClick:t,children:"Cancel"}),o(l.EuiButton,{type:"submit",onClick:async()=>{try{p(!0),await e({url:n,title:a})}finally{p(!1)}},fill:!0,disabled:n.trim().length===0,isLoading:m,children:"Save"})]})]})};function Br(t){return t!==null&&typeof t=="object"&&"title"in t&&typeof t.title=="string"}const Lr=h.memo(({playQueueStore:t})=>{const[e,n]=h.useState(!1),i=h.useCallback(async a=>{const c=J.findVideoService(a.url);if(c!==void 0){const m=c.extractVideoId(a.url);if(m!==void 0){const y=await(await fetch(`https://noembed.com/embed?url=${encodeURIComponent(a.url)}`)).json();await t.addItems([t.createItem({url:a.url,type:c.type,videoId:m,title:a.title||(Br(y)?y.title:m)})])}}n(!1)},[t]);return N(Ee,{children:[o(l.EuiButton,{onClick:()=>n(!0),iconType:R.AddRegular,color:"primary",children:"Add video"}),e&&o(zr,{onCancel:()=>n(!1),onSave:i})]})}),Vr=Y.observer(({playQueueStore:t})=>{const{euiTheme:e}=l.useEuiTheme();return N(l.EuiTableHeader,{style:{position:"sticky",top:112,zIndex:998,background:e.colors.backgroundBasePlain},children:[o(l.EuiTableHeaderCellCheckbox,{children:o(l.EuiCheckbox,{id:"",checked:t.allItemsSelected,onChange:n=>{t.allItemsSelected=n.target.checked}})}),o(l.EuiTableHeaderCell,{width:24}),o(l.EuiTableHeaderCell,{children:"Title"}),o(l.EuiTableHeaderCell,{})]})}),Yr=h.memo(({item:t,closePopover:e})=>{const n=h.memo(({onClick:i,...a})=>{const c=h.useCallback(m=>{e(),i==null||i(m)},[i]);return o(l.EuiContextMenuItem,{...a,onClick:c})});return N(l.EuiContextMenuPanel,{children:[o(n,{icon:o(l.EuiIcon,{type:""}),onClick:t.playFirst,children:"Play first"}),o(n,{icon:o(l.EuiIcon,{type:""}),onClick:t.playNext,children:"Play next"}),o(n,{icon:o(l.EuiIcon,{type:R.AddRegular}),onClick:t.addToPlayQueue,children:"Add to play queue"}),o(l.EuiHorizontalRule,{margin:"none"}),o(n,{icon:o(l.EuiIcon,{type:R.ArrowUploadRegular}),onClick:t.moveToTop,disabled:!t.canMoveToTop,children:"Move to the top"}),o(n,{icon:o(l.EuiIcon,{type:R.ArrowDownloadRegular}),onClick:t.moveToBottom,disabled:!t.canMoveToBottom,children:"Move to the bottom"}),o(l.EuiHorizontalRule,{margin:"none"}),o(n,{icon:o(l.EuiIcon,{type:""}),onClick:t.removeToTop,disabled:!t.canRemoveToTop,children:"Remove to the top"}),o(n,{icon:o(l.EuiIcon,{type:""}),onClick:t.removeOthers,disabled:!t.canRemoveOthers,children:"Remove others"})]})}),Wr=h.memo(({item:t})=>{const[e,n]=h.useState(!1),i=h.useCallback(()=>n(!e),[e]),a=h.useCallback(()=>n(!1),[]);return o(l.EuiPopover,{button:o(l.EuiButtonIcon,{title:"More options","aria-label":"More options",iconType:R.MoreHorizontalFilled,size:"s",color:"text",onClick:i}),isOpen:e,closePopover:a,panelPaddingSize:"none",anchorPosition:"leftCenter",children:o(Yr,{item:t,closePopover:a})})}),qr=Y.observer(({item:t})=>{const e=J.useNostalgicDiva();return N(l.EuiTableRowCell,{textOnly:!1,hasActions:!0,align:"right",children:[o(l.EuiButton,{iconType:R.PlayRegular,size:"s",onClick:async()=>{t.isCurrent?await e.setCurrentTime(0):t.play()},children:"Play"}),o(l.EuiButton,{iconType:R.DismissRegular,size:"s",onClick:t.remove,children:"Remove"}),o(Wr,{item:t})]})}),Ur={Audio:"",Dailymotion:"https://www.dailymotion.com/favicon.ico",Niconico:"https://www.nicovideo.jp/favicon.ico",SoundCloud:"https://soundcloud.com/favicon.ico",Twitch:"https://www.twitch.tv/favicon.ico",Vimeo:"https://vimeo.com/favicon.ico",YouTube:"https://www.youtube.com/favicon.ico"},Hr=Y.observer(({item:t})=>{const e=J.useNostalgicDiva();return N(l.EuiTableRow,{isSelected:t.isCurrent,children:[o(l.EuiTableRowCellCheckbox,{children:o(l.EuiCheckbox,{id:t.id.toString(),checked:t.isSelected,onChange:t.toggleSelected})}),o(l.EuiTableRowCell,{textOnly:!1,children:o("img",{src:Ur[t.type],width:16,height:16,alt:t.type})}),o(l.EuiTableRowCell,{children:o(l.EuiLink,{href:t.url,target:"_blank",external:!0,onClick:()=>e.pause(),children:t.title})}),o(qr,{item:t})]},t.id)}),Gr=Y.observer(({playQueueStore:t})=>o(rr.ReactSortable,{tag:"tbody",list:t.items,setList:e=>t.setItems(e),children:t.items.map(e=>o(Hr,{item:e},e.id))})),Jr=Y.observer(({playQueueStore:t})=>N(l.EuiTable,{children:[o(Vr,{playQueueStore:t}),o(Gr,{playQueueStore:t})]})),Kr=Y.observer(({playQueueStore:t})=>{const[e,n]=h.useState(!1);return N(Ee,{children:[e&&o(l.EuiFlyout,{type:"push",size:"s",onClose:()=>n(!1),children:o("div",{style:{blockSize:"100%"},children:o(l.EuiCodeBlock,{language:"json",overflowHeight:"100%",isCopyable:!0,isVirtualized:!0,children:JSON.stringify(t.localStorageState,void 0,2)})})}),o(Lr,{playQueueStore:t})]})}),Xr=Y.observer(({playerStore:t,playQueueStore:e})=>{const{euiTheme:n}=l.useEuiTheme();return N(Ee,{children:[N(l.EuiFlexGroup,{alignItems:"center",gutterSize:"m",style:{position:"sticky",top:48,zIndex:998,background:n.colors.backgroundBasePlain},children:[o(l.EuiFlexItem,{grow:!1,children:o(l.EuiButton,{disabled:e.isEmpty||e.selectedItems.length===0,onClick:e.playSelectedItemsNext,children:"Play next"})}),o(l.EuiFlexItem,{grow:!1,children:o(l.EuiButton,{iconType:R.AddRegular,onClick:e.addSelectedItems,disabled:e.isEmpty||e.selectedItems.length===0,children:"Add to play queue"})}),o(l.EuiFlexItem,{grow:!1,children:o(l.EuiButton,{iconType:R.DismissRegular,onClick:e.removeSelectedItems,disabled:e.isEmpty||e.selectedItems.length===0,children:"Remove"})}),o(l.EuiFlexItem,{grow:!1,children:o(l.EuiButton,{iconType:R.DeleteRegular,onClick:e.clear,disabled:e.isEmpty,children:"Clear"})}),o(l.EuiFlexItem,{grow:!0}),o(l.EuiFlexItem,{grow:!1,children:o(Kr,{playQueueStore:e})})]}),!e.isEmpty&&N(Ee,{children:[o(l.EuiSpacer,{size:"l",style:{position:"sticky",top:88,zIndex:998,background:n.colors.backgroundBasePlain}}),o(Jr,{playQueueStore:e})]})]})}),Zr=Y.observer(({playerStore:t,playQueueStore:e})=>N(Ee,{children:[o(l.EuiPageTemplate.Header,{pageTitle:"Play queue",rightSideItems:[]}),o(l.EuiPageTemplate.Section,{children:o(Xr,{playerStore:t,playQueueStore:e})})]})),Fe={width:16*25,height:9*25},Qr=Y.observer(({playerStore:t,playQueueStore:e})=>{const n=J.useNostalgicDiva(),i=h.useCallback(async()=>{e.interacted&&await n.play()},[e,n]),a=h.useCallback(async()=>{switch(e.repeat){case _.One:await n.setCurrentTime(0);break;case _.Off:case _.All:if(e.isLastItem)switch(e.repeat){case _.Off:t.onEnded();break;case _.All:e.hasMultipleItems?await e.goToFirst():await n.setCurrentTime(0);break}else await e.next();break}},[e,t,n]),c=h.useMemo(()=>({onLoaded:i,onPlay:t.onPlay,onPause:t.onPause,onEnded:a,onTimeUpdate:t.onTimeUpdate}),[t,i,a]);return o("div",{css:{position:"fixed",right:0,bottom:Ke,width:Fe.width,height:Fe.height,zIndex:998,backgroundColor:"rgb(39, 39, 39)",display:"flex",flexDirection:"column"},children:o("div",{css:{flexGrow:1,backgroundColor:"black"},children:e.currentItem&&o(J.NostalgicDiva,{src:e.currentItem.url,options:c})})})});class Xe{makeObservable(e,n){return u.makeObservable(e,n)}}const ye=class ye{constructor(e,n,i){U(this,"id");U(this,"isSelected",!1);this.observableStateProvider=e,this.playQueueStore=n,this.dto=i,this.id=ye.nextId++,e.makeObservable(this,{isSelected:u.observable,isCurrent:u.computed,index:u.computed,isFirst:u.computed,isLast:u.computed,canMoveToTop:u.computed,canMoveToBottom:u.computed,canRemoveToTop:u.computed,canRemoveOthers:u.computed,unselect:u.action,toggleSelected:u.action.bound,play:u.action,remove:u.action.bound,playFirst:u.action.bound,playNext:u.action.bound,addToPlayQueue:u.action.bound,moveToTop:u.action.bound,moveToBottom:u.action.bound,removeToTop:u.action.bound,removeOthers:u.action.bound})}static fromDto(e,n,i){return new ye(e,n,i)}get url(){return this.dto.url}get type(){return this.dto.type}get videoId(){return this.dto.videoId}get title(){return this.dto.title}get isCurrent(){return this.playQueueStore.currentItem===this}get index(){return this.playQueueStore.items.indexOf(this)}get isFirst(){return this.index===0}get isLast(){return this.index===this.playQueueStore.items.length-1}get canMoveToTop(){return!this.isFirst}get canMoveToBottom(){return!this.isLast}get canRemoveToTop(){return!this.isFirst}get canRemoveOthers(){return this.playQueueStore.hasMultipleItems}clone(){return this.playQueueStore.createItem(this.dto)}unselect(){this.isSelected=!1}toggleSelected(){this.isSelected=!this.isSelected}play(){this.playQueueStore.setCurrentItem(this)}remove(){return this.playQueueStore.removeItems([this])}async playFirst(){await this.playQueueStore.playFirst([this.clone()])}async playNext(){await this.playQueueStore.playNext([this.clone()])}async addToPlayQueue(){await this.playQueueStore.addItems([this.clone()])}moveToTop(){this.playQueueStore.moveItem(this,0)}moveToBottom(){this.playQueueStore.moveItem(this,this.playQueueStore.items.length-1)}removeToTop(){return this.playQueueStore.removeItemsAbove(this)}removeOthers(){return this.playQueueStore.removeOtherItems(this)}};U(ye,"nextId",1);let Je=ye;const He=new nr({coerceTypes:!0});function en(t,e){let n;if(n=He.getSchema(e),n===void 0&&(He.addSchema(t,e),n=He.getSchema(e)),n===void 0||n.schema!==t)throw new Error(`Invalid schema. Expected: '${JSON.stringify(t)}', but got '${JSON.stringify(n==null?void 0:n.schema)}'.`);return n}const tn={type:"object",properties:{version:{type:"string",nullable:!0},repeat:{type:"string",enum:Object.values(_),nullable:!0},shuffle:{type:"boolean",nullable:!0},items:{type:"array",nullable:!0,items:{type:"object",properties:{url:{type:"string"},type:{type:"string"},videoId:{type:"string"},title:{type:"string"}},required:["url","type","videoId","title"]}},currentIndex:{type:"integer",nullable:!0}}},rn=en(tn,"PlayQueueStore");class nn{constructor(e){U(this,"interacted",!1);U(this,"items",[]);U(this,"currentId");U(this,"repeat",_.Off);U(this,"shuffle",!1);this.observableStateProvider=e,e.makeObservable(this,{interacted:u.observable,items:u.observable,currentId:u.observable,repeat:u.observable,shuffle:u.observable,localStorageState:u.computed.struct,isEmpty:u.computed,currentItem:u.computed,canPlay:u.computed,canPause:u.computed,hasMultipleItems:u.computed,currentIndex:u.computed,hasPreviousItem:u.computed,hasNextItem:u.computed,isLastItem:u.computed,selectedItems:u.computed,allItemsSelected:u.computed,selectedItemsOrAllItems:u.computed,setItems:u.action,interact:u.action,clear:u.action.bound,unselectAll:u.action,setCurrentItem:u.action,setNextItems:u.action,clearAndSetItems:u.action,playNext:u.action,playSelectedItemsNext:u.action.bound,addItems:u.action,addSelectedItems:u.action.bound,playFirst:u.action,moveItem:u.action,removeItems:u.action,removeSelectedItems:u.action.bound,removeOtherItems:u.action,removeItemsAbove:u.action,toggleRepeat:u.action.bound,toggleShuffle:u.action.bound,previous:u.action,next:u.action.bound,goToFirst:u.action})}createItem(e){return Je.fromDto(this.observableStateProvider,this,e)}get localStorageState(){return{version:"1.0",repeat:this.repeat,shuffle:this.shuffle,items:this.items.map(e=>e.dto),currentIndex:this.currentIndex}}set localStorageState(e){var n;this.repeat=e.repeat??_.Off,this.shuffle=e.shuffle??!1,this.items=((n=e.items)==null?void 0:n.map(i=>this.createItem(i)))??[],this.currentIndex=e.currentIndex}validateLocalStorageState(e){return rn(e)}get isEmpty(){return this.items.length===0}get currentItem(){return this.items.find(e=>e.id===this.currentId)}get canPlay(){return this.currentItem!==void 0}get canPause(){return this.currentItem!==void 0}get hasMultipleItems(){return this.items.length>1}get currentIndex(){return this.currentId!==void 0?this.items.findIndex(e=>e.id===this.currentId):void 0}set currentIndex(e){var n;this.currentId=e!==void 0?(n=this.items.at(e))==null?void 0:n.id:void 0}get hasPreviousItem(){return this.hasMultipleItems&&this.currentIndex!==void 0&&this.currentIndex>0}get hasNextItem(){return this.hasMultipleItems&&this.currentIndex!==void 0&&this.currentIndex<this.items.length-1}get isLastItem(){return this.currentIndex!==void 0&&this.currentIndex===this.items.length-1}get selectedItems(){return this.items.filter(e=>e.isSelected)}get allItemsSelected(){return this.selectedItems.length===this.items.length}set allItemsSelected(e){for(const n of this.items)n.isSelected=e}get selectedItemsOrAllItems(){return this.selectedItems.length>0?this.selectedItems:this.items}setItems(e){this.items=e}interact(){this.interacted=!0}clear(){this.interact(),this.currentIndex=void 0,this.items=[]}unselectAll(){for(const e of this.items)e.unselect()}setCurrentItem(e){this.interact(),this.currentId=e==null?void 0:e.id}setNextItems(e){this.currentIndex!==void 0&&this.items.splice(this.currentIndex+1,0,...e)}clearAndSetItems(e){this.clear(),this.setCurrentItem(e[0]),this.setNextItems(e)}async playNext(e){if(this.isEmpty){this.clearAndSetItems(e);return}this.setNextItems(e)}async playSelectedItemsNext(){await this.playNext(this.selectedItemsOrAllItems.map(e=>e.clone())),this.unselectAll()}async addItems(e){if(this.isEmpty){this.clearAndSetItems(e);return}this.items.push(...e)}async addSelectedItems(){await this.addItems(this.selectedItemsOrAllItems.map(e=>e.clone())),this.unselectAll()}async playFirst(e){if(this.isEmpty){this.clearAndSetItems(e);return}const{currentIndex:n}=this;n!==void 0&&(this.interact(),this.items.splice(n,0,...e),this.currentIndex=n)}moveItem(e,n){const i=this.items.splice(this.items.indexOf(e),1)[0];this.items.splice(n,0,i)}async removeItems(e){const{currentItem:n}=this;ft.pull(this.items,...e.filter(c=>c!==n));const{currentIndex:i,isLastItem:a}=this;ft.pull(this.items,e.find(c=>c===n)),this.currentItem!==n&&(this.interact(),a?await this.goToFirst():this.currentIndex=i)}async removeSelectedItems(){await this.removeItems(this.selectedItemsOrAllItems),this.unselectAll()}async removeOtherItems(e){const n=e.id;return this.removeItems(this.items.filter(i=>i.id!==n))}async removeItemsAbove(e){const n=this.items.indexOf(e);return this.removeItems(this.items.filter((i,a)=>a<n))}toggleRepeat(){switch(this.repeat){case _.Off:this.repeat=_.All;break;case _.All:this.repeat=_.One;break;case _.One:this.repeat=_.Off;break}}toggleShuffle(){this.shuffle=!this.shuffle}async previous(){this.currentIndex!==void 0&&this.hasPreviousItem&&(this.interact(),this.currentIndex--)}async next(){this.currentIndex!==void 0&&this.hasNextItem&&(this.interact(),this.currentIndex++)}async goToFirst(){this.currentIndex!==void 0&&(this.currentIndex=0)}}const wt=h.createContext(void 0),on=({children:t})=>{const[e]=h.useState(()=>new nn(new Xe)),n=J.useNostalgicDiva();return h.useEffect(()=>u.reaction(()=>e.currentItem,async(i,a)=>{i===void 0||a===void 0||i.type===a.type&&i.videoId===a.videoId&&await n.setCurrentTime(0)}),[e,n]),o(wt.Provider,{value:e,children:t})},Ot=()=>h.useContext(wt),an=Y.observer(({children:t})=>{const e=Ot();return N(l.EuiPageTemplate,{panelled:!0,style:{minBlockSize:`max(460px, 100vh - ${Ke}px)`},children:[t,!e.isEmpty&&o(l.EuiSpacer,{style:{blockSize:Fe.height}})]})});class sn{constructor(e){U(this,"playing",!1);U(this,"percent",0);U(this,"seeking",!1);e.makeObservable(this,{playing:u.observable,percent:u.observable,seeking:u.observable,setPlaying:u.action,setPercent:u.action,setSeeking:u.action,onPlay:u.action.bound,onPause:u.action.bound,onEnded:u.action.bound,onTimeUpdate:u.action.bound})}setPlaying(e){this.playing=e}setPercent(e){this.percent=e}setSeeking(e){this.seeking=e}onPlay(){this.playing=!0}onPause(){this.playing=!1}onEnded(){this.playing=!1}onTimeUpdate({percent:e}){e!==void 0&&(this.seeking||(this.percent=e))}}const _t=h.createContext(void 0),ln=({children:t})=>{const[e]=h.useState(()=>new sn(new Xe));return o(_t.Provider,{value:e,children:t})},cn=()=>h.useContext(_t);class un{makeObservable(e,n){return e}}exports.BottomBar=$r;exports.HydrangeanDiva=Zr;exports.MediaPlayerLayout=an;exports.MiniPlayer=Qr;exports.MobXObservableStateProvider=Xe;exports.ObservableStateProvider=un;exports.PlayQueueStoreProvider=on;exports.PlayerStoreProvider=ln;exports.RepeatMode=_;exports.bottomBarHeight=Ke;exports.miniPlayerSize=Fe;exports.usePlayQueueStore=Ot;exports.usePlayerStore=cn;
2
45
  //# sourceMappingURL=index.cjs.js.map