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

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 Xt=Object.defineProperty;var Zt=(t,e,n)=>e in t?Xt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var V=(t,e,n)=>Zt(t,typeof e!="symbol"?e+"":e,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("react"),Qt=require("@emotion/cache"),H=require("@aigamo/nostalgic-diva"),l=require("@elastic/eui"),R=require("@fluentui/react-icons"),z=require("mobx-react-lite"),er=require("react-sortablejs"),u=require("mobx"),dt=require("lodash-es"),tr=require("ajv");function rr(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 J=rr(v);var Ue={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 ft;function nr(){if(ft)return he;ft=1;var t=v,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 h(p,y,g){var T,O={},Y=null,N=null;g!==void 0&&(Y=""+g),y.key!==void 0&&(Y=""+y.key),y.ref!==void 0&&(N=y.ref);for(T in y)i.call(y,T)&&!c.hasOwnProperty(T)&&(O[T]=y[T]);if(p&&p.defaultProps)for(T in y=p.defaultProps,y)O[T]===void 0&&(O[T]=y[T]);return{$$typeof:e,type:p,key:Y,ref:N,props:O,_owner:a.current}}return he.Fragment=n,he.jsx=h,he.jsxs=h,he}var ve={};/**
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 mt;function ir(){return mt||(mt=1,process.env.NODE_ENV!=="production"&&function(){var t=v,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"),h=Symbol.for("react.provider"),p=Symbol.for("react.context"),y=Symbol.for("react.forward_ref"),g=Symbol.for("react.suspense"),T=Symbol.for("react.suspense_list"),O=Symbol.for("react.memo"),Y=Symbol.for("react.lazy"),N=Symbol.for("react.offscreen"),B=Symbol.iterator,oe="@@iterator";function ae(r){if(r===null||typeof r!="object")return null;var s=B&&r[B]||r[oe];return typeof s=="function"?s:null}var W=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function F(r){{for(var s=arguments.length,d=new Array(s>1?s-1:0),b=1;b<s;b++)d[b-1]=arguments[b];$("error",r,d)}}function $(r,s,d){{var b=W.ReactDebugCurrentFrame,C=b.getStackAddendum();C!==""&&(s+="%s",d=d.concat([C]));var P=d.map(function(x){return String(x)});P.unshift("Warning: "+s),Function.prototype.apply.call(console[r],console,P)}}var M=!1,f=!1,K=!1,ke=!1,Ae=!1,Ee;Ee=Symbol.for("react.module.reference");function Fe(r){return!!(typeof r=="string"||typeof r=="function"||r===i||r===c||Ae||r===a||r===g||r===T||ke||r===N||M||f||K||typeof r=="object"&&r!==null&&(r.$$typeof===Y||r.$$typeof===O||r.$$typeof===h||r.$$typeof===p||r.$$typeof===y||r.$$typeof===Ee||r.getModuleId!==void 0))}function Me(r,s,d){var b=r.displayName;if(b)return b;var C=s.displayName||s.name||"";return C!==""?d+"("+C+")":d}function xe(r){return r.displayName||"Context"}function U(r){if(r==null)return null;if(typeof r.tag=="number"&&F("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 T:return"SuspenseList"}if(typeof r=="object")switch(r.$$typeof){case p:var s=r;return xe(s)+".Consumer";case h:var d=r;return xe(d._context)+".Provider";case y:return Me(r,r.render,"ForwardRef");case O:var b=r.displayName||null;return b!==null?b:U(r.type)||"Memo";case Y:{var C=r,P=C._payload,x=C._init;try{return U(x(P))}catch{return null}}}return null}var G=Object.assign,X=0,Ce,Ie,se,Se,le,Te,Pe;function Re(){}Re.__reactDisabledLog=!0;function $e(){{if(X===0){Ce=console.log,Ie=console.info,se=console.warn,Se=console.error,le=console.group,Te=console.groupCollapsed,Pe=console.groupEnd;var r={configurable:!0,enumerable:!0,value:Re,writable:!0};Object.defineProperties(console,{info:r,log:r,warn:r,error:r,group:r,groupCollapsed:r,groupEnd:r})}X++}}function je(){{if(X--,X===0){var r={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:G({},r,{value:Ce}),info:G({},r,{value:Ie}),warn:G({},r,{value:se}),error:G({},r,{value:Se}),group:G({},r,{value:le}),groupCollapsed:G({},r,{value:Te}),groupEnd:G({},r,{value:Pe})})}X<0&&F("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var ce=W.ReactCurrentDispatcher,ue;function ee(r,s,d){{if(ue===void 0)try{throw Error()}catch(C){var b=C.stack.trim().match(/\n( *(at )?)/);ue=b&&b[1]||""}return`
18
+ `+ue+r}}var de=!1,te;{var Ne=typeof WeakMap=="function"?WeakMap:Map;te=new Ne}function m(r,s){if(!r||de)return"";{var d=te.get(r);if(d!==void 0)return d}var b;de=!0;var C=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var P;P=ce.current,ce.current=null,$e();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(D){b=D}Reflect.construct(r,[],x)}else{try{x.call()}catch(D){b=D}r.call(x.prototype)}}else{try{throw Error()}catch(D){b=D}r()}}catch(D){if(D&&b&&typeof D.stack=="string"){for(var E=D.stack.split(`
19
+ `),j=b.stack.split(`
20
+ `),_=E.length-1,k=j.length-1;_>=1&&k>=0&&E[_]!==j[k];)k--;for(;_>=1&&k>=0;_--,k--)if(E[_]!==j[k]){if(_!==1||k!==1)do if(_--,k--,k<0||E[_]!==j[k]){var L=`
21
+ `+E[_].replace(" at new "," at ");return r.displayName&&L.includes("<anonymous>")&&(L=L.replace("<anonymous>",r.displayName)),typeof r=="function"&&te.set(r,L),L}while(_>=1&&k>=0);break}}}finally{de=!1,ce.current=P,je(),Error.prepareStackTrace=C}var ie=r?r.displayName||r.name:"",Q=ie?ee(ie):"";return typeof r=="function"&&te.set(r,Q),Q}function fe(r,s,d){return m(r,!1)}function re(r){var s=r.prototype;return!!(s&&s.isReactComponent)}function Z(r,s,d){if(r==null)return"";if(typeof r=="function")return m(r,re(r));if(typeof r=="string")return ee(r);switch(r){case g:return ee("Suspense");case T:return ee("SuspenseList")}if(typeof r=="object")switch(r.$$typeof){case y:return fe(r.render);case O:return Z(r.type,s,d);case Y:{var b=r,C=b._payload,P=b._init;try{return Z(P(C),s,d)}catch{}}}return""}var me=Object.prototype.hasOwnProperty,Xe={},Ze=W.ReactDebugCurrentFrame;function we(r){if(r){var s=r._owner,d=Z(r.type,r._source,s?s.type:null);Ze.setExtraStackFrame(d)}else Ze.setExtraStackFrame(null)}function Ot(r,s,d,b,C){{var P=Function.call.bind(me);for(var x in r)if(P(r,x)){var E=void 0;try{if(typeof r[x]!="function"){var j=Error((b||"React class")+": "+d+" 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 j.name="Invariant Violation",j}E=r[x](s,x,b,d,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(_){E=_}E&&!(E instanceof Error)&&(we(C),F("%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",d,x,typeof E),we(null)),E instanceof Error&&!(E.message in Xe)&&(Xe[E.message]=!0,we(C),F("Failed %s type: %s",d,E.message),we(null))}}}var _t=Array.isArray;function De(r){return _t(r)}function kt(r){{var s=typeof Symbol=="function"&&Symbol.toStringTag,d=s&&r[Symbol.toStringTag]||r.constructor.name||"Object";return d}}function At(r){try{return Qe(r),!1}catch{return!0}}function Qe(r){return""+r}function et(r){if(At(r))return F("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",kt(r)),Qe(r)}var tt=W.ReactCurrentOwner,Ft={key:!0,ref:!0,__self:!0,__source:!0},rt,nt;function Mt(r){if(me.call(r,"ref")){var s=Object.getOwnPropertyDescriptor(r,"ref").get;if(s&&s.isReactWarning)return!1}return r.ref!==void 0}function $t(r){if(me.call(r,"key")){var s=Object.getOwnPropertyDescriptor(r,"key").get;if(s&&s.isReactWarning)return!1}return r.key!==void 0}function jt(r,s){typeof r.ref=="string"&&tt.current}function Nt(r,s){{var d=function(){rt||(rt=!0,F("%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))};d.isReactWarning=!0,Object.defineProperty(r,"key",{get:d,configurable:!0})}}function Dt(r,s){{var d=function(){nt||(nt=!0,F("%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))};d.isReactWarning=!0,Object.defineProperty(r,"ref",{get:d,configurable:!0})}}var zt=function(r,s,d,b,C,P,x){var E={$$typeof:e,type:r,key:s,ref:d,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:C}),Object.freeze&&(Object.freeze(E.props),Object.freeze(E)),E};function Bt(r,s,d,b,C){{var P,x={},E=null,j=null;d!==void 0&&(et(d),E=""+d),$t(s)&&(et(s.key),E=""+s.key),Mt(s)&&(j=s.ref,jt(s,C));for(P in s)me.call(s,P)&&!Ft.hasOwnProperty(P)&&(x[P]=s[P]);if(r&&r.defaultProps){var _=r.defaultProps;for(P in _)x[P]===void 0&&(x[P]=_[P])}if(E||j){var k=typeof r=="function"?r.displayName||r.name||"Unknown":r;E&&Nt(x,k),j&&Dt(x,k)}return zt(r,E,j,C,b,tt.current,x)}}var ze=W.ReactCurrentOwner,it=W.ReactDebugCurrentFrame;function ne(r){if(r){var s=r._owner,d=Z(r.type,r._source,s?s.type:null);it.setExtraStackFrame(d)}else it.setExtraStackFrame(null)}var Be;Be=!1;function Le(r){return typeof r=="object"&&r!==null&&r.$$typeof===e}function ot(){{if(ze.current){var r=U(ze.current.type);if(r)return`
22
+
23
+ Check the render method of \``+r+"`."}return""}}function Lt(r){return""}var at={};function Vt(r){{var s=ot();if(!s){var d=typeof r=="string"?r:r.displayName||r.name;d&&(s=`
24
+
25
+ Check the top-level render call using <`+d+">.")}return s}}function st(r,s){{if(!r._store||r._store.validated||r.key!=null)return;r._store.validated=!0;var d=Vt(s);if(at[d])return;at[d]=!0;var b="";r&&r._owner&&r._owner!==ze.current&&(b=" It was passed a child from "+U(r._owner.type)+"."),ne(r),F('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',d,b),ne(null)}}function lt(r,s){{if(typeof r!="object")return;if(De(r))for(var d=0;d<r.length;d++){var b=r[d];Le(b)&&st(b,s)}else if(Le(r))r._store&&(r._store.validated=!0);else if(r){var C=ae(r);if(typeof C=="function"&&C!==r.entries)for(var P=C.call(r),x;!(x=P.next()).done;)Le(x.value)&&st(x.value,s)}}}function Yt(r){{var s=r.type;if(s==null||typeof s=="string")return;var d;if(typeof s=="function")d=s.propTypes;else if(typeof s=="object"&&(s.$$typeof===y||s.$$typeof===O))d=s.propTypes;else return;if(d){var b=U(s);Ot(d,r.props,"prop",b,r)}else if(s.PropTypes!==void 0&&!Be){Be=!0;var C=U(s);F("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",C||"Unknown")}typeof s.getDefaultProps=="function"&&!s.getDefaultProps.isReactClassApproved&&F("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function Wt(r){{for(var s=Object.keys(r.props),d=0;d<s.length;d++){var b=s[d];if(b!=="children"&&b!=="key"){ne(r),F("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",b),ne(null);break}}r.ref!==null&&(ne(r),F("Invalid attribute `ref` supplied to `React.Fragment`."),ne(null))}}var ct={};function ut(r,s,d,b,C,P){{var x=Fe(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 j=Lt();j?E+=j:E+=ot();var _;r===null?_="null":De(r)?_="array":r!==void 0&&r.$$typeof===e?(_="<"+(U(r.type)||"Unknown")+" />",E=" Did you accidentally export a JSX literal instead of a component?"):_=typeof r,F("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",_,E)}var k=Bt(r,s,d,C,P);if(k==null)return k;if(x){var L=s.children;if(L!==void 0)if(b)if(De(L)){for(var ie=0;ie<L.length;ie++)lt(L[ie],r);Object.freeze&&Object.freeze(L)}else F("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 lt(L,r)}if(me.call(s,"key")){var Q=U(r),D=Object.keys(s).filter(function(Kt){return Kt!=="key"}),Ve=D.length>0?"{key: someKey, "+D.join(": ..., ")+": ...}":"{key: someKey}";if(!ct[Q+Ve]){var Jt=D.length>0?"{"+D.join(": ..., ")+": ...}":"{}";F(`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} />`,Ve,Q,Jt,Q),ct[Q+Ve]=!0}}return r===i?Wt(k):Yt(k),k}}function Ut(r,s,d){return ut(r,s,d,!0)}function qt(r,s,d){return ut(r,s,d,!1)}var Ht=qt,Gt=Ut;ve.Fragment=i,ve.jsx=Ht,ve.jsxs=Gt}()),ve}process.env.NODE_ENV==="production"?Ue.exports=nr():Ue.exports=ir();var ye=Ue.exports,qe={exports:{}},I={};/** @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 ht;function or(){if(ht)return I;ht=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,h=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,T=t?Symbol.for("react.forward_ref"):60112,O=t?Symbol.for("react.suspense"):60113,Y=t?Symbol.for("react.suspense_list"):60120,N=t?Symbol.for("react.memo"):60115,B=t?Symbol.for("react.lazy"):60116,oe=t?Symbol.for("react.block"):60121,ae=t?Symbol.for("react.fundamental"):60117,W=t?Symbol.for("react.responder"):60118,F=t?Symbol.for("react.scope"):60119;function $(f){if(typeof f=="object"&&f!==null){var K=f.$$typeof;switch(K){case e:switch(f=f.type,f){case y:case g:case i:case c:case a:case O:return f;default:switch(f=f&&f.$$typeof,f){case p:case T:case B:case N:case h:return f;default:return K}}case n:return K}}}function M(f){return $(f)===g}return I.AsyncMode=y,I.ConcurrentMode=g,I.ContextConsumer=p,I.ContextProvider=h,I.Element=e,I.ForwardRef=T,I.Fragment=i,I.Lazy=B,I.Memo=N,I.Portal=n,I.Profiler=c,I.StrictMode=a,I.Suspense=O,I.isAsyncMode=function(f){return M(f)||$(f)===y},I.isConcurrentMode=M,I.isContextConsumer=function(f){return $(f)===p},I.isContextProvider=function(f){return $(f)===h},I.isElement=function(f){return typeof f=="object"&&f!==null&&f.$$typeof===e},I.isForwardRef=function(f){return $(f)===T},I.isFragment=function(f){return $(f)===i},I.isLazy=function(f){return $(f)===B},I.isMemo=function(f){return $(f)===N},I.isPortal=function(f){return $(f)===n},I.isProfiler=function(f){return $(f)===c},I.isStrictMode=function(f){return $(f)===a},I.isSuspense=function(f){return $(f)===O},I.isValidElementType=function(f){return typeof f=="string"||typeof f=="function"||f===i||f===g||f===c||f===a||f===O||f===Y||typeof f=="object"&&f!==null&&(f.$$typeof===B||f.$$typeof===N||f.$$typeof===h||f.$$typeof===p||f.$$typeof===T||f.$$typeof===ae||f.$$typeof===W||f.$$typeof===F||f.$$typeof===oe)},I.typeOf=$,I}var S={};/** @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 vt;function ar(){return vt||(vt=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,h=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,T=t?Symbol.for("react.forward_ref"):60112,O=t?Symbol.for("react.suspense"):60113,Y=t?Symbol.for("react.suspense_list"):60120,N=t?Symbol.for("react.memo"):60115,B=t?Symbol.for("react.lazy"):60116,oe=t?Symbol.for("react.block"):60121,ae=t?Symbol.for("react.fundamental"):60117,W=t?Symbol.for("react.responder"):60118,F=t?Symbol.for("react.scope"):60119;function $(m){return typeof m=="string"||typeof m=="function"||m===i||m===g||m===c||m===a||m===O||m===Y||typeof m=="object"&&m!==null&&(m.$$typeof===B||m.$$typeof===N||m.$$typeof===h||m.$$typeof===p||m.$$typeof===T||m.$$typeof===ae||m.$$typeof===W||m.$$typeof===F||m.$$typeof===oe)}function M(m){if(typeof m=="object"&&m!==null){var fe=m.$$typeof;switch(fe){case e:var re=m.type;switch(re){case y:case g:case i:case c:case a:case O:return re;default:var Z=re&&re.$$typeof;switch(Z){case p:case T:case B:case N:case h:return Z;default:return fe}}case n:return fe}}}var f=y,K=g,ke=p,Ae=h,Ee=e,Fe=T,Me=i,xe=B,U=N,G=n,X=c,Ce=a,Ie=O,se=!1;function Se(m){return se||(se=!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.")),le(m)||M(m)===y}function le(m){return M(m)===g}function Te(m){return M(m)===p}function Pe(m){return M(m)===h}function Re(m){return typeof m=="object"&&m!==null&&m.$$typeof===e}function $e(m){return M(m)===T}function je(m){return M(m)===i}function ce(m){return M(m)===B}function ue(m){return M(m)===N}function ee(m){return M(m)===n}function de(m){return M(m)===c}function te(m){return M(m)===a}function Ne(m){return M(m)===O}S.AsyncMode=f,S.ConcurrentMode=K,S.ContextConsumer=ke,S.ContextProvider=Ae,S.Element=Ee,S.ForwardRef=Fe,S.Fragment=Me,S.Lazy=xe,S.Memo=U,S.Portal=G,S.Profiler=X,S.StrictMode=Ce,S.Suspense=Ie,S.isAsyncMode=Se,S.isConcurrentMode=le,S.isContextConsumer=Te,S.isContextProvider=Pe,S.isElement=Re,S.isForwardRef=$e,S.isFragment=je,S.isLazy=ce,S.isMemo=ue,S.isPortal=ee,S.isProfiler=de,S.isStrictMode=te,S.isSuspense=Ne,S.isValidElementType=$,S.typeOf=M}()),S}process.env.NODE_ENV==="production"?qe.exports=or():qe.exports=ar();var sr=qe.exports,gt=sr,lr={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},cr={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},Et={};Et[gt.ForwardRef]=lr;Et[gt.Memo]=cr;var ur=!0;function dr(t,e,n){var i="";return n.split(" ").forEach(function(a){t[a]!==void 0?e.push(t[a]+";"):a&&(i+=a+" ")}),i}var xt=function(e,n,i){var a=e.key+"-"+n.name;(i===!1||ur===!1)&&e.registered[a]===void 0&&(e.registered[a]=n.styles)},fr=function(e,n,i){xt(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 mr(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 hr={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 vr(t){var e=Object.create(null);return function(n){return e[n]===void 0&&(e[n]=t(n)),e[n]}}var pr=/[A-Z]|^ms/g,yr=/_EMO_([^_]+?)_([^]*?)_EMO_/g,Ct=function(e){return e.charCodeAt(1)===45},pt=function(e){return e!=null&&typeof e!="boolean"},Ye=vr(function(t){return Ct(t)?t:t.replace(pr,"-$&").toLowerCase()}),yt=function(e,n){switch(e){case"animation":case"animationName":if(typeof n=="string")return n.replace(yr,function(i,a,c){return q={name:a,styles:c,next:q},a})}return hr[e]!==1&&!Ct(e)&&typeof n=="number"&&n!==0?n+"px":n};function be(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 q={name:a.name,styles:a.styles,next:q},a.name;var c=n;if(c.styles!==void 0){var h=c.next;if(h!==void 0)for(;h!==void 0;)q={name:h.name,styles:h.styles,next:q},h=h.next;var p=c.styles+";";return p}return br(t,e,n)}case"function":{if(t!==void 0){var y=q,g=n(t);return q=y,be(t,e,g)}break}}var T=n;return T}function br(t,e,n){var i="";if(Array.isArray(n))for(var a=0;a<n.length;a++)i+=be(t,e,n[a])+";";else for(var c in n){var h=n[c];if(typeof h!="object"){var p=h;pt(p)&&(i+=Ye(c)+":"+yt(c,p)+";")}else if(Array.isArray(h)&&typeof h[0]=="string"&&e==null)for(var y=0;y<h.length;y++)pt(h[y])&&(i+=Ye(c)+":"+yt(c,h[y])+";");else{var g=be(t,e,h);switch(c){case"animation":case"animationName":{i+=Ye(c)+":"+g+";";break}default:i+=c+"{"+g+"}"}}}return i}var bt=/label:\s*([^\s;{]+)\s*(;|$)/g,q;function gr(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="";q=void 0;var c=t[0];if(c==null||c.raw===void 0)i=!1,a+=be(n,e,c);else{var h=c;a+=h[0]}for(var p=1;p<t.length;p++)if(a+=be(n,e,t[p]),i){var y=c;a+=y[p]}bt.lastIndex=0;for(var g="",T;(T=bt.exec(a))!==null;)g+="-"+T[1];var O=mr(a)+g;return{name:O,styles:a,next:q}}var Er=function(e){return e()},xr=J.useInsertionEffect?J.useInsertionEffect:!1,Cr=xr||Er,It=J.createContext(typeof HTMLElement<"u"?Qt({key:"css"}):null);It.Provider;var Ir=function(e){return v.forwardRef(function(n,i){var a=v.useContext(It);return e(n,a,i)})},Sr=J.createContext({}),_e={}.hasOwnProperty,He="__EMOTION_TYPE_PLEASE_DO_NOT_USE__",St=function(e,n){var i={};for(var a in n)_e.call(n,a)&&(i[a]=n[a]);return i[He]=e,i},Tr=function(e){var n=e.cache,i=e.serialized,a=e.isStringTag;return xt(n,i,a),Cr(function(){return fr(n,i,a)}),null},Pr=Ir(function(t,e,n){var i=t.css;typeof i=="string"&&e.registered[i]!==void 0&&(i=e.registered[i]);var a=t[He],c=[i],h="";typeof t.className=="string"?h=dr(e.registered,c,t.className):t.className!=null&&(h=t.className+" ");var p=gr(c,void 0,J.useContext(Sr));h+=e.key+"-"+p.name;var y={};for(var g in t)_e.call(t,g)&&g!=="css"&&g!==He&&(y[g]=t[g]);return y.className=h,n&&(y.ref=n),J.createElement(J.Fragment,null,J.createElement(Tr,{cache:e,serialized:p,isStringTag:typeof a=="string"}),J.createElement(a,y))}),Tt=Pr,ge=ye.Fragment,o=function(e,n,i){return _e.call(n,"css")?ye.jsx(Tt,St(e,n),i):ye.jsx(e,n,i)},A=function(e,n,i){return _e.call(n,"css")?ye.jsxs(Tt,St(e,n),i):ye.jsxs(e,n,i)},w=(t=>(t.Off="Off",t.All="All",t.One="One",t))(w||{});const Je=80,Rr=z.observer(({playerStore:t})=>{const e=H.useNostalgicDiva(),n=v.useCallback(c=>{const h=Number(c.currentTarget.value)/100;t.setPercent(h)},[t]),i=v.useCallback(c=>{c.button===0&&t.setSeeking(!0)},[t]),a=v.useCallback(async c=>{if(c.button===0){const h=Number(c.currentTarget.value)/100;t.setSeeking(!1);const p=await e.getDuration();p!==void 0&&await e.setCurrentTime(p*h)}},[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}})}),wr=v.memo(({button:t,isOpen:e,closePopover:n})=>{const[i,a]=v.useState("0"),c=H.useNostalgicDiva();v.useLayoutEffect(()=>{e&&c.getVolume().then(p=>{p!==void 0&&a(Math.floor(p*100).toString())})},[e,c]);const h=v.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:A(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:h,css:{blockSize:32}})]})})})}),Or=v.memo(({playQueueStore:t,closePopover:e})=>{const n=H.useNostalgicDiva(),i=v.useCallback(async()=>{const g=await n.getCurrentTime();g!==void 0&&await n.setCurrentTime(g-10),e()},[n,e]),a=v.useCallback(async()=>{const g=await n.getCurrentTime();g!==void 0&&await n.setCurrentTime(g+30),e()},[n,e]),c=v.useCallback(async g=>{await n.setPlaybackRate(g),e()},[n,e]),h=v.useCallback(async()=>{t.currentItem!==void 0&&await t.removeItems([t.currentItem]),e()},[t,e]),[p]=v.useState(),y=v.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:h,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,h,c,p]);return o(l.EuiContextMenu,{initialPanelId:0,panels:y})}),_r=v.memo(({playQueueStore:t,button:e,isOpen:n,closePopover:i})=>o(l.EuiPopover,{button:e,isOpen:n,closePopover:i,panelPaddingSize:"none",anchorPosition:"upRight",children:o(Or,{playQueueStore:t,closePopover:i})})),kr={[w.Off]:R.ArrowRepeatAllOffFilled,[w.All]:R.ArrowRepeatAllFilled,[w.One]:R.ArrowRepeat1Filled},Ar=z.observer(({playerStore:t,playQueueStore:e})=>{const n=H.useNostalgicDiva(),i=v.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 A(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===w.All?"All":e.repeat===w.One?"One":"Off"}`,"aria-label":`Repeat: ${e.repeat===w.All?"All":e.repeat===w.One?"One":"Off"}`,iconType:kr[e.repeat],size:"s",iconSize:"l",onClick:e.toggleRepeat})]})}),Fr=v.memo(()=>{const[t,e]=v.useState(!1),n=()=>e(!t);return o(wr,{button:o(l.EuiButtonIcon,{title:"Volume","aria-label":"Volume",iconType:R.Speaker2Regular,size:"s",iconSize:"l",onClick:n}),isOpen:t,closePopover:()=>e(!1)})}),Mr=v.memo(({playQueueStore:t})=>{const[e,n]=v.useState(!1),i=()=>n(!e);return o(_r,{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)})}),$r=v.memo(({playQueueStore:t})=>A(l.EuiFlexGroup,{responsive:!1,gutterSize:"s",justifyContent:"flexEnd",alignItems:"center",children:[o(Fr,{}),o(Mr,{playQueueStore:t})]})),jr=z.observer(({playerStore:t,playQueueStore:e})=>o(l.EuiBottomBar,{paddingSize:"s",children:A(l.EuiFlexGroup,{direction:"column",gutterSize:"none",children:[o(l.EuiFlexItem,{children:o(Rr,{playerStore:t})}),o(l.EuiFlexItem,{children:A(l.EuiFlexGroup,{responsive:!1,children:[o(l.EuiFlexItem,{css:{width:"calc(100% / 3)"}}),o(l.EuiFlexItem,{css:{width:"calc(100% / 3)"},children:o(Ar,{playerStore:t,playQueueStore:e})}),o(l.EuiFlexItem,{css:{width:"calc(100% / 3)"},children:o($r,{playQueueStore:e})})]})})]})})),Nr=({onCancel:t,onSave:e})=>{const[n,i]=v.useState(""),[a,c]=v.useState(""),[h,p]=v.useState(!1);return A(l.EuiModal,{onClose:t,initialFocus:"[name=url]",children:[o(l.EuiModalHeader,{children:o(l.EuiModalHeaderTitle,{children:"Add video"})}),o(l.EuiModalBody,{children:A(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)})})]})}),A(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:h,children:"Save"})]})]})};function Dr(t){return t!==null&&typeof t=="object"&&"title"in t&&typeof t.title=="string"}const zr=v.memo(({playQueueStore:t})=>{const[e,n]=v.useState(!1),i=v.useCallback(async a=>{const c=H.findVideoService(a.url);if(c!==void 0){const h=c.extractVideoId(a.url);if(h!==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:h,title:a.title||(Dr(y)?y.title:h)})])}}n(!1)},[t]);return A(ge,{children:[o(l.EuiButton,{onClick:()=>n(!0),iconType:R.AddRegular,color:"primary",children:"Add video"}),e&&o(Nr,{onCancel:()=>n(!1),onSave:i})]})}),Br=z.observer(({playQueueStore:t})=>{const{euiTheme:e}=l.useEuiTheme();return A(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,{})]})}),Lr=v.memo(({item:t,closePopover:e})=>{const n=v.memo(({onClick:i,...a})=>{const c=v.useCallback(h=>{e(),i==null||i(h)},[i]);return o(l.EuiContextMenuItem,{...a,onClick:c})});return A(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"})]})}),Vr=v.memo(({item:t})=>{const[e,n]=v.useState(!1),i=v.useCallback(()=>n(!e),[e]),a=v.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(Lr,{item:t,closePopover:a})})}),Yr=z.observer(({item:t})=>{const e=H.useNostalgicDiva();return A(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(Vr,{item:t})]})}),Wr={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"},Ur=z.observer(({item:t})=>{const e=H.useNostalgicDiva();return A(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:Wr[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(Yr,{item:t})]},t.id)}),qr=z.observer(({playQueueStore:t})=>o(er.ReactSortable,{tag:"tbody",list:t.items,setList:e=>t.setItems(e),children:t.items.map(e=>o(Ur,{item:e},e.id))})),Hr=z.observer(({playQueueStore:t})=>A(l.EuiTable,{children:[o(Br,{playQueueStore:t}),o(qr,{playQueueStore:t})]})),Gr=z.observer(({playQueueStore:t})=>{const[e,n]=v.useState(!1);return A(ge,{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(zr,{playQueueStore:t})]})}),Jr=z.observer(({playerStore:t,playQueueStore:e})=>{const{euiTheme:n}=l.useEuiTheme();return A(ge,{children:[A(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(Gr,{playQueueStore:e})})]}),!e.isEmpty&&A(ge,{children:[o(l.EuiSpacer,{size:"l",style:{position:"sticky",top:88,zIndex:998,background:n.colors.backgroundBasePlain}}),o(Hr,{playQueueStore:e})]})]})}),Kr=z.observer(({playerStore:t,playQueueStore:e})=>A(ge,{children:[o(l.EuiPageTemplate.Header,{pageTitle:"Play queue",rightSideItems:[]}),o(l.EuiPageTemplate.Section,{children:o(Jr,{playerStore:t,playQueueStore:e})})]})),Oe={width:16*25,height:9*25},Xr=z.observer(({playerStore:t,playQueueStore:e})=>{const n=H.useNostalgicDiva(),i=v.useCallback(async()=>{e.interacted&&await n.play()},[e,n]),a=v.useCallback(async()=>{switch(e.repeat){case w.One:await n.setCurrentTime(0);break;case w.Off:case w.All:if(e.isLastItem)switch(e.repeat){case w.Off:t.onEnded();break;case w.All:e.hasMultipleItems?await e.goToFirst():await n.setCurrentTime(0);break}else await e.next();break}},[e,t,n]),c=v.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:Je,width:Oe.width,height:Oe.height,zIndex:998,backgroundColor:"rgb(39, 39, 39)",display:"flex",flexDirection:"column"},children:o("div",{css:{flexGrow:1,backgroundColor:"black"},children:e.currentItem&&o(H.NostalgicDiva,{src:e.currentItem.url,options:c})})})});class Ke{makeObservable(e,n){return u.makeObservable(e,n)}}const pe=class pe{constructor(e,n,i){V(this,"id");V(this,"isSelected",!1);this.observableStateProvider=e,this.playQueueStore=n,this.dto=i,this.id=pe.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 pe(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)}};V(pe,"nextId",1);let Ge=pe;const We=new tr({coerceTypes:!0});function Zr(t,e){let n;if(n=We.getSchema(e),n===void 0&&(We.addSchema(t,e),n=We.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 Qr={type:"object",properties:{version:{type:"string",nullable:!0},repeat:{type:"string",enum:Object.values(w),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}}},en=Zr(Qr,"PlayQueueStore");class tn{constructor(e){V(this,"interacted",!1);V(this,"items",[]);V(this,"currentId");V(this,"repeat",w.Off);V(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 Ge.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??w.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 en(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;dt.pull(this.items,...e.filter(c=>c!==n));const{currentIndex:i,isLastItem:a}=this;dt.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 w.Off:this.repeat=w.All;break;case w.All:this.repeat=w.One;break;case w.One:this.repeat=w.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 Pt=v.createContext(void 0),rn=({children:t})=>{const[e]=v.useState(()=>new tn(new Ke)),n=H.useNostalgicDiva();return v.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(Pt.Provider,{value:e,children:t})},Rt=()=>v.useContext(Pt),nn=z.observer(({children:t})=>{const e=Rt();return A(l.EuiPageTemplate,{panelled:!0,style:{minBlockSize:`max(460px, 100vh - ${Je}px)`},children:[t,!e.isEmpty&&o(l.EuiSpacer,{style:{blockSize:Oe.height}})]})});class on{constructor(e){V(this,"playing",!1);V(this,"percent",0);V(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 wt=v.createContext(void 0),an=({children:t})=>{const[e]=v.useState(()=>new on(new Ke));return o(wt.Provider,{value:e,children:t})},sn=()=>v.useContext(wt);class ln{makeObservable(e,n){return e}}exports.BottomBar=jr;exports.HydrangeanDiva=Kr;exports.MediaPlayerLayout=nn;exports.MiniPlayer=Xr;exports.MobXObservableStateProvider=Ke;exports.ObservableStateProvider=ln;exports.PlayQueueStoreProvider=rn;exports.PlayerStoreProvider=an;exports.RepeatMode=w;exports.bottomBarHeight=Je;exports.miniPlayerSize=Oe;exports.usePlayQueueStore=Rt;exports.usePlayerStore=sn;
2
45
  //# sourceMappingURL=index.cjs.js.map