@aigamo/hydrangean-diva 0.0.1-alpha.63 → 0.0.1-alpha.64

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,15 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("react"),Nr=require("@emotion/cache"),jr=require("ajv"),l=require("mobx"),Xe=require("@aigamo/route-sphere"),Ke=require("lodash-es"),pe=require("@aigamo/nostalgic-diva"),i=require("@elastic/eui"),I=require("mobx-react-lite"),b=require("@fluentui/react-icons"),me=require("ez-modal-react"),St=require("react-sortablejs"),It=require("@tanstack/react-router");function $r(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const de=$r(p),Et=81,Ze=new Map(Object.entries({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"}));var Ge={exports:{}},Ae={};var Qt;function Lr(){if(Qt)return Ae;Qt=1;var e=p,t=Symbol.for("react.element"),r=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function u(h,f,S){var x,k={},G=null,V=null;S!==void 0&&(G=""+S),f.key!==void 0&&(G=""+f.key),f.ref!==void 0&&(V=f.ref);for(x in f)a.call(f,x)&&!c.hasOwnProperty(x)&&(k[x]=f[x]);if(h&&h.defaultProps)for(x in f=h.defaultProps,f)k[x]===void 0&&(k[x]=f[x]);return{$$typeof:t,type:h,key:G,ref:V,props:k,_owner:s.current}}return Ae.Fragment=r,Ae.jsx=u,Ae.jsxs=u,Ae}var Be={};var Ht;function zr(){return Ht||(Ht=1,process.env.NODE_ENV!=="production"&&(function(){var e=p,t=Symbol.for("react.element"),r=Symbol.for("react.portal"),a=Symbol.for("react.fragment"),s=Symbol.for("react.strict_mode"),c=Symbol.for("react.profiler"),u=Symbol.for("react.provider"),h=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),S=Symbol.for("react.suspense"),x=Symbol.for("react.suspense_list"),k=Symbol.for("react.memo"),G=Symbol.for("react.lazy"),V=Symbol.for("react.offscreen"),q=Symbol.iterator,re="@@iterator";function ce(n){if(n===null||typeof n!="object")return null;var d=q&&n[q]||n[re];return typeof d=="function"?d:null}var X=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function D(n){{for(var d=arguments.length,y=new Array(d>1?d-1:0),g=1;g<d;g++)y[g-1]=arguments[g];U("error",n,y)}}function U(n,d,y){{var g=X.ReactDebugCurrentFrame,w=g.getStackAddendum();w!==""&&(d+="%s",y=y.concat([w]));var B=y.map(function(R){return String(R)});B.unshift("Warning: "+d),Function.prototype.apply.call(console[n],console,B)}}var z=!1,m=!1,Z=!1,xe=!1,$e=!1,Le;Le=Symbol.for("react.module.reference");function ot(n){return!!(typeof n=="string"||typeof n=="function"||n===a||n===c||$e||n===s||n===S||n===x||xe||n===V||z||m||Z||typeof n=="object"&&n!==null&&(n.$$typeof===G||n.$$typeof===k||n.$$typeof===u||n.$$typeof===h||n.$$typeof===f||n.$$typeof===Le||n.getModuleId!==void 0))}function nt(n,d,y){var g=n.displayName;if(g)return g;var w=d.displayName||d.name||"";return w!==""?y+"("+w+")":y}function ze(n){return n.displayName||"Context"}function ae(n){if(n==null)return null;if(typeof n.tag=="number"&&D("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof n=="function")return n.displayName||n.name||null;if(typeof n=="string")return n;switch(n){case a:return"Fragment";case r:return"Portal";case c:return"Profiler";case s:return"StrictMode";case S:return"Suspense";case x:return"SuspenseList"}if(typeof n=="object")switch(n.$$typeof){case h:var d=n;return ze(d)+".Consumer";case u:var y=n;return ze(y._context)+".Provider";case f:return nt(n,n.render,"ForwardRef");case k:var g=n.displayName||null;return g!==null?g:ae(n.type)||"Memo";case G:{var w=n,B=w._payload,R=w._init;try{return ae(R(B))}catch{return null}}}return null}var ue=Object.assign,fe=0,Qe,He,Te,Ye,Re,Ve,qe;function Ue(){}Ue.__reactDisabledLog=!0;function it(){{if(fe===0){Qe=console.log,He=console.info,Te=console.warn,Ye=console.error,Re=console.group,Ve=console.groupCollapsed,qe=console.groupEnd;var n={configurable:!0,enumerable:!0,value:Ue,writable:!0};Object.defineProperties(console,{info:n,log:n,warn:n,error:n,group:n,groupCollapsed:n,groupEnd:n})}fe++}}function at(){{if(fe--,fe===0){var n={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:ue({},n,{value:Qe}),info:ue({},n,{value:He}),warn:ue({},n,{value:Te}),error:ue({},n,{value:Ye}),group:ue({},n,{value:Re}),groupCollapsed:ue({},n,{value:Ve}),groupEnd:ue({},n,{value:qe})})}fe<0&&D("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var we=X.ReactCurrentDispatcher,Oe;function be(n,d,y){{if(Oe===void 0)try{throw Error()}catch(w){var g=w.stack.trim().match(/\n( *(at )?)/);Oe=g&&g[1]||""}return`
2
- `+Oe+n}}var _e=!1,ge;{var st=typeof WeakMap=="function"?WeakMap:Map;ge=new st}function v(n,d){if(!n||_e)return"";{var y=ge.get(n);if(y!==void 0)return y}var g;_e=!0;var w=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var B;B=we.current,we.current=null,it();try{if(d){var R=function(){throw Error()};if(Object.defineProperty(R.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(R,[])}catch(ee){g=ee}Reflect.construct(n,[],R)}else{try{R.call()}catch(ee){g=ee}n.call(R.prototype)}}else{try{throw Error()}catch(ee){g=ee}n()}}catch(ee){if(ee&&g&&typeof ee.stack=="string"){for(var T=ee.stack.split(`
3
- `),K=g.stack.split(`
4
- `),Q=T.length-1,W=K.length-1;Q>=1&&W>=0&&T[Q]!==K[W];)W--;for(;Q>=1&&W>=0;Q--,W--)if(T[Q]!==K[W]){if(Q!==1||W!==1)do if(Q--,W--,W<0||T[Q]!==K[W]){var oe=`
5
- `+T[Q].replace(" at new "," at ");return n.displayName&&oe.includes("<anonymous>")&&(oe=oe.replace("<anonymous>",n.displayName)),typeof n=="function"&&ge.set(n,oe),oe}while(Q>=1&&W>=0);break}}}finally{_e=!1,we.current=B,at(),Error.prepareStackTrace=w}var Ee=n?n.displayName||n.name:"",he=Ee?be(Ee):"";return typeof n=="function"&&ge.set(n,he),he}function ke(n,d,y){return v(n,!1)}function Se(n){var d=n.prototype;return!!(d&&d.isReactComponent)}function ye(n,d,y){if(n==null)return"";if(typeof n=="function")return v(n,Se(n));if(typeof n=="string")return be(n);switch(n){case S:return be("Suspense");case x:return be("SuspenseList")}if(typeof n=="object")switch(n.$$typeof){case f:return ke(n.render);case k:return ye(n.type,d,y);case G:{var g=n,w=g._payload,B=g._init;try{return ye(B(w),d,y)}catch{}}}return""}var Fe=Object.prototype.hasOwnProperty,wt={},Ot=X.ReactDebugCurrentFrame;function We(n){if(n){var d=n._owner,y=ye(n.type,n._source,d?d.type:null);Ot.setExtraStackFrame(y)}else Ot.setExtraStackFrame(null)}function yr(n,d,y,g,w){{var B=Function.call.bind(Fe);for(var R in n)if(B(n,R)){var T=void 0;try{if(typeof n[R]!="function"){var K=Error((g||"React class")+": "+y+" type `"+R+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof n[R]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw K.name="Invariant Violation",K}T=n[R](d,R,g,y,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(Q){T=Q}T&&!(T instanceof Error)&&(We(w),D("%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).",g||"React class",y,R,typeof T),We(null)),T instanceof Error&&!(T.message in wt)&&(wt[T.message]=!0,We(w),D("Failed %s type: %s",y,T.message),We(null))}}}var hr=Array.isArray;function lt(n){return hr(n)}function vr(n){{var d=typeof Symbol=="function"&&Symbol.toStringTag,y=d&&n[Symbol.toStringTag]||n.constructor.name||"Object";return y}}function br(n){try{return _t(n),!1}catch{return!0}}function _t(n){return""+n}function kt(n){if(br(n))return D("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",vr(n)),_t(n)}var Ft=X.ReactCurrentOwner,gr={key:!0,ref:!0,__self:!0,__source:!0},At,Bt;function Sr(n){if(Fe.call(n,"ref")){var d=Object.getOwnPropertyDescriptor(n,"ref").get;if(d&&d.isReactWarning)return!1}return n.ref!==void 0}function Ir(n){if(Fe.call(n,"key")){var d=Object.getOwnPropertyDescriptor(n,"key").get;if(d&&d.isReactWarning)return!1}return n.key!==void 0}function Er(n,d){typeof n.ref=="string"&&Ft.current}function Pr(n,d){{var y=function(){At||(At=!0,D("%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)",d))};y.isReactWarning=!0,Object.defineProperty(n,"key",{get:y,configurable:!0})}}function Cr(n,d){{var y=function(){Bt||(Bt=!0,D("%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)",d))};y.isReactWarning=!0,Object.defineProperty(n,"ref",{get:y,configurable:!0})}}var xr=function(n,d,y,g,w,B,R){var T={$$typeof:t,type:n,key:d,ref:y,props:R,_owner:B};return T._store={},Object.defineProperty(T._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(T,"_self",{configurable:!1,enumerable:!1,writable:!1,value:g}),Object.defineProperty(T,"_source",{configurable:!1,enumerable:!1,writable:!1,value:w}),Object.freeze&&(Object.freeze(T.props),Object.freeze(T)),T};function Tr(n,d,y,g,w){{var B,R={},T=null,K=null;y!==void 0&&(kt(y),T=""+y),Ir(d)&&(kt(d.key),T=""+d.key),Sr(d)&&(K=d.ref,Er(d,w));for(B in d)Fe.call(d,B)&&!gr.hasOwnProperty(B)&&(R[B]=d[B]);if(n&&n.defaultProps){var Q=n.defaultProps;for(B in Q)R[B]===void 0&&(R[B]=Q[B])}if(T||K){var W=typeof n=="function"?n.displayName||n.name||"Unknown":n;T&&Pr(R,W),K&&Cr(R,W)}return xr(n,T,K,w,g,Ft.current,R)}}var ct=X.ReactCurrentOwner,Mt=X.ReactDebugCurrentFrame;function Ie(n){if(n){var d=n._owner,y=ye(n.type,n._source,d?d.type:null);Mt.setExtraStackFrame(y)}else Mt.setExtraStackFrame(null)}var ut;ut=!1;function dt(n){return typeof n=="object"&&n!==null&&n.$$typeof===t}function Dt(){{if(ct.current){var n=ae(ct.current.type);if(n)return`
6
-
7
- Check the render method of \``+n+"`."}return""}}function Rr(n){return""}var Nt={};function wr(n){{var d=Dt();if(!d){var y=typeof n=="string"?n:n.displayName||n.name;y&&(d=`
8
-
9
- Check the top-level render call using <`+y+">.")}return d}}function jt(n,d){{if(!n._store||n._store.validated||n.key!=null)return;n._store.validated=!0;var y=wr(d);if(Nt[y])return;Nt[y]=!0;var g="";n&&n._owner&&n._owner!==ct.current&&(g=" It was passed a child from "+ae(n._owner.type)+"."),Ie(n),D('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',y,g),Ie(null)}}function $t(n,d){{if(typeof n!="object")return;if(lt(n))for(var y=0;y<n.length;y++){var g=n[y];dt(g)&&jt(g,d)}else if(dt(n))n._store&&(n._store.validated=!0);else if(n){var w=ce(n);if(typeof w=="function"&&w!==n.entries)for(var B=w.call(n),R;!(R=B.next()).done;)dt(R.value)&&jt(R.value,d)}}}function Or(n){{var d=n.type;if(d==null||typeof d=="string")return;var y;if(typeof d=="function")y=d.propTypes;else if(typeof d=="object"&&(d.$$typeof===f||d.$$typeof===k))y=d.propTypes;else return;if(y){var g=ae(d);yr(y,n.props,"prop",g,n)}else if(d.PropTypes!==void 0&&!ut){ut=!0;var w=ae(d);D("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",w||"Unknown")}typeof d.getDefaultProps=="function"&&!d.getDefaultProps.isReactClassApproved&&D("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function _r(n){{for(var d=Object.keys(n.props),y=0;y<d.length;y++){var g=d[y];if(g!=="children"&&g!=="key"){Ie(n),D("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",g),Ie(null);break}}n.ref!==null&&(Ie(n),D("Invalid attribute `ref` supplied to `React.Fragment`."),Ie(null))}}var Lt={};function zt(n,d,y,g,w,B){{var R=ot(n);if(!R){var T="";(n===void 0||typeof n=="object"&&n!==null&&Object.keys(n).length===0)&&(T+=" 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 K=Rr();K?T+=K:T+=Dt();var Q;n===null?Q="null":lt(n)?Q="array":n!==void 0&&n.$$typeof===t?(Q="<"+(ae(n.type)||"Unknown")+" />",T=" Did you accidentally export a JSX literal instead of a component?"):Q=typeof n,D("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",Q,T)}var W=Tr(n,d,y,w,B);if(W==null)return W;if(R){var oe=d.children;if(oe!==void 0)if(g)if(lt(oe)){for(var Ee=0;Ee<oe.length;Ee++)$t(oe[Ee],n);Object.freeze&&Object.freeze(oe)}else D("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 $t(oe,n)}if(Fe.call(d,"key")){var he=ae(n),ee=Object.keys(d).filter(function(Dr){return Dr!=="key"}),pt=ee.length>0?"{key: someKey, "+ee.join(": ..., ")+": ...}":"{key: someKey}";if(!Lt[he+pt]){var Mr=ee.length>0?"{"+ee.join(": ..., ")+": ...}":"{}";D(`A props object containing a "key" prop is being spread into JSX:
10
- let props = %s;
11
- <%s {...props} />
12
- React keys must be passed directly to JSX without using spread:
13
- let props = %s;
14
- <%s key={someKey} {...props} />`,pt,he,Mr,he),Lt[he+pt]=!0}}return n===a?_r(W):Or(W),W}}function kr(n,d,y){return zt(n,d,y,!0)}function Fr(n,d,y){return zt(n,d,y,!1)}var Ar=Fr,Br=kr;Be.Fragment=a,Be.jsx=Ar,Be.jsxs=Br})()),Be}var Yt;function Qr(){return Yt||(Yt=1,process.env.NODE_ENV==="production"?Ge.exports=Lr():Ge.exports=zr()),Ge.exports}var Me=Qr(),Je={exports:{}},O={};var Vt;function Hr(){if(Vt)return O;Vt=1;var e=typeof Symbol=="function"&&Symbol.for,t=e?Symbol.for("react.element"):60103,r=e?Symbol.for("react.portal"):60106,a=e?Symbol.for("react.fragment"):60107,s=e?Symbol.for("react.strict_mode"):60108,c=e?Symbol.for("react.profiler"):60114,u=e?Symbol.for("react.provider"):60109,h=e?Symbol.for("react.context"):60110,f=e?Symbol.for("react.async_mode"):60111,S=e?Symbol.for("react.concurrent_mode"):60111,x=e?Symbol.for("react.forward_ref"):60112,k=e?Symbol.for("react.suspense"):60113,G=e?Symbol.for("react.suspense_list"):60120,V=e?Symbol.for("react.memo"):60115,q=e?Symbol.for("react.lazy"):60116,re=e?Symbol.for("react.block"):60121,ce=e?Symbol.for("react.fundamental"):60117,X=e?Symbol.for("react.responder"):60118,D=e?Symbol.for("react.scope"):60119;function U(m){if(typeof m=="object"&&m!==null){var Z=m.$$typeof;switch(Z){case t:switch(m=m.type,m){case f:case S:case a:case c:case s:case k:return m;default:switch(m=m&&m.$$typeof,m){case h:case x:case q:case V:case u:return m;default:return Z}}case r:return Z}}}function z(m){return U(m)===S}return O.AsyncMode=f,O.ConcurrentMode=S,O.ContextConsumer=h,O.ContextProvider=u,O.Element=t,O.ForwardRef=x,O.Fragment=a,O.Lazy=q,O.Memo=V,O.Portal=r,O.Profiler=c,O.StrictMode=s,O.Suspense=k,O.isAsyncMode=function(m){return z(m)||U(m)===f},O.isConcurrentMode=z,O.isContextConsumer=function(m){return U(m)===h},O.isContextProvider=function(m){return U(m)===u},O.isElement=function(m){return typeof m=="object"&&m!==null&&m.$$typeof===t},O.isForwardRef=function(m){return U(m)===x},O.isFragment=function(m){return U(m)===a},O.isLazy=function(m){return U(m)===q},O.isMemo=function(m){return U(m)===V},O.isPortal=function(m){return U(m)===r},O.isProfiler=function(m){return U(m)===c},O.isStrictMode=function(m){return U(m)===s},O.isSuspense=function(m){return U(m)===k},O.isValidElementType=function(m){return typeof m=="string"||typeof m=="function"||m===a||m===S||m===c||m===s||m===k||m===G||typeof m=="object"&&m!==null&&(m.$$typeof===q||m.$$typeof===V||m.$$typeof===u||m.$$typeof===h||m.$$typeof===x||m.$$typeof===ce||m.$$typeof===X||m.$$typeof===D||m.$$typeof===re)},O.typeOf=U,O}var _={};var qt;function Yr(){return qt||(qt=1,process.env.NODE_ENV!=="production"&&(function(){var e=typeof Symbol=="function"&&Symbol.for,t=e?Symbol.for("react.element"):60103,r=e?Symbol.for("react.portal"):60106,a=e?Symbol.for("react.fragment"):60107,s=e?Symbol.for("react.strict_mode"):60108,c=e?Symbol.for("react.profiler"):60114,u=e?Symbol.for("react.provider"):60109,h=e?Symbol.for("react.context"):60110,f=e?Symbol.for("react.async_mode"):60111,S=e?Symbol.for("react.concurrent_mode"):60111,x=e?Symbol.for("react.forward_ref"):60112,k=e?Symbol.for("react.suspense"):60113,G=e?Symbol.for("react.suspense_list"):60120,V=e?Symbol.for("react.memo"):60115,q=e?Symbol.for("react.lazy"):60116,re=e?Symbol.for("react.block"):60121,ce=e?Symbol.for("react.fundamental"):60117,X=e?Symbol.for("react.responder"):60118,D=e?Symbol.for("react.scope"):60119;function U(v){return typeof v=="string"||typeof v=="function"||v===a||v===S||v===c||v===s||v===k||v===G||typeof v=="object"&&v!==null&&(v.$$typeof===q||v.$$typeof===V||v.$$typeof===u||v.$$typeof===h||v.$$typeof===x||v.$$typeof===ce||v.$$typeof===X||v.$$typeof===D||v.$$typeof===re)}function z(v){if(typeof v=="object"&&v!==null){var ke=v.$$typeof;switch(ke){case t:var Se=v.type;switch(Se){case f:case S:case a:case c:case s:case k:return Se;default:var ye=Se&&Se.$$typeof;switch(ye){case h:case x:case q:case V:case u:return ye;default:return ke}}case r:return ke}}}var m=f,Z=S,xe=h,$e=u,Le=t,ot=x,nt=a,ze=q,ae=V,ue=r,fe=c,Qe=s,He=k,Te=!1;function Ye(v){return Te||(Te=!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.")),Re(v)||z(v)===f}function Re(v){return z(v)===S}function Ve(v){return z(v)===h}function qe(v){return z(v)===u}function Ue(v){return typeof v=="object"&&v!==null&&v.$$typeof===t}function it(v){return z(v)===x}function at(v){return z(v)===a}function we(v){return z(v)===q}function Oe(v){return z(v)===V}function be(v){return z(v)===r}function _e(v){return z(v)===c}function ge(v){return z(v)===s}function st(v){return z(v)===k}_.AsyncMode=m,_.ConcurrentMode=Z,_.ContextConsumer=xe,_.ContextProvider=$e,_.Element=Le,_.ForwardRef=ot,_.Fragment=nt,_.Lazy=ze,_.Memo=ae,_.Portal=ue,_.Profiler=fe,_.StrictMode=Qe,_.Suspense=He,_.isAsyncMode=Ye,_.isConcurrentMode=Re,_.isContextConsumer=Ve,_.isContextProvider=qe,_.isElement=Ue,_.isForwardRef=it,_.isFragment=at,_.isLazy=we,_.isMemo=Oe,_.isPortal=be,_.isProfiler=_e,_.isStrictMode=ge,_.isSuspense=st,_.isValidElementType=U,_.typeOf=z})()),_}var Ut;function Vr(){return Ut||(Ut=1,process.env.NODE_ENV==="production"?Je.exports=Hr():Je.exports=Yr()),Je.exports}var mt,Wt;function qr(){if(Wt)return mt;Wt=1;var e=Vr(),t={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},r={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},a={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},c={};c[e.ForwardRef]=a,c[e.Memo]=s;function u(q){return e.isMemo(q)?s:c[q.$$typeof]||t}var h=Object.defineProperty,f=Object.getOwnPropertyNames,S=Object.getOwnPropertySymbols,x=Object.getOwnPropertyDescriptor,k=Object.getPrototypeOf,G=Object.prototype;function V(q,re,ce){if(typeof re!="string"){if(G){var X=k(re);X&&X!==G&&V(q,X,ce)}var D=f(re);S&&(D=D.concat(S(re)));for(var U=u(q),z=u(re),m=0;m<D.length;++m){var Z=D[m];if(!r[Z]&&!(ce&&ce[Z])&&!(z&&z[Z])&&!(U&&U[Z])){var xe=x(re,Z);try{h(q,Z,xe)}catch{}}}}return q}return mt=V,mt}qr();var Ur=!0;function Wr(e,t,r){var a="";return r.split(" ").forEach(function(s){e[s]!==void 0?t.push(e[s]+";"):s&&(a+=s+" ")}),a}var Xt=function(t,r,a){var s=t.key+"-"+r.name;(a===!1||Ur===!1)&&t.registered[s]===void 0&&(t.registered[s]=r.styles)},Gr=function(t,r,a){Xt(t,r,a);var s=t.key+"-"+r.name;if(t.inserted[r.name]===void 0){var c=r;do t.insert(r===c?"."+s:"",c,t.sheet,!0),c=c.next;while(c!==void 0)}};function Jr(e){for(var t=0,r,a=0,s=e.length;s>=4;++a,s-=4)r=e.charCodeAt(a)&255|(e.charCodeAt(++a)&255)<<8|(e.charCodeAt(++a)&255)<<16|(e.charCodeAt(++a)&255)<<24,r=(r&65535)*1540483477+((r>>>16)*59797<<16),r^=r>>>24,t=(r&65535)*1540483477+((r>>>16)*59797<<16)^(t&65535)*1540483477+((t>>>16)*59797<<16);switch(s){case 3:t^=(e.charCodeAt(a+2)&255)<<16;case 2:t^=(e.charCodeAt(a+1)&255)<<8;case 1:t^=e.charCodeAt(a)&255,t=(t&65535)*1540483477+((t>>>16)*59797<<16)}return t^=t>>>13,t=(t&65535)*1540483477+((t>>>16)*59797<<16),((t^t>>>15)>>>0).toString(36)}var Kr={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 Xr(e){var t=Object.create(null);return function(r){return t[r]===void 0&&(t[r]=e(r)),t[r]}}var Zr=/[A-Z]|^ms/g,eo=/_EMO_([^_]+?)_([^]*?)_EMO_/g,Zt=function(t){return t.charCodeAt(1)===45},Gt=function(t){return t!=null&&typeof t!="boolean"},ft=Xr(function(e){return Zt(e)?e:e.replace(Zr,"-$&").toLowerCase()}),Jt=function(t,r){switch(t){case"animation":case"animationName":if(typeof r=="string")return r.replace(eo,function(a,s,c){return se={name:s,styles:c,next:se},s})}return Kr[t]!==1&&!Zt(t)&&typeof r=="number"&&r!==0?r+"px":r};function De(e,t,r){if(r==null)return"";var a=r;if(a.__emotion_styles!==void 0)return a;switch(typeof r){case"boolean":return"";case"object":{var s=r;if(s.anim===1)return se={name:s.name,styles:s.styles,next:se},s.name;var c=r;if(c.styles!==void 0){var u=c.next;if(u!==void 0)for(;u!==void 0;)se={name:u.name,styles:u.styles,next:se},u=u.next;var h=c.styles+";";return h}return to(e,t,r)}case"function":{if(e!==void 0){var f=se,S=r(e);return se=f,De(e,t,S)}break}}var x=r;return x}function to(e,t,r){var a="";if(Array.isArray(r))for(var s=0;s<r.length;s++)a+=De(e,t,r[s])+";";else for(var c in r){var u=r[c];if(typeof u!="object"){var h=u;Gt(h)&&(a+=ft(c)+":"+Jt(c,h)+";")}else if(Array.isArray(u)&&typeof u[0]=="string"&&t==null)for(var f=0;f<u.length;f++)Gt(u[f])&&(a+=ft(c)+":"+Jt(c,u[f])+";");else{var S=De(e,t,u);switch(c){case"animation":case"animationName":{a+=ft(c)+":"+S+";";break}default:a+=c+"{"+S+"}"}}}return a}var Kt=/label:\s*([^\s;{]+)\s*(;|$)/g,se;function ro(e,t,r){if(e.length===1&&typeof e[0]=="object"&&e[0]!==null&&e[0].styles!==void 0)return e[0];var a=!0,s="";se=void 0;var c=e[0];if(c==null||c.raw===void 0)a=!1,s+=De(r,t,c);else{var u=c;s+=u[0]}for(var h=1;h<e.length;h++)if(s+=De(r,t,e[h]),a){var f=c;s+=f[h]}Kt.lastIndex=0;for(var S="",x;(x=Kt.exec(s))!==null;)S+="-"+x[1];var k=Jr(s)+S;return{name:k,styles:s,next:se}}var oo=function(t){return t()},no=de.useInsertionEffect?de.useInsertionEffect:!1,io=no||oo,er=de.createContext(typeof HTMLElement<"u"?Nr({key:"css"}):null);er.Provider;var ao=function(t){return p.forwardRef(function(r,a){var s=p.useContext(er);return t(r,s,a)})},so=de.createContext({}),et={}.hasOwnProperty,ht="__EMOTION_TYPE_PLEASE_DO_NOT_USE__",tr=function(t,r){var a={};for(var s in r)et.call(r,s)&&(a[s]=r[s]);return a[ht]=t,a},lo=function(t){var r=t.cache,a=t.serialized,s=t.isStringTag;return Xt(r,a,s),io(function(){return Gr(r,a,s)}),null},co=ao(function(e,t,r){var a=e.css;typeof a=="string"&&t.registered[a]!==void 0&&(a=t.registered[a]);var s=e[ht],c=[a],u="";typeof e.className=="string"?u=Wr(t.registered,c,e.className):e.className!=null&&(u=e.className+" ");var h=ro(c,void 0,de.useContext(so));u+=t.key+"-"+h.name;var f={};for(var S in e)et.call(e,S)&&S!=="css"&&S!==ht&&(f[S]=e[S]);return f.className=u,r&&(f.ref=r),de.createElement(de.Fragment,null,de.createElement(lo,{cache:t,serialized:h,isStringTag:typeof s=="string"}),de.createElement(s,f))}),rr=co,ve=Me.Fragment,o=function(t,r,a){return et.call(r,"css")?Me.jsx(rr,tr(t,r),a):Me.jsx(t,r,a)},C=function(t,r,a){return et.call(r,"css")?Me.jsxs(rr,tr(t,r),a):Me.jsxs(t,r,a)};const uo=({components:e=[],children:t})=>o(ve,{children:e.reduceRight((r,a)=>o(a,{children:r}),t)}),tt={playQueue:"PlayQueueStore",bottomBar:"BottomBarStore",playlistList:"PlaylistListStore",playlist:e=>`PlaylistStore/${e}`},or=p.createContext(void 0),J=()=>p.useContext(or),yt=new jr({coerceTypes:!0});function Pt(e,t){let r;if(r=yt.getSchema(t),r===void 0&&(yt.addSchema(e,t),r=yt.getSchema(t)),r===void 0||r.schema!==e)throw new Error(`Invalid schema. Expected: '${JSON.stringify(e)}', but got '${JSON.stringify(r?.schema)}'.`);return r}var M=(e=>(e.Off="Off",e.All="All",e.One="One",e))(M||{}),po=Object.defineProperty,mo=Object.getOwnPropertyDescriptor,F=(e,t,r,a)=>{for(var s=a>1?void 0:a?mo(t,r):t,c=e.length-1,u;c>=0;c--)(u=e[c])&&(s=(a?u(t,r,s):u(s))||s);return a&&s&&po(t,r,s),s};const fo={type:"object",properties:{repeat:{type:"string",enum:Object.values(M),nullable:!0},shuffle:{type:"boolean",nullable:!0}}};class nr{constructor(t){this.bottomBar=t,l.makeObservable(this)}get state(){return{repeat:this.bottomBar.repeat,shuffle:this.bottomBar.shuffle}}set state(t){this.bottomBar.repeat=t.repeat??M.Off,this.bottomBar.shuffle=t.shuffle??!1}validateState(t){return Pt(fo,"BottomBarLocalStorageState")(t)}}F([l.computed.struct],nr.prototype,"state",1);class A{constructor(t,r){this.player=t,this.playQueue=r,l.makeObservable(this),this.localStorageState=new nr(this)}localStorageState;repeat=M.Off;shuffle=!1;get controller(){return this.player.controller}get playing(){return this.player.playing}get percent(){return this.player.percent}get canSeek(){return!this.playQueue.isEmpty&&this.controller.supports("setCurrentTime")}get currentItem(){return this.playQueue.currentItem}get canToggleRepeat(){return!0}get canToggleShuffle(){return!1}get canPlay(){return this.playQueue.canPlay&&this.controller.supports("play")}get canPause(){return this.playQueue.canPause&&this.controller.supports("pause")}get canPrevious(){return!this.playQueue.isEmpty}get canNext(){return this.playQueue.hasNextItem}get canSkipBack10(){return this.canSeek}get canSkipForward30(){return this.canSeek}get canRemoveFromPlayQueue(){return!this.playQueue.isEmpty}setPercent(t){this.player.setPercent(t)}setSeeking(t){this.player.setSeeking(t)}toggleRepeat(){switch(this.repeat){case M.Off:this.repeat=M.All;break;case M.All:this.repeat=M.One;break;case M.One:this.repeat=M.Off;break}}toggleShuffle(){this.shuffle=!this.shuffle}play(){return this.controller.play()}pause(){return this.controller.pause()}async previous(){if(this.playQueue.hasPreviousItem){const t=await this.controller.getCurrentTime();t===void 0||t<5?await this.playQueue.previous():await this.controller.setCurrentTime(0)}else await this.controller.setCurrentTime(0)}next(){return this.playQueue.next()}async skipBack10(){const t=await this.controller.getCurrentTime();t!==void 0&&await this.controller.setCurrentTime(t-10)}async skipForward30(){const t=await this.controller.getCurrentTime();t!==void 0&&await this.controller.setCurrentTime(t+30)}async removeFromPlayQueue(){this.currentItem!==void 0&&await this.playQueue.removeItems([this.currentItem])}}F([l.observable],A.prototype,"repeat",2);F([l.observable],A.prototype,"shuffle",2);F([l.computed],A.prototype,"controller",1);F([l.computed],A.prototype,"playing",1);F([l.computed],A.prototype,"percent",1);F([l.computed],A.prototype,"canSeek",1);F([l.computed],A.prototype,"currentItem",1);F([l.computed],A.prototype,"canToggleRepeat",1);F([l.computed],A.prototype,"canToggleShuffle",1);F([l.computed],A.prototype,"canPlay",1);F([l.computed],A.prototype,"canPause",1);F([l.computed],A.prototype,"canPrevious",1);F([l.computed],A.prototype,"canNext",1);F([l.computed],A.prototype,"canSkipBack10",1);F([l.computed],A.prototype,"canSkipForward30",1);F([l.computed],A.prototype,"canRemoveFromPlayQueue",1);F([l.action.bound],A.prototype,"setPercent",1);F([l.action.bound],A.prototype,"setSeeking",1);F([l.action.bound],A.prototype,"toggleRepeat",1);F([l.action.bound],A.prototype,"toggleShuffle",1);F([l.action.bound],A.prototype,"play",1);F([l.action.bound],A.prototype,"pause",1);F([l.action.bound],A.prototype,"previous",1);F([l.action.bound],A.prototype,"next",1);F([l.action.bound],A.prototype,"skipBack10",1);F([l.action.bound],A.prototype,"skipForward30",1);F([l.action.bound],A.prototype,"removeFromPlayQueue",1);const Ct=p.createContext(void 0),Pe=()=>p.useContext(Ct),ir=p.createContext(void 0),ar=()=>p.useContext(ir),yo=({children:e})=>{const t=ar(),r=Pe(),[a]=p.useState(()=>new A(t,r));return Xe.useLocalStorageState(tt.bottomBar,a.localStorageState),o(or.Provider,{value:a,children:e})},sr=p.createContext(void 0),ho=()=>p.useContext(sr);var vo=Object.defineProperty,bo=Object.getOwnPropertyDescriptor,le=(e,t,r,a)=>{for(var s=a>1?void 0:a?bo(t,r):t,c=e.length-1,u;c>=0;c--)(u=e[c])&&(s=(a?u(t,r,s):u(s))||s);return a&&s&&vo(t,r,s),s};class ie{constructor(t,r,a){this.player=t,this.playQueue=r,this.bottomBar=a,l.makeObservable(this)}interacted=!1;get controller(){return this.player.controller}get currentItem(){return this.playQueue.currentItem}interact(){this.interacted=!0}async onLoaded(){this.interacted&&await this.controller.play()}onPlay(){this.player.onPlay()}onPause(){this.player.onPause()}async onEnded(){switch(this.bottomBar.repeat){case M.One:await this.controller.setCurrentTime(0);break;case M.Off:case M.All:if(this.playQueue.isLastItem)switch(this.bottomBar.repeat){case M.Off:this.player.onEnded();break;case M.All:this.playQueue.hasMultipleItems?await this.playQueue.goToFirst():await this.controller.setCurrentTime(0);break}else await this.playQueue.next();break}}onTimeUpdate(t){this.player.onTimeUpdate(t)}onControllerChange(t){this.player.onControllerChange(t)}}le([l.observable],ie.prototype,"interacted",2);le([l.computed],ie.prototype,"controller",1);le([l.computed],ie.prototype,"currentItem",1);le([l.action.bound],ie.prototype,"interact",1);le([l.action.bound],ie.prototype,"onLoaded",1);le([l.action.bound],ie.prototype,"onPlay",1);le([l.action.bound],ie.prototype,"onPause",1);le([l.action.bound],ie.prototype,"onEnded",1);le([l.action.bound],ie.prototype,"onTimeUpdate",1);le([l.action.bound],ie.prototype,"onControllerChange",1);const go=({children:e})=>{const t=ar(),r=Pe(),a=J(),[s]=p.useState(()=>new ie(t,r,a));return o(sr.Provider,{value:s,children:e})},lr={type:"object",properties:{url:{type:"string"},type:{type:"string"},videoId:{type:"string"},title:{type:"string"}},required:["url","type","videoId","title"]},So={type:"object",properties:{version:{type:"string",nullable:!0},repeat:{type:"string",enum:Object.values(M),nullable:!0},shuffle:{type:"boolean",nullable:!0},items:{type:"array",nullable:!0,items:lr},currentIndex:{type:"integer",nullable:!0}}};var Io=Object.defineProperty,Eo=Object.getOwnPropertyDescriptor,H=(e,t,r,a)=>{for(var s=a>1?void 0:a?Eo(t,r):t,c=e.length-1,u;c>=0;c--)(u=e[c])&&(s=(a?u(t,r,s):u(s))||s);return a&&s&&Io(t,r,s),s};const $=class vt{constructor(t,r){this.playQueue=t,this.dto=r,l.makeObservable(this),this.id=vt.nextId++}static nextId=1;id;isSelected=!1;static fromDto(t,r){return new vt(t,r)}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.playQueue.currentItem===this}get index(){return this.playQueue.items.indexOf(this)}get isFirst(){return this.index===0}get isLast(){return this.index===this.playQueue.items.length-1}get canMoveToTop(){return!this.isFirst}get canMoveToBottom(){return!this.isLast}get canRemoveToTop(){return!this.isFirst}get canRemoveOthers(){return this.playQueue.hasMultipleItems}clone(){return this.playQueue.createItemFromDto(this.dto)}unselect(){this.isSelected=!1}select(){this.isSelected=!0}toggleSelected(){this.isSelected=!this.isSelected}play(){return this.playQueue.setCurrentItem(this),Promise.resolve()}remove(){return this.playQueue.removeItems([this])}playFirst(){return this.playQueue.playFirst([this.clone()])}playNext(){return this.playQueue.playNext([this.clone()])}addToPlayQueue(){return this.playQueue.addItems([this.clone()])}moveToTop(){this.playQueue.moveItem(this,0)}moveToBottom(){this.playQueue.moveItem(this,this.playQueue.items.length-1)}removeToTop(){return this.playQueue.removeItemsAbove(this)}removeOthers(){return this.playQueue.removeOtherItems(this)}};H([l.observable],$.prototype,"isSelected",2);H([l.computed],$.prototype,"isCurrent",1);H([l.computed],$.prototype,"index",1);H([l.computed],$.prototype,"isFirst",1);H([l.computed],$.prototype,"isLast",1);H([l.computed],$.prototype,"canMoveToTop",1);H([l.computed],$.prototype,"canMoveToBottom",1);H([l.computed],$.prototype,"canRemoveToTop",1);H([l.computed],$.prototype,"canRemoveOthers",1);H([l.action.bound],$.prototype,"unselect",1);H([l.action.bound],$.prototype,"select",1);H([l.action.bound],$.prototype,"toggleSelected",1);H([l.action.bound],$.prototype,"play",1);H([l.action.bound],$.prototype,"remove",1);H([l.action.bound],$.prototype,"playFirst",1);H([l.action.bound],$.prototype,"playNext",1);H([l.action.bound],$.prototype,"addToPlayQueue",1);H([l.action.bound],$.prototype,"moveToTop",1);H([l.action.bound],$.prototype,"moveToBottom",1);H([l.action.bound],$.prototype,"removeToTop",1);H([l.action.bound],$.prototype,"removeOthers",1);let Po=$;var Co=Object.defineProperty,xo=Object.getOwnPropertyDescriptor,E=(e,t,r,a)=>{for(var s=a>1?void 0:a?xo(t,r):t,c=e.length-1,u;c>=0;c--)(u=e[c])&&(s=(a?u(t,r,s):u(s))||s);return a&&s&&Co(t,r,s),s};class cr{constructor(t){this.playQueue=t,l.makeObservable(this)}get state(){return{version:"1.0",items:this.playQueue.items.map(t=>t.dto),currentIndex:this.playQueue.currentIndex}}set state(t){this.playQueue.items=t.items?.map(r=>this.playQueue.createItemFromDto(r))??[],this.playQueue.currentIndex=t.currentIndex}validateState(t){return Pt(So,"PlayQueueDto")(t)}}E([l.computed.struct],cr.prototype,"state",1);class P{localStorageState;items=[];currentId;constructor(){l.makeObservable(this),this.localStorageState=new cr(this)}createItemFromDto(t){return Po.fromDto(this,{url:t.url,type:t.type,videoId:t.videoId,title:t.title})}get isEmpty(){return this.items.length===0}get canClear(){return!this.isEmpty}get currentItem(){return this.items.find(t=>t.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(t=>t.id===this.currentId):void 0}set currentIndex(t){this.currentId=t!==void 0?this.items.at(t)?.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(t=>t.isSelected)}get allItemsSelected(){return this.selectedItems.length===this.items.length}get hasSelectedItems(){return this.selectedItems.length>0}get selectedItemsOrAllItems(){return this.hasSelectedItems?this.selectedItems:this.items}get canAddSelectedItems(){return!this.isEmpty&&this.hasSelectedItems}get canPlaySelectedItemsNext(){return!this.isEmpty&&this.hasSelectedItems}get canRemoveSelectedItems(){return!this.isEmpty&&this.hasSelectedItems}setItems(t){this.items=t}clear(){this.currentIndex=void 0,this.items=[]}unselectAll(){for(const t of this.items)t.unselect()}selectAll(){for(const t of this.items)t.select()}setCurrentItem(t){this.currentId=t?.id}setNextItems(t){this.currentIndex!==void 0&&this.items.splice(this.currentIndex+1,0,...t)}clearAndSetItems(t){this.clear(),this.setCurrentItem(t[0]),this.setNextItems(t)}async playNext(t){if(this.isEmpty){this.clearAndSetItems(t);return}this.setNextItems(t)}async playSelectedItemsNext(){await this.playNext(this.selectedItemsOrAllItems.map(t=>t.clone())),this.unselectAll()}async addItems(t){if(this.isEmpty){this.clearAndSetItems(t);return}this.items.push(...t)}async addSelectedItems(){await this.addItems(this.selectedItemsOrAllItems.map(t=>t.clone())),this.unselectAll()}async playFirst(t){if(this.isEmpty){this.clearAndSetItems(t);return}const{currentIndex:r}=this;r!==void 0&&(this.items.splice(r,0,...t),this.currentIndex=r)}moveItem(t,r){const a=this.items.splice(this.items.indexOf(t),1)[0];this.items.splice(r,0,a)}async goToFirst(){this.currentIndex!==void 0&&(this.currentIndex=0)}async removeItems(t){const{currentItem:r}=this;Ke.pull(this.items,...t.filter(c=>c!==r));const{currentIndex:a,isLastItem:s}=this;Ke.pull(this.items,t.find(c=>c===r)),this.currentItem!==r&&(s?await this.goToFirst():this.currentIndex=a)}async removeSelectedItems(){await this.removeItems(this.selectedItemsOrAllItems),this.unselectAll()}async removeOtherItems(t){const r=t.id;return this.removeItems(this.items.filter(a=>a.id!==r))}async removeItemsAbove(t){const r=this.items.indexOf(t);return this.removeItems(this.items.filter((a,s)=>s<r))}async previous(){this.currentIndex!==void 0&&this.hasPreviousItem&&this.currentIndex--}async next(){this.currentIndex!==void 0&&this.hasNextItem&&this.currentIndex++}addItemFromDto(t){const r=this.createItemFromDto(t);return this.addItems([r])}}E([l.observable],P.prototype,"items",2);E([l.observable],P.prototype,"currentId",2);E([l.computed],P.prototype,"isEmpty",1);E([l.computed],P.prototype,"canClear",1);E([l.computed],P.prototype,"currentItem",1);E([l.computed],P.prototype,"canPlay",1);E([l.computed],P.prototype,"canPause",1);E([l.computed],P.prototype,"hasMultipleItems",1);E([l.computed],P.prototype,"currentIndex",1);E([l.computed],P.prototype,"hasPreviousItem",1);E([l.computed],P.prototype,"hasNextItem",1);E([l.computed],P.prototype,"isLastItem",1);E([l.computed],P.prototype,"selectedItems",1);E([l.computed],P.prototype,"allItemsSelected",1);E([l.computed],P.prototype,"hasSelectedItems",1);E([l.computed],P.prototype,"selectedItemsOrAllItems",1);E([l.computed],P.prototype,"canAddSelectedItems",1);E([l.computed],P.prototype,"canPlaySelectedItemsNext",1);E([l.computed],P.prototype,"canRemoveSelectedItems",1);E([l.action.bound],P.prototype,"setItems",1);E([l.action.bound],P.prototype,"clear",1);E([l.action.bound],P.prototype,"unselectAll",1);E([l.action.bound],P.prototype,"selectAll",1);E([l.action.bound],P.prototype,"setCurrentItem",1);E([l.action.bound],P.prototype,"setNextItems",1);E([l.action.bound],P.prototype,"clearAndSetItems",1);E([l.action.bound],P.prototype,"playNext",1);E([l.action.bound],P.prototype,"playSelectedItemsNext",1);E([l.action.bound],P.prototype,"addItems",1);E([l.action.bound],P.prototype,"addSelectedItems",1);E([l.action.bound],P.prototype,"playFirst",1);E([l.action.bound],P.prototype,"moveItem",1);E([l.action.bound],P.prototype,"goToFirst",1);E([l.action.bound],P.prototype,"removeItems",1);E([l.action.bound],P.prototype,"removeSelectedItems",1);E([l.action.bound],P.prototype,"removeOtherItems",1);E([l.action.bound],P.prototype,"removeItemsAbove",1);E([l.action.bound],P.prototype,"previous",1);E([l.action.bound],P.prototype,"next",1);E([l.action.bound],P.prototype,"addItemFromDto",1);const To=({children:e})=>{const[t]=p.useState(()=>new P);Xe.useLocalStorageState(tt.playQueue,t.localStorageState);const r=pe.useNostalgicDiva();return p.useEffect(()=>l.reaction(()=>t.currentItem,async(a,s)=>{a===void 0||s===void 0||a.type===s.type&&a.videoId===s.videoId&&await r.setCurrentTime(0)}),[t,r]),o(Ct.Provider,{value:t,children:e})};var Ro=Object.defineProperty,wo=Object.getOwnPropertyDescriptor,ne=(e,t,r,a)=>{for(var s=a>1?void 0:a?wo(t,r):t,c=e.length-1,u;c>=0;c--)(u=e[c])&&(s=(a?u(t,r,s):u(s))||s);return a&&s&&Ro(t,r,s),s};class te{controller=pe.nullPlayerController;playing=!1;percent=0;seeking=!1;constructor(){l.makeObservable(this)}setPlaying(t){this.playing=t}setPercent(t){this.percent=t}setSeeking(t){this.seeking=t}onControllerChange(t){this.controller=t}onPlay(){this.playing=!0}onPause(){this.playing=!1}onEnded(){this.playing=!1}onTimeUpdate({percent:t}){t!==void 0&&(this.seeking||(this.percent=t))}}ne([l.observable],te.prototype,"controller",2);ne([l.observable],te.prototype,"playing",2);ne([l.observable],te.prototype,"percent",2);ne([l.observable],te.prototype,"seeking",2);ne([l.action.bound],te.prototype,"setPlaying",1);ne([l.action.bound],te.prototype,"setPercent",1);ne([l.action.bound],te.prototype,"setSeeking",1);ne([l.action.bound],te.prototype,"onControllerChange",1);ne([l.action.bound],te.prototype,"onPlay",1);ne([l.action.bound],te.prototype,"onPause",1);ne([l.action.bound],te.prototype,"onEnded",1);ne([l.action.bound],te.prototype,"onTimeUpdate",1);const Oo=({children:e})=>{const[t]=p.useState(()=>new te);return o(ir.Provider,{value:t,children:e})},xt=p.createContext(void 0),ur=()=>p.useContext(xt);var _o=Object.defineProperty,ko=Object.getOwnPropertyDescriptor,rt=(e,t,r,a)=>{for(var s=a>1?void 0:a?ko(t,r):t,c=e.length-1,u;c>=0;c--)(u=e[c])&&(s=(a?u(t,r,s):u(s))||s);return a&&s&&_o(t,r,s),s};class Ce{constructor(t,r,a){this.playlistList=t,l.makeObservable(this),this.id=r,this.name=a}id;name;async rename(t){this.name=t}remove(){return this.playlistList.removeItem(this)}}rt([l.observable],Ce.prototype,"id",2);rt([l.observable],Ce.prototype,"name",2);rt([l.action.bound],Ce.prototype,"rename",1);rt([l.action.bound],Ce.prototype,"remove",1);var Fo=Object.defineProperty,Ao=Object.getOwnPropertyDescriptor,Ne=(e,t,r,a)=>{for(var s=a>1?void 0:a?Ao(t,r):t,c=e.length-1,u;c>=0;c--)(u=e[c])&&(s=(a?u(t,r,s):u(s))||s);return a&&s&&Fo(t,r,s),s};class dr{constructor(t){this.playlistList=t,l.makeObservable(this)}get state(){return{items:this.playlistList.items.map(t=>({id:t.id,name:t.name}))}}set state(t){this.playlistList.items=t.items?.map(r=>new Ce(this.playlistList,r.id,r.name))??[]}validateState(t){return!0}}Ne([l.computed.struct],dr.prototype,"state",1);class je{localStorageState;items=[];constructor(){l.makeObservable(this),this.localStorageState=new dr(this)}createItem(t){return new Ce(this,crypto.randomUUID(),t)}setItems(t){this.items=t}async addItem(t){this.items.push(t)}async removeItem(t){Ke.pull(this.items,t)}}Ne([l.observable],je.prototype,"items",2);Ne([l.action.bound],je.prototype,"setItems",1);Ne([l.action.bound],je.prototype,"addItem",1);Ne([l.action.bound],je.prototype,"removeItem",1);const Bo=({children:e})=>{const[t]=p.useState(()=>new je);return Xe.useLocalStorageState(tt.playlistList,t.localStorageState),o(xt.Provider,{value:t,children:e})},Mo=({children:e,nostalgicDivaProps:t})=>o(pe.NostalgicDivaProvider,{...t,children:o(uo,{components:[Oo,To,yo,go,Bo],children:e})}),bt={width:400,height:225},Do=I.observer(({children:e})=>{const t=Pe();return C(i.EuiPageTemplate,{panelled:!0,style:{minBlockSize:`max(460px, 100vh - ${Et}px)`},children:[e,!t.isEmpty&&o(i.EuiSpacer,{style:{blockSize:bt.height}})]})}),No=I.observer(()=>{const e=J();return o(i.EuiButtonIcon,{title:`Shuffle: ${e.shuffle?"On":"Off"}`,"aria-label":`Shuffle: ${e.shuffle?"On":"Off"}`,iconType:e.shuffle?b.ArrowShuffleFilled:b.ArrowShuffleOffFilled,size:"s",iconSize:"l",onClick:e.toggleShuffle,disabled:!e.canToggleShuffle})}),jo=I.observer(()=>{const e=J();return o(i.EuiButtonIcon,{title:"Previous","aria-label":"Previous",iconType:b.PreviousFilled,size:"s",iconSize:"l",onClick:e.previous,disabled:!e.canPrevious})}),$o=I.observer(()=>{const e=J();return o(i.EuiButtonIcon,{title:"Skip back 10 seconds","aria-label":"Skip back 10 seconds",iconType:b.SkipBack10Regular,size:"s",iconSize:"l",onClick:e.skipBack10,disabled:!e.canSkipBack10})}),Lo=I.observer(()=>{const e=J();return o(i.EuiButtonIcon,{title:"Pause","aria-label":"Pause",iconType:b.PauseFilled,size:"s",iconSize:"l",onClick:e.pause,disabled:!e.canPause})}),zo=I.observer(()=>{const e=J();return o(i.EuiButtonIcon,{title:"Play","aria-label":"Play",iconType:b.PlayFilled,size:"s",iconSize:"l",onClick:e.play,disabled:!e.canPlay})}),Qo=I.observer(()=>{const e=J();return o(i.EuiButtonIcon,{title:"Skip forward 30 seconds","aria-label":"Skip forward 30 seconds",iconType:b.SkipForward30Regular,size:"s",iconSize:"l",onClick:e.skipForward30,disabled:!e.canSkipForward30})}),Ho=I.observer(()=>{const e=J();return o(i.EuiButtonIcon,{title:"Next","aria-label":"Next",iconType:b.NextFilled,size:"s",iconSize:"l",onClick:e.next,disabled:!e.canNext})}),pr={[M.Off]:b.ArrowRepeatAllOffFilled,[M.All]:b.ArrowRepeatAllFilled,[M.One]:b.ArrowRepeat1Filled},Yo=I.observer(()=>{const e=J();return o(i.EuiButtonIcon,{title:`Repeat: ${e.repeat===M.All?"All":e.repeat===M.One?"One":"Off"}`,"aria-label":`Repeat: ${e.repeat===M.All?"All":e.repeat===M.One?"One":"Off"}`,iconType:pr[e.repeat],size:"s",iconSize:"l",onClick:e.toggleRepeat,disabled:!e.canToggleRepeat})}),Vo=I.observer(()=>{const e=J();return C(i.EuiFlexGroup,{responsive:!1,gutterSize:"s",justifyContent:"center",alignItems:"center",children:[o(i.EuiHideFor,{sizes:["xs"],children:o(No,{})}),o(jo,{}),o(i.EuiHideFor,{sizes:["xs"],children:o($o,{})}),e.playing?o(Lo,{}):o(zo,{}),o(i.EuiHideFor,{sizes:["xs"],children:o(Qo,{})}),o(Ho,{}),o(i.EuiHideFor,{sizes:["xs"],children:o(Yo,{})})]})}),qo=p.memo(({item:e,closePopover:t})=>{const r=p.useCallback(({name:s,icon:c,onClick:u})=>({name:s,icon:c,onClick:async h=>{t(),u(h)}}),[t]),a=p.useMemo(()=>[{id:0,items:[r({name:"Open in new tab",icon:o(i.EuiIcon,{type:b.OpenRegular}),onClick:async()=>{window.open(e.dto.url,"_blank")}}),r({name:"Copy link address",icon:o(i.EuiIcon,{type:""}),onClick:async()=>{await navigator.clipboard.writeText(e.dto.url)}}),r({name:"Copy link text",icon:o(i.EuiIcon,{type:""}),onClick:async()=>{await navigator.clipboard.writeText(e.dto.title)}})]}],[r,e]);return o(i.EuiContextMenu,{initialPanelId:0,panels:a})}),Uo=p.memo(({item:e})=>{const[t,r]=p.useState(!1),a=p.useCallback(()=>r(!t),[t]),s=p.useCallback(()=>r(!1),[]);return o(i.EuiPopover,{button:o(i.EuiButtonEmpty,{iconType:Ze.get(e.type),size:"s",onClick:a,children:e.title}),isOpen:t,closePopover:s,panelPaddingSize:"none",anchorPosition:"upLeft",children:o(qo,{item:e,closePopover:s})})}),Wo=I.observer(()=>{const e=J();return o(i.EuiFlexGroup,{responsive:!1,gutterSize:"s",justifyContent:"flexStart",alignItems:"center",children:e.currentItem&&o(Uo,{item:e.currentItem})})}),Go=I.observer(()=>{const e=J();return o(i.EuiButtonIcon,{title:"Mute","aria-label":"Mute",iconType:b.Speaker2Regular,size:"s",iconSize:"l",disabled:!e.controller.supports("setMuted")})}),Jo=I.observer(({button:e,isOpen:t,closePopover:r})=>{const a=J(),[s,c]=p.useState("0"),u=pe.useNostalgicDiva();p.useLayoutEffect(()=>{t&&u.getVolume().then(f=>{f!==void 0&&c(Math.floor(f*100).toString())})},[t,u]);const h=p.useCallback(async f=>{c(f.currentTarget.value),await u.setVolume(Number(f.currentTarget.value)/100)},[u]);return o(i.EuiPopover,{button:e,isOpen:t,closePopover:r,anchorPosition:"upRight",children:o(i.EuiFormRow,{children:C(i.EuiFlexGroup,{responsive:!1,gutterSize:"s",justifyContent:"center",alignItems:"center",children:[o(Go,{}),o(i.EuiRange,{min:0,max:100,step:1,value:s,onChange:h,css:{blockSize:32},disabled:!a.controller.supports("setVolume")})]})})})}),Ko=I.observer(()=>{const e=J(),[t,r]=p.useState(!1),a=()=>r(!t);return o(Jo,{button:o(i.EuiButtonIcon,{title:"Volume","aria-label":"Volume",iconType:b.Speaker2Regular,size:"s",iconSize:"l",onClick:a,disabled:!e.controller.supports("getVolume")}),isOpen:t,closePopover:()=>r(!1)})}),Xo=({onClickPlayQueueButton:e})=>o(i.EuiButtonIcon,{title:"Play queue","aria-label":"Play queue",iconType:b.NavigationPlayRegular,size:"s",iconSize:"l",onClick:e}),Zo=I.observer(({closePopover:e})=>{const t=J(),r=pe.useNostalgicDiva(),[a,s]=p.useState(),c=p.useCallback(async()=>{await t.controller.getPlaybackRate().then(f=>s(f))},[t]),u=p.useCallback(({name:f,icon:S,onClick:x,disabled:k,className:G})=>({name:f,icon:S,onClick:async()=>{e(),x()},disabled:k,className:G}),[e]),h=p.useMemo(()=>[{id:0,items:[{name:"Speed",icon:o(i.EuiIcon,{type:b.TopSpeedRegular}),panel:1,onClick:c,disabled:!t.controller.supports("getPlaybackRate")},u({name:"Skip back 10 seconds",icon:o(i.EuiIcon,{type:b.SkipBack10Regular}),onClick:t.skipBack10,disabled:!t.canSkipBack10}),u({name:"Skip forward 30 seconds",icon:o(i.EuiIcon,{type:b.SkipForward30Regular}),onClick:t.skipForward30,disabled:!t.canSkipForward30}),u({name:`Shuffle: ${t.shuffle?"On":"Off"}`,icon:o(i.EuiIcon,{type:t.shuffle?b.ArrowShuffleFilled:b.ArrowShuffleOffFilled}),onClick:t.toggleShuffle,disabled:!t.canToggleShuffle,className:"eui-showFor--xs--flex"}),u({name:`Repeat: ${t.repeat===M.All?"All":t.repeat===M.One?"One":"Off"}`,icon:o(i.EuiIcon,{type:pr[t.repeat]}),onClick:t.toggleRepeat,disabled:!t.canToggleRepeat,className:"eui-showFor--xs--flex"}),{isSeparator:!0},u({name:"Remove from play queue",icon:o(i.EuiIcon,{type:b.DismissRegular}),onClick:t.removeFromPlayQueue,disabled:!t.canRemoveFromPlayQueue})]},{id:1,title:"Speed",items:[.25,.5,.75,1,1.25,1.5,1.75,2].map(f=>u({name:f.toString(),onClick:()=>r.setPlaybackRate(f),icon:f===a?"check":"empty",disabled:!t.controller.supports("setPlaybackRate")}))}],[t,u,c,r,a]);return o(i.EuiContextMenu,{initialPanelId:0,panels:h})}),en=p.memo(({button:e,isOpen:t,closePopover:r})=>o(i.EuiPopover,{button:e,isOpen:t,closePopover:r,panelPaddingSize:"none",anchorPosition:"upRight",children:o(Zo,{closePopover:r})})),tn=p.memo(()=>{const[e,t]=p.useState(!1),r=()=>t(!e);return o(en,{button:o(i.EuiButtonIcon,{title:"More options","aria-label":"More options",iconType:b.MoreHorizontalFilled,size:"s",iconSize:"l",onClick:r}),isOpen:e,closePopover:()=>t(!1)})}),rn=p.memo(({onClickPlayQueueButton:e})=>C(i.EuiFlexGroup,{responsive:!1,gutterSize:"s",justifyContent:"flexEnd",alignItems:"center",children:[o(Ko,{}),e&&o(Xo,{onClickPlayQueueButton:e}),o(tn,{})]})),on=I.observer(()=>{const e=J(),t=pe.useNostalgicDiva(),r=p.useCallback(c=>{const u=Number(c.currentTarget.value)/100;e.setPercent(u)},[e]),a=p.useCallback(c=>{c.button===0&&e.setSeeking(!0)},[e]),s=p.useCallback(async c=>{if(c.button===0){const u=Number(c.currentTarget.value)/100;e.setSeeking(!1);const h=await t.getDuration();h!==void 0&&await t.setCurrentTime(h*u)}},[e,t]);return o(i.EuiRange,{min:0,max:100,step:1e-7,value:e.percent*100,onChange:r,onMouseDown:a,onMouseUp:s,fullWidth:!0,showRange:!0,css:{blockSize:32},disabled:!e.canSeek})}),nn=I.observer(({onClickPlayQueueButton:e})=>o(i.EuiBottomBar,{paddingSize:"s",children:C(i.EuiFlexGroup,{direction:"column",gutterSize:"none",children:[o(i.EuiFlexItem,{children:o(on,{})}),o(i.EuiFlexItem,{children:C(i.EuiFlexGroup,{responsive:!1,children:[o(i.EuiFlexItem,{css:{width:"calc(100% / 3)"},children:o(Wo,{})}),o(i.EuiFlexItem,{css:{width:"calc(100% / 3)"},children:o(Vo,{})}),o(i.EuiFlexItem,{css:{width:"calc(100% / 3)"},children:o(rn,{onClickPlayQueueButton:e})})]})})]})})),an=I.observer(()=>{const e=ho(),t=p.useMemo(()=>({onLoaded:e.onLoaded,onPlay:e.onPlay,onPause:e.onPause,onEnded:e.onEnded,onTimeUpdate:e.onTimeUpdate}),[e]);return p.useLayoutEffect(()=>(window.addEventListener("click",e.interact,{once:!0}),()=>{window.removeEventListener("click",e.interact)}),[e]),o("div",{css:{position:"fixed",right:0,bottom:Et,width:bt.width,height:bt.height,zIndex:998,backgroundColor:"rgb(39, 39, 39)",display:"flex",flexDirection:"column"},children:o("div",{css:{flexGrow:1,backgroundColor:"black"},children:e.currentItem&&o(pe.NostalgicDiva,{src:e.currentItem.url,options:t,onControllerChange:e.onControllerChange})})})});function sn(e){return e!==null&&typeof e=="object"&&"title"in e&&typeof e.title=="string"}const ln=me.create(({remove:e,resolve:t})=>{const r=i.useGeneratedHtmlId({prefix:"modalForm"}),[a,s]=p.useState(""),[c,u]=p.useState(""),[h,f]=p.useState(!1);return C(i.EuiModal,{onClose:e,initialFocus:"[name=url]",children:[o(i.EuiModalHeader,{children:o(i.EuiModalHeaderTitle,{children:"Add video"})}),o(i.EuiModalBody,{children:C(i.EuiForm,{id:r,component:"form",onSubmit:async S=>{S.preventDefault();try{f(!0);const x=pe.findVideoService(a);if(x===void 0)return;const k=x.extractVideoId(a);if(k===void 0)return;const V=await(await fetch(`https://noembed.com/embed?url=${encodeURIComponent(a)}`)).json();t({url:a,type:x.type,videoId:k,title:c||(sn(V)?V.title:k)}),e()}finally{f(!1)}},children:[o(i.EuiFormRow,{label:"URL",children:o(i.EuiFieldText,{name:"url",value:a,onChange:S=>s(S.target.value)})}),o(i.EuiFormRow,{label:"Title",children:o(i.EuiFieldText,{name:"title",value:c,onChange:S=>u(S.target.value)})})]})}),C(i.EuiModalFooter,{children:[o(i.EuiButtonEmpty,{onClick:e,children:"Cancel"}),o(i.EuiButton,{type:"submit",form:r,fill:!0,disabled:a.trim().length===0,isLoading:h,children:"Add video"})]})]})}),Tt=p.memo(({onFulfilled:e})=>{const t=()=>me.show(ln).then(e);return o(i.EuiButton,{onClick:t,iconType:b.AddRegular,color:"primary",children:"Add video"})}),cn=I.observer(({playQueue:e})=>o(i.EuiButton,{iconType:b.AddRegular,onClick:e.addSelectedItems,disabled:!e.canAddSelectedItems,children:"Add to play queue"})),un=I.observer(({playQueue:e,closePopover:t})=>{const r=p.useCallback(({name:s,icon:c,disabled:u,onClick:h})=>({name:s,icon:c,disabled:u,onClick:async f=>{t(),h(f)}}),[t]),a=p.useMemo(()=>[{id:0,items:[r({name:"Play next",icon:o(i.EuiIcon,{type:""}),disabled:!e.canPlaySelectedItemsNext,onClick:e.playSelectedItemsNext}),r({name:"Add to play queue",icon:o(i.EuiIcon,{type:b.AddRegular}),onClick:e.addSelectedItems,disabled:!e.canAddSelectedItems}),r({name:"Remove",icon:o(i.EuiIcon,{type:b.DismissRegular}),onClick:e.removeSelectedItems,disabled:!e.canRemoveSelectedItems}),r({name:"Clear",icon:o(i.EuiIcon,{type:b.DeleteRegular}),onClick:e.clear,disabled:!e.canClear})]}],[r,e]);return o(i.EuiContextMenu,{initialPanelId:0,panels:a})}),dn=p.memo(({playQueue:e})=>{const[t,r]=p.useState(!1),a=p.useCallback(()=>r(!t),[t]),s=p.useCallback(()=>r(!1),[]);return o(i.EuiPopover,{button:o(i.EuiButtonIcon,{display:"base",size:"m",iconType:b.MoreHorizontalFilled,onClick:a}),isOpen:t,closePopover:s,panelPaddingSize:"none",anchorPosition:"downLeft",children:o(un,{playQueue:e,closePopover:s})})}),pn=I.observer(({playQueue:e})=>{const{euiTheme:t}=i.useEuiTheme();return C(i.EuiFlexGroup,{alignItems:"center",gutterSize:"m",responsive:!1,style:{position:"sticky",top:48,zIndex:998,background:t.colors.backgroundBasePlain},children:[C(i.EuiHideFor,{sizes:["xs"],children:[o(i.EuiFlexItem,{grow:!1,children:o(i.EuiButton,{disabled:!e.canPlaySelectedItemsNext,onClick:e.playSelectedItemsNext,children:"Play next"})}),o(i.EuiFlexItem,{grow:!1,children:o(cn,{playQueue:e})}),o(i.EuiFlexItem,{grow:!1,children:o(i.EuiButton,{iconType:b.DismissRegular,onClick:e.removeSelectedItems,disabled:!e.canRemoveSelectedItems,children:"Remove"})}),o(i.EuiFlexItem,{grow:!1,children:o(i.EuiButton,{iconType:b.DeleteRegular,onClick:e.clear,disabled:!e.canClear,children:"Clear"})})]}),o(i.EuiShowFor,{sizes:["xs"],children:o(dn,{playQueue:e})}),o(i.EuiFlexItem,{grow:!0}),o(i.EuiFlexItem,{grow:!1,children:o(Tt,{onFulfilled:e.addItemFromDto})})]})}),mn=I.observer(({playQueue:e})=>{const{euiTheme:t}=i.useEuiTheme();return C(ve,{children:[o(i.EuiTableHeaderMobile,{children:o(i.EuiFlexGroup,{responsive:!1,justifyContent:"spaceBetween",alignItems:"baseline",children:o(i.EuiFlexItem,{grow:!1,children:o(i.EuiCheckbox,{id:"",checked:e.allItemsSelected,onChange:r=>{r.target.checked?e.selectAll():e.unselectAll()}})})})}),C(i.EuiTableHeader,{style:{position:"sticky",top:112,zIndex:998,background:t.colors.backgroundBasePlain},children:[o(i.EuiTableHeaderCellCheckbox,{children:o(i.EuiCheckbox,{id:"",checked:e.allItemsSelected,onChange:r=>{r.target.checked?e.selectAll():e.unselectAll()}})}),o(i.EuiTableHeaderCell,{width:24}),o(i.EuiTableHeaderCell,{children:"Title"}),o(i.EuiTableHeaderCell,{})]})]})}),fn=I.observer(({item:e,closePopover:t})=>{const r=p.useCallback(({name:s,icon:c,disabled:u,onClick:h,className:f})=>({name:s,icon:c,disabled:u,onClick:async S=>{t(),h(S)},className:f}),[t]),a=p.useMemo(()=>[{id:0,items:[r({name:"Play",icon:o(i.EuiIcon,{type:b.PlayRegular}),onClick:e.play,className:"eui-showFor--xs--flex"}),r({name:"Play first",icon:o(i.EuiIcon,{type:""}),onClick:e.playFirst}),r({name:"Play next",icon:o(i.EuiIcon,{type:""}),onClick:e.playNext}),r({name:"Add to play queue",icon:o(i.EuiIcon,{type:b.AddRegular}),onClick:e.addToPlayQueue}),{isSeparator:!0},r({name:"Move to the top",icon:o(i.EuiIcon,{type:b.ArrowUploadRegular}),onClick:e.moveToTop,disabled:!e.canMoveToTop}),r({name:"Move to the bottom",icon:o(i.EuiIcon,{type:b.ArrowDownloadRegular}),onClick:e.moveToBottom,disabled:!e.canMoveToBottom}),{isSeparator:!0},r({name:"Remove",icon:o(i.EuiIcon,{type:b.DismissRegular}),onClick:e.remove,className:"eui-showFor--xs--flex"}),r({name:"Remove to the top",icon:o(i.EuiIcon,{type:""}),onClick:e.removeToTop,disabled:!e.canRemoveToTop}),r({name:"Remove others",icon:o(i.EuiIcon,{type:""}),onClick:e.removeOthers,disabled:!e.canRemoveOthers})]}],[r,e]);return o(i.EuiContextMenu,{initialPanelId:0,panels:a})}),yn=p.memo(({item:e})=>{const[t,r]=p.useState(!1),a=p.useCallback(()=>r(!t),[t]),s=p.useCallback(()=>r(!1),[]);return o(i.EuiPopover,{button:o(i.EuiButtonIcon,{title:"More options","aria-label":"More options",iconType:b.MoreHorizontalFilled,size:"s",color:"text",onClick:a}),isOpen:t,closePopover:s,panelPaddingSize:"none",anchorPosition:"leftCenter",children:o(fn,{item:e,closePopover:s})})}),hn=I.observer(({item:e})=>{const t=pe.useNostalgicDiva();return C(i.EuiTableRowCell,{textOnly:!1,hasActions:!0,align:"right",children:[C(i.EuiHideFor,{sizes:["xs"],children:[o(i.EuiButton,{iconType:b.PlayRegular,size:"s",onClick:async()=>{e.isCurrent?await t.setCurrentTime(0):await e.play()},children:"Play"}),o(i.EuiButton,{iconType:b.DismissRegular,size:"s",onClick:e.remove,children:"Remove"})]}),o(yn,{item:e})]})}),vn=I.observer(({item:e})=>C(i.EuiTableRow,{isSelected:e.isCurrent,hasSelection:!0,hasActions:!0,children:[o(i.EuiTableRowCellCheckbox,{children:o(i.EuiCheckbox,{id:e.id.toString(),checked:e.isSelected,onChange:e.toggleSelected})}),o(i.EuiTableRowCell,{textOnly:!1,children:o("img",{src:Ze.get(e.type),width:16,height:16,alt:e.type})}),o(i.EuiTableRowCell,{mobileOptions:{header:!1,enlarge:!0,width:"100%"},children:o(i.EuiLink,{href:e.url,target:"_blank",external:!0,children:e.title})}),o(hn,{item:e})]})),bn=I.observer(({playQueue:e})=>o(St.ReactSortable,{tag:"tbody",list:e.items,setList:t=>e.setItems(t),children:e.items.map(t=>o(vn,{item:t},t.id))})),gn=I.observer(({playQueue:e})=>C(i.EuiTable,{children:[o(mn,{playQueue:e}),o(bn,{playQueue:e})]})),mr=I.observer(({playQueue:e})=>{const{euiTheme:t}=i.useEuiTheme();return C(i.EuiPageTemplate.Section,{children:[o(pn,{playQueue:e}),o(i.EuiSpacer,{size:"l",style:{position:"sticky",top:88,zIndex:998,background:t.colors.backgroundBasePlain}}),e.isEmpty?o(i.EuiEmptyPrompt,{title:o("h2",{children:"We couldn't find any videos"}),body:o("p",{children:"Your video library doesn't contain any video content."}),actions:o(Tt,{onFulfilled:e.addItemFromDto})}):o(gn,{playQueue:e})]})}),Rt=({breadcrumbs:e,tabs:t,...r})=>{const a=It.useRouter();return o(i.EuiPageTemplate.Header,{...r,breadcrumbs:e?.map(({linkProps:s,...c})=>({...c,href:s===void 0?void 0:a.buildLocation(s).href,onClick:s===void 0?void 0:async u=>{u.preventDefault(),await a.navigate(s)}})),tabs:t?.map(({linkProps:s,...c})=>({...c,href:s===void 0?void 0:a.buildLocation(s).href,onClick:s===void 0?void 0:async u=>{u.preventDefault(),await a.navigate(s)}}))})},Sn=()=>{const e=Pe();return C(ve,{children:[o(Rt,{pageTitle:"Play queue",rightSideItems:[]}),o(mr,{playQueue:e})]})},In=me.create(({remove:e,resolve:t,playlistListItem:r})=>{const[a,s]=p.useState(!1),c=p.useCallback(async()=>{try{s(!0),t(),e()}finally{s(!1)}},[t,e]);return o(i.EuiConfirmModal,{title:"Delete playlist permanently?",onCancel:e,onConfirm:c,cancelButtonText:"Cancel",confirmButtonText:"Delete",buttonColor:"danger",isLoading:a,children:C("p",{children:["Are you sure you want to delete this playlist? If you delete '",r.name,"', you won't be able to recover it."]})})}),En=I.observer(({playlist:e})=>o(i.EuiButton,{iconType:b.AddRegular,onClick:e.addSelectedItems,disabled:!e.canAddSelectedItems,children:"Add to play queue"})),Pn=I.observer(({playlist:e,closePopover:t})=>{const r=p.useCallback(({name:s,icon:c,disabled:u,onClick:h})=>({name:s,icon:c,disabled:u,onClick:async f=>{t(),h(f)}}),[t]),a=p.useMemo(()=>[{id:0,items:[r({name:"Play next",icon:o(i.EuiIcon,{type:""}),disabled:!e.canPlaySelectedItemsNext,onClick:e.playSelectedItemsNext}),r({name:"Add to play queue",icon:o(i.EuiIcon,{type:b.AddRegular}),onClick:e.addSelectedItems,disabled:!e.canAddSelectedItems}),r({name:"Remove",icon:o(i.EuiIcon,{type:b.DismissRegular}),onClick:e.removeSelectedItems,disabled:!e.canRemoveSelectedItems})]}],[r,e]);return o(i.EuiContextMenu,{initialPanelId:0,panels:a})}),Cn=p.memo(({playlist:e})=>{const[t,r]=p.useState(!1),a=p.useCallback(()=>r(!t),[t]),s=p.useCallback(()=>r(!1),[]);return o(i.EuiPopover,{button:o(i.EuiButtonIcon,{display:"base",size:"m",iconType:b.MoreHorizontalFilled,onClick:a}),isOpen:t,closePopover:s,panelPaddingSize:"none",anchorPosition:"downLeft",children:o(Pn,{playlist:e,closePopover:s})})}),xn=I.observer(({playlist:e})=>{const{euiTheme:t}=i.useEuiTheme();return C(i.EuiFlexGroup,{alignItems:"center",gutterSize:"m",responsive:!1,style:{position:"sticky",top:48,zIndex:998,background:t.colors.backgroundBasePlain},children:[C(i.EuiHideFor,{sizes:["xs"],children:[o(i.EuiFlexItem,{grow:!1,children:o(i.EuiButton,{disabled:!e.canPlaySelectedItemsNext,onClick:e.playSelectedItemsNext,children:"Play next"})}),o(i.EuiFlexItem,{grow:!1,children:o(En,{playlist:e})}),o(i.EuiFlexItem,{grow:!1,children:o(i.EuiButton,{iconType:b.DismissRegular,onClick:e.removeSelectedItems,disabled:!e.canRemoveSelectedItems,children:"Remove"})})]}),o(i.EuiShowFor,{sizes:["xs"],children:o(Cn,{playlist:e})}),o(i.EuiFlexItem,{grow:!0}),o(i.EuiFlexItem,{grow:!1,children:o(Tt,{onFulfilled:e.addItemFromDto})})]})}),Tn=I.observer(({playlist:e})=>C(ve,{children:[o(i.EuiTableHeaderMobile,{children:o(i.EuiFlexGroup,{responsive:!1,justifyContent:"spaceBetween",alignItems:"baseline",children:o(i.EuiFlexItem,{grow:!1,children:o(i.EuiCheckbox,{id:"",checked:e.allItemsSelected,onChange:t=>{t.target.checked?e.selectAll():e.unselectAll()}})})})}),C(i.EuiTableHeader,{children:[o(i.EuiTableHeaderCellCheckbox,{children:o(i.EuiCheckbox,{id:"",checked:e.allItemsSelected,onChange:t=>{t.target.checked?e.selectAll():e.unselectAll()}})}),o(i.EuiTableHeaderCell,{width:24}),o(i.EuiTableHeaderCell,{children:"Title"}),o(i.EuiTableHeaderCell,{})]})]})),Rn=p.memo(({item:e,closePopover:t})=>{const r=p.useCallback(({name:s,icon:c,disabled:u,onClick:h,className:f})=>({name:s,icon:c,disabled:u,onClick:async S=>{t(),h(S)},className:f}),[t]),a=p.useMemo(()=>[{id:0,items:[r({name:"Play",icon:o(i.EuiIcon,{type:b.PlayRegular}),onClick:e.play,className:"eui-showFor--xs--flex"}),r({name:"Play first",icon:o(i.EuiIcon,{type:""}),onClick:e.playFirst}),r({name:"Play next",icon:o(i.EuiIcon,{type:""}),onClick:e.playNext}),r({name:"Add to play queue",icon:o(i.EuiIcon,{type:b.AddRegular}),onClick:e.addToPlayQueue}),{isSeparator:!0},r({name:"Move to the top",icon:o(i.EuiIcon,{type:b.ArrowUploadRegular}),onClick:e.moveToTop,disabled:!e.canMoveToTop}),r({name:"Move to the bottom",icon:o(i.EuiIcon,{type:b.ArrowDownloadRegular}),onClick:e.moveToBottom,disabled:!e.canMoveToBottom}),{isSeparator:!0},r({name:"Remove",icon:o(i.EuiIcon,{type:b.DismissRegular}),onClick:e.remove,className:"eui-showFor--xs--flex"}),r({name:"Remove to the top",icon:o(i.EuiIcon,{type:""}),onClick:e.removeToTop,disabled:!e.canRemoveToTop}),r({name:"Remove others",icon:o(i.EuiIcon,{type:""}),onClick:e.removeOthers,disabled:!e.canRemoveOthers})]}],[r,e]);return o(i.EuiContextMenu,{initialPanelId:0,panels:a})}),wn=p.memo(({item:e})=>{const[t,r]=p.useState(!1),a=p.useCallback(()=>r(!t),[t]),s=p.useCallback(()=>r(!1),[]);return o(i.EuiPopover,{button:o(i.EuiButtonIcon,{title:"More options","aria-label":"More options",iconType:b.MoreHorizontalFilled,size:"s",color:"text",onClick:a}),isOpen:t,closePopover:s,panelPaddingSize:"none",anchorPosition:"leftCenter",children:o(Rn,{item:e,closePopover:s})})}),On=I.observer(({item:e})=>C(i.EuiTableRowCell,{textOnly:!1,hasActions:!0,align:"right",children:[C(i.EuiHideFor,{sizes:["xs"],children:[o(i.EuiButton,{iconType:b.PlayRegular,size:"s",onClick:e.play,children:"Play"}),o(i.EuiButton,{iconType:b.DismissRegular,size:"s",onClick:e.remove,children:"Remove"})]}),o(wn,{item:e})]})),_n=I.observer(({item:e})=>C(i.EuiTableRow,{isSelected:e.isCurrent,hasSelection:!0,hasActions:!0,children:[o(i.EuiTableRowCellCheckbox,{children:o(i.EuiCheckbox,{id:e.id.toString(),checked:e.isSelected,onChange:e.toggleSelected})}),o(i.EuiTableRowCell,{textOnly:!1,children:o("img",{src:Ze.get(e.type),width:16,height:16,alt:e.type})}),o(i.EuiTableRowCell,{mobileOptions:{header:!1,enlarge:!0,width:"100%"},children:o(i.EuiLink,{href:e.url,target:"_blank",external:!0,children:e.title})}),o(On,{item:e})]})),kn=I.observer(({playlist:e})=>o(St.ReactSortable,{tag:"tbody",list:e.items,setList:t=>e.setItems(t),children:e.items.map(t=>o(_n,{item:t},t.id))})),Fn=I.observer(({playlist:e})=>C(i.EuiTable,{children:[o(Tn,{playlist:e}),o(kn,{playlist:e})]})),An=I.observer(({playlist:e})=>{const{euiTheme:t}=i.useEuiTheme();return C(i.EuiPageTemplate.Section,{children:[o(xn,{playlist:e}),o(i.EuiSpacer,{size:"l",style:{position:"sticky",top:88,zIndex:998,background:t.colors.backgroundBasePlain}}),e.isEmpty?o(ve,{}):o(Fn,{playlist:e})]})}),Bn=me.create(({remove:e,resolve:t,playlistListItem:r})=>{const a=i.useGeneratedHtmlId({prefix:"modalForm"}),[s,c]=p.useState(r.name),[u,h]=p.useState(!1);return C(i.EuiModal,{onClose:e,initialFocus:"[name=name]",children:[o(i.EuiModalHeader,{children:o(i.EuiModalHeaderTitle,{children:"Rename playlist"})}),o(i.EuiModalBody,{children:o(i.EuiForm,{id:a,component:"form",onSubmit:async f=>{f.preventDefault();try{h(!0),t(s),e()}finally{h(!1)}},children:o(i.EuiFormRow,{label:"Name",children:o(i.EuiFieldText,{name:"name",value:s,onChange:f=>c(f.target.value)})})})}),C(i.EuiModalFooter,{children:[o(i.EuiButtonEmpty,{onClick:e,children:"Cancel"}),o(i.EuiButton,{type:"submit",form:a,fill:!0,disabled:s.trim().length===0,isLoading:u,children:"Rename"})]})]})});var Mn=Object.defineProperty,Dn=Object.getOwnPropertyDescriptor,Y=(e,t,r,a)=>{for(var s=a>1?void 0:a?Dn(t,r):t,c=e.length-1,u;c>=0;c--)(u=e[c])&&(s=(a?u(t,r,s):u(s))||s);return a&&s&&Mn(t,r,s),s};const L=class gt{constructor(t,r,a){this.playQueue=t,this.playlist=r,this.dto=a,l.makeObservable(this),this.id=gt.nextId++}static nextId=1;id;isSelected=!1;static fromDto(t,r,a){return new gt(t,r,a)}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!1}get index(){return this.playlist.items.indexOf(this)}get isFirst(){return this.index===0}get isLast(){return this.index===this.playlist.items.length-1}get canMoveToTop(){return!this.isFirst}get canMoveToBottom(){return!this.isLast}get canRemoveToTop(){return!this.isFirst}get canRemoveOthers(){return this.playlist.hasMultipleItems}unselect(){this.isSelected=!1}select(){this.isSelected=!0}toggleSelected(){this.isSelected=!this.isSelected}play(){return this.playQueue.clearAndSetItems([this.playQueue.createItemFromDto(this.dto)]),Promise.resolve()}remove(){return this.playlist.removeItems([this])}playFirst(){return this.playQueue.playFirst([this.playQueue.createItemFromDto(this.dto)])}playNext(){return this.playQueue.playNext([this.playQueue.createItemFromDto(this.dto)])}addToPlayQueue(){return this.playQueue.addItems([this.playQueue.createItemFromDto(this.dto)])}moveToTop(){this.playlist.moveItem(this,0)}moveToBottom(){this.playlist.moveItem(this,this.playlist.items.length-1)}removeToTop(){return this.playlist.removeItemsAbove(this)}removeOthers(){return this.playlist.removeOtherItems(this)}};Y([l.observable],L.prototype,"isSelected",2);Y([l.computed],L.prototype,"isCurrent",1);Y([l.computed],L.prototype,"index",1);Y([l.computed],L.prototype,"isFirst",1);Y([l.computed],L.prototype,"isLast",1);Y([l.computed],L.prototype,"canMoveToTop",1);Y([l.computed],L.prototype,"canMoveToBottom",1);Y([l.computed],L.prototype,"canRemoveToTop",1);Y([l.computed],L.prototype,"canRemoveOthers",1);Y([l.action.bound],L.prototype,"unselect",1);Y([l.action.bound],L.prototype,"select",1);Y([l.action.bound],L.prototype,"toggleSelected",1);Y([l.action.bound],L.prototype,"play",1);Y([l.action.bound],L.prototype,"remove",1);Y([l.action.bound],L.prototype,"playFirst",1);Y([l.action.bound],L.prototype,"playNext",1);Y([l.action.bound],L.prototype,"addToPlayQueue",1);Y([l.action.bound],L.prototype,"moveToTop",1);Y([l.action.bound],L.prototype,"moveToBottom",1);Y([l.action.bound],L.prototype,"removeToTop",1);Y([l.action.bound],L.prototype,"removeOthers",1);let Nn=L;var jn=Object.defineProperty,$n=Object.getOwnPropertyDescriptor,N=(e,t,r,a)=>{for(var s=a>1?void 0:a?$n(t,r):t,c=e.length-1,u;c>=0;c--)(u=e[c])&&(s=(a?u(t,r,s):u(s))||s);return a&&s&&jn(t,r,s),s};const Ln={type:"object",properties:{version:{type:"string",nullable:!0},items:{type:"array",nullable:!0,items:lr}}};class fr{constructor(t){this.playlist=t,l.makeObservable(this)}get state(){return{version:"1.0",items:this.playlist.items.map(t=>t.dto)}}set state(t){this.playlist.items=t.items?.map(r=>this.playlist.createItemFromDto(r))??[]}validateState(t){return Pt(Ln,"PlaylistLocalStorageState")(t)}}N([l.computed.struct],fr.prototype,"state",1);class j{constructor(t){this.playQueue=t,l.makeObservable(this),this.localStorageState=new fr(this)}localStorageState;items=[];createItemFromDto(t){return Nn.fromDto(this.playQueue,this,{url:t.url,type:t.type,videoId:t.videoId,title:t.title})}get isEmpty(){return this.items.length===0}get hasMultipleItems(){return this.items.length>1}get selectedItems(){return this.items.filter(t=>t.isSelected)}get allItemsSelected(){return this.selectedItems.length===this.items.length}get hasSelectedItems(){return this.selectedItems.length>0}get selectedItemsOrAllItems(){return this.hasSelectedItems?this.selectedItems:this.items}get canAddSelectedItems(){return!this.isEmpty&&this.hasSelectedItems}get canPlaySelectedItemsNext(){return!this.isEmpty&&this.hasSelectedItems}get canRemoveSelectedItems(){return!this.isEmpty&&this.hasSelectedItems}setItems(t){this.items=t}unselectAll(){for(const t of this.items)t.unselect()}selectAll(){for(const t of this.items)t.select()}async playSelectedItemsNext(){await this.playQueue.playNext(this.selectedItemsOrAllItems.map(t=>this.playQueue.createItemFromDto(t.dto))),this.unselectAll()}async addSelectedItems(){await this.playQueue.addItems(this.selectedItemsOrAllItems.map(t=>this.playQueue.createItemFromDto(t.dto))),this.unselectAll()}async addItems(t){this.items.push(...t)}moveItem(t,r){const a=this.items.splice(this.items.indexOf(t),1)[0];this.items.splice(r,0,a)}async removeItems(t){Ke.pull(this.items,...t)}async removeSelectedItems(){await this.removeItems(this.selectedItemsOrAllItems),this.unselectAll()}async removeOtherItems(t){const r=t.id;return this.removeItems(this.items.filter(a=>a.id!==r))}async removeItemsAbove(t){const r=this.items.indexOf(t);return this.removeItems(this.items.filter((a,s)=>s<r))}addItemFromDto(t){const r=this.createItemFromDto(t);return this.addItems([r])}playAll(){return this.playQueue.clearAndSetItems(this.items.map(t=>this.playQueue.createItemFromDto(t.dto))),Promise.resolve()}}N([l.observable],j.prototype,"items",2);N([l.computed],j.prototype,"isEmpty",1);N([l.computed],j.prototype,"hasMultipleItems",1);N([l.computed],j.prototype,"selectedItems",1);N([l.computed],j.prototype,"allItemsSelected",1);N([l.computed],j.prototype,"hasSelectedItems",1);N([l.computed],j.prototype,"selectedItemsOrAllItems",1);N([l.computed],j.prototype,"canAddSelectedItems",1);N([l.computed],j.prototype,"canPlaySelectedItemsNext",1);N([l.computed],j.prototype,"canRemoveSelectedItems",1);N([l.action.bound],j.prototype,"setItems",1);N([l.action.bound],j.prototype,"unselectAll",1);N([l.action.bound],j.prototype,"selectAll",1);N([l.action.bound],j.prototype,"playSelectedItemsNext",1);N([l.action.bound],j.prototype,"addSelectedItems",1);N([l.action.bound],j.prototype,"addItems",1);N([l.action.bound],j.prototype,"moveItem",1);N([l.action.bound],j.prototype,"removeItems",1);N([l.action.bound],j.prototype,"removeSelectedItems",1);N([l.action.bound],j.prototype,"removeOtherItems",1);N([l.action.bound],j.prototype,"removeItemsAbove",1);N([l.action.bound],j.prototype,"addItemFromDto",1);N([l.action.bound],j.prototype,"playAll",1);const zn=({onClick:e})=>o(i.EuiButton,{onClick:e,iconType:b.PlayRegular,fill:!0,children:"Play all"}),Qn=({playlistListItem:e,onFulfilled:t})=>{const r=()=>me.show(Bn,{playlistListItem:e}).then(t);return o(i.EuiButton,{onClick:r,iconType:b.RenameRegular,children:"Rename"})},Hn=({playlistListItem:e,onFulfilled:t})=>{const r=()=>me.show(In,{playlistListItem:e}).then(t);return o(i.EuiButton,{onClick:r,iconType:b.DeleteRegular,children:"Delete"})},Yn=I.observer(({playlistListItem:e})=>{const t=tt.playlist(e.id),r=Pe(),[a]=p.useState(()=>new j(r));Xe.useLocalStorageState(t,a.localStorageState);const s=It.useRouter(),c=p.useCallback(async h=>{await e.rename(h)},[e]),u=p.useCallback(async()=>{await s.navigate({to:"/playlists"}),window.localStorage.removeItem(t),await e.remove()},[e,s,t]);return C(ve,{children:[o(Rt,{pageTitle:e.name,breadcrumbs:[{text:"Playlists",linkProps:{to:"/playlists"}},{text:e.name}],rightSideItems:[o(zn,{onClick:a.playAll}),o(Qn,{playlistListItem:e,onFulfilled:c}),o(Hn,{playlistListItem:e,onFulfilled:u})]}),o(An,{playlist:a})]})}),Vn=me.create(({remove:e,resolve:t})=>{const r=i.useGeneratedHtmlId({prefix:"modalForm"}),[a,s]=p.useState(""),[c,u]=p.useState(!1);return C(i.EuiModal,{onClose:e,initialFocus:"[name=name]",children:[o(i.EuiModalHeader,{children:o(i.EuiModalHeaderTitle,{children:"Create playlist"})}),o(i.EuiModalBody,{children:o(i.EuiForm,{id:r,component:"form",onSubmit:async h=>{h.preventDefault();try{u(!0),t(a),e()}finally{u(!1)}},children:o(i.EuiFormRow,{label:"Name",children:o(i.EuiFieldText,{name:"name",value:a,onChange:h=>s(h.target.value)})})})}),C(i.EuiModalFooter,{children:[o(i.EuiButtonEmpty,{onClick:e,children:"Cancel"}),o(i.EuiButton,{type:"submit",form:r,fill:!0,disabled:a.trim().length===0,isLoading:c,children:"Create playlist"})]})]})}),qn=({children:e,onFulfilled:t})=>{const r=()=>me.show(Vn).then(t);return o(i.EuiButton,{onClick:r,iconType:b.AddRegular,fill:!0,children:e})},Un=({linkProps:e,...t})=>{const r=It.useRouter(),a=async s=>{s.preventDefault(),await r.navigate(e)};return o(i.EuiLink,{...t,href:r.buildLocation(e).href,onClick:a})},Wn=I.observer(({playlistList:e})=>o(i.EuiTableHeader,{children:o(i.EuiTableHeaderCell,{children:"Name"})})),Gn=I.observer(({item:e})=>o(i.EuiTableRow,{children:o(i.EuiTableRowCell,{children:o(Un,{linkProps:{to:"/playlists/$playlistId",params:{playlistId:e.id}},children:e.name})})},e.id)),Jn=I.observer(({playlistList:e})=>o(St.ReactSortable,{tag:"tbody",list:e.items,setList:t=>e.setItems(t),children:e.items.map(t=>o(Gn,{item:t},t.id))})),Kn=I.observer(({playlistList:e})=>C(i.EuiTable,{children:[o(Wn,{playlistList:e}),o(Jn,{playlistList:e})]})),Xn=()=>o(Rt,{pageTitle:"Playlists",breadcrumbs:[{text:"Playlists"}]}),Zn=I.observer(({playlistList:e})=>{const t=p.useCallback(async r=>{await e.addItem(e.createItem(r))},[e]);return C(i.EuiPageTemplate.Section,{children:[o(qn,{onFulfilled:t,children:"New playlist"}),o(i.EuiSpacer,{size:"l"}),o(Kn,{playlistList:e})]})}),ei=p.memo(()=>{const e=ur();return C(ve,{children:[o(Xn,{}),o(Zn,{playlistList:e})]})});exports.BottomBar=nn;exports.HydrangeanDivaProvider=Mo;exports.MediaPlayerLayout=Do;exports.MiniPlayer=an;exports.PlayQueueContext=Ct;exports.PlayQueuePage=Sn;exports.PlayQueueSection=mr;exports.PlaylistDetailsPage=Yn;exports.PlaylistListContext=xt;exports.PlaylistListPage=ei;exports.RepeatMode=M;exports.bottomBarHeight=Et;exports.usePlayQueue=Pe;exports.usePlaylistList=ur;exports.videoServiceIcons=Ze;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("@emotion/react/jsx-runtime"),a=require("react"),be=require("ajv"),n=require("mobx"),_=require("@aigamo/route-sphere"),N=require("lodash-es"),O=require("@aigamo/nostalgic-diva"),s=require("@elastic/eui"),p=require("mobx-react-lite"),d=require("@fluentui/react-icons"),R=require("ez-modal-react"),K=require("react-sortablejs"),W=require("@tanstack/react-router"),Y=81,H=new Map(Object.entries({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"})),ve=({components:t=[],children:e})=>o.jsx(o.Fragment,{children:t.reduceRight((r,l)=>o.jsx(l,{children:r}),e)}),$={playQueue:"PlayQueueStore",bottomBar:"BottomBarStore",playlistList:"PlaylistListStore",playlist:t=>`PlaylistStore/${t}`},ne=a.createContext(void 0),E=()=>a.useContext(ne),V=new be({coerceTypes:!0});function X(t,e){let r;if(r=V.getSchema(e),r===void 0&&(V.addSchema(t,e),r=V.getSchema(e)),r===void 0||r.schema!==t)throw new Error(`Invalid schema. Expected: '${JSON.stringify(t)}', but got '${JSON.stringify(r?.schema)}'.`);return r}var g=(t=>(t.Off="Off",t.All="All",t.One="One",t))(g||{}),ge=Object.defineProperty,Ie=Object.getOwnPropertyDescriptor,x=(t,e,r,l)=>{for(var i=l>1?void 0:l?Ie(e,r):e,c=t.length-1,u;c>=0;c--)(u=t[c])&&(i=(l?u(e,r,i):u(i))||i);return l&&i&&ge(e,r,i),i};const fe={type:"object",properties:{repeat:{type:"string",enum:Object.values(g),nullable:!0},shuffle:{type:"boolean",nullable:!0}}};class ie{constructor(e){this.bottomBar=e,n.makeObservable(this)}get state(){return{repeat:this.bottomBar.repeat,shuffle:this.bottomBar.shuffle}}set state(e){this.bottomBar.repeat=e.repeat??g.Off,this.bottomBar.shuffle=e.shuffle??!1}validateState(e){return X(fe,"BottomBarLocalStorageState")(e)}}x([n.computed.struct],ie.prototype,"state",1);class b{constructor(e,r){this.player=e,this.playQueue=r,n.makeObservable(this),this.localStorageState=new ie(this)}localStorageState;repeat=g.Off;shuffle=!1;get controller(){return this.player.controller}get playing(){return this.player.playing}get percent(){return this.player.percent}get canSeek(){return!this.playQueue.isEmpty&&this.controller.supports("setCurrentTime")}get currentItem(){return this.playQueue.currentItem}get canToggleRepeat(){return!0}get canToggleShuffle(){return!1}get canPlay(){return this.playQueue.canPlay&&this.controller.supports("play")}get canPause(){return this.playQueue.canPause&&this.controller.supports("pause")}get canPrevious(){return!this.playQueue.isEmpty}get canNext(){return this.playQueue.hasNextItem}get canSkipBack10(){return this.canSeek}get canSkipForward30(){return this.canSeek}get canRemoveFromPlayQueue(){return!this.playQueue.isEmpty}setPercent(e){this.player.setPercent(e)}setSeeking(e){this.player.setSeeking(e)}toggleRepeat(){switch(this.repeat){case g.Off:this.repeat=g.All;break;case g.All:this.repeat=g.One;break;case g.One:this.repeat=g.Off;break}}toggleShuffle(){this.shuffle=!this.shuffle}play(){return this.controller.play()}pause(){return this.controller.pause()}async previous(){if(this.playQueue.hasPreviousItem){const e=await this.controller.getCurrentTime();e===void 0||e<5?await this.playQueue.previous():await this.controller.setCurrentTime(0)}else await this.controller.setCurrentTime(0)}next(){return this.playQueue.next()}async skipBack10(){const e=await this.controller.getCurrentTime();e!==void 0&&await this.controller.setCurrentTime(e-10)}async skipForward30(){const e=await this.controller.getCurrentTime();e!==void 0&&await this.controller.setCurrentTime(e+30)}async removeFromPlayQueue(){this.currentItem!==void 0&&await this.playQueue.removeItems([this.currentItem])}}x([n.observable],b.prototype,"repeat",2);x([n.observable],b.prototype,"shuffle",2);x([n.computed],b.prototype,"controller",1);x([n.computed],b.prototype,"playing",1);x([n.computed],b.prototype,"percent",1);x([n.computed],b.prototype,"canSeek",1);x([n.computed],b.prototype,"currentItem",1);x([n.computed],b.prototype,"canToggleRepeat",1);x([n.computed],b.prototype,"canToggleShuffle",1);x([n.computed],b.prototype,"canPlay",1);x([n.computed],b.prototype,"canPause",1);x([n.computed],b.prototype,"canPrevious",1);x([n.computed],b.prototype,"canNext",1);x([n.computed],b.prototype,"canSkipBack10",1);x([n.computed],b.prototype,"canSkipForward30",1);x([n.computed],b.prototype,"canRemoveFromPlayQueue",1);x([n.action.bound],b.prototype,"setPercent",1);x([n.action.bound],b.prototype,"setSeeking",1);x([n.action.bound],b.prototype,"toggleRepeat",1);x([n.action.bound],b.prototype,"toggleShuffle",1);x([n.action.bound],b.prototype,"play",1);x([n.action.bound],b.prototype,"pause",1);x([n.action.bound],b.prototype,"previous",1);x([n.action.bound],b.prototype,"next",1);x([n.action.bound],b.prototype,"skipBack10",1);x([n.action.bound],b.prototype,"skipForward30",1);x([n.action.bound],b.prototype,"removeFromPlayQueue",1);const Z=a.createContext(void 0),A=()=>a.useContext(Z),le=a.createContext(void 0),ae=()=>a.useContext(le),Se=({children:t})=>{const e=ae(),r=A(),[l]=a.useState(()=>new b(e,r));return _.useLocalStorageState($.bottomBar,l.localStorageState),o.jsx(ne.Provider,{value:l,children:t})},ce=a.createContext(void 0),je=()=>a.useContext(ce);var Pe=Object.defineProperty,Ce=Object.getOwnPropertyDescriptor,F=(t,e,r,l)=>{for(var i=l>1?void 0:l?Ce(e,r):e,c=t.length-1,u;c>=0;c--)(u=t[c])&&(i=(l?u(e,r,i):u(i))||i);return l&&i&&Pe(e,r,i),i};class B{constructor(e,r,l){this.player=e,this.playQueue=r,this.bottomBar=l,n.makeObservable(this)}interacted=!1;get controller(){return this.player.controller}get currentItem(){return this.playQueue.currentItem}interact(){this.interacted=!0}async onLoaded(){this.interacted&&await this.controller.play()}onPlay(){this.player.onPlay()}onPause(){this.player.onPause()}async onEnded(){switch(this.bottomBar.repeat){case g.One:await this.controller.setCurrentTime(0);break;case g.Off:case g.All:if(this.playQueue.isLastItem)switch(this.bottomBar.repeat){case g.Off:this.player.onEnded();break;case g.All:this.playQueue.hasMultipleItems?await this.playQueue.goToFirst():await this.controller.setCurrentTime(0);break}else await this.playQueue.next();break}}onTimeUpdate(e){this.player.onTimeUpdate(e)}onControllerChange(e){this.player.onControllerChange(e)}}F([n.observable],B.prototype,"interacted",2);F([n.computed],B.prototype,"controller",1);F([n.computed],B.prototype,"currentItem",1);F([n.action.bound],B.prototype,"interact",1);F([n.action.bound],B.prototype,"onLoaded",1);F([n.action.bound],B.prototype,"onPlay",1);F([n.action.bound],B.prototype,"onPause",1);F([n.action.bound],B.prototype,"onEnded",1);F([n.action.bound],B.prototype,"onTimeUpdate",1);F([n.action.bound],B.prototype,"onControllerChange",1);const Ee=({children:t})=>{const e=ae(),r=A(),l=E(),[i]=a.useState(()=>new B(e,r,l));return o.jsx(ce.Provider,{value:i,children:t})},ue={type:"object",properties:{url:{type:"string"},type:{type:"string"},videoId:{type:"string"},title:{type:"string"}},required:["url","type","videoId","title"]},Te={type:"object",properties:{version:{type:"string",nullable:!0},repeat:{type:"string",enum:Object.values(g),nullable:!0},shuffle:{type:"boolean",nullable:!0},items:{type:"array",nullable:!0,items:ue},currentIndex:{type:"integer",nullable:!0}}};var we=Object.defineProperty,ke=Object.getOwnPropertyDescriptor,P=(t,e,r,l)=>{for(var i=l>1?void 0:l?ke(e,r):e,c=t.length-1,u;c>=0;c--)(u=t[c])&&(i=(l?u(e,r,i):u(i))||i);return l&&i&&we(e,r,i),i};const S=class U{constructor(e,r){this.playQueue=e,this.dto=r,n.makeObservable(this),this.id=U.nextId++}static nextId=1;id;isSelected=!1;static fromDto(e,r){return new U(e,r)}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.playQueue.currentItem===this}get index(){return this.playQueue.items.indexOf(this)}get isFirst(){return this.index===0}get isLast(){return this.index===this.playQueue.items.length-1}get canMoveToTop(){return!this.isFirst}get canMoveToBottom(){return!this.isLast}get canRemoveToTop(){return!this.isFirst}get canRemoveOthers(){return this.playQueue.hasMultipleItems}clone(){return this.playQueue.createItemFromDto(this.dto)}unselect(){this.isSelected=!1}select(){this.isSelected=!0}toggleSelected(){this.isSelected=!this.isSelected}play(){return this.playQueue.setCurrentItem(this),Promise.resolve()}remove(){return this.playQueue.removeItems([this])}playFirst(){return this.playQueue.playFirst([this.clone()])}playNext(){return this.playQueue.playNext([this.clone()])}addToPlayQueue(){return this.playQueue.addItems([this.clone()])}moveToTop(){this.playQueue.moveItem(this,0)}moveToBottom(){this.playQueue.moveItem(this,this.playQueue.items.length-1)}removeToTop(){return this.playQueue.removeItemsAbove(this)}removeOthers(){return this.playQueue.removeOtherItems(this)}};P([n.observable],S.prototype,"isSelected",2);P([n.computed],S.prototype,"isCurrent",1);P([n.computed],S.prototype,"index",1);P([n.computed],S.prototype,"isFirst",1);P([n.computed],S.prototype,"isLast",1);P([n.computed],S.prototype,"canMoveToTop",1);P([n.computed],S.prototype,"canMoveToBottom",1);P([n.computed],S.prototype,"canRemoveToTop",1);P([n.computed],S.prototype,"canRemoveOthers",1);P([n.action.bound],S.prototype,"unselect",1);P([n.action.bound],S.prototype,"select",1);P([n.action.bound],S.prototype,"toggleSelected",1);P([n.action.bound],S.prototype,"play",1);P([n.action.bound],S.prototype,"remove",1);P([n.action.bound],S.prototype,"playFirst",1);P([n.action.bound],S.prototype,"playNext",1);P([n.action.bound],S.prototype,"addToPlayQueue",1);P([n.action.bound],S.prototype,"moveToTop",1);P([n.action.bound],S.prototype,"moveToBottom",1);P([n.action.bound],S.prototype,"removeToTop",1);P([n.action.bound],S.prototype,"removeOthers",1);let Be=S;var Fe=Object.defineProperty,Oe=Object.getOwnPropertyDescriptor,m=(t,e,r,l)=>{for(var i=l>1?void 0:l?Oe(e,r):e,c=t.length-1,u;c>=0;c--)(u=t[c])&&(i=(l?u(e,r,i):u(i))||i);return l&&i&&Fe(e,r,i),i};class de{constructor(e){this.playQueue=e,n.makeObservable(this)}get state(){return{version:"1.0",items:this.playQueue.items.map(e=>e.dto),currentIndex:this.playQueue.currentIndex}}set state(e){this.playQueue.items=e.items?.map(r=>this.playQueue.createItemFromDto(r))??[],this.playQueue.currentIndex=e.currentIndex}validateState(e){return X(Te,"PlayQueueDto")(e)}}m([n.computed.struct],de.prototype,"state",1);class h{localStorageState;items=[];currentId;constructor(){n.makeObservable(this),this.localStorageState=new de(this)}createItemFromDto(e){return Be.fromDto(this,{url:e.url,type:e.type,videoId:e.videoId,title:e.title})}get isEmpty(){return this.items.length===0}get canClear(){return!this.isEmpty}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){this.currentId=e!==void 0?this.items.at(e)?.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}get hasSelectedItems(){return this.selectedItems.length>0}get selectedItemsOrAllItems(){return this.hasSelectedItems?this.selectedItems:this.items}get canAddSelectedItems(){return!this.isEmpty&&this.hasSelectedItems}get canPlaySelectedItemsNext(){return!this.isEmpty&&this.hasSelectedItems}get canRemoveSelectedItems(){return!this.isEmpty&&this.hasSelectedItems}setItems(e){this.items=e}clear(){this.currentIndex=void 0,this.items=[]}unselectAll(){for(const e of this.items)e.unselect()}selectAll(){for(const e of this.items)e.select()}setCurrentItem(e){this.currentId=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:r}=this;r!==void 0&&(this.items.splice(r,0,...e),this.currentIndex=r)}moveItem(e,r){const l=this.items.splice(this.items.indexOf(e),1)[0];this.items.splice(r,0,l)}async goToFirst(){this.currentIndex!==void 0&&(this.currentIndex=0)}async removeItems(e){const{currentItem:r}=this;N.pull(this.items,...e.filter(c=>c!==r));const{currentIndex:l,isLastItem:i}=this;N.pull(this.items,e.find(c=>c===r)),this.currentItem!==r&&(i?await this.goToFirst():this.currentIndex=l)}async removeSelectedItems(){await this.removeItems(this.selectedItemsOrAllItems),this.unselectAll()}async removeOtherItems(e){const r=e.id;return this.removeItems(this.items.filter(l=>l.id!==r))}async removeItemsAbove(e){const r=this.items.indexOf(e);return this.removeItems(this.items.filter((l,i)=>i<r))}async previous(){this.currentIndex!==void 0&&this.hasPreviousItem&&this.currentIndex--}async next(){this.currentIndex!==void 0&&this.hasNextItem&&this.currentIndex++}addItemFromDto(e){const r=this.createItemFromDto(e);return this.addItems([r])}}m([n.observable],h.prototype,"items",2);m([n.observable],h.prototype,"currentId",2);m([n.computed],h.prototype,"isEmpty",1);m([n.computed],h.prototype,"canClear",1);m([n.computed],h.prototype,"currentItem",1);m([n.computed],h.prototype,"canPlay",1);m([n.computed],h.prototype,"canPause",1);m([n.computed],h.prototype,"hasMultipleItems",1);m([n.computed],h.prototype,"currentIndex",1);m([n.computed],h.prototype,"hasPreviousItem",1);m([n.computed],h.prototype,"hasNextItem",1);m([n.computed],h.prototype,"isLastItem",1);m([n.computed],h.prototype,"selectedItems",1);m([n.computed],h.prototype,"allItemsSelected",1);m([n.computed],h.prototype,"hasSelectedItems",1);m([n.computed],h.prototype,"selectedItemsOrAllItems",1);m([n.computed],h.prototype,"canAddSelectedItems",1);m([n.computed],h.prototype,"canPlaySelectedItemsNext",1);m([n.computed],h.prototype,"canRemoveSelectedItems",1);m([n.action.bound],h.prototype,"setItems",1);m([n.action.bound],h.prototype,"clear",1);m([n.action.bound],h.prototype,"unselectAll",1);m([n.action.bound],h.prototype,"selectAll",1);m([n.action.bound],h.prototype,"setCurrentItem",1);m([n.action.bound],h.prototype,"setNextItems",1);m([n.action.bound],h.prototype,"clearAndSetItems",1);m([n.action.bound],h.prototype,"playNext",1);m([n.action.bound],h.prototype,"playSelectedItemsNext",1);m([n.action.bound],h.prototype,"addItems",1);m([n.action.bound],h.prototype,"addSelectedItems",1);m([n.action.bound],h.prototype,"playFirst",1);m([n.action.bound],h.prototype,"moveItem",1);m([n.action.bound],h.prototype,"goToFirst",1);m([n.action.bound],h.prototype,"removeItems",1);m([n.action.bound],h.prototype,"removeSelectedItems",1);m([n.action.bound],h.prototype,"removeOtherItems",1);m([n.action.bound],h.prototype,"removeItemsAbove",1);m([n.action.bound],h.prototype,"previous",1);m([n.action.bound],h.prototype,"next",1);m([n.action.bound],h.prototype,"addItemFromDto",1);const Re=({children:t})=>{const[e]=a.useState(()=>new h);_.useLocalStorageState($.playQueue,e.localStorageState);const r=O.useNostalgicDiva();return a.useEffect(()=>n.reaction(()=>e.currentItem,async(l,i)=>{l===void 0||i===void 0||l.type===i.type&&l.videoId===i.videoId&&await r.setCurrentTime(0)}),[e,r]),o.jsx(Z.Provider,{value:e,children:t})};var Ae=Object.defineProperty,Me=Object.getOwnPropertyDescriptor,w=(t,e,r,l)=>{for(var i=l>1?void 0:l?Me(e,r):e,c=t.length-1,u;c>=0;c--)(u=t[c])&&(i=(l?u(e,r,i):u(i))||i);return l&&i&&Ae(e,r,i),i};class T{controller=O.nullPlayerController;playing=!1;percent=0;seeking=!1;constructor(){n.makeObservable(this)}setPlaying(e){this.playing=e}setPercent(e){this.percent=e}setSeeking(e){this.seeking=e}onControllerChange(e){this.controller=e}onPlay(){this.playing=!0}onPause(){this.playing=!1}onEnded(){this.playing=!1}onTimeUpdate({percent:e}){e!==void 0&&(this.seeking||(this.percent=e))}}w([n.observable],T.prototype,"controller",2);w([n.observable],T.prototype,"playing",2);w([n.observable],T.prototype,"percent",2);w([n.observable],T.prototype,"seeking",2);w([n.action.bound],T.prototype,"setPlaying",1);w([n.action.bound],T.prototype,"setPercent",1);w([n.action.bound],T.prototype,"setSeeking",1);w([n.action.bound],T.prototype,"onControllerChange",1);w([n.action.bound],T.prototype,"onPlay",1);w([n.action.bound],T.prototype,"onPause",1);w([n.action.bound],T.prototype,"onEnded",1);w([n.action.bound],T.prototype,"onTimeUpdate",1);const De=({children:t})=>{const[e]=a.useState(()=>new T);return o.jsx(le.Provider,{value:e,children:t})},ee=a.createContext(void 0),pe=()=>a.useContext(ee);var Qe=Object.defineProperty,ze=Object.getOwnPropertyDescriptor,q=(t,e,r,l)=>{for(var i=l>1?void 0:l?ze(e,r):e,c=t.length-1,u;c>=0;c--)(u=t[c])&&(i=(l?u(e,r,i):u(i))||i);return l&&i&&Qe(e,r,i),i};class M{constructor(e,r,l){this.playlistList=e,n.makeObservable(this),this.id=r,this.name=l}id;name;async rename(e){this.name=e}remove(){return this.playlistList.removeItem(this)}}q([n.observable],M.prototype,"id",2);q([n.observable],M.prototype,"name",2);q([n.action.bound],M.prototype,"rename",1);q([n.action.bound],M.prototype,"remove",1);var Le=Object.defineProperty,Ne=Object.getOwnPropertyDescriptor,z=(t,e,r,l)=>{for(var i=l>1?void 0:l?Ne(e,r):e,c=t.length-1,u;c>=0;c--)(u=t[c])&&(i=(l?u(e,r,i):u(i))||i);return l&&i&&Le(e,r,i),i};class me{constructor(e){this.playlistList=e,n.makeObservable(this)}get state(){return{items:this.playlistList.items.map(e=>({id:e.id,name:e.name}))}}set state(e){this.playlistList.items=e.items?.map(r=>new M(this.playlistList,r.id,r.name))??[]}validateState(e){return!0}}z([n.computed.struct],me.prototype,"state",1);class L{localStorageState;items=[];constructor(){n.makeObservable(this),this.localStorageState=new me(this)}createItem(e){return new M(this,crypto.randomUUID(),e)}setItems(e){this.items=e}async addItem(e){this.items.push(e)}async removeItem(e){N.pull(this.items,e)}}z([n.observable],L.prototype,"items",2);z([n.action.bound],L.prototype,"setItems",1);z([n.action.bound],L.prototype,"addItem",1);z([n.action.bound],L.prototype,"removeItem",1);const _e=({children:t})=>{const[e]=a.useState(()=>new L);return _.useLocalStorageState($.playlistList,e.localStorageState),o.jsx(ee.Provider,{value:e,children:t})},He=({children:t,nostalgicDivaProps:e})=>o.jsx(O.NostalgicDivaProvider,{...e,children:o.jsx(ve,{components:[De,Re,Se,Ee,_e],children:t})}),G={width:400,height:225},$e=p.observer(({children:t})=>{const e=A();return o.jsxs(s.EuiPageTemplate,{panelled:!0,style:{minBlockSize:`max(460px, 100vh - ${Y}px)`},children:[t,!e.isEmpty&&o.jsx(s.EuiSpacer,{style:{blockSize:G.height}})]})}),qe=p.observer(()=>{const t=E();return o.jsx(s.EuiButtonIcon,{title:`Shuffle: ${t.shuffle?"On":"Off"}`,"aria-label":`Shuffle: ${t.shuffle?"On":"Off"}`,iconType:t.shuffle?d.ArrowShuffleFilled:d.ArrowShuffleOffFilled,size:"s",iconSize:"l",onClick:t.toggleShuffle,disabled:!t.canToggleShuffle})}),Ve=p.observer(()=>{const t=E();return o.jsx(s.EuiButtonIcon,{title:"Previous","aria-label":"Previous",iconType:d.PreviousFilled,size:"s",iconSize:"l",onClick:t.previous,disabled:!t.canPrevious})}),Ue=p.observer(()=>{const t=E();return o.jsx(s.EuiButtonIcon,{title:"Skip back 10 seconds","aria-label":"Skip back 10 seconds",iconType:d.SkipBack10Regular,size:"s",iconSize:"l",onClick:t.skipBack10,disabled:!t.canSkipBack10})}),Ge=p.observer(()=>{const t=E();return o.jsx(s.EuiButtonIcon,{title:"Pause","aria-label":"Pause",iconType:d.PauseFilled,size:"s",iconSize:"l",onClick:t.pause,disabled:!t.canPause})}),Je=p.observer(()=>{const t=E();return o.jsx(s.EuiButtonIcon,{title:"Play","aria-label":"Play",iconType:d.PlayFilled,size:"s",iconSize:"l",onClick:t.play,disabled:!t.canPlay})}),Ke=p.observer(()=>{const t=E();return o.jsx(s.EuiButtonIcon,{title:"Skip forward 30 seconds","aria-label":"Skip forward 30 seconds",iconType:d.SkipForward30Regular,size:"s",iconSize:"l",onClick:t.skipForward30,disabled:!t.canSkipForward30})}),We=p.observer(()=>{const t=E();return o.jsx(s.EuiButtonIcon,{title:"Next","aria-label":"Next",iconType:d.NextFilled,size:"s",iconSize:"l",onClick:t.next,disabled:!t.canNext})}),he={[g.Off]:d.ArrowRepeatAllOffFilled,[g.All]:d.ArrowRepeatAllFilled,[g.One]:d.ArrowRepeat1Filled},Ye=p.observer(()=>{const t=E();return o.jsx(s.EuiButtonIcon,{title:`Repeat: ${t.repeat===g.All?"All":t.repeat===g.One?"One":"Off"}`,"aria-label":`Repeat: ${t.repeat===g.All?"All":t.repeat===g.One?"One":"Off"}`,iconType:he[t.repeat],size:"s",iconSize:"l",onClick:t.toggleRepeat,disabled:!t.canToggleRepeat})}),Xe=p.observer(()=>{const t=E();return o.jsxs(s.EuiFlexGroup,{responsive:!1,gutterSize:"s",justifyContent:"center",alignItems:"center",children:[o.jsx(s.EuiHideFor,{sizes:["xs"],children:o.jsx(qe,{})}),o.jsx(Ve,{}),o.jsx(s.EuiHideFor,{sizes:["xs"],children:o.jsx(Ue,{})}),t.playing?o.jsx(Ge,{}):o.jsx(Je,{}),o.jsx(s.EuiHideFor,{sizes:["xs"],children:o.jsx(Ke,{})}),o.jsx(We,{}),o.jsx(s.EuiHideFor,{sizes:["xs"],children:o.jsx(Ye,{})})]})}),Ze=a.memo(({item:t,closePopover:e})=>{const r=a.useCallback(({name:i,icon:c,onClick:u})=>({name:i,icon:c,onClick:async v=>{e(),u(v)}}),[e]),l=a.useMemo(()=>[{id:0,items:[r({name:"Open in new tab",icon:o.jsx(s.EuiIcon,{type:d.OpenRegular}),onClick:async()=>{window.open(t.dto.url,"_blank")}}),r({name:"Copy link address",icon:o.jsx(s.EuiIcon,{type:""}),onClick:async()=>{await navigator.clipboard.writeText(t.dto.url)}}),r({name:"Copy link text",icon:o.jsx(s.EuiIcon,{type:""}),onClick:async()=>{await navigator.clipboard.writeText(t.dto.title)}})]}],[r,t]);return o.jsx(s.EuiContextMenu,{initialPanelId:0,panels:l})}),et=a.memo(({item:t})=>{const[e,r]=a.useState(!1),l=a.useCallback(()=>r(!e),[e]),i=a.useCallback(()=>r(!1),[]);return o.jsx(s.EuiPopover,{button:o.jsx(s.EuiButtonEmpty,{iconType:H.get(t.type),size:"s",onClick:l,children:t.title}),isOpen:e,closePopover:i,panelPaddingSize:"none",anchorPosition:"upLeft",children:o.jsx(Ze,{item:t,closePopover:i})})}),tt=p.observer(()=>{const t=E();return o.jsx(s.EuiFlexGroup,{responsive:!1,gutterSize:"s",justifyContent:"flexStart",alignItems:"center",children:t.currentItem&&o.jsx(et,{item:t.currentItem})})}),ot=p.observer(()=>{const t=E();return o.jsx(s.EuiButtonIcon,{title:"Mute","aria-label":"Mute",iconType:d.Speaker2Regular,size:"s",iconSize:"l",disabled:!t.controller.supports("setMuted")})}),st=p.observer(({button:t,isOpen:e,closePopover:r})=>{const l=E(),[i,c]=a.useState("0"),u=O.useNostalgicDiva();a.useLayoutEffect(()=>{e&&u.getVolume().then(y=>{y!==void 0&&c(Math.floor(y*100).toString())})},[e,u]);const v=a.useCallback(async y=>{c(y.currentTarget.value),await u.setVolume(Number(y.currentTarget.value)/100)},[u]);return o.jsx(s.EuiPopover,{button:t,isOpen:e,closePopover:r,anchorPosition:"upRight",children:o.jsx(s.EuiFormRow,{children:o.jsxs(s.EuiFlexGroup,{responsive:!1,gutterSize:"s",justifyContent:"center",alignItems:"center",children:[o.jsx(ot,{}),o.jsx(s.EuiRange,{min:0,max:100,step:1,value:i,onChange:v,css:{blockSize:32},disabled:!l.controller.supports("setVolume")})]})})})}),rt=p.observer(()=>{const t=E(),[e,r]=a.useState(!1),l=()=>r(!e);return o.jsx(st,{button:o.jsx(s.EuiButtonIcon,{title:"Volume","aria-label":"Volume",iconType:d.Speaker2Regular,size:"s",iconSize:"l",onClick:l,disabled:!t.controller.supports("getVolume")}),isOpen:e,closePopover:()=>r(!1)})}),nt=({onClickPlayQueueButton:t})=>o.jsx(s.EuiButtonIcon,{title:"Play queue","aria-label":"Play queue",iconType:d.NavigationPlayRegular,size:"s",iconSize:"l",onClick:t}),it=p.observer(({closePopover:t})=>{const e=E(),r=O.useNostalgicDiva(),[l,i]=a.useState(),c=a.useCallback(async()=>{await e.controller.getPlaybackRate().then(y=>i(y))},[e]),u=a.useCallback(({name:y,icon:k,onClick:D,disabled:Q,className:se})=>({name:y,icon:k,onClick:async()=>{t(),D()},disabled:Q,className:se}),[t]),v=a.useMemo(()=>[{id:0,items:[{name:"Speed",icon:o.jsx(s.EuiIcon,{type:d.TopSpeedRegular}),panel:1,onClick:c,disabled:!e.controller.supports("getPlaybackRate")},u({name:"Skip back 10 seconds",icon:o.jsx(s.EuiIcon,{type:d.SkipBack10Regular}),onClick:e.skipBack10,disabled:!e.canSkipBack10}),u({name:"Skip forward 30 seconds",icon:o.jsx(s.EuiIcon,{type:d.SkipForward30Regular}),onClick:e.skipForward30,disabled:!e.canSkipForward30}),u({name:`Shuffle: ${e.shuffle?"On":"Off"}`,icon:o.jsx(s.EuiIcon,{type:e.shuffle?d.ArrowShuffleFilled:d.ArrowShuffleOffFilled}),onClick:e.toggleShuffle,disabled:!e.canToggleShuffle,className:"eui-showFor--xs--flex"}),u({name:`Repeat: ${e.repeat===g.All?"All":e.repeat===g.One?"One":"Off"}`,icon:o.jsx(s.EuiIcon,{type:he[e.repeat]}),onClick:e.toggleRepeat,disabled:!e.canToggleRepeat,className:"eui-showFor--xs--flex"}),{isSeparator:!0},u({name:"Remove from play queue",icon:o.jsx(s.EuiIcon,{type:d.DismissRegular}),onClick:e.removeFromPlayQueue,disabled:!e.canRemoveFromPlayQueue})]},{id:1,title:"Speed",items:[.25,.5,.75,1,1.25,1.5,1.75,2].map(y=>u({name:y.toString(),onClick:()=>r.setPlaybackRate(y),icon:y===l?"check":"empty",disabled:!e.controller.supports("setPlaybackRate")}))}],[e,u,c,r,l]);return o.jsx(s.EuiContextMenu,{initialPanelId:0,panels:v})}),lt=a.memo(({button:t,isOpen:e,closePopover:r})=>o.jsx(s.EuiPopover,{button:t,isOpen:e,closePopover:r,panelPaddingSize:"none",anchorPosition:"upRight",children:o.jsx(it,{closePopover:r})})),at=a.memo(()=>{const[t,e]=a.useState(!1),r=()=>e(!t);return o.jsx(lt,{button:o.jsx(s.EuiButtonIcon,{title:"More options","aria-label":"More options",iconType:d.MoreHorizontalFilled,size:"s",iconSize:"l",onClick:r}),isOpen:t,closePopover:()=>e(!1)})}),ct=a.memo(({onClickPlayQueueButton:t})=>o.jsxs(s.EuiFlexGroup,{responsive:!1,gutterSize:"s",justifyContent:"flexEnd",alignItems:"center",children:[o.jsx(rt,{}),t&&o.jsx(nt,{onClickPlayQueueButton:t}),o.jsx(at,{})]})),ut=p.observer(()=>{const t=E(),e=O.useNostalgicDiva(),r=a.useCallback(c=>{const u=Number(c.currentTarget.value)/100;t.setPercent(u)},[t]),l=a.useCallback(c=>{c.button===0&&t.setSeeking(!0)},[t]),i=a.useCallback(async c=>{if(c.button===0){const u=Number(c.currentTarget.value)/100;t.setSeeking(!1);const v=await e.getDuration();v!==void 0&&await e.setCurrentTime(v*u)}},[t,e]);return o.jsx(s.EuiRange,{min:0,max:100,step:1e-7,value:t.percent*100,onChange:r,onMouseDown:l,onMouseUp:i,fullWidth:!0,showRange:!0,css:{blockSize:32},disabled:!t.canSeek})}),dt=p.observer(({onClickPlayQueueButton:t})=>o.jsx(s.EuiBottomBar,{paddingSize:"s",children:o.jsxs(s.EuiFlexGroup,{direction:"column",gutterSize:"none",children:[o.jsx(s.EuiFlexItem,{children:o.jsx(ut,{})}),o.jsx(s.EuiFlexItem,{children:o.jsxs(s.EuiFlexGroup,{responsive:!1,children:[o.jsx(s.EuiFlexItem,{css:{width:"calc(100% / 3)"},children:o.jsx(tt,{})}),o.jsx(s.EuiFlexItem,{css:{width:"calc(100% / 3)"},children:o.jsx(Xe,{})}),o.jsx(s.EuiFlexItem,{css:{width:"calc(100% / 3)"},children:o.jsx(ct,{onClickPlayQueueButton:t})})]})})]})})),pt=p.observer(()=>{const t=je(),e=a.useMemo(()=>({onLoaded:t.onLoaded,onPlay:t.onPlay,onPause:t.onPause,onEnded:t.onEnded,onTimeUpdate:t.onTimeUpdate}),[t]);return a.useLayoutEffect(()=>(window.addEventListener("click",t.interact,{once:!0}),()=>{window.removeEventListener("click",t.interact)}),[t]),o.jsx("div",{css:{position:"fixed",right:0,bottom:Y,width:G.width,height:G.height,zIndex:998,backgroundColor:"rgb(39, 39, 39)",display:"flex",flexDirection:"column"},children:o.jsx("div",{css:{flexGrow:1,backgroundColor:"black"},children:t.currentItem&&o.jsx(O.NostalgicDiva,{src:t.currentItem.url,options:e,onControllerChange:t.onControllerChange})})})});function mt(t){return t!==null&&typeof t=="object"&&"title"in t&&typeof t.title=="string"}const ht=R.create(({remove:t,resolve:e})=>{const r=s.useGeneratedHtmlId({prefix:"modalForm"}),[l,i]=a.useState(""),[c,u]=a.useState(""),[v,y]=a.useState(!1);return o.jsxs(s.EuiModal,{onClose:t,initialFocus:"[name=url]",children:[o.jsx(s.EuiModalHeader,{children:o.jsx(s.EuiModalHeaderTitle,{children:"Add video"})}),o.jsx(s.EuiModalBody,{children:o.jsxs(s.EuiForm,{id:r,component:"form",onSubmit:async k=>{k.preventDefault();try{y(!0);const D=O.findVideoService(l);if(D===void 0)return;const Q=D.extractVideoId(l);if(Q===void 0)return;const re=await(await fetch(`https://noembed.com/embed?url=${encodeURIComponent(l)}`)).json();e({url:l,type:D.type,videoId:Q,title:c||(mt(re)?re.title:Q)}),t()}finally{y(!1)}},children:[o.jsx(s.EuiFormRow,{label:"URL",children:o.jsx(s.EuiFieldText,{name:"url",value:l,onChange:k=>i(k.target.value)})}),o.jsx(s.EuiFormRow,{label:"Title",children:o.jsx(s.EuiFieldText,{name:"title",value:c,onChange:k=>u(k.target.value)})})]})}),o.jsxs(s.EuiModalFooter,{children:[o.jsx(s.EuiButtonEmpty,{onClick:t,children:"Cancel"}),o.jsx(s.EuiButton,{type:"submit",form:r,fill:!0,disabled:l.trim().length===0,isLoading:v,children:"Add video"})]})]})}),te=a.memo(({onFulfilled:t})=>{const e=()=>R.show(ht).then(t);return o.jsx(s.EuiButton,{onClick:e,iconType:d.AddRegular,color:"primary",children:"Add video"})}),yt=p.observer(({playQueue:t})=>o.jsx(s.EuiButton,{iconType:d.AddRegular,onClick:t.addSelectedItems,disabled:!t.canAddSelectedItems,children:"Add to play queue"})),xt=p.observer(({playQueue:t,closePopover:e})=>{const r=a.useCallback(({name:i,icon:c,disabled:u,onClick:v})=>({name:i,icon:c,disabled:u,onClick:async y=>{e(),v(y)}}),[e]),l=a.useMemo(()=>[{id:0,items:[r({name:"Play next",icon:o.jsx(s.EuiIcon,{type:""}),disabled:!t.canPlaySelectedItemsNext,onClick:t.playSelectedItemsNext}),r({name:"Add to play queue",icon:o.jsx(s.EuiIcon,{type:d.AddRegular}),onClick:t.addSelectedItems,disabled:!t.canAddSelectedItems}),r({name:"Remove",icon:o.jsx(s.EuiIcon,{type:d.DismissRegular}),onClick:t.removeSelectedItems,disabled:!t.canRemoveSelectedItems}),r({name:"Clear",icon:o.jsx(s.EuiIcon,{type:d.DeleteRegular}),onClick:t.clear,disabled:!t.canClear})]}],[r,t]);return o.jsx(s.EuiContextMenu,{initialPanelId:0,panels:l})}),bt=a.memo(({playQueue:t})=>{const[e,r]=a.useState(!1),l=a.useCallback(()=>r(!e),[e]),i=a.useCallback(()=>r(!1),[]);return o.jsx(s.EuiPopover,{button:o.jsx(s.EuiButtonIcon,{display:"base",size:"m",iconType:d.MoreHorizontalFilled,onClick:l}),isOpen:e,closePopover:i,panelPaddingSize:"none",anchorPosition:"downLeft",children:o.jsx(xt,{playQueue:t,closePopover:i})})}),vt=p.observer(({playQueue:t})=>{const{euiTheme:e}=s.useEuiTheme();return o.jsxs(s.EuiFlexGroup,{alignItems:"center",gutterSize:"m",responsive:!1,style:{position:"sticky",top:48,zIndex:998,background:e.colors.backgroundBasePlain},children:[o.jsxs(s.EuiHideFor,{sizes:["xs"],children:[o.jsx(s.EuiFlexItem,{grow:!1,children:o.jsx(s.EuiButton,{disabled:!t.canPlaySelectedItemsNext,onClick:t.playSelectedItemsNext,children:"Play next"})}),o.jsx(s.EuiFlexItem,{grow:!1,children:o.jsx(yt,{playQueue:t})}),o.jsx(s.EuiFlexItem,{grow:!1,children:o.jsx(s.EuiButton,{iconType:d.DismissRegular,onClick:t.removeSelectedItems,disabled:!t.canRemoveSelectedItems,children:"Remove"})}),o.jsx(s.EuiFlexItem,{grow:!1,children:o.jsx(s.EuiButton,{iconType:d.DeleteRegular,onClick:t.clear,disabled:!t.canClear,children:"Clear"})})]}),o.jsx(s.EuiShowFor,{sizes:["xs"],children:o.jsx(bt,{playQueue:t})}),o.jsx(s.EuiFlexItem,{grow:!0}),o.jsx(s.EuiFlexItem,{grow:!1,children:o.jsx(te,{onFulfilled:t.addItemFromDto})})]})}),gt=p.observer(({playQueue:t})=>{const{euiTheme:e}=s.useEuiTheme();return o.jsxs(o.Fragment,{children:[o.jsx(s.EuiTableHeaderMobile,{children:o.jsx(s.EuiFlexGroup,{responsive:!1,justifyContent:"spaceBetween",alignItems:"baseline",children:o.jsx(s.EuiFlexItem,{grow:!1,children:o.jsx(s.EuiCheckbox,{id:"",checked:t.allItemsSelected,onChange:r=>{r.target.checked?t.selectAll():t.unselectAll()}})})})}),o.jsxs(s.EuiTableHeader,{style:{position:"sticky",top:112,zIndex:998,background:e.colors.backgroundBasePlain},children:[o.jsx(s.EuiTableHeaderCellCheckbox,{children:o.jsx(s.EuiCheckbox,{id:"",checked:t.allItemsSelected,onChange:r=>{r.target.checked?t.selectAll():t.unselectAll()}})}),o.jsx(s.EuiTableHeaderCell,{width:24}),o.jsx(s.EuiTableHeaderCell,{children:"Title"}),o.jsx(s.EuiTableHeaderCell,{})]})]})}),It=p.observer(({item:t,closePopover:e})=>{const r=a.useCallback(({name:i,icon:c,disabled:u,onClick:v,className:y})=>({name:i,icon:c,disabled:u,onClick:async k=>{e(),v(k)},className:y}),[e]),l=a.useMemo(()=>[{id:0,items:[r({name:"Play",icon:o.jsx(s.EuiIcon,{type:d.PlayRegular}),onClick:t.play,className:"eui-showFor--xs--flex"}),r({name:"Play first",icon:o.jsx(s.EuiIcon,{type:""}),onClick:t.playFirst}),r({name:"Play next",icon:o.jsx(s.EuiIcon,{type:""}),onClick:t.playNext}),r({name:"Add to play queue",icon:o.jsx(s.EuiIcon,{type:d.AddRegular}),onClick:t.addToPlayQueue}),{isSeparator:!0},r({name:"Move to the top",icon:o.jsx(s.EuiIcon,{type:d.ArrowUploadRegular}),onClick:t.moveToTop,disabled:!t.canMoveToTop}),r({name:"Move to the bottom",icon:o.jsx(s.EuiIcon,{type:d.ArrowDownloadRegular}),onClick:t.moveToBottom,disabled:!t.canMoveToBottom}),{isSeparator:!0},r({name:"Remove",icon:o.jsx(s.EuiIcon,{type:d.DismissRegular}),onClick:t.remove,className:"eui-showFor--xs--flex"}),r({name:"Remove to the top",icon:o.jsx(s.EuiIcon,{type:""}),onClick:t.removeToTop,disabled:!t.canRemoveToTop}),r({name:"Remove others",icon:o.jsx(s.EuiIcon,{type:""}),onClick:t.removeOthers,disabled:!t.canRemoveOthers})]}],[r,t]);return o.jsx(s.EuiContextMenu,{initialPanelId:0,panels:l})}),ft=a.memo(({item:t})=>{const[e,r]=a.useState(!1),l=a.useCallback(()=>r(!e),[e]),i=a.useCallback(()=>r(!1),[]);return o.jsx(s.EuiPopover,{button:o.jsx(s.EuiButtonIcon,{title:"More options","aria-label":"More options",iconType:d.MoreHorizontalFilled,size:"s",color:"text",onClick:l}),isOpen:e,closePopover:i,panelPaddingSize:"none",anchorPosition:"leftCenter",children:o.jsx(It,{item:t,closePopover:i})})}),St=p.observer(({item:t})=>{const e=O.useNostalgicDiva();return o.jsxs(s.EuiTableRowCell,{textOnly:!1,hasActions:!0,align:"right",children:[o.jsxs(s.EuiHideFor,{sizes:["xs"],children:[o.jsx(s.EuiButton,{iconType:d.PlayRegular,size:"s",onClick:async()=>{t.isCurrent?await e.setCurrentTime(0):await t.play()},children:"Play"}),o.jsx(s.EuiButton,{iconType:d.DismissRegular,size:"s",onClick:t.remove,children:"Remove"})]}),o.jsx(ft,{item:t})]})}),jt=p.observer(({item:t})=>o.jsxs(s.EuiTableRow,{isSelected:t.isCurrent,hasSelection:!0,hasActions:!0,children:[o.jsx(s.EuiTableRowCellCheckbox,{children:o.jsx(s.EuiCheckbox,{id:t.id.toString(),checked:t.isSelected,onChange:t.toggleSelected})}),o.jsx(s.EuiTableRowCell,{textOnly:!1,children:o.jsx("img",{src:H.get(t.type),width:16,height:16,alt:t.type})}),o.jsx(s.EuiTableRowCell,{mobileOptions:{header:!1,enlarge:!0,width:"100%"},children:o.jsx(s.EuiLink,{href:t.url,target:"_blank",external:!0,children:t.title})}),o.jsx(St,{item:t})]})),Pt=p.observer(({playQueue:t})=>o.jsx(K.ReactSortable,{tag:"tbody",list:t.items,setList:e=>t.setItems(e),children:t.items.map(e=>o.jsx(jt,{item:e},e.id))})),Ct=p.observer(({playQueue:t})=>o.jsxs(s.EuiTable,{children:[o.jsx(gt,{playQueue:t}),o.jsx(Pt,{playQueue:t})]})),ye=p.observer(({playQueue:t})=>{const{euiTheme:e}=s.useEuiTheme();return o.jsxs(s.EuiPageTemplate.Section,{children:[o.jsx(vt,{playQueue:t}),o.jsx(s.EuiSpacer,{size:"l",style:{position:"sticky",top:88,zIndex:998,background:e.colors.backgroundBasePlain}}),t.isEmpty?o.jsx(s.EuiEmptyPrompt,{title:o.jsx("h2",{children:"We couldn't find any videos"}),body:o.jsx("p",{children:"Your video library doesn't contain any video content."}),actions:o.jsx(te,{onFulfilled:t.addItemFromDto})}):o.jsx(Ct,{playQueue:t})]})}),oe=({breadcrumbs:t,tabs:e,...r})=>{const l=W.useRouter();return o.jsx(s.EuiPageTemplate.Header,{...r,breadcrumbs:t?.map(({linkProps:i,...c})=>({...c,href:i===void 0?void 0:l.buildLocation(i).href,onClick:i===void 0?void 0:async u=>{u.preventDefault(),await l.navigate(i)}})),tabs:e?.map(({linkProps:i,...c})=>({...c,href:i===void 0?void 0:l.buildLocation(i).href,onClick:i===void 0?void 0:async u=>{u.preventDefault(),await l.navigate(i)}}))})},Et=()=>{const t=A();return o.jsxs(o.Fragment,{children:[o.jsx(oe,{pageTitle:"Play queue",rightSideItems:[]}),o.jsx(ye,{playQueue:t})]})},Tt=R.create(({remove:t,resolve:e,playlistListItem:r})=>{const[l,i]=a.useState(!1),c=a.useCallback(async()=>{try{i(!0),e(),t()}finally{i(!1)}},[e,t]);return o.jsx(s.EuiConfirmModal,{title:"Delete playlist permanently?",onCancel:t,onConfirm:c,cancelButtonText:"Cancel",confirmButtonText:"Delete",buttonColor:"danger",isLoading:l,children:o.jsxs("p",{children:["Are you sure you want to delete this playlist? If you delete '",r.name,"', you won't be able to recover it."]})})}),wt=p.observer(({playlist:t})=>o.jsx(s.EuiButton,{iconType:d.AddRegular,onClick:t.addSelectedItems,disabled:!t.canAddSelectedItems,children:"Add to play queue"})),kt=p.observer(({playlist:t,closePopover:e})=>{const r=a.useCallback(({name:i,icon:c,disabled:u,onClick:v})=>({name:i,icon:c,disabled:u,onClick:async y=>{e(),v(y)}}),[e]),l=a.useMemo(()=>[{id:0,items:[r({name:"Play next",icon:o.jsx(s.EuiIcon,{type:""}),disabled:!t.canPlaySelectedItemsNext,onClick:t.playSelectedItemsNext}),r({name:"Add to play queue",icon:o.jsx(s.EuiIcon,{type:d.AddRegular}),onClick:t.addSelectedItems,disabled:!t.canAddSelectedItems}),r({name:"Remove",icon:o.jsx(s.EuiIcon,{type:d.DismissRegular}),onClick:t.removeSelectedItems,disabled:!t.canRemoveSelectedItems})]}],[r,t]);return o.jsx(s.EuiContextMenu,{initialPanelId:0,panels:l})}),Bt=a.memo(({playlist:t})=>{const[e,r]=a.useState(!1),l=a.useCallback(()=>r(!e),[e]),i=a.useCallback(()=>r(!1),[]);return o.jsx(s.EuiPopover,{button:o.jsx(s.EuiButtonIcon,{display:"base",size:"m",iconType:d.MoreHorizontalFilled,onClick:l}),isOpen:e,closePopover:i,panelPaddingSize:"none",anchorPosition:"downLeft",children:o.jsx(kt,{playlist:t,closePopover:i})})}),Ft=p.observer(({playlist:t})=>{const{euiTheme:e}=s.useEuiTheme();return o.jsxs(s.EuiFlexGroup,{alignItems:"center",gutterSize:"m",responsive:!1,style:{position:"sticky",top:48,zIndex:998,background:e.colors.backgroundBasePlain},children:[o.jsxs(s.EuiHideFor,{sizes:["xs"],children:[o.jsx(s.EuiFlexItem,{grow:!1,children:o.jsx(s.EuiButton,{disabled:!t.canPlaySelectedItemsNext,onClick:t.playSelectedItemsNext,children:"Play next"})}),o.jsx(s.EuiFlexItem,{grow:!1,children:o.jsx(wt,{playlist:t})}),o.jsx(s.EuiFlexItem,{grow:!1,children:o.jsx(s.EuiButton,{iconType:d.DismissRegular,onClick:t.removeSelectedItems,disabled:!t.canRemoveSelectedItems,children:"Remove"})})]}),o.jsx(s.EuiShowFor,{sizes:["xs"],children:o.jsx(Bt,{playlist:t})}),o.jsx(s.EuiFlexItem,{grow:!0}),o.jsx(s.EuiFlexItem,{grow:!1,children:o.jsx(te,{onFulfilled:t.addItemFromDto})})]})}),Ot=p.observer(({playlist:t})=>o.jsxs(o.Fragment,{children:[o.jsx(s.EuiTableHeaderMobile,{children:o.jsx(s.EuiFlexGroup,{responsive:!1,justifyContent:"spaceBetween",alignItems:"baseline",children:o.jsx(s.EuiFlexItem,{grow:!1,children:o.jsx(s.EuiCheckbox,{id:"",checked:t.allItemsSelected,onChange:e=>{e.target.checked?t.selectAll():t.unselectAll()}})})})}),o.jsxs(s.EuiTableHeader,{children:[o.jsx(s.EuiTableHeaderCellCheckbox,{children:o.jsx(s.EuiCheckbox,{id:"",checked:t.allItemsSelected,onChange:e=>{e.target.checked?t.selectAll():t.unselectAll()}})}),o.jsx(s.EuiTableHeaderCell,{width:24}),o.jsx(s.EuiTableHeaderCell,{children:"Title"}),o.jsx(s.EuiTableHeaderCell,{})]})]})),Rt=a.memo(({item:t,closePopover:e})=>{const r=a.useCallback(({name:i,icon:c,disabled:u,onClick:v,className:y})=>({name:i,icon:c,disabled:u,onClick:async k=>{e(),v(k)},className:y}),[e]),l=a.useMemo(()=>[{id:0,items:[r({name:"Play",icon:o.jsx(s.EuiIcon,{type:d.PlayRegular}),onClick:t.play,className:"eui-showFor--xs--flex"}),r({name:"Play first",icon:o.jsx(s.EuiIcon,{type:""}),onClick:t.playFirst}),r({name:"Play next",icon:o.jsx(s.EuiIcon,{type:""}),onClick:t.playNext}),r({name:"Add to play queue",icon:o.jsx(s.EuiIcon,{type:d.AddRegular}),onClick:t.addToPlayQueue}),{isSeparator:!0},r({name:"Move to the top",icon:o.jsx(s.EuiIcon,{type:d.ArrowUploadRegular}),onClick:t.moveToTop,disabled:!t.canMoveToTop}),r({name:"Move to the bottom",icon:o.jsx(s.EuiIcon,{type:d.ArrowDownloadRegular}),onClick:t.moveToBottom,disabled:!t.canMoveToBottom}),{isSeparator:!0},r({name:"Remove",icon:o.jsx(s.EuiIcon,{type:d.DismissRegular}),onClick:t.remove,className:"eui-showFor--xs--flex"}),r({name:"Remove to the top",icon:o.jsx(s.EuiIcon,{type:""}),onClick:t.removeToTop,disabled:!t.canRemoveToTop}),r({name:"Remove others",icon:o.jsx(s.EuiIcon,{type:""}),onClick:t.removeOthers,disabled:!t.canRemoveOthers})]}],[r,t]);return o.jsx(s.EuiContextMenu,{initialPanelId:0,panels:l})}),At=a.memo(({item:t})=>{const[e,r]=a.useState(!1),l=a.useCallback(()=>r(!e),[e]),i=a.useCallback(()=>r(!1),[]);return o.jsx(s.EuiPopover,{button:o.jsx(s.EuiButtonIcon,{title:"More options","aria-label":"More options",iconType:d.MoreHorizontalFilled,size:"s",color:"text",onClick:l}),isOpen:e,closePopover:i,panelPaddingSize:"none",anchorPosition:"leftCenter",children:o.jsx(Rt,{item:t,closePopover:i})})}),Mt=p.observer(({item:t})=>o.jsxs(s.EuiTableRowCell,{textOnly:!1,hasActions:!0,align:"right",children:[o.jsxs(s.EuiHideFor,{sizes:["xs"],children:[o.jsx(s.EuiButton,{iconType:d.PlayRegular,size:"s",onClick:t.play,children:"Play"}),o.jsx(s.EuiButton,{iconType:d.DismissRegular,size:"s",onClick:t.remove,children:"Remove"})]}),o.jsx(At,{item:t})]})),Dt=p.observer(({item:t})=>o.jsxs(s.EuiTableRow,{isSelected:t.isCurrent,hasSelection:!0,hasActions:!0,children:[o.jsx(s.EuiTableRowCellCheckbox,{children:o.jsx(s.EuiCheckbox,{id:t.id.toString(),checked:t.isSelected,onChange:t.toggleSelected})}),o.jsx(s.EuiTableRowCell,{textOnly:!1,children:o.jsx("img",{src:H.get(t.type),width:16,height:16,alt:t.type})}),o.jsx(s.EuiTableRowCell,{mobileOptions:{header:!1,enlarge:!0,width:"100%"},children:o.jsx(s.EuiLink,{href:t.url,target:"_blank",external:!0,children:t.title})}),o.jsx(Mt,{item:t})]})),Qt=p.observer(({playlist:t})=>o.jsx(K.ReactSortable,{tag:"tbody",list:t.items,setList:e=>t.setItems(e),children:t.items.map(e=>o.jsx(Dt,{item:e},e.id))})),zt=p.observer(({playlist:t})=>o.jsxs(s.EuiTable,{children:[o.jsx(Ot,{playlist:t}),o.jsx(Qt,{playlist:t})]})),Lt=p.observer(({playlist:t})=>{const{euiTheme:e}=s.useEuiTheme();return o.jsxs(s.EuiPageTemplate.Section,{children:[o.jsx(Ft,{playlist:t}),o.jsx(s.EuiSpacer,{size:"l",style:{position:"sticky",top:88,zIndex:998,background:e.colors.backgroundBasePlain}}),t.isEmpty?o.jsx(o.Fragment,{}):o.jsx(zt,{playlist:t})]})}),Nt=R.create(({remove:t,resolve:e,playlistListItem:r})=>{const l=s.useGeneratedHtmlId({prefix:"modalForm"}),[i,c]=a.useState(r.name),[u,v]=a.useState(!1);return o.jsxs(s.EuiModal,{onClose:t,initialFocus:"[name=name]",children:[o.jsx(s.EuiModalHeader,{children:o.jsx(s.EuiModalHeaderTitle,{children:"Rename playlist"})}),o.jsx(s.EuiModalBody,{children:o.jsx(s.EuiForm,{id:l,component:"form",onSubmit:async y=>{y.preventDefault();try{v(!0),e(i),t()}finally{v(!1)}},children:o.jsx(s.EuiFormRow,{label:"Name",children:o.jsx(s.EuiFieldText,{name:"name",value:i,onChange:y=>c(y.target.value)})})})}),o.jsxs(s.EuiModalFooter,{children:[o.jsx(s.EuiButtonEmpty,{onClick:t,children:"Cancel"}),o.jsx(s.EuiButton,{type:"submit",form:l,fill:!0,disabled:i.trim().length===0,isLoading:u,children:"Rename"})]})]})});var _t=Object.defineProperty,Ht=Object.getOwnPropertyDescriptor,C=(t,e,r,l)=>{for(var i=l>1?void 0:l?Ht(e,r):e,c=t.length-1,u;c>=0;c--)(u=t[c])&&(i=(l?u(e,r,i):u(i))||i);return l&&i&&_t(e,r,i),i};const j=class J{constructor(e,r,l){this.playQueue=e,this.playlist=r,this.dto=l,n.makeObservable(this),this.id=J.nextId++}static nextId=1;id;isSelected=!1;static fromDto(e,r,l){return new J(e,r,l)}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!1}get index(){return this.playlist.items.indexOf(this)}get isFirst(){return this.index===0}get isLast(){return this.index===this.playlist.items.length-1}get canMoveToTop(){return!this.isFirst}get canMoveToBottom(){return!this.isLast}get canRemoveToTop(){return!this.isFirst}get canRemoveOthers(){return this.playlist.hasMultipleItems}unselect(){this.isSelected=!1}select(){this.isSelected=!0}toggleSelected(){this.isSelected=!this.isSelected}play(){return this.playQueue.clearAndSetItems([this.playQueue.createItemFromDto(this.dto)]),Promise.resolve()}remove(){return this.playlist.removeItems([this])}playFirst(){return this.playQueue.playFirst([this.playQueue.createItemFromDto(this.dto)])}playNext(){return this.playQueue.playNext([this.playQueue.createItemFromDto(this.dto)])}addToPlayQueue(){return this.playQueue.addItems([this.playQueue.createItemFromDto(this.dto)])}moveToTop(){this.playlist.moveItem(this,0)}moveToBottom(){this.playlist.moveItem(this,this.playlist.items.length-1)}removeToTop(){return this.playlist.removeItemsAbove(this)}removeOthers(){return this.playlist.removeOtherItems(this)}};C([n.observable],j.prototype,"isSelected",2);C([n.computed],j.prototype,"isCurrent",1);C([n.computed],j.prototype,"index",1);C([n.computed],j.prototype,"isFirst",1);C([n.computed],j.prototype,"isLast",1);C([n.computed],j.prototype,"canMoveToTop",1);C([n.computed],j.prototype,"canMoveToBottom",1);C([n.computed],j.prototype,"canRemoveToTop",1);C([n.computed],j.prototype,"canRemoveOthers",1);C([n.action.bound],j.prototype,"unselect",1);C([n.action.bound],j.prototype,"select",1);C([n.action.bound],j.prototype,"toggleSelected",1);C([n.action.bound],j.prototype,"play",1);C([n.action.bound],j.prototype,"remove",1);C([n.action.bound],j.prototype,"playFirst",1);C([n.action.bound],j.prototype,"playNext",1);C([n.action.bound],j.prototype,"addToPlayQueue",1);C([n.action.bound],j.prototype,"moveToTop",1);C([n.action.bound],j.prototype,"moveToBottom",1);C([n.action.bound],j.prototype,"removeToTop",1);C([n.action.bound],j.prototype,"removeOthers",1);let $t=j;var qt=Object.defineProperty,Vt=Object.getOwnPropertyDescriptor,I=(t,e,r,l)=>{for(var i=l>1?void 0:l?Vt(e,r):e,c=t.length-1,u;c>=0;c--)(u=t[c])&&(i=(l?u(e,r,i):u(i))||i);return l&&i&&qt(e,r,i),i};const Ut={type:"object",properties:{version:{type:"string",nullable:!0},items:{type:"array",nullable:!0,items:ue}}};class xe{constructor(e){this.playlist=e,n.makeObservable(this)}get state(){return{version:"1.0",items:this.playlist.items.map(e=>e.dto)}}set state(e){this.playlist.items=e.items?.map(r=>this.playlist.createItemFromDto(r))??[]}validateState(e){return X(Ut,"PlaylistLocalStorageState")(e)}}I([n.computed.struct],xe.prototype,"state",1);class f{constructor(e){this.playQueue=e,n.makeObservable(this),this.localStorageState=new xe(this)}localStorageState;items=[];createItemFromDto(e){return $t.fromDto(this.playQueue,this,{url:e.url,type:e.type,videoId:e.videoId,title:e.title})}get isEmpty(){return this.items.length===0}get hasMultipleItems(){return this.items.length>1}get selectedItems(){return this.items.filter(e=>e.isSelected)}get allItemsSelected(){return this.selectedItems.length===this.items.length}get hasSelectedItems(){return this.selectedItems.length>0}get selectedItemsOrAllItems(){return this.hasSelectedItems?this.selectedItems:this.items}get canAddSelectedItems(){return!this.isEmpty&&this.hasSelectedItems}get canPlaySelectedItemsNext(){return!this.isEmpty&&this.hasSelectedItems}get canRemoveSelectedItems(){return!this.isEmpty&&this.hasSelectedItems}setItems(e){this.items=e}unselectAll(){for(const e of this.items)e.unselect()}selectAll(){for(const e of this.items)e.select()}async playSelectedItemsNext(){await this.playQueue.playNext(this.selectedItemsOrAllItems.map(e=>this.playQueue.createItemFromDto(e.dto))),this.unselectAll()}async addSelectedItems(){await this.playQueue.addItems(this.selectedItemsOrAllItems.map(e=>this.playQueue.createItemFromDto(e.dto))),this.unselectAll()}async addItems(e){this.items.push(...e)}moveItem(e,r){const l=this.items.splice(this.items.indexOf(e),1)[0];this.items.splice(r,0,l)}async removeItems(e){N.pull(this.items,...e)}async removeSelectedItems(){await this.removeItems(this.selectedItemsOrAllItems),this.unselectAll()}async removeOtherItems(e){const r=e.id;return this.removeItems(this.items.filter(l=>l.id!==r))}async removeItemsAbove(e){const r=this.items.indexOf(e);return this.removeItems(this.items.filter((l,i)=>i<r))}addItemFromDto(e){const r=this.createItemFromDto(e);return this.addItems([r])}playAll(){return this.playQueue.clearAndSetItems(this.items.map(e=>this.playQueue.createItemFromDto(e.dto))),Promise.resolve()}}I([n.observable],f.prototype,"items",2);I([n.computed],f.prototype,"isEmpty",1);I([n.computed],f.prototype,"hasMultipleItems",1);I([n.computed],f.prototype,"selectedItems",1);I([n.computed],f.prototype,"allItemsSelected",1);I([n.computed],f.prototype,"hasSelectedItems",1);I([n.computed],f.prototype,"selectedItemsOrAllItems",1);I([n.computed],f.prototype,"canAddSelectedItems",1);I([n.computed],f.prototype,"canPlaySelectedItemsNext",1);I([n.computed],f.prototype,"canRemoveSelectedItems",1);I([n.action.bound],f.prototype,"setItems",1);I([n.action.bound],f.prototype,"unselectAll",1);I([n.action.bound],f.prototype,"selectAll",1);I([n.action.bound],f.prototype,"playSelectedItemsNext",1);I([n.action.bound],f.prototype,"addSelectedItems",1);I([n.action.bound],f.prototype,"addItems",1);I([n.action.bound],f.prototype,"moveItem",1);I([n.action.bound],f.prototype,"removeItems",1);I([n.action.bound],f.prototype,"removeSelectedItems",1);I([n.action.bound],f.prototype,"removeOtherItems",1);I([n.action.bound],f.prototype,"removeItemsAbove",1);I([n.action.bound],f.prototype,"addItemFromDto",1);I([n.action.bound],f.prototype,"playAll",1);const Gt=({onClick:t})=>o.jsx(s.EuiButton,{onClick:t,iconType:d.PlayRegular,fill:!0,children:"Play all"}),Jt=({playlistListItem:t,onFulfilled:e})=>{const r=()=>R.show(Nt,{playlistListItem:t}).then(e);return o.jsx(s.EuiButton,{onClick:r,iconType:d.RenameRegular,children:"Rename"})},Kt=({playlistListItem:t,onFulfilled:e})=>{const r=()=>R.show(Tt,{playlistListItem:t}).then(e);return o.jsx(s.EuiButton,{onClick:r,iconType:d.DeleteRegular,children:"Delete"})},Wt=p.observer(({playlistListItem:t})=>{const e=$.playlist(t.id),r=A(),[l]=a.useState(()=>new f(r));_.useLocalStorageState(e,l.localStorageState);const i=W.useRouter(),c=a.useCallback(async v=>{await t.rename(v)},[t]),u=a.useCallback(async()=>{await i.navigate({to:"/playlists"}),window.localStorage.removeItem(e),await t.remove()},[t,i,e]);return o.jsxs(o.Fragment,{children:[o.jsx(oe,{pageTitle:t.name,breadcrumbs:[{text:"Playlists",linkProps:{to:"/playlists"}},{text:t.name}],rightSideItems:[o.jsx(Gt,{onClick:l.playAll}),o.jsx(Jt,{playlistListItem:t,onFulfilled:c}),o.jsx(Kt,{playlistListItem:t,onFulfilled:u})]}),o.jsx(Lt,{playlist:l})]})}),Yt=R.create(({remove:t,resolve:e})=>{const r=s.useGeneratedHtmlId({prefix:"modalForm"}),[l,i]=a.useState(""),[c,u]=a.useState(!1);return o.jsxs(s.EuiModal,{onClose:t,initialFocus:"[name=name]",children:[o.jsx(s.EuiModalHeader,{children:o.jsx(s.EuiModalHeaderTitle,{children:"Create playlist"})}),o.jsx(s.EuiModalBody,{children:o.jsx(s.EuiForm,{id:r,component:"form",onSubmit:async v=>{v.preventDefault();try{u(!0),e(l),t()}finally{u(!1)}},children:o.jsx(s.EuiFormRow,{label:"Name",children:o.jsx(s.EuiFieldText,{name:"name",value:l,onChange:v=>i(v.target.value)})})})}),o.jsxs(s.EuiModalFooter,{children:[o.jsx(s.EuiButtonEmpty,{onClick:t,children:"Cancel"}),o.jsx(s.EuiButton,{type:"submit",form:r,fill:!0,disabled:l.trim().length===0,isLoading:c,children:"Create playlist"})]})]})}),Xt=({children:t,onFulfilled:e})=>{const r=()=>R.show(Yt).then(e);return o.jsx(s.EuiButton,{onClick:r,iconType:d.AddRegular,fill:!0,children:t})},Zt=({linkProps:t,...e})=>{const r=W.useRouter(),l=async i=>{i.preventDefault(),await r.navigate(t)};return o.jsx(s.EuiLink,{...e,href:r.buildLocation(t).href,onClick:l})},eo=p.observer(({playlistList:t})=>o.jsx(s.EuiTableHeader,{children:o.jsx(s.EuiTableHeaderCell,{children:"Name"})})),to=p.observer(({item:t})=>o.jsx(s.EuiTableRow,{children:o.jsx(s.EuiTableRowCell,{children:o.jsx(Zt,{linkProps:{to:"/playlists/$playlistId",params:{playlistId:t.id}},children:t.name})})},t.id)),oo=p.observer(({playlistList:t})=>o.jsx(K.ReactSortable,{tag:"tbody",list:t.items,setList:e=>t.setItems(e),children:t.items.map(e=>o.jsx(to,{item:e},e.id))})),so=p.observer(({playlistList:t})=>o.jsxs(s.EuiTable,{children:[o.jsx(eo,{playlistList:t}),o.jsx(oo,{playlistList:t})]})),ro=()=>o.jsx(oe,{pageTitle:"Playlists",breadcrumbs:[{text:"Playlists"}]}),no=p.observer(({playlistList:t})=>{const e=a.useCallback(async r=>{await t.addItem(t.createItem(r))},[t]);return o.jsxs(s.EuiPageTemplate.Section,{children:[o.jsx(Xt,{onFulfilled:e,children:"New playlist"}),o.jsx(s.EuiSpacer,{size:"l"}),o.jsx(so,{playlistList:t})]})}),io=a.memo(()=>{const t=pe();return o.jsxs(o.Fragment,{children:[o.jsx(ro,{}),o.jsx(no,{playlistList:t})]})});exports.BottomBar=dt;exports.HydrangeanDivaProvider=He;exports.MediaPlayerLayout=$e;exports.MiniPlayer=pt;exports.PlayQueueContext=Z;exports.PlayQueuePage=Et;exports.PlayQueueSection=ye;exports.PlaylistDetailsPage=Wt;exports.PlaylistListContext=ee;exports.PlaylistListPage=io;exports.RepeatMode=g;exports.bottomBarHeight=Y;exports.usePlayQueue=A;exports.usePlaylistList=pe;exports.videoServiceIcons=H;
15
2
  //# sourceMappingURL=index.cjs.js.map